Sindbad~EG File Manager

Current Path : /home/copmadinaarea/drive.copmadinaarea.org/public/client/
Upload File :
Current File : /home/copmadinaarea/drive.copmadinaarea.org/public/client/2.fb13cd414d0c6c807f47.js.map

{"version":3,"sources":["webpack:///./node_modules/lodash/_listCacheHas.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_cloneArrayBuffer.js.pre-build-optimizer.js","webpack:///./node_modules/copy-to-clipboard/index.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/property.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_initCloneObject.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/isSymbol.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/esm5/chips.es5.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/isArguments.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_stackSet.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/stubArray.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/isSet.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_SetCache.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseIsNaN.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_coreJsData.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_setCacheHas.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_toSource.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_basePropertyDeep.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/memoize.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_Hash.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_hasPath.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/esm5/autocomplete.es5.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_castPath.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_cloneBuffer.js.pre-build-optimizer.js","webpack:///./src/common/uploads/validation/validations/allowed-extensions-validation.ts.pre-build-optimizer.js","webpack:///./src/common/uploads/validation/validations/allowed-extensions-validation.ts","webpack:///./src/common/uploads/formatted-file-size.pipe.ts","webpack:///./node_modules/lodash/_isPrototype.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseProperty.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_stackClear.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/keys.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_nativeKeysIn.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_mapToArray.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_toKey.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_isKey.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseKeys.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_getRawTag.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/stubFalse.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/esm5/table.es5.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/cloneDeep.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_arrayPush.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_isStrictComparable.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_strictIndexOf.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_getNative.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/isBuffer.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseAssignIn.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_isMasked.js.pre-build-optimizer.js","webpack:///./node_modules/toggle-selection/index.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_copySymbolsIn.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_isKeyable.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/isObjectLike.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_getAllKeysIn.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseMatchesProperty.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_stringToPath.js.pre-build-optimizer.js","webpack:///./src/common/core/ui/chip-input/chip-input.component.ts","webpack:///./node_modules/lodash/_baseIsMap.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/isObject.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_mapCacheSet.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_equalByTag.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_Promise.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_hashDelete.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_memoizeCapped.js.pre-build-optimizer.js","webpack:///./src/common/core/ui/ad-host/ad-host.component.ts","webpack:///./node_modules/lodash/_matchesStrictComparable.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_Uint8Array.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_mapCacheGet.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_hashSet.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseIsArguments.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseHasIn.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_listCacheClear.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_objectToString.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseFindIndex.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_root.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_stackDelete.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseUniq.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_arrayFilter.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/esm5/tabs.es5.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_getPrototype.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/isArrayLike.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/core/typings/index.ngfactory.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/core/typings/index.d.ts.MatOption.html","webpack:///./node_modules/lodash/_assignValue.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_getSymbols.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseIsNative.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_getValue.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/esm5/sidenav.es5.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseGetTag.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_defineProperty.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_getMatchData.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseClone.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_WeakMap.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/esm5/sort.es5.js.pre-build-optimizer.js","webpack:///./src/common/uploads/validation/validations/blocked-extensions-validation.ts.pre-build-optimizer.js","webpack:///./src/common/uploads/validation/validations/blocked-extensions-validation.ts","webpack:///./node_modules/lodash/_copyArray.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseKeysIn.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_getMapData.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_arraySome.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_getTag.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseIndexOf.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/autocomplete/typings/index.ngfactory.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/autocomplete/typings/index.d.ts.MatAutocomplete.html","webpack:///./node_modules/lodash/_hashClear.js.pre-build-optimizer.js","webpack:///./src/app/drive/state/models/drive-page.ts.pre-build-optimizer.js","webpack:///./src/app/drive/folders/api/folders-api-routes.enum.ts","webpack:///./src/app/drive/folders/root-folder.ts","webpack:///./src/app/drive/state/models/drive-page.ts","webpack:///./src/app/drive/state/actions/events.ts.pre-build-optimizer.js","webpack:///./src/app/drive/state/actions/events.ts","webpack:///./src/app/drive/state/actions/commands.ts","webpack:///./src/app/drive/context-actions/components/drive-context-menu/drive-context-menu.component.ts","webpack:///./src/app/drive/context-actions/drive-context-menus.ts","webpack:///./src/app/drive/preview/file-preview-overlay/file-preview-overlay.component.ts","webpack:///./src/app/drive/messages/loading-toast/loading-toast-messages.ts","webpack:///./src/app/drive/folders/api/folders-api.service.ts","webpack:///./src/app/drive/folders/api/folders-api.service.ts.pre-build-optimizer.js","webpack:///./src/app/drive/drive-entry-api.service.ts","webpack:///./src/app/drive/drive-entry-api.service.ts.pre-build-optimizer.js","webpack:///./src/app/drive/drive-urls.service.ts","webpack:///./src/app/drive/drive-urls.service.ts.pre-build-optimizer.js","webpack:///./src/app/drive/state/models/drive-state-model-defaults.ts","webpack:///./src/common/core/services/local-storage.service.ts","webpack:///./src/common/core/services/local-storage.service.ts.pre-build-optimizer.js","webpack:///./src/app/drive/uploads/drive-upload-validator.ts.pre-build-optimizer.js","webpack:///./src/app/drive/uploads/drive-upload-validator.ts","webpack:///./src/app/drive/state/drive-state.ts.pre-build-optimizer.js","webpack:///./src/app/drive/state/drive-state.ts","webpack:///./src/app/drive/state/models/drive-state-model.ts","webpack:///./src/app/drive/state/handlers/overlay-handler.ts","webpack:///./src/app/drive/state/handlers/donwlod-handler.ts","webpack:///./src/common/uploads/utils/download-file-from-url.ts","webpack:///./src/app/drive/sharing/links/shareable-links-api.service.ts","webpack:///./src/app/drive/sharing/links/shareable-links-api.service.ts.pre-build-optimizer.js","webpack:///./src/app/drive/sharing/links/share-link.state.ts.pre-build-optimizer.js","webpack:///./src/app/drive/sharing/links/share-link.state.ts","webpack:///./src/app/drive/messages/loading-toast/loading-toast.component.ts","webpack:///./src/app/drive/state/handlers/toast-handler.ts","webpack:///./src/app/drive/uploads/uploads-panel/uploads-panel.component.ts","webpack:///./src/app/drive/state/handlers/upload-panel-handler.ts","webpack:///./src/app/drive/state/handlers/dialog-handler.ts","webpack:///./src/app/drive/state/handlers/reset-scroll-handler.ts","webpack:///./src/app/drive/state/handlers/page-change-handler.ts","webpack:///./src/app/drive/state/handlers/page-load-handler.ts","webpack:///./src/app/drive/state/handlers/remove-star-handler.ts","webpack:///./src/app/drive/drive.module.ts","webpack:///./src/app/drive/drive.module.ts.pre-build-optimizer.js","webpack:///./src/app/drive/preview/link-preview-container/link-preview-password-panel/link-preview-password-panel.component.ts","webpack:///./src/app/drive/preview/link-preview-container/link-preview-password-panel/link-preview-password-panel.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/preview/link-preview-container/link-preview-password-panel/link-preview-password-panel.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/preview/link-preview-container/link-preview-password-panel/link-preview-password-panel.component.html","webpack:///./src/app/drive/entries/supported-entry-types.ts","webpack:///./src/app/drive/files/components/file-icon/file-icon.component.ts","webpack:///./src/app/drive/files/components/file-icon/file-icon.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/files/components/file-icon/file-icon.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/files/components/file-icon/file-icon.component.html","webpack:///./src/app/drive/preview/file-preview-overlay/file-preview-toolbar/file-preview-toolbar.component.ts","webpack:///./src/common/file-preview/current-preview-file.ts","webpack:///./src/common/file-preview/base-file-preview.ts","webpack:///./src/common/file-preview/default-preview/default-preview.component.ts.pre-build-optimizer.js","webpack:///./src/common/file-preview/default-preview/default-preview.component.ts","webpack:///./src/common/file-preview/preview-url-transformer.ts","webpack:///./src/common/file-preview/text-preview/text-preview.component.ts.pre-build-optimizer.js","webpack:///./src/common/file-preview/text-preview/text-preview.component.ts","webpack:///./src/common/file-preview/audio-preview/audio-preview.component.ts.pre-build-optimizer.js","webpack:///./src/common/file-preview/audio-preview/audio-preview.component.ts","webpack:///./src/common/file-preview/video-preview/video-preview.component.ts.pre-build-optimizer.js","webpack:///./src/common/file-preview/video-preview/video-preview.component.ts","webpack:///./src/common/file-preview/image-preview/image-preview.component.ts.pre-build-optimizer.js","webpack:///./src/common/file-preview/image-preview/image-preview.component.ts","webpack:///./src/common/file-preview/pdf-preview/pdf-preview.component.ts.pre-build-optimizer.js","webpack:///./src/common/file-preview/pdf-preview/pdf-preview.component.ts","webpack:///./src/common/file-preview/available-previews.ts","webpack:///./src/common/file-preview/preview-files.service.ts","webpack:///./src/common/file-preview/preview-files.service.ts.pre-build-optimizer.js","webpack:///./src/app/drive/preview/file-preview-overlay/file-preview-toolbar/file-preview-toolbar.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/preview/file-preview-overlay/file-preview-toolbar/file-preview-toolbar.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/preview/file-preview-overlay/file-preview-toolbar/file-preview-toolbar.component.html","webpack:///./src/common/core/ui/ad-host/ad-host.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/common/core/ui/ad-host/ad-host.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/common/file-preview/preview-container/preview-container.component.ts","webpack:///./src/common/file-preview/preview-container/preview-container.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/common/file-preview/preview-container/preview-container.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/common/file-preview/preview-container/preview-container.component.html","webpack:///./src/app/drive/preview/link-preview-container/link-preview-container.component.ts","webpack:///./src/app/drive/preview/link-preview-container/link-preview-container.component.ts.pre-build-optimizer.js","webpack:///./src/app/drive/preview/link-preview-container/link-preview-container.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/preview/link-preview-container/link-preview-container.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/preview/link-preview-container/link-preview-container.component.html","webpack:///./src/app/drive/search/search-file-types.ts","webpack:///./src/app/drive/search/main-searchbar/main-searchbar.component.ts","webpack:///./src/app/drive/search/main-searchbar/main-searchbar.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/search/main-searchbar/main-searchbar.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/search/main-searchbar/main-searchbar.component.html","webpack:///./src/common/uploads/directives/upload-button.directive.ts","webpack:///./src/app/drive/folders/components/crupdate-folder-dialog/crupdate-folder-dialog.component.ts","webpack:///./src/app/drive/sidebar/sidebar-action-buttons/sidebar-action-buttons.component.ts","webpack:///./src/app/drive/sidebar/sidebar-action-buttons/sidebar-action-buttons.component.ts.pre-build-optimizer.js","webpack:///./src/app/drive/upload-input-config.ts","webpack:///./src/app/drive/sidebar/sidebar-action-buttons/sidebar-action-buttons.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/sidebar/sidebar-action-buttons/sidebar-action-buttons.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/sidebar/sidebar-action-buttons/sidebar-action-buttons.component.html","webpack:///./src/app/drive/interactions/drop-targets/base-drop-target.ts","webpack:///./src/app/drive/interactions/drop-targets/base-drop-target.ts.pre-build-optimizer.js","webpack:///./src/app/drive/interactions/drop-targets/folder-drop-target.directive.ts.pre-build-optimizer.js","webpack:///./src/app/drive/interactions/drop-targets/folder-drop-target.directive.ts","webpack:///./node_modules/@angular/cdk/esm5/tree.es5.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/esm5/tree.es5.js.pre-build-optimizer.js","webpack:///./src/common/core/ui/context-menu/context-menu.directive.ts","webpack:///./src/common/core/ui/context-menu/context-menu-ref.ts","webpack:///./src/common/core/ui/context-menu/context-menu-data.ts","webpack:///./src/common/core/ui/context-menu/context-menu.service.ts","webpack:///./src/common/core/ui/context-menu/context-menu.service.ts.pre-build-optimizer.js","webpack:///./src/common/core/ui/context-menu/available-context-menus.ts","webpack:///./node_modules/@angular/material/tree/typings/index.ngfactory.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/tree/typings/index.d.ts.MatTree.html","webpack:///./src/app/drive/sidebar/folders-tree/folders-tree.component.ts","webpack:///./src/app/drive/sidebar/folders-tree/folders-tree.service.ts","webpack:///./src/app/drive/sidebar/folders-tree/folders-tree.service.ts.pre-build-optimizer.js","webpack:///./src/app/drive/sidebar/folders-tree/folders-tree.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/sidebar/folders-tree/folders-tree.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/sidebar/folders-tree/folders-tree.component.html","webpack:///./node_modules/@angular/material/progress-bar/typings/index.ngfactory.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/progress-bar/typings/index.d.ts.MatProgressBar.html","webpack:///./src/app/drive/sidebar/available-space-indicator/available-space-indicator.component.ts","webpack:///./src/app/drive/sidebar/available-space-indicator/available-space-indicator.component.ts.pre-build-optimizer.js","webpack:///./src/app/drive/sidebar/available-space-indicator/available-space-indicator.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/sidebar/available-space-indicator/available-space-indicator.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/sidebar/available-space-indicator/available-space-indicator.component.html","webpack:///./src/app/drive/sidebar/sidebar.component.ts","webpack:///./src/app/drive/sidebar/sidebar.component.ts.pre-build-optimizer.js","webpack:///./src/app/drive/sidebar/sidebar.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/sidebar/sidebar.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/sidebar/sidebar.component.html","webpack:///./src/app/drive/files/components/file-thumbnail/file-thumbnail.component.ts","webpack:///./src/app/drive/files/components/file-thumbnail/file-thumbnail.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/files/components/file-thumbnail/file-thumbnail.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/files/components/file-thumbnail/file-thumbnail.component.html","webpack:///./src/app/drive/details-sidebar/details-panel/details-panel.component.ts","webpack:///./src/app/drive/details-sidebar/details-panel/details-panel.component.ts.pre-build-optimizer.js","webpack:///./src/app/drive/details-sidebar/details-panel/details-panel.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/details-sidebar/details-panel/details-panel.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/details-sidebar/details-panel/details-panel.component.html","webpack:///./src/app/drive/details-sidebar/details-sidebar.component.ts","webpack:///./src/app/drive/details-sidebar/details-sidebar.component.ts.pre-build-optimizer.js","webpack:///./src/app/drive/details-sidebar/details-sidebar.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/details-sidebar/details-sidebar.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/details-sidebar/details-sidebar.component.html","webpack:///./src/app/drive/interactions/drive-hammer-interactions.directive.ts","webpack:///./src/app/drive/interactions/drive-dom-cache.service.ts","webpack:///./src/app/drive/interactions/drive-dom-cache.service.ts.pre-build-optimizer.js","webpack:///./src/app/drive/interactions/files-drag-select.service.ts.pre-build-optimizer.js","webpack:///./src/app/drive/interactions/files-drag-select.service.ts","webpack:///./src/app/drive/interactions/drag-entry.service.ts","webpack:///./src/app/drive/interactions/drag-entry.service.ts.pre-build-optimizer.js","webpack:///./src/app/drive/drive-toolbar/entry-breadcrumbs/entry-breadcrumbs.component.ts.pre-build-optimizer.js","webpack:///./src/app/drive/drive-toolbar/entry-breadcrumbs/entry-breadcrumbs.component.ts","webpack:///./src/app/drive/drive-toolbar/entry-breadcrumbs/entry-breadcrumbs.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/drive-toolbar/entry-breadcrumbs/entry-breadcrumbs.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/drive-toolbar/entry-breadcrumbs/entry-breadcrumbs.component.html","webpack:///./src/app/drive/drive-toolbar/drive-toolbar.component.ts","webpack:///./src/app/drive/drive-toolbar/drive-toolbar.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/drive-toolbar/drive-toolbar.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/drive-toolbar/drive-toolbar.component.html","webpack:///./src/app/drive/context-actions/drive-context-actions.ts","webpack:///./src/app/drive/context-actions/drive-context-actions.ts.pre-build-optimizer.js","webpack:///./src/app/drive/context-actions/actions/trash-actions.ts.pre-build-optimizer.js","webpack:///./src/app/drive/context-actions/actions/trash-actions.ts","webpack:///./src/common/core/ui/dialogs/base-dialog.ts","webpack:///./src/common/core/ui/dialogs/base-dialog.ts.pre-build-optimizer.js","webpack:///./src/app/drive/sharing/share-link-dialog/share-link-dialog.component.ts","webpack:///./src/app/drive/sharing/share-link-dialog/share-link-dialog.component.ts.pre-build-optimizer.js","webpack:///./src/common/core/utils/shareLink.ts","webpack:///./src/app/drive/permissions/drive-entry-permissions.ts","webpack:///./src/app/drive/sharing/shares-api.service.ts.pre-build-optimizer.js","webpack:///./src/app/drive/sharing/shares-api.service.ts","webpack:///./src/app/drive/sharing/state/share-dialog.state.ts.pre-build-optimizer.js","webpack:///./src/app/drive/sharing/state/share-dialog.state.ts","webpack:///./src/app/drive/sharing/share-dialog/share-dialog.component.ts","webpack:///./src/app/drive/sharing/share-dialog/share-dialog.component.ts.pre-build-optimizer.js","webpack:///./src/app/drive/entries/rename-entry-dialog/rename-entry-dialog.component.ts","webpack:///./src/app/drive/context-actions/actions/shares-actions.ts.pre-build-optimizer.js","webpack:///./src/app/drive/context-actions/actions/shares-actions.ts","webpack:///./src/app/drive/context-actions/actions/folder-actions.ts.pre-build-optimizer.js","webpack:///./src/app/drive/context-actions/actions/folder-actions.ts","webpack:///./src/app/drive/entries/move-entries-dialog/move-entries-dialog.component.ts","webpack:///./src/app/drive/entries/move-entries-dialog/move-entries-dialog.component.ts.pre-build-optimizer.js","webpack:///./src/app/drive/context-actions/actions/entry-actions.ts.pre-build-optimizer.js","webpack:///./src/app/drive/context-actions/actions/entry-actions.ts","webpack:///./src/app/drive/context-actions/actions/trash-page-actions.ts.pre-build-optimizer.js","webpack:///./src/app/drive/context-actions/actions/trash-page-actions.ts","webpack:///./src/app/drive/context-actions/components/context-actions-container/context-actions-container.component.ts","webpack:///./src/app/drive/context-actions/components/context-actions-container/context-actions-container.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/context-actions/components/context-actions-container/context-actions-container.component.html","webpack:///./src/app/drive/drive-toolbar/toolbar-actions/toolbar-actions.component.ts","webpack:///./src/app/drive/drive-toolbar/toolbar-actions/toolbar-actions.component.ts.pre-build-optimizer.js","webpack:///./src/app/drive/drive-toolbar/toolbar-actions/toolbar-actions.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/drive-toolbar/toolbar-actions/toolbar-actions.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/drive-toolbar/toolbar-actions/toolbar-actions.component.html","webpack:///./src/app/drive/entries/available-sorts.ts","webpack:///./src/app/drive/header/file-list-header/file-list-header.component.ts","webpack:///./src/app/drive/header/file-list-header/file-list-header.component.ts.pre-build-optimizer.js","webpack:///./src/app/drive/header/file-list-header/file-list-header.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/header/file-list-header/file-list-header.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/header/file-list-header/file-list-header.component.html","webpack:///./src/common/uploads/utils/read-uploaded-folders.ts.pre-build-optimizer.js","webpack:///./src/common/uploads/utils/read-uploaded-folders.ts","webpack:///./src/common/uploads/directives/upload-dropzone.directive.ts.pre-build-optimizer.js","webpack:///./src/common/uploads/directives/upload-dropzone.directive.ts","webpack:///./src/common/core/ui/infinite-scroll/infinite.scroll.ts","webpack:///./src/app/drive/interactions/drive-infinite-scroll.directive.ts.pre-build-optimizer.js","webpack:///./src/app/drive/interactions/drive-infinite-scroll.directive.ts","webpack:///./src/app/drive/interactions/toggle-selected-class.directive.ts","webpack:///./src/app/drive/interactions/toggle-selected-class.directive.ts.pre-build-optimizer.js","webpack:///./src/app/drive/interactions/entry-drag-preview/entry-drag-preview.component.ts","webpack:///./src/app/drive/interactions/entry-drag-preview/entry-drag-preview.component.ts.pre-build-optimizer.js","webpack:///./src/app/drive/interactions/entry-drag-preview/entry-drag-preview.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/interactions/entry-drag-preview/entry-drag-preview.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/interactions/entry-drag-preview/entry-drag-preview.component.html","webpack:///./src/app/drive/drive.component.ts","webpack:///./src/app/drive/drive.component.ts.pre-build-optimizer.js","webpack:///./src/app/drive/drive.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/drive.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/drive.component.html","webpack:///./src/app/drive/files/components/files-grid/files-grid-item/files-grid-item.component.ts","webpack:///./src/app/drive/files/components/files-grid/files-grid-item/files-grid-item.component.ts.pre-build-optimizer.js","webpack:///./src/app/drive/files/components/files-grid/files-grid-item/files-grid-item.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/files/components/files-grid/files-grid-item/files-grid-item.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/files/components/files-grid/files-grid-item/files-grid-item.component.html","webpack:///./src/app/drive/files/components/files-grid/files-grid.component.ts","webpack:///./src/app/drive/files/components/files-grid/files-grid.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/files/components/files-grid/files-grid.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/files/components/files-grid/files-grid.component.html","webpack:///./src/app/drive/files/components/files-list/files-list.component.ts","webpack:///./src/app/drive/files/components/files-list/files-list.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/files/components/files-list/files-list.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/files/components/files-list/files-list.component.html","webpack:///./src/app/drive/messages/no-recent-entries/no-recent-entries.component.ts","webpack:///./src/app/drive/messages/no-recent-entries/no-recent-entries.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/messages/no-recent-entries/no-recent-entries.component.html","webpack:///./src/app/drive/messages/no-trashed-entries/no-trashed-entries.component.ts","webpack:///./src/app/drive/messages/no-trashed-entries/no-trashed-entries.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/messages/no-trashed-entries/no-trashed-entries.component.html","webpack:///./src/app/drive/messages/no-starred-entries/no-starred-entries.component.ts","webpack:///./src/app/drive/messages/no-starred-entries/no-starred-entries.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/messages/no-starred-entries/no-starred-entries.component.html","webpack:///./src/app/drive/sharing/no-shared-entries/no-shared-entries.component.ts","webpack:///./src/app/drive/sharing/no-shared-entries/no-shared-entries.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/sharing/no-shared-entries/no-shared-entries.component.html","webpack:///./src/app/drive/messages/no-search-entries/no-search-entries.component.ts","webpack:///./src/app/drive/messages/no-search-entries/no-search-entries.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/messages/no-search-entries/no-search-entries.component.html","webpack:///./src/app/drive/uploads/upload-dropzone/upload-dropzone.component.ts","webpack:///./src/app/drive/uploads/upload-dropzone/upload-dropzone.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/uploads/upload-dropzone/upload-dropzone.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/uploads/upload-dropzone/upload-dropzone.component.html","webpack:///./src/app/drive/messages/no-folder-entries/no-folder-entries.component.ts","webpack:///./src/app/drive/messages/no-folder-entries/no-folder-entries.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/messages/no-folder-entries/no-folder-entries.component.html","webpack:///./src/app/drive/entries/entries-container/entries-container.component.ts","webpack:///./src/app/drive/entries/entries-container/entries-container.component.ts.pre-build-optimizer.js","webpack:///./src/common/core/keybinds/keycodes.enum.ts","webpack:///./src/common/core/keybinds/keybinds.service.ts","webpack:///./src/common/core/keybinds/keybinds.service.ts.pre-build-optimizer.js","webpack:///./src/app/drive/entries/entries-container/entries-container.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/entries/entries-container/entries-container.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/entries/entries-container/entries-container.component.html","webpack:///./src/common/file-preview/text-preview/text-preview.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/common/file-preview/text-preview/text-preview.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/common/file-preview/text-preview/text-preview.component.html","webpack:///./src/common/file-preview/default-preview/default-preview.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/common/file-preview/default-preview/default-preview.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/common/file-preview/default-preview/default-preview.component.html","webpack:///./src/common/file-preview/video-preview/video-preview.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/common/file-preview/video-preview/video-preview.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/common/file-preview/video-preview/video-preview.component.html","webpack:///./src/common/file-preview/image-preview/image-preview.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/common/file-preview/image-preview/image-preview.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/common/file-preview/image-preview/image-preview.component.html","webpack:///./src/common/file-preview/pdf-preview/pdf-preview.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/common/file-preview/pdf-preview/pdf-preview.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/common/file-preview/pdf-preview/pdf-preview.component.html","webpack:///./src/common/file-preview/audio-preview/audio-preview.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/common/file-preview/audio-preview/audio-preview.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/common/file-preview/audio-preview/audio-preview.component.html","webpack:///./src/app/drive/sharing/sharing-permissions-button/sharing-permissions-button.component.ts.pre-build-optimizer.js","webpack:///./src/app/drive/sharing/sharing-permissions-button/sharing-permissions-button.component.ts","webpack:///./src/app/drive/sharing/sharing-permissions-button/sharing-permissions-button.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/sharing/sharing-permissions-button/sharing-permissions-button.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/sharing/sharing-permissions-button/sharing-permissions-button.component.html","webpack:///./src/app/drive/sharing/entries-access-table/entries-access-table.component.ts","webpack:///./src/app/drive/sharing/entries-access-table/entries-access-table.component.ts.pre-build-optimizer.js","webpack:///./src/app/drive/sharing/entries-access-table/entries-access-table.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/sharing/entries-access-table/entries-access-table.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/sharing/entries-access-table/entries-access-table.component.html","webpack:///./src/app/drive/sharing/share-dialog/share-dialog.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/sharing/share-dialog/share-dialog.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/sharing/share-dialog/share-dialog.component.html","webpack:///./src/app/drive/sharing/links/link-options/link-options.component.ts","webpack:///./src/app/drive/sharing/links/link-options/link-options.component.ts.pre-build-optimizer.js","webpack:///./src/app/drive/sharing/links/link-options/link-options.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/sharing/links/link-options/link-options.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/sharing/links/link-options/link-options.component.html","webpack:///./src/app/drive/sharing/share-link-dialog/share-link-dialog.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/sharing/share-link-dialog/share-link-dialog.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/sharing/share-link-dialog/share-link-dialog.component.html","webpack:///./src/app/drive/context-actions/components/drive-context-menu/drive-context-menu.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/context-actions/components/drive-context-menu/drive-context-menu.component.html","webpack:///./src/app/drive/folders/components/crupdate-folder-dialog/crupdate-folder-dialog.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/folders/components/crupdate-folder-dialog/crupdate-folder-dialog.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/folders/components/crupdate-folder-dialog/crupdate-folder-dialog.component.html","webpack:///./src/app/drive/entries/rename-entry-dialog/rename-entry-dialog.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/entries/rename-entry-dialog/rename-entry-dialog.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/entries/rename-entry-dialog/rename-entry-dialog.component.html","webpack:///./src/app/drive/uploads/uploads-panel/uploads-panel-item/uploads-panel-item.component.ts","webpack:///./src/app/drive/uploads/uploads-panel/uploads-panel-item/uploads-panel-item.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/uploads/uploads-panel/uploads-panel-item/uploads-panel-item.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/uploads/uploads-panel/uploads-panel-item/uploads-panel-item.component.html","webpack:///./src/app/drive/uploads/uploads-panel/uploads-panel.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/uploads/uploads-panel/uploads-panel.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/uploads/uploads-panel/uploads-panel.component.html","webpack:///./src/app/drive/entries/move-entries-dialog/move-entries-dialog.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/entries/move-entries-dialog/move-entries-dialog.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/entries/move-entries-dialog/move-entries-dialog.component.html","webpack:///./src/app/drive/preview/file-preview-overlay/file-preview-overlay.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/preview/file-preview-overlay/file-preview-overlay.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/preview/file-preview-overlay/file-preview-overlay.component.html","webpack:///./node_modules/@angular/material/esm5/progress-spinner.es5.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/progress-spinner/typings/index.ngfactory.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/progress-spinner/typings/index.d.ts.MatSpinner.html","webpack:///./src/app/drive/messages/loading-toast/loading-toast.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/messages/loading-toast/loading-toast.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/messages/loading-toast/loading-toast.component.html","webpack:///./src/common/uploads/uploads.module.ts","webpack:///./src/app/drive/drive-routing.module.ts","webpack:///./src/common/file-preview/file-preview.module.ts","webpack:///./src/app/drive/sharing/sharing.module.ts","webpack:///./src/app/drive/drive.module.ngfactory.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseTimes.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_nativeKeys.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_copySymbols.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_stackHas.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_freeGlobal.js.pre-build-optimizer.js","webpack:///./src/common/core/ui/chip-input/chip-input.module.ts","webpack:///./node_modules/lodash/_baseAssign.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_cloneDataView.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_ListCache.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_arrayIncludesWith.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/isEqual.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_nativeCreate.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/cdk/esm5/collections.es5.js.pre-build-optimizer.js","webpack:///(webpack)/buildin/module.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/esm5/progress-bar.es5.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/isArray.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_listCacheSet.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseMatches.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseGet.js.pre-build-optimizer.js","webpack:///./src/common/core/ui/overlay-panel/overlay-panel-ref.ts","webpack:///./node_modules/lodash/_listCacheDelete.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_cloneRegExp.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/sidenav/typings/index.ngfactory.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/sidenav/typings/index.d.ts.MatSidenavContent.html","webpack:///./node_modules/@angular/material/sidenav/typings/index.d.ts.MatSidenav.html","webpack:///./node_modules/@angular/material/sidenav/typings/index.d.ts.MatSidenavContainer.html","webpack:///./node_modules/lodash/isTypedArray.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_createSet.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseCreate.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/toString.js.pre-build-optimizer.js","webpack:///./src/common/core/ui/overlay-panel/overlay-panel.service.ts","webpack:///./src/common/core/ui/overlay-panel/overlay-panel.service.ts.pre-build-optimizer.js","webpack:///./node_modules/lodash/_MapCache.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseIsEqualDeep.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_arrayMap.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_Map.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_hashHas.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_mapCacheClear.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseGetAllKeys.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_Stack.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_setCacheAdd.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_stackGet.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_arrayEach.js.pre-build-optimizer.js","webpack:///./src/common/uploads/validation/default-upload-validator.ts.pre-build-optimizer.js","webpack:///./src/common/uploads/upload-queue/upload-queue-item.ts.pre-build-optimizer.js","webpack:///./src/common/uploads/upload-queue/upload-queue-item.ts","webpack:///./src/common/uploads/validation/default-upload-validator.ts","webpack:///./src/common/uploads/upload-queue/upload-queue.service.ts","webpack:///./src/common/uploads/upload-queue/upload-queue.service.ts.pre-build-optimizer.js","webpack:///./node_modules/lodash/hasIn.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseAssignValue.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_arrayIncludes.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_copyObject.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_mapCacheDelete.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/esm5/slide-toggle.es5.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_overArg.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/isFunction.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/eq.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseIsMatch.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/sort/typings/index.ngfactory.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/sort/typings/index.d.ts.MatSortHeader.html","webpack:///./node_modules/lodash/keysIn.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_nodeUtil.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/get.js.pre-build-optimizer.js","webpack:///./src/common/core/ui/overlay-panel/overlay-panel-data.ts","webpack:///./node_modules/lodash/_Symbol.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_getSymbolsIn.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_equalArrays.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_cloneSymbol.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/table/typings/index.ngfactory.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/table/typings/index.d.ts.MatTable.html","webpack:///./node_modules/@angular/material/table/typings/index.d.ts.MatHeaderRow.html","webpack:///./node_modules/@angular/material/table/typings/index.d.ts.MatRow.html","webpack:///./src/common/core/ui/chip-input/chip-input.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/common/core/ui/chip-input/chip-input.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/common/core/ui/chip-input/chip-input.component.html","webpack:///./node_modules/lodash/_mapCacheHas.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/uniqBy.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_getAllKeys.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_setToArray.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseUnary.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/esm5/form-field.es5.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_equalObjects.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/isLength.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_listCacheGet.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/chips/typings/index.ngfactory.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/chips/typings/index.d.ts.MatChipList.html","webpack:///./node_modules/lodash/_DataView.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_hashGet.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/material/esm5/select.es5.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseIteratee.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/noop.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseIsSet.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseIsEqual.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_isIndex.js.pre-build-optimizer.js","webpack:///./src/common/core/ui/formatted-date.pipe.ts","webpack:///./node_modules/lodash/_initCloneByTag.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_cacheHas.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_assocIndexOf.js.pre-build-optimizer.js","webpack:///./node_modules/@angular/cdk/esm5/table.es5.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_Set.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_initCloneArray.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_cloneTypedArray.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/isMap.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/identity.js.pre-build-optimizer.js","webpack:///./node_modules/lodash/_baseToString.js.pre-build-optimizer.js"],"names":["assocIndexOf","__webpack_require__","module","exports","key","this","__data__","Uint8Array","arrayBuffer","result","constructor","byteLength","set","deselectCurrent","text","options","debug","message","reselectPrevious","range","selection","mark","success","document","createRange","getSelection","createElement","textContent","style","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","body","appendChild","selectNode","addRange","execCommand","Error","err","console","error","warn","window","clipboardData","setData","copyKey","test","navigator","userAgent","replace","format","prompt","removeRange","removeAllRanges","removeChild","baseProperty","basePropertyDeep","isKey","toKey","path","baseCreate","getPrototype","isPrototype","object","baseGetTag","isObjectLike","value","d","__webpack_exports__","MatChipsModule","MatChipList","MatChip","MatChipRemove","MatChipInput","MAT_CHIPS_DEFAULT_OPTIONS","tslib__WEBPACK_IMPORTED_MODULE_0__","_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_1__","_angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_2__","_angular_core__WEBPACK_IMPORTED_MODULE_3__","_angular_material_core__WEBPACK_IMPORTED_MODULE_4__","rxjs__WEBPACK_IMPORTED_MODULE_5__","rxjs__WEBPACK_IMPORTED_MODULE_6__","rxjs_operators__WEBPACK_IMPORTED_MODULE_7__","rxjs_operators__WEBPACK_IMPORTED_MODULE_8__","rxjs_operators__WEBPACK_IMPORTED_MODULE_9__","_angular_cdk_a11y__WEBPACK_IMPORTED_MODULE_10__","_angular_cdk_collections__WEBPACK_IMPORTED_MODULE_11__","CHIP_ATTRIBUTE_NAMES","_super","_elementRef","_ngZone","platform","globalOptions","_this","call","_ripplesGloballyDisabled","rippleConfig","_hasFocus","chipListSelectable","_selected","_selectable","_removable","_onFocus","_onBlur","selectionChange","destroyed","removed","_addHostClassName","_chipRipple","setupTriggerEvents","nativeElement","disabled","speedFactor","baseSpeedFactor","animation","terminateOnPointerUp","Object","defineProperty","prototype","get","disableRipple","enumerable","configurable","emit","source","isUserInput","selected","undefined","_value","selectable","toString","_i","CHIP_ATTRIBUTE_NAMES_1","length","attr","hasAttribute","tagName","toLowerCase","classList","add","ngOnDestroy","chip","_removeTriggerEvents","select","deselect","selectViaInteraction","toggleSelected","focus","next","remove","removable","_handleClick","event","preventDefault","stopPropagation","_handleKeydown","keyCode","_blur","onStable","asObservable","pipe","subscribe","run","_parentChip","nextUniqueId","_changeDetectorRef","_dir","_parentForm","_parentFormGroup","_defaultErrorStateMatcher","ngControl","controlType","_lastDestroyedChipIndex","_destroyed","_uid","_tabIndex","_userTabIndex","_onTouched","_onChange","_multiple","_compareWith","o1","o2","_required","_disabled","ariaOrientation","change","valueChange","valueAccessor","multiple","_selectionModel","empty","fn","_initializeSelection","writeValue","_chipInput","id","stateChanges","placeholder","_placeholder","focused","chips","some","forEach","apply","map","ngAfterContentInit","_keyManager","withWrap","withVerticalOrientation","withHorizontalOrientation","tabOut","setTimeout","changes","_resetChips","_updateTabIndex","_updateFocusForDestroyedChips","ngOnInit","ngDoCheck","updateErrorState","complete","_dropSubscriptions","registerInput","inputElement","setDescribedByIds","ids","_ariaDescribedby","join","_setSelectionByValue","registerOnChange","registerOnTouched","setDisabledState","isDisabled","onContainerClick","setFirstItemActive","_focusInput","_keydown","target","_isInputEmpty","setLastItemActive","contains","onKeydown","newChipIndex","Math","min","setActiveItem","_isValidIndex","index","element","nodeName","_clearSelection","Array","isArray","currentValue","_selectValue","_sortValues","correspondingChip","find","Promise","resolve","then","skip","clear","_propagateChanges","fallbackValue","valueToEmit","markForCheck","_markAsTouched","_listenToChipsFocus","_listenToChipsSelection","_listenToChipsRemoved","_chipFocusSubscription","unsubscribe","_chipBlurSubscription","_chipSelectionSubscription","_chipRemoveSubscription","chipSelectionChanges","isSelected","chipFocusChanges","chipIndex","toArray","indexOf","updateActiveItemIndex","chipBlurChanges","chipRemoveChanges","nextUniqueId$1","_defaultOptions","_addOnBlur","separatorKeyCodes","chipEnd","_inputElement","_chipList","ngOnChanges","_emitChipEnd","addOnBlur","_focus","input","_onInput","baseIsArguments","objectProto","hasOwnProperty","propertyIsEnumerable","isArguments","arguments","ListCache","Map","MapCache","data","pairs","LARGE_ARRAY_SIZE","push","size","baseIsSet","baseUnary","nodeUtil","nodeIsSet","isSet","setCacheAdd","setCacheHas","SetCache","values","has","root","funcToString","Function","func","e","baseGet","FUNC_ERROR_TEXT","memoize","resolver","TypeError","memoized","args","cache","Cache","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","entries","entry","castPath","isIndex","isLength","hasFunc","MAT_AUTOCOMPLETE_DEFAULT_OPTIONS","MatAutocomplete","MatAutocompleteModule","MAT_AUTOCOMPLETE_SCROLL_STRATEGY","MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY","MatAutocompleteTrigger","_angular_core__WEBPACK_IMPORTED_MODULE_1__","_angular_material_core__WEBPACK_IMPORTED_MODULE_2__","_angular_cdk_a11y__WEBPACK_IMPORTED_MODULE_3__","_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_4__","_angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_5__","_angular_cdk_overlay__WEBPACK_IMPORTED_MODULE_6__","_angular_cdk_portal__WEBPACK_IMPORTED_MODULE_7__","rxjs_operators__WEBPACK_IMPORTED_MODULE_10__","rxjs_operators__WEBPACK_IMPORTED_MODULE_11__","rxjs_operators__WEBPACK_IMPORTED_MODULE_12__","rxjs_operators__WEBPACK_IMPORTED_MODULE_13__","rxjs__WEBPACK_IMPORTED_MODULE_15__","rxjs__WEBPACK_IMPORTED_MODULE_16__","rxjs__WEBPACK_IMPORTED_MODULE_17__","rxjs__WEBPACK_IMPORTED_MODULE_18__","rxjs__WEBPACK_IMPORTED_MODULE_19__","rxjs__WEBPACK_IMPORTED_MODULE_20__","_uniqueAutocompleteIdCounter","_MatAutocompleteMixinBase","providedIn","factory","autoActiveFirstOption","defaults","showPanel","_isOpen","displayWith","optionSelected","opened","closed","_classList","_autoActiveFirstOption","split","className","trim","_setVisibility","_setScrollTop","scrollTop","panel","_getScrollTop","_emitSelectEvent","option","overlay","scrollStrategies","reposition","_element","_overlay","_viewContainerRef","_zone","_scrollStrategy","_formField","_document","_viewportRuler","_componentDestroyed","_autocompleteDisabled","_manuallyFloatingLabel","_viewportSubscription","EMPTY","_canOpenOnNextFocus","_closeKeyEventStream","_windowBlurHandler","activeElement","panelOpen","autocompleteAttribute","_overlayAttached","optionSelections","autocomplete","onSelectionChange","runOutsideAngular","addEventListener","removeEventListener","_destroyPanel","openPanel","_attachOverlay","_floatLabel","closePanel","_resetLabel","_overlayRef","hasAttached","detach","_closingActionsSubscription","detectChanges","_outsideClickStream","detachments","activeItem","clickTarget","formField","overlayElement","_setTriggerValue","altKey","_resetActiveItem","activeOption","_selectViaInteraction","prevActiveItem","isArrowKey","_canOpen","_scrollToOption","_handleInput","type","parseFloat","_previousValue","_handleFocus","shouldAnimate","floatLabel","_animateAndLockLabel","activeItemIndex","labelCount","optionGroups","newScrollPosition","_subscribeToClosingActions","firstStable","optionChanges","_positionStrategy","reapplyLastPosition","updatePosition","panelClosingActions","_setValueAndClose","dispose","toDisplay","inputValue","_control","_clearPreviousSelectedOption","updateSize","width","_getPanelWidth","_portal","template","create","_getOverlayConfig","attach","wasOpen","positionStrategy","_getOverlayPosition","scrollStrategy","direction","flexibleConnectedTo","_getConnectedElement","withFlexibleDimensions","withPush","withPositions","originX","originY","overlayX","overlayY","connectedTo","elementRef","getConnectedOverlayOrigin","panelWidth","_getHostWidth","getBoundingClientRect","readOnly","stringToPath","freeExports","nodeType","freeModule","Buffer","allocUnsafe","buffer","isDeep","slice","copy","AllowedExtensionsValidation","extendStatics","_upload_validation__WEBPACK_IMPORTED_MODULE_0__","__extends","setPrototypeOf","__proto__","b","p","__","params","i18n","errorMessage","t","extensions","fails","file","extension","FormattedFileSizePipe","_core_utils_pretty_bytes__WEBPACK_IMPORTED_MODULE_0__","transform","bytes","precision","isNaN","String","isFinite","Ctor","arrayLikeKeys","baseKeys","isArrayLike","isSymbol","reIsDeepProp","reIsPlainProp","nativeKeys","Symbol","nativeObjectToString","symToStringTag","toStringTag","isOwn","tag","unmasked","MatTableModule","MatCellDef","MatHeaderCellDef","MatColumnDef","MatHeaderCell","MatCell","MatTable","MatHeaderRowDef","MatRowDef","MatHeaderRow","MatFooterRow","MatRow","MatTableDataSource","_angular_cdk_table__WEBPACK_IMPORTED_MODULE_1__","_angular_cdk_table__WEBPACK_IMPORTED_MODULE_2__","_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_3__","rxjs__WEBPACK_IMPORTED_MODULE_4__","rxjs__WEBPACK_IMPORTED_MODULE_7__","rxjs__WEBPACK_IMPORTED_MODULE_8__","stickyCssClass","_CdkHeaderCellDef","columnDef","cssClassFriendlyName","_CdkRowDef","MAX_SAFE_INTEGER","initialData","_renderData","_filter","_renderChangesSubscription","sortingDataAccessor","sortHeaderId","numberValue","Number","sortData","sort","active","a","valueA","valueB","comparatorResult","filterPredicate","filter","dataStr","keys","reduce","currentTerm","transformedFilter","_data","_updateChangeSubscription","_sort","_paginator","paginator","sortChange","initialized","pageChange","page","dataStream","filteredData","_a","_filterData","orderedData","_orderData","paginatedData","_pageData","obj","_updatePaginator","startIndex","pageIndex","pageSize","splice","filteredDataLength","lastPageIndex","ceil","connect","disconnect","baseClone","CLONE_DEEP_FLAG","array","offset","isObject","fromIndex","baseIsNative","getValue","stubFalse","isBuffer","copyObject","keysIn","uid","coreJsData","maskSrcKey","exec","IE_PROTO","rangeCount","ranges","i","getRangeAt","toUpperCase","blur","getSymbolsIn","baseGetAllKeys","baseIsEqual","hasIn","isStrictComparable","matchesStrictComparable","srcValue","objValue","COMPARE_PARTIAL_FLAG","rePropName","reEscapeChar","memoizeCapped","string","charCodeAt","match","number","quote","subString","ChipInputComponent","_angular_forms__WEBPACK_IMPORTED_MODULE_0__","rxjs_operators__WEBPACK_IMPORTED_MODULE_1__","formArray","getArrayValidations","ngAfterViewInit","bindToFormChange","removeAt","duplicate","getRawValue","addChip","getItemValidations","validations","email","required","valueChanges","valid","propagateChange","item","getTag","getMapData","eq","equalArrays","mapToArray","setToArray","symbolProto","symbolValueOf","valueOf","other","bitmask","customizer","equalFunc","stack","byteOffset","name","convert","stacked","getNative","AdHostComponent","_utils_random_string__WEBPACK_IMPORTED_MODULE_0__","el","renderer","settings","currentUser","lazyLoader","isSubscribed","randomId","setAdCode","adCode","appendAdHtml","loadAdScripts","executeAdJavascript","children","setStyle","slot","adHtml","innerHTML","pattern","content","r","toEval","eval","promises","loadScript","nativeCreate","predicate","fromRight","freeGlobal","freeSelf","self","arrayIncludes","arrayIncludesWith","cacheHas","createSet","iteratee","comparator","includes","isCommon","seen","outer","computed","seenIndex","resIndex","MatInkBar","_MAT_INK_BAR_POSITIONER","MatTabBody","MatTabBodyPortal","MatTabHeader","MatTabLabelWrapper","MatTab","MatTabNav","MatTabsModule","MatTabGroup","_angular_core__WEBPACK_IMPORTED_MODULE_0__","tslib__WEBPACK_IMPORTED_MODULE_1__","_angular_cdk_portal__WEBPACK_IMPORTED_MODULE_2__","_angular_material_core__WEBPACK_IMPORTED_MODULE_3__","_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_11__","_angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_12__","_angular_cdk_a11y__WEBPACK_IMPORTED_MODULE_13__","left","offsetLeft","offsetWidth","_inkBarPositioner","alignToElement","show","requestAnimationFrame","_setStyles","visibility","hide","positions","inkBar","textLabel","_contentPortal","_stateChanges","origin","isActive","_explicitContent","_implicitContent","componentFactoryResolver","viewContainerRef","_host","_centeringSub","_leavingSub","_beforeCentering","_isCenterPosition","_position","isCentering","_content","_afterLeavingCenter","changeDetectorRef","_dirChangeSubscription","_onCentering","_onCentered","dir","_computePositionAnimationState","_positionIndex","_computePositionFromOrigin","_onTranslateTabStarted","toState","clientHeight","_onTranslateTabComplete","fromState","_getLayoutDirection","getOffsetLeft","getOffsetWidth","_scrollDistance","_selectedIndexChanged","_showPaginationControls","_disableScrollAfter","_disableScrollBefore","_selectedIndex","selectFocusedIndex","indexFocused","ngAfterContentChecked","_tabLabelCount","_labelWrappers","_updatePagination","_scrollToLabel","_checkScrollingControls","_alignInkBarToSelectedTab","_scrollDistanceChanged","_updateTabScrollPosition","focusIndex","dirChange","resize","realign","updateActiveItem","newFocusIndex","_setTabFocus","_onContentChanges","_checkPaginationEnabled","tab","tabIndex","containerEl","_tabListContainer","scrollLeft","scrollWidth","scrollDistance","translateX","_tabList","v","max","_getMaxScrollDistance","_scrollHeader","scrollDir","labelIndex","selectedLabel","labelBeforePos","labelAfterPos","viewLength","beforeVisiblePos","afterVisiblePos","isEnabled","selectedLabelWrapper","selectedIndex","_inkBar","nextId","_indexToSelect","_tabBodyWrapperHeight","_tabsSubscription","_tabLabelSubscription","_dynamicHeight","headerPosition","selectedIndexChange","focusChange","animationDone","selectedTabChange","_groupId","_backgroundColor","backgroundColor","indexToSelect","_clampTabIndex","isFirstRun_1","_createChangeEvent","_tabs","_subscribeToTabLabels","tabs","realignInkBar","_tabHeader","_focusChanged","_getTabLabelId","_getTabContentId","_setTabBodyWrapperHeight","tabHeight","wrapper","_tabBodyWrapper","height","offsetHeight","_removeTabBodyWrapperHeight","tabHeader","idx","_getTabIndex","_onDestroy","updateActiveLink","_activeLinkChanged","_alignInkBar","activeTab","_tabLinks","_activeLinkElement","overArg","getPrototypeOf","isFunction","RenderType_MatOption","View_MatOption_0","RenderType_MatPseudoCheckbox","View_MatPseudoCheckbox_0","_angular_material_core__WEBPACK_IMPORTED_MODULE_1__","_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_3__","_angular_common__WEBPACK_IMPORTED_MODULE_4__","_angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_5__","encapsulation","styles","View_MatOption_1","_l","state","_ck","_v","_co","component","_animationMode","ngIf","trigger","_getHostElement","unbounded","baseAssignValue","arrayFilter","stubArray","nativeGetSymbols","getOwnPropertySymbols","symbol","isMasked","toSource","reIsHostCtor","funcProto","reIsNative","RegExp","MatSidenavModule","MAT_DRAWER_DEFAULT_AUTOSIZE","MatDrawerContent","MatDrawer","MatDrawerContainer","MatSidenavContent","MatSidenav","MatSidenavContainer","tslib__WEBPACK_IMPORTED_MODULE_13__","throwMatDuplicatedDrawerError","_container","_contentMarginChanges","_focusTrapFactory","_focusMonitor","_platform","_doc","_elementFocusedBeforeDrawerWasOpened","_enableAnimations","_mode","_disableClose","_autoFocus","_animationStarted","_animationState","openedChange","onPositionChanged","_modeChanged","_opened","_isFocusTrapEnabled","_focusTrap","_trapFocus","_restoreFocus","disableClose","close","o","mode","autoFocus","focusInitialElementWhenReady","hasMovedFocus","activeEl","HTMLElement","focusVia","_openedVia","enabled","isBrowser","destroy","toggle","open","openedVia","isOpen","_onAnimationStart","_onAnimationEnd","defaultAutosize","backdropClick","_doCheckSubject","_contentMargins","right","_validateDrawers","_updateContentMargins","_autosize","_start","_end","_backdropOverride","_drawers","drawer","_watchDrawerToggle","_watchDrawerPosition","_watchDrawerMode","_isDrawerOpen","_isPushed","_setContainerClass","onMicrotaskEmpty","isAdd","_right","_left","_onBackdropClicked","_closeModalDrawer","_canHaveBackdrop","_isShowingBackdrop","_width","container","_fixedInViewport","_fixedTopGap","_fixedBottomGap","getRawTag","objectToString","Stack","arrayEach","assignValue","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","initCloneArray","initCloneByTag","initCloneObject","isMap","cloneableTags","isFlat","isFull","isArr","isFunc","subValue","keysFunc","props","WeakMap","MatSortModule","MatSortHeader","MatSortHeaderIntl","MAT_SORT_HEADER_INTL_PROVIDER_FACTORY","MatSort","_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_2__","sortables","start","_direction","getSortInvalidDirectionError","_disableClear","register","sortable","deregister","delete","getNextSortDirection","disableClear","sortOrder","sortDirectionCycle","reverse","nextDirectionIndex","_markInitialized","sortButtonLabel","ngInjectableDef","token","parentIntl","_intl","_cdkColumnDef","_showIndicatorHint","_arrowDirection","_disableViewStateAnimation","arrowPosition","_rerenderSubscription","_isSorted","_updateArrowDirection","_viewState","_setAnimationTransitionState","_setIndicatorHintVisible","visible","_isDisabled","viewState","_getArrowDirectionState","_getArrowViewState","_getAriaSortAttribute","BlockedExtensionsValidation","nativeKeysIn","isProto","isKeyable","DataView","Set","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ArrayBuffer","ctorString","baseFindIndex","baseIsNaN","strictIndexOf","RenderType_MatAutocomplete","View_MatAutocomplete_0","_angular_common__WEBPACK_IMPORTED_MODULE_2__","View_MatAutocomplete_1","klass","ngClass","FOLDERS_API_ROUTES","ROOT_FOLDER","DRIVE_PAGE_NAMES","FOLDER","RECENT","TRASH","SHARES","STARRED","ROOT","SEARCH","DrivePage","viewName","folder","folderHash","hasActions","sortColumn","sortDirection","drive_page_DriveFolderPage","DriveFolderPage","RECENT_PAGE","disableSort","SEARCH_PAGE","SHARES_PAGE","TRASH_PAGE","STARRED_PAGE","ROOT_FOLDER_PAGE","FOLDER_PAGE","__assign","assign","s","n","events_RecentEntriesPageOpened","RecentEntriesPageOpened","queryParams","orderBy","recentOnly","events_FolderPageOpened","FolderPageOpened","events_SharesFolderOpened","SharesFolderOpened","sharedOnly","events_TrashPageOpened","TrashPageOpened","deletedOnly","events_SearchPageOpened","SearchPageOpened","events_StarredPageOpened","StarredPageOpened","starredOnly","EntriesSelectedViaDrag","EntrySelectedViaContextMenu","EntryTapped","ctrlKey","EntryDoubleTapped","FileDeleteSuccess","deletedFiles","EntryContextMenuOpened","NewFolderCreated","EntryRenamed","newName","StartedDragging","StoppedDragging","MoveEntriesSuccess","destination","MoveEntriesFailed","messages","TrashedEntriesDeleteSuccess","TrashedEntriesRestoreSuccess","NotEnoughSpaceError","UserSpaceUsageChanged","BreakpointChanged","status","LoadUserFolders","LoadUserSpaceUsage","BuildFolderTree","folders","OpenFolder","OpenSearchPage","SelectEntries","SelectAllEntries","DeselectAllEntries","DeleteSelectedEntries","OpenUploadsPanel","CloseUploadsPanel","AddEntries","MoveEntries","OpenDialog","dialog","config","OpenConfirmDialog","confirmAction","SetViewMode","ToggleDetailsSidebar","ToggleSidebar","UploadFiles","files","RestoreTrashedEntries","DeleteTrashedEntriesForever","EmptyTrash","OpenFilePreview","DownloadEntries","link","password","AddStar","RemoveStar","RemoveEntries","LoadMoreEntries","loadMore","ReloadPageEntries","CopySelectedEntries","OpenUploadWindow","ShowLoadingToast","HideLoadingToast","ResetState","UpdateEntries","SetCurrentUser","user","drive_context_menu_component_DriveContextMenuComponent","store","contextMenu","dispatch","DRIVE_CONTEXT_MENUS","file_preview_overlay_component_FilePreviewOverlayComponent","FilePreviewOverlayComponent","overlayRef","previewFiles","bindToDownload","previewContainer","closest","downloadSub","openContextMenu","optionsButton","getCurrent","closeOverlay","download","getAllEntries","LoadingToastMessages","folders_api_service_FoldersApiService","FoldersApiService","http","getAll","GET_ALL","getAllForCurrentUser","parent_id","post","CREATE","getByHash","hash","core","app_http_client_service","current_user","drive_entry_api_service_DriveEntryApiService","DriveEntryApiService","getEntriesForFolder","getCurrentUserEntries","userId","rename","entryId","put","restore","emptyTrash","moveEntries","addStar","removeStar","getSpaceUsage","drive_urls_service_DriveUrlsService","DriveUrlsService","driveRoot","DRIVE_STATE_MODEL_DEFAULTS","isMobile","activePage","folderTree","flatFolders","userFoldersLoaded","selectedEntries","dragging","loading","uploadsPanelOpen","viewMode","detailsVisible","sidebarOpen","spaceUsage","available","used","meta","currentPage","lastPage","local_storage_service_LocalStorage","LocalStorage","storage","localStorageAvailable","localStorage","defaultValue","JSON","parse","getItem","setItem","stringify","removeItem","drive_upload_validator_extends","drive_upload_validator_DriveUploadValidator","DriveUploadValidator","DEFAULT_MAX_FILE_SIZE_MB","initValidations","file_size_validation","maxSize","getMaxFileSize","allowedExtensions","getAllowedExtensions","blockedExtensions","getBlockedExtensions","allowed_extensions_validation","blocked_extensions_validation","convertToBytes","getJson","settings_service","toast_service","translations_service","upload_validator","drive_state_assign","drive_state_DriveState","DriveState","foldersApi","entriesApi","router","driveUrls","uploads","localStore","validator","uploadInputConfig","DriveState_1","activePageName","userFolders","selectedEntryIds","selectedEntry","selectedEntryOrActiveFolder","selectedEntryParent","anythingSelected","allSelectedEntriesStarred","every","tags","onlyFoldersSelected","entriesEmpty","multipleEntriesSelected","activeFolder","selectedFolderId","detailsOpen","canLoadMoreEntries","userSpaceUsed","userSpaceAvailable","spaceUsedPercent","spaceUsed","spaceAvail","userHasPermission","permission","folderUser","users","u","owns_entry","entry_permissions","userOwnsActiveFolder","userCanEditSelectedFolder","userCanEditSelectedEntries","edit","canUpload","userCanEditFolder","loadUserFolders","ctx","operators_tap","response","buildFolderTree","action","hashTable","tree","len","getState","parent_1","patchState","loadDriveEntries","oldState","newState","orderDir","query","transformQueryParams","concat","last_page","current_page","openFolder","currentFolder","title","ok","navigate","openSearchPage","oldParams","selectSnapshot","ngxs_router_plugin","isEqual_default","selectEntries","deselectAllEntries","entryTapped","current","alreadySelected","findIndex","curr","entryDoubleTapped","deleteSelectedEntries","entryIds","actions","fileContextMenuOpened","newFolderCreated","newFolderId","entryRenamed","startedDragging","stoppedDragging","movieEntries","minimal","finalize","moveEntriesSuccess","toggleViewMode","toggleDetailsSidebar","toggleSidebar","addEntries","currentEntries","newEntries","newSize","sum","file_size","uploadFiles","enoughSpaceLeftToUpload","parentId","httpParams","parent","newEntry","flatFolders_1","f","deleteTrashedEntriesForever","deleteForever","restoreTrashedEntries","restoredEntries","removeTag","removeSelectedEntries","copySelectedEntries","copyEntries","openUploadWindow","directory","open_upload_window","loadUserSpaceUsage","updateEntries","updatedEntry","breakpointChanged","setCurrentUser","resetState","setState","folderId","tslib_es6","ngxs_store","cancelUncompleted","User","Boolean","overlay_handler_OverlayHandler","OverlayHandler","actions$","panelClass","donwlod_handler_DownloadHandler","DownloadHandler","url","getDownloadUrl","href","click","hashes","getEntryHashes","base","getBaseUrl","shareable_links_api_service_ShareableLinksApiService","ShareableLinksApiService","findByEntryId","findByHash","update","checkPassword","linkId","importEntry","share_link_state_assign","LoadShareableLink","UpdateShareableLink","CreateShareableLink","DeleteShareableLink","ToggleOptionsPanel","LinkCopySuccess","ResetShareLinkState","defaultState","optionsPanelVisible","backendErrors","linkOptions","allowDownload","allowEdit","expiresAt","share_link_state_ShareLinkState","ShareLinkState","linksApi","optionsVisible","createShareableLink","entry_id","errorResponse","updateLink","loadShareableLink","cachedLink","autoCreate","deleteShareableLink","toggleOptionsPanel","resetShareLinkState","LoadingToastComponent","toast_handler_ToastHandler","ToastHandler","toast","entriesDeleted","entriesStarred","entriesUnstarred","entriesMoveFailed","folderCreated","entriesMoved","entriesDeletedForever","entriesRestoredFromTrash","linkCopiedToClipboard","notEnoughSpace","loadingToast","onAction","toastRef","openComponent","duration","dismiss","uploads_panel_component_UploadsPanelComponent","UploadsPanelComponent","activeUploads","zone","minimized$","BehaviorSubject","reset","toggleMinimized","trackById","upload","overlayConfig","hasBackdrop","bottom","mobilePosition","upload_panel_handler_UploadPanelHandler","UploadPanelHandler","overlayPanel","openUploadsPanel","closeUploadsPanel","userChanged","uploadPanelRef","dialog_handler_DialogHandler","DialogHandler","openConfirmDialog","confirm_modal_component","beforeClose","confirmed","reset_scroll_handler_ResetScrollHandler","domCache","scrollCont","scrollTo","page_change_handler_PageChangeHandler","page_load_handler_PageLoadHandler","PageLoadHandler","urlAfterRedirects","isLoggedIn","getPageLoadAction","getPageUriParams","pageName","search","firstChild","parts","x","remove_star_handler_RemoveStarHandler","STATE_HANDLERS","ɵ0","ɵ1","ext","DriveModule","injector","handler","link_preview_password_panel_component_LinkPreviewPasswordPanelComponent","LinkPreviewPasswordPanelComponent","links","passwordControl","fesm5_forms","passwordError$","passwordValid","submitPassword","handlePasswordCheck","matches","RenderType_LinkPreviewPasswordPanelComponent","View_LinkPreviewPasswordPanelComponent_1","translate_directive","View_LinkPreviewPasswordPanelComponent_0","icon_typings_index_ngfactory","icon_es5","svgIcon","en","$event","ad","onSubmit","onReset","ngSubmit","onTouched","_compositionStart","_compositionEnd","p0_0","form","common","button_typings_index_ngfactory","button_es5","platform_es5","a11y_es5","animations","color","inline","ngClassUntouched","ngClassTouched","ngClassPristine","ngClassDirty","ngClassValid","ngClassInvalid","ngClassPending","SUPPORTED_ENTRY_TYPES","file_icon_component_FileIconComponent","FileIconComponent","RenderType_FileIconComponent","View_FileIconComponent_0","file_preview_toolbar_component_FilePreviewToolbarComponent","FilePreviewToolbarComponent","showLogo","disableDownload","showCloseButton","downloadFiles","CURRENT_PREVIEW_FILE","base_file_preview_BaseFilePreview","BaseFilePreview","transformer","sanitizer","getSrc","getSafeSrc","bypassSecurityTrustResourceUrl","getContents","responseType","default_preview_component_extends","DefaultPreviewComponent","PREVIEW_URL_TRANSFORMER","text_preview_component_extends","text_preview_component_TextPreviewComponent","TextPreviewComponent","audio_preview_component_extends","AudioPreviewComponent","invalidMedia","canPlayVideo","player","src","play","canPlayType","mime","playerEl","video_preview_component_extends","VideoPreviewComponent","image_preview_component_extends","ImagePreviewComponent","pdf_preview_component_extends","PdfPreviewComponent","AVAILABLE_PREVIEWS","available_previews_DefaultPreviews","video","audio","image","pdf","preview_files_service_PreviewFilesService","PreviewFilesService","availablePreviews","portal","previewUriTransformer","Subject","pagination","getPortal","showNext","haveNext","updateMeta","updatePortal","showPrevious","havePrevious","newPointer","oldPointer","pointer","total","portal_es5","createInjector","injectionTokens","setPreviewUriTransformer","RenderType_FilePreviewToolbarComponent","View_FilePreviewToolbarComponent_1","View_FilePreviewToolbarComponent_3","context","View_FilePreviewToolbarComponent_2","View_FilePreviewToolbarComponent_5","View_FilePreviewToolbarComponent_4","onClick","button","metaKey","shiftKey","fesm5_router","routerLink","View_FilePreviewToolbarComponent_0","RenderType_AdHostComponent","View_AdHostComponent_0","PreviewContainerComponent","comp","instance","RenderType_PreviewContainerComponent","View_PreviewContainerComponent_2","View_PreviewContainerComponent_1","attached","View_PreviewContainerComponent_0","link_preview_container_component_LinkPreviewContainerComponent","LinkPreviewContainerComponent","route","link$","entries$","passwordPanelVisible$","withEntries","togglePasswordPanel","showPreview","import","urlTransformer","bind","setEntries","ent","setValidPassword","RenderType_LinkPreviewContainerComponent","View_LinkPreviewContainerComponent_1","View_LinkPreviewContainerComponent_3","_haltDisabledEvents","View_LinkPreviewContainerComponent_4","View_LinkPreviewContainerComponent_2","ad_host_component","lazy_loader_service","tmp_1_0","allow_download","entryAlreadyImported$","View_LinkPreviewContainerComponent_0","ngIfElse","LinkPreviewContainerComponentNgFactory","SEARCH_FILE_TYPES","main_searchbar_component_MainSearchbarComponent","MainSearchbarComponent","driveApi","defaultResults","formControl","results","displayFn","lastQuery","setDefaultResults","debounceTime","distinctUntilChanged","q","switchMap","executeAction","resetForm","of","per_page","entryType","RenderType_MainSearchbarComponent","View_MainSearchbarComponent_1","View_MainSearchbarComponent_3","$implicit","display_name","View_MainSearchbarComponent_4","updated_at","View_MainSearchbarComponent_2","core_typings_index_ngfactory","core_es5","View_MainSearchbarComponent_0","formatted_date_pipe","autocomplete_es5","overlay_es5","bidi_es5","scrolling_es5","p1_0","autocomplete_typings_index_ngfactory","ngForOf","autocompleteDisabled","upload_button_directive_UploadButtonDirective","UploadButtonDirective","filesSelected","crupdate_folder_dialog_component_CrupdateFolderDialogComponent","CrupdateFolderDialogComponent","dialogRef","changeDetection","folderName","errors","confirm","setErrors","sidebar_action_buttons_component_SidebarActionButtonsComponent","SidebarActionButtonsComponent","openNewFolderDialog","Observable","DRIVE_UPLOAD_INPUT_CONFIG","RenderType_SidebarActionButtonsComponent","View_SidebarActionButtonsComponent_0","canUpload$","base_drop_target_BaseDropTarget","BaseDropTarget","subs","onDragStart","onDragEnd","enter","fromEvent","onDragEnter","leave","onDragLeave","canDrop","removeDragOverClass","sub","folder_drop_target_directive_extends","folder_drop_target_directive_FolderDropTargetDirective","FolderDropTargetDirective","tree_es5_FlatTreeControl","FlatTreeControl","getLevel","isExpandable","getDescendants","dataNode","dataNodes","expandAll","expansionModel","BaseTreeControl","collections_es5","expand","collapse","isExpanded","toggleDescendants","collapseDescendants","expandDescendants","collapseAll","toBeProcessed","CdkTreeNodeDef","tree_es5_CdkTree","CdkTree","_differs","_levels","viewChange","end","MAX_VALUE","_dataSource","dataSource","_switchDataSource","_dataDiffer","trackBy","treeControl","_nodeOutlet","viewContainer","_dataSubscription","defaultNodeDefs","_nodeDefs","def","when","_defaultNodeDef","_observeRenderChanges","takeUntil","renderNodeChanges","dataDiffer","parentData","diff","forEachOperation","adjustedPreviousIndex","currentIndex","previousIndex","insertNode","view","move","_getNodeDef","first","nodeDef","nodeData","node","level","createEmbeddedView","tree_es5_CdkTreeNode","mostRecentTreeNode","CdkTreeNode","_tree","role","_setRoleFromData","getChildren","childrenNodes","_setRoleFromChildren","tree_es5_CdkTreeNodePadding","CdkTreeNodePadding","_treeNode","_renderer","_indent","_setPadding","_level","coercion_es5","_paddingIndent","nodeLevel","padding","tree_es5_CdkTreeNodeToggle","CdkTreeNodeToggle","_recursive","_toggle","recursive","CdkTreeModule","MatTreeNodeOutlet","_CdkTreeNodeDef","tree_es5_MatTreeNode","MatTreeNode","tree_es5_MatTreeNodeDef","MatTreeNodeDef","tree_es5_MatTreeNodePadding","MatTreeNodePadding","tree_es5_MatTree","MatTree","tree_es5_MatTreeNodeToggle","MatTreeNodeToggle","MatTreeModule","tree_es5_MatTreeFlattener","MatTreeFlattener","transformFunction","_flattenNode","resultNodes","parentMap","flatNode","_flattenChildren","take","child","childParentMap","flattenNodes","structuredData","expandFlattenedNodes","nodes","currentExpand","tree_es5_MatTreeFlatDataSource","MatTreeFlatDataSource","treeFlattener","_flattenedData","_expandedData","collectionViewer","merge","ContextMenuDirective","_availableMenus","disableContextMenu","availableMenus","getMenuComponent","getMenuData","ContextMenuRef","attachments","backdropElement","contextMenuElement","CONTEXT_MENU_DATA","context_menu_service_ContextMenu","ContextMenu","events","createOverlay","bindEventsToOverlay","removeLastOrigin","getMenuPositionStrategy","backdropClass","createOriginFromEvent","primary","lastOrigin","EventTarget","clientY","offsetY","clientX","offsetX","AVAILABLE_CONTEXT_MENUS","RenderType_MatTree","View_MatTree_0","folders_tree_component_FoldersTreeComponent","FoldersTreeComponent","expanded","movingEntries","folderSelected","selectFolder","selectedFolder","nodeIsDisabled","folders_tree_service_FoldersTreeService","FoldersTreeService","createTreeFlattener","createTreeControl","createTreeDataSource","bindToStore","flattener","control","userFolders$","expandable","RenderType_FoldersTreeComponent","View_FoldersTreeComponent_1","indent","View_FoldersTreeComponent_0","RenderType_MatProgressBar","View_MatProgressBar_0","ngStyle","_bufferTransform","_primaryTransform","progressbarId","_rectangleFillValue","available_space_indicator_component_AvailableSpaceIndicatorComponent","AvailableSpaceIndicatorComponent","RenderType_AvailableSpaceIndicatorComponent","View_AvailableSpaceIndicatorComponent_1","progress_bar_es5","spaceUsedPercent$","spaceUsed$","spaceAvailable$","View_AvailableSpaceIndicatorComponent_0","formatted_file_size_pipe","sidebar_component_SidebarComponent","SidebarComponent","urls","getRootFolder","RenderType_SidebarComponent","View_SidebarComponent_0","modal_service","routerLinkActiveOptions","routerLinkActive","linksWithHrefs","exact","custom_menu_component_ngfactory","custom_menu_component","itemClass","shouldHide","FileThumbnailComponent","getPreviewUrl","getFolderIcon","RenderType_FileThumbnailComponent","View_FileThumbnailComponent_1","View_FileThumbnailComponent_2","View_FileThumbnailComponent_0","details_panel_component_DetailsPanelComponent","DetailsPanelComponent","openLocation","RenderType_DetailsPanelComponent","View_DetailsPanelComponent_3","View_DetailsPanelComponent_4","_handleTouchend","tooltip_es5","avatar","View_DetailsPanelComponent_5","View_DetailsPanelComponent_2","tmp_7_0","parent$","created_at","View_DetailsPanelComponent_1","View_DetailsPanelComponent_6","View_DetailsPanelComponent_0","entry$","details_sidebar_component_DetailsSidebarComponent","DetailsSidebarComponent","RenderType_DetailsSidebarComponent","View_DetailsSidebarComponent_2","View_DetailsSidebarComponent_1","View_DetailsSidebarComponent_3","activePage$","View_DetailsSidebarComponent_0","drive_hammer_interactions_directive_DriveHammerInteractionsDirective","DriveHammerInteractionsDirective","dragSelect","dragEntry","bindToHammer","removeSelectBox","createHammerManager","onPanStart","onPan","onPanEnd","onTap","onDoubleTap","hammerManager","Hammer","Manager","filesCont","tap","Tap","pan","Pan","enable","doubleTap","taps","recognizeWith","on","gridElement","getEntryEl","panService","entry_1","getEntryByEl","entryEl","srcEvent","dataset","drive_dom_cache_service_DriveDomCacheService","DriveDomCacheService","files_drag_select_service_assign","files_drag_select_service_FilesDragSelectService","FilesDragSelectService","initial","y","cacheClientRects","createSelectBox","bindScroll","hammerToRelative","selectBox","lastPanEvent","resizeBox","dispatchSelectedAction","unbindScroll","newPos","getNewSelectorPosition","scrollAndRepositionSelector","selectIntersectingElements","tmp","x1","y1","x2","y2","reachedAreaEdge","area","rectToRelative","filesContRect","edge","scrollBy","scrollDiff","scrollValue","abs","scrollHeight","applyPosition","selectedBoxRect","getGridElements","gridItem","rect","center","scrollContRect","from","querySelectorAll","scrollListener","drag_entry_service_DragEntryService","DragEntryService","dragPreview","entry_breadcrumbs_component_assign","entry_breadcrumbs_component_EntryBreadcrumbsComponent","EntryBreadcrumbsComponent","breadcrumb","combineLatest","combined","bindToActivePage","openPage","generateBreadCrumb","breadcrumbs","getFolderRootBreadcrumb","folderPath","getBreadcrumbForFolder","allFolders","userOwnsFolder","RenderType_EntryBreadcrumbsComponent","View_EntryBreadcrumbsComponent_2","View_EntryBreadcrumbsComponent_3","View_EntryBreadcrumbsComponent_1","last","View_EntryBreadcrumbsComponent_0","translate_pipe","DriveToolbarComponent","RenderType_DriveToolbarComponent","View_DriveToolbarComponent_0","drive_context_actions_DriveContextActions","DriveContextActions","getActions","updateStatus","getSelectedEntries","allStarred","trash_actions_extends","noopTrue","trash_actions_TrashActions","TrashActions","icon","showInCompact","execute","bodyBold","base_dialog_BaseDialog","BaseDialog","addSubs","share_link_dialog_component_ShareLinkDialogComponent","ShareLinkDialogComponent","shareableLink$","bindToOptionsPanelToggle","bindToLinkChange","deleteLink","copyLinkToClipboard","focusInput","copy_to_clipboard_default","shareLink","network","innerWidth","innerHeight","mediaItem","generateSocialShareUrl","shareLinkSocially","getElementById","DRIVE_ENTRY_FULL_PERMISSIONS","shares_api_service_assign","shares_api_service_SharesApiService","SharesApiService","updateUsers","shareEntries","detachUser","share_dialog_state_assign","SetInitialUsers","UpdateUserPermissions","permissions","RemoveUser","SetUsers","SaveChanges","share_dialog_state_ResetState","ShareEntries","payload","ShareEntriesFailed","share_dialog_state_ShareDialogState","ShareDialogState","sharesApi","usersWithAccess","dirty","original","setInitialUsers","cloneDeep_default","uniqueUsers","uniqBy_default","varies","setUsers","updateUserPermissions","removeUser","saveChanges","newUsers","updateEntriesInDriveStore","updatedEntries","share_dialog_component_ShareDialogComponent","ShareDialogComponent","destroyed$","resetModel","bindToShareError","bindToShareModel","share","emails","shareModel","setErrorMessages","rename_entry_dialog_component_RenameEntryDialogComponent","RenameEntryDialogComponent","entryName","setValue","shares_actions_extends","shares_actions_noopTrue","shares_actions_SharesActions","SharesActions","shares","folder_actions_extends","folder_actions_noopTrue","folder_actions_FolderActions","FolderActions","separatorAfter","move_entries_dialog_component_MoveEntriesDialogComponent","MoveEntriesDialogComponent","failure","entry_actions_extends","entry_actions_noopTrue","entry_actions_EntryActions","EntryActions","folderIsSelected","trash_page_actions_extends","trash_page_actions_noopTrue","trash_page_actions_TrashPageActions","TrashPageActions","context_actions_container_component_ContextActionsContainerComponent","ContextActionsContainerComponent","compact","hasMoreActions$","subscription","setActions","openMoreActionsMenu","moreActionsButton","setActionsForEntry","RenderType_ContextActionsContainerComponent","View_ContextActionsContainerComponent_3","View_ContextActionsContainerComponent_4","View_ContextActionsContainerComponent_5","View_ContextActionsContainerComponent_2","View_ContextActionsContainerComponent_1","View_ContextActionsContainerComponent_6","View_ContextActionsContainerComponent_0","toolbar_actions_component_ToolbarActionsComponent","ToolbarActionsComponent","ToggleDetails","RenderType_ToolbarActionsComponent","View_ToolbarActionsComponent_0","activityOpen","AVAILABLE_SORTS","file_list_header_component_FileListHeaderComponent","FileListHeaderComponent","availableSorts","changeSort","changeDirection","sortIsActive","directionIsActive","getSortViewName","RenderType_FileListHeaderComponent","View_FileListHeaderComponent_1","_checkDisabled","_handleMouseEnter","menu_typings_index_ngfactory","menu_es5","_highlighted","_triggersSubmenu","View_FileListHeaderComponent_0","_handleMousedown","menu","items","lazyContent","tmp_0_0","menuOpen","sortColumn$","__awaiter","thisArg","_arguments","P","generator","reject","fulfilled","step","rejected","done","__generator","g","_","label","sent","trys","ops","verb","throw","return","iterator","op","pop","transformFileEntry","uploaded_file","fullPath","upload_dropzone_directive_UploadDropzoneDirective","UploadDropzoneDirective","filesDropped","disableDropzoneClick","disableDropzone","handleDragEnter","handleDragOver","handleDragLeave","handleDrop","handleClick","removeClassesFromDropzone","emitUploadEvent","dropzoneDisabled","dataTransfer","dropEffect","newEl","elementFromPoint","upload_dropzone_directive_generator","_b","kind","webkitGetAsEntry","_c","_d","_e","_f","_g","isDirectory","readDirRecursive","childEntry","createReader","readEntries","readUploadedFolders","hasFiles","types","infinite_scroll_InfiniteScroll","InfiniteScroll","threshold","capture","onScroll","canLoadMore","isLoading","parseInt","loadMoreItems","drive_infinite_scroll_directive_extends","drive_infinite_scroll_directive_DriveInfiniteScrollDirective","DriveInfiniteScrollDirective","toggle_selected_class_directive_ToggleSelectedClassDirective","ToggleSelectedClassDirective","els","entry_drag_preview_component_EntryDragPreviewComponent","EntryDragPreviewComponent","RenderType_EntryDragPreviewComponent","View_EntryDragPreviewComponent_3","View_EntryDragPreviewComponent_2","View_EntryDragPreviewComponent_1","View_EntryDragPreviewComponent_0","drive_component_DriveComponent","DriveComponent","breakpoints","subscriptions","setViewMode","cacheDemoElements","observeBreakpointChanges","getModel","filesContainer","scrollContainer","observe","RenderType_DriveComponent","View_DriveComponent_0","material_navbar_component_ngfactory","material_navbar_component","menuPosition","showToggleButton","toggleButtonClick","sidenav_typings_index_ngfactory","sidenav_es5","gridItems","loading_indicator_component_ngfactory","loading_indicator_component","isVisible","isMobile$","sidebarOpen$","activityOpen$","loading$","fixedInViewport","fixedTopGap","fixedBottomGap","DriveComponentNgFactory","layout_es5","FilesGridItemComponent","driveEntry","RenderType_FilesGridItemComponent","View_FilesGridItemComponent_0","FilesGridComponent","RenderType_FilesGridComponent","View_FilesGridComponent_1","fileId","View_FilesGridComponent_0","ngForTrackBy","files_list_component_FilesListComponent","FilesListComponent","RenderType_FilesListComponent","View_FilesListComponent_1","table_es5","esm5_table_es5","View_FilesListComponent_2","View_FilesListComponent_3","sort_typings_index_ngfactory","sort_es5","View_FilesListComponent_4","View_FilesListComponent_5","View_FilesListComponent_6","View_FilesListComponent_7","View_FilesListComponent_8","View_FilesListComponent_9","table_typings_index_ngfactory","View_FilesListComponent_10","View_FilesListComponent_0","_contentColumnDefs","_contentRowDefs","_contentHeaderRowDefs","_contentFooterRowDefs","cell","headerCell","footerCell","columns","NoRecentEntriesComponent","RenderType_NoRecentEntriesComponent","View_NoRecentEntriesComponent_0","NoTrashedEntriesComponent","RenderType_NoTrashedEntriesComponent","View_NoTrashedEntriesComponent_0","NoStarredEntriesComponent","RenderType_NoStarredEntriesComponent","View_NoStarredEntriesComponent_0","NoSharedEntriesComponent","RenderType_NoSharedEntriesComponent","View_NoSharedEntriesComponent_0","NoSearchEntriesComponent","RenderType_NoSearchEntriesComponent","View_NoSearchEntriesComponent_0","upload_dropzone_component_UploadDropzoneComponent","UploadDropzoneComponent","uploadConfig","RenderType_UploadDropzoneComponent","View_UploadDropzoneComponent_0","NoFolderEntriesComponent","RenderType_NoFolderEntriesComponent","View_NoFolderEntriesComponent_0","entries_container_component_EntriesContainerComponent","EntriesContainerComponent","keybinds","tabindex","listenOn","addWithPreventDefault","Keycodes","keybinds_service_Keybinds","Keybinds","bindings","keybind","callback","parseKeybindString","keybindString","executeBindings","binding","bindingMatches","ctrl","shift","parsed","part","RenderType_EntriesContainerComponent","View_EntriesContainerComponent_1","View_EntriesContainerComponent_2","View_EntriesContainerComponent_4","View_EntriesContainerComponent_5","View_EntriesContainerComponent_6","View_EntriesContainerComponent_7","View_EntriesContainerComponent_8","View_EntriesContainerComponent_9","View_EntriesContainerComponent_3","ngSwitch","ngSwitchCase","activePageName$","View_EntriesContainerComponent_0","viewMode$","noEntries","EntriesContainerComponentNgFactory","RenderType_TextPreviewComponent","View_TextPreviewComponent_0","TextPreviewComponentNgFactory","platform_browser","RenderType_DefaultPreviewComponent","View_DefaultPreviewComponent_0","DefaultPreviewComponentNgFactory","RenderType_VideoPreviewComponent","View_VideoPreviewComponent_1","View_VideoPreviewComponent_0","VideoPreviewComponentNgFactory","RenderType_ImagePreviewComponent","View_ImagePreviewComponent_0","ImagePreviewComponentNgFactory","RenderType_PdfPreviewComponent","View_PdfPreviewComponent_0","PdfPreviewComponentNgFactory","RenderType_AudioPreviewComponent","View_AudioPreviewComponent_1","View_AudioPreviewComponent_0","AudioPreviewComponentNgFactory","sharing_permissions_button_component_assign","sharing_permissions_button_component_SharingPermissionsButtonComponent","SharingPermissionsButtonComponent","overallPermission","selectPermission","RenderType_SharingPermissionsButtonComponent","View_SharingPermissionsButtonComponent_1","View_SharingPermissionsButtonComponent_2","View_SharingPermissionsButtonComponent_3","View_SharingPermissionsButtonComponent_4","View_SharingPermissionsButtonComponent_0","entries_access_table_component_EntriesAccessTableComponent","EntriesAccessTableComponent","newPermissions","trackByUser","RenderType_EntriesAccessTableComponent","definitions","expr","timings","View_EntriesAccessTableComponent_2","View_EntriesAccessTableComponent_3","View_EntriesAccessTableComponent_1","View_EntriesAccessTableComponent_0","RenderType_ShareDialogComponent","View_ShareDialogComponent_1","View_ShareDialogComponent_2","View_ShareDialogComponent_0","dialog_es5","chip_input_component_ngfactory","chip_input_component","ShareDialogComponentNgFactory","link_options_component_LinkOptionsComponent","LinkOptionsComponent","date","time","passwordVisible","expirationVisible","getPayload","hydrateExpirationForm","expires_at","patchValue","allow_edit","getMinDate","Date","toJSON","RenderType_LinkOptionsComponent","View_LinkOptionsComponent_1","View_LinkOptionsComponent_2","View_LinkOptionsComponent_0","checkbox_typings_index_ngfactory","checkbox_es5","tmp_49_0","backendErrors$","indeterminate","checked","labelPosition","RenderType_ShareLinkDialogComponent","display","overflow","View_ShareLinkDialogComponent_1","View_ShareLinkDialogComponent_0","optionsVisible$","ShareLinkDialogComponentNgFactory","RenderType_DriveContextMenuComponent","View_DriveContextMenuComponent_0","DriveContextMenuComponentNgFactory","RenderType_CrupdateFolderDialogComponent","View_CrupdateFolderDialogComponent_1","View_CrupdateFolderDialogComponent_0","CrupdateFolderDialogComponentNgFactory","RenderType_RenameEntryDialogComponent","View_RenameEntryDialogComponent_1","View_RenameEntryDialogComponent_0","RenameEntryDialogComponentNgFactory","UploadsPanelItemComponent","RenderType_UploadsPanelItemComponent","View_UploadsPanelItemComponent_2","eta","View_UploadsPanelItemComponent_3","View_UploadsPanelItemComponent_5","View_UploadsPanelItemComponent_6","cancel","View_UploadsPanelItemComponent_4","completed","View_UploadsPanelItemComponent_1","pending","hasError","progress","filename","View_UploadsPanelItemComponent_0","meta$","RenderType_UploadsPanelComponent","View_UploadsPanelComponent_1","View_UploadsPanelComponent_2","getCompletedCount","View_UploadsPanelComponent_3","View_UploadsPanelComponent_4","View_UploadsPanelComponent_5","View_UploadsPanelComponent_0","getPendingCount","UploadsPanelComponentNgFactory","upload_queue_service","RenderType_MoveEntriesDialogComponent","View_MoveEntriesDialogComponent_0","selectedEntries$","MoveEntriesDialogComponentNgFactory","RenderType_FilePreviewOverlayComponent","View_FilePreviewOverlayComponent_0","FilePreviewOverlayComponentNgFactory","overlay_panel_ref","overlay_panel_data","BASE_SIZE","_MatProgressSpinnerMixinBase","MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS","diameter","progress_spinner_es5_MatSpinner","MatSpinner","animationMode","MatProgressSpinner","_fallbackAnimation","_noopAnimations","_forceAnimations","_diameter","EDGE","TRIDENT","strokeWidth","diameters","_attachStyleNode","_strokeWidth","newValue","viewBox","_circleRadius","PI","_strokeCircumference","styleTag","head","sheet","insertRule","_getAnimationText","MatProgressSpinnerModule","RenderType_MatSpinner","View_MatSpinner_1","_strokeDashOffset","_circleStrokeWidth","View_MatSpinner_2","View_MatSpinner_0","_viewBox","RenderType_LoadingToastComponent","View_LoadingToastComponent_0","LoadingToastComponentNgFactory","snack_bar_es5","UploadsModule","DriveRoutingModule","FilePreviewModule","SharingModule","DriveModuleNgFactory","router_ngfactory","index_ngfactory","confirm_modal_component_ngfactory","typings_index_ngfactory","tooltip_typings_index_ngfactory","fesm5_http","observers_es5","breakpoints_service","select_es5","overlay_panel_service","custom_scrollbar_module","confirm_modal_module","translations_module","ui_module","slide_toggle_es5","tabs_es5","chips_es5","chip_input_module","form_field_es5","canActivate","auth_guard_service","keycodes_es5","getSymbols","global","ChipInputModule","cloneArrayBuffer","dataView","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","UniqueSelectionDispatcher","DataSource","SelectionModel","rxjs__WEBPACK_IMPORTED_MODULE_3__","_angular_core__WEBPACK_IMPORTED_MODULE_4__","initiallySelectedValues","_emitChanges","_selection","_deselectedToEmit","_selectedToEmit","changed","onChange","_markSelected","_verifyValueAssignment","_emitChangeEvent","_unmarkSelected","_unmarkAll","isEmpty","hasValue","isMultipleSelection","added","_listeners","notify","listener","listen","registered","webpackPolyfill","deprecate","paths","l","MatProgressBarModule","MAT_PROGRESS_BAR_LOCATION","MatProgressBar","_angular_common__WEBPACK_IMPORTED_MODULE_3__","_MatProgressBarMixinBase","pathname","location","_bufferValue","clamp","bufferValue","baseIsMatch","getMatchData","matchData","OverlayPanelRef","rxjs__WEBPACK_IMPORTED_MODULE_0__","emitValue","valueChanged","getPanelEl","reFlags","regexp","lastIndex","baseTimes","isTypedArray","inherited","isArg","isBuff","isType","skipIndexes","RenderType_MatSidenavContent","View_MatSidenavContent_0","RenderType_MatSidenav","View_MatSidenav_0","RenderType_MatSidenavContainer","View_MatSidenavContainer_0","_angular_material_sidenav__WEBPACK_IMPORTED_MODULE_1__","_angular_cdk_scrolling__WEBPACK_IMPORTED_MODULE_6__","box-shadow","View_MatSidenavContainer_1","View_MatSidenavContainer_2","scrollable","baseIsTypedArray","nodeIsTypedArray","typedArrayTags","noop","objectCreate","proto","baseToString","OverlayPanel","_angular_cdk_portal__WEBPACK_IMPORTED_MODULE_0__","_overlay_panel_ref__WEBPACK_IMPORTED_MODULE_1__","_overlay_panel_data__WEBPACK_IMPORTED_MODULE_2__","_angular_cdk_overlay__WEBPACK_IMPORTED_MODULE_4__","_breakpoints_service__WEBPACK_IMPORTED_MODULE_5__","DEFAULT_CONFIG","closeOnBackdropClick","userConfig","getPositionStrategy","overlayPanelRef","getGlobalPositionStrategy","getConnectedPositionStrategy","getPositionOption","centerHorizontally","centerVertically","global_1","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","equalByTag","equalObjects","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","arrayPush","symbolsFunc","stackClear","stackDelete","stackGet","stackHas","stackSet","upload_queue_item_UploadQueueItem","UploadQueueItem","random_string","canceled$","addError","default_upload_validator_DefaultUploadValidator","DefaultUploadValidator","upload_queue_service_UploadQueueService","UploadQueueService","api","defaultValidator","uploads$","totalProgress$","getAllCompleted","queueItem","fileEntry","updateTotalProgress","c","totalProgress","transformUploads","requests","handleUploadEvent","handleUploadFailure","upload_progress_event","COMPLETED","updateProgress","speed","totalBytes","completedBytes","completeUpload","errorUpload","activeUpload","validate","failed","PROGRESS","uploads_api_service","baseHasIn","hasPath","writable","baseIndexOf","isNew","MatSlideToggleModule","MatSlideToggle","MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS","disableToggleValue","disableDragValue","_uniqueId","_checked","_dragging","ariaLabel","ariaLabelledby","toggleChange","dragChange","monitor","focusOrigin","_onInputFocusChange","stopMonitoring","_onChangeEvent","_onInputClick","_focusRipple","fadeOut","_ripple","launch","persistent","_getDragPercentage","distance","percentage","_thumbBarWidth","_previousChecked","_onDragStart","thumbEl","_thumbEl","_thumbBarEl","clientWidth","_onDrag","_dragPercentage","deltaX","_onDragEnd","newCheckedValue","_onLabelTextChange","arg","noCustomizer","RenderType_MatSortHeader","View_MatSortHeader_0","opacity","steps","selector","optional","baseKeysIn","freeProcess","process","require","OVERLAY_PANEL_DATA","arraySome","isPartial","arrLength","othLength","arrValue","othValue","compared","othIndex","RenderType_MatTable","View_MatTable_0","RenderType_MatHeaderRow","View_MatHeaderRow_0","RenderType_MatRow","View_MatRow_0","_angular_cdk_table__WEBPACK_IMPORTED_MODULE_3__","_rowOutlet","_headerRowOutlet","_footerRowOutlet","RenderType_ChipInputComponent","View_ChipInputComponent_0","View_ChipInputComponent_1","trailingIcon","removeIcon","at","invalid","ariaSelected","chipList","errorState","baseIteratee","baseUniq","MatFormFieldModule","MAT_FORM_FIELD_DEFAULT_OPTIONS","MatFormField","MatFormFieldControl","tslib__WEBPACK_IMPORTED_MODULE_2__","getMatFormFieldDuplicatedHintError","align","nextUniqueId$2","_MatFormFieldMixinBase","labelOptions","_defaults","_outlineGapCalculationNeeded","_showAlwaysAnimate","_subscriptAnimationState","_hintLabel","_hintLabelId","_labelId","_labelOptions","float","_animationsEnabled","appearance","_appearance","oldValue","updateOutlineGap","_hideRequiredMarker","_processHints","_connectionContainerRef","_validateControlChild","_validatePlaceholders","_syncDescribedByIds","_prefixChildren","_suffixChildren","_hintChildren","_errorChildren","_shouldForward","prop","_hasPlaceholder","_placeholderChild","_hasLabel","_labelChild","_shouldLabelFloat","_canLabelFloat","shouldLabelFloat","_shouldAlwaysFloat","_hideControlPlaceholder","_hasFloatingLabel","_getDisplayedMessages","_label","_validateHints","startHint_1","endHint_1","hint","hintLabel","startHint","endHint","labelEl","documentElement","startWidth","gapWidth","startEls","gapEls","containerStart","_getStartEnd","labelStart","labelWidth","outlineGapPadding","objProps","objLength","skipCtor","objCtor","othCtor","RenderType_MatChipList","View_MatChipList_0","MatSelectModule","MAT_SELECT_SCROLL_STRATEGY","MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY","MatSelect","_angular_cdk_a11y__WEBPACK_IMPORTED_MODULE_2__","_angular_cdk_collections__WEBPACK_IMPORTED_MODULE_4__","_angular_core__WEBPACK_IMPORTED_MODULE_7__","_angular_material_core__WEBPACK_IMPORTED_MODULE_8__","rxjs__WEBPACK_IMPORTED_MODULE_9__","rxjs__WEBPACK_IMPORTED_MODULE_10__","rxjs__WEBPACK_IMPORTED_MODULE_11__","rxjs_operators__WEBPACK_IMPORTED_MODULE_14__","rxjs_operators__WEBPACK_IMPORTED_MODULE_15__","rxjs_operators__WEBPACK_IMPORTED_MODULE_16__","rxjs_operators__WEBPACK_IMPORTED_MODULE_17__","rxjs_operators__WEBPACK_IMPORTED_MODULE_18__","_parentFormField","_scrollStrategyFactory","_panelOpen","_scrollTop","_destroy","_triggerFontSize","_optionIds","_transformOrigin","_panelDoneAnimating","_panelDoneAnimatingStream","_offsetY","_positions","_disableOptionCentering","_focused","optionSelectionChanges","_openedStream","_closedStream","_id","overlayDir","_initKeyManager","_resetOptions","_triggerRect","getComputedStyle","_calculateOverlayPosition","_highlightCorrectOption","fontSize","_isRtl","selectedOptions","viewValue","_handleOpenKeydown","_handleClosedKeydown","manager","hasDeselectedOptions_1","opt","previouslyFocusedIndex","_onFadeInDone","_onAttached","positionChange","_calculateOverlayOffsetX","_getPanelTheme","correspondingOption","withTypeAhead","_scrollActiveOptionIntoView","changedOrDestroyed","_onSelect","_setOptionIds","wasSelected","options_1","activeOptionIndex","_getItemHeight","_getOptionIndex","itemHeight","_getItemCount","panelHeight","maxScroll","selectedOptionOffset","scrollBuffer","_calculateOverlayScroll","_calculateOverlayOffsetY","_checkOverlayWithinViewport","_getAriaLabel","_getAriaLabelledby","_getAriaActiveDescendant","overlayRect","viewportSize","getViewportSize","isRtl","paddingWidth","SELECT_MULTIPLE_PANEL_PADDING_X","SELECT_PANEL_PADDING_X","group","leftOverflow","rightOverflow","round","optionOffsetFromPanelTop","optionHeightAdjustment","maxOptionsDisplayed","floor","topSpaceAvailable","bottomSpaceAvailable","panelHeightTop","panelHeightBottom","_adjustPanelUp","_adjustPanelDown","_getOriginBasedOnOption","distanceBelowViewport","distanceAboveViewport","baseMatches","baseMatchesProperty","identity","property","baseIsEqualDeep","reIsUint","FormattedDatePipe","_angular_common__WEBPACK_IMPORTED_MODULE_0__","_locale","angularPipe","timezone","locale","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","DataRowOutlet","HeaderRowOutlet","FooterRowOutlet","CdkTable","CdkCellDef","CdkHeaderCellDef","CdkFooterCellDef","CdkColumnDef","CdkHeaderCell","CdkFooterCell","CdkCell","CdkHeaderRowDef","CdkFooterRowDef","CdkRowDef","CdkCellOutlet","CdkHeaderRow","CdkFooterRow","CdkRow","CdkTableModule","_angular_core__WEBPACK_IMPORTED_MODULE_2__","_angular_cdk_collections__WEBPACK_IMPORTED_MODULE_3__","mixinHasStickyInput","class_1","_sticky","_hasStickyChanged","prevValue","hasStickyChanged","resetStickyChanged","_stickyEnd","_name","BaseCdkCell","BaseRowDef","_columnsDiffer","getColumnsDiff","extractCellTemplate","column","CdkHeaderRowDefBase","CdkFooterRowDefBase","_viewContainer","mostRecentCellOutlet","STICKY_DIRECTIONS","StickyStyler","isNativeHtmlTable","stickCellCss","_isBrowser","clearStickyPositioning","rows","stickyDirections","rows_1","row","ELEMENT_NODE","_removeStickyStyle","updateStickyColumns","stickyStartStates","stickyEndStates","hasStickyColumns","firstRow","numCells","cellWidths","_getCellWidths","startPositions","_getStickyStartColumnPositions","endPositions","_getStickyEndColumnPositions","rows_2","_addStickyStyle","stickRows","rowsToStick","stickyStates","stickyHeight","rowIndex","j","updateStickyFooterContainer","tableElement","tfoot","querySelector","stickyDirections_1","zIndex","_getCalculatedZIndex","dirValue","cssText","zIndexIncrements","STICKY_DIRECTIONS_1","firstRowCells","widths","nextPosition","_columnDefsByName","_customColumnDefs","_customRowDefs","_customHeaderRowDefs","_customFooterRowDefs","_headerRowDefChanged","_footerRowDefChanged","_cachedRenderRowsMap","_multiTemplateDataRows","setAttribute","_isNativeHtmlTable","_trackByFn","_forceRenderDataRows","_setupStickyStyler","_applyNativeTableSections","dataRow","dataIndex","_cacheRowDefs","_cacheColumnDefs","_headerRowDefs","_footerRowDefs","_rowDefs","_renderUpdatedColumns","_forceRenderHeaderRows","_forceRenderFooterRows","_renderChangeSubscription","_checkStickyStates","renderRows","_renderRows","_getAllRenderRows","record","prevIndex","_insertRow","_updateRowIndexContext","forEachIdentityChange","updateStickyColumnStyles","setHeaderRowDef","headerRowDef","setFooterRowDef","footerRowDef","addColumnDef","removeColumnDef","addRowDef","rowDef","removeRowDef","addHeaderRowDef","removeHeaderRowDef","addFooterRowDef","removeFooterRowDef","updateStickyHeaderRowStyles","headerRows","_getRenderedRows","_stickyStyler","sticky","updateStickyFooterRowStyles","footerRows","dataRows","headerRow","_addStickyColumnStyles","footerRow","prevCachedRenderRows","renderRowsForData","_getRenderRowsForData","renderRow","_getRowDefs","cachedRenderRows","mergeQueryListAndSet","defaultRowDefs","multiTemplateDataRows","_defaultRowDef","columnsDiffReducer","acc","_renderRow","columnDefs","stickyEnd","rowOutlet","renderedRows","viewRef","rootNodes","rowDefs","getTableMissingMatchingRowDefError","renderIndex","outlet","_getCellTemplates","count","even","odd","columnId","sections_1","section","stickyCheckReducer","queryList","typedArray","baseIsMap","nodeIsMap","arrayMap","symbolToString"],"mappings":"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","file":"2.fb13cd414d0c6c807f47.js","sourcesContent":["var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","'use strict';\n\nvar deselectCurrent = require('toggle-selection');\n\nvar defaultMessage = 'Copy to clipboard: #{key}, Enter';\n\nfunction format(message) {\n  var copyKey = (/mac os x/i.test(navigator.userAgent) ? '⌘' : 'Ctrl') + '+C';\n  return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n  var debug, message, reselectPrevious, range, selection, mark, success = false;\n  if (!options) { options = {}; }\n  debug = options.debug || false;\n  try {\n    reselectPrevious = deselectCurrent();\n\n    range = document.createRange();\n    selection = document.getSelection();\n\n    mark = document.createElement('span');\n    mark.textContent = text;\n    // reset user styles for span element\n    mark.style.all = 'unset';\n    // prevents scrolling to the end of the page\n    mark.style.position = 'fixed';\n    mark.style.top = 0;\n    mark.style.clip = 'rect(0, 0, 0, 0)';\n    // used to preserve spaces and line breaks\n    mark.style.whiteSpace = 'pre';\n    // do not inherit user-select (it may be `none`)\n    mark.style.webkitUserSelect = 'text';\n    mark.style.MozUserSelect = 'text';\n    mark.style.msUserSelect = 'text';\n    mark.style.userSelect = 'text';\n\n    document.body.appendChild(mark);\n\n    range.selectNode(mark);\n    selection.addRange(range);\n\n    var successful = document.execCommand('copy');\n    if (!successful) {\n      throw new Error('copy command was unsuccessful');\n    }\n    success = true;\n  } catch (err) {\n    debug && console.error('unable to copy using execCommand: ', err);\n    debug && console.warn('trying IE specific stuff');\n    try {\n      window.clipboardData.setData('text', text);\n      success = true;\n    } catch (err) {\n      debug && console.error('unable to copy using clipboardData: ', err);\n      debug && console.error('falling back to prompt');\n      message = format('message' in options ? options.message : defaultMessage);\n      window.prompt(message, text);\n    }\n  } finally {\n    if (selection) {\n      if (typeof selection.removeRange == 'function') {\n        selection.removeRange(range);\n      } else {\n        selection.removeAllRanges();\n      }\n    }\n\n    if (mark) {\n      document.body.removeChild(mark);\n    }\n    reselectPrevious();\n  }\n\n  return success;\n}\n\nmodule.exports = copy;\n","var baseProperty = require('./_baseProperty'),\n    basePropertyDeep = require('./_basePropertyDeep'),\n    isKey = require('./_isKey'),\n    toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var baseCreate = require('./_baseCreate'),\n    getPrototype = require('./_getPrototype'),\n    isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\nmodule.exports = initCloneObject;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { __extends } from 'tslib';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { BACKSPACE, DELETE, SPACE, HOME, END, ENTER } from '@angular/cdk/keycodes';\nimport { Platform } from '@angular/cdk/platform';\nimport { ContentChild, Directive, ElementRef, EventEmitter, forwardRef, Inject, Input, NgZone, Optional, Output, InjectionToken, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, Self, ViewEncapsulation, NgModule } from '@angular/core';\nimport { MAT_RIPPLE_GLOBAL_OPTIONS, mixinColor, mixinDisabled, mixinDisableRipple, RippleRenderer, ErrorStateMatcher, mixinErrorState } from '@angular/material/core';\nimport { Subject, merge } from 'rxjs';\nimport { take, startWith, takeUntil } from 'rxjs/operators';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { MatFormFieldControl } from '@angular/material/form-field';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Event object emitted by MatChip when selected or deselected.\n */\nvar  /**\n * Event object emitted by MatChip when selected or deselected.\n */\nMatChipSelectionChange = /** @class */ (function () {\n    function MatChipSelectionChange(source, selected, isUserInput) {\n        if (isUserInput === void 0) { isUserInput = false; }\n        this.source = source;\n        this.selected = selected;\n        this.isUserInput = isUserInput;\n    }\n    return MatChipSelectionChange;\n}());\n/**\n * \\@docs-private\n */\nvar  /**\n * \\@docs-private\n */\nMatChipBase = /** @class */ (function () {\n    function MatChipBase(_elementRef) {\n        this._elementRef = _elementRef;\n    }\n    return MatChipBase;\n}());\nvar /** @type {?} */ _MatChipMixinBase = mixinColor(mixinDisableRipple(mixinDisabled(MatChipBase)), 'primary');\nvar /** @type {?} */ CHIP_ATTRIBUTE_NAMES = ['mat-basic-chip'];\n/**\n * Dummy directive to add CSS class to chip avatar.\n * \\@docs-private\n */\nvar MatChipAvatar = /** @class */ (function () {\n    function MatChipAvatar() {\n    }\n    MatChipAvatar.decorators = [\n        { type: Directive, args: [{\n                    selector: 'mat-chip-avatar, [matChipAvatar]',\n                    host: { 'class': 'mat-chip-avatar' }\n                },] },\n    ];\n    return MatChipAvatar;\n}());\n/**\n * Dummy directive to add CSS class to chip trailing icon.\n * \\@docs-private\n */\nvar MatChipTrailingIcon = /** @class */ (function () {\n    function MatChipTrailingIcon() {\n    }\n    MatChipTrailingIcon.decorators = [\n        { type: Directive, args: [{\n                    selector: 'mat-chip-trailing-icon, [matChipTrailingIcon]',\n                    host: { 'class': 'mat-chip-trailing-icon' }\n                },] },\n    ];\n    return MatChipTrailingIcon;\n}());\n/**\n * Material design styled Chip component. Used inside the MatChipList component.\n */\nvar MatChip = /** @class */ (function (_super) {\n    __extends(MatChip, _super);\n    function MatChip(_elementRef, _ngZone, platform, globalOptions) {\n        var _this = _super.call(this, _elementRef) || this;\n        _this._elementRef = _elementRef;\n        _this._ngZone = _ngZone;\n        /**\n         * Whether the ripples are globally disabled through the RippleGlobalOptions\n         */\n        _this._ripplesGloballyDisabled = false;\n        /**\n         * Ripple configuration for ripples that are launched on pointer down.\n         * \\@docs-private\n         */\n        _this.rippleConfig = {};\n        /**\n         * Whether the chip has focus.\n         */\n        _this._hasFocus = false;\n        /**\n         * Whether the chip list is selectable\n         */\n        _this.chipListSelectable = true;\n        _this._selected = false;\n        _this._selectable = true;\n        _this._removable = true;\n        /**\n         * Emits when the chip is focused.\n         */\n        _this._onFocus = new Subject();\n        /**\n         * Emits when the chip is blured.\n         */\n        _this._onBlur = new Subject();\n        /**\n         * Emitted when the chip is selected or deselected.\n         */\n        _this.selectionChange = new EventEmitter();\n        /**\n         * Emitted when the chip is destroyed.\n         */\n        _this.destroyed = new EventEmitter();\n        /**\n         * Emitted when a chip is to be removed.\n         */\n        _this.removed = new EventEmitter();\n        _this._addHostClassName();\n        _this._chipRipple = new RippleRenderer(_this, _ngZone, _elementRef, platform);\n        _this._chipRipple.setupTriggerEvents(_elementRef.nativeElement);\n        if (globalOptions) {\n            _this._ripplesGloballyDisabled = !!globalOptions.disabled;\n            // TODO(paul): Once the speedFactor is removed, we no longer need to copy each single option.\n            // TODO(paul): Once the speedFactor is removed, we no longer need to copy each single option.\n            _this.rippleConfig = {\n                speedFactor: globalOptions.baseSpeedFactor,\n                animation: globalOptions.animation,\n                terminateOnPointerUp: globalOptions.terminateOnPointerUp,\n            };\n        }\n        return _this;\n    }\n    Object.defineProperty(MatChip.prototype, \"rippleDisabled\", {\n        /**\n         * Whether ripples are disabled on interaction\n         * @docs-private\n         */\n        get: /**\n         * Whether ripples are disabled on interaction\n         * \\@docs-private\n         * @return {?}\n         */\n        function () {\n            return this.disabled || this.disableRipple || this._ripplesGloballyDisabled;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChip.prototype, \"selected\", {\n        get: /**\n         * Whether the chip is selected.\n         * @return {?}\n         */\n        function () { return this._selected; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._selected = coerceBooleanProperty(value);\n            this.selectionChange.emit({\n                source: this,\n                isUserInput: false,\n                selected: value\n            });\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChip.prototype, \"value\", {\n        get: /**\n         * The value of the chip. Defaults to the content inside `<mat-chip>` tags.\n         * @return {?}\n         */\n        function () {\n            return this._value != undefined\n                ? this._value\n                : this._elementRef.nativeElement.textContent;\n        },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) { this._value = value; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChip.prototype, \"selectable\", {\n        get: /**\n         * Whether or not the chip is selectable. When a chip is not selectable,\n         * changes to it's selected state are always ignored. By default a chip is\n         * selectable, and it becomes non-selectable if it's parent chip list is\n         * not selectable.\n         * @return {?}\n         */\n        function () { return this._selectable && this.chipListSelectable; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._selectable = coerceBooleanProperty(value);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChip.prototype, \"removable\", {\n        get: /**\n         * Determines whether or not the chip displays the remove styling and emits (removed) events.\n         * @return {?}\n         */\n        function () { return this._removable; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._removable = coerceBooleanProperty(value);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChip.prototype, \"ariaSelected\", {\n        /** The ARIA selected applied to the chip. */\n        get: /**\n         * The ARIA selected applied to the chip.\n         * @return {?}\n         */\n        function () {\n            return this.selectable ? this.selected.toString() : null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @return {?}\n     */\n    MatChip.prototype._addHostClassName = /**\n     * @return {?}\n     */\n    function () {\n        // Add class for the different chips\n        for (var _i = 0, CHIP_ATTRIBUTE_NAMES_1 = CHIP_ATTRIBUTE_NAMES; _i < CHIP_ATTRIBUTE_NAMES_1.length; _i++) {\n            var attr = CHIP_ATTRIBUTE_NAMES_1[_i];\n            if (this._elementRef.nativeElement.hasAttribute(attr) ||\n                this._elementRef.nativeElement.tagName.toLowerCase() === attr) {\n                (/** @type {?} */ (this._elementRef.nativeElement)).classList.add(attr);\n                return;\n            }\n        }\n        (/** @type {?} */ (this._elementRef.nativeElement)).classList.add('mat-standard-chip');\n    };\n    /**\n     * @return {?}\n     */\n    MatChip.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        this.destroyed.emit({ chip: this });\n        this._chipRipple._removeTriggerEvents();\n    };\n    /** Selects the chip. */\n    /**\n     * Selects the chip.\n     * @return {?}\n     */\n    MatChip.prototype.select = /**\n     * Selects the chip.\n     * @return {?}\n     */\n    function () {\n        this._selected = true;\n        this.selectionChange.emit({\n            source: this,\n            isUserInput: false,\n            selected: true\n        });\n    };\n    /** Deselects the chip. */\n    /**\n     * Deselects the chip.\n     * @return {?}\n     */\n    MatChip.prototype.deselect = /**\n     * Deselects the chip.\n     * @return {?}\n     */\n    function () {\n        this._selected = false;\n        this.selectionChange.emit({\n            source: this,\n            isUserInput: false,\n            selected: false\n        });\n    };\n    /** Select this chip and emit selected event */\n    /**\n     * Select this chip and emit selected event\n     * @return {?}\n     */\n    MatChip.prototype.selectViaInteraction = /**\n     * Select this chip and emit selected event\n     * @return {?}\n     */\n    function () {\n        this._selected = true;\n        // Emit select event when selected changes.\n        this.selectionChange.emit({\n            source: this,\n            isUserInput: true,\n            selected: true\n        });\n    };\n    /** Toggles the current selected state of this chip. */\n    /**\n     * Toggles the current selected state of this chip.\n     * @param {?=} isUserInput\n     * @return {?}\n     */\n    MatChip.prototype.toggleSelected = /**\n     * Toggles the current selected state of this chip.\n     * @param {?=} isUserInput\n     * @return {?}\n     */\n    function (isUserInput) {\n        if (isUserInput === void 0) { isUserInput = false; }\n        this._selected = !this.selected;\n        this.selectionChange.emit({\n            source: this,\n            isUserInput: isUserInput,\n            selected: this._selected\n        });\n        return this.selected;\n    };\n    /** Allows for programmatic focusing of the chip. */\n    /**\n     * Allows for programmatic focusing of the chip.\n     * @return {?}\n     */\n    MatChip.prototype.focus = /**\n     * Allows for programmatic focusing of the chip.\n     * @return {?}\n     */\n    function () {\n        if (!this._hasFocus) {\n            this._elementRef.nativeElement.focus();\n            this._onFocus.next({ chip: this });\n        }\n        this._hasFocus = true;\n    };\n    /**\n     * Allows for programmatic removal of the chip. Called by the MatChipList when the DELETE or\n     * BACKSPACE keys are pressed.\n     *\n     * Informs any listeners of the removal request. Does not remove the chip from the DOM.\n     */\n    /**\n     * Allows for programmatic removal of the chip. Called by the MatChipList when the DELETE or\n     * BACKSPACE keys are pressed.\n     *\n     * Informs any listeners of the removal request. Does not remove the chip from the DOM.\n     * @return {?}\n     */\n    MatChip.prototype.remove = /**\n     * Allows for programmatic removal of the chip. Called by the MatChipList when the DELETE or\n     * BACKSPACE keys are pressed.\n     *\n     * Informs any listeners of the removal request. Does not remove the chip from the DOM.\n     * @return {?}\n     */\n    function () {\n        if (this.removable) {\n            this.removed.emit({ chip: this });\n        }\n    };\n    /** Ensures events fire properly upon click. */\n    /**\n     * Ensures events fire properly upon click.\n     * @param {?} event\n     * @return {?}\n     */\n    MatChip.prototype._handleClick = /**\n     * Ensures events fire properly upon click.\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        // Check disabled\n        if (this.disabled) {\n            return;\n        }\n        event.preventDefault();\n        event.stopPropagation();\n    };\n    /** Handle custom key presses. */\n    /**\n     * Handle custom key presses.\n     * @param {?} event\n     * @return {?}\n     */\n    MatChip.prototype._handleKeydown = /**\n     * Handle custom key presses.\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        if (this.disabled) {\n            return;\n        }\n        switch (event.keyCode) {\n            case DELETE:\n            case BACKSPACE:\n                // If we are removable, remove the focused chip\n                this.remove();\n                // Always prevent so page navigation does not occur\n                event.preventDefault();\n                break;\n            case SPACE:\n                // If we are selectable, toggle the focused chip\n                if (this.selectable) {\n                    this.toggleSelected(true);\n                }\n                // Always prevent space from scrolling the page since the list has focus\n                event.preventDefault();\n                break;\n        }\n    };\n    /**\n     * @return {?}\n     */\n    MatChip.prototype._blur = /**\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        // When animations are enabled, Angular may end up removing the chip from the DOM a little\n        // earlier than usual, causing it to be blurred and throwing off the logic in the chip list\n        // that moves focus not the next item. To work around the issue, we defer marking the chip\n        // as not focused until the next time the zone stabilizes.\n        this._ngZone.onStable\n            .asObservable()\n            .pipe(take(1))\n            .subscribe(function () {\n            _this._ngZone.run(function () {\n                _this._hasFocus = false;\n                _this._onBlur.next({ chip: _this });\n            });\n        });\n    };\n    MatChip.decorators = [\n        { type: Directive, args: [{\n                    selector: \"mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]\",\n                    inputs: ['color', 'disabled', 'disableRipple'],\n                    exportAs: 'matChip',\n                    host: {\n                        'class': 'mat-chip',\n                        '[attr.tabindex]': 'disabled ? null : -1',\n                        'role': 'option',\n                        '[class.mat-chip-selected]': 'selected',\n                        '[class.mat-chip-with-avatar]': 'avatar',\n                        '[class.mat-chip-with-trailing-icon]': 'trailingIcon || removeIcon',\n                        '[class.mat-chip-disabled]': 'disabled',\n                        '[attr.disabled]': 'disabled || null',\n                        '[attr.aria-disabled]': 'disabled.toString()',\n                        '[attr.aria-selected]': 'ariaSelected',\n                        '(click)': '_handleClick($event)',\n                        '(keydown)': '_handleKeydown($event)',\n                        '(focus)': 'focus()',\n                        '(blur)': '_blur()',\n                    },\n                },] },\n    ];\n    /** @nocollapse */\n    MatChip.ctorParameters = function () { return [\n        { type: ElementRef, },\n        { type: NgZone, },\n        { type: Platform, },\n        { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_RIPPLE_GLOBAL_OPTIONS,] },] },\n    ]; };\n    MatChip.propDecorators = {\n        \"avatar\": [{ type: ContentChild, args: [MatChipAvatar,] },],\n        \"trailingIcon\": [{ type: ContentChild, args: [MatChipTrailingIcon,] },],\n        \"removeIcon\": [{ type: ContentChild, args: [forwardRef(function () { return MatChipRemove; }),] },],\n        \"selected\": [{ type: Input },],\n        \"value\": [{ type: Input },],\n        \"selectable\": [{ type: Input },],\n        \"removable\": [{ type: Input },],\n        \"selectionChange\": [{ type: Output },],\n        \"destroyed\": [{ type: Output },],\n        \"removed\": [{ type: Output },],\n    };\n    return MatChip;\n}(_MatChipMixinBase));\n/**\n * Applies proper (click) support and adds styling for use with the Material Design \"cancel\" icon\n * available at https://material.io/icons/#ic_cancel.\n *\n * Example:\n *\n *     `<mat-chip>\n *       <mat-icon matChipRemove>cancel</mat-icon>\n *     </mat-chip>`\n *\n * You *may* use a custom icon, but you may need to override the `mat-chip-remove` positioning\n * styles to properly center the icon within the chip.\n */\nvar MatChipRemove = /** @class */ (function () {\n    function MatChipRemove(_parentChip) {\n        this._parentChip = _parentChip;\n    }\n    /** Calls the parent chip's public `remove()` method if applicable. */\n    /**\n     * Calls the parent chip's public `remove()` method if applicable.\n     * @param {?} event\n     * @return {?}\n     */\n    MatChipRemove.prototype._handleClick = /**\n     * Calls the parent chip's public `remove()` method if applicable.\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        if (this._parentChip.removable) {\n            this._parentChip.remove();\n        }\n        // We need to stop event propagation because otherwise the event will bubble up to the\n        // form field and cause the `onContainerClick` method to be invoked. This method would then\n        // reset the focused chip that has been focused after chip removal. Usually the parent\n        // the parent click listener of the `MatChip` would prevent propagation, but it can happen\n        // that the chip is being removed before the event bubbles up.\n        event.stopPropagation();\n    };\n    MatChipRemove.decorators = [\n        { type: Directive, args: [{\n                    selector: '[matChipRemove]',\n                    host: {\n                        'class': 'mat-chip-remove mat-chip-trailing-icon',\n                        '(click)': '_handleClick($event)',\n                    }\n                },] },\n    ];\n    /** @nocollapse */\n    MatChipRemove.ctorParameters = function () { return [\n        { type: MatChip, },\n    ]; };\n    return MatChipRemove;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Injection token to be used to override the default options for the chips module.\n */\nvar /** @type {?} */ MAT_CHIPS_DEFAULT_OPTIONS = new InjectionToken('mat-chips-default-options');\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * \\@docs-private\n */\nvar  /**\n * \\@docs-private\n */\nMatChipListBase = /** @class */ (function () {\n    function MatChipListBase(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl) {\n        this._defaultErrorStateMatcher = _defaultErrorStateMatcher;\n        this._parentForm = _parentForm;\n        this._parentFormGroup = _parentFormGroup;\n        this.ngControl = ngControl;\n    }\n    return MatChipListBase;\n}());\nvar /** @type {?} */ _MatChipListMixinBase = mixinErrorState(MatChipListBase);\n// Increasing integer for generating unique ids for chip-list components.\nvar /** @type {?} */ nextUniqueId = 0;\n/**\n * Change event object that is emitted when the chip list value has changed.\n */\nvar  /**\n * Change event object that is emitted when the chip list value has changed.\n */\nMatChipListChange = /** @class */ (function () {\n    function MatChipListChange(source, value) {\n        this.source = source;\n        this.value = value;\n    }\n    return MatChipListChange;\n}());\n/**\n * A material design chips component (named ChipList for it's similarity to the List component).\n */\nvar MatChipList = /** @class */ (function (_super) {\n    __extends(MatChipList, _super);\n    function MatChipList(_elementRef, _changeDetectorRef, _dir, _parentForm, _parentFormGroup, _defaultErrorStateMatcher, /** @docs-private */\n    ngControl) {\n        var _this = _super.call(this, _defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl) || this;\n        _this._elementRef = _elementRef;\n        _this._changeDetectorRef = _changeDetectorRef;\n        _this._dir = _dir;\n        _this.ngControl = ngControl;\n        /**\n         * Implemented as part of MatFormFieldControl.\n         * \\@docs-private\n         */\n        _this.controlType = 'mat-chip-list';\n        /**\n         * When a chip is destroyed, we store the index of the destroyed chip until the chips\n         * query list notifies about the update. This is necessary because we cannot determine an\n         * appropriate chip that should receive focus until the array of chips updated completely.\n         */\n        _this._lastDestroyedChipIndex = null;\n        /**\n         * Subject that emits when the component has been destroyed.\n         */\n        _this._destroyed = new Subject();\n        /**\n         * Uid of the chip list\n         */\n        _this._uid = \"mat-chip-list-\" + nextUniqueId++;\n        /**\n         * Tab index for the chip list.\n         */\n        _this._tabIndex = 0;\n        /**\n         * User defined tab index.\n         * When it is not null, use user defined tab index. Otherwise use _tabIndex\n         */\n        _this._userTabIndex = null;\n        /**\n         * Function when touched\n         */\n        _this._onTouched = function () { };\n        /**\n         * Function when changed\n         */\n        _this._onChange = function () { };\n        _this._multiple = false;\n        _this._compareWith = function (o1, o2) { return o1 === o2; };\n        _this._required = false;\n        _this._disabled = false;\n        /**\n         * Orientation of the chip list.\n         */\n        _this.ariaOrientation = 'horizontal';\n        _this._selectable = true;\n        /**\n         * Event emitted when the selected chip list value has been changed by the user.\n         */\n        _this.change = new EventEmitter();\n        /**\n         * Event that emits whenever the raw value of the chip-list changes. This is here primarily\n         * to facilitate the two-way binding for the `value` input.\n         * \\@docs-private\n         */\n        _this.valueChange = new EventEmitter();\n        if (_this.ngControl) {\n            _this.ngControl.valueAccessor = _this;\n        }\n        return _this;\n    }\n    Object.defineProperty(MatChipList.prototype, \"selected\", {\n        /** The array of selected chips inside chip list. */\n        get: /**\n         * The array of selected chips inside chip list.\n         * @return {?}\n         */\n        function () {\n            return this.multiple ? this._selectionModel.selected : this._selectionModel.selected[0];\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChipList.prototype, \"role\", {\n        /** The ARIA role applied to the chip list. */\n        get: /**\n         * The ARIA role applied to the chip list.\n         * @return {?}\n         */\n        function () { return this.empty ? null : 'listbox'; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChipList.prototype, \"multiple\", {\n        get: /**\n         * Whether the user should be allowed to select multiple chips.\n         * @return {?}\n         */\n        function () { return this._multiple; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._multiple = coerceBooleanProperty(value);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChipList.prototype, \"compareWith\", {\n        get: /**\n         * A function to compare the option values with the selected values. The first argument\n         * is a value from an option. The second is a value from the selection. A boolean\n         * should be returned.\n         * @return {?}\n         */\n        function () { return this._compareWith; },\n        set: /**\n         * @param {?} fn\n         * @return {?}\n         */\n        function (fn) {\n            this._compareWith = fn;\n            if (this._selectionModel) {\n                // A different comparator means the selection could change.\n                this._initializeSelection();\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChipList.prototype, \"value\", {\n        get: /**\n         * Implemented as part of MatFormFieldControl.\n         * \\@docs-private\n         * @return {?}\n         */\n        function () { return this._value; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this.writeValue(value);\n            this._value = value;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChipList.prototype, \"id\", {\n        /**\n         * Implemented as part of MatFormFieldControl.\n         * @docs-private\n         */\n        get: /**\n         * Implemented as part of MatFormFieldControl.\n         * \\@docs-private\n         * @return {?}\n         */\n        function () {\n            return this._chipInput ? this._chipInput.id : this._uid;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChipList.prototype, \"required\", {\n        get: /**\n         * Implemented as part of MatFormFieldControl.\n         * \\@docs-private\n         * @return {?}\n         */\n        function () { return this._required; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._required = coerceBooleanProperty(value);\n            this.stateChanges.next();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChipList.prototype, \"placeholder\", {\n        get: /**\n         * Implemented as part of MatFormFieldControl.\n         * \\@docs-private\n         * @return {?}\n         */\n        function () {\n            return this._chipInput ? this._chipInput.placeholder : this._placeholder;\n        },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._placeholder = value;\n            this.stateChanges.next();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChipList.prototype, \"focused\", {\n        /** Whether any chips or the matChipInput inside of this chip-list has focus. */\n        get: /**\n         * Whether any chips or the matChipInput inside of this chip-list has focus.\n         * @return {?}\n         */\n        function () {\n            return (this._chipInput && this._chipInput.focused) || this.chips.some(function (chip) { return chip._hasFocus; });\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChipList.prototype, \"empty\", {\n        /**\n         * Implemented as part of MatFormFieldControl.\n         * @docs-private\n         */\n        get: /**\n         * Implemented as part of MatFormFieldControl.\n         * \\@docs-private\n         * @return {?}\n         */\n        function () {\n            return (!this._chipInput || this._chipInput.empty) && this.chips.length === 0;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChipList.prototype, \"shouldLabelFloat\", {\n        /**\n         * Implemented as part of MatFormFieldControl.\n         * @docs-private\n         */\n        get: /**\n         * Implemented as part of MatFormFieldControl.\n         * \\@docs-private\n         * @return {?}\n         */\n        function () { return !this.empty || this.focused; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChipList.prototype, \"disabled\", {\n        get: /**\n         * Implemented as part of MatFormFieldControl.\n         * \\@docs-private\n         * @return {?}\n         */\n        function () { return this.ngControl ? !!this.ngControl.disabled : this._disabled; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            var _this = this;\n            this._disabled = coerceBooleanProperty(value);\n            if (this.chips) {\n                this.chips.forEach(function (chip) { return chip.disabled = _this._disabled; });\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChipList.prototype, \"selectable\", {\n        get: /**\n         * Whether or not this chip list is selectable. When a chip list is not selectable,\n         * the selected states for all the chips inside the chip list are always ignored.\n         * @return {?}\n         */\n        function () { return this._selectable; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            var _this = this;\n            this._selectable = coerceBooleanProperty(value);\n            if (this.chips) {\n                this.chips.forEach(function (chip) { return chip.chipListSelectable = _this._selectable; });\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChipList.prototype, \"tabIndex\", {\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._userTabIndex = value;\n            this._tabIndex = value;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChipList.prototype, \"chipSelectionChanges\", {\n        /** Combined stream of all of the child chips' selection change events. */\n        get: /**\n         * Combined stream of all of the child chips' selection change events.\n         * @return {?}\n         */\n        function () {\n            return merge.apply(void 0, this.chips.map(function (chip) { return chip.selectionChange; }));\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChipList.prototype, \"chipFocusChanges\", {\n        /** Combined stream of all of the child chips' focus change events. */\n        get: /**\n         * Combined stream of all of the child chips' focus change events.\n         * @return {?}\n         */\n        function () {\n            return merge.apply(void 0, this.chips.map(function (chip) { return chip._onFocus; }));\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChipList.prototype, \"chipBlurChanges\", {\n        /** Combined stream of all of the child chips' blur change events. */\n        get: /**\n         * Combined stream of all of the child chips' blur change events.\n         * @return {?}\n         */\n        function () {\n            return merge.apply(void 0, this.chips.map(function (chip) { return chip._onBlur; }));\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChipList.prototype, \"chipRemoveChanges\", {\n        /** Combined stream of all of the child chips' remove change events. */\n        get: /**\n         * Combined stream of all of the child chips' remove change events.\n         * @return {?}\n         */\n        function () {\n            return merge.apply(void 0, this.chips.map(function (chip) { return chip.destroyed; }));\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @return {?}\n     */\n    MatChipList.prototype.ngAfterContentInit = /**\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        this._keyManager = new FocusKeyManager(this.chips)\n            .withWrap()\n            .withVerticalOrientation()\n            .withHorizontalOrientation(this._dir ? this._dir.value : 'ltr');\n        // Prevents the chip list from capturing focus and redirecting\n        // it back to the first chip when the user tabs out.\n        this._keyManager.tabOut.pipe(takeUntil(this._destroyed)).subscribe(function () {\n            _this._tabIndex = -1;\n            setTimeout(function () { return _this._tabIndex = _this._userTabIndex || 0; });\n        });\n        // When the list changes, re-subscribe\n        this.chips.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(function () {\n            _this._resetChips();\n            // Reset chips selected/deselected status\n            // Reset chips selected/deselected status\n            _this._initializeSelection();\n            // Check to see if we need to update our tab index\n            // Check to see if we need to update our tab index\n            _this._updateTabIndex();\n            // Check to see if we have a destroyed chip and need to refocus\n            // Check to see if we have a destroyed chip and need to refocus\n            _this._updateFocusForDestroyedChips();\n            _this.stateChanges.next();\n        });\n    };\n    /**\n     * @return {?}\n     */\n    MatChipList.prototype.ngOnInit = /**\n     * @return {?}\n     */\n    function () {\n        this._selectionModel = new SelectionModel(this.multiple, undefined, false);\n        this.stateChanges.next();\n    };\n    /**\n     * @return {?}\n     */\n    MatChipList.prototype.ngDoCheck = /**\n     * @return {?}\n     */\n    function () {\n        if (this.ngControl) {\n            // We need to re-evaluate this on every change detection cycle, because there are some\n            // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n            // that whatever logic is in here has to be super lean or we risk destroying the performance.\n            this.updateErrorState();\n        }\n    };\n    /**\n     * @return {?}\n     */\n    MatChipList.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        this._destroyed.next();\n        this._destroyed.complete();\n        this.stateChanges.complete();\n        this._dropSubscriptions();\n    };\n    /** Associates an HTML input element with this chip list. */\n    /**\n     * Associates an HTML input element with this chip list.\n     * @param {?} inputElement\n     * @return {?}\n     */\n    MatChipList.prototype.registerInput = /**\n     * Associates an HTML input element with this chip list.\n     * @param {?} inputElement\n     * @return {?}\n     */\n    function (inputElement) {\n        this._chipInput = inputElement;\n    };\n    /**\n     * Implemented as part of MatFormFieldControl.\n     * @docs-private\n     */\n    /**\n     * Implemented as part of MatFormFieldControl.\n     * \\@docs-private\n     * @param {?} ids\n     * @return {?}\n     */\n    MatChipList.prototype.setDescribedByIds = /**\n     * Implemented as part of MatFormFieldControl.\n     * \\@docs-private\n     * @param {?} ids\n     * @return {?}\n     */\n    function (ids) { this._ariaDescribedby = ids.join(' '); };\n    // Implemented as part of ControlValueAccessor.\n    /**\n     * @param {?} value\n     * @return {?}\n     */\n    MatChipList.prototype.writeValue = /**\n     * @param {?} value\n     * @return {?}\n     */\n    function (value) {\n        if (this.chips) {\n            this._setSelectionByValue(value, false);\n        }\n    };\n    // Implemented as part of ControlValueAccessor.\n    /**\n     * @param {?} fn\n     * @return {?}\n     */\n    MatChipList.prototype.registerOnChange = /**\n     * @param {?} fn\n     * @return {?}\n     */\n    function (fn) {\n        this._onChange = fn;\n    };\n    // Implemented as part of ControlValueAccessor.\n    /**\n     * @param {?} fn\n     * @return {?}\n     */\n    MatChipList.prototype.registerOnTouched = /**\n     * @param {?} fn\n     * @return {?}\n     */\n    function (fn) {\n        this._onTouched = fn;\n    };\n    // Implemented as part of ControlValueAccessor.\n    /**\n     * @param {?} isDisabled\n     * @return {?}\n     */\n    MatChipList.prototype.setDisabledState = /**\n     * @param {?} isDisabled\n     * @return {?}\n     */\n    function (isDisabled) {\n        this.disabled = isDisabled;\n        this.stateChanges.next();\n    };\n    /**\n     * Implemented as part of MatFormFieldControl.\n     * @docs-private\n     */\n    /**\n     * Implemented as part of MatFormFieldControl.\n     * \\@docs-private\n     * @return {?}\n     */\n    MatChipList.prototype.onContainerClick = /**\n     * Implemented as part of MatFormFieldControl.\n     * \\@docs-private\n     * @return {?}\n     */\n    function () { this.focus(); };\n    /**\n     * Focuses the the first non-disabled chip in this chip list, or the associated input when there\n     * are no eligible chips.\n     */\n    /**\n     * Focuses the the first non-disabled chip in this chip list, or the associated input when there\n     * are no eligible chips.\n     * @return {?}\n     */\n    MatChipList.prototype.focus = /**\n     * Focuses the the first non-disabled chip in this chip list, or the associated input when there\n     * are no eligible chips.\n     * @return {?}\n     */\n    function () {\n        if (this.disabled) {\n            return;\n        }\n        // TODO: ARIA says this should focus the first `selected` chip if any are selected.\n        // Focus on first element if there's no chipInput inside chip-list\n        if (this._chipInput && this._chipInput.focused) {\n            // do nothing\n        }\n        else if (this.chips.length > 0) {\n            this._keyManager.setFirstItemActive();\n            this.stateChanges.next();\n        }\n        else {\n            this._focusInput();\n            this.stateChanges.next();\n        }\n    };\n    /** Attempt to focus an input if we have one. */\n    /**\n     * Attempt to focus an input if we have one.\n     * @return {?}\n     */\n    MatChipList.prototype._focusInput = /**\n     * Attempt to focus an input if we have one.\n     * @return {?}\n     */\n    function () {\n        if (this._chipInput) {\n            this._chipInput.focus();\n        }\n    };\n    /**\n     * Pass events to the keyboard manager. Available here for tests.\n     */\n    /**\n     * Pass events to the keyboard manager. Available here for tests.\n     * @param {?} event\n     * @return {?}\n     */\n    MatChipList.prototype._keydown = /**\n     * Pass events to the keyboard manager. Available here for tests.\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        var /** @type {?} */ target = /** @type {?} */ (event.target);\n        // If they are on an empty input and hit backspace, focus the last chip\n        if (event.keyCode === BACKSPACE && this._isInputEmpty(target)) {\n            this._keyManager.setLastItemActive();\n            event.preventDefault();\n        }\n        else if (target && target.classList.contains('mat-chip')) {\n            if (event.keyCode === HOME) {\n                this._keyManager.setFirstItemActive();\n                event.preventDefault();\n            }\n            else if (event.keyCode === END) {\n                this._keyManager.setLastItemActive();\n                event.preventDefault();\n            }\n            else {\n                this._keyManager.onKeydown(event);\n            }\n            this.stateChanges.next();\n        }\n    };\n    /**\n     * Check the tab index as you should not be allowed to focus an empty list.\n     */\n    /**\n     * Check the tab index as you should not be allowed to focus an empty list.\n     * @return {?}\n     */\n    MatChipList.prototype._updateTabIndex = /**\n     * Check the tab index as you should not be allowed to focus an empty list.\n     * @return {?}\n     */\n    function () {\n        // If we have 0 chips, we should not allow keyboard focus\n        this._tabIndex = this._userTabIndex || (this.chips.length === 0 ? -1 : 0);\n    };\n    /**\n     * If the amount of chips changed, we need to update the\n     * key manager state and focus the next closest chip.\n     */\n    /**\n     * If the amount of chips changed, we need to update the\n     * key manager state and focus the next closest chip.\n     * @return {?}\n     */\n    MatChipList.prototype._updateFocusForDestroyedChips = /**\n     * If the amount of chips changed, we need to update the\n     * key manager state and focus the next closest chip.\n     * @return {?}\n     */\n    function () {\n        if (this._lastDestroyedChipIndex != null && this.chips.length) {\n            var /** @type {?} */ newChipIndex = Math.min(this._lastDestroyedChipIndex, this.chips.length - 1);\n            this._keyManager.setActiveItem(newChipIndex);\n        }\n        this._lastDestroyedChipIndex = null;\n    };\n    /**\n     * Utility to ensure all indexes are valid.\n     *\n     * @param {?} index The index to be checked.\n     * @return {?} True if the index is valid for our list of chips.\n     */\n    MatChipList.prototype._isValidIndex = /**\n     * Utility to ensure all indexes are valid.\n     *\n     * @param {?} index The index to be checked.\n     * @return {?} True if the index is valid for our list of chips.\n     */\n    function (index) {\n        return index >= 0 && index < this.chips.length;\n    };\n    /**\n     * @param {?} element\n     * @return {?}\n     */\n    MatChipList.prototype._isInputEmpty = /**\n     * @param {?} element\n     * @return {?}\n     */\n    function (element) {\n        if (element && element.nodeName.toLowerCase() === 'input') {\n            var /** @type {?} */ input = /** @type {?} */ (element);\n            return !input.value;\n        }\n        return false;\n    };\n    /**\n     * @param {?} value\n     * @param {?=} isUserInput\n     * @return {?}\n     */\n    MatChipList.prototype._setSelectionByValue = /**\n     * @param {?} value\n     * @param {?=} isUserInput\n     * @return {?}\n     */\n    function (value, isUserInput) {\n        var _this = this;\n        if (isUserInput === void 0) { isUserInput = true; }\n        this._clearSelection();\n        this.chips.forEach(function (chip) { return chip.deselect(); });\n        if (Array.isArray(value)) {\n            value.forEach(function (currentValue) { return _this._selectValue(currentValue, isUserInput); });\n            this._sortValues();\n        }\n        else {\n            var /** @type {?} */ correspondingChip = this._selectValue(value, isUserInput);\n            // Shift focus to the active item. Note that we shouldn't do this in multiple\n            // mode, because we don't know what chip the user interacted with last.\n            if (correspondingChip) {\n                if (isUserInput) {\n                    this._keyManager.setActiveItem(correspondingChip);\n                }\n            }\n        }\n    };\n    /**\n     * Finds and selects the chip based on its value.\n     * @param {?} value\n     * @param {?=} isUserInput\n     * @return {?} Chip that has the corresponding value.\n     */\n    MatChipList.prototype._selectValue = /**\n     * Finds and selects the chip based on its value.\n     * @param {?} value\n     * @param {?=} isUserInput\n     * @return {?} Chip that has the corresponding value.\n     */\n    function (value, isUserInput) {\n        var _this = this;\n        if (isUserInput === void 0) { isUserInput = true; }\n        var /** @type {?} */ correspondingChip = this.chips.find(function (chip) {\n            return chip.value != null && _this._compareWith(chip.value, value);\n        });\n        if (correspondingChip) {\n            isUserInput ? correspondingChip.selectViaInteraction() : correspondingChip.select();\n            this._selectionModel.select(correspondingChip);\n        }\n        return correspondingChip;\n    };\n    /**\n     * @return {?}\n     */\n    MatChipList.prototype._initializeSelection = /**\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        // Defer setting the value in order to avoid the \"Expression\n        // has changed after it was checked\" errors from Angular.\n        Promise.resolve().then(function () {\n            if (_this.ngControl || _this._value) {\n                _this._setSelectionByValue(_this.ngControl ? _this.ngControl.value : _this._value, false);\n                _this.stateChanges.next();\n            }\n        });\n    };\n    /**\n     * Deselects every chip in the list.\n     * @param {?=} skip Chip that should not be deselected.\n     * @return {?}\n     */\n    MatChipList.prototype._clearSelection = /**\n     * Deselects every chip in the list.\n     * @param {?=} skip Chip that should not be deselected.\n     * @return {?}\n     */\n    function (skip) {\n        this._selectionModel.clear();\n        this.chips.forEach(function (chip) {\n            if (chip !== skip) {\n                chip.deselect();\n            }\n        });\n        this.stateChanges.next();\n    };\n    /**\n     * Sorts the model values, ensuring that they keep the same\n     * order that they have in the panel.\n     * @return {?}\n     */\n    MatChipList.prototype._sortValues = /**\n     * Sorts the model values, ensuring that they keep the same\n     * order that they have in the panel.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        if (this._multiple) {\n            this._selectionModel.clear();\n            this.chips.forEach(function (chip) {\n                if (chip.selected) {\n                    _this._selectionModel.select(chip);\n                }\n            });\n            this.stateChanges.next();\n        }\n    };\n    /**\n     * Emits change event to set the model value.\n     * @param {?=} fallbackValue\n     * @return {?}\n     */\n    MatChipList.prototype._propagateChanges = /**\n     * Emits change event to set the model value.\n     * @param {?=} fallbackValue\n     * @return {?}\n     */\n    function (fallbackValue) {\n        var /** @type {?} */ valueToEmit = null;\n        if (Array.isArray(this.selected)) {\n            valueToEmit = this.selected.map(function (chip) { return chip.value; });\n        }\n        else {\n            valueToEmit = this.selected ? this.selected.value : fallbackValue;\n        }\n        this._value = valueToEmit;\n        this.change.emit(new MatChipListChange(this, valueToEmit));\n        this.valueChange.emit(valueToEmit);\n        this._onChange(valueToEmit);\n        this._changeDetectorRef.markForCheck();\n    };\n    /** When blurred, mark the field as touched when focus moved outside the chip list. */\n    /**\n     * When blurred, mark the field as touched when focus moved outside the chip list.\n     * @return {?}\n     */\n    MatChipList.prototype._blur = /**\n     * When blurred, mark the field as touched when focus moved outside the chip list.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        this._keyManager.setActiveItem(-1);\n        if (!this.disabled) {\n            if (this._chipInput) {\n                // If there's a chip input, we should check whether the focus moved to chip input.\n                // If the focus is not moved to chip input, mark the field as touched. If the focus moved\n                // to chip input, do nothing.\n                // Timeout is needed to wait for the focus() event trigger on chip input.\n                setTimeout(function () {\n                    if (!_this.focused) {\n                        _this._markAsTouched();\n                    }\n                });\n            }\n            else {\n                // If there's no chip input, then mark the field as touched.\n                this._markAsTouched();\n            }\n        }\n    };\n    /** Mark the field as touched */\n    /**\n     * Mark the field as touched\n     * @return {?}\n     */\n    MatChipList.prototype._markAsTouched = /**\n     * Mark the field as touched\n     * @return {?}\n     */\n    function () {\n        this._onTouched();\n        this._changeDetectorRef.markForCheck();\n        this.stateChanges.next();\n    };\n    /**\n     * @return {?}\n     */\n    MatChipList.prototype._resetChips = /**\n     * @return {?}\n     */\n    function () {\n        this._dropSubscriptions();\n        this._listenToChipsFocus();\n        this._listenToChipsSelection();\n        this._listenToChipsRemoved();\n    };\n    /**\n     * @return {?}\n     */\n    MatChipList.prototype._dropSubscriptions = /**\n     * @return {?}\n     */\n    function () {\n        if (this._chipFocusSubscription) {\n            this._chipFocusSubscription.unsubscribe();\n            this._chipFocusSubscription = null;\n        }\n        if (this._chipBlurSubscription) {\n            this._chipBlurSubscription.unsubscribe();\n            this._chipBlurSubscription = null;\n        }\n        if (this._chipSelectionSubscription) {\n            this._chipSelectionSubscription.unsubscribe();\n            this._chipSelectionSubscription = null;\n        }\n        if (this._chipRemoveSubscription) {\n            this._chipRemoveSubscription.unsubscribe();\n            this._chipRemoveSubscription = null;\n        }\n    };\n    /**\n     * Listens to user-generated selection events on each chip.\n     * @return {?}\n     */\n    MatChipList.prototype._listenToChipsSelection = /**\n     * Listens to user-generated selection events on each chip.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        this._chipSelectionSubscription = this.chipSelectionChanges.subscribe(function (event) {\n            event.source.selected\n                ? _this._selectionModel.select(event.source)\n                : _this._selectionModel.deselect(event.source);\n            // For single selection chip list, make sure the deselected value is unselected.\n            if (!_this.multiple) {\n                _this.chips.forEach(function (chip) {\n                    if (!_this._selectionModel.isSelected(chip) && chip.selected) {\n                        chip.deselect();\n                    }\n                });\n            }\n            if (event.isUserInput) {\n                _this._propagateChanges();\n            }\n        });\n    };\n    /**\n     * Listens to user-generated selection events on each chip.\n     * @return {?}\n     */\n    MatChipList.prototype._listenToChipsFocus = /**\n     * Listens to user-generated selection events on each chip.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        this._chipFocusSubscription = this.chipFocusChanges.subscribe(function (event) {\n            var /** @type {?} */ chipIndex = _this.chips.toArray().indexOf(event.chip);\n            if (_this._isValidIndex(chipIndex)) {\n                _this._keyManager.updateActiveItemIndex(chipIndex);\n            }\n            _this.stateChanges.next();\n        });\n        this._chipBlurSubscription = this.chipBlurChanges.subscribe(function () {\n            _this._blur();\n            _this.stateChanges.next();\n        });\n    };\n    /**\n     * @return {?}\n     */\n    MatChipList.prototype._listenToChipsRemoved = /**\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        this._chipRemoveSubscription = this.chipRemoveChanges.subscribe(function (event) {\n            var /** @type {?} */ chip = event.chip;\n            var /** @type {?} */ chipIndex = _this.chips.toArray().indexOf(event.chip);\n            // In case the chip that will be removed is currently focused, we temporarily store\n            // the index in order to be able to determine an appropriate sibling chip that will\n            // receive focus.\n            if (_this._isValidIndex(chipIndex) && chip._hasFocus) {\n                _this._lastDestroyedChipIndex = chipIndex;\n            }\n        });\n    };\n    MatChipList.decorators = [\n        { type: Component, args: [{selector: 'mat-chip-list',\n                    template: \"<div class=\\\"mat-chip-list-wrapper\\\"><ng-content></ng-content></div>\",\n                    exportAs: 'matChipList',\n                    host: {\n                        '[attr.tabindex]': 'disabled ? null : _tabIndex',\n                        '[attr.aria-describedby]': '_ariaDescribedby || null',\n                        '[attr.aria-required]': 'required.toString()',\n                        '[attr.aria-disabled]': 'disabled.toString()',\n                        '[attr.aria-invalid]': 'errorState',\n                        '[attr.aria-multiselectable]': 'multiple',\n                        '[attr.role]': 'role',\n                        '[class.mat-chip-list-disabled]': 'disabled',\n                        '[class.mat-chip-list-invalid]': 'errorState',\n                        '[class.mat-chip-list-required]': 'required',\n                        '[attr.aria-orientation]': 'ariaOrientation',\n                        'class': 'mat-chip-list',\n                        '(focus)': 'focus()',\n                        '(blur)': '_blur()',\n                        '(keydown)': '_keydown($event)',\n                        '[id]': '_uid',\n                    },\n                    providers: [{ provide: MatFormFieldControl, useExisting: MatChipList }],\n                    styles: [\".mat-chip{position:relative;overflow:hidden;box-sizing:border-box;-webkit-tap-highlight-color:transparent}.mat-standard-chip{transition:box-shadow 280ms cubic-bezier(.4,0,.2,1);display:inline-flex;padding:7px 12px;border-radius:24px;align-items:center;cursor:default}.mat-standard-chip .mat-chip-remove.mat-icon{width:18px;height:18px}.mat-standard-chip:focus{box-shadow:0 3px 3px -2px rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12);outline:0}@media screen and (-ms-high-contrast:active){.mat-standard-chip{outline:solid 1px}.mat-standard-chip:focus{outline:dotted 2px}}.mat-standard-chip.mat-chip-with-avatar,.mat-standard-chip.mat-chip-with-trailing-icon.mat-chip-with-avatar{padding-top:0;padding-bottom:0}.mat-standard-chip.mat-chip-with-trailing-icon.mat-chip-with-avatar{padding-right:7px;padding-left:0}[dir=rtl] .mat-standard-chip.mat-chip-with-trailing-icon.mat-chip-with-avatar{padding-left:7px;padding-right:0}.mat-standard-chip.mat-chip-with-trailing-icon{padding-top:7px;padding-bottom:7px;padding-right:7px;padding-left:12px}[dir=rtl] .mat-standard-chip.mat-chip-with-trailing-icon{padding-left:7px;padding-right:12px}.mat-standard-chip.mat-chip-with-avatar{padding-left:0;padding-right:12px}[dir=rtl] .mat-standard-chip.mat-chip-with-avatar{padding-right:0;padding-left:12px}.mat-standard-chip .mat-chip-avatar{width:32px;height:32px;margin-right:8px;margin-left:0}[dir=rtl] .mat-standard-chip .mat-chip-avatar{margin-left:8px;margin-right:0}.mat-standard-chip .mat-chip-remove,.mat-standard-chip .mat-chip-trailing-icon{width:18px;height:18px;cursor:pointer}.mat-standard-chip .mat-chip-remove,.mat-standard-chip .mat-chip-trailing-icon{margin-left:7px;margin-right:0}[dir=rtl] .mat-standard-chip .mat-chip-remove,[dir=rtl] .mat-standard-chip .mat-chip-trailing-icon{margin-right:7px;margin-left:0}.mat-chip-list-wrapper{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;margin:-4px}.mat-chip-list-wrapper .mat-standard-chip,.mat-chip-list-wrapper input.mat-input-element{margin:4px}.mat-chip-list-stacked .mat-chip-list-wrapper{flex-direction:column;align-items:flex-start}.mat-chip-list-stacked .mat-chip-list-wrapper .mat-standard-chip{width:100%}.mat-chip-avatar{border-radius:50%;justify-content:center;align-items:center;display:flex;overflow:hidden;object-fit:cover}input.mat-chip-input{width:150px;margin:3px;flex:1 0 150px}\"],\n                    encapsulation: ViewEncapsulation.None,\n                    changeDetection: ChangeDetectionStrategy.OnPush\n                },] },\n    ];\n    /** @nocollapse */\n    MatChipList.ctorParameters = function () { return [\n        { type: ElementRef, },\n        { type: ChangeDetectorRef, },\n        { type: Directionality, decorators: [{ type: Optional },] },\n        { type: NgForm, decorators: [{ type: Optional },] },\n        { type: FormGroupDirective, decorators: [{ type: Optional },] },\n        { type: ErrorStateMatcher, },\n        { type: NgControl, decorators: [{ type: Optional }, { type: Self },] },\n    ]; };\n    MatChipList.propDecorators = {\n        \"errorStateMatcher\": [{ type: Input },],\n        \"multiple\": [{ type: Input },],\n        \"compareWith\": [{ type: Input },],\n        \"value\": [{ type: Input },],\n        \"required\": [{ type: Input },],\n        \"placeholder\": [{ type: Input },],\n        \"disabled\": [{ type: Input },],\n        \"ariaOrientation\": [{ type: Input, args: ['aria-orientation',] },],\n        \"selectable\": [{ type: Input },],\n        \"tabIndex\": [{ type: Input },],\n        \"change\": [{ type: Output },],\n        \"valueChange\": [{ type: Output },],\n        \"chips\": [{ type: ContentChildren, args: [MatChip,] },],\n    };\n    return MatChipList;\n}(_MatChipListMixinBase));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n// Increasing integer for generating unique ids.\nvar /** @type {?} */ nextUniqueId$1 = 0;\n/**\n * Directive that adds chip-specific behaviors to an input element inside `<mat-form-field>`.\n * May be placed inside or outside of an `<mat-chip-list>`.\n */\nvar MatChipInput = /** @class */ (function () {\n    function MatChipInput(_elementRef, _defaultOptions) {\n        this._elementRef = _elementRef;\n        this._defaultOptions = _defaultOptions;\n        /**\n         * Whether the control is focused.\n         */\n        this.focused = false;\n        this._addOnBlur = false;\n        /**\n         * The list of key codes that will trigger a chipEnd event.\n         *\n         * Defaults to `[ENTER]`.\n         */\n        this.separatorKeyCodes = this._defaultOptions.separatorKeyCodes;\n        /**\n         * Emitted when a chip is to be added.\n         */\n        this.chipEnd = new EventEmitter();\n        /**\n         * The input's placeholder text.\n         */\n        this.placeholder = '';\n        /**\n         * Unique id for the input.\n         */\n        this.id = \"mat-chip-list-input-\" + nextUniqueId$1++;\n        this._disabled = false;\n        this._inputElement = /** @type {?} */ (this._elementRef.nativeElement);\n    }\n    Object.defineProperty(MatChipInput.prototype, \"chipList\", {\n        set: /**\n         * Register input for chip list\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            if (value) {\n                this._chipList = value;\n                this._chipList.registerInput(this);\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChipInput.prototype, \"addOnBlur\", {\n        get: /**\n         * Whether or not the chipEnd event will be emitted when the input is blurred.\n         * @return {?}\n         */\n        function () { return this._addOnBlur; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) { this._addOnBlur = coerceBooleanProperty(value); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChipInput.prototype, \"disabled\", {\n        get: /**\n         * Whether the input is disabled.\n         * @return {?}\n         */\n        function () { return this._disabled || (this._chipList && this._chipList.disabled); },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) { this._disabled = coerceBooleanProperty(value); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChipInput.prototype, \"empty\", {\n        /** Whether the input is empty. */\n        get: /**\n         * Whether the input is empty.\n         * @return {?}\n         */\n        function () { return !this._inputElement.value; },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @return {?}\n     */\n    MatChipInput.prototype.ngOnChanges = /**\n     * @return {?}\n     */\n    function () {\n        this._chipList.stateChanges.next();\n    };\n    /** Utility method to make host definition/tests more clear. */\n    /**\n     * Utility method to make host definition/tests more clear.\n     * @param {?=} event\n     * @return {?}\n     */\n    MatChipInput.prototype._keydown = /**\n     * Utility method to make host definition/tests more clear.\n     * @param {?=} event\n     * @return {?}\n     */\n    function (event) {\n        this._emitChipEnd(event);\n    };\n    /** Checks to see if the blur should emit the (chipEnd) event. */\n    /**\n     * Checks to see if the blur should emit the (chipEnd) event.\n     * @return {?}\n     */\n    MatChipInput.prototype._blur = /**\n     * Checks to see if the blur should emit the (chipEnd) event.\n     * @return {?}\n     */\n    function () {\n        if (this.addOnBlur) {\n            this._emitChipEnd();\n        }\n        this.focused = false;\n        // Blur the chip list if it is not focused\n        if (!this._chipList.focused) {\n            this._chipList._blur();\n        }\n        this._chipList.stateChanges.next();\n    };\n    /**\n     * @return {?}\n     */\n    MatChipInput.prototype._focus = /**\n     * @return {?}\n     */\n    function () {\n        this.focused = true;\n        this._chipList.stateChanges.next();\n    };\n    /** Checks to see if the (chipEnd) event needs to be emitted. */\n    /**\n     * Checks to see if the (chipEnd) event needs to be emitted.\n     * @param {?=} event\n     * @return {?}\n     */\n    MatChipInput.prototype._emitChipEnd = /**\n     * Checks to see if the (chipEnd) event needs to be emitted.\n     * @param {?=} event\n     * @return {?}\n     */\n    function (event) {\n        if (!this._inputElement.value && !!event) {\n            this._chipList._keydown(event);\n        }\n        if (!event || this.separatorKeyCodes.indexOf(event.keyCode) > -1) {\n            this.chipEnd.emit({ input: this._inputElement, value: this._inputElement.value });\n            if (event) {\n                event.preventDefault();\n            }\n        }\n    };\n    /**\n     * @return {?}\n     */\n    MatChipInput.prototype._onInput = /**\n     * @return {?}\n     */\n    function () {\n        // Let chip list know whenever the value changes.\n        this._chipList.stateChanges.next();\n    };\n    /** Focuses the input. */\n    /**\n     * Focuses the input.\n     * @return {?}\n     */\n    MatChipInput.prototype.focus = /**\n     * Focuses the input.\n     * @return {?}\n     */\n    function () { this._inputElement.focus(); };\n    MatChipInput.decorators = [\n        { type: Directive, args: [{\n                    selector: 'input[matChipInputFor]',\n                    exportAs: 'matChipInput, matChipInputFor',\n                    host: {\n                        'class': 'mat-chip-input mat-input-element',\n                        '(keydown)': '_keydown($event)',\n                        '(blur)': '_blur()',\n                        '(focus)': '_focus()',\n                        '(input)': '_onInput()',\n                        '[id]': 'id',\n                        '[attr.disabled]': 'disabled || null',\n                        '[attr.placeholder]': 'placeholder || null',\n                    }\n                },] },\n    ];\n    /** @nocollapse */\n    MatChipInput.ctorParameters = function () { return [\n        { type: ElementRef, },\n        { type: undefined, decorators: [{ type: Inject, args: [MAT_CHIPS_DEFAULT_OPTIONS,] },] },\n    ]; };\n    MatChipInput.propDecorators = {\n        \"chipList\": [{ type: Input, args: ['matChipInputFor',] },],\n        \"addOnBlur\": [{ type: Input, args: ['matChipInputAddOnBlur',] },],\n        \"separatorKeyCodes\": [{ type: Input, args: ['matChipInputSeparatorKeyCodes',] },],\n        \"chipEnd\": [{ type: Output, args: ['matChipInputTokenEnd',] },],\n        \"placeholder\": [{ type: Input },],\n        \"id\": [{ type: Input },],\n        \"disabled\": [{ type: Input },],\n    };\n    return MatChipInput;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nvar /** @type {?} */ CHIP_DECLARATIONS = [\n    MatChipList,\n    MatChip,\n    MatChipInput,\n    MatChipRemove,\n    MatChipAvatar,\n    MatChipTrailingIcon,\n];\nvar ɵ0 = {\n    separatorKeyCodes: [ENTER]\n};\nvar MatChipsModule = /** @class */ (function () {\n    function MatChipsModule() {\n    }\n    MatChipsModule.decorators = [\n        { type: NgModule, args: [{\n                    exports: CHIP_DECLARATIONS,\n                    declarations: CHIP_DECLARATIONS,\n                    providers: [\n                        ErrorStateMatcher,\n                        {\n                            provide: MAT_CHIPS_DEFAULT_OPTIONS,\n                            useValue: /** @type {?} */ ((ɵ0))\n                        }\n                    ]\n                },] },\n    ];\n    return MatChipsModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\nexport { MatChipsModule, MatChipListBase, _MatChipListMixinBase, MatChipListChange, MatChipList, MatChipSelectionChange, MatChipBase, _MatChipMixinBase, MatChipAvatar, MatChipTrailingIcon, MatChip, MatChipRemove, MatChipInput, MAT_CHIPS_DEFAULT_OPTIONS };\n//# sourceMappingURL=chips.es5.js.map\n","var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var ListCache = require('./_ListCache'),\n    Map = require('./_Map'),\n    MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = stubArray;\n","var baseIsSet = require('./_baseIsSet'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var MapCache = require('./_MapCache'),\n    setCacheAdd = require('./_setCacheAdd'),\n    setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nmodule.exports = toSource;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\nmodule.exports = basePropertyDeep;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var hashClear = require('./_hashClear'),\n    hashDelete = require('./_hashDelete'),\n    hashGet = require('./_hashGet'),\n    hashHas = require('./_hashHas'),\n    hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var castPath = require('./_castPath'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isIndex = require('./_isIndex'),\n    isLength = require('./isLength'),\n    toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { __extends } from 'tslib';\nimport { Component, ContentChildren, ElementRef, Input, TemplateRef, ViewChild, ViewEncapsulation, ChangeDetectorRef, ChangeDetectionStrategy, EventEmitter, Output, InjectionToken, Inject, Directive, forwardRef, Host, NgZone, Optional, ViewContainerRef, NgModule } from '@angular/core';\nimport { MatOption, MatOptgroup, MAT_OPTION_PARENT_COMPONENT, mixinDisableRipple, _countGroupLabelsBeforeOption, _getOptionScrollPosition, MatOptionSelectionChange, MatOptionModule, MatCommonModule } from '@angular/material/core';\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { DOWN_ARROW, ENTER, ESCAPE, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport { Overlay, OverlayConfig, ViewportRuler, OverlayModule } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { filter, take, switchMap, delay, tap, map } from 'rxjs/operators';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormField } from '@angular/material/form-field';\nimport { Subscription, defer, fromEvent, merge, of, Subject } from 'rxjs';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Autocomplete IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nvar /** @type {?} */ _uniqueAutocompleteIdCounter = 0;\n/**\n * Event object that is emitted when an autocomplete option is selected.\n */\nvar  /**\n * Event object that is emitted when an autocomplete option is selected.\n */\nMatAutocompleteSelectedEvent = /** @class */ (function () {\n    function MatAutocompleteSelectedEvent(source, option) {\n        this.source = source;\n        this.option = option;\n    }\n    return MatAutocompleteSelectedEvent;\n}());\n/**\n * \\@docs-private\n */\nvar  /**\n * \\@docs-private\n */\nMatAutocompleteBase = /** @class */ (function () {\n    function MatAutocompleteBase() {\n    }\n    return MatAutocompleteBase;\n}());\nvar /** @type {?} */ _MatAutocompleteMixinBase = mixinDisableRipple(MatAutocompleteBase);\n/**\n * Injection token to be used to override the default options for `mat-autocomplete`.\n */\nvar /** @type {?} */ MAT_AUTOCOMPLETE_DEFAULT_OPTIONS = new InjectionToken('mat-autocomplete-default-options', {\n    providedIn: 'root',\n    factory: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY,\n});\n/**\n * \\@docs-private\n * @return {?}\n */\nfunction MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY() {\n    return { autoActiveFirstOption: false };\n}\nvar MatAutocomplete = /** @class */ (function (_super) {\n    __extends(MatAutocomplete, _super);\n    function MatAutocomplete(_changeDetectorRef, _elementRef, defaults) {\n        var _this = _super.call(this) || this;\n        _this._changeDetectorRef = _changeDetectorRef;\n        _this._elementRef = _elementRef;\n        /**\n         * Whether the autocomplete panel should be visible, depending on option length.\n         */\n        _this.showPanel = false;\n        _this._isOpen = false;\n        /**\n         * Function that maps an option's control value to its display value in the trigger.\n         */\n        _this.displayWith = null;\n        /**\n         * Event that is emitted whenever an option from the list is selected.\n         */\n        _this.optionSelected = new EventEmitter();\n        /**\n         * Event that is emitted when the autocomplete panel is opened.\n         */\n        _this.opened = new EventEmitter();\n        /**\n         * Event that is emitted when the autocomplete panel is closed.\n         */\n        _this.closed = new EventEmitter();\n        _this._classList = {};\n        /**\n         * Unique ID to be used by autocomplete trigger's \"aria-owns\" property.\n         */\n        _this.id = \"mat-autocomplete-\" + _uniqueAutocompleteIdCounter++;\n        _this._autoActiveFirstOption = !!defaults.autoActiveFirstOption;\n        return _this;\n    }\n    Object.defineProperty(MatAutocomplete.prototype, \"isOpen\", {\n        /** Whether the autocomplete panel is open. */\n        get: /**\n         * Whether the autocomplete panel is open.\n         * @return {?}\n         */\n        function () { return this._isOpen && this.showPanel; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatAutocomplete.prototype, \"autoActiveFirstOption\", {\n        get: /**\n         * Whether the first option should be highlighted when the autocomplete panel is opened.\n         * Can be configured globally through the `MAT_AUTOCOMPLETE_DEFAULT_OPTIONS` token.\n         * @return {?}\n         */\n        function () { return this._autoActiveFirstOption; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._autoActiveFirstOption = coerceBooleanProperty(value);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatAutocomplete.prototype, \"classList\", {\n        set: /**\n         * Takes classes set on the host mat-autocomplete element and applies them to the panel\n         * inside the overlay container to allow for easy styling.\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            var _this = this;\n            if (value && value.length) {\n                value.split(' ').forEach(function (className) { return _this._classList[className.trim()] = true; });\n                this._elementRef.nativeElement.className = '';\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @return {?}\n     */\n    MatAutocomplete.prototype.ngAfterContentInit = /**\n     * @return {?}\n     */\n    function () {\n        this._keyManager = new ActiveDescendantKeyManager(this.options).withWrap();\n        // Set the initial visibility state.\n        this._setVisibility();\n    };\n    /**\n     * Sets the panel scrollTop. This allows us to manually scroll to display options\n     * above or below the fold, as they are not actually being focused when active.\n     */\n    /**\n     * Sets the panel scrollTop. This allows us to manually scroll to display options\n     * above or below the fold, as they are not actually being focused when active.\n     * @param {?} scrollTop\n     * @return {?}\n     */\n    MatAutocomplete.prototype._setScrollTop = /**\n     * Sets the panel scrollTop. This allows us to manually scroll to display options\n     * above or below the fold, as they are not actually being focused when active.\n     * @param {?} scrollTop\n     * @return {?}\n     */\n    function (scrollTop) {\n        if (this.panel) {\n            this.panel.nativeElement.scrollTop = scrollTop;\n        }\n    };\n    /** Returns the panel's scrollTop. */\n    /**\n     * Returns the panel's scrollTop.\n     * @return {?}\n     */\n    MatAutocomplete.prototype._getScrollTop = /**\n     * Returns the panel's scrollTop.\n     * @return {?}\n     */\n    function () {\n        return this.panel ? this.panel.nativeElement.scrollTop : 0;\n    };\n    /** Panel should hide itself when the option list is empty. */\n    /**\n     * Panel should hide itself when the option list is empty.\n     * @return {?}\n     */\n    MatAutocomplete.prototype._setVisibility = /**\n     * Panel should hide itself when the option list is empty.\n     * @return {?}\n     */\n    function () {\n        this.showPanel = !!this.options.length;\n        this._classList['mat-autocomplete-visible'] = this.showPanel;\n        this._classList['mat-autocomplete-hidden'] = !this.showPanel;\n        this._changeDetectorRef.markForCheck();\n    };\n    /** Emits the `select` event. */\n    /**\n     * Emits the `select` event.\n     * @param {?} option\n     * @return {?}\n     */\n    MatAutocomplete.prototype._emitSelectEvent = /**\n     * Emits the `select` event.\n     * @param {?} option\n     * @return {?}\n     */\n    function (option) {\n        var /** @type {?} */ event = new MatAutocompleteSelectedEvent(this, option);\n        this.optionSelected.emit(event);\n    };\n    MatAutocomplete.decorators = [\n        { type: Component, args: [{selector: 'mat-autocomplete',\n                    template: \"<ng-template><div class=\\\"mat-autocomplete-panel\\\" role=\\\"listbox\\\" [id]=\\\"id\\\" [ngClass]=\\\"_classList\\\" #panel><ng-content></ng-content></div></ng-template>\",\n                    styles: [\".mat-autocomplete-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;visibility:hidden;max-width:none;max-height:256px;position:relative;width:100%}.mat-autocomplete-panel:not([class*=mat-elevation-z]){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.mat-autocomplete-panel.mat-autocomplete-visible{visibility:visible}.mat-autocomplete-panel.mat-autocomplete-hidden{visibility:hidden}@media screen and (-ms-high-contrast:active){.mat-autocomplete-panel{outline:solid 1px}}\"],\n                    encapsulation: ViewEncapsulation.None,\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    exportAs: 'matAutocomplete',\n                    inputs: ['disableRipple'],\n                    host: {\n                        'class': 'mat-autocomplete'\n                    },\n                    providers: [\n                        { provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatAutocomplete }\n                    ]\n                },] },\n    ];\n    /** @nocollapse */\n    MatAutocomplete.ctorParameters = function () { return [\n        { type: ChangeDetectorRef, },\n        { type: ElementRef, },\n        { type: undefined, decorators: [{ type: Inject, args: [MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,] },] },\n    ]; };\n    MatAutocomplete.propDecorators = {\n        \"template\": [{ type: ViewChild, args: [TemplateRef,] },],\n        \"panel\": [{ type: ViewChild, args: ['panel',] },],\n        \"options\": [{ type: ContentChildren, args: [MatOption, { descendants: true },] },],\n        \"optionGroups\": [{ type: ContentChildren, args: [MatOptgroup,] },],\n        \"displayWith\": [{ type: Input },],\n        \"autoActiveFirstOption\": [{ type: Input },],\n        \"panelWidth\": [{ type: Input },],\n        \"optionSelected\": [{ type: Output },],\n        \"opened\": [{ type: Output },],\n        \"closed\": [{ type: Output },],\n        \"classList\": [{ type: Input, args: ['class',] },],\n    };\n    return MatAutocomplete;\n}(_MatAutocompleteMixinBase));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Directive applied to an element to make it usable\n * as a connection point for an autocomplete panel.\n */\nvar MatAutocompleteOrigin = /** @class */ (function () {\n    function MatAutocompleteOrigin(elementRef) {\n        this.elementRef = elementRef;\n    }\n    MatAutocompleteOrigin.decorators = [\n        { type: Directive, args: [{\n                    selector: '[matAutocompleteOrigin]',\n                    exportAs: 'matAutocompleteOrigin',\n                },] },\n    ];\n    /** @nocollapse */\n    MatAutocompleteOrigin.ctorParameters = function () { return [\n        { type: ElementRef, },\n    ]; };\n    return MatAutocompleteOrigin;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * The height of each autocomplete option.\n */\nvar /** @type {?} */ AUTOCOMPLETE_OPTION_HEIGHT = 48;\n/**\n * The total height of the autocomplete panel.\n */\nvar /** @type {?} */ AUTOCOMPLETE_PANEL_HEIGHT = 256;\n/**\n * Injection token that determines the scroll handling while the autocomplete panel is open.\n */\nvar /** @type {?} */ MAT_AUTOCOMPLETE_SCROLL_STRATEGY = new InjectionToken('mat-autocomplete-scroll-strategy');\n/**\n * \\@docs-private\n * @param {?} overlay\n * @return {?}\n */\nfunction MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY(overlay) {\n    return function () { return overlay.scrollStrategies.reposition(); };\n}\n/**\n * \\@docs-private\n */\nvar /** @type {?} */ MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n    provide: MAT_AUTOCOMPLETE_SCROLL_STRATEGY,\n    deps: [Overlay],\n    useFactory: MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY,\n};\n/**\n * Provider that allows the autocomplete to register as a ControlValueAccessor.\n * \\@docs-private\n */\nvar /** @type {?} */ MAT_AUTOCOMPLETE_VALUE_ACCESSOR = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(function () { return MatAutocompleteTrigger; }),\n    multi: true\n};\n/**\n * Creates an error to be thrown when attempting to use an autocomplete trigger without a panel.\n * @return {?}\n */\nfunction getMatAutocompleteMissingPanelError() {\n    return Error('Attempting to open an undefined instance of `mat-autocomplete`. ' +\n        'Make sure that the id passed to the `matAutocomplete` is correct and that ' +\n        'you\\'re attempting to open it after the ngAfterContentInit hook.');\n}\nvar MatAutocompleteTrigger = /** @class */ (function () {\n    function MatAutocompleteTrigger(_element, _overlay, _viewContainerRef, _zone, _changeDetectorRef, _scrollStrategy, _dir, _formField, _document, _viewportRuler) {\n        var _this = this;\n        this._element = _element;\n        this._overlay = _overlay;\n        this._viewContainerRef = _viewContainerRef;\n        this._zone = _zone;\n        this._changeDetectorRef = _changeDetectorRef;\n        this._scrollStrategy = _scrollStrategy;\n        this._dir = _dir;\n        this._formField = _formField;\n        this._document = _document;\n        this._viewportRuler = _viewportRuler;\n        this._componentDestroyed = false;\n        this._autocompleteDisabled = false;\n        /**\n         * Whether or not the label state is being overridden.\n         */\n        this._manuallyFloatingLabel = false;\n        /**\n         * Subscription to viewport size changes.\n         */\n        this._viewportSubscription = Subscription.EMPTY;\n        /**\n         * Whether the autocomplete can open the next time it is focused. Used to prevent a focused,\n         * closed autocomplete from being reopened if the user switches to another browser tab and then\n         * comes back.\n         */\n        this._canOpenOnNextFocus = true;\n        /**\n         * Stream of keyboard events that can close the panel.\n         */\n        this._closeKeyEventStream = new Subject();\n        /**\n         * Event handler for when the window is blurred. Needs to be an\n         * arrow function in order to preserve the context.\n         */\n        this._windowBlurHandler = function () {\n            // If the user blurred the window while the autocomplete is focused, it means that it'll be\n            // refocused when they come back. In this case we want to skip the first focus event, if the\n            // pane was closed, in order to avoid reopening it unintentionally.\n            // If the user blurred the window while the autocomplete is focused, it means that it'll be\n            // refocused when they come back. In this case we want to skip the first focus event, if the\n            // pane was closed, in order to avoid reopening it unintentionally.\n            _this._canOpenOnNextFocus =\n                document.activeElement !== _this._element.nativeElement || _this.panelOpen;\n        };\n        /**\n         * `View -> model callback called when value changes`\n         */\n        this._onChange = function () { };\n        /**\n         * `View -> model callback called when autocomplete has been touched`\n         */\n        this._onTouched = function () { };\n        /**\n         * `autocomplete` attribute to be set on the input element.\n         * \\@docs-private\n         */\n        this.autocompleteAttribute = 'off';\n        this._overlayAttached = false;\n        /**\n         * Stream of autocomplete option selections.\n         */\n        this.optionSelections = defer(function () {\n            if (_this.autocomplete && _this.autocomplete.options) {\n                return merge.apply(void 0, _this.autocomplete.options.map(function (option) { return option.onSelectionChange; }));\n            }\n            // If there are any subscribers before `ngAfterViewInit`, the `autocomplete` will be undefined.\n            // Return a stream that we'll replace with the real one once everything is in place.\n            return _this._zone.onStable\n                .asObservable()\n                .pipe(take(1), switchMap(function () { return _this.optionSelections; }));\n        });\n        if (typeof window !== 'undefined') {\n            _zone.runOutsideAngular(function () {\n                window.addEventListener('blur', _this._windowBlurHandler);\n            });\n        }\n    }\n    Object.defineProperty(MatAutocompleteTrigger.prototype, \"autocompleteDisabled\", {\n        get: /**\n         * Whether the autocomplete is disabled. When disabled, the element will\n         * act as a regular input and the user won't be able to open the panel.\n         * @return {?}\n         */\n        function () { return this._autocompleteDisabled; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._autocompleteDisabled = coerceBooleanProperty(value);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        if (typeof window !== 'undefined') {\n            window.removeEventListener('blur', this._windowBlurHandler);\n        }\n        this._viewportSubscription.unsubscribe();\n        this._componentDestroyed = true;\n        this._destroyPanel();\n        this._closeKeyEventStream.complete();\n    };\n    Object.defineProperty(MatAutocompleteTrigger.prototype, \"panelOpen\", {\n        /** Whether or not the autocomplete panel is open. */\n        get: /**\n         * Whether or not the autocomplete panel is open.\n         * @return {?}\n         */\n        function () {\n            return this._overlayAttached && this.autocomplete.showPanel;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /** Opens the autocomplete suggestion panel. */\n    /**\n     * Opens the autocomplete suggestion panel.\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype.openPanel = /**\n     * Opens the autocomplete suggestion panel.\n     * @return {?}\n     */\n    function () {\n        this._attachOverlay();\n        this._floatLabel();\n    };\n    /** Closes the autocomplete suggestion panel. */\n    /**\n     * Closes the autocomplete suggestion panel.\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype.closePanel = /**\n     * Closes the autocomplete suggestion panel.\n     * @return {?}\n     */\n    function () {\n        this._resetLabel();\n        if (!this._overlayAttached) {\n            return;\n        }\n        if (this.panelOpen) {\n            // Only emit if the panel was visible.\n            this.autocomplete.closed.emit();\n        }\n        this.autocomplete._isOpen = this._overlayAttached = false;\n        if (this._overlayRef && this._overlayRef.hasAttached()) {\n            this._overlayRef.detach();\n            this._closingActionsSubscription.unsubscribe();\n        }\n        // Note that in some cases this can end up being called after the component is destroyed.\n        // Add a check to ensure that we don't try to run change detection on a destroyed view.\n        if (!this._componentDestroyed) {\n            // We need to trigger change detection manually, because\n            // `fromEvent` doesn't seem to do it at the proper time.\n            // This ensures that the label is reset when the\n            // user clicks outside.\n            this._changeDetectorRef.detectChanges();\n        }\n    };\n    Object.defineProperty(MatAutocompleteTrigger.prototype, \"panelClosingActions\", {\n        /**\n         * A stream of actions that should close the autocomplete panel, including\n         * when an option is selected, on blur, and when TAB is pressed.\n         */\n        get: /**\n         * A stream of actions that should close the autocomplete panel, including\n         * when an option is selected, on blur, and when TAB is pressed.\n         * @return {?}\n         */\n        function () {\n            var _this = this;\n            return merge(this.optionSelections, this.autocomplete._keyManager.tabOut.pipe(filter(function () { return _this._overlayAttached; })), this._closeKeyEventStream, this._outsideClickStream, this._overlayRef ?\n                this._overlayRef.detachments().pipe(filter(function () { return _this._overlayAttached; })) :\n                of()).pipe(\n            // Normalize the output so we return a consistent type.\n            map(function (event) { return event instanceof MatOptionSelectionChange ? event : null; }));\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatAutocompleteTrigger.prototype, \"activeOption\", {\n        /** The currently active option, coerced to MatOption type. */\n        get: /**\n         * The currently active option, coerced to MatOption type.\n         * @return {?}\n         */\n        function () {\n            if (this.autocomplete && this.autocomplete._keyManager) {\n                return this.autocomplete._keyManager.activeItem;\n            }\n            return null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatAutocompleteTrigger.prototype, \"_outsideClickStream\", {\n        get: /**\n         * Stream of clicks outside of the autocomplete panel.\n         * @return {?}\n         */\n        function () {\n            var _this = this;\n            if (!this._document) {\n                return of(null);\n            }\n            return merge(fromEvent(this._document, 'click'), fromEvent(this._document, 'touchend'))\n                .pipe(filter(function (event) {\n                var /** @type {?} */ clickTarget = /** @type {?} */ (event.target);\n                var /** @type {?} */ formField = _this._formField ?\n                    _this._formField._elementRef.nativeElement : null;\n                return _this._overlayAttached &&\n                    clickTarget !== _this._element.nativeElement &&\n                    (!formField || !formField.contains(clickTarget)) &&\n                    (!!_this._overlayRef && !_this._overlayRef.overlayElement.contains(clickTarget));\n            }));\n        },\n        enumerable: true,\n        configurable: true\n    });\n    // Implemented as part of ControlValueAccessor.\n    /**\n     * @param {?} value\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype.writeValue = /**\n     * @param {?} value\n     * @return {?}\n     */\n    function (value) {\n        var _this = this;\n        Promise.resolve(null).then(function () { return _this._setTriggerValue(value); });\n    };\n    // Implemented as part of ControlValueAccessor.\n    /**\n     * @param {?} fn\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype.registerOnChange = /**\n     * @param {?} fn\n     * @return {?}\n     */\n    function (fn) {\n        this._onChange = fn;\n    };\n    // Implemented as part of ControlValueAccessor.\n    /**\n     * @param {?} fn\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype.registerOnTouched = /**\n     * @param {?} fn\n     * @return {?}\n     */\n    function (fn) {\n        this._onTouched = fn;\n    };\n    // Implemented as part of ControlValueAccessor.\n    /**\n     * @param {?} isDisabled\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype.setDisabledState = /**\n     * @param {?} isDisabled\n     * @return {?}\n     */\n    function (isDisabled) {\n        this._element.nativeElement.disabled = isDisabled;\n    };\n    /**\n     * @param {?} event\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._handleKeydown = /**\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        var /** @type {?} */ keyCode = event.keyCode;\n        // Prevent the default action on all escape key presses. This is here primarily to bring IE\n        // in line with other browsers. By default, pressing escape on IE will cause it to revert\n        // the input value to the one that it had on focus, however it won't dispatch any events\n        // which means that the model value will be out of sync with the view.\n        if (keyCode === ESCAPE) {\n            event.preventDefault();\n        }\n        // Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.\n        // See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction\n        if (this.panelOpen && (keyCode === ESCAPE || (keyCode === UP_ARROW && event.altKey))) {\n            this._resetActiveItem();\n            this._closeKeyEventStream.next();\n            event.stopPropagation();\n        }\n        else if (this.activeOption && keyCode === ENTER && this.panelOpen) {\n            this.activeOption._selectViaInteraction();\n            this._resetActiveItem();\n            event.preventDefault();\n        }\n        else if (this.autocomplete) {\n            var /** @type {?} */ prevActiveItem = this.autocomplete._keyManager.activeItem;\n            var /** @type {?} */ isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n            if (this.panelOpen || keyCode === TAB) {\n                this.autocomplete._keyManager.onKeydown(event);\n            }\n            else if (isArrowKey && this._canOpen()) {\n                this.openPanel();\n            }\n            if (isArrowKey || this.autocomplete._keyManager.activeItem !== prevActiveItem) {\n                this._scrollToOption();\n            }\n        }\n    };\n    /**\n     * @param {?} event\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._handleInput = /**\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        var /** @type {?} */ target = /** @type {?} */ (event.target);\n        var /** @type {?} */ value = target.value;\n        // Based on `NumberValueAccessor` from forms.\n        if (target.type === 'number') {\n            value = value == '' ? null : parseFloat(value);\n        }\n        // If the input has a placeholder, IE will fire the `input` event on page load,\n        // focus and blur, in addition to when the user actually changed the value. To\n        // filter out all of the extra events, we save the value on focus and between\n        // `input` events, and we check whether it changed.\n        // See: https://connect.microsoft.com/IE/feedback/details/885747/\n        if (this._previousValue !== value && document.activeElement === event.target) {\n            this._previousValue = value;\n            this._onChange(value);\n            if (this._canOpen()) {\n                this.openPanel();\n            }\n        }\n    };\n    /**\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._handleFocus = /**\n     * @return {?}\n     */\n    function () {\n        if (!this._canOpenOnNextFocus) {\n            this._canOpenOnNextFocus = true;\n        }\n        else if (this._canOpen()) {\n            this._previousValue = this._element.nativeElement.value;\n            this._attachOverlay();\n            this._floatLabel(true);\n        }\n    };\n    /**\n     * In \"auto\" mode, the label will animate down as soon as focus is lost.\n     * This causes the value to jump when selecting an option with the mouse.\n     * This method manually floats the label until the panel can be closed.\n     * @param {?=} shouldAnimate Whether the label should be animated when it is floated.\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._floatLabel = /**\n     * In \"auto\" mode, the label will animate down as soon as focus is lost.\n     * This causes the value to jump when selecting an option with the mouse.\n     * This method manually floats the label until the panel can be closed.\n     * @param {?=} shouldAnimate Whether the label should be animated when it is floated.\n     * @return {?}\n     */\n    function (shouldAnimate) {\n        if (shouldAnimate === void 0) { shouldAnimate = false; }\n        if (this._formField && this._formField.floatLabel === 'auto') {\n            if (shouldAnimate) {\n                this._formField._animateAndLockLabel();\n            }\n            else {\n                this._formField.floatLabel = 'always';\n            }\n            this._manuallyFloatingLabel = true;\n        }\n    };\n    /**\n     * If the label has been manually elevated, return it to its normal state.\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._resetLabel = /**\n     * If the label has been manually elevated, return it to its normal state.\n     * @return {?}\n     */\n    function () {\n        if (this._manuallyFloatingLabel) {\n            this._formField.floatLabel = 'auto';\n            this._manuallyFloatingLabel = false;\n        }\n    };\n    /**\n     * Given that we are not actually focusing active options, we must manually adjust scroll\n     * to reveal options below the fold. First, we find the offset of the option from the top\n     * of the panel. If that offset is below the fold, the new scrollTop will be the offset -\n     * the panel height + the option height, so the active option will be just visible at the\n     * bottom of the panel. If that offset is above the top of the visible panel, the new scrollTop\n     * will become the offset. If that offset is visible within the panel already, the scrollTop is\n     * not adjusted.\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._scrollToOption = /**\n     * Given that we are not actually focusing active options, we must manually adjust scroll\n     * to reveal options below the fold. First, we find the offset of the option from the top\n     * of the panel. If that offset is below the fold, the new scrollTop will be the offset -\n     * the panel height + the option height, so the active option will be just visible at the\n     * bottom of the panel. If that offset is above the top of the visible panel, the new scrollTop\n     * will become the offset. If that offset is visible within the panel already, the scrollTop is\n     * not adjusted.\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ index = this.autocomplete._keyManager.activeItemIndex || 0;\n        var /** @type {?} */ labelCount = _countGroupLabelsBeforeOption(index, this.autocomplete.options, this.autocomplete.optionGroups);\n        var /** @type {?} */ newScrollPosition = _getOptionScrollPosition(index + labelCount, AUTOCOMPLETE_OPTION_HEIGHT, this.autocomplete._getScrollTop(), AUTOCOMPLETE_PANEL_HEIGHT);\n        this.autocomplete._setScrollTop(newScrollPosition);\n    };\n    /**\n     * This method listens to a stream of panel closing actions and resets the\n     * stream every time the option list changes.\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._subscribeToClosingActions = /**\n     * This method listens to a stream of panel closing actions and resets the\n     * stream every time the option list changes.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        var /** @type {?} */ firstStable = this._zone.onStable.asObservable().pipe(take(1));\n        var /** @type {?} */ optionChanges = this.autocomplete.options.changes.pipe(tap(function () { return _this._positionStrategy.reapplyLastPosition(); }), \n        // Defer emitting to the stream until the next tick, because changing\n        // bindings in here will cause \"changed after checked\" errors.\n        delay(0));\n        // When the zone is stable initially, and when the option list changes...\n        return merge(firstStable, optionChanges)\n            .pipe(\n        // create a new stream of panelClosingActions, replacing any previous streams\n        // that were created, and flatten it so our stream only emits closing events...\n        switchMap(function () {\n            _this._resetActiveItem();\n            _this.autocomplete._setVisibility();\n            if (_this.panelOpen) {\n                /** @type {?} */ ((_this._overlayRef)).updatePosition();\n            }\n            return _this.panelClosingActions;\n        }), \n        // when the first closing event occurs...\n        take(1))\n            .subscribe(function (event) { return _this._setValueAndClose(event); });\n    };\n    /**\n     * Destroys the autocomplete suggestion panel.\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._destroyPanel = /**\n     * Destroys the autocomplete suggestion panel.\n     * @return {?}\n     */\n    function () {\n        if (this._overlayRef) {\n            this.closePanel();\n            this._overlayRef.dispose();\n            this._overlayRef = null;\n        }\n    };\n    /**\n     * @param {?} value\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._setTriggerValue = /**\n     * @param {?} value\n     * @return {?}\n     */\n    function (value) {\n        var /** @type {?} */ toDisplay = this.autocomplete && this.autocomplete.displayWith ?\n            this.autocomplete.displayWith(value) :\n            value;\n        // Simply falling back to an empty string if the display value is falsy does not work properly.\n        // The display value can also be the number zero and shouldn't fall back to an empty string.\n        var /** @type {?} */ inputValue = toDisplay != null ? toDisplay : '';\n        // If it's used within a `MatFormField`, we should set it through the property so it can go\n        // through change detection.\n        if (this._formField) {\n            this._formField._control.value = inputValue;\n        }\n        else {\n            this._element.nativeElement.value = inputValue;\n        }\n    };\n    /**\n     * This method closes the panel, and if a value is specified, also sets the associated\n     * control to that value. It will also mark the control as dirty if this interaction\n     * stemmed from the user.\n     * @param {?} event\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._setValueAndClose = /**\n     * This method closes the panel, and if a value is specified, also sets the associated\n     * control to that value. It will also mark the control as dirty if this interaction\n     * stemmed from the user.\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        if (event && event.source) {\n            this._clearPreviousSelectedOption(event.source);\n            this._setTriggerValue(event.source.value);\n            this._onChange(event.source.value);\n            this._element.nativeElement.focus();\n            this.autocomplete._emitSelectEvent(event.source);\n        }\n        this.closePanel();\n    };\n    /**\n     * Clear any previous selected option and emit a selection change event for this option\n     * @param {?} skip\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._clearPreviousSelectedOption = /**\n     * Clear any previous selected option and emit a selection change event for this option\n     * @param {?} skip\n     * @return {?}\n     */\n    function (skip) {\n        this.autocomplete.options.forEach(function (option) {\n            if (option != skip && option.selected) {\n                option.deselect();\n            }\n        });\n    };\n    /**\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._attachOverlay = /**\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        if (!this.autocomplete) {\n            throw getMatAutocompleteMissingPanelError();\n        }\n        if (!this._overlayRef) {\n            this._portal = new TemplatePortal(this.autocomplete.template, this._viewContainerRef);\n            this._overlayRef = this._overlay.create(this._getOverlayConfig());\n            if (this._viewportRuler) {\n                this._viewportSubscription = this._viewportRuler.change().subscribe(function () {\n                    if (_this.panelOpen && _this._overlayRef) {\n                        _this._overlayRef.updateSize({ width: _this._getPanelWidth() });\n                    }\n                });\n            }\n        }\n        else {\n            // Update the panel width and direction, in case anything has changed.\n            this._overlayRef.updateSize({ width: this._getPanelWidth() });\n        }\n        if (this._overlayRef && !this._overlayRef.hasAttached()) {\n            this._overlayRef.attach(this._portal);\n            this._closingActionsSubscription = this._subscribeToClosingActions();\n        }\n        var /** @type {?} */ wasOpen = this.panelOpen;\n        this.autocomplete._setVisibility();\n        this.autocomplete._isOpen = this._overlayAttached = true;\n        // We need to do an extra `panelOpen` check in here, because the\n        // autocomplete won't be shown if there are no options.\n        if (this.panelOpen && wasOpen !== this.panelOpen) {\n            this.autocomplete.opened.emit();\n        }\n    };\n    /**\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._getOverlayConfig = /**\n     * @return {?}\n     */\n    function () {\n        return new OverlayConfig({\n            positionStrategy: this._getOverlayPosition(),\n            scrollStrategy: this._scrollStrategy(),\n            width: this._getPanelWidth(),\n            direction: this._dir\n        });\n    };\n    /**\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._getOverlayPosition = /**\n     * @return {?}\n     */\n    function () {\n        this._positionStrategy = this._overlay.position()\n            .flexibleConnectedTo(this._getConnectedElement())\n            .withFlexibleDimensions(false)\n            .withPush(false)\n            .withPositions([\n            { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n            { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' }\n        ]);\n        return this._positionStrategy;\n    };\n    /**\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._getConnectedElement = /**\n     * @return {?}\n     */\n    function () {\n        if (this.connectedTo) {\n            return this.connectedTo.elementRef;\n        }\n        return this._formField ? this._formField.getConnectedOverlayOrigin() : this._element;\n    };\n    /**\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._getPanelWidth = /**\n     * @return {?}\n     */\n    function () {\n        return this.autocomplete.panelWidth || this._getHostWidth();\n    };\n    /**\n     * Returns the width of the input element, so the panel width can match it.\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._getHostWidth = /**\n     * Returns the width of the input element, so the panel width can match it.\n     * @return {?}\n     */\n    function () {\n        return this._getConnectedElement().nativeElement.getBoundingClientRect().width;\n    };\n    /**\n     * Resets the active item to -1 so arrow events will activate the\n     * correct options, or to 0 if the consumer opted into it.\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._resetActiveItem = /**\n     * Resets the active item to -1 so arrow events will activate the\n     * correct options, or to 0 if the consumer opted into it.\n     * @return {?}\n     */\n    function () {\n        this.autocomplete._keyManager.setActiveItem(this.autocomplete.autoActiveFirstOption ? 0 : -1);\n    };\n    /**\n     * Determines whether the panel can be opened.\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._canOpen = /**\n     * Determines whether the panel can be opened.\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ element = this._element.nativeElement;\n        return !element.readOnly && !element.disabled && !this._autocompleteDisabled;\n    };\n    MatAutocompleteTrigger.decorators = [\n        { type: Directive, args: [{\n                    selector: \"input[matAutocomplete], textarea[matAutocomplete]\",\n                    host: {\n                        '[attr.autocomplete]': 'autocompleteAttribute',\n                        '[attr.role]': 'autocompleteDisabled ? null : \"combobox\"',\n                        '[attr.aria-autocomplete]': 'autocompleteDisabled ? null : \"list\"',\n                        '[attr.aria-activedescendant]': 'activeOption?.id',\n                        '[attr.aria-expanded]': 'autocompleteDisabled ? null : panelOpen.toString()',\n                        '[attr.aria-owns]': '(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id',\n                        // Note: we use `focusin`, as opposed to `focus`, in order to open the panel\n                        // a little earlier. This avoids issues where IE delays the focusing of the input.\n                        '(focusin)': '_handleFocus()',\n                        '(blur)': '_onTouched()',\n                        '(input)': '_handleInput($event)',\n                        '(keydown)': '_handleKeydown($event)',\n                    },\n                    exportAs: 'matAutocompleteTrigger',\n                    providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR]\n                },] },\n    ];\n    /** @nocollapse */\n    MatAutocompleteTrigger.ctorParameters = function () { return [\n        { type: ElementRef, },\n        { type: Overlay, },\n        { type: ViewContainerRef, },\n        { type: NgZone, },\n        { type: ChangeDetectorRef, },\n        { type: undefined, decorators: [{ type: Inject, args: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY,] },] },\n        { type: Directionality, decorators: [{ type: Optional },] },\n        { type: MatFormField, decorators: [{ type: Optional }, { type: Host },] },\n        { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] },] },\n        { type: ViewportRuler, },\n    ]; };\n    MatAutocompleteTrigger.propDecorators = {\n        \"autocomplete\": [{ type: Input, args: ['matAutocomplete',] },],\n        \"connectedTo\": [{ type: Input, args: ['matAutocompleteConnectedTo',] },],\n        \"autocompleteAttribute\": [{ type: Input, args: ['autocomplete',] },],\n        \"autocompleteDisabled\": [{ type: Input, args: ['matAutocompleteDisabled',] },],\n    };\n    return MatAutocompleteTrigger;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nvar MatAutocompleteModule = /** @class */ (function () {\n    function MatAutocompleteModule() {\n    }\n    MatAutocompleteModule.decorators = [\n        { type: NgModule, args: [{\n                    imports: [MatOptionModule, OverlayModule, MatCommonModule, CommonModule],\n                    exports: [\n                        MatAutocomplete,\n                        MatOptionModule,\n                        MatAutocompleteTrigger,\n                        MatAutocompleteOrigin,\n                        MatCommonModule\n                    ],\n                    declarations: [MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteOrigin],\n                    providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER],\n                },] },\n    ];\n    return MatAutocompleteModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\nexport { MatAutocompleteSelectedEvent, MatAutocompleteBase, _MatAutocompleteMixinBase, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY, MatAutocomplete, MatAutocompleteModule, AUTOCOMPLETE_OPTION_HEIGHT, AUTOCOMPLETE_PANEL_HEIGHT, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER, MAT_AUTOCOMPLETE_VALUE_ACCESSOR, getMatAutocompleteMissingPanelError, MatAutocompleteTrigger, MatAutocompleteOrigin as ɵa29 };\n//# sourceMappingURL=autocomplete.es5.js.map\n","var isArray = require('./isArray'),\n    isKey = require('./_isKey'),\n    stringToPath = require('./_stringToPath'),\n    toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\nmodule.exports = cloneBuffer;\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { UploadValidation } from './upload-validation';\nvar AllowedExtensionsValidation = /** @class */ (function (_super) {\n    __extends(AllowedExtensionsValidation, _super);\n    function AllowedExtensionsValidation(params, i18n) {\n        var _this = _super.call(this) || this;\n        _this.params = params;\n        _this.i18n = i18n;\n        _this.errorMessage = _this.i18n.t('Only these file types are allowed: :extensions', { extensions: _this.params.extensions.join(', ') });\n        return _this;\n    }\n    AllowedExtensionsValidation.prototype.fails = function (file) {\n        return !this.params.extensions.some(function (extension) {\n            return extension === file.extension;\n        });\n    };\n    return AllowedExtensionsValidation;\n}(UploadValidation));\nexport { AllowedExtensionsValidation };\n","import { UploadedFile } from '../../uploaded-file';\r\nimport { UploadValidation } from './upload-validation';\r\nimport { Translations } from '../../../core/translations/translations.service';\r\n\r\nexport class AllowedExtensionsValidation extends UploadValidation {\r\n    constructor(\r\n        protected params: {extensions: string[]},\r\n        protected i18n: Translations\r\n    ) {\r\n        super();\r\n\r\n        this.errorMessage = this.i18n.t(\r\n            'Only these file types are allowed: :extensions',\r\n            {extensions: this.params.extensions.join(', ')}\r\n        );\r\n    }\r\n\r\n    public fails(file: UploadedFile) {\r\n        return ! this.params.extensions.some(extension => {\r\n            return extension === file.extension;\r\n        });\r\n    }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { prettyBytes } from '../core/utils/pretty-bytes';\r\n\r\n@Pipe({\r\n    name: 'formattedFileSize',\r\n    pure: true,\r\n})\r\nexport class FormattedFileSizePipe implements PipeTransform {\r\n    transform(bytes: number = 0, precision?: number|string): string {\r\n        if (isNaN(parseFloat(String(bytes))) || ! isFinite(bytes)) return '-';\r\n        return prettyBytes(bytes, precision);\r\n    }\r\n}\r\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = baseProperty;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nmodule.exports = stackClear;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeys = require('./_baseKeys'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = nativeKeysIn;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nmodule.exports = mapToArray;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var isPrototype = require('./_isPrototype'),\n    nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeys;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { __extends } from 'tslib';\nimport { CDK_TABLE_TEMPLATE, CdkTable, CdkCell, CdkCellDef, CdkColumnDef, CdkFooterCell, CdkFooterCellDef, CdkHeaderCell, CdkHeaderCellDef, CDK_ROW_TEMPLATE, CdkFooterRow, CdkFooterRowDef, CdkHeaderRow, CdkHeaderRowDef, CdkRow, CdkRowDef, CdkTableModule, DataSource } from '@angular/cdk/table';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, Directive, ElementRef, Input, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCommonModule } from '@angular/material/core';\nimport { _isNumberValue } from '@angular/cdk/coercion';\nimport { BehaviorSubject, combineLatest, merge, of, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n// TODO(devversion): workaround for https://github.com/angular/material2/issues/12760\nvar /** @type {?} */ _CdkTable = CdkTable;\n/**\n * Wrapper for the CdkTable with Material design styles.\n * @template T\n */\nvar MatTable = /** @class */ (function (_super) {\n    __extends(MatTable, _super);\n    function MatTable() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * Overrides the sticky CSS class set by the `CdkTable`.\n         */\n        _this.stickyCssClass = 'mat-table-sticky';\n        return _this;\n    }\n    MatTable.decorators = [\n        { type: Component, args: [{selector: 'mat-table, table[mat-table]',\n                    exportAs: 'matTable',\n                    template: CDK_TABLE_TEMPLATE,\n                    styles: [\"mat-table{display:block}mat-header-row{min-height:56px}mat-footer-row,mat-row{min-height:48px}mat-footer-row,mat-header-row,mat-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-footer-row::after,mat-header-row::after,mat-row::after{display:inline-block;min-height:inherit;content:''}mat-cell:first-of-type,mat-footer-cell:first-of-type,mat-header-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type,[dir=rtl] mat-footer-cell:first-of-type,[dir=rtl] mat-header-cell:first-of-type{padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-footer-cell:last-of-type,mat-header-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type,[dir=rtl] mat-footer-cell:last-of-type,[dir=rtl] mat-header-cell:last-of-type{padding-right:0;padding-left:24px}mat-cell,mat-footer-cell,mat-header-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}table.mat-table{border-spacing:0}tr.mat-header-row{height:56px}tr.mat-footer-row,tr.mat-row{height:48px}th.mat-header-cell{text-align:left}td.mat-cell,td.mat-footer-cell,th.mat-header-cell{padding:0;border-bottom-width:1px;border-bottom-style:solid}td.mat-cell:first-of-type,td.mat-footer-cell:first-of-type,th.mat-header-cell:first-of-type{padding-left:24px}td.mat-cell:last-of-type,td.mat-footer-cell:last-of-type,th.mat-header-cell:last-of-type{padding-right:24px}\"],\n                    host: {\n                        'class': 'mat-table',\n                    },\n                    encapsulation: ViewEncapsulation.None,\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                },] },\n    ];\n    return MatTable;\n}(_CdkTable));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n// TODO(devversion): workaround for https://github.com/angular/material2/issues/12760\nvar /** @type {?} */ _CdkCellDef = CdkCellDef;\nvar /** @type {?} */ _CdkHeaderCellDef = CdkHeaderCellDef;\nvar /** @type {?} */ _CdkFooterCellDef = CdkFooterCellDef;\n/**\n * Cell definition for the mat-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\nvar MatCellDef = /** @class */ (function (_super) {\n    __extends(MatCellDef, _super);\n    function MatCellDef() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    MatCellDef.decorators = [\n        { type: Directive, args: [{\n                    selector: '[matCellDef]',\n                    providers: [{ provide: CdkCellDef, useExisting: MatCellDef }]\n                },] },\n    ];\n    return MatCellDef;\n}(_CdkCellDef));\n/**\n * Header cell definition for the mat-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\nvar MatHeaderCellDef = /** @class */ (function (_super) {\n    __extends(MatHeaderCellDef, _super);\n    function MatHeaderCellDef() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    MatHeaderCellDef.decorators = [\n        { type: Directive, args: [{\n                    selector: '[matHeaderCellDef]',\n                    providers: [{ provide: CdkHeaderCellDef, useExisting: MatHeaderCellDef }]\n                },] },\n    ];\n    return MatHeaderCellDef;\n}(_CdkHeaderCellDef));\n/**\n * Footer cell definition for the mat-table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\nvar MatFooterCellDef = /** @class */ (function (_super) {\n    __extends(MatFooterCellDef, _super);\n    function MatFooterCellDef() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    MatFooterCellDef.decorators = [\n        { type: Directive, args: [{\n                    selector: '[matFooterCellDef]',\n                    providers: [{ provide: CdkFooterCellDef, useExisting: MatFooterCellDef }]\n                },] },\n    ];\n    return MatFooterCellDef;\n}(_CdkFooterCellDef));\n/**\n * Column definition for the mat-table.\n * Defines a set of cells available for a table column.\n */\nvar MatColumnDef = /** @class */ (function (_super) {\n    __extends(MatColumnDef, _super);\n    function MatColumnDef() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    MatColumnDef.decorators = [\n        { type: Directive, args: [{\n                    selector: '[matColumnDef]',\n                    providers: [{ provide: CdkColumnDef, useExisting: MatColumnDef }],\n                },] },\n    ];\n    /** @nocollapse */\n    MatColumnDef.propDecorators = {\n        \"name\": [{ type: Input, args: ['matColumnDef',] },],\n        \"sticky\": [{ type: Input },],\n        \"stickyEnd\": [{ type: Input },],\n    };\n    return MatColumnDef;\n}(CdkColumnDef));\n/**\n * Header cell template container that adds the right classes and role.\n */\nvar MatHeaderCell = /** @class */ (function (_super) {\n    __extends(MatHeaderCell, _super);\n    function MatHeaderCell(columnDef, elementRef) {\n        var _this = _super.call(this, columnDef, elementRef) || this;\n        elementRef.nativeElement.classList.add(\"mat-column-\" + columnDef.cssClassFriendlyName);\n        return _this;\n    }\n    MatHeaderCell.decorators = [\n        { type: Directive, args: [{\n                    selector: 'mat-header-cell, th[mat-header-cell]',\n                    host: {\n                        'class': 'mat-header-cell',\n                        'role': 'columnheader',\n                    },\n                },] },\n    ];\n    /** @nocollapse */\n    MatHeaderCell.ctorParameters = function () { return [\n        { type: CdkColumnDef, },\n        { type: ElementRef, },\n    ]; };\n    return MatHeaderCell;\n}(CdkHeaderCell));\n/**\n * Footer cell template container that adds the right classes and role.\n */\nvar MatFooterCell = /** @class */ (function (_super) {\n    __extends(MatFooterCell, _super);\n    function MatFooterCell(columnDef, elementRef) {\n        var _this = _super.call(this, columnDef, elementRef) || this;\n        elementRef.nativeElement.classList.add(\"mat-column-\" + columnDef.cssClassFriendlyName);\n        return _this;\n    }\n    MatFooterCell.decorators = [\n        { type: Directive, args: [{\n                    selector: 'mat-footer-cell, td[mat-footer-cell]',\n                    host: {\n                        'class': 'mat-footer-cell',\n                        'role': 'gridcell',\n                    },\n                },] },\n    ];\n    /** @nocollapse */\n    MatFooterCell.ctorParameters = function () { return [\n        { type: CdkColumnDef, },\n        { type: ElementRef, },\n    ]; };\n    return MatFooterCell;\n}(CdkFooterCell));\n/**\n * Cell template container that adds the right classes and role.\n */\nvar MatCell = /** @class */ (function (_super) {\n    __extends(MatCell, _super);\n    function MatCell(columnDef, elementRef) {\n        var _this = _super.call(this, columnDef, elementRef) || this;\n        elementRef.nativeElement.classList.add(\"mat-column-\" + columnDef.cssClassFriendlyName);\n        return _this;\n    }\n    MatCell.decorators = [\n        { type: Directive, args: [{\n                    selector: 'mat-cell, td[mat-cell]',\n                    host: {\n                        'class': 'mat-cell',\n                        'role': 'gridcell',\n                    },\n                },] },\n    ];\n    /** @nocollapse */\n    MatCell.ctorParameters = function () { return [\n        { type: CdkColumnDef, },\n        { type: ElementRef, },\n    ]; };\n    return MatCell;\n}(CdkCell));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n// TODO(devversion): workaround for https://github.com/angular/material2/issues/12760\nvar /** @type {?} */ _CdkHeaderRowDef = CdkHeaderRowDef;\nvar /** @type {?} */ _CdkFooterRowDef = CdkFooterRowDef;\nvar /** @type {?} */ _CdkRowDef = CdkRowDef;\n/**\n * Header row definition for the mat-table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\nvar MatHeaderRowDef = /** @class */ (function (_super) {\n    __extends(MatHeaderRowDef, _super);\n    function MatHeaderRowDef() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    MatHeaderRowDef.decorators = [\n        { type: Directive, args: [{\n                    selector: '[matHeaderRowDef]',\n                    providers: [{ provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef }],\n                    inputs: ['columns: matHeaderRowDef', 'sticky: matHeaderRowDefSticky'],\n                },] },\n    ];\n    return MatHeaderRowDef;\n}(_CdkHeaderRowDef));\n/**\n * Footer row definition for the mat-table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\nvar MatFooterRowDef = /** @class */ (function (_super) {\n    __extends(MatFooterRowDef, _super);\n    function MatFooterRowDef() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    MatFooterRowDef.decorators = [\n        { type: Directive, args: [{\n                    selector: '[matFooterRowDef]',\n                    providers: [{ provide: CdkFooterRowDef, useExisting: MatFooterRowDef }],\n                    inputs: ['columns: matFooterRowDef', 'sticky: matFooterRowDefSticky'],\n                },] },\n    ];\n    return MatFooterRowDef;\n}(_CdkFooterRowDef));\n/**\n * Data row definition for the mat-table.\n * Captures the footer row's template and other footer properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n * @template T\n */\nvar MatRowDef = /** @class */ (function (_super) {\n    __extends(MatRowDef, _super);\n    function MatRowDef() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    MatRowDef.decorators = [\n        { type: Directive, args: [{\n                    selector: '[matRowDef]',\n                    providers: [{ provide: CdkRowDef, useExisting: MatRowDef }],\n                    inputs: ['columns: matRowDefColumns', 'when: matRowDefWhen'],\n                },] },\n    ];\n    return MatRowDef;\n}(_CdkRowDef));\n/**\n * Footer template container that contains the cell outlet. Adds the right class and role.\n */\nvar MatHeaderRow = /** @class */ (function (_super) {\n    __extends(MatHeaderRow, _super);\n    function MatHeaderRow() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    MatHeaderRow.decorators = [\n        { type: Component, args: [{selector: 'mat-header-row, tr[mat-header-row]',\n                    template: CDK_ROW_TEMPLATE,\n                    host: {\n                        'class': 'mat-header-row',\n                        'role': 'row',\n                    },\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    encapsulation: ViewEncapsulation.None,\n                    exportAs: 'matHeaderRow',\n                    providers: [{ provide: CdkHeaderRow, useExisting: MatHeaderRow }],\n                },] },\n    ];\n    return MatHeaderRow;\n}(CdkHeaderRow));\n/**\n * Footer template container that contains the cell outlet. Adds the right class and role.\n */\nvar MatFooterRow = /** @class */ (function (_super) {\n    __extends(MatFooterRow, _super);\n    function MatFooterRow() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    MatFooterRow.decorators = [\n        { type: Component, args: [{selector: 'mat-footer-row, tr[mat-footer-row]',\n                    template: CDK_ROW_TEMPLATE,\n                    host: {\n                        'class': 'mat-footer-row',\n                        'role': 'row',\n                    },\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    encapsulation: ViewEncapsulation.None,\n                    exportAs: 'matFooterRow',\n                    providers: [{ provide: CdkFooterRow, useExisting: MatFooterRow }],\n                },] },\n    ];\n    return MatFooterRow;\n}(CdkFooterRow));\n/**\n * Data row template container that contains the cell outlet. Adds the right class and role.\n */\nvar MatRow = /** @class */ (function (_super) {\n    __extends(MatRow, _super);\n    function MatRow() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    MatRow.decorators = [\n        { type: Component, args: [{selector: 'mat-row, tr[mat-row]',\n                    template: CDK_ROW_TEMPLATE,\n                    host: {\n                        'class': 'mat-row',\n                        'role': 'row',\n                    },\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    encapsulation: ViewEncapsulation.None,\n                    exportAs: 'matRow',\n                    providers: [{ provide: CdkRow, useExisting: MatRow }],\n                },] },\n    ];\n    return MatRow;\n}(CdkRow));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nvar /** @type {?} */ EXPORTED_DECLARATIONS = [\n    MatTable,\n    MatHeaderCellDef,\n    MatHeaderRowDef,\n    MatColumnDef,\n    MatCellDef,\n    MatRowDef,\n    MatFooterCellDef,\n    MatFooterRowDef,\n    MatHeaderCell,\n    MatCell,\n    MatFooterCell,\n    MatHeaderRow,\n    MatRow,\n    MatFooterRow,\n];\nvar MatTableModule = /** @class */ (function () {\n    function MatTableModule() {\n    }\n    MatTableModule.decorators = [\n        { type: NgModule, args: [{\n                    imports: [CdkTableModule, CommonModule, MatCommonModule],\n                    exports: EXPORTED_DECLARATIONS,\n                    declarations: EXPORTED_DECLARATIONS,\n                },] },\n    ];\n    return MatTableModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Corresponds to `Number.MAX_SAFE_INTEGER`. Moved out into a variable here due to\n * flaky browser support and the value not being defined in Closure's typings.\n */\nvar /** @type {?} */ MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * Data source that accepts a client-side data array and includes native support of filtering,\n * sorting (using MatSort), and pagination (using MatPaginator).\n *\n * Allows for sort customization by overriding sortingDataAccessor, which defines how data\n * properties are accessed. Also allows for filter customization by overriding filterTermAccessor,\n * which defines how row data is converted to a string for filter matching.\n * @template T\n */\nvar  /**\n * Data source that accepts a client-side data array and includes native support of filtering,\n * sorting (using MatSort), and pagination (using MatPaginator).\n *\n * Allows for sort customization by overriding sortingDataAccessor, which defines how data\n * properties are accessed. Also allows for filter customization by overriding filterTermAccessor,\n * which defines how row data is converted to a string for filter matching.\n * @template T\n */\nMatTableDataSource = /** @class */ (function (_super) {\n    __extends(MatTableDataSource, _super);\n    function MatTableDataSource(initialData) {\n        if (initialData === void 0) { initialData = []; }\n        var _this = _super.call(this) || this;\n        /**\n         * Stream emitting render data to the table (depends on ordered data changes).\n         */\n        _this._renderData = new BehaviorSubject([]);\n        /**\n         * Stream that emits when a new filter string is set on the data source.\n         */\n        _this._filter = new BehaviorSubject('');\n        /**\n         * Subscription to the changes that should trigger an update to the table's rendered rows, such\n         * as filtering, sorting, pagination, or base data changes.\n         */\n        _this._renderChangesSubscription = Subscription.EMPTY;\n        /**\n         * Data accessor function that is used for accessing data properties for sorting through\n         * the default sortData function.\n         * This default function assumes that the sort header IDs (which defaults to the column name)\n         * matches the data's properties (e.g. column Xyz represents data['Xyz']).\n         * May be set to a custom function for different behavior.\n         * @param data Data object that is being accessed.\n         * @param sortHeaderId The name of the column that represents the data.\n         */\n        _this.sortingDataAccessor = function (data, sortHeaderId) {\n            var /** @type {?} */ value = data[sortHeaderId];\n            if (_isNumberValue(value)) {\n                var /** @type {?} */ numberValue = Number(value);\n                // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we\n                // leave them as strings. For more info: https://goo.gl/y5vbSg\n                return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\n            }\n            return value;\n        };\n        /**\n         * Gets a sorted copy of the data array based on the state of the MatSort. Called\n         * after changes are made to the filtered data or when sort changes are emitted from MatSort.\n         * By default, the function retrieves the active sort and its direction and compares data\n         * by retrieving data using the sortingDataAccessor. May be overridden for a custom implementation\n         * of data ordering.\n         * @param data The array of data that should be sorted.\n         * @param sort The connected MatSort that holds the current sort state.\n         */\n        _this.sortData = function (data, sort) {\n            var /** @type {?} */ active = sort.active;\n            var /** @type {?} */ direction = sort.direction;\n            if (!active || direction == '') {\n                return data;\n            }\n            return data.sort(function (a, b) {\n                var /** @type {?} */ valueA = _this.sortingDataAccessor(a, active);\n                var /** @type {?} */ valueB = _this.sortingDataAccessor(b, active);\n                // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if\n                // one value exists while the other doesn't. In this case, existing value should come first.\n                // This avoids inconsistent results when comparing values to undefined/null.\n                // If neither value exists, return 0 (equal).\n                var /** @type {?} */ comparatorResult = 0;\n                if (valueA != null && valueB != null) {\n                    // Check if one value is greater than the other; if equal, comparatorResult should remain 0.\n                    if (valueA > valueB) {\n                        comparatorResult = 1;\n                    }\n                    else if (valueA < valueB) {\n                        comparatorResult = -1;\n                    }\n                }\n                else if (valueA != null) {\n                    comparatorResult = 1;\n                }\n                else if (valueB != null) {\n                    comparatorResult = -1;\n                }\n                return comparatorResult * (direction == 'asc' ? 1 : -1);\n            });\n        };\n        /**\n         * Checks if a data object matches the data source's filter string. By default, each data object\n         * is converted to a string of its properties and returns true if the filter has\n         * at least one occurrence in that string. By default, the filter string has its whitespace\n         * trimmed and the match is case-insensitive. May be overridden for a custom implementation of\n         * filter matching.\n         * @param data Data object used to check against the filter.\n         * @param filter Filter string that has been set on the data source.\n         * @return Whether the filter matches against the data\n         */\n        _this.filterPredicate = function (data, filter) {\n            // Transform the data into a lowercase string of all property values.\n            var /** @type {?} */ accumulator = function (currentTerm, key) { return currentTerm + data[key]; };\n            var /** @type {?} */ dataStr = Object.keys(data).reduce(accumulator, '').toLowerCase();\n            // Transform the filter by converting it to lowercase and removing whitespace.\n            var /** @type {?} */ transformedFilter = filter.trim().toLowerCase();\n            return dataStr.indexOf(transformedFilter) != -1;\n        };\n        _this._data = new BehaviorSubject(initialData);\n        _this._updateChangeSubscription();\n        return _this;\n    }\n    Object.defineProperty(MatTableDataSource.prototype, \"data\", {\n        /** Array of data that should be rendered by the table, where each object represents one row. */\n        get: /**\n         * Array of data that should be rendered by the table, where each object represents one row.\n         * @return {?}\n         */\n        function () { return this._data.value; },\n        set: /**\n         * @param {?} data\n         * @return {?}\n         */\n        function (data) { this._data.next(data); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatTableDataSource.prototype, \"filter\", {\n        /**\n         * Filter term that should be used to filter out objects from the data array. To override how\n         * data objects match to this filter string, provide a custom function for filterPredicate.\n         */\n        get: /**\n         * Filter term that should be used to filter out objects from the data array. To override how\n         * data objects match to this filter string, provide a custom function for filterPredicate.\n         * @return {?}\n         */\n        function () { return this._filter.value; },\n        set: /**\n         * @param {?} filter\n         * @return {?}\n         */\n        function (filter) { this._filter.next(filter); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatTableDataSource.prototype, \"sort\", {\n        /**\n         * Instance of the MatSort directive used by the table to control its sorting. Sort changes\n         * emitted by the MatSort will trigger an update to the table's rendered data.\n         */\n        get: /**\n         * Instance of the MatSort directive used by the table to control its sorting. Sort changes\n         * emitted by the MatSort will trigger an update to the table's rendered data.\n         * @return {?}\n         */\n        function () { return this._sort; },\n        set: /**\n         * @param {?} sort\n         * @return {?}\n         */\n        function (sort) {\n            this._sort = sort;\n            this._updateChangeSubscription();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatTableDataSource.prototype, \"paginator\", {\n        /**\n         * Instance of the MatPaginator component used by the table to control what page of the data is\n         * displayed. Page changes emitted by the MatPaginator will trigger an update to the\n         * table's rendered data.\n         *\n         * Note that the data source uses the paginator's properties to calculate which page of data\n         * should be displayed. If the paginator receives its properties as template inputs,\n         * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been\n         * initialized before assigning it to this data source.\n         */\n        get: /**\n         * Instance of the MatPaginator component used by the table to control what page of the data is\n         * displayed. Page changes emitted by the MatPaginator will trigger an update to the\n         * table's rendered data.\n         *\n         * Note that the data source uses the paginator's properties to calculate which page of data\n         * should be displayed. If the paginator receives its properties as template inputs,\n         * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been\n         * initialized before assigning it to this data source.\n         * @return {?}\n         */\n        function () { return this._paginator; },\n        set: /**\n         * @param {?} paginator\n         * @return {?}\n         */\n        function (paginator) {\n            this._paginator = paginator;\n            this._updateChangeSubscription();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * Subscribe to changes that should trigger an update to the table's rendered rows. When the\n     * changes occur, process the current state of the filter, sort, and pagination along with\n     * the provided base data and send it to the table for rendering.\n     */\n    /**\n     * Subscribe to changes that should trigger an update to the table's rendered rows. When the\n     * changes occur, process the current state of the filter, sort, and pagination along with\n     * the provided base data and send it to the table for rendering.\n     * @return {?}\n     */\n    MatTableDataSource.prototype._updateChangeSubscription = /**\n     * Subscribe to changes that should trigger an update to the table's rendered rows. When the\n     * changes occur, process the current state of the filter, sort, and pagination along with\n     * the provided base data and send it to the table for rendering.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        // Sorting and/or pagination should be watched if MatSort and/or MatPaginator are provided.\n        // The events should emit whenever the component emits a change or initializes, or if no\n        // component is provided, a stream with just a null event should be provided.\n        // The `sortChange` and `pageChange` acts as a signal to the combineLatests below so that the\n        // pipeline can progress to the next step. Note that the value from these streams are not used,\n        // they purely act as a signal to progress in the pipeline.\n        var /** @type {?} */ sortChange = this._sort ?\n            merge(this._sort.sortChange, this._sort.initialized) :\n            of(null);\n        var /** @type {?} */ pageChange = this._paginator ?\n            merge(this._paginator.page, this._paginator.initialized) :\n            of(null);\n        var /** @type {?} */ dataStream = this._data;\n        // Watch for base data or filter changes to provide a filtered set of data.\n        var /** @type {?} */ filteredData = combineLatest(dataStream, this._filter)\n            .pipe(map(function (_a) {\n            var data = _a[0];\n            return _this._filterData(data);\n        }));\n        // Watch for filtered data or sort changes to provide an ordered set of data.\n        var /** @type {?} */ orderedData = combineLatest(filteredData, sortChange)\n            .pipe(map(function (_a) {\n            var data = _a[0];\n            return _this._orderData(data);\n        }));\n        // Watch for ordered data or page changes to provide a paged set of data.\n        var /** @type {?} */ paginatedData = combineLatest(orderedData, pageChange)\n            .pipe(map(function (_a) {\n            var data = _a[0];\n            return _this._pageData(data);\n        }));\n        // Watched for paged data changes and send the result to the table to render.\n        this._renderChangesSubscription.unsubscribe();\n        this._renderChangesSubscription = paginatedData.subscribe(function (data) { return _this._renderData.next(data); });\n    };\n    /**\n     * Returns a filtered data array where each filter object contains the filter string within\n     * the result of the filterTermAccessor function. If no filter is set, returns the data array\n     * as provided.\n     */\n    /**\n     * Returns a filtered data array where each filter object contains the filter string within\n     * the result of the filterTermAccessor function. If no filter is set, returns the data array\n     * as provided.\n     * @param {?} data\n     * @return {?}\n     */\n    MatTableDataSource.prototype._filterData = /**\n     * Returns a filtered data array where each filter object contains the filter string within\n     * the result of the filterTermAccessor function. If no filter is set, returns the data array\n     * as provided.\n     * @param {?} data\n     * @return {?}\n     */\n    function (data) {\n        var _this = this;\n        // If there is a filter string, filter out data that does not contain it.\n        // Each data object is converted to a string using the function defined by filterTermAccessor.\n        // May be overridden for customization.\n        this.filteredData =\n            !this.filter ? data : data.filter(function (obj) { return _this.filterPredicate(obj, _this.filter); });\n        if (this.paginator) {\n            this._updatePaginator(this.filteredData.length);\n        }\n        return this.filteredData;\n    };\n    /**\n     * Returns a sorted copy of the data if MatSort has a sort applied, otherwise just returns the\n     * data array as provided. Uses the default data accessor for data lookup, unless a\n     * sortDataAccessor function is defined.\n     */\n    /**\n     * Returns a sorted copy of the data if MatSort has a sort applied, otherwise just returns the\n     * data array as provided. Uses the default data accessor for data lookup, unless a\n     * sortDataAccessor function is defined.\n     * @param {?} data\n     * @return {?}\n     */\n    MatTableDataSource.prototype._orderData = /**\n     * Returns a sorted copy of the data if MatSort has a sort applied, otherwise just returns the\n     * data array as provided. Uses the default data accessor for data lookup, unless a\n     * sortDataAccessor function is defined.\n     * @param {?} data\n     * @return {?}\n     */\n    function (data) {\n        // If there is no active sort or direction, return the data without trying to sort.\n        if (!this.sort) {\n            return data;\n        }\n        return this.sortData(data.slice(), this.sort);\n    };\n    /**\n     * Returns a paged splice of the provided data array according to the provided MatPaginator's page\n     * index and length. If there is no paginator provided, returns the data array as provided.\n     */\n    /**\n     * Returns a paged splice of the provided data array according to the provided MatPaginator's page\n     * index and length. If there is no paginator provided, returns the data array as provided.\n     * @param {?} data\n     * @return {?}\n     */\n    MatTableDataSource.prototype._pageData = /**\n     * Returns a paged splice of the provided data array according to the provided MatPaginator's page\n     * index and length. If there is no paginator provided, returns the data array as provided.\n     * @param {?} data\n     * @return {?}\n     */\n    function (data) {\n        if (!this.paginator) {\n            return data;\n        }\n        var /** @type {?} */ startIndex = this.paginator.pageIndex * this.paginator.pageSize;\n        return data.slice().splice(startIndex, this.paginator.pageSize);\n    };\n    /**\n     * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\n     * index does not exceed the paginator's last page. Values are changed in a resolved promise to\n     * guard against making property changes within a round of change detection.\n     */\n    /**\n     * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\n     * index does not exceed the paginator's last page. Values are changed in a resolved promise to\n     * guard against making property changes within a round of change detection.\n     * @param {?} filteredDataLength\n     * @return {?}\n     */\n    MatTableDataSource.prototype._updatePaginator = /**\n     * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\n     * index does not exceed the paginator's last page. Values are changed in a resolved promise to\n     * guard against making property changes within a round of change detection.\n     * @param {?} filteredDataLength\n     * @return {?}\n     */\n    function (filteredDataLength) {\n        var _this = this;\n        Promise.resolve().then(function () {\n            if (!_this.paginator) {\n                return;\n            }\n            _this.paginator.length = filteredDataLength;\n            // If the page index is set beyond the page, reduce it to the last page.\n            if (_this.paginator.pageIndex > 0) {\n                var /** @type {?} */ lastPageIndex = Math.ceil(_this.paginator.length / _this.paginator.pageSize) - 1 || 0;\n                _this.paginator.pageIndex = Math.min(_this.paginator.pageIndex, lastPageIndex);\n            }\n        });\n    };\n    /**\n     * Used by the MatTable. Called when it connects to the data source.\n     * @docs-private\n     */\n    /**\n     * Used by the MatTable. Called when it connects to the data source.\n     * \\@docs-private\n     * @return {?}\n     */\n    MatTableDataSource.prototype.connect = /**\n     * Used by the MatTable. Called when it connects to the data source.\n     * \\@docs-private\n     * @return {?}\n     */\n    function () { return this._renderData; };\n    /**\n     * Used by the MatTable. Called when it is destroyed. No-op.\n     * @docs-private\n     */\n    /**\n     * Used by the MatTable. Called when it is destroyed. No-op.\n     * \\@docs-private\n     * @return {?}\n     */\n    MatTableDataSource.prototype.disconnect = /**\n     * Used by the MatTable. Called when it is destroyed. No-op.\n     * \\@docs-private\n     * @return {?}\n     */\n    function () { };\n    return MatTableDataSource;\n}(DataSource));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\nexport { MatTableModule, _CdkCellDef, _CdkHeaderCellDef, _CdkFooterCellDef, MatCellDef, MatHeaderCellDef, MatFooterCellDef, MatColumnDef, MatHeaderCell, MatFooterCell, MatCell, _CdkTable, MatTable, _CdkHeaderRowDef, _CdkFooterRowDef, _CdkRowDef, MatHeaderRowDef, MatFooterRowDef, MatRowDef, MatHeaderRow, MatFooterRow, MatRow, MatTableDataSource };\n//# sourceMappingURL=table.es5.js.map\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nmodule.exports = arrayPush;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var root = require('./_root'),\n    stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","\nmodule.exports = function () {\n  var selection = document.getSelection();\n  if (!selection.rangeCount) {\n    return function () {};\n  }\n  var active = document.activeElement;\n\n  var ranges = [];\n  for (var i = 0; i < selection.rangeCount; i++) {\n    ranges.push(selection.getRangeAt(i));\n  }\n\n  switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n    case 'INPUT':\n    case 'TEXTAREA':\n      active.blur();\n      break;\n\n    default:\n      active = null;\n      break;\n  }\n\n  selection.removeAllRanges();\n  return function () {\n    selection.type === 'Caret' &&\n    selection.removeAllRanges();\n\n    if (!selection.rangeCount) {\n      ranges.forEach(function(range) {\n        selection.addRange(range);\n      });\n    }\n\n    active &&\n    active.focus();\n  };\n};\n","var copyObject = require('./_copyObject'),\n    getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nmodule.exports = isKeyable;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbolsIn = require('./_getSymbolsIn'),\n    keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var baseIsEqual = require('./_baseIsEqual'),\n    get = require('./get'),\n    hasIn = require('./hasIn'),\n    isKey = require('./_isKey'),\n    isStrictComparable = require('./_isStrictComparable'),\n    matchesStrictComparable = require('./_matchesStrictComparable'),\n    toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n  };\n}\n\nmodule.exports = baseMatchesProperty;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (string.charCodeAt(0) === 46 /* . */) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nmodule.exports = stringToPath;\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, AfterViewInit } from '@angular/core';\r\nimport { MatChipInputEvent } from '@angular/material';\r\nimport { ControlValueAccessor, FormArray, FormControl, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';\r\nimport { filter } from 'rxjs/operators';\r\n\r\n@Component({\r\n    selector: 'chip-input',\r\n    templateUrl: './chip-input.component.html',\r\n    styleUrls: ['./chip-input.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [{\r\n        provide: NG_VALUE_ACCESSOR,\r\n        useExisting: ChipInputComponent,\r\n        multi: true,\r\n    }]\r\n})\r\nexport class ChipInputComponent implements AfterViewInit, ControlValueAccessor {\r\n    @Input() placeholder: string;\r\n    @Input() email: ''|undefined;\r\n    @Input() required: ''|undefined;\r\n\r\n    public propagateChange: Function;\r\n    public formArray = new FormArray([], this.getArrayValidations());\r\n\r\n    ngAfterViewInit() {\r\n        this.bindToFormChange();\r\n    }\r\n\r\n    public remove(index: number) {\r\n        this.formArray.removeAt(index);\r\n    }\r\n\r\n    public add(e: MatChipInputEvent) {\r\n        const value = e.value.trim(),\r\n            duplicate = this.formArray.getRawValue().indexOf(value) > -1;\r\n\r\n        // clear input\r\n        e.input.value = '';\r\n\r\n        if (value && ! duplicate) {\r\n            this.addChip(value);\r\n        }\r\n    }\r\n\r\n    private addChip(value: string) {\r\n        this.formArray.push(new FormControl(value, this.getItemValidations()));\r\n    }\r\n\r\n    private getItemValidations() {\r\n        const validations = [];\r\n\r\n        if (this.email != null) {\r\n            validations.push(Validators.email);\r\n        }\r\n\r\n        return validations;\r\n    }\r\n\r\n    private getArrayValidations() {\r\n        const validations = [];\r\n\r\n        if (this.required != null) {\r\n            validations.push(Validators.required);\r\n        }\r\n\r\n        return validations;\r\n    }\r\n\r\n    private bindToFormChange() {\r\n        this.formArray.valueChanges\r\n            .pipe(filter(() => this.formArray.valid))\r\n            .subscribe(value => {\r\n                this.propagateChange(value);\r\n            });\r\n    }\r\n\r\n    public writeValue(value: string[] = []) {\r\n        if (value && value.length) {\r\n            value.forEach(item => this.addChip(item));\r\n        } else if (this.formArray.length) {\r\n            while (this.formArray.length !== 0) {\r\n                this.formArray.removeAt(0);\r\n            }\r\n        }\r\n    }\r\n\r\n    public registerOnChange(fn: Function) {\r\n        this.propagateChange = fn;\r\n    }\r\n\r\n    public registerOnTouched() {}\r\n}\r\n","var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nmodule.exports = mapCacheSet;\n","var Symbol = require('./_Symbol'),\n    Uint8Array = require('./_Uint8Array'),\n    eq = require('./eq'),\n    equalArrays = require('./_equalArrays'),\n    mapToArray = require('./_mapToArray'),\n    setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nmodule.exports = equalByTag;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = hashDelete;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n  var result = memoize(func, function(key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n    return key;\n  });\n\n  var cache = result.cache;\n  return result;\n}\n\nmodule.exports = memoizeCapped;\n","import {ChangeDetectionStrategy, Component, ElementRef, Input, OnInit, Renderer2, ViewEncapsulation} from '@angular/core';\r\nimport {Settings} from '../../config/settings.service';\r\nimport {randomString} from '../../utils/random-string';\r\nimport {CurrentUser} from '../../../auth/current-user';\r\nimport {LazyLoaderService} from '../../utils/lazy-loader.service';\r\n\r\n@Component({\r\n    selector: 'ad-host',\r\n    templateUrl: './ad-host.component.html',\r\n    styleUrls: ['./ad-host.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    host: {'[id]': 'randomId'}\r\n})\r\nexport class AdHostComponent implements OnInit {\r\n\r\n    /**\r\n     * Random id to apply to start host.\r\n     */\r\n    public randomId: string;\r\n\r\n    /**\r\n     * Code of the ad.\r\n     */\r\n    private adCode: string;\r\n\r\n    /**\r\n     * Slot of this ad.\r\n     */\r\n    @Input() public slot: string;\r\n\r\n    constructor(\r\n        private el: ElementRef,\r\n        private renderer: Renderer2,\r\n        private settings: Settings,\r\n        private currentUser: CurrentUser,\r\n        private lazyLoader: LazyLoaderService,\r\n    ) {}\r\n\r\n    ngOnInit() {\r\n        if (this.settings.get('ads.disable') || this.currentUser.isSubscribed()) return;\r\n\r\n        this.randomId = randomString();\r\n        this.setAdCode();\r\n        if ( ! this.adCode) return;\r\n        this.appendAdHtml();\r\n        this.loadAdScripts().then(() => {\r\n            this.executeAdJavascript();\r\n        });\r\n\r\n        setTimeout(() => {\r\n            if ( ! this.el.nativeElement.children.length) return;\r\n            this.renderer.setStyle(this.el.nativeElement, 'display', 'flex');\r\n        });\r\n    }\r\n\r\n    /**\r\n     * set ad that should be displayed.\r\n     */\r\n    private setAdCode() {\r\n        this.adCode = this.settings.get(this.slot);\r\n    }\r\n\r\n    /**\r\n     * Extract and append any non-javascript html tags from ad code.\r\n     */\r\n    private appendAdHtml() {\r\n        // strip out all script tags from ad code and leave only html\r\n        const adHtml = this.adCode.replace(/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi, '').trim();\r\n\r\n        if (adHtml) {\r\n            this.el.nativeElement.innerHTML = adHtml;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Execute ad code javascript and replace document.write if needed.\r\n     */\r\n    private executeAdJavascript() {\r\n        // find any ad code javascript that needs to be executed\r\n        let pattern = /<script\\b[^>]*>([\\s\\S]*?)<\\/script>/g, content;\r\n\r\n        while (content = pattern.exec(this.adCode)) {\r\n            if (content[1]) {\r\n                const r = \"var d = document.createElement('div'); d.innerHTML = $1; document.getElementById('\"+this.randomId+\"').appendChild(d.firstChild);\";\r\n                const toEval = content[1].replace(/document.write\\((.+?)\\);/, r);\r\n                eval(toEval);\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Load any external scripts needed by ad.\r\n     */\r\n    private loadAdScripts(): Promise<any> {\r\n        const promises = [];\r\n\r\n        // load ad code script\r\n        let pattern = /<script.*?src=\"(.*?)\"/g, match;\r\n\r\n        while (match = pattern.exec(this.adCode)) {\r\n            if (match[1]) {\r\n                promises.push(this.lazyLoader.loadScript(match[1]));\r\n            }\r\n        }\r\n\r\n        return Promise.all(promises);\r\n    }\r\n}\r\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\nmodule.exports = matchesStrictComparable;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nmodule.exports = hashSet;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nmodule.exports = stackDelete;\n","var SetCache = require('./_SetCache'),\n    arrayIncludes = require('./_arrayIncludes'),\n    arrayIncludesWith = require('./_arrayIncludesWith'),\n    cacheHas = require('./_cacheHas'),\n    createSet = require('./_createSet'),\n    setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      length = array.length,\n      isCommon = true,\n      result = [],\n      seen = result;\n\n  if (comparator) {\n    isCommon = false;\n    includes = arrayIncludesWith;\n  }\n  else if (length >= LARGE_ARRAY_SIZE) {\n    var set = iteratee ? null : createSet(array);\n    if (set) {\n      return setToArray(set);\n    }\n    isCommon = false;\n    includes = cacheHas;\n    seen = new SetCache;\n  }\n  else {\n    seen = iteratee ? [] : result;\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var seenIndex = seen.length;\n      while (seenIndex--) {\n        if (seen[seenIndex] === computed) {\n          continue outer;\n        }\n      }\n      if (iteratee) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n    else if (!includes(seen, computed, comparator)) {\n      if (seen !== result) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseUniq;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Directive, ElementRef, Inject, InjectionToken, NgZone, TemplateRef, ChangeDetectionStrategy, Component, ContentChild, Input, ViewChild, ViewContainerRef, ViewEncapsulation, ChangeDetectorRef, Output, EventEmitter, Optional, ComponentFactoryResolver, forwardRef, ContentChildren, Attribute, NgModule } from '@angular/core';\nimport { __extends } from 'tslib';\nimport { CdkPortal, TemplatePortal, CdkPortalOutlet, PortalHostDirective, PortalModule } from '@angular/cdk/portal';\nimport { mixinDisabled, mixinDisableRipple, mixinColor, MAT_RIPPLE_GLOBAL_OPTIONS, mixinTabIndex, RippleRenderer, MatCommonModule, MatRippleModule } from '@angular/material/core';\nimport { Subject, Subscription, merge, of } from 'rxjs';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { startWith, takeUntil } from 'rxjs/operators';\nimport { coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { END, ENTER, HOME, SPACE } from '@angular/cdk/keycodes';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { FocusKeyManager, FocusMonitor, A11yModule } from '@angular/cdk/a11y';\nimport { Platform } from '@angular/cdk/platform';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Injection token for the MatInkBar's Positioner.\n */\nvar /** @type {?} */ _MAT_INK_BAR_POSITIONER = new InjectionToken('MatInkBarPositioner', {\n    providedIn: 'root',\n    factory: _MAT_INK_BAR_POSITIONER_FACTORY\n});\n/**\n * The default positioner function for the MatInkBar.\n * \\@docs-private\n * @return {?}\n */\nfunction _MAT_INK_BAR_POSITIONER_FACTORY() {\n    var /** @type {?} */ method = function (element) {\n        return ({\n            left: element ? (element.offsetLeft || 0) + 'px' : '0',\n            width: element ? (element.offsetWidth || 0) + 'px' : '0',\n        });\n    };\n    return method;\n}\n/**\n * The ink-bar is used to display and animate the line underneath the current active tab label.\n * \\@docs-private\n */\nvar MatInkBar = /** @class */ (function () {\n    function MatInkBar(_elementRef, _ngZone, _inkBarPositioner) {\n        this._elementRef = _elementRef;\n        this._ngZone = _ngZone;\n        this._inkBarPositioner = _inkBarPositioner;\n    }\n    /**\n     * Calculates the styles from the provided element in order to align the ink-bar to that element.\n     * Shows the ink bar if previously set as hidden.\n     * @param element\n     */\n    /**\n     * Calculates the styles from the provided element in order to align the ink-bar to that element.\n     * Shows the ink bar if previously set as hidden.\n     * @param {?} element\n     * @return {?}\n     */\n    MatInkBar.prototype.alignToElement = /**\n     * Calculates the styles from the provided element in order to align the ink-bar to that element.\n     * Shows the ink bar if previously set as hidden.\n     * @param {?} element\n     * @return {?}\n     */\n    function (element) {\n        var _this = this;\n        this.show();\n        if (typeof requestAnimationFrame !== 'undefined') {\n            this._ngZone.runOutsideAngular(function () {\n                requestAnimationFrame(function () { return _this._setStyles(element); });\n            });\n        }\n        else {\n            this._setStyles(element);\n        }\n    };\n    /** Shows the ink bar. */\n    /**\n     * Shows the ink bar.\n     * @return {?}\n     */\n    MatInkBar.prototype.show = /**\n     * Shows the ink bar.\n     * @return {?}\n     */\n    function () {\n        this._elementRef.nativeElement.style.visibility = 'visible';\n    };\n    /** Hides the ink bar. */\n    /**\n     * Hides the ink bar.\n     * @return {?}\n     */\n    MatInkBar.prototype.hide = /**\n     * Hides the ink bar.\n     * @return {?}\n     */\n    function () {\n        this._elementRef.nativeElement.style.visibility = 'hidden';\n    };\n    /**\n     * Sets the proper styles to the ink bar element.\n     * @param {?} element\n     * @return {?}\n     */\n    MatInkBar.prototype._setStyles = /**\n     * Sets the proper styles to the ink bar element.\n     * @param {?} element\n     * @return {?}\n     */\n    function (element) {\n        var /** @type {?} */ positions = this._inkBarPositioner(element);\n        var /** @type {?} */ inkBar = this._elementRef.nativeElement;\n        inkBar.style.left = positions.left;\n        inkBar.style.width = positions.width;\n    };\n    MatInkBar.decorators = [\n        { type: Directive, args: [{\n                    selector: 'mat-ink-bar',\n                    host: {\n                        'class': 'mat-ink-bar',\n                    },\n                },] },\n    ];\n    /** @nocollapse */\n    MatInkBar.ctorParameters = function () { return [\n        { type: ElementRef, },\n        { type: NgZone, },\n        { type: undefined, decorators: [{ type: Inject, args: [_MAT_INK_BAR_POSITIONER,] },] },\n    ]; };\n    return MatInkBar;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n// TODO(devversion): Workaround for https://github.com/angular/material2/issues/12760\nvar /** @type {?} */ _CdkPortal = CdkPortal;\n/**\n * Used to flag tab labels for use with the portal directive\n */\nvar MatTabLabel = /** @class */ (function (_super) {\n    __extends(MatTabLabel, _super);\n    function MatTabLabel() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    MatTabLabel.decorators = [\n        { type: Directive, args: [{\n                    selector: '[mat-tab-label], [matTabLabel]',\n                },] },\n    ];\n    return MatTabLabel;\n}(_CdkPortal));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Decorates the `ng-template` tags and reads out the template from it.\n */\nvar MatTabContent = /** @class */ (function () {\n    function MatTabContent(template) {\n        this.template = template;\n    }\n    MatTabContent.decorators = [\n        { type: Directive, args: [{ selector: '[matTabContent]' },] },\n    ];\n    /** @nocollapse */\n    MatTabContent.ctorParameters = function () { return [\n        { type: TemplateRef, },\n    ]; };\n    return MatTabContent;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * \\@docs-private\n */\nvar  /**\n * \\@docs-private\n */\nMatTabBase = /** @class */ (function () {\n    function MatTabBase() {\n    }\n    return MatTabBase;\n}());\nvar /** @type {?} */ _MatTabMixinBase = mixinDisabled(MatTabBase);\nvar MatTab = /** @class */ (function (_super) {\n    __extends(MatTab, _super);\n    function MatTab(_viewContainerRef) {\n        var _this = _super.call(this) || this;\n        _this._viewContainerRef = _viewContainerRef;\n        /**\n         * Plain text label for the tab, used when there is no template label.\n         */\n        _this.textLabel = '';\n        /**\n         * Portal that will be the hosted content of the tab\n         */\n        _this._contentPortal = null;\n        /**\n         * Emits whenever the internal state of the tab changes.\n         */\n        _this._stateChanges = new Subject();\n        /**\n         * The relatively indexed position where 0 represents the center, negative is left, and positive\n         * represents the right.\n         */\n        _this.position = null;\n        /**\n         * The initial relatively index origin of the tab if it was created and selected after there\n         * was already a selected tab. Provides context of what position the tab should originate from.\n         */\n        _this.origin = null;\n        /**\n         * Whether the tab is currently active.\n         */\n        _this.isActive = false;\n        return _this;\n    }\n    Object.defineProperty(MatTab.prototype, \"content\", {\n        /** @docs-private */\n        get: /**\n         * \\@docs-private\n         * @return {?}\n         */\n        function () {\n            return this._contentPortal;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @param {?} changes\n     * @return {?}\n     */\n    MatTab.prototype.ngOnChanges = /**\n     * @param {?} changes\n     * @return {?}\n     */\n    function (changes) {\n        if (changes.hasOwnProperty('textLabel') || changes.hasOwnProperty('disabled')) {\n            this._stateChanges.next();\n        }\n    };\n    /**\n     * @return {?}\n     */\n    MatTab.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        this._stateChanges.complete();\n    };\n    /**\n     * @return {?}\n     */\n    MatTab.prototype.ngOnInit = /**\n     * @return {?}\n     */\n    function () {\n        this._contentPortal = new TemplatePortal(this._explicitContent || this._implicitContent, this._viewContainerRef);\n    };\n    MatTab.decorators = [\n        { type: Component, args: [{selector: 'mat-tab',\n                    template: \"<ng-template><ng-content></ng-content></ng-template>\",\n                    inputs: ['disabled'],\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    encapsulation: ViewEncapsulation.None,\n                    exportAs: 'matTab',\n                },] },\n    ];\n    /** @nocollapse */\n    MatTab.ctorParameters = function () { return [\n        { type: ViewContainerRef, },\n    ]; };\n    MatTab.propDecorators = {\n        \"templateLabel\": [{ type: ContentChild, args: [MatTabLabel,] },],\n        \"_explicitContent\": [{ type: ContentChild, args: [MatTabContent, { read: TemplateRef },] },],\n        \"_implicitContent\": [{ type: ViewChild, args: [TemplateRef,] },],\n        \"textLabel\": [{ type: Input, args: ['label',] },],\n        \"ariaLabel\": [{ type: Input, args: ['aria-label',] },],\n        \"ariaLabelledby\": [{ type: Input, args: ['aria-labelledby',] },],\n    };\n    return MatTab;\n}(_MatTabMixinBase));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Animations used by the Material tabs.\n */\nvar /** @type {?} */ matTabsAnimations = {\n    /** Animation translates a tab along the X axis. */\n    translateTab: trigger('translateTab', [\n        // Note: transitions to `none` instead of 0, because some browsers might blur the content.\n        state('center, void, left-origin-center, right-origin-center', style({ transform: 'none' })),\n        // If the tab is either on the left or right, we additionally add a `min-height` of 1px\n        // in order to ensure that the element has a height before its state changes. This is\n        // necessary because Chrome does seem to skip the transition in RTL mode if the element does\n        // not have a static height and is not rendered. See related issue: #9465\n        state('left', style({ transform: 'translate3d(-100%, 0, 0)', minHeight: '1px' })),\n        state('right', style({ transform: 'translate3d(100%, 0, 0)', minHeight: '1px' })),\n        transition('* => left, * => right, left => center, right => center', animate('500ms cubic-bezier(0.35, 0, 0.25, 1)')),\n        transition('void => left-origin-center', [\n            style({ transform: 'translate3d(-100%, 0, 0)' }),\n            animate('500ms cubic-bezier(0.35, 0, 0.25, 1)')\n        ]),\n        transition('void => right-origin-center', [\n            style({ transform: 'translate3d(100%, 0, 0)' }),\n            animate('500ms cubic-bezier(0.35, 0, 0.25, 1)')\n        ])\n    ])\n};\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * The portal host directive for the contents of the tab.\n * \\@docs-private\n */\nvar MatTabBodyPortal = /** @class */ (function (_super) {\n    __extends(MatTabBodyPortal, _super);\n    function MatTabBodyPortal(componentFactoryResolver, viewContainerRef, _host) {\n        var _this = _super.call(this, componentFactoryResolver, viewContainerRef) || this;\n        _this._host = _host;\n        /**\n         * Subscription to events for when the tab body begins centering.\n         */\n        _this._centeringSub = Subscription.EMPTY;\n        /**\n         * Subscription to events for when the tab body finishes leaving from center position.\n         */\n        _this._leavingSub = Subscription.EMPTY;\n        return _this;\n    }\n    /** Set initial visibility or set up subscription for changing visibility. */\n    /**\n     * Set initial visibility or set up subscription for changing visibility.\n     * @return {?}\n     */\n    MatTabBodyPortal.prototype.ngOnInit = /**\n     * Set initial visibility or set up subscription for changing visibility.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        _super.prototype.ngOnInit.call(this);\n        this._centeringSub = this._host._beforeCentering\n            .pipe(startWith(this._host._isCenterPosition(this._host._position)))\n            .subscribe(function (isCentering) {\n            if (isCentering && !_this.hasAttached()) {\n                _this.attach(_this._host._content);\n            }\n        });\n        this._leavingSub = this._host._afterLeavingCenter.subscribe(function () {\n            _this.detach();\n        });\n    };\n    /** Clean up centering subscription. */\n    /**\n     * Clean up centering subscription.\n     * @return {?}\n     */\n    MatTabBodyPortal.prototype.ngOnDestroy = /**\n     * Clean up centering subscription.\n     * @return {?}\n     */\n    function () {\n        _super.prototype.ngOnDestroy.call(this);\n        this._centeringSub.unsubscribe();\n        this._leavingSub.unsubscribe();\n    };\n    MatTabBodyPortal.decorators = [\n        { type: Directive, args: [{\n                    selector: '[matTabBodyHost]'\n                },] },\n    ];\n    /** @nocollapse */\n    MatTabBodyPortal.ctorParameters = function () { return [\n        { type: ComponentFactoryResolver, },\n        { type: ViewContainerRef, },\n        { type: MatTabBody, decorators: [{ type: Inject, args: [forwardRef(function () { return MatTabBody; }),] },] },\n    ]; };\n    return MatTabBodyPortal;\n}(CdkPortalOutlet));\n/**\n * Wrapper for the contents of a tab.\n * \\@docs-private\n */\nvar MatTabBody = /** @class */ (function () {\n    function MatTabBody(_elementRef, _dir, /**\n                   * @breaking-change 7.0.0 changeDetectorRef to be made required.\n                   */\n    /**\n     * @breaking-change 7.0.0 changeDetectorRef to be made required.\n     */\n    changeDetectorRef) {\n        var _this = this;\n        this._elementRef = _elementRef;\n        this._dir = _dir;\n        /**\n         * Subscription to the directionality change observable.\n         */\n        this._dirChangeSubscription = Subscription.EMPTY;\n        /**\n         * Event emitted when the tab begins to animate towards the center as the active tab.\n         */\n        this._onCentering = new EventEmitter();\n        /**\n         * Event emitted before the centering of the tab begins.\n         */\n        this._beforeCentering = new EventEmitter();\n        /**\n         * Event emitted before the centering of the tab begins.\n         */\n        this._afterLeavingCenter = new EventEmitter();\n        /**\n         * Event emitted when the tab completes its animation towards the center.\n         */\n        this._onCentered = new EventEmitter(true);\n        if (this._dir && changeDetectorRef) {\n            this._dirChangeSubscription = this._dir.change.subscribe(function (dir) {\n                _this._computePositionAnimationState(dir);\n                changeDetectorRef.markForCheck();\n            });\n        }\n    }\n    Object.defineProperty(MatTabBody.prototype, \"position\", {\n        set: /**\n         * The shifted index position of the tab body, where zero represents the active center tab.\n         * @param {?} position\n         * @return {?}\n         */\n        function (position) {\n            this._positionIndex = position;\n            this._computePositionAnimationState();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * After initialized, check if the content is centered and has an origin. If so, set the\n     * special position states that transition the tab from the left or right before centering.\n     */\n    /**\n     * After initialized, check if the content is centered and has an origin. If so, set the\n     * special position states that transition the tab from the left or right before centering.\n     * @return {?}\n     */\n    MatTabBody.prototype.ngOnInit = /**\n     * After initialized, check if the content is centered and has an origin. If so, set the\n     * special position states that transition the tab from the left or right before centering.\n     * @return {?}\n     */\n    function () {\n        if (this._position == 'center' && this.origin != null) {\n            this._position = this._computePositionFromOrigin();\n        }\n    };\n    /**\n     * @return {?}\n     */\n    MatTabBody.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        this._dirChangeSubscription.unsubscribe();\n    };\n    /**\n     * @param {?} e\n     * @return {?}\n     */\n    MatTabBody.prototype._onTranslateTabStarted = /**\n     * @param {?} e\n     * @return {?}\n     */\n    function (e) {\n        var /** @type {?} */ isCentering = this._isCenterPosition(e.toState);\n        this._beforeCentering.emit(isCentering);\n        if (isCentering) {\n            this._onCentering.emit(this._elementRef.nativeElement.clientHeight);\n        }\n    };\n    /**\n     * @param {?} e\n     * @return {?}\n     */\n    MatTabBody.prototype._onTranslateTabComplete = /**\n     * @param {?} e\n     * @return {?}\n     */\n    function (e) {\n        // If the transition to the center is complete, emit an event.\n        if (this._isCenterPosition(e.toState) && this._isCenterPosition(this._position)) {\n            this._onCentered.emit();\n        }\n        if (this._isCenterPosition(e.fromState) && !this._isCenterPosition(this._position)) {\n            this._afterLeavingCenter.emit();\n        }\n    };\n    /** The text direction of the containing app. */\n    /**\n     * The text direction of the containing app.\n     * @return {?}\n     */\n    MatTabBody.prototype._getLayoutDirection = /**\n     * The text direction of the containing app.\n     * @return {?}\n     */\n    function () {\n        return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n    };\n    /** Whether the provided position state is considered center, regardless of origin. */\n    /**\n     * Whether the provided position state is considered center, regardless of origin.\n     * @param {?} position\n     * @return {?}\n     */\n    MatTabBody.prototype._isCenterPosition = /**\n     * Whether the provided position state is considered center, regardless of origin.\n     * @param {?} position\n     * @return {?}\n     */\n    function (position) {\n        return position == 'center' ||\n            position == 'left-origin-center' ||\n            position == 'right-origin-center';\n    };\n    /**\n     * Computes the position state that will be used for the tab-body animation trigger.\n     * @param {?=} dir\n     * @return {?}\n     */\n    MatTabBody.prototype._computePositionAnimationState = /**\n     * Computes the position state that will be used for the tab-body animation trigger.\n     * @param {?=} dir\n     * @return {?}\n     */\n    function (dir) {\n        if (dir === void 0) { dir = this._getLayoutDirection(); }\n        if (this._positionIndex < 0) {\n            this._position = dir == 'ltr' ? 'left' : 'right';\n        }\n        else if (this._positionIndex > 0) {\n            this._position = dir == 'ltr' ? 'right' : 'left';\n        }\n        else {\n            this._position = 'center';\n        }\n    };\n    /**\n     * Computes the position state based on the specified origin position. This is used if the\n     * tab is becoming visible immediately after creation.\n     * @return {?}\n     */\n    MatTabBody.prototype._computePositionFromOrigin = /**\n     * Computes the position state based on the specified origin position. This is used if the\n     * tab is becoming visible immediately after creation.\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ dir = this._getLayoutDirection();\n        if ((dir == 'ltr' && this.origin <= 0) || (dir == 'rtl' && this.origin > 0)) {\n            return 'left-origin-center';\n        }\n        return 'right-origin-center';\n    };\n    MatTabBody.decorators = [\n        { type: Component, args: [{selector: 'mat-tab-body',\n                    template: \"<div class=\\\"mat-tab-body-content\\\" #content [@translateTab]=\\\"_position\\\" (@translateTab.start)=\\\"_onTranslateTabStarted($event)\\\" (@translateTab.done)=\\\"_onTranslateTabComplete($event)\\\"><ng-template matTabBodyHost></ng-template></div>\",\n                    styles: [\".mat-tab-body-content{height:100%;overflow:auto}.mat-tab-group-dynamic-height .mat-tab-body-content{overflow:hidden}\"],\n                    encapsulation: ViewEncapsulation.None,\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    animations: [matTabsAnimations.translateTab],\n                    host: {\n                        'class': 'mat-tab-body',\n                    },\n                },] },\n    ];\n    /** @nocollapse */\n    MatTabBody.ctorParameters = function () { return [\n        { type: ElementRef, },\n        { type: Directionality, decorators: [{ type: Optional },] },\n        { type: ChangeDetectorRef, },\n    ]; };\n    MatTabBody.propDecorators = {\n        \"_onCentering\": [{ type: Output },],\n        \"_beforeCentering\": [{ type: Output },],\n        \"_afterLeavingCenter\": [{ type: Output },],\n        \"_onCentered\": [{ type: Output },],\n        \"_portalHost\": [{ type: ViewChild, args: [PortalHostDirective,] },],\n        \"_content\": [{ type: Input, args: ['content',] },],\n        \"origin\": [{ type: Input },],\n        \"position\": [{ type: Input },],\n    };\n    return MatTabBody;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * \\@docs-private\n */\nvar  /**\n * \\@docs-private\n */\nMatTabLabelWrapperBase = /** @class */ (function () {\n    function MatTabLabelWrapperBase() {\n    }\n    return MatTabLabelWrapperBase;\n}());\nvar /** @type {?} */ _MatTabLabelWrapperMixinBase = mixinDisabled(MatTabLabelWrapperBase);\n/**\n * Used in the `mat-tab-group` view to display tab labels.\n * \\@docs-private\n */\nvar MatTabLabelWrapper = /** @class */ (function (_super) {\n    __extends(MatTabLabelWrapper, _super);\n    function MatTabLabelWrapper(elementRef) {\n        var _this = _super.call(this) || this;\n        _this.elementRef = elementRef;\n        return _this;\n    }\n    /** Sets focus on the wrapper element */\n    /**\n     * Sets focus on the wrapper element\n     * @return {?}\n     */\n    MatTabLabelWrapper.prototype.focus = /**\n     * Sets focus on the wrapper element\n     * @return {?}\n     */\n    function () {\n        this.elementRef.nativeElement.focus();\n    };\n    /**\n     * @return {?}\n     */\n    MatTabLabelWrapper.prototype.getOffsetLeft = /**\n     * @return {?}\n     */\n    function () {\n        return this.elementRef.nativeElement.offsetLeft;\n    };\n    /**\n     * @return {?}\n     */\n    MatTabLabelWrapper.prototype.getOffsetWidth = /**\n     * @return {?}\n     */\n    function () {\n        return this.elementRef.nativeElement.offsetWidth;\n    };\n    MatTabLabelWrapper.decorators = [\n        { type: Directive, args: [{\n                    selector: '[matTabLabelWrapper]',\n                    inputs: ['disabled'],\n                    host: {\n                        '[class.mat-tab-disabled]': 'disabled',\n                        '[attr.aria-disabled]': '!!disabled',\n                    }\n                },] },\n    ];\n    /** @nocollapse */\n    MatTabLabelWrapper.ctorParameters = function () { return [\n        { type: ElementRef, },\n    ]; };\n    return MatTabLabelWrapper;\n}(_MatTabLabelWrapperMixinBase));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * The distance in pixels that will be overshot when scrolling a tab label into view. This helps\n * provide a small affordance to the label next to it.\n */\nvar /** @type {?} */ EXAGGERATED_OVERSCROLL = 60;\n/**\n * \\@docs-private\n */\nvar  /**\n * \\@docs-private\n */\nMatTabHeaderBase = /** @class */ (function () {\n    function MatTabHeaderBase() {\n    }\n    return MatTabHeaderBase;\n}());\nvar /** @type {?} */ _MatTabHeaderMixinBase = mixinDisableRipple(MatTabHeaderBase);\n/**\n * The header of the tab group which displays a list of all the tabs in the tab group. Includes\n * an ink bar that follows the currently selected tab. When the tabs list's width exceeds the\n * width of the header container, then arrows will be displayed to allow the user to scroll\n * left and right across the header.\n * \\@docs-private\n */\nvar MatTabHeader = /** @class */ (function (_super) {\n    __extends(MatTabHeader, _super);\n    function MatTabHeader(_elementRef, _changeDetectorRef, _viewportRuler, _dir) {\n        var _this = _super.call(this) || this;\n        _this._elementRef = _elementRef;\n        _this._changeDetectorRef = _changeDetectorRef;\n        _this._viewportRuler = _viewportRuler;\n        _this._dir = _dir;\n        /**\n         * The distance in pixels that the tab labels should be translated to the left.\n         */\n        _this._scrollDistance = 0;\n        /**\n         * Whether the header should scroll to the selected index after the view has been checked.\n         */\n        _this._selectedIndexChanged = false;\n        /**\n         * Emits when the component is destroyed.\n         */\n        _this._destroyed = new Subject();\n        /**\n         * Whether the controls for pagination should be displayed\n         */\n        _this._showPaginationControls = false;\n        /**\n         * Whether the tab list can be scrolled more towards the end of the tab label list.\n         */\n        _this._disableScrollAfter = true;\n        /**\n         * Whether the tab list can be scrolled more towards the beginning of the tab label list.\n         */\n        _this._disableScrollBefore = true;\n        _this._selectedIndex = 0;\n        /**\n         * Event emitted when the option is selected.\n         */\n        _this.selectFocusedIndex = new EventEmitter();\n        /**\n         * Event emitted when a label is focused.\n         */\n        _this.indexFocused = new EventEmitter();\n        return _this;\n    }\n    Object.defineProperty(MatTabHeader.prototype, \"selectedIndex\", {\n        get: /**\n         * The index of the active tab.\n         * @return {?}\n         */\n        function () { return this._selectedIndex; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            value = coerceNumberProperty(value);\n            this._selectedIndexChanged = this._selectedIndex != value;\n            this._selectedIndex = value;\n            if (this._keyManager) {\n                this._keyManager.updateActiveItemIndex(value);\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @return {?}\n     */\n    MatTabHeader.prototype.ngAfterContentChecked = /**\n     * @return {?}\n     */\n    function () {\n        // If the number of tab labels have changed, check if scrolling should be enabled\n        if (this._tabLabelCount != this._labelWrappers.length) {\n            this._updatePagination();\n            this._tabLabelCount = this._labelWrappers.length;\n            this._changeDetectorRef.markForCheck();\n        }\n        // If the selected index has changed, scroll to the label and check if the scrolling controls\n        // should be disabled.\n        if (this._selectedIndexChanged) {\n            this._scrollToLabel(this._selectedIndex);\n            this._checkScrollingControls();\n            this._alignInkBarToSelectedTab();\n            this._selectedIndexChanged = false;\n            this._changeDetectorRef.markForCheck();\n        }\n        // If the scroll distance has been changed (tab selected, focused, scroll controls activated),\n        // then translate the header to reflect this.\n        if (this._scrollDistanceChanged) {\n            this._updateTabScrollPosition();\n            this._scrollDistanceChanged = false;\n            this._changeDetectorRef.markForCheck();\n        }\n    };\n    /**\n     * @param {?} event\n     * @return {?}\n     */\n    MatTabHeader.prototype._handleKeydown = /**\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        switch (event.keyCode) {\n            case HOME:\n                this._keyManager.setFirstItemActive();\n                event.preventDefault();\n                break;\n            case END:\n                this._keyManager.setLastItemActive();\n                event.preventDefault();\n                break;\n            case ENTER:\n            case SPACE:\n                this.selectFocusedIndex.emit(this.focusIndex);\n                event.preventDefault();\n                break;\n            default:\n                this._keyManager.onKeydown(event);\n        }\n    };\n    /**\n     * Aligns the ink bar to the selected tab on load.\n     */\n    /**\n     * Aligns the ink bar to the selected tab on load.\n     * @return {?}\n     */\n    MatTabHeader.prototype.ngAfterContentInit = /**\n     * Aligns the ink bar to the selected tab on load.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        var /** @type {?} */ dirChange = this._dir ? this._dir.change : of(null);\n        var /** @type {?} */ resize = this._viewportRuler.change(150);\n        var /** @type {?} */ realign = function () {\n            _this._updatePagination();\n            _this._alignInkBarToSelectedTab();\n        };\n        this._keyManager = new FocusKeyManager(this._labelWrappers)\n            .withHorizontalOrientation(this._getLayoutDirection())\n            .withWrap();\n        this._keyManager.updateActiveItem(0);\n        // Defer the first call in order to allow for slower browsers to lay out the elements.\n        // This helps in cases where the user lands directly on a page with paginated tabs.\n        typeof requestAnimationFrame !== 'undefined' ? requestAnimationFrame(realign) : realign();\n        // On dir change or window resize, realign the ink bar and update the orientation of\n        // the key manager if the direction has changed.\n        merge(dirChange, resize).pipe(takeUntil(this._destroyed)).subscribe(function () {\n            realign();\n            _this._keyManager.withHorizontalOrientation(_this._getLayoutDirection());\n        });\n        // If there is a change in the focus key manager we need to emit the `indexFocused`\n        // event in order to provide a public event that notifies about focus changes. Also we realign\n        // the tabs container by scrolling the new focused tab into the visible section.\n        this._keyManager.change.pipe(takeUntil(this._destroyed)).subscribe(function (newFocusIndex) {\n            _this.indexFocused.emit(newFocusIndex);\n            _this._setTabFocus(newFocusIndex);\n        });\n    };\n    /**\n     * @return {?}\n     */\n    MatTabHeader.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        this._destroyed.next();\n        this._destroyed.complete();\n    };\n    /**\n     * Callback for when the MutationObserver detects that the content has changed.\n     */\n    /**\n     * Callback for when the MutationObserver detects that the content has changed.\n     * @return {?}\n     */\n    MatTabHeader.prototype._onContentChanges = /**\n     * Callback for when the MutationObserver detects that the content has changed.\n     * @return {?}\n     */\n    function () {\n        this._updatePagination();\n        this._alignInkBarToSelectedTab();\n        this._changeDetectorRef.markForCheck();\n    };\n    /**\n     * Updating the view whether pagination should be enabled or not\n     */\n    /**\n     * Updating the view whether pagination should be enabled or not\n     * @return {?}\n     */\n    MatTabHeader.prototype._updatePagination = /**\n     * Updating the view whether pagination should be enabled or not\n     * @return {?}\n     */\n    function () {\n        this._checkPaginationEnabled();\n        this._checkScrollingControls();\n        this._updateTabScrollPosition();\n    };\n    Object.defineProperty(MatTabHeader.prototype, \"focusIndex\", {\n        /** Tracks which element has focus; used for keyboard navigation */\n        get: /**\n         * Tracks which element has focus; used for keyboard navigation\n         * @return {?}\n         */\n        function () {\n            return this._keyManager ? /** @type {?} */ ((this._keyManager.activeItemIndex)) : 0;\n        },\n        /** When the focus index is set, we must manually send focus to the correct label */\n        set: /**\n         * When the focus index is set, we must manually send focus to the correct label\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            if (!this._isValidIndex(value) || this.focusIndex === value || !this._keyManager) {\n                return;\n            }\n            this._keyManager.setActiveItem(value);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * Determines if an index is valid.  If the tabs are not ready yet, we assume that the user is\n     * providing a valid index and return true.\n     */\n    /**\n     * Determines if an index is valid.  If the tabs are not ready yet, we assume that the user is\n     * providing a valid index and return true.\n     * @param {?} index\n     * @return {?}\n     */\n    MatTabHeader.prototype._isValidIndex = /**\n     * Determines if an index is valid.  If the tabs are not ready yet, we assume that the user is\n     * providing a valid index and return true.\n     * @param {?} index\n     * @return {?}\n     */\n    function (index) {\n        if (!this._labelWrappers) {\n            return true;\n        }\n        var /** @type {?} */ tab = this._labelWrappers ? this._labelWrappers.toArray()[index] : null;\n        return !!tab && !tab.disabled;\n    };\n    /**\n     * Sets focus on the HTML element for the label wrapper and scrolls it into the view if\n     * scrolling is enabled.\n     */\n    /**\n     * Sets focus on the HTML element for the label wrapper and scrolls it into the view if\n     * scrolling is enabled.\n     * @param {?} tabIndex\n     * @return {?}\n     */\n    MatTabHeader.prototype._setTabFocus = /**\n     * Sets focus on the HTML element for the label wrapper and scrolls it into the view if\n     * scrolling is enabled.\n     * @param {?} tabIndex\n     * @return {?}\n     */\n    function (tabIndex) {\n        if (this._showPaginationControls) {\n            this._scrollToLabel(tabIndex);\n        }\n        if (this._labelWrappers && this._labelWrappers.length) {\n            this._labelWrappers.toArray()[tabIndex].focus();\n            // Do not let the browser manage scrolling to focus the element, this will be handled\n            // by using translation. In LTR, the scroll left should be 0. In RTL, the scroll width\n            // should be the full width minus the offset width.\n            var /** @type {?} */ containerEl = this._tabListContainer.nativeElement;\n            var /** @type {?} */ dir = this._getLayoutDirection();\n            if (dir == 'ltr') {\n                containerEl.scrollLeft = 0;\n            }\n            else {\n                containerEl.scrollLeft = containerEl.scrollWidth - containerEl.offsetWidth;\n            }\n        }\n    };\n    /** The layout direction of the containing app. */\n    /**\n     * The layout direction of the containing app.\n     * @return {?}\n     */\n    MatTabHeader.prototype._getLayoutDirection = /**\n     * The layout direction of the containing app.\n     * @return {?}\n     */\n    function () {\n        return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n    };\n    /** Performs the CSS transformation on the tab list that will cause the list to scroll. */\n    /**\n     * Performs the CSS transformation on the tab list that will cause the list to scroll.\n     * @return {?}\n     */\n    MatTabHeader.prototype._updateTabScrollPosition = /**\n     * Performs the CSS transformation on the tab list that will cause the list to scroll.\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ scrollDistance = this.scrollDistance;\n        var /** @type {?} */ translateX = this._getLayoutDirection() === 'ltr' ? -scrollDistance : scrollDistance;\n        // Don't use `translate3d` here because we don't want to create a new layer. A new layer\n        // seems to cause flickering and overflow in Internet Explorer. For example, the ink bar\n        // and ripples will exceed the boundaries of the visible tab bar.\n        // See: https://github.com/angular/material2/issues/10276\n        this._tabList.nativeElement.style.transform = \"translateX(\" + translateX + \"px)\";\n    };\n    Object.defineProperty(MatTabHeader.prototype, \"scrollDistance\", {\n        /** Sets the distance in pixels that the tab header should be transformed in the X-axis. */\n        get: /**\n         * Sets the distance in pixels that the tab header should be transformed in the X-axis.\n         * @return {?}\n         */\n        function () { return this._scrollDistance; },\n        set: /**\n         * @param {?} v\n         * @return {?}\n         */\n        function (v) {\n            this._scrollDistance = Math.max(0, Math.min(this._getMaxScrollDistance(), v));\n            // Mark that the scroll distance has changed so that after the view is checked, the CSS\n            // transformation can move the header.\n            this._scrollDistanceChanged = true;\n            this._checkScrollingControls();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * Moves the tab list in the 'before' or 'after' direction (towards the beginning of the list or\n     * the end of the list, respectively). The distance to scroll is computed to be a third of the\n     * length of the tab list view window.\n     *\n     * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n     * should be called sparingly.\n     */\n    /**\n     * Moves the tab list in the 'before' or 'after' direction (towards the beginning of the list or\n     * the end of the list, respectively). The distance to scroll is computed to be a third of the\n     * length of the tab list view window.\n     *\n     * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n     * should be called sparingly.\n     * @param {?} scrollDir\n     * @return {?}\n     */\n    MatTabHeader.prototype._scrollHeader = /**\n     * Moves the tab list in the 'before' or 'after' direction (towards the beginning of the list or\n     * the end of the list, respectively). The distance to scroll is computed to be a third of the\n     * length of the tab list view window.\n     *\n     * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n     * should be called sparingly.\n     * @param {?} scrollDir\n     * @return {?}\n     */\n    function (scrollDir) {\n        var /** @type {?} */ viewLength = this._tabListContainer.nativeElement.offsetWidth;\n        // Move the scroll distance one-third the length of the tab list's viewport.\n        this.scrollDistance += (scrollDir == 'before' ? -1 : 1) * viewLength / 3;\n    };\n    /**\n     * Moves the tab list such that the desired tab label (marked by index) is moved into view.\n     *\n     * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n     * should be called sparingly.\n     */\n    /**\n     * Moves the tab list such that the desired tab label (marked by index) is moved into view.\n     *\n     * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n     * should be called sparingly.\n     * @param {?} labelIndex\n     * @return {?}\n     */\n    MatTabHeader.prototype._scrollToLabel = /**\n     * Moves the tab list such that the desired tab label (marked by index) is moved into view.\n     *\n     * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n     * should be called sparingly.\n     * @param {?} labelIndex\n     * @return {?}\n     */\n    function (labelIndex) {\n        var /** @type {?} */ selectedLabel = this._labelWrappers ? this._labelWrappers.toArray()[labelIndex] : null;\n        if (!selectedLabel) {\n            return;\n        }\n        // The view length is the visible width of the tab labels.\n        var /** @type {?} */ viewLength = this._tabListContainer.nativeElement.offsetWidth;\n        var /** @type {?} */ labelBeforePos, /** @type {?} */ labelAfterPos;\n        if (this._getLayoutDirection() == 'ltr') {\n            labelBeforePos = selectedLabel.getOffsetLeft();\n            labelAfterPos = labelBeforePos + selectedLabel.getOffsetWidth();\n        }\n        else {\n            labelAfterPos = this._tabList.nativeElement.offsetWidth - selectedLabel.getOffsetLeft();\n            labelBeforePos = labelAfterPos - selectedLabel.getOffsetWidth();\n        }\n        var /** @type {?} */ beforeVisiblePos = this.scrollDistance;\n        var /** @type {?} */ afterVisiblePos = this.scrollDistance + viewLength;\n        if (labelBeforePos < beforeVisiblePos) {\n            // Scroll header to move label to the before direction\n            this.scrollDistance -= beforeVisiblePos - labelBeforePos + EXAGGERATED_OVERSCROLL;\n        }\n        else if (labelAfterPos > afterVisiblePos) {\n            // Scroll header to move label to the after direction\n            this.scrollDistance += labelAfterPos - afterVisiblePos + EXAGGERATED_OVERSCROLL;\n        }\n    };\n    /**\n     * Evaluate whether the pagination controls should be displayed. If the scroll width of the\n     * tab list is wider than the size of the header container, then the pagination controls should\n     * be shown.\n     *\n     * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n     * should be called sparingly.\n     */\n    /**\n     * Evaluate whether the pagination controls should be displayed. If the scroll width of the\n     * tab list is wider than the size of the header container, then the pagination controls should\n     * be shown.\n     *\n     * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n     * should be called sparingly.\n     * @return {?}\n     */\n    MatTabHeader.prototype._checkPaginationEnabled = /**\n     * Evaluate whether the pagination controls should be displayed. If the scroll width of the\n     * tab list is wider than the size of the header container, then the pagination controls should\n     * be shown.\n     *\n     * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n     * should be called sparingly.\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ isEnabled = this._tabList.nativeElement.scrollWidth > this._elementRef.nativeElement.offsetWidth;\n        if (!isEnabled) {\n            this.scrollDistance = 0;\n        }\n        if (isEnabled !== this._showPaginationControls) {\n            this._changeDetectorRef.markForCheck();\n        }\n        this._showPaginationControls = isEnabled;\n    };\n    /**\n     * Evaluate whether the before and after controls should be enabled or disabled.\n     * If the header is at the beginning of the list (scroll distance is equal to 0) then disable the\n     * before button. If the header is at the end of the list (scroll distance is equal to the\n     * maximum distance we can scroll), then disable the after button.\n     *\n     * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n     * should be called sparingly.\n     */\n    /**\n     * Evaluate whether the before and after controls should be enabled or disabled.\n     * If the header is at the beginning of the list (scroll distance is equal to 0) then disable the\n     * before button. If the header is at the end of the list (scroll distance is equal to the\n     * maximum distance we can scroll), then disable the after button.\n     *\n     * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n     * should be called sparingly.\n     * @return {?}\n     */\n    MatTabHeader.prototype._checkScrollingControls = /**\n     * Evaluate whether the before and after controls should be enabled or disabled.\n     * If the header is at the beginning of the list (scroll distance is equal to 0) then disable the\n     * before button. If the header is at the end of the list (scroll distance is equal to the\n     * maximum distance we can scroll), then disable the after button.\n     *\n     * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n     * should be called sparingly.\n     * @return {?}\n     */\n    function () {\n        // Check if the pagination arrows should be activated.\n        this._disableScrollBefore = this.scrollDistance == 0;\n        this._disableScrollAfter = this.scrollDistance == this._getMaxScrollDistance();\n        this._changeDetectorRef.markForCheck();\n    };\n    /**\n     * Determines what is the maximum length in pixels that can be set for the scroll distance. This\n     * is equal to the difference in width between the tab list container and tab header container.\n     *\n     * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n     * should be called sparingly.\n     */\n    /**\n     * Determines what is the maximum length in pixels that can be set for the scroll distance. This\n     * is equal to the difference in width between the tab list container and tab header container.\n     *\n     * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n     * should be called sparingly.\n     * @return {?}\n     */\n    MatTabHeader.prototype._getMaxScrollDistance = /**\n     * Determines what is the maximum length in pixels that can be set for the scroll distance. This\n     * is equal to the difference in width between the tab list container and tab header container.\n     *\n     * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n     * should be called sparingly.\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ lengthOfTabList = this._tabList.nativeElement.scrollWidth;\n        var /** @type {?} */ viewLength = this._tabListContainer.nativeElement.offsetWidth;\n        return (lengthOfTabList - viewLength) || 0;\n    };\n    /** Tells the ink-bar to align itself to the current label wrapper */\n    /**\n     * Tells the ink-bar to align itself to the current label wrapper\n     * @return {?}\n     */\n    MatTabHeader.prototype._alignInkBarToSelectedTab = /**\n     * Tells the ink-bar to align itself to the current label wrapper\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ selectedLabelWrapper = this._labelWrappers && this._labelWrappers.length ?\n            this._labelWrappers.toArray()[this.selectedIndex].elementRef.nativeElement :\n            null;\n        this._inkBar.alignToElement(/** @type {?} */ ((selectedLabelWrapper)));\n    };\n    MatTabHeader.decorators = [\n        { type: Component, args: [{selector: 'mat-tab-header',\n                    template: \"<div class=\\\"mat-tab-header-pagination mat-tab-header-pagination-before mat-elevation-z4\\\" aria-hidden=\\\"true\\\" mat-ripple [matRippleDisabled]=\\\"_disableScrollBefore || disableRipple\\\" [class.mat-tab-header-pagination-disabled]=\\\"_disableScrollBefore\\\" (click)=\\\"_scrollHeader('before')\\\"><div class=\\\"mat-tab-header-pagination-chevron\\\"></div></div><div class=\\\"mat-tab-label-container\\\" #tabListContainer (keydown)=\\\"_handleKeydown($event)\\\"><div class=\\\"mat-tab-list\\\" #tabList role=\\\"tablist\\\" (cdkObserveContent)=\\\"_onContentChanges()\\\"><div class=\\\"mat-tab-labels\\\"><ng-content></ng-content></div><mat-ink-bar></mat-ink-bar></div></div><div class=\\\"mat-tab-header-pagination mat-tab-header-pagination-after mat-elevation-z4\\\" aria-hidden=\\\"true\\\" mat-ripple [matRippleDisabled]=\\\"_disableScrollAfter || disableRipple\\\" [class.mat-tab-header-pagination-disabled]=\\\"_disableScrollAfter\\\" (click)=\\\"_scrollHeader('after')\\\"><div class=\\\"mat-tab-header-pagination-chevron\\\"></div></div>\",\n                    styles: [\".mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:0}.mat-tab-label:focus:not(.mat-tab-disabled){opacity:1}@media screen and (-ms-high-contrast:active){.mat-tab-label:focus{outline:dotted 2px}}.mat-tab-label.mat-tab-disabled{cursor:default}@media screen and (-ms-high-contrast:active){.mat-tab-label.mat-tab-disabled{opacity:.5}}.mat-tab-label .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}@media screen and (-ms-high-contrast:active){.mat-tab-label{opacity:1}}@media (max-width:599px){.mat-tab-label{min-width:72px}}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:.5s cubic-bezier(.35,0,.25,1)}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}@media screen and (-ms-high-contrast:active){.mat-ink-bar{outline:solid 2px;height:0}}.mat-tab-header-pagination{position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-pagination-after,.mat-tab-header-rtl .mat-tab-header-pagination-before{padding-right:4px}.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;content:'';height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}.mat-tab-list{flex-grow:1;position:relative;transition:transform .5s cubic-bezier(.35,0,.25,1)}.mat-tab-labels{display:flex}\"],\n                    inputs: ['disableRipple'],\n                    encapsulation: ViewEncapsulation.None,\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    host: {\n                        'class': 'mat-tab-header',\n                        '[class.mat-tab-header-pagination-controls-enabled]': '_showPaginationControls',\n                        '[class.mat-tab-header-rtl]': \"_getLayoutDirection() == 'rtl'\",\n                    },\n                },] },\n    ];\n    /** @nocollapse */\n    MatTabHeader.ctorParameters = function () { return [\n        { type: ElementRef, },\n        { type: ChangeDetectorRef, },\n        { type: ViewportRuler, },\n        { type: Directionality, decorators: [{ type: Optional },] },\n    ]; };\n    MatTabHeader.propDecorators = {\n        \"_labelWrappers\": [{ type: ContentChildren, args: [MatTabLabelWrapper,] },],\n        \"_inkBar\": [{ type: ViewChild, args: [MatInkBar,] },],\n        \"_tabListContainer\": [{ type: ViewChild, args: ['tabListContainer',] },],\n        \"_tabList\": [{ type: ViewChild, args: ['tabList',] },],\n        \"selectedIndex\": [{ type: Input },],\n        \"selectFocusedIndex\": [{ type: Output },],\n        \"indexFocused\": [{ type: Output },],\n    };\n    return MatTabHeader;\n}(_MatTabHeaderMixinBase));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Used to generate unique ID's for each tab component\n */\nvar /** @type {?} */ nextId = 0;\n/**\n * A simple change event emitted on focus or selection changes.\n */\nvar  /**\n * A simple change event emitted on focus or selection changes.\n */\nMatTabChangeEvent = /** @class */ (function () {\n    function MatTabChangeEvent() {\n    }\n    return MatTabChangeEvent;\n}());\n/**\n * \\@docs-private\n */\nvar  /**\n * \\@docs-private\n */\nMatTabGroupBase = /** @class */ (function () {\n    function MatTabGroupBase(_elementRef) {\n        this._elementRef = _elementRef;\n    }\n    return MatTabGroupBase;\n}());\nvar /** @type {?} */ _MatTabGroupMixinBase = mixinColor(mixinDisableRipple(MatTabGroupBase), 'primary');\n/**\n * Material design tab-group component.  Supports basic tab pairs (label + content) and includes\n * animated ink-bar, keyboard navigation, and screen reader.\n * See: https://material.io/design/components/tabs.html\n */\nvar MatTabGroup = /** @class */ (function (_super) {\n    __extends(MatTabGroup, _super);\n    function MatTabGroup(elementRef, _changeDetectorRef) {\n        var _this = _super.call(this, elementRef) || this;\n        _this._changeDetectorRef = _changeDetectorRef;\n        /**\n         * The tab index that should be selected after the content has been checked.\n         */\n        _this._indexToSelect = 0;\n        /**\n         * Snapshot of the height of the tab body wrapper before another tab is activated.\n         */\n        _this._tabBodyWrapperHeight = 0;\n        /**\n         * Subscription to tabs being added/removed.\n         */\n        _this._tabsSubscription = Subscription.EMPTY;\n        /**\n         * Subscription to changes in the tab labels.\n         */\n        _this._tabLabelSubscription = Subscription.EMPTY;\n        _this._dynamicHeight = false;\n        _this._selectedIndex = null;\n        /**\n         * Position of the tab header.\n         */\n        _this.headerPosition = 'above';\n        /**\n         * Output to enable support for two-way binding on `[(selectedIndex)]`\n         */\n        _this.selectedIndexChange = new EventEmitter();\n        /**\n         * Event emitted when focus has changed within a tab group.\n         */\n        _this.focusChange = new EventEmitter();\n        /**\n         * Event emitted when the body animation has completed\n         */\n        _this.animationDone = new EventEmitter();\n        /**\n         * Event emitted when the tab selection has changed.\n         */\n        _this.selectedTabChange = new EventEmitter(true);\n        _this._groupId = nextId++;\n        return _this;\n    }\n    Object.defineProperty(MatTabGroup.prototype, \"dynamicHeight\", {\n        get: /**\n         * Whether the tab group should grow to the size of the active tab.\n         * @return {?}\n         */\n        function () { return this._dynamicHeight; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) { this._dynamicHeight = coerceBooleanProperty(value); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatTabGroup.prototype, \"selectedIndex\", {\n        get: /**\n         * The index of the active tab.\n         * @return {?}\n         */\n        function () { return this._selectedIndex; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._indexToSelect = coerceNumberProperty(value, null);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatTabGroup.prototype, \"backgroundColor\", {\n        get: /**\n         * Background color of the tab group.\n         * @return {?}\n         */\n        function () { return this._backgroundColor; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            var /** @type {?} */ nativeElement = this._elementRef.nativeElement;\n            nativeElement.classList.remove(\"mat-background-\" + this.backgroundColor);\n            if (value) {\n                nativeElement.classList.add(\"mat-background-\" + value);\n            }\n            this._backgroundColor = value;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * After the content is checked, this component knows what tabs have been defined\n     * and what the selected index should be. This is where we can know exactly what position\n     * each tab should be in according to the new selected index, and additionally we know how\n     * a new selected tab should transition in (from the left or right).\n     */\n    /**\n     * After the content is checked, this component knows what tabs have been defined\n     * and what the selected index should be. This is where we can know exactly what position\n     * each tab should be in according to the new selected index, and additionally we know how\n     * a new selected tab should transition in (from the left or right).\n     * @return {?}\n     */\n    MatTabGroup.prototype.ngAfterContentChecked = /**\n     * After the content is checked, this component knows what tabs have been defined\n     * and what the selected index should be. This is where we can know exactly what position\n     * each tab should be in according to the new selected index, and additionally we know how\n     * a new selected tab should transition in (from the left or right).\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        // Don't clamp the `indexToSelect` immediately in the setter because it can happen that\n        // the amount of tabs changes before the actual change detection runs.\n        var /** @type {?} */ indexToSelect = this._indexToSelect = this._clampTabIndex(this._indexToSelect);\n        // If there is a change in selected index, emit a change event. Should not trigger if\n        // the selected index has not yet been initialized.\n        if (this._selectedIndex != indexToSelect) {\n            var /** @type {?} */ isFirstRun_1 = this._selectedIndex == null;\n            if (!isFirstRun_1) {\n                this.selectedTabChange.emit(this._createChangeEvent(indexToSelect));\n            }\n            // Changing these values after change detection has run\n            // since the checked content may contain references to them.\n            Promise.resolve().then(function () {\n                _this._tabs.forEach(function (tab, index) { return tab.isActive = index === indexToSelect; });\n                if (!isFirstRun_1) {\n                    _this.selectedIndexChange.emit(indexToSelect);\n                }\n            });\n        }\n        // Setup the position for each tab and optionally setup an origin on the next selected tab.\n        this._tabs.forEach(function (tab, index) {\n            tab.position = index - indexToSelect;\n            // If there is already a selected tab, then set up an origin for the next selected tab\n            // if it doesn't have one already.\n            if (_this._selectedIndex != null && tab.position == 0 && !tab.origin) {\n                tab.origin = indexToSelect - _this._selectedIndex;\n            }\n        });\n        if (this._selectedIndex !== indexToSelect) {\n            this._selectedIndex = indexToSelect;\n            this._changeDetectorRef.markForCheck();\n        }\n    };\n    /**\n     * @return {?}\n     */\n    MatTabGroup.prototype.ngAfterContentInit = /**\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        this._subscribeToTabLabels();\n        // Subscribe to changes in the amount of tabs, in order to be\n        // able to re-render the content as new tabs are added or removed.\n        this._tabsSubscription = this._tabs.changes.subscribe(function () {\n            var /** @type {?} */ indexToSelect = _this._clampTabIndex(_this._indexToSelect);\n            // Maintain the previously-selected tab if a new tab is added or removed and there is no\n            // explicit change that selects a different tab.\n            if (indexToSelect === _this._selectedIndex) {\n                var /** @type {?} */ tabs = _this._tabs.toArray();\n                for (var /** @type {?} */ i = 0; i < tabs.length; i++) {\n                    if (tabs[i].isActive) {\n                        // Assign both to the `_indexToSelect` and `_selectedIndex` so we don't fire a changed\n                        // event, otherwise the consumer may end up in an infinite loop in some edge cases like\n                        // adding a tab within the `selectedIndexChange` event.\n                        // Assign both to the `_indexToSelect` and `_selectedIndex` so we don't fire a changed\n                        // event, otherwise the consumer may end up in an infinite loop in some edge cases like\n                        // adding a tab within the `selectedIndexChange` event.\n                        _this._indexToSelect = _this._selectedIndex = i;\n                        break;\n                    }\n                }\n            }\n            _this._subscribeToTabLabels();\n            _this._changeDetectorRef.markForCheck();\n        });\n    };\n    /**\n     * @return {?}\n     */\n    MatTabGroup.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        this._tabsSubscription.unsubscribe();\n        this._tabLabelSubscription.unsubscribe();\n    };\n    /** Re-aligns the ink bar to the selected tab element. */\n    /**\n     * Re-aligns the ink bar to the selected tab element.\n     * @return {?}\n     */\n    MatTabGroup.prototype.realignInkBar = /**\n     * Re-aligns the ink bar to the selected tab element.\n     * @return {?}\n     */\n    function () {\n        if (this._tabHeader) {\n            this._tabHeader._alignInkBarToSelectedTab();\n        }\n    };\n    /**\n     * @param {?} index\n     * @return {?}\n     */\n    MatTabGroup.prototype._focusChanged = /**\n     * @param {?} index\n     * @return {?}\n     */\n    function (index) {\n        this.focusChange.emit(this._createChangeEvent(index));\n    };\n    /**\n     * @param {?} index\n     * @return {?}\n     */\n    MatTabGroup.prototype._createChangeEvent = /**\n     * @param {?} index\n     * @return {?}\n     */\n    function (index) {\n        var /** @type {?} */ event = new MatTabChangeEvent;\n        event.index = index;\n        if (this._tabs && this._tabs.length) {\n            event.tab = this._tabs.toArray()[index];\n        }\n        return event;\n    };\n    /**\n     * Subscribes to changes in the tab labels. This is needed, because the \\@Input for the label is\n     * on the MatTab component, whereas the data binding is inside the MatTabGroup. In order for the\n     * binding to be updated, we need to subscribe to changes in it and trigger change detection\n     * manually.\n     * @return {?}\n     */\n    MatTabGroup.prototype._subscribeToTabLabels = /**\n     * Subscribes to changes in the tab labels. This is needed, because the \\@Input for the label is\n     * on the MatTab component, whereas the data binding is inside the MatTabGroup. In order for the\n     * binding to be updated, we need to subscribe to changes in it and trigger change detection\n     * manually.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        if (this._tabLabelSubscription) {\n            this._tabLabelSubscription.unsubscribe();\n        }\n        this._tabLabelSubscription = merge.apply(void 0, this._tabs.map(function (tab) { return tab._stateChanges; })).subscribe(function () { return _this._changeDetectorRef.markForCheck(); });\n    };\n    /**\n     * Clamps the given index to the bounds of 0 and the tabs length.\n     * @param {?} index\n     * @return {?}\n     */\n    MatTabGroup.prototype._clampTabIndex = /**\n     * Clamps the given index to the bounds of 0 and the tabs length.\n     * @param {?} index\n     * @return {?}\n     */\n    function (index) {\n        // Note the `|| 0`, which ensures that values like NaN can't get through\n        // and which would otherwise throw the component into an infinite loop\n        // (since Math.max(NaN, 0) === NaN).\n        return Math.min(this._tabs.length - 1, Math.max(index || 0, 0));\n    };\n    /** Returns a unique id for each tab label element */\n    /**\n     * Returns a unique id for each tab label element\n     * @param {?} i\n     * @return {?}\n     */\n    MatTabGroup.prototype._getTabLabelId = /**\n     * Returns a unique id for each tab label element\n     * @param {?} i\n     * @return {?}\n     */\n    function (i) {\n        return \"mat-tab-label-\" + this._groupId + \"-\" + i;\n    };\n    /** Returns a unique id for each tab content element */\n    /**\n     * Returns a unique id for each tab content element\n     * @param {?} i\n     * @return {?}\n     */\n    MatTabGroup.prototype._getTabContentId = /**\n     * Returns a unique id for each tab content element\n     * @param {?} i\n     * @return {?}\n     */\n    function (i) {\n        return \"mat-tab-content-\" + this._groupId + \"-\" + i;\n    };\n    /**\n     * Sets the height of the body wrapper to the height of the activating tab if dynamic\n     * height property is true.\n     */\n    /**\n     * Sets the height of the body wrapper to the height of the activating tab if dynamic\n     * height property is true.\n     * @param {?} tabHeight\n     * @return {?}\n     */\n    MatTabGroup.prototype._setTabBodyWrapperHeight = /**\n     * Sets the height of the body wrapper to the height of the activating tab if dynamic\n     * height property is true.\n     * @param {?} tabHeight\n     * @return {?}\n     */\n    function (tabHeight) {\n        if (!this._dynamicHeight || !this._tabBodyWrapperHeight) {\n            return;\n        }\n        var /** @type {?} */ wrapper = this._tabBodyWrapper.nativeElement;\n        wrapper.style.height = this._tabBodyWrapperHeight + 'px';\n        // This conditional forces the browser to paint the height so that\n        // the animation to the new height can have an origin.\n        if (this._tabBodyWrapper.nativeElement.offsetHeight) {\n            wrapper.style.height = tabHeight + 'px';\n        }\n    };\n    /** Removes the height of the tab body wrapper. */\n    /**\n     * Removes the height of the tab body wrapper.\n     * @return {?}\n     */\n    MatTabGroup.prototype._removeTabBodyWrapperHeight = /**\n     * Removes the height of the tab body wrapper.\n     * @return {?}\n     */\n    function () {\n        this._tabBodyWrapperHeight = this._tabBodyWrapper.nativeElement.clientHeight;\n        this._tabBodyWrapper.nativeElement.style.height = '';\n        this.animationDone.emit();\n    };\n    /** Handle click events, setting new selected index if appropriate. */\n    /**\n     * Handle click events, setting new selected index if appropriate.\n     * @param {?} tab\n     * @param {?} tabHeader\n     * @param {?} idx\n     * @return {?}\n     */\n    MatTabGroup.prototype._handleClick = /**\n     * Handle click events, setting new selected index if appropriate.\n     * @param {?} tab\n     * @param {?} tabHeader\n     * @param {?} idx\n     * @return {?}\n     */\n    function (tab, tabHeader, idx) {\n        if (!tab.disabled) {\n            this.selectedIndex = tabHeader.focusIndex = idx;\n        }\n    };\n    /** Retrieves the tabindex for the tab. */\n    /**\n     * Retrieves the tabindex for the tab.\n     * @param {?} tab\n     * @param {?} idx\n     * @return {?}\n     */\n    MatTabGroup.prototype._getTabIndex = /**\n     * Retrieves the tabindex for the tab.\n     * @param {?} tab\n     * @param {?} idx\n     * @return {?}\n     */\n    function (tab, idx) {\n        if (tab.disabled) {\n            return null;\n        }\n        return this.selectedIndex === idx ? 0 : -1;\n    };\n    MatTabGroup.decorators = [\n        { type: Component, args: [{selector: 'mat-tab-group',\n                    exportAs: 'matTabGroup',\n                    template: \"<mat-tab-header #tabHeader [selectedIndex]=\\\"selectedIndex\\\" [disableRipple]=\\\"disableRipple\\\" (indexFocused)=\\\"_focusChanged($event)\\\" (selectFocusedIndex)=\\\"selectedIndex = $event\\\"><div class=\\\"mat-tab-label\\\" role=\\\"tab\\\" matTabLabelWrapper mat-ripple cdkMonitorElementFocus *ngFor=\\\"let tab of _tabs; let i = index\\\" [id]=\\\"_getTabLabelId(i)\\\" [attr.tabIndex]=\\\"_getTabIndex(tab, i)\\\" [attr.aria-posinset]=\\\"i + 1\\\" [attr.aria-setsize]=\\\"_tabs.length\\\" [attr.aria-controls]=\\\"_getTabContentId(i)\\\" [attr.aria-selected]=\\\"selectedIndex == i\\\" [attr.aria-label]=\\\"tab.ariaLabel || null\\\" [attr.aria-labelledby]=\\\"(!tab.ariaLabel && tab.ariaLabelledby) ? tab.ariaLabelledby : null\\\" [class.mat-tab-label-active]=\\\"selectedIndex == i\\\" [disabled]=\\\"tab.disabled\\\" [matRippleDisabled]=\\\"tab.disabled || disableRipple\\\" (click)=\\\"_handleClick(tab, tabHeader, i)\\\"><div class=\\\"mat-tab-label-content\\\"><ng-template [ngIf]=\\\"tab.templateLabel\\\"><ng-template [cdkPortalOutlet]=\\\"tab.templateLabel\\\"></ng-template></ng-template><ng-template [ngIf]=\\\"!tab.templateLabel\\\">{{tab.textLabel}}</ng-template></div></div></mat-tab-header><div class=\\\"mat-tab-body-wrapper\\\" #tabBodyWrapper><mat-tab-body role=\\\"tabpanel\\\" *ngFor=\\\"let tab of _tabs; let i = index\\\" [id]=\\\"_getTabContentId(i)\\\" [attr.aria-labelledby]=\\\"_getTabLabelId(i)\\\" [class.mat-tab-body-active]=\\\"selectedIndex == i\\\" [content]=\\\"tab.content\\\" [position]=\\\"tab.position\\\" [origin]=\\\"tab.origin\\\" (_onCentered)=\\\"_removeTabBodyWrapperHeight()\\\" (_onCentering)=\\\"_setTabBodyWrapperHeight($event)\\\"></mat-tab-body></div>\",\n                    styles: [\".mat-tab-group{display:flex;flex-direction:column}.mat-tab-group.mat-tab-group-inverted-header{flex-direction:column-reverse}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:0}.mat-tab-label:focus:not(.mat-tab-disabled){opacity:1}@media screen and (-ms-high-contrast:active){.mat-tab-label:focus{outline:dotted 2px}}.mat-tab-label.mat-tab-disabled{cursor:default}@media screen and (-ms-high-contrast:active){.mat-tab-label.mat-tab-disabled{opacity:.5}}.mat-tab-label .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}@media screen and (-ms-high-contrast:active){.mat-tab-label{opacity:1}}@media (max-width:599px){.mat-tab-label{padding:0 12px}}@media (max-width:959px){.mat-tab-label{padding:0 12px}}.mat-tab-group[mat-stretch-tabs]>.mat-tab-header .mat-tab-label{flex-basis:0;flex-grow:1}.mat-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height .5s cubic-bezier(.35,0,.25,1)}.mat-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden;flex-basis:100%}.mat-tab-body.mat-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-tab-group.mat-tab-group-dynamic-height .mat-tab-body.mat-tab-body-active{overflow-y:hidden}\"],\n                    encapsulation: ViewEncapsulation.None,\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    inputs: ['color', 'disableRipple'],\n                    host: {\n                        'class': 'mat-tab-group',\n                        '[class.mat-tab-group-dynamic-height]': 'dynamicHeight',\n                        '[class.mat-tab-group-inverted-header]': 'headerPosition === \"below\"',\n                    },\n                },] },\n    ];\n    /** @nocollapse */\n    MatTabGroup.ctorParameters = function () { return [\n        { type: ElementRef, },\n        { type: ChangeDetectorRef, },\n    ]; };\n    MatTabGroup.propDecorators = {\n        \"_tabs\": [{ type: ContentChildren, args: [MatTab,] },],\n        \"_tabBodyWrapper\": [{ type: ViewChild, args: ['tabBodyWrapper',] },],\n        \"_tabHeader\": [{ type: ViewChild, args: ['tabHeader',] },],\n        \"dynamicHeight\": [{ type: Input },],\n        \"selectedIndex\": [{ type: Input },],\n        \"headerPosition\": [{ type: Input },],\n        \"backgroundColor\": [{ type: Input },],\n        \"selectedIndexChange\": [{ type: Output },],\n        \"focusChange\": [{ type: Output },],\n        \"animationDone\": [{ type: Output },],\n        \"selectedTabChange\": [{ type: Output },],\n    };\n    return MatTabGroup;\n}(_MatTabGroupMixinBase));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * \\@docs-private\n */\nvar  /**\n * \\@docs-private\n */\nMatTabNavBase = /** @class */ (function () {\n    function MatTabNavBase(_elementRef) {\n        this._elementRef = _elementRef;\n    }\n    return MatTabNavBase;\n}());\nvar /** @type {?} */ _MatTabNavMixinBase = mixinDisableRipple(mixinColor(MatTabNavBase, 'primary'));\n/**\n * Navigation component matching the styles of the tab group header.\n * Provides anchored navigation with animated ink bar.\n */\nvar MatTabNav = /** @class */ (function (_super) {\n    __extends(MatTabNav, _super);\n    function MatTabNav(elementRef, _dir, _ngZone, _changeDetectorRef, _viewportRuler) {\n        var _this = _super.call(this, elementRef) || this;\n        _this._dir = _dir;\n        _this._ngZone = _ngZone;\n        _this._changeDetectorRef = _changeDetectorRef;\n        _this._viewportRuler = _viewportRuler;\n        /**\n         * Subject that emits when the component has been destroyed.\n         */\n        _this._onDestroy = new Subject();\n        return _this;\n    }\n    Object.defineProperty(MatTabNav.prototype, \"backgroundColor\", {\n        get: /**\n         * Background color of the tab nav.\n         * @return {?}\n         */\n        function () { return this._backgroundColor; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            var /** @type {?} */ nativeElement = this._elementRef.nativeElement;\n            nativeElement.classList.remove(\"mat-background-\" + this.backgroundColor);\n            if (value) {\n                nativeElement.classList.add(\"mat-background-\" + value);\n            }\n            this._backgroundColor = value;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * Notifies the component that the active link has been changed.\n     * @breaking-change 7.0.0 `element` parameter to be removed.\n     */\n    /**\n     * Notifies the component that the active link has been changed.\n     * \\@breaking-change 7.0.0 `element` parameter to be removed.\n     * @param {?} element\n     * @return {?}\n     */\n    MatTabNav.prototype.updateActiveLink = /**\n     * Notifies the component that the active link has been changed.\n     * \\@breaking-change 7.0.0 `element` parameter to be removed.\n     * @param {?} element\n     * @return {?}\n     */\n    function (element) {\n        // Note: keeping the `element` for backwards-compat, but isn't being used for anything.\n        // @breaking-change 7.0.0\n        this._activeLinkChanged = !!element;\n        this._changeDetectorRef.markForCheck();\n    };\n    /**\n     * @return {?}\n     */\n    MatTabNav.prototype.ngAfterContentInit = /**\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        this._ngZone.runOutsideAngular(function () {\n            var /** @type {?} */ dirChange = _this._dir ? _this._dir.change : of(null);\n            return merge(dirChange, _this._viewportRuler.change(10))\n                .pipe(takeUntil(_this._onDestroy))\n                .subscribe(function () { return _this._alignInkBar(); });\n        });\n    };\n    /** Checks if the active link has been changed and, if so, will update the ink bar. */\n    /**\n     * Checks if the active link has been changed and, if so, will update the ink bar.\n     * @return {?}\n     */\n    MatTabNav.prototype.ngAfterContentChecked = /**\n     * Checks if the active link has been changed and, if so, will update the ink bar.\n     * @return {?}\n     */\n    function () {\n        if (this._activeLinkChanged) {\n            var /** @type {?} */ activeTab = this._tabLinks.find(function (tab) { return tab.active; });\n            this._activeLinkElement = activeTab ? activeTab._elementRef : null;\n            this._alignInkBar();\n            this._activeLinkChanged = false;\n        }\n    };\n    /**\n     * @return {?}\n     */\n    MatTabNav.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        this._onDestroy.next();\n        this._onDestroy.complete();\n    };\n    /** Aligns the ink bar to the active link. */\n    /**\n     * Aligns the ink bar to the active link.\n     * @return {?}\n     */\n    MatTabNav.prototype._alignInkBar = /**\n     * Aligns the ink bar to the active link.\n     * @return {?}\n     */\n    function () {\n        if (this._activeLinkElement) {\n            this._inkBar.show();\n            this._inkBar.alignToElement(this._activeLinkElement.nativeElement);\n        }\n        else {\n            this._inkBar.hide();\n        }\n    };\n    MatTabNav.decorators = [\n        { type: Component, args: [{selector: '[mat-tab-nav-bar]',\n                    exportAs: 'matTabNavBar, matTabNav',\n                    inputs: ['color', 'disableRipple'],\n                    template: \"<div class=\\\"mat-tab-links\\\" (cdkObserveContent)=\\\"_alignInkBar()\\\"><ng-content></ng-content><mat-ink-bar></mat-ink-bar></div>\",\n                    styles: [\".mat-tab-nav-bar{overflow:hidden;position:relative;flex-shrink:0}.mat-tab-links{position:relative;display:flex}.mat-tab-link{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;vertical-align:top;text-decoration:none;position:relative;overflow:hidden;-webkit-tap-highlight-color:transparent}.mat-tab-link:focus{outline:0}.mat-tab-link:focus:not(.mat-tab-disabled){opacity:1}@media screen and (-ms-high-contrast:active){.mat-tab-link:focus{outline:dotted 2px}}.mat-tab-link.mat-tab-disabled{cursor:default}@media screen and (-ms-high-contrast:active){.mat-tab-link.mat-tab-disabled{opacity:.5}}.mat-tab-link .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}@media screen and (-ms-high-contrast:active){.mat-tab-link{opacity:1}}[mat-stretch-tabs] .mat-tab-link{flex-basis:0;flex-grow:1}@media (max-width:599px){.mat-tab-link{min-width:72px}}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:.5s cubic-bezier(.35,0,.25,1)}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}@media screen and (-ms-high-contrast:active){.mat-ink-bar{outline:solid 2px;height:0}}\"],\n                    host: { 'class': 'mat-tab-nav-bar' },\n                    encapsulation: ViewEncapsulation.None,\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                },] },\n    ];\n    /** @nocollapse */\n    MatTabNav.ctorParameters = function () { return [\n        { type: ElementRef, },\n        { type: Directionality, decorators: [{ type: Optional },] },\n        { type: NgZone, },\n        { type: ChangeDetectorRef, },\n        { type: ViewportRuler, },\n    ]; };\n    MatTabNav.propDecorators = {\n        \"_inkBar\": [{ type: ViewChild, args: [MatInkBar,] },],\n        \"_tabLinks\": [{ type: ContentChildren, args: [forwardRef(function () { return MatTabLink; }), { descendants: true },] },],\n        \"backgroundColor\": [{ type: Input },],\n    };\n    return MatTabNav;\n}(_MatTabNavMixinBase));\nvar MatTabLinkBase = /** @class */ (function () {\n    function MatTabLinkBase() {\n    }\n    return MatTabLinkBase;\n}());\nvar /** @type {?} */ _MatTabLinkMixinBase = mixinTabIndex(mixinDisableRipple(mixinDisabled(MatTabLinkBase)));\n/**\n * Link inside of a `mat-tab-nav-bar`.\n */\nvar MatTabLink = /** @class */ (function (_super) {\n    __extends(MatTabLink, _super);\n    function MatTabLink(_tabNavBar, _elementRef, ngZone, platform, globalOptions, tabIndex, _focusMonitor) {\n        var _this = _super.call(this) || this;\n        _this._tabNavBar = _tabNavBar;\n        _this._elementRef = _elementRef;\n        _this._focusMonitor = _focusMonitor;\n        /**\n         * Whether the tab link is active or not.\n         */\n        _this._isActive = false;\n        /**\n         * Whether the ripples are globally disabled through the RippleGlobalOptions\n         */\n        _this._ripplesGloballyDisabled = false;\n        /**\n         * Ripple configuration for ripples that are launched on pointer down.\n         * \\@docs-private\n         */\n        _this.rippleConfig = {};\n        _this._tabLinkRipple = new RippleRenderer(_this, ngZone, _elementRef, platform);\n        _this._tabLinkRipple.setupTriggerEvents(_elementRef.nativeElement);\n        _this.tabIndex = parseInt(tabIndex) || 0;\n        if (globalOptions) {\n            _this._ripplesGloballyDisabled = !!globalOptions.disabled;\n            // TODO(paul): Once the speedFactor is removed, we no longer need to copy each single option.\n            // TODO(paul): Once the speedFactor is removed, we no longer need to copy each single option.\n            _this.rippleConfig = {\n                terminateOnPointerUp: globalOptions.terminateOnPointerUp,\n                speedFactor: globalOptions.baseSpeedFactor,\n                animation: globalOptions.animation,\n            };\n        }\n        if (_focusMonitor) {\n            _focusMonitor.monitor(_elementRef.nativeElement);\n        }\n        return _this;\n    }\n    Object.defineProperty(MatTabLink.prototype, \"active\", {\n        get: /**\n         * Whether the link is active.\n         * @return {?}\n         */\n        function () { return this._isActive; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            if (value !== this._isActive) {\n                this._isActive = value;\n                this._tabNavBar.updateActiveLink(this._elementRef);\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatTabLink.prototype, \"rippleDisabled\", {\n        /**\n         * Whether ripples are disabled on interaction\n         * @docs-private\n         */\n        get: /**\n         * Whether ripples are disabled on interaction\n         * \\@docs-private\n         * @return {?}\n         */\n        function () {\n            return this.disabled || this.disableRipple || this._tabNavBar.disableRipple ||\n                this._ripplesGloballyDisabled;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @return {?}\n     */\n    MatTabLink.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        this._tabLinkRipple._removeTriggerEvents();\n        if (this._focusMonitor) {\n            this._focusMonitor.stopMonitoring(this._elementRef.nativeElement);\n        }\n    };\n    /**\n     * Handles the click event, preventing default navigation if the tab link is disabled.\n     */\n    /**\n     * Handles the click event, preventing default navigation if the tab link is disabled.\n     * @param {?} event\n     * @return {?}\n     */\n    MatTabLink.prototype._handleClick = /**\n     * Handles the click event, preventing default navigation if the tab link is disabled.\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        if (this.disabled) {\n            event.preventDefault();\n        }\n    };\n    MatTabLink.decorators = [\n        { type: Directive, args: [{\n                    selector: '[mat-tab-link], [matTabLink]',\n                    exportAs: 'matTabLink',\n                    inputs: ['disabled', 'disableRipple', 'tabIndex'],\n                    host: {\n                        'class': 'mat-tab-link',\n                        '[attr.aria-current]': 'active',\n                        '[attr.aria-disabled]': 'disabled.toString()',\n                        '[attr.tabIndex]': 'tabIndex',\n                        '[class.mat-tab-disabled]': 'disabled',\n                        '[class.mat-tab-label-active]': 'active',\n                        '(click)': '_handleClick($event)'\n                    }\n                },] },\n    ];\n    /** @nocollapse */\n    MatTabLink.ctorParameters = function () { return [\n        { type: MatTabNav, },\n        { type: ElementRef, },\n        { type: NgZone, },\n        { type: Platform, },\n        { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_RIPPLE_GLOBAL_OPTIONS,] },] },\n        { type: undefined, decorators: [{ type: Attribute, args: ['tabindex',] },] },\n        { type: FocusMonitor, },\n    ]; };\n    MatTabLink.propDecorators = {\n        \"active\": [{ type: Input },],\n    };\n    return MatTabLink;\n}(_MatTabLinkMixinBase));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nvar MatTabsModule = /** @class */ (function () {\n    function MatTabsModule() {\n    }\n    MatTabsModule.decorators = [\n        { type: NgModule, args: [{\n                    imports: [\n                        CommonModule,\n                        MatCommonModule,\n                        PortalModule,\n                        MatRippleModule,\n                        ObserversModule,\n                        A11yModule,\n                    ],\n                    // Don't export all components because some are only to be used internally.\n                    exports: [\n                        MatCommonModule,\n                        MatTabGroup,\n                        MatTabLabel,\n                        MatTab,\n                        MatTabNav,\n                        MatTabLink,\n                        MatTabContent,\n                    ],\n                    declarations: [\n                        MatTabGroup,\n                        MatTabLabel,\n                        MatTab,\n                        MatInkBar,\n                        MatTabLabelWrapper,\n                        MatTabNav,\n                        MatTabLink,\n                        MatTabBody,\n                        MatTabBodyPortal,\n                        MatTabHeader,\n                        MatTabContent,\n                    ],\n                },] },\n    ];\n    return MatTabsModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\nexport { MatInkBar, _MAT_INK_BAR_POSITIONER, MatTabBody, MatTabBodyPortal, MatTabHeader, MatTabLabelWrapper, MatTab, MatTabLabel, MatTabNav, MatTabLink, MatTabContent, MatTabsModule, MatTabChangeEvent, MatTabGroupBase, _MatTabGroupMixinBase, MatTabGroup, matTabsAnimations, _MAT_INK_BAR_POSITIONER_FACTORY as ɵa24, MatTabBase as ɵf24, _MatTabMixinBase as ɵg24, MatTabHeaderBase as ɵb24, _MatTabHeaderMixinBase as ɵc24, MatTabLabelWrapperBase as ɵd24, _MatTabLabelWrapperMixinBase as ɵe24, MatTabLinkBase as ɵj24, MatTabNavBase as ɵh24, _MatTabLinkMixinBase as ɵk24, _MatTabNavMixinBase as ɵi24 };\n//# sourceMappingURL=tabs.es5.js.map\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/core\";\nimport * as i2 from \"@angular/cdk/bidi\";\nimport * as i3 from \"@angular/cdk/platform\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"@angular/platform-browser/animations\";\nvar MatCommonModuleNgFactory = i0.ɵcmf(i1.MatCommonModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(1073742336, i2.BidiModule, i2.BidiModule, []), i0.ɵmpd(1073742336, i1.MatCommonModule, i1.MatCommonModule, [[2, i1.MATERIAL_SANITY_CHECKS]])]); });\nexport { MatCommonModuleNgFactory as MatCommonModuleNgFactory };\nvar NativeDateModuleNgFactory = i0.ɵcmf(i1.NativeDateModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i1.DateAdapter, i1.NativeDateAdapter, [[2, i1.MAT_DATE_LOCALE], i3.Platform]), i0.ɵmpd(1073742336, i3.PlatformModule, i3.PlatformModule, []), i0.ɵmpd(1073742336, i1.NativeDateModule, i1.NativeDateModule, [])]); });\nexport { NativeDateModuleNgFactory as NativeDateModuleNgFactory };\nvar MatNativeDateModuleNgFactory = i0.ɵcmf(i1.MatNativeDateModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i1.DateAdapter, i1.NativeDateAdapter, [[2, i1.MAT_DATE_LOCALE], i3.Platform]), i0.ɵmpd(1073742336, i3.PlatformModule, i3.PlatformModule, []), i0.ɵmpd(1073742336, i1.NativeDateModule, i1.NativeDateModule, []), i0.ɵmpd(1073742336, i1.MatNativeDateModule, i1.MatNativeDateModule, []), i0.ɵmpd(256, i1.MAT_DATE_FORMATS, i1.MAT_NATIVE_DATE_FORMATS, [])]); });\nexport { MatNativeDateModuleNgFactory as MatNativeDateModuleNgFactory };\nvar MatLineModuleNgFactory = i0.ɵcmf(i1.MatLineModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(1073742336, i2.BidiModule, i2.BidiModule, []), i0.ɵmpd(1073742336, i1.MatCommonModule, i1.MatCommonModule, [[2, i1.MATERIAL_SANITY_CHECKS]]), i0.ɵmpd(1073742336, i1.MatLineModule, i1.MatLineModule, [])]); });\nexport { MatLineModuleNgFactory as MatLineModuleNgFactory };\nvar MatOptionModuleNgFactory = i0.ɵcmf(i1.MatOptionModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i4.NgLocalization, i4.NgLocaleLocalization, [i0.LOCALE_ID, [2, i4.ɵangular_packages_common_common_a]]), i0.ɵmpd(1073742336, i2.BidiModule, i2.BidiModule, []), i0.ɵmpd(1073742336, i1.MatCommonModule, i1.MatCommonModule, [[2, i1.MATERIAL_SANITY_CHECKS]]), i0.ɵmpd(1073742336, i3.PlatformModule, i3.PlatformModule, []), i0.ɵmpd(1073742336, i1.MatRippleModule, i1.MatRippleModule, []), i0.ɵmpd(1073742336, i4.CommonModule, i4.CommonModule, []), i0.ɵmpd(1073742336, i1.MatPseudoCheckboxModule, i1.MatPseudoCheckboxModule, []), i0.ɵmpd(1073742336, i1.MatOptionModule, i1.MatOptionModule, [])]); });\nexport { MatOptionModuleNgFactory as MatOptionModuleNgFactory };\nvar MatRippleModuleNgFactory = i0.ɵcmf(i1.MatRippleModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(1073742336, i2.BidiModule, i2.BidiModule, []), i0.ɵmpd(1073742336, i1.MatCommonModule, i1.MatCommonModule, [[2, i1.MATERIAL_SANITY_CHECKS]]), i0.ɵmpd(1073742336, i3.PlatformModule, i3.PlatformModule, []), i0.ɵmpd(1073742336, i1.MatRippleModule, i1.MatRippleModule, [])]); });\nexport { MatRippleModuleNgFactory as MatRippleModuleNgFactory };\nvar MatPseudoCheckboxModuleNgFactory = i0.ɵcmf(i1.MatPseudoCheckboxModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(1073742336, i1.MatPseudoCheckboxModule, i1.MatPseudoCheckboxModule, [])]); });\nexport { MatPseudoCheckboxModuleNgFactory as MatPseudoCheckboxModuleNgFactory };\nvar styles_MatOption = [\".mat-option{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;position:relative;cursor:pointer;outline:0;display:flex;flex-direction:row;max-width:100%;box-sizing:border-box;align-items:center;-webkit-tap-highlight-color:transparent}.mat-option[disabled]{cursor:default}[dir=rtl] .mat-option{text-align:right}.mat-option .mat-icon{margin-right:16px;vertical-align:middle}.mat-option .mat-icon svg{vertical-align:top}[dir=rtl] .mat-option .mat-icon{margin-left:16px;margin-right:0}.mat-option[aria-disabled=true]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.mat-optgroup .mat-option:not(.mat-option-multiple){padding-left:32px}[dir=rtl] .mat-optgroup .mat-option:not(.mat-option-multiple){padding-left:16px;padding-right:32px}@media screen and (-ms-high-contrast:active){.mat-option{margin:0 1px}.mat-option.mat-active{border:solid 1px currentColor;margin:0}}.mat-option-text{display:inline-block;flex-grow:1;overflow:hidden;text-overflow:ellipsis}.mat-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}@media screen and (-ms-high-contrast:active){.mat-option-ripple{opacity:.5}}.mat-option-pseudo-checkbox{margin-right:8px}[dir=rtl] .mat-option-pseudo-checkbox{margin-left:8px;margin-right:0}\"];\nvar RenderType_MatOption = i0.ɵcrt({ encapsulation: 2, styles: styles_MatOption, data: {} });\nexport { RenderType_MatOption as RenderType_MatOption };\nfunction View_MatOption_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"mat-pseudo-checkbox\", [[\"class\", \"mat-option-pseudo-checkbox mat-pseudo-checkbox\"]], [[2, \"mat-pseudo-checkbox-indeterminate\", null], [2, \"mat-pseudo-checkbox-checked\", null], [2, \"mat-pseudo-checkbox-disabled\", null], [2, \"_mat-animation-noopable\", null]], null, null, View_MatPseudoCheckbox_0, RenderType_MatPseudoCheckbox)), i0.ɵdid(1, 49152, null, 0, i1.MatPseudoCheckbox, [[2, i5.ANIMATION_MODULE_TYPE]], { state: [0, \"state\"], disabled: [1, \"disabled\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_4 = (_co.selected ? \"checked\" : \"\"); var currVal_5 = _co.disabled; _ck(_v, 1, 0, currVal_4, currVal_5); }, function (_ck, _v) { var currVal_0 = (i0.ɵnov(_v, 1).state === \"indeterminate\"); var currVal_1 = (i0.ɵnov(_v, 1).state === \"checked\"); var currVal_2 = i0.ɵnov(_v, 1).disabled; var currVal_3 = (i0.ɵnov(_v, 1)._animationMode === \"NoopAnimations\"); _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3); }); }\nexport function View_MatOption_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵand(16777216, null, null, 1, null, View_MatOption_1)), i0.ɵdid(1, 16384, null, 0, i4.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵeld(2, 0, null, null, 1, \"span\", [[\"class\", \"mat-option-text\"]], null, null, null, null, null)), i0.ɵncd(null, 0), (_l()(), i0.ɵeld(4, 0, null, null, 1, \"div\", [[\"class\", \"mat-option-ripple mat-ripple\"], [\"mat-ripple\", \"\"]], [[2, \"mat-ripple-unbounded\", null]], null, null, null, null)), i0.ɵdid(5, 212992, null, 0, i1.MatRipple, [i0.ElementRef, i0.NgZone, i3.Platform, [2, i1.MAT_RIPPLE_GLOBAL_OPTIONS], [2, i5.ANIMATION_MODULE_TYPE]], { disabled: [0, \"disabled\"], trigger: [1, \"trigger\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.multiple; _ck(_v, 1, 0, currVal_0); var currVal_2 = (_co.disabled || _co.disableRipple); var currVal_3 = _co._getHostElement(); _ck(_v, 5, 0, currVal_2, currVal_3); }, function (_ck, _v) { var currVal_1 = i0.ɵnov(_v, 5).unbounded; _ck(_v, 4, 0, currVal_1); }); }\nexport function View_MatOption_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"mat-option\", [[\"class\", \"mat-option\"], [\"role\", \"option\"]], [[1, \"tabindex\", 0], [2, \"mat-selected\", null], [2, \"mat-option-multiple\", null], [2, \"mat-active\", null], [8, \"id\", 0], [1, \"aria-selected\", 0], [1, \"aria-disabled\", 0], [2, \"mat-option-disabled\", null]], [[null, \"click\"], [null, \"keydown\"]], function (_v, en, $event) { var ad = true; if ((\"click\" === en)) {\n        var pd_0 = (i0.ɵnov(_v, 1)._selectViaInteraction() !== false);\n        ad = (pd_0 && ad);\n    } if ((\"keydown\" === en)) {\n        var pd_1 = (i0.ɵnov(_v, 1)._handleKeydown($event) !== false);\n        ad = (pd_1 && ad);\n    } return ad; }, View_MatOption_0, RenderType_MatOption)), i0.ɵdid(1, 8568832, null, 0, i1.MatOption, [i0.ElementRef, i0.ChangeDetectorRef, [2, i1.MAT_OPTION_PARENT_COMPONENT], [2, i1.MatOptgroup]], null, null)], null, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1)._getTabIndex(); var currVal_1 = i0.ɵnov(_v, 1).selected; var currVal_2 = i0.ɵnov(_v, 1).multiple; var currVal_3 = i0.ɵnov(_v, 1).active; var currVal_4 = i0.ɵnov(_v, 1).id; var currVal_5 = i0.ɵnov(_v, 1).selected.toString(); var currVal_6 = i0.ɵnov(_v, 1).disabled.toString(); var currVal_7 = i0.ɵnov(_v, 1).disabled; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3, currVal_4, currVal_5, currVal_6, currVal_7); }); }\nvar MatOptionNgFactory = i0.ɵccf(\"mat-option\", i1.MatOption, View_MatOption_Host_0, { value: \"value\", id: \"id\", disabled: \"disabled\" }, { onSelectionChange: \"onSelectionChange\" }, [\"*\"]);\nexport { MatOptionNgFactory as MatOptionNgFactory };\nvar styles_MatOptgroup = [\".mat-optgroup-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.mat-optgroup-label[disabled]{cursor:default}[dir=rtl] .mat-optgroup-label{text-align:right}.mat-optgroup-label .mat-icon{margin-right:16px;vertical-align:middle}.mat-optgroup-label .mat-icon svg{vertical-align:top}[dir=rtl] .mat-optgroup-label .mat-icon{margin-left:16px;margin-right:0}\"];\nvar RenderType_MatOptgroup = i0.ɵcrt({ encapsulation: 2, styles: styles_MatOptgroup, data: {} });\nexport { RenderType_MatOptgroup as RenderType_MatOptgroup };\nexport function View_MatOptgroup_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"label\", [[\"class\", \"mat-optgroup-label\"]], [[8, \"id\", 0]], null, null, null, null)), (_l()(), i0.ɵted(1, null, [\"\", \"\"])), i0.ɵncd(null, 0)], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co._labelId; _ck(_v, 0, 0, currVal_0); var currVal_1 = _co.label; _ck(_v, 1, 0, currVal_1); }); }\nexport function View_MatOptgroup_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"mat-optgroup\", [[\"class\", \"mat-optgroup\"], [\"role\", \"group\"]], [[2, \"mat-optgroup-disabled\", null], [1, \"aria-disabled\", 0], [1, \"aria-labelledby\", 0]], null, null, View_MatOptgroup_0, RenderType_MatOptgroup)), i0.ɵdid(1, 49152, null, 0, i1.MatOptgroup, [], null, null)], null, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1).disabled; var currVal_1 = i0.ɵnov(_v, 1).disabled.toString(); var currVal_2 = i0.ɵnov(_v, 1)._labelId; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2); }); }\nvar MatOptgroupNgFactory = i0.ɵccf(\"mat-optgroup\", i1.MatOptgroup, View_MatOptgroup_Host_0, { disabled: \"disabled\", label: \"label\" }, {}, [\"mat-option, ng-container\"]);\nexport { MatOptgroupNgFactory as MatOptgroupNgFactory };\nvar styles_MatPseudoCheckbox = [\".mat-pseudo-checkbox{width:20px;height:20px;border:2px solid;border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0,0,.2,.1),background-color 90ms cubic-bezier(0,0,.2,.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:'';border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0,0,.2,.1)}.mat-pseudo-checkbox.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox.mat-pseudo-checkbox-indeterminate{border-color:transparent}._mat-animation-noopable.mat-pseudo-checkbox{transition:none;animation:none}._mat-animation-noopable.mat-pseudo-checkbox::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{top:7px;left:0;width:16px;opacity:1}.mat-pseudo-checkbox-checked::after{top:3px;left:1px;width:12px;height:5px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1}\"];\nvar RenderType_MatPseudoCheckbox = i0.ɵcrt({ encapsulation: 2, styles: styles_MatPseudoCheckbox, data: {} });\nexport { RenderType_MatPseudoCheckbox as RenderType_MatPseudoCheckbox };\nexport function View_MatPseudoCheckbox_0(_l) { return i0.ɵvid(2, [], null, null); }\nexport function View_MatPseudoCheckbox_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"mat-pseudo-checkbox\", [[\"class\", \"mat-pseudo-checkbox\"]], [[2, \"mat-pseudo-checkbox-indeterminate\", null], [2, \"mat-pseudo-checkbox-checked\", null], [2, \"mat-pseudo-checkbox-disabled\", null], [2, \"_mat-animation-noopable\", null]], null, null, View_MatPseudoCheckbox_0, RenderType_MatPseudoCheckbox)), i0.ɵdid(1, 49152, null, 0, i1.MatPseudoCheckbox, [[2, i5.ANIMATION_MODULE_TYPE]], null, null)], null, function (_ck, _v) { var currVal_0 = (i0.ɵnov(_v, 1).state === \"indeterminate\"); var currVal_1 = (i0.ɵnov(_v, 1).state === \"checked\"); var currVal_2 = i0.ɵnov(_v, 1).disabled; var currVal_3 = (i0.ɵnov(_v, 1)._animationMode === \"NoopAnimations\"); _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3); }); }\nvar MatPseudoCheckboxNgFactory = i0.ɵccf(\"mat-pseudo-checkbox\", i1.MatPseudoCheckbox, View_MatPseudoCheckbox_Host_0, { state: \"state\", disabled: \"disabled\" }, {}, []);\nexport { MatPseudoCheckboxNgFactory as MatPseudoCheckboxNgFactory };\n","<mat-pseudo-checkbox *ngIf=\"multiple\" class=\"mat-option-pseudo-checkbox\" [state]=\"selected ? 'checked' : ''\" [disabled]=\"disabled\"></mat-pseudo-checkbox><span class=\"mat-option-text\"><ng-content></ng-content></span><div class=\"mat-option-ripple\" mat-ripple [matRippleTrigger]=\"_getHostElement()\" [matRippleDisabled]=\"disabled || disableRipple\"></div>","var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignValue;\n","var arrayFilter = require('./_arrayFilter'),\n    stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nmodule.exports = getSymbols;\n","var isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { FocusMonitor, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { Platform, PlatformModule } from '@angular/cdk/platform';\nimport { CdkScrollable, ScrollDispatchModule } from '@angular/cdk/scrolling';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, EventEmitter, forwardRef, Inject, InjectionToken, Input, NgZone, Optional, Output, ViewChild, ViewEncapsulation, NgModule } from '@angular/core';\nimport { fromEvent, merge, Subject } from 'rxjs';\nimport { debounceTime, filter, map, startWith, take, takeUntil } from 'rxjs/operators';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { __extends } from 'tslib';\nimport { MatCommonModule } from '@angular/material/core';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Animations used by the Material drawers.\n */\nvar /** @type {?} */ matDrawerAnimations = {\n    /** Animation that slides a drawer in and out. */\n    transformDrawer: trigger('transform', [\n        // We remove the `transform` here completely, rather than setting it to zero, because:\n        // 1. Having a transform can cause elements with ripples or an animated\n        //    transform to shift around in Chrome with an RTL layout (see #10023).\n        // 2. 3d transforms causes text to appear blurry on IE and Edge.\n        state('open, open-instant', style({\n            'transform': 'none',\n            'visibility': 'visible',\n        })),\n        state('void', style({\n            // Avoids the shadow showing up when closed in SSR.\n            'box-shadow': 'none',\n            'visibility': 'hidden',\n        })),\n        transition('void => open-instant', animate('0ms')),\n        transition('void <=> open, open-instant => void', animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)'))\n    ])\n};\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Throws an exception when two MatDrawer are matching the same position.\n * @param {?} position\n * @return {?}\n */\nfunction throwMatDuplicatedDrawerError(position) {\n    throw Error(\"A drawer was already declared for 'position=\\\"\" + position + \"\\\"'\");\n}\n/**\n * Configures whether drawers should use auto sizing by default.\n */\nvar /** @type {?} */ MAT_DRAWER_DEFAULT_AUTOSIZE = new InjectionToken('MAT_DRAWER_DEFAULT_AUTOSIZE', {\n    providedIn: 'root',\n    factory: MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY,\n});\n/**\n * \\@docs-private\n * @return {?}\n */\nfunction MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY() {\n    return false;\n}\nvar MatDrawerContent = /** @class */ (function () {\n    function MatDrawerContent(_changeDetectorRef, _container) {\n        this._changeDetectorRef = _changeDetectorRef;\n        this._container = _container;\n    }\n    /**\n     * @return {?}\n     */\n    MatDrawerContent.prototype.ngAfterContentInit = /**\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        this._container._contentMarginChanges.subscribe(function () {\n            _this._changeDetectorRef.markForCheck();\n        });\n    };\n    MatDrawerContent.decorators = [\n        { type: Component, args: [{selector: 'mat-drawer-content',\n                    template: '<ng-content></ng-content>',\n                    host: {\n                        'class': 'mat-drawer-content',\n                        '[style.margin-left.px]': '_container._contentMargins.left',\n                        '[style.margin-right.px]': '_container._contentMargins.right',\n                    },\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    encapsulation: ViewEncapsulation.None,\n                },] },\n    ];\n    /** @nocollapse */\n    MatDrawerContent.ctorParameters = function () { return [\n        { type: ChangeDetectorRef, },\n        { type: MatDrawerContainer, decorators: [{ type: Inject, args: [forwardRef(function () { return MatDrawerContainer; }),] },] },\n    ]; };\n    return MatDrawerContent;\n}());\n/**\n * This component corresponds to a drawer that can be opened on the drawer container.\n */\nvar MatDrawer = /** @class */ (function () {\n    function MatDrawer(_elementRef, _focusTrapFactory, _focusMonitor, _platform, _ngZone, _doc) {\n        var _this = this;\n        this._elementRef = _elementRef;\n        this._focusTrapFactory = _focusTrapFactory;\n        this._focusMonitor = _focusMonitor;\n        this._platform = _platform;\n        this._ngZone = _ngZone;\n        this._doc = _doc;\n        this._elementFocusedBeforeDrawerWasOpened = null;\n        /**\n         * Whether the drawer is initialized. Used for disabling the initial animation.\n         */\n        this._enableAnimations = false;\n        this._position = 'start';\n        this._mode = 'over';\n        this._disableClose = false;\n        this._autoFocus = true;\n        /**\n         * Emits whenever the drawer has started animating.\n         */\n        this._animationStarted = new EventEmitter();\n        /**\n         * Current state of the sidenav animation.\n         */\n        this._animationState = 'void';\n        /**\n         * Event emitted when the drawer open state is changed.\n         */\n        this.openedChange = \n        // Note this has to be async in order to avoid some issues with two-bindings (see #8872).\n        new EventEmitter(/* isAsync */ /* isAsync */ true);\n        /**\n         * Event emitted when the drawer's position changes.\n         */\n        this.onPositionChanged = new EventEmitter();\n        /**\n         * An observable that emits when the drawer mode changes. This is used by the drawer container to\n         * to know when to when the mode changes so it can adapt the margins on the content.\n         */\n        this._modeChanged = new Subject();\n        this._opened = false;\n        this.openedChange.subscribe(function (opened) {\n            if (opened) {\n                if (_this._doc) {\n                    _this._elementFocusedBeforeDrawerWasOpened = /** @type {?} */ (_this._doc.activeElement);\n                }\n                if (_this._isFocusTrapEnabled && _this._focusTrap) {\n                    _this._trapFocus();\n                }\n            }\n            else {\n                _this._restoreFocus();\n            }\n        });\n        /**\n             * Listen to `keydown` events outside the zone so that change detection is not run every\n             * time a key is pressed. Instead we re-enter the zone only if the `ESC` key is pressed\n             * and we don't have close disabled.\n             */\n        this._ngZone.runOutsideAngular(function () {\n            fromEvent(_this._elementRef.nativeElement, 'keydown').pipe(filter(function (event) { return event.keyCode === ESCAPE && !_this.disableClose; })).subscribe(function (event) {\n                return _this._ngZone.run(function () {\n                    _this.close();\n                    event.stopPropagation();\n                });\n            });\n        });\n    }\n    Object.defineProperty(MatDrawer.prototype, \"position\", {\n        get: /**\n         * The side that the drawer is attached to.\n         * @return {?}\n         */\n        function () { return this._position; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            // Make sure we have a valid value.\n            value = value === 'end' ? 'end' : 'start';\n            if (value != this._position) {\n                this._position = value;\n                this.onPositionChanged.emit();\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatDrawer.prototype, \"mode\", {\n        get: /**\n         * Mode of the drawer; one of 'over', 'push' or 'side'.\n         * @return {?}\n         */\n        function () { return this._mode; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._mode = value;\n            this._modeChanged.next();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatDrawer.prototype, \"disableClose\", {\n        get: /**\n         * Whether the drawer can be closed with the escape key or by clicking on the backdrop.\n         * @return {?}\n         */\n        function () { return this._disableClose; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) { this._disableClose = coerceBooleanProperty(value); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatDrawer.prototype, \"autoFocus\", {\n        get: /**\n         * Whether the drawer should focus the first focusable element automatically when opened.\n         * @return {?}\n         */\n        function () { return this._autoFocus; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) { this._autoFocus = coerceBooleanProperty(value); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatDrawer.prototype, \"_openedStream\", {\n        get: /**\n         * Event emitted when the drawer has been opened.\n         * @return {?}\n         */\n        function () {\n            return this.openedChange.pipe(filter(function (o) { return o; }), map(function () { }));\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatDrawer.prototype, \"openedStart\", {\n        get: /**\n         * Event emitted when the drawer has started opening.\n         * @return {?}\n         */\n        function () {\n            return this._animationStarted.pipe(filter(function (e) { return e.fromState !== e.toState && e.toState.indexOf('open') === 0; }), map(function () { }));\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatDrawer.prototype, \"_closedStream\", {\n        get: /**\n         * Event emitted when the drawer has been closed.\n         * @return {?}\n         */\n        function () {\n            return this.openedChange.pipe(filter(function (o) { return !o; }), map(function () { }));\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatDrawer.prototype, \"closedStart\", {\n        get: /**\n         * Event emitted when the drawer has started closing.\n         * @return {?}\n         */\n        function () {\n            return this._animationStarted.pipe(filter(function (e) { return e.fromState !== e.toState && e.toState === 'void'; }), map(function () { }));\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatDrawer.prototype, \"_isFocusTrapEnabled\", {\n        get: /**\n         * @return {?}\n         */\n        function () {\n            // The focus trap is only enabled when the drawer is open in any mode other than side.\n            return this.opened && this.mode !== 'side';\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * Traps focus inside the drawer.\n     * @return {?}\n     */\n    MatDrawer.prototype._trapFocus = /**\n     * Traps focus inside the drawer.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        if (!this.autoFocus) {\n            return;\n        }\n        this._focusTrap.focusInitialElementWhenReady().then(function (hasMovedFocus) {\n            // If there were no focusable elements, focus the sidenav itself so the keyboard navigation\n            // still works. We need to check that `focus` is a function due to Universal.\n            if (!hasMovedFocus && typeof _this._elementRef.nativeElement.focus === 'function') {\n                _this._elementRef.nativeElement.focus();\n            }\n        });\n    };\n    /**\n     * If focus is currently inside the drawer, restores it to where it was before the drawer\n     * opened.\n     * @return {?}\n     */\n    MatDrawer.prototype._restoreFocus = /**\n     * If focus is currently inside the drawer, restores it to where it was before the drawer\n     * opened.\n     * @return {?}\n     */\n    function () {\n        if (!this.autoFocus) {\n            return;\n        }\n        var /** @type {?} */ activeEl = this._doc && this._doc.activeElement;\n        if (activeEl && this._elementRef.nativeElement.contains(activeEl)) {\n            if (this._elementFocusedBeforeDrawerWasOpened instanceof HTMLElement) {\n                this._focusMonitor.focusVia(this._elementFocusedBeforeDrawerWasOpened, this._openedVia);\n            }\n            else {\n                this._elementRef.nativeElement.blur();\n            }\n        }\n        this._elementFocusedBeforeDrawerWasOpened = null;\n        this._openedVia = null;\n    };\n    /**\n     * @return {?}\n     */\n    MatDrawer.prototype.ngAfterContentInit = /**\n     * @return {?}\n     */\n    function () {\n        this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n        this._focusTrap.enabled = this._isFocusTrapEnabled;\n    };\n    /**\n     * @return {?}\n     */\n    MatDrawer.prototype.ngAfterContentChecked = /**\n     * @return {?}\n     */\n    function () {\n        // Enable the animations after the lifecycle hooks have run, in order to avoid animating\n        // drawers that are open by default. When we're on the server, we shouldn't enable the\n        // animations, because we don't want the drawer to animate the first time the user sees\n        // the page.\n        if (this._platform.isBrowser) {\n            this._enableAnimations = true;\n        }\n    };\n    /**\n     * @return {?}\n     */\n    MatDrawer.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        if (this._focusTrap) {\n            this._focusTrap.destroy();\n        }\n    };\n    Object.defineProperty(MatDrawer.prototype, \"opened\", {\n        get: /**\n         * Whether the drawer is opened. We overload this because we trigger an event when it\n         * starts or end.\n         * @return {?}\n         */\n        function () { return this._opened; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) { this.toggle(coerceBooleanProperty(value)); },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * Open the drawer.\n     * @param openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n     * Used for focus management after the sidenav is closed.\n     */\n    /**\n     * Open the drawer.\n     * @param {?=} openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n     * Used for focus management after the sidenav is closed.\n     * @return {?}\n     */\n    MatDrawer.prototype.open = /**\n     * Open the drawer.\n     * @param {?=} openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n     * Used for focus management after the sidenav is closed.\n     * @return {?}\n     */\n    function (openedVia) {\n        return this.toggle(true, openedVia);\n    };\n    /** Close the drawer. */\n    /**\n     * Close the drawer.\n     * @return {?}\n     */\n    MatDrawer.prototype.close = /**\n     * Close the drawer.\n     * @return {?}\n     */\n    function () {\n        return this.toggle(false);\n    };\n    /**\n     * Toggle this drawer.\n     * @param isOpen Whether the drawer should be open.\n     * @param openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n     * Used for focus management after the sidenav is closed.\n     */\n    /**\n     * Toggle this drawer.\n     * @param {?=} isOpen Whether the drawer should be open.\n     * @param {?=} openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n     * Used for focus management after the sidenav is closed.\n     * @return {?}\n     */\n    MatDrawer.prototype.toggle = /**\n     * Toggle this drawer.\n     * @param {?=} isOpen Whether the drawer should be open.\n     * @param {?=} openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n     * Used for focus management after the sidenav is closed.\n     * @return {?}\n     */\n    function (isOpen, openedVia) {\n        var _this = this;\n        if (isOpen === void 0) { isOpen = !this.opened; }\n        if (openedVia === void 0) { openedVia = 'program'; }\n        this._opened = isOpen;\n        if (isOpen) {\n            this._animationState = this._enableAnimations ? 'open' : 'open-instant';\n            this._openedVia = openedVia;\n        }\n        else {\n            this._animationState = 'void';\n            this._restoreFocus();\n        }\n        if (this._focusTrap) {\n            this._focusTrap.enabled = this._isFocusTrapEnabled;\n        }\n        return new Promise(function (resolve) {\n            _this.openedChange.pipe(take(1)).subscribe(function (open) { return resolve(open ? 'open' : 'close'); });\n        });\n    };\n    /**\n     * @param {?} event\n     * @return {?}\n     */\n    MatDrawer.prototype._onAnimationStart = /**\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        this._animationStarted.emit(event);\n    };\n    /**\n     * @param {?} event\n     * @return {?}\n     */\n    MatDrawer.prototype._onAnimationEnd = /**\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        var fromState = event.fromState, toState = event.toState;\n        if ((toState.indexOf('open') === 0 && fromState === 'void') ||\n            (toState === 'void' && fromState.indexOf('open') === 0)) {\n            this.openedChange.emit(this._opened);\n        }\n    };\n    Object.defineProperty(MatDrawer.prototype, \"_width\", {\n        get: /**\n         * @return {?}\n         */\n        function () {\n            return this._elementRef.nativeElement ? (this._elementRef.nativeElement.offsetWidth || 0) : 0;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    MatDrawer.decorators = [\n        { type: Component, args: [{selector: 'mat-drawer',\n                    exportAs: 'matDrawer',\n                    template: '<ng-content></ng-content>',\n                    animations: [matDrawerAnimations.transformDrawer],\n                    host: {\n                        'class': 'mat-drawer',\n                        '[@transform]': '_animationState',\n                        '(@transform.start)': '_onAnimationStart($event)',\n                        '(@transform.done)': '_onAnimationEnd($event)',\n                        // must prevent the browser from aligning text based on value\n                        '[attr.align]': 'null',\n                        '[class.mat-drawer-end]': 'position === \"end\"',\n                        '[class.mat-drawer-over]': 'mode === \"over\"',\n                        '[class.mat-drawer-push]': 'mode === \"push\"',\n                        '[class.mat-drawer-side]': 'mode === \"side\"',\n                        'tabIndex': '-1',\n                    },\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    encapsulation: ViewEncapsulation.None,\n                },] },\n    ];\n    /** @nocollapse */\n    MatDrawer.ctorParameters = function () { return [\n        { type: ElementRef, },\n        { type: FocusTrapFactory, },\n        { type: FocusMonitor, },\n        { type: Platform, },\n        { type: NgZone, },\n        { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] },] },\n    ]; };\n    MatDrawer.propDecorators = {\n        \"position\": [{ type: Input },],\n        \"mode\": [{ type: Input },],\n        \"disableClose\": [{ type: Input },],\n        \"autoFocus\": [{ type: Input },],\n        \"openedChange\": [{ type: Output },],\n        \"_openedStream\": [{ type: Output, args: ['opened',] },],\n        \"openedStart\": [{ type: Output },],\n        \"_closedStream\": [{ type: Output, args: ['closed',] },],\n        \"closedStart\": [{ type: Output },],\n        \"onPositionChanged\": [{ type: Output, args: ['positionChanged',] },],\n        \"opened\": [{ type: Input },],\n    };\n    return MatDrawer;\n}());\n/**\n * `<mat-drawer-container>` component.\n *\n * This is the parent component to one or two `<mat-drawer>`s that validates the state internally\n * and coordinates the backdrop and content styling.\n */\nvar MatDrawerContainer = /** @class */ (function () {\n    function MatDrawerContainer(_dir, _element, _ngZone, _changeDetectorRef, defaultAutosize, _animationMode) {\n        if (defaultAutosize === void 0) { defaultAutosize = false; }\n        var _this = this;\n        this._dir = _dir;\n        this._element = _element;\n        this._ngZone = _ngZone;\n        this._changeDetectorRef = _changeDetectorRef;\n        this._animationMode = _animationMode;\n        /**\n         * Event emitted when the drawer backdrop is clicked.\n         */\n        this.backdropClick = new EventEmitter();\n        /**\n         * Emits when the component is destroyed.\n         */\n        this._destroyed = new Subject();\n        /**\n         * Emits on every ngDoCheck. Used for debouncing reflows.\n         */\n        this._doCheckSubject = new Subject();\n        /**\n         * Margins to be applied to the content. These are used to push / shrink the drawer content when a\n         * drawer is open. We use margin rather than transform even for push mode because transform breaks\n         * fixed position elements inside of the transformed element.\n         */\n        this._contentMargins = { left: null, right: null };\n        this._contentMarginChanges = new Subject();\n        // If a `Dir` directive exists up the tree, listen direction changes\n        // and update the left/right properties to point to the proper start/end.\n        if (_dir) {\n            _dir.change.pipe(takeUntil(this._destroyed)).subscribe(function () {\n                _this._validateDrawers();\n                _this._updateContentMargins();\n            });\n        }\n        this._autosize = defaultAutosize;\n    }\n    Object.defineProperty(MatDrawerContainer.prototype, \"start\", {\n        /** The drawer child with the `start` position. */\n        get: /**\n         * The drawer child with the `start` position.\n         * @return {?}\n         */\n        function () { return this._start; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatDrawerContainer.prototype, \"end\", {\n        /** The drawer child with the `end` position. */\n        get: /**\n         * The drawer child with the `end` position.\n         * @return {?}\n         */\n        function () { return this._end; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatDrawerContainer.prototype, \"autosize\", {\n        get: /**\n         * Whether to automatically resize the container whenever\n         * the size of any of its drawers changes.\n         *\n         * **Use at your own risk!** Enabling this option can cause layout thrashing by measuring\n         * the drawers on every change detection cycle. Can be configured globally via the\n         * `MAT_DRAWER_DEFAULT_AUTOSIZE` token.\n         * @return {?}\n         */\n        function () { return this._autosize; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) { this._autosize = coerceBooleanProperty(value); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatDrawerContainer.prototype, \"hasBackdrop\", {\n        get: /**\n         * Whether the drawer container should have a backdrop while one of the sidenavs is open.\n         * If explicitly set to `true`, the backdrop will be enabled for drawers in the `side`\n         * mode as well.\n         * @return {?}\n         */\n        function () {\n            if (this._backdropOverride == null) {\n                return !this._start || this._start.mode !== 'side' || !this._end || this._end.mode !== 'side';\n            }\n            return this._backdropOverride;\n        },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._backdropOverride = value == null ? null : coerceBooleanProperty(value);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @return {?}\n     */\n    MatDrawerContainer.prototype.ngAfterContentInit = /**\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        this._drawers.changes.pipe(startWith(null)).subscribe(function () {\n            _this._validateDrawers();\n            _this._drawers.forEach(function (drawer) {\n                _this._watchDrawerToggle(drawer);\n                _this._watchDrawerPosition(drawer);\n                _this._watchDrawerMode(drawer);\n            });\n            if (!_this._drawers.length ||\n                _this._isDrawerOpen(_this._start) ||\n                _this._isDrawerOpen(_this._end)) {\n                _this._updateContentMargins();\n            }\n            _this._changeDetectorRef.markForCheck();\n        });\n        this._doCheckSubject.pipe(debounceTime(10), // Arbitrary debounce time, less than a frame at 60fps\n        // Arbitrary debounce time, less than a frame at 60fps\n        takeUntil(this._destroyed)).subscribe(function () { return _this._updateContentMargins(); });\n    };\n    /**\n     * @return {?}\n     */\n    MatDrawerContainer.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        this._doCheckSubject.complete();\n        this._destroyed.next();\n        this._destroyed.complete();\n    };\n    /** Calls `open` of both start and end drawers */\n    /**\n     * Calls `open` of both start and end drawers\n     * @return {?}\n     */\n    MatDrawerContainer.prototype.open = /**\n     * Calls `open` of both start and end drawers\n     * @return {?}\n     */\n    function () {\n        this._drawers.forEach(function (drawer) { return drawer.open(); });\n    };\n    /** Calls `close` of both start and end drawers */\n    /**\n     * Calls `close` of both start and end drawers\n     * @return {?}\n     */\n    MatDrawerContainer.prototype.close = /**\n     * Calls `close` of both start and end drawers\n     * @return {?}\n     */\n    function () {\n        this._drawers.forEach(function (drawer) { return drawer.close(); });\n    };\n    /**\n     * @return {?}\n     */\n    MatDrawerContainer.prototype.ngDoCheck = /**\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        // If users opted into autosizing, do a check every change detection cycle.\n        if (this._autosize && this._isPushed()) {\n            // Run outside the NgZone, otherwise the debouncer will throw us into an infinite loop.\n            this._ngZone.runOutsideAngular(function () { return _this._doCheckSubject.next(); });\n        }\n    };\n    /**\n     * Subscribes to drawer events in order to set a class on the main container element when the\n     * drawer is open and the backdrop is visible. This ensures any overflow on the container element\n     * is properly hidden.\n     * @param {?} drawer\n     * @return {?}\n     */\n    MatDrawerContainer.prototype._watchDrawerToggle = /**\n     * Subscribes to drawer events in order to set a class on the main container element when the\n     * drawer is open and the backdrop is visible. This ensures any overflow on the container element\n     * is properly hidden.\n     * @param {?} drawer\n     * @return {?}\n     */\n    function (drawer) {\n        var _this = this;\n        drawer._animationStarted.pipe(takeUntil(this._drawers.changes), filter(function (event) { return event.fromState !== event.toState; }))\n            .subscribe(function (event) {\n            // Set the transition class on the container so that the animations occur. This should not\n            // be set initially because animations should only be triggered via a change in state.\n            if (event.toState !== 'open-instant' && _this._animationMode !== 'NoopAnimations') {\n                _this._element.nativeElement.classList.add('mat-drawer-transition');\n            }\n            _this._updateContentMargins();\n            _this._changeDetectorRef.markForCheck();\n        });\n        if (drawer.mode !== 'side') {\n            drawer.openedChange.pipe(takeUntil(this._drawers.changes)).subscribe(function () {\n                return _this._setContainerClass(drawer.opened);\n            });\n        }\n    };\n    /**\n     * Subscribes to drawer onPositionChanged event in order to\n     * re-validate drawers when the position changes.\n     * @param {?} drawer\n     * @return {?}\n     */\n    MatDrawerContainer.prototype._watchDrawerPosition = /**\n     * Subscribes to drawer onPositionChanged event in order to\n     * re-validate drawers when the position changes.\n     * @param {?} drawer\n     * @return {?}\n     */\n    function (drawer) {\n        var _this = this;\n        if (!drawer) {\n            return;\n        }\n        // NOTE: We need to wait for the microtask queue to be empty before validating,\n        // since both drawers may be swapping positions at the same time.\n        drawer.onPositionChanged.pipe(takeUntil(this._drawers.changes)).subscribe(function () {\n            _this._ngZone.onMicrotaskEmpty.asObservable().pipe(take(1)).subscribe(function () {\n                _this._validateDrawers();\n            });\n        });\n    };\n    /**\n     * Subscribes to changes in drawer mode so we can run change detection.\n     * @param {?} drawer\n     * @return {?}\n     */\n    MatDrawerContainer.prototype._watchDrawerMode = /**\n     * Subscribes to changes in drawer mode so we can run change detection.\n     * @param {?} drawer\n     * @return {?}\n     */\n    function (drawer) {\n        var _this = this;\n        if (drawer) {\n            drawer._modeChanged.pipe(takeUntil(merge(this._drawers.changes, this._destroyed)))\n                .subscribe(function () {\n                _this._updateContentMargins();\n                _this._changeDetectorRef.markForCheck();\n            });\n        }\n    };\n    /**\n     * Toggles the 'mat-drawer-opened' class on the main 'mat-drawer-container' element.\n     * @param {?} isAdd\n     * @return {?}\n     */\n    MatDrawerContainer.prototype._setContainerClass = /**\n     * Toggles the 'mat-drawer-opened' class on the main 'mat-drawer-container' element.\n     * @param {?} isAdd\n     * @return {?}\n     */\n    function (isAdd) {\n        if (isAdd) {\n            this._element.nativeElement.classList.add('mat-drawer-opened');\n        }\n        else {\n            this._element.nativeElement.classList.remove('mat-drawer-opened');\n        }\n    };\n    /**\n     * Validate the state of the drawer children components.\n     * @return {?}\n     */\n    MatDrawerContainer.prototype._validateDrawers = /**\n     * Validate the state of the drawer children components.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        this._start = this._end = null;\n        // Ensure that we have at most one start and one end drawer.\n        this._drawers.forEach(function (drawer) {\n            if (drawer.position == 'end') {\n                if (_this._end != null) {\n                    throwMatDuplicatedDrawerError('end');\n                }\n                _this._end = drawer;\n            }\n            else {\n                if (_this._start != null) {\n                    throwMatDuplicatedDrawerError('start');\n                }\n                _this._start = drawer;\n            }\n        });\n        this._right = this._left = null;\n        // Detect if we're LTR or RTL.\n        if (this._dir && this._dir.value === 'rtl') {\n            this._left = this._end;\n            this._right = this._start;\n        }\n        else {\n            this._left = this._start;\n            this._right = this._end;\n        }\n    };\n    /**\n     * Whether the container is being pushed to the side by one of the drawers.\n     * @return {?}\n     */\n    MatDrawerContainer.prototype._isPushed = /**\n     * Whether the container is being pushed to the side by one of the drawers.\n     * @return {?}\n     */\n    function () {\n        return (this._isDrawerOpen(this._start) && this._start.mode != 'over') ||\n            (this._isDrawerOpen(this._end) && this._end.mode != 'over');\n    };\n    /**\n     * @return {?}\n     */\n    MatDrawerContainer.prototype._onBackdropClicked = /**\n     * @return {?}\n     */\n    function () {\n        this.backdropClick.emit();\n        this._closeModalDrawer();\n    };\n    /**\n     * @return {?}\n     */\n    MatDrawerContainer.prototype._closeModalDrawer = /**\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        // Close all open drawers where closing is not disabled and the mode is not `side`.\n        [this._start, this._end]\n            .filter(function (drawer) { return drawer && !drawer.disableClose && _this._canHaveBackdrop(drawer); })\n            .forEach(function (drawer) { return ((drawer)).close(); });\n    };\n    /**\n     * @return {?}\n     */\n    MatDrawerContainer.prototype._isShowingBackdrop = /**\n     * @return {?}\n     */\n    function () {\n        return (this._isDrawerOpen(this._start) && this._canHaveBackdrop(this._start)) ||\n            (this._isDrawerOpen(this._end) && this._canHaveBackdrop(this._end));\n    };\n    /**\n     * @param {?} drawer\n     * @return {?}\n     */\n    MatDrawerContainer.prototype._canHaveBackdrop = /**\n     * @param {?} drawer\n     * @return {?}\n     */\n    function (drawer) {\n        return drawer.mode !== 'side' || !!this._backdropOverride;\n    };\n    /**\n     * @param {?} drawer\n     * @return {?}\n     */\n    MatDrawerContainer.prototype._isDrawerOpen = /**\n     * @param {?} drawer\n     * @return {?}\n     */\n    function (drawer) {\n        return drawer != null && drawer.opened;\n    };\n    /**\n     * Recalculates and updates the inline styles for the content. Note that this should be used\n     * sparingly, because it causes a reflow.\n     * @return {?}\n     */\n    MatDrawerContainer.prototype._updateContentMargins = /**\n     * Recalculates and updates the inline styles for the content. Note that this should be used\n     * sparingly, because it causes a reflow.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        // 1. For drawers in `over` mode, they don't affect the content.\n        // 2. For drawers in `side` mode they should shrink the content. We do this by adding to the\n        //    left margin (for left drawer) or right margin (for right the drawer).\n        // 3. For drawers in `push` mode the should shift the content without resizing it. We do this by\n        //    adding to the left or right margin and simultaneously subtracting the same amount of\n        //    margin from the other side.\n        var /** @type {?} */ left = 0;\n        var /** @type {?} */ right = 0;\n        if (this._left && this._left.opened) {\n            if (this._left.mode == 'side') {\n                left += this._left._width;\n            }\n            else if (this._left.mode == 'push') {\n                var /** @type {?} */ width = this._left._width;\n                left += width;\n                right -= width;\n            }\n        }\n        if (this._right && this._right.opened) {\n            if (this._right.mode == 'side') {\n                right += this._right._width;\n            }\n            else if (this._right.mode == 'push') {\n                var /** @type {?} */ width = this._right._width;\n                right += width;\n                left -= width;\n            }\n        }\n        // If either `right` or `left` is zero, don't set a style to the element. This\n        // allows users to specify a custom size via CSS class in SSR scenarios where the\n        // measured widths will always be zero. Note that we reset to `null` here, rather\n        // than below, in order to ensure that the types in the `if` below are consistent.\n        left = left || /** @type {?} */ ((null));\n        right = right || /** @type {?} */ ((null));\n        if (left !== this._contentMargins.left || right !== this._contentMargins.right) {\n            this._contentMargins = { left: left, right: right };\n            // Pull back into the NgZone since in some cases we could be outside. We need to be careful\n            // to do it only when something changed, otherwise we can end up hitting the zone too often.\n            this._ngZone.run(function () { return _this._contentMarginChanges.next(_this._contentMargins); });\n        }\n    };\n    MatDrawerContainer.decorators = [\n        { type: Component, args: [{selector: 'mat-drawer-container',\n                    exportAs: 'matDrawerContainer',\n                    template: \"<div class=\\\"mat-drawer-backdrop\\\" (click)=\\\"_onBackdropClicked()\\\" *ngIf=\\\"hasBackdrop\\\" [class.mat-drawer-shown]=\\\"_isShowingBackdrop()\\\"></div><ng-content select=\\\"mat-drawer\\\"></ng-content><ng-content select=\\\"mat-drawer-content\\\"></ng-content><mat-drawer-content *ngIf=\\\"!_content\\\" cdkScrollable><ng-content></ng-content></mat-drawer-content>\",\n                    styles: [\".mat-drawer-container{position:relative;z-index:1;box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-opened{overflow:hidden}.mat-drawer-container.mat-drawer-container-explicit-backdrop .mat-drawer-side{z-index:3}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:background-color,visibility}@media screen and (-ms-high-contrast:active){.mat-drawer-backdrop{opacity:.5}}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;display:block;position:absolute;top:0;bottom:0;z-index:3;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%,0,0)}@media screen and (-ms-high-contrast:active){.mat-drawer,[dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}}@media screen and (-ms-high-contrast:active){.mat-drawer.mat-drawer-end,[dir=rtl] .mat-drawer{border-left:solid 1px currentColor;border-right:none}}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer{transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer.mat-drawer-end{left:0;right:auto;transform:translate3d(-100%,0,0)}.mat-drawer:not(.mat-drawer-side){box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.mat-sidenav-fixed{position:fixed}\"],\n                    host: {\n                        'class': 'mat-drawer-container',\n                        '[class.mat-drawer-container-explicit-backdrop]': '_backdropOverride',\n                    },\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    encapsulation: ViewEncapsulation.None,\n                },] },\n    ];\n    /** @nocollapse */\n    MatDrawerContainer.ctorParameters = function () { return [\n        { type: Directionality, decorators: [{ type: Optional },] },\n        { type: ElementRef, },\n        { type: NgZone, },\n        { type: ChangeDetectorRef, },\n        { type: undefined, decorators: [{ type: Inject, args: [MAT_DRAWER_DEFAULT_AUTOSIZE,] },] },\n        { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] },] },\n    ]; };\n    MatDrawerContainer.propDecorators = {\n        \"_drawers\": [{ type: ContentChildren, args: [MatDrawer,] },],\n        \"_content\": [{ type: ContentChild, args: [MatDrawerContent,] },],\n        \"autosize\": [{ type: Input },],\n        \"hasBackdrop\": [{ type: Input },],\n        \"backdropClick\": [{ type: Output },],\n        \"scrollable\": [{ type: ViewChild, args: [CdkScrollable,] },],\n    };\n    return MatDrawerContainer;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nvar MatSidenavContent = /** @class */ (function (_super) {\n    __extends(MatSidenavContent, _super);\n    function MatSidenavContent(changeDetectorRef, container) {\n        return _super.call(this, changeDetectorRef, container) || this;\n    }\n    MatSidenavContent.decorators = [\n        { type: Component, args: [{selector: 'mat-sidenav-content',\n                    template: '<ng-content></ng-content>',\n                    host: {\n                        'class': 'mat-drawer-content mat-sidenav-content',\n                        '[style.margin-left.px]': '_container._contentMargins.left',\n                        '[style.margin-right.px]': '_container._contentMargins.right',\n                    },\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    encapsulation: ViewEncapsulation.None,\n                },] },\n    ];\n    /** @nocollapse */\n    MatSidenavContent.ctorParameters = function () { return [\n        { type: ChangeDetectorRef, },\n        { type: MatSidenavContainer, decorators: [{ type: Inject, args: [forwardRef(function () { return MatSidenavContainer; }),] },] },\n    ]; };\n    return MatSidenavContent;\n}(MatDrawerContent));\nvar MatSidenav = /** @class */ (function (_super) {\n    __extends(MatSidenav, _super);\n    function MatSidenav() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this._fixedInViewport = false;\n        _this._fixedTopGap = 0;\n        _this._fixedBottomGap = 0;\n        return _this;\n    }\n    Object.defineProperty(MatSidenav.prototype, \"fixedInViewport\", {\n        get: /**\n         * Whether the sidenav is fixed in the viewport.\n         * @return {?}\n         */\n        function () { return this._fixedInViewport; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) { this._fixedInViewport = coerceBooleanProperty(value); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatSidenav.prototype, \"fixedTopGap\", {\n        get: /**\n         * The gap between the top of the sidenav and the top of the viewport when the sidenav is in fixed\n         * mode.\n         * @return {?}\n         */\n        function () { return this._fixedTopGap; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) { this._fixedTopGap = coerceNumberProperty(value); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatSidenav.prototype, \"fixedBottomGap\", {\n        get: /**\n         * The gap between the bottom of the sidenav and the bottom of the viewport when the sidenav is in\n         * fixed mode.\n         * @return {?}\n         */\n        function () { return this._fixedBottomGap; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) { this._fixedBottomGap = coerceNumberProperty(value); },\n        enumerable: true,\n        configurable: true\n    });\n    MatSidenav.decorators = [\n        { type: Component, args: [{selector: 'mat-sidenav',\n                    exportAs: 'matSidenav',\n                    template: '<ng-content></ng-content>',\n                    animations: [matDrawerAnimations.transformDrawer],\n                    host: {\n                        'class': 'mat-drawer mat-sidenav',\n                        'tabIndex': '-1',\n                        '[@transform]': '_animationState',\n                        '(@transform.start)': '_onAnimationStart($event)',\n                        '(@transform.done)': '_onAnimationEnd($event)',\n                        // must prevent the browser from aligning text based on value\n                        '[attr.align]': 'null',\n                        '[class.mat-drawer-end]': 'position === \"end\"',\n                        '[class.mat-drawer-over]': 'mode === \"over\"',\n                        '[class.mat-drawer-push]': 'mode === \"push\"',\n                        '[class.mat-drawer-side]': 'mode === \"side\"',\n                        '[class.mat-sidenav-fixed]': 'fixedInViewport',\n                        '[style.top.px]': 'fixedInViewport ? fixedTopGap : null',\n                        '[style.bottom.px]': 'fixedInViewport ? fixedBottomGap : null',\n                    },\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    encapsulation: ViewEncapsulation.None,\n                },] },\n    ];\n    /** @nocollapse */\n    MatSidenav.propDecorators = {\n        \"fixedInViewport\": [{ type: Input },],\n        \"fixedTopGap\": [{ type: Input },],\n        \"fixedBottomGap\": [{ type: Input },],\n    };\n    return MatSidenav;\n}(MatDrawer));\nvar MatSidenavContainer = /** @class */ (function (_super) {\n    __extends(MatSidenavContainer, _super);\n    function MatSidenavContainer() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    MatSidenavContainer.decorators = [\n        { type: Component, args: [{selector: 'mat-sidenav-container',\n                    exportAs: 'matSidenavContainer',\n                    template: \"<div class=\\\"mat-drawer-backdrop\\\" (click)=\\\"_onBackdropClicked()\\\" *ngIf=\\\"hasBackdrop\\\" [class.mat-drawer-shown]=\\\"_isShowingBackdrop()\\\"></div><ng-content select=\\\"mat-sidenav\\\"></ng-content><ng-content select=\\\"mat-sidenav-content\\\"></ng-content><mat-sidenav-content *ngIf=\\\"!_content\\\" cdkScrollable><ng-content></ng-content></mat-sidenav-content>\",\n                    styles: [\".mat-drawer-container{position:relative;z-index:1;box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-opened{overflow:hidden}.mat-drawer-container.mat-drawer-container-explicit-backdrop .mat-drawer-side{z-index:3}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:background-color,visibility}@media screen and (-ms-high-contrast:active){.mat-drawer-backdrop{opacity:.5}}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;display:block;position:absolute;top:0;bottom:0;z-index:3;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%,0,0)}@media screen and (-ms-high-contrast:active){.mat-drawer,[dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}}@media screen and (-ms-high-contrast:active){.mat-drawer.mat-drawer-end,[dir=rtl] .mat-drawer{border-left:solid 1px currentColor;border-right:none}}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer{transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer.mat-drawer-end{left:0;right:auto;transform:translate3d(-100%,0,0)}.mat-drawer:not(.mat-drawer-side){box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.mat-sidenav-fixed{position:fixed}\"],\n                    host: {\n                        'class': 'mat-drawer-container mat-sidenav-container',\n                        '[class.mat-drawer-container-explicit-backdrop]': '_backdropOverride',\n                    },\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    encapsulation: ViewEncapsulation.None,\n                },] },\n    ];\n    /** @nocollapse */\n    MatSidenavContainer.propDecorators = {\n        \"_drawers\": [{ type: ContentChildren, args: [MatSidenav,] },],\n        \"_content\": [{ type: ContentChild, args: [MatSidenavContent,] },],\n    };\n    return MatSidenavContainer;\n}(MatDrawerContainer));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nvar MatSidenavModule = /** @class */ (function () {\n    function MatSidenavModule() {\n    }\n    MatSidenavModule.decorators = [\n        { type: NgModule, args: [{\n                    imports: [\n                        CommonModule,\n                        MatCommonModule,\n                        ScrollDispatchModule,\n                        PlatformModule,\n                    ],\n                    exports: [\n                        MatCommonModule,\n                        MatDrawer,\n                        MatDrawerContainer,\n                        MatDrawerContent,\n                        MatSidenav,\n                        MatSidenavContainer,\n                        MatSidenavContent,\n                    ],\n                    declarations: [\n                        MatDrawer,\n                        MatDrawerContainer,\n                        MatDrawerContent,\n                        MatSidenav,\n                        MatSidenavContainer,\n                        MatSidenavContent,\n                    ],\n                },] },\n    ];\n    return MatSidenavModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\nexport { MatSidenavModule, throwMatDuplicatedDrawerError, MAT_DRAWER_DEFAULT_AUTOSIZE, MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY, MatDrawerContent, MatDrawer, MatDrawerContainer, MatSidenavContent, MatSidenav, MatSidenavContainer, matDrawerAnimations };\n//# sourceMappingURL=sidenav.es5.js.map\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var isStrictComparable = require('./_isStrictComparable'),\n    keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\nmodule.exports = getMatchData;\n","var Stack = require('./_Stack'),\n    arrayEach = require('./_arrayEach'),\n    assignValue = require('./_assignValue'),\n    baseAssign = require('./_baseAssign'),\n    baseAssignIn = require('./_baseAssignIn'),\n    cloneBuffer = require('./_cloneBuffer'),\n    copyArray = require('./_copyArray'),\n    copySymbols = require('./_copySymbols'),\n    copySymbolsIn = require('./_copySymbolsIn'),\n    getAllKeys = require('./_getAllKeys'),\n    getAllKeysIn = require('./_getAllKeysIn'),\n    getTag = require('./_getTag'),\n    initCloneArray = require('./_initCloneArray'),\n    initCloneByTag = require('./_initCloneByTag'),\n    initCloneObject = require('./_initCloneObject'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isMap = require('./isMap'),\n    isObject = require('./isObject'),\n    isSet = require('./isSet'),\n    keys = require('./keys');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n\n    return result;\n  }\n\n  if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n\n    return result;\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nmodule.exports = baseClone;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { __extends } from 'tslib';\nimport { Directive, EventEmitter, Input, isDevMode, Output, Injectable, SkipSelf, Optional, NgModule, ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewEncapsulation, defineInjectable } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { mixinDisabled, mixinInitialized, AnimationCurves, AnimationDurations } from '@angular/material/core';\nimport { Subject, merge } from 'rxjs';\nimport { animate, state, style, transition, trigger, keyframes, query, animateChild } from '@angular/animations';\nimport { CdkColumnDef } from '@angular/cdk/table';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * \\@docs-private\n * @param {?} id\n * @return {?}\n */\nfunction getSortDuplicateSortableIdError(id) {\n    return Error(\"Cannot have two MatSortables with the same id (\" + id + \").\");\n}\n/**\n * \\@docs-private\n * @return {?}\n */\nfunction getSortHeaderNotContainedWithinSortError() {\n    return Error(\"MatSortHeader must be placed within a parent element with the MatSort directive.\");\n}\n/**\n * \\@docs-private\n * @return {?}\n */\nfunction getSortHeaderMissingIdError() {\n    return Error(\"MatSortHeader must be provided with a unique id.\");\n}\n/**\n * \\@docs-private\n * @param {?} direction\n * @return {?}\n */\nfunction getSortInvalidDirectionError(direction) {\n    return Error(direction + \" is not a valid sort direction ('asc' or 'desc').\");\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * \\@docs-private\n */\nvar  /**\n * \\@docs-private\n */\nMatSortBase = /** @class */ (function () {\n    function MatSortBase() {\n    }\n    return MatSortBase;\n}());\nvar /** @type {?} */ _MatSortMixinBase = mixinInitialized(mixinDisabled(MatSortBase));\n/**\n * Container for MatSortables to manage the sort state and provide default sort parameters.\n */\nvar MatSort = /** @class */ (function (_super) {\n    __extends(MatSort, _super);\n    function MatSort() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        /**\n         * Collection of all registered sortables that this directive manages.\n         */\n        _this.sortables = new Map();\n        /**\n         * Used to notify any child components listening to state changes.\n         */\n        _this._stateChanges = new Subject();\n        /**\n         * The direction to set when an MatSortable is initially sorted.\n         * May be overriden by the MatSortable's sort start.\n         */\n        _this.start = 'asc';\n        _this._direction = '';\n        /**\n         * Event emitted when the user changes either the active sort or sort direction.\n         */\n        _this.sortChange = new EventEmitter();\n        return _this;\n    }\n    Object.defineProperty(MatSort.prototype, \"direction\", {\n        get: /**\n         * The sort direction of the currently active MatSortable.\n         * @return {?}\n         */\n        function () { return this._direction; },\n        set: /**\n         * @param {?} direction\n         * @return {?}\n         */\n        function (direction) {\n            if (isDevMode() && direction && direction !== 'asc' && direction !== 'desc') {\n                throw getSortInvalidDirectionError(direction);\n            }\n            this._direction = direction;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatSort.prototype, \"disableClear\", {\n        get: /**\n         * Whether to disable the user from clearing the sort by finishing the sort direction cycle.\n         * May be overriden by the MatSortable's disable clear input.\n         * @return {?}\n         */\n        function () { return this._disableClear; },\n        set: /**\n         * @param {?} v\n         * @return {?}\n         */\n        function (v) { this._disableClear = coerceBooleanProperty(v); },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * Register function to be used by the contained MatSortables. Adds the MatSortable to the\n     * collection of MatSortables.\n     */\n    /**\n     * Register function to be used by the contained MatSortables. Adds the MatSortable to the\n     * collection of MatSortables.\n     * @param {?} sortable\n     * @return {?}\n     */\n    MatSort.prototype.register = /**\n     * Register function to be used by the contained MatSortables. Adds the MatSortable to the\n     * collection of MatSortables.\n     * @param {?} sortable\n     * @return {?}\n     */\n    function (sortable) {\n        if (!sortable.id) {\n            throw getSortHeaderMissingIdError();\n        }\n        if (this.sortables.has(sortable.id)) {\n            throw getSortDuplicateSortableIdError(sortable.id);\n        }\n        this.sortables.set(sortable.id, sortable);\n    };\n    /**\n     * Unregister function to be used by the contained MatSortables. Removes the MatSortable from the\n     * collection of contained MatSortables.\n     */\n    /**\n     * Unregister function to be used by the contained MatSortables. Removes the MatSortable from the\n     * collection of contained MatSortables.\n     * @param {?} sortable\n     * @return {?}\n     */\n    MatSort.prototype.deregister = /**\n     * Unregister function to be used by the contained MatSortables. Removes the MatSortable from the\n     * collection of contained MatSortables.\n     * @param {?} sortable\n     * @return {?}\n     */\n    function (sortable) {\n        this.sortables.delete(sortable.id);\n    };\n    /** Sets the active sort id and determines the new sort direction. */\n    /**\n     * Sets the active sort id and determines the new sort direction.\n     * @param {?} sortable\n     * @return {?}\n     */\n    MatSort.prototype.sort = /**\n     * Sets the active sort id and determines the new sort direction.\n     * @param {?} sortable\n     * @return {?}\n     */\n    function (sortable) {\n        if (this.active != sortable.id) {\n            this.active = sortable.id;\n            this.direction = sortable.start ? sortable.start : this.start;\n        }\n        else {\n            this.direction = this.getNextSortDirection(sortable);\n        }\n        this.sortChange.emit({ active: this.active, direction: this.direction });\n    };\n    /** Returns the next sort direction of the active sortable, checking for potential overrides. */\n    /**\n     * Returns the next sort direction of the active sortable, checking for potential overrides.\n     * @param {?} sortable\n     * @return {?}\n     */\n    MatSort.prototype.getNextSortDirection = /**\n     * Returns the next sort direction of the active sortable, checking for potential overrides.\n     * @param {?} sortable\n     * @return {?}\n     */\n    function (sortable) {\n        if (!sortable) {\n            return '';\n        }\n        // Get the sort direction cycle with the potential sortable overrides.\n        var /** @type {?} */ disableClear = sortable.disableClear != null ? sortable.disableClear : this.disableClear;\n        var /** @type {?} */ sortDirectionCycle = getSortDirectionCycle(sortable.start || this.start, disableClear);\n        // Get and return the next direction in the cycle\n        var /** @type {?} */ nextDirectionIndex = sortDirectionCycle.indexOf(this.direction) + 1;\n        if (nextDirectionIndex >= sortDirectionCycle.length) {\n            nextDirectionIndex = 0;\n        }\n        return sortDirectionCycle[nextDirectionIndex];\n    };\n    /**\n     * @return {?}\n     */\n    MatSort.prototype.ngOnInit = /**\n     * @return {?}\n     */\n    function () {\n        this._markInitialized();\n    };\n    /**\n     * @return {?}\n     */\n    MatSort.prototype.ngOnChanges = /**\n     * @return {?}\n     */\n    function () {\n        this._stateChanges.next();\n    };\n    /**\n     * @return {?}\n     */\n    MatSort.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        this._stateChanges.complete();\n    };\n    MatSort.decorators = [\n        { type: Directive, args: [{\n                    selector: '[matSort]',\n                    exportAs: 'matSort',\n                    inputs: ['disabled: matSortDisabled']\n                },] },\n    ];\n    /** @nocollapse */\n    MatSort.propDecorators = {\n        \"active\": [{ type: Input, args: ['matSortActive',] },],\n        \"start\": [{ type: Input, args: ['matSortStart',] },],\n        \"direction\": [{ type: Input, args: ['matSortDirection',] },],\n        \"disableClear\": [{ type: Input, args: ['matSortDisableClear',] },],\n        \"sortChange\": [{ type: Output, args: ['matSortChange',] },],\n    };\n    return MatSort;\n}(_MatSortMixinBase));\n/**\n * Returns the sort direction cycle to use given the provided parameters of order and clear.\n * @param {?} start\n * @param {?} disableClear\n * @return {?}\n */\nfunction getSortDirectionCycle(start, disableClear) {\n    var /** @type {?} */ sortOrder = ['asc', 'desc'];\n    if (start == 'desc') {\n        sortOrder.reverse();\n    }\n    if (!disableClear) {\n        sortOrder.push('');\n    }\n    return sortOrder;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nvar /** @type {?} */ SORT_ANIMATION_TRANSITION = AnimationDurations.ENTERING + ' ' +\n    AnimationCurves.STANDARD_CURVE;\n/**\n * Animations used by MatSort.\n */\nvar /** @type {?} */ matSortAnimations = {\n    /** Animation that moves the sort indicator. */\n    indicator: trigger('indicator', [\n        state('active-asc, asc', style({ transform: 'translateY(0px)' })),\n        // 10px is the height of the sort indicator, minus the width of the pointers\n        state('active-desc, desc', style({ transform: 'translateY(10px)' })),\n        transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION))\n    ]),\n    /** Animation that rotates the left pointer of the indicator based on the sorting direction. */\n    leftPointer: trigger('leftPointer', [\n        state('active-asc, asc', style({ transform: 'rotate(-45deg)' })),\n        state('active-desc, desc', style({ transform: 'rotate(45deg)' })),\n        transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION))\n    ]),\n    /** Animation that rotates the right pointer of the indicator based on the sorting direction. */\n    rightPointer: trigger('rightPointer', [\n        state('active-asc, asc', style({ transform: 'rotate(45deg)' })),\n        state('active-desc, desc', style({ transform: 'rotate(-45deg)' })),\n        transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION))\n    ]),\n    /** Animation that controls the arrow opacity. */\n    arrowOpacity: trigger('arrowOpacity', [\n        state('desc-to-active, asc-to-active, active', style({ opacity: 1 })),\n        state('desc-to-hint, asc-to-hint, hint', style({ opacity: .54 })),\n        state('hint-to-desc, active-to-desc, desc, hint-to-asc, active-to-asc, asc, void', style({ opacity: 0 })),\n        // Transition between all states except for immediate transitions\n        transition('* => asc, * => desc, * => active, * => hint, * => void', animate('0ms')),\n        transition('* <=> *', animate(SORT_ANIMATION_TRANSITION)),\n    ]),\n    /**\n       * Animation for the translation of the arrow as a whole. States are separated into two\n       * groups: ones with animations and others that are immediate. Immediate states are asc, desc,\n       * peek, and active. The other states define a specific animation (source-to-destination)\n       * and are determined as a function of their prev user-perceived state and what the next state\n       * should be.\n       */\n    arrowPosition: trigger('arrowPosition', [\n        // Hidden Above => Hint Center\n        transition('* => desc-to-hint, * => desc-to-active', animate(SORT_ANIMATION_TRANSITION, keyframes([\n            style({ transform: 'translateY(-25%)' }),\n            style({ transform: 'translateY(0)' })\n        ]))),\n        // Hint Center => Hidden Below\n        transition('* => hint-to-desc, * => active-to-desc', animate(SORT_ANIMATION_TRANSITION, keyframes([\n            style({ transform: 'translateY(0)' }),\n            style({ transform: 'translateY(25%)' })\n        ]))),\n        // Hidden Below => Hint Center\n        transition('* => asc-to-hint, * => asc-to-active', animate(SORT_ANIMATION_TRANSITION, keyframes([\n            style({ transform: 'translateY(25%)' }),\n            style({ transform: 'translateY(0)' })\n        ]))),\n        // Hint Center => Hidden Above\n        transition('* => hint-to-asc, * => active-to-asc', animate(SORT_ANIMATION_TRANSITION, keyframes([\n            style({ transform: 'translateY(0)' }),\n            style({ transform: 'translateY(-25%)' })\n        ]))),\n        state('desc-to-hint, asc-to-hint, hint, desc-to-active, asc-to-active, active', style({ transform: 'translateY(0)' })),\n        state('hint-to-desc, active-to-desc, desc', style({ transform: 'translateY(-25%)' })),\n        state('hint-to-asc, active-to-asc, asc', style({ transform: 'translateY(25%)' })),\n    ]),\n    /** Necessary trigger that calls animate on children animations. */\n    allowChildren: trigger('allowChildren', [\n        transition('* <=> *', [\n            query('@*', animateChild(), { optional: true })\n        ])\n    ]),\n};\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * To modify the labels and text displayed, create a new instance of MatSortHeaderIntl and\n * include it in a custom provider.\n */\nvar MatSortHeaderIntl = /** @class */ (function () {\n    function MatSortHeaderIntl() {\n        /**\n         * Stream that emits whenever the labels here are changed. Use this to notify\n         * components if the labels have changed after initialization.\n         */\n        this.changes = new Subject();\n        /**\n         * ARIA label for the sorting button.\n         */\n        this.sortButtonLabel = function (id) {\n            return \"Change sorting for \" + id;\n        };\n    }\n    MatSortHeaderIntl.decorators = [\n        { type: Injectable, args: [{ providedIn: 'root' },] },\n    ];\n    /** @nocollapse */ MatSortHeaderIntl.ngInjectableDef = defineInjectable({ factory: function MatSortHeaderIntl_Factory() { return new MatSortHeaderIntl(); }, token: MatSortHeaderIntl, providedIn: \"root\" });\n    return MatSortHeaderIntl;\n}());\n/**\n * \\@docs-private\n * @param {?} parentIntl\n * @return {?}\n */\nfunction MAT_SORT_HEADER_INTL_PROVIDER_FACTORY(parentIntl) {\n    return parentIntl || new MatSortHeaderIntl();\n}\n/**\n * \\@docs-private\n */\nvar /** @type {?} */ MAT_SORT_HEADER_INTL_PROVIDER = {\n    // If there is already an MatSortHeaderIntl available, use that. Otherwise, provide a new one.\n    provide: MatSortHeaderIntl,\n    deps: [[new Optional(), new SkipSelf(), MatSortHeaderIntl]],\n    useFactory: MAT_SORT_HEADER_INTL_PROVIDER_FACTORY\n};\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * \\@docs-private\n */\nvar  /**\n * \\@docs-private\n */\nMatSortHeaderBase = /** @class */ (function () {\n    function MatSortHeaderBase() {\n    }\n    return MatSortHeaderBase;\n}());\nvar /** @type {?} */ _MatSortHeaderMixinBase = mixinDisabled(MatSortHeaderBase);\n/**\n * Applies sorting behavior (click to change sort) and styles to an element, including an\n * arrow to display the current sort direction.\n *\n * Must be provided with an id and contained within a parent MatSort directive.\n *\n * If used on header cells in a CdkTable, it will automatically default its id from its containing\n * column definition.\n */\nvar MatSortHeader = /** @class */ (function (_super) {\n    __extends(MatSortHeader, _super);\n    function MatSortHeader(_intl, changeDetectorRef, _sort, _cdkColumnDef) {\n        var _this = _super.call(this) || this;\n        _this._intl = _intl;\n        _this._sort = _sort;\n        _this._cdkColumnDef = _cdkColumnDef;\n        /**\n         * Flag set to true when the indicator should be displayed while the sort is not active. Used to\n         * provide an affordance that the header is sortable by showing on focus and hover.\n         */\n        _this._showIndicatorHint = false;\n        /**\n         * The direction the arrow should be facing according to the current state.\n         */\n        _this._arrowDirection = '';\n        /**\n         * Whether the view state animation should show the transition between the `from` and `to` states.\n         */\n        _this._disableViewStateAnimation = false;\n        /**\n         * Sets the position of the arrow that displays when sorted.\n         */\n        _this.arrowPosition = 'after';\n        if (!_sort) {\n            throw getSortHeaderNotContainedWithinSortError();\n        }\n        _this._rerenderSubscription = merge(_sort.sortChange, _sort._stateChanges, _intl.changes)\n            .subscribe(function () {\n            if (_this._isSorted()) {\n                _this._updateArrowDirection();\n            }\n            // If this header was recently active and now no longer sorted, animate away the arrow.\n            if (!_this._isSorted() && _this._viewState && _this._viewState.toState === 'active') {\n                _this._disableViewStateAnimation = false;\n                _this._setAnimationTransitionState({ fromState: 'active', toState: _this._arrowDirection });\n            }\n            changeDetectorRef.markForCheck();\n        });\n        return _this;\n    }\n    Object.defineProperty(MatSortHeader.prototype, \"disableClear\", {\n        get: /**\n         * Overrides the disable clear value of the containing MatSort for this MatSortable.\n         * @return {?}\n         */\n        function () { return this._disableClear; },\n        set: /**\n         * @param {?} v\n         * @return {?}\n         */\n        function (v) { this._disableClear = coerceBooleanProperty(v); },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @return {?}\n     */\n    MatSortHeader.prototype.ngOnInit = /**\n     * @return {?}\n     */\n    function () {\n        if (!this.id && this._cdkColumnDef) {\n            this.id = this._cdkColumnDef.name;\n        }\n        // Initialize the direction of the arrow and set the view state to be immediately that state.\n        this._updateArrowDirection();\n        this._setAnimationTransitionState({ toState: this._isSorted() ? 'active' : this._arrowDirection });\n        this._sort.register(this);\n    };\n    /**\n     * @return {?}\n     */\n    MatSortHeader.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        this._sort.deregister(this);\n        this._rerenderSubscription.unsubscribe();\n    };\n    /**\n     * Sets the \"hint\" state such that the arrow will be semi-transparently displayed as a hint to the\n     * user showing what the active sort will become. If set to false, the arrow will fade away.\n     */\n    /**\n     * Sets the \"hint\" state such that the arrow will be semi-transparently displayed as a hint to the\n     * user showing what the active sort will become. If set to false, the arrow will fade away.\n     * @param {?} visible\n     * @return {?}\n     */\n    MatSortHeader.prototype._setIndicatorHintVisible = /**\n     * Sets the \"hint\" state such that the arrow will be semi-transparently displayed as a hint to the\n     * user showing what the active sort will become. If set to false, the arrow will fade away.\n     * @param {?} visible\n     * @return {?}\n     */\n    function (visible) {\n        // No-op if the sort header is disabled - should not make the hint visible.\n        if (this._isDisabled() && visible) {\n            return;\n        }\n        this._showIndicatorHint = visible;\n        if (!this._isSorted()) {\n            this._updateArrowDirection();\n            if (this._showIndicatorHint) {\n                this._setAnimationTransitionState({ fromState: this._arrowDirection, toState: 'hint' });\n            }\n            else {\n                this._setAnimationTransitionState({ fromState: 'hint', toState: this._arrowDirection });\n            }\n        }\n    };\n    /**\n     * Sets the animation transition view state for the arrow's position and opacity. If the\n     * `disableViewStateAnimation` flag is set to true, the `fromState` will be ignored so that\n     * no animation appears.\n     */\n    /**\n     * Sets the animation transition view state for the arrow's position and opacity. If the\n     * `disableViewStateAnimation` flag is set to true, the `fromState` will be ignored so that\n     * no animation appears.\n     * @param {?} viewState\n     * @return {?}\n     */\n    MatSortHeader.prototype._setAnimationTransitionState = /**\n     * Sets the animation transition view state for the arrow's position and opacity. If the\n     * `disableViewStateAnimation` flag is set to true, the `fromState` will be ignored so that\n     * no animation appears.\n     * @param {?} viewState\n     * @return {?}\n     */\n    function (viewState) {\n        this._viewState = viewState;\n        // If the animation for arrow position state (opacity/translation) should be disabled,\n        // remove the fromState so that it jumps right to the toState.\n        if (this._disableViewStateAnimation) {\n            this._viewState = { toState: viewState.toState };\n        }\n    };\n    /** Triggers the sort on this sort header and removes the indicator hint. */\n    /**\n     * Triggers the sort on this sort header and removes the indicator hint.\n     * @return {?}\n     */\n    MatSortHeader.prototype._handleClick = /**\n     * Triggers the sort on this sort header and removes the indicator hint.\n     * @return {?}\n     */\n    function () {\n        if (this._isDisabled()) {\n            return;\n        }\n        this._sort.sort(this);\n        // Do not show the animation if the header was already shown in the right position.\n        if (this._viewState.toState === 'hint' || this._viewState.toState === 'active') {\n            this._disableViewStateAnimation = true;\n        }\n        // If the arrow is now sorted, animate the arrow into place. Otherwise, animate it away into\n        // the direction it is facing.\n        var /** @type {?} */ viewState = this._isSorted() ?\n            { fromState: this._arrowDirection, toState: 'active' } :\n            { fromState: 'active', toState: this._arrowDirection };\n        this._setAnimationTransitionState(viewState);\n        this._showIndicatorHint = false;\n    };\n    /** Whether this MatSortHeader is currently sorted in either ascending or descending order. */\n    /**\n     * Whether this MatSortHeader is currently sorted in either ascending or descending order.\n     * @return {?}\n     */\n    MatSortHeader.prototype._isSorted = /**\n     * Whether this MatSortHeader is currently sorted in either ascending or descending order.\n     * @return {?}\n     */\n    function () {\n        return this._sort.active == this.id &&\n            (this._sort.direction === 'asc' || this._sort.direction === 'desc');\n    };\n    /** Returns the animation state for the arrow direction (indicator and pointers). */\n    /**\n     * Returns the animation state for the arrow direction (indicator and pointers).\n     * @return {?}\n     */\n    MatSortHeader.prototype._getArrowDirectionState = /**\n     * Returns the animation state for the arrow direction (indicator and pointers).\n     * @return {?}\n     */\n    function () {\n        return \"\" + (this._isSorted() ? 'active-' : '') + this._arrowDirection;\n    };\n    /** Returns the arrow position state (opacity, translation). */\n    /**\n     * Returns the arrow position state (opacity, translation).\n     * @return {?}\n     */\n    MatSortHeader.prototype._getArrowViewState = /**\n     * Returns the arrow position state (opacity, translation).\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ fromState = this._viewState.fromState;\n        return (fromState ? fromState + \"-to-\" : '') + this._viewState.toState;\n    };\n    /**\n     * Updates the direction the arrow should be pointing. If it is not sorted, the arrow should be\n     * facing the start direction. Otherwise if it is sorted, the arrow should point in the currently\n     * active sorted direction. The reason this is updated through a function is because the direction\n     * should only be changed at specific times - when deactivated but the hint is displayed and when\n     * the sort is active and the direction changes. Otherwise the arrow's direction should linger\n     * in cases such as the sort becoming deactivated but we want to animate the arrow away while\n     * preserving its direction, even though the next sort direction is actually different and should\n     * only be changed once the arrow displays again (hint or activation).\n     */\n    /**\n     * Updates the direction the arrow should be pointing. If it is not sorted, the arrow should be\n     * facing the start direction. Otherwise if it is sorted, the arrow should point in the currently\n     * active sorted direction. The reason this is updated through a function is because the direction\n     * should only be changed at specific times - when deactivated but the hint is displayed and when\n     * the sort is active and the direction changes. Otherwise the arrow's direction should linger\n     * in cases such as the sort becoming deactivated but we want to animate the arrow away while\n     * preserving its direction, even though the next sort direction is actually different and should\n     * only be changed once the arrow displays again (hint or activation).\n     * @return {?}\n     */\n    MatSortHeader.prototype._updateArrowDirection = /**\n     * Updates the direction the arrow should be pointing. If it is not sorted, the arrow should be\n     * facing the start direction. Otherwise if it is sorted, the arrow should point in the currently\n     * active sorted direction. The reason this is updated through a function is because the direction\n     * should only be changed at specific times - when deactivated but the hint is displayed and when\n     * the sort is active and the direction changes. Otherwise the arrow's direction should linger\n     * in cases such as the sort becoming deactivated but we want to animate the arrow away while\n     * preserving its direction, even though the next sort direction is actually different and should\n     * only be changed once the arrow displays again (hint or activation).\n     * @return {?}\n     */\n    function () {\n        this._arrowDirection = this._isSorted() ?\n            this._sort.direction :\n            (this.start || this._sort.start);\n    };\n    /**\n     * @return {?}\n     */\n    MatSortHeader.prototype._isDisabled = /**\n     * @return {?}\n     */\n    function () {\n        return this._sort.disabled || this.disabled;\n    };\n    /**\n     * Gets the aria-sort attribute that should be applied to this sort header. If this header\n     * is not sorted, returns null so that the attribute is removed from the host element. Aria spec\n     * says that the aria-sort property should only be present on one header at a time, so removing\n     * ensures this is true.\n     */\n    /**\n     * Gets the aria-sort attribute that should be applied to this sort header. If this header\n     * is not sorted, returns null so that the attribute is removed from the host element. Aria spec\n     * says that the aria-sort property should only be present on one header at a time, so removing\n     * ensures this is true.\n     * @return {?}\n     */\n    MatSortHeader.prototype._getAriaSortAttribute = /**\n     * Gets the aria-sort attribute that should be applied to this sort header. If this header\n     * is not sorted, returns null so that the attribute is removed from the host element. Aria spec\n     * says that the aria-sort property should only be present on one header at a time, so removing\n     * ensures this is true.\n     * @return {?}\n     */\n    function () {\n        if (!this._isSorted()) {\n            return null;\n        }\n        return this._sort.direction == 'asc' ? 'ascending' : 'descending';\n    };\n    MatSortHeader.decorators = [\n        { type: Component, args: [{selector: '[mat-sort-header]',\n                    exportAs: 'matSortHeader',\n                    template: \"<div class=\\\"mat-sort-header-container\\\" [class.mat-sort-header-sorted]=\\\"_isSorted()\\\" [class.mat-sort-header-position-before]=\\\"arrowPosition == 'before'\\\"><button class=\\\"mat-sort-header-button\\\" type=\\\"button\\\" [attr.disabled]=\\\"_isDisabled() || null\\\" [attr.aria-label]=\\\"_intl.sortButtonLabel(id)\\\" (focus)=\\\"_setIndicatorHintVisible(true)\\\" (blur)=\\\"_setIndicatorHintVisible(false)\\\"><ng-content></ng-content></button><div class=\\\"mat-sort-header-arrow\\\" [@arrowOpacity]=\\\"_getArrowViewState()\\\" [@arrowPosition]=\\\"_getArrowViewState()\\\" [@allowChildren]=\\\"_getArrowDirectionState()\\\" (@arrowPosition.start)=\\\"_disableViewStateAnimation = true\\\" (@arrowPosition.done)=\\\"_disableViewStateAnimation = false\\\"><div class=\\\"mat-sort-header-stem\\\"></div><div class=\\\"mat-sort-header-indicator\\\" [@indicator]=\\\"_getArrowDirectionState()\\\"><div class=\\\"mat-sort-header-pointer-left\\\" [@leftPointer]=\\\"_getArrowDirectionState()\\\"></div><div class=\\\"mat-sort-header-pointer-right\\\" [@rightPointer]=\\\"_getArrowDirectionState()\\\"></div><div class=\\\"mat-sort-header-pointer-middle\\\"></div></div></div></div>\",\n                    styles: [\".mat-sort-header-container{display:flex;cursor:pointer;align-items:center}.mat-sort-header-disabled .mat-sort-header-container{cursor:default}.mat-sort-header-position-before{flex-direction:row-reverse}.mat-sort-header-button{border:none;background:0 0;display:flex;align-items:center;padding:0;cursor:inherit;outline:0;font:inherit;color:currentColor}.mat-sort-header-arrow{height:12px;width:12px;min-width:12px;position:relative;display:flex;opacity:0}.mat-sort-header-arrow,[dir=rtl] .mat-sort-header-position-before .mat-sort-header-arrow{margin:0 0 0 6px}.mat-sort-header-position-before .mat-sort-header-arrow,[dir=rtl] .mat-sort-header-arrow{margin:0 6px 0 0}.mat-sort-header-stem{background:currentColor;height:10px;width:2px;margin:auto;display:flex;align-items:center}@media screen and (-ms-high-contrast:active){.mat-sort-header-stem{width:0;border-left:solid 2px}}.mat-sort-header-indicator{width:100%;height:2px;display:flex;align-items:center;position:absolute;top:0;left:0}.mat-sort-header-pointer-middle{margin:auto;height:2px;width:2px;background:currentColor;transform:rotate(45deg)}@media screen and (-ms-high-contrast:active){.mat-sort-header-pointer-middle{width:0;height:0;border-top:solid 2px;border-left:solid 2px}}.mat-sort-header-pointer-left,.mat-sort-header-pointer-right{background:currentColor;width:6px;height:2px;position:absolute;top:0}@media screen and (-ms-high-contrast:active){.mat-sort-header-pointer-left,.mat-sort-header-pointer-right{width:0;height:0;border-left:solid 6px;border-top:solid 2px}}.mat-sort-header-pointer-left{transform-origin:right;left:0}.mat-sort-header-pointer-right{transform-origin:left;right:0}\"],\n                    host: {\n                        '(click)': '_handleClick()',\n                        '(mouseenter)': '_setIndicatorHintVisible(true)',\n                        '(longpress)': '_setIndicatorHintVisible(true)',\n                        '(mouseleave)': '_setIndicatorHintVisible(false)',\n                        '[attr.aria-sort]': '_getAriaSortAttribute()',\n                        '[class.mat-sort-header-disabled]': '_isDisabled()',\n                    },\n                    encapsulation: ViewEncapsulation.None,\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    inputs: ['disabled'],\n                    animations: [\n                        matSortAnimations.indicator,\n                        matSortAnimations.leftPointer,\n                        matSortAnimations.rightPointer,\n                        matSortAnimations.arrowOpacity,\n                        matSortAnimations.arrowPosition,\n                        matSortAnimations.allowChildren,\n                    ]\n                },] },\n    ];\n    /** @nocollapse */\n    MatSortHeader.ctorParameters = function () { return [\n        { type: MatSortHeaderIntl, },\n        { type: ChangeDetectorRef, },\n        { type: MatSort, decorators: [{ type: Optional },] },\n        { type: CdkColumnDef, decorators: [{ type: Optional },] },\n    ]; };\n    MatSortHeader.propDecorators = {\n        \"id\": [{ type: Input, args: ['mat-sort-header',] },],\n        \"arrowPosition\": [{ type: Input },],\n        \"start\": [{ type: Input },],\n        \"disableClear\": [{ type: Input },],\n    };\n    return MatSortHeader;\n}(_MatSortHeaderMixinBase));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nvar MatSortModule = /** @class */ (function () {\n    function MatSortModule() {\n    }\n    MatSortModule.decorators = [\n        { type: NgModule, args: [{\n                    imports: [CommonModule],\n                    exports: [MatSort, MatSortHeader],\n                    declarations: [MatSort, MatSortHeader],\n                    providers: [MAT_SORT_HEADER_INTL_PROVIDER]\n                },] },\n    ];\n    return MatSortModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\nexport { MatSortModule, MatSortHeaderBase, _MatSortHeaderMixinBase, MatSortHeader, MatSortHeaderIntl, MAT_SORT_HEADER_INTL_PROVIDER_FACTORY, MAT_SORT_HEADER_INTL_PROVIDER, MatSortBase, _MatSortMixinBase, MatSort, matSortAnimations };\n//# sourceMappingURL=sort.es5.js.map\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { UploadValidation } from './upload-validation';\nvar BlockedExtensionsValidation = /** @class */ (function (_super) {\n    __extends(BlockedExtensionsValidation, _super);\n    function BlockedExtensionsValidation(params, i18n) {\n        var _this = _super.call(this) || this;\n        _this.params = params;\n        _this.i18n = i18n;\n        _this.errorMessage = _this.i18n.t('These file types are not allowed: :extensions', { extensions: _this.params.extensions.join(', ') });\n        return _this;\n    }\n    BlockedExtensionsValidation.prototype.fails = function (file) {\n        return this.params.extensions.some(function (extension) {\n            return extension === file.extension;\n        });\n    };\n    return BlockedExtensionsValidation;\n}(UploadValidation));\nexport { BlockedExtensionsValidation };\n","import { UploadedFile } from '../../uploaded-file';\r\nimport { UploadValidation } from './upload-validation';\r\nimport { Translations } from '../../../core/translations/translations.service';\r\n\r\nexport class BlockedExtensionsValidation extends UploadValidation {\r\n    constructor(\r\n        protected params: {extensions: string[]},\r\n        protected i18n: Translations\r\n    ) {\r\n        super();\r\n\r\n        this.errorMessage = this.i18n.t(\r\n            'These file types are not allowed: :extensions',\r\n            {extensions: this.params.extensions.join(', ')}\r\n        );\r\n    }\r\n\r\n    public fails(file: UploadedFile) {\r\n        return this.params.extensions.some(extension => {\r\n            return extension === file.extension;\r\n        });\r\n    }\r\n}\r\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\nmodule.exports = copyArray;\n","var isObject = require('./isObject'),\n    isPrototype = require('./_isPrototype'),\n    nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeysIn;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nmodule.exports = getMapData;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arraySome;\n","var DataView = require('./_DataView'),\n    Map = require('./_Map'),\n    Promise = require('./_Promise'),\n    Set = require('./_Set'),\n    WeakMap = require('./_WeakMap'),\n    baseGetTag = require('./_baseGetTag'),\n    toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nmodule.exports = getTag;\n","var baseFindIndex = require('./_baseFindIndex'),\n    baseIsNaN = require('./_baseIsNaN'),\n    strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  return value === value\n    ? strictIndexOf(array, value, fromIndex)\n    : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/autocomplete\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@angular/cdk/overlay\";\nimport * as i4 from \"@angular/cdk/bidi\";\nimport * as i5 from \"@angular/material/core\";\nimport * as i6 from \"@angular/cdk/platform\";\nimport * as i7 from \"@angular/cdk/portal\";\nimport * as i8 from \"@angular/cdk/scrolling\";\nvar MatAutocompleteModuleNgFactory = i0.ɵcmf(i1.MatAutocompleteModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i2.NgLocalization, i2.NgLocaleLocalization, [i0.LOCALE_ID, [2, i2.ɵangular_packages_common_common_a]]), i0.ɵmpd(4608, i3.Overlay, i3.Overlay, [i3.ScrollStrategyOptions, i3.OverlayContainer, i0.ComponentFactoryResolver, i3.OverlayPositionBuilder, i3.OverlayKeyboardDispatcher, i0.Injector, i0.NgZone, i2.DOCUMENT, i4.Directionality]), i0.ɵmpd(5120, i3.ɵc, i3.ɵd, [i3.Overlay]), i0.ɵmpd(5120, i1.MAT_AUTOCOMPLETE_SCROLL_STRATEGY, i1.MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY, [i3.Overlay]), i0.ɵmpd(1073742336, i4.BidiModule, i4.BidiModule, []), i0.ɵmpd(1073742336, i5.MatCommonModule, i5.MatCommonModule, [[2, i5.MATERIAL_SANITY_CHECKS]]), i0.ɵmpd(1073742336, i6.PlatformModule, i6.PlatformModule, []), i0.ɵmpd(1073742336, i5.MatRippleModule, i5.MatRippleModule, []), i0.ɵmpd(1073742336, i2.CommonModule, i2.CommonModule, []), i0.ɵmpd(1073742336, i5.MatPseudoCheckboxModule, i5.MatPseudoCheckboxModule, []), i0.ɵmpd(1073742336, i5.MatOptionModule, i5.MatOptionModule, []), i0.ɵmpd(1073742336, i7.PortalModule, i7.PortalModule, []), i0.ɵmpd(1073742336, i8.ScrollDispatchModule, i8.ScrollDispatchModule, []), i0.ɵmpd(1073742336, i3.OverlayModule, i3.OverlayModule, []), i0.ɵmpd(1073742336, i1.MatAutocompleteModule, i1.MatAutocompleteModule, [])]); });\nexport { MatAutocompleteModuleNgFactory as MatAutocompleteModuleNgFactory };\nvar styles_MatAutocomplete = [\".mat-autocomplete-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;visibility:hidden;max-width:none;max-height:256px;position:relative;width:100%}.mat-autocomplete-panel:not([class*=mat-elevation-z]){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.mat-autocomplete-panel.mat-autocomplete-visible{visibility:visible}.mat-autocomplete-panel.mat-autocomplete-hidden{visibility:hidden}@media screen and (-ms-high-contrast:active){.mat-autocomplete-panel{outline:solid 1px}}\"];\nvar RenderType_MatAutocomplete = i0.ɵcrt({ encapsulation: 2, styles: styles_MatAutocomplete, data: {} });\nexport { RenderType_MatAutocomplete as RenderType_MatAutocomplete };\nfunction View_MatAutocomplete_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, [[2, 0], [\"panel\", 1]], null, 2, \"div\", [[\"class\", \"mat-autocomplete-panel\"], [\"role\", \"listbox\"]], [[8, \"id\", 0]], null, null, null, null)), i0.ɵdid(1, 278528, null, 0, i2.NgClass, [i0.IterableDiffers, i0.KeyValueDiffers, i0.ElementRef, i0.Renderer2], { klass: [0, \"klass\"], ngClass: [1, \"ngClass\"] }, null), i0.ɵncd(null, 0)], function (_ck, _v) { var _co = _v.component; var currVal_1 = \"mat-autocomplete-panel\"; var currVal_2 = _co._classList; _ck(_v, 1, 0, currVal_1, currVal_2); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.id; _ck(_v, 0, 0, currVal_0); }); }\nexport function View_MatAutocomplete_0(_l) { return i0.ɵvid(2, [i0.ɵqud(402653184, 1, { template: 0 }), i0.ɵqud(671088640, 2, { panel: 0 }), (_l()(), i0.ɵand(0, [[1, 2]], null, 0, null, View_MatAutocomplete_1))], null, null); }\nexport function View_MatAutocomplete_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 4, \"mat-autocomplete\", [[\"class\", \"mat-autocomplete\"]], null, null, null, View_MatAutocomplete_0, RenderType_MatAutocomplete)), i0.ɵprd(6144, null, i5.MAT_OPTION_PARENT_COMPONENT, null, [i1.MatAutocomplete]), i0.ɵdid(2, 1097728, null, 2, i1.MatAutocomplete, [i0.ChangeDetectorRef, i0.ElementRef, i1.MAT_AUTOCOMPLETE_DEFAULT_OPTIONS], null, null), i0.ɵqud(603979776, 1, { options: 1 }), i0.ɵqud(603979776, 2, { optionGroups: 1 })], null, null); }\nvar MatAutocompleteNgFactory = i0.ɵccf(\"mat-autocomplete\", i1.MatAutocomplete, View_MatAutocomplete_Host_0, { disableRipple: \"disableRipple\", displayWith: \"displayWith\", autoActiveFirstOption: \"autoActiveFirstOption\", panelWidth: \"panelWidth\", classList: \"class\" }, { optionSelected: \"optionSelected\", opened: \"opened\", closed: \"closed\" }, [\"*\"]);\nexport { MatAutocompleteNgFactory as MatAutocompleteNgFactory };\n","<ng-template><div class=\"mat-autocomplete-panel\" role=\"listbox\" [id]=\"id\" [ngClass]=\"_classList\" #panel><ng-content></ng-content></div></ng-template>","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nmodule.exports = hashClear;\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { ROOT_FOLDER } from '../../folders/root-folder';\nexport var DRIVE_PAGE_NAMES = {\n    FOLDER: 'folder',\n    RECENT: 'recent',\n    TRASH: 'trash',\n    SHARES: 'shares',\n    STARRED: 'starred',\n    ROOT: 'root',\n    SEARCH: 'search',\n};\nvar DrivePage = /** @class */ (function () {\n    function DrivePage(params) {\n        var _this = this;\n        this.name = null;\n        this.viewName = null;\n        this.folder = null;\n        this.folderHash = null;\n        this.hasActions = false;\n        this.sortColumn = 'updated_at';\n        this.sortDirection = 'desc';\n        Object.keys(params).forEach(function (key) {\n            _this[key] = params[key];\n        });\n    }\n    return DrivePage;\n}());\nexport { DrivePage };\nvar DriveFolderPage = /** @class */ (function (_super) {\n    __extends(DriveFolderPage, _super);\n    function DriveFolderPage(folder) {\n        return _super.call(this, {\n            folder: folder,\n            name: DRIVE_PAGE_NAMES.FOLDER,\n            hasActions: true,\n            viewName: folder === ROOT_FOLDER ? 'Drive' : folder.name,\n            folderHash: folder ? folder['hash'] : null,\n        }) || this;\n    }\n    return DriveFolderPage;\n}(DrivePage));\nexport { DriveFolderPage };\nexport var RECENT_PAGE = new DrivePage({\n    name: DRIVE_PAGE_NAMES.RECENT,\n    viewName: 'Recent',\n    disableSort: true,\n    sortColumn: 'created_at',\n    sortDirection: 'desc'\n});\nexport var SEARCH_PAGE = new DrivePage({\n    name: DRIVE_PAGE_NAMES.SEARCH,\n    viewName: 'Search results',\n});\nexport var SHARES_PAGE = new DrivePage({\n    name: DRIVE_PAGE_NAMES.SHARES,\n    viewName: 'Shared with me',\n});\nexport var TRASH_PAGE = new DrivePage({\n    name: DRIVE_PAGE_NAMES.TRASH,\n    viewName: 'Trash',\n    hasActions: true\n});\nexport var STARRED_PAGE = new DrivePage({\n    name: DRIVE_PAGE_NAMES.STARRED,\n    viewName: 'Starred',\n});\nexport var ROOT_FOLDER_PAGE = new DrivePage({\n    name: DRIVE_PAGE_NAMES.ROOT,\n    viewName: 'Drive',\n    folder: ROOT_FOLDER,\n    hasActions: true,\n});\nexport var FOLDER_PAGE = new DrivePage({\n    name: DRIVE_PAGE_NAMES.FOLDER,\n    viewName: null,\n    hasActions: true\n});\n","export enum FOLDERS_API_ROUTES {\r\n    GET_ALL = 'drive/folders',\r\n    CREATE = 'drive/folders',\r\n}\r\n","export interface RootFolder {\r\n    id: 'root';\r\n}\r\n\r\nexport const ROOT_FOLDER: RootFolder = {\r\n    id: 'root'\r\n};\r\n","import { DrivePageType } from './available-pages';\r\nimport { DriveFolder } from '../../folders/models/driveFolder';\r\nimport { ROOT_FOLDER, RootFolder } from '../../folders/root-folder';\r\nimport { SortColumn, SortDirection } from '../../entries/available-sorts';\r\n\r\nexport const DRIVE_PAGE_NAMES: {[key: string]: DrivePageType} = {\r\n    FOLDER: 'folder',\r\n    RECENT: 'recent',\r\n    TRASH: 'trash',\r\n    SHARES: 'shares',\r\n    STARRED: 'starred',\r\n    ROOT: 'root',\r\n    SEARCH: 'search',\r\n};\r\n\r\nexport class DrivePage implements DrivePageParams {\r\n    name = null;\r\n    viewName = null;\r\n    folder = null;\r\n    folderHash = null;\r\n    hasActions = false;\r\n    sortColumn = 'updated_at' as SortColumn;\r\n    sortDirection = 'desc' as SortDirection;\r\n\r\n    constructor(params: DrivePageParams) {\r\n        Object.keys(params).forEach(key => {\r\n            this[key] = params[key];\r\n        });\r\n    }\r\n}\r\n\r\nexport interface DrivePageParams {\r\n    name: DrivePageType;\r\n    viewName: string;\r\n    folder?: DriveFolder|RootFolder;\r\n    folderHash?: string;\r\n    hasActions?: boolean;\r\n    disableSort?: boolean;\r\n    sortColumn?: SortColumn;\r\n    sortDirection?: SortDirection;\r\n}\r\n\r\nexport class DriveFolderPage extends DrivePage {\r\n    constructor(\r\n        folder?: DriveFolder|RootFolder\r\n    ) {\r\n        super({\r\n            folder,\r\n            name: DRIVE_PAGE_NAMES.FOLDER,\r\n            hasActions: true,\r\n            viewName: folder === ROOT_FOLDER ? 'Drive' : (folder as DriveFolder).name,\r\n            folderHash: folder ? folder['hash'] : null,\r\n        });\r\n    }\r\n}\r\n\r\nexport const RECENT_PAGE = new DrivePage({\r\n    name: DRIVE_PAGE_NAMES.RECENT,\r\n    viewName: 'Recent',\r\n    disableSort: true,\r\n    sortColumn: 'created_at',\r\n    sortDirection: 'desc'\r\n});\r\n\r\nexport const SEARCH_PAGE = new DrivePage({\r\n    name: DRIVE_PAGE_NAMES.SEARCH,\r\n    viewName: 'Search results',\r\n});\r\n\r\nexport const SHARES_PAGE = new DrivePage({\r\n    name: DRIVE_PAGE_NAMES.SHARES,\r\n    viewName: 'Shared with me',\r\n});\r\n\r\nexport const TRASH_PAGE = new DrivePage({\r\n    name: DRIVE_PAGE_NAMES.TRASH,\r\n    viewName: 'Trash',\r\n    hasActions: true\r\n});\r\n\r\nexport const STARRED_PAGE = new DrivePage({\r\n    name: DRIVE_PAGE_NAMES.STARRED,\r\n    viewName: 'Starred',\r\n});\r\n\r\nexport const ROOT_FOLDER_PAGE = new DrivePage({\r\n    name: DRIVE_PAGE_NAMES.ROOT,\r\n    viewName: 'Drive',\r\n    folder: ROOT_FOLDER,\r\n    hasActions: true,\r\n});\r\n\r\nexport const FOLDER_PAGE = new DrivePage({\r\n    name: DRIVE_PAGE_NAMES.FOLDER,\r\n    viewName: null,\r\n    hasActions: true\r\n});\r\n","var __assign = (this && this.__assign) || Object.assign || function(t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n        s = arguments[i];\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n            t[p] = s[p];\n    }\n    return t;\n};\nimport { FOLDER_PAGE, RECENT_PAGE, ROOT_FOLDER_PAGE, SEARCH_PAGE, SHARES_PAGE, STARRED_PAGE, TRASH_PAGE } from '../models/drive-page';\nvar RecentEntriesPageOpened = /** @class */ (function () {\n    function RecentEntriesPageOpened() {\n        this.page = RECENT_PAGE;\n        this.queryParams = { orderBy: 'created_at', recentOnly: true };\n    }\n    RecentEntriesPageOpened.type = '[Drive] Recent Entries Page Opened';\n    return RecentEntriesPageOpened;\n}());\nexport { RecentEntriesPageOpened };\nvar FolderPageOpened = /** @class */ (function () {\n    function FolderPageOpened(folderHash) {\n        this.queryParams = {};\n        var page = folderHash === 'root' ? ROOT_FOLDER_PAGE : FOLDER_PAGE;\n        this.page = __assign({}, page, { folderHash: folderHash });\n    }\n    FolderPageOpened.type = '[Drive] Folder Page Opened';\n    return FolderPageOpened;\n}());\nexport { FolderPageOpened };\nvar SharesFolderOpened = /** @class */ (function () {\n    function SharesFolderOpened() {\n        this.page = SHARES_PAGE;\n        this.queryParams = { sharedOnly: true };\n    }\n    SharesFolderOpened.type = '[Drive] Shared with me folder opened';\n    return SharesFolderOpened;\n}());\nexport { SharesFolderOpened };\nvar TrashPageOpened = /** @class */ (function () {\n    function TrashPageOpened() {\n        this.page = TRASH_PAGE;\n        this.queryParams = { deletedOnly: true };\n    }\n    TrashPageOpened.type = '[Drive] Trash Page Opened';\n    return TrashPageOpened;\n}());\nexport { TrashPageOpened };\nvar SearchPageOpened = /** @class */ (function () {\n    function SearchPageOpened(queryParams) {\n        if (queryParams === void 0) { queryParams = {}; }\n        this.queryParams = queryParams;\n        this.page = SEARCH_PAGE;\n    }\n    SearchPageOpened.type = '[Drive] Search Page Opened';\n    return SearchPageOpened;\n}());\nexport { SearchPageOpened };\nvar StarredPageOpened = /** @class */ (function () {\n    function StarredPageOpened() {\n        this.page = STARRED_PAGE;\n        this.queryParams = { starredOnly: true };\n    }\n    StarredPageOpened.type = '[Drive] Starred Entries Page Opened';\n    return StarredPageOpened;\n}());\nexport { StarredPageOpened };\nvar EntriesSelectedViaDrag = /** @class */ (function () {\n    function EntriesSelectedViaDrag(entries) {\n        this.entries = entries;\n    }\n    EntriesSelectedViaDrag.type = '[Drive] Entries Selected Via Drag';\n    return EntriesSelectedViaDrag;\n}());\nexport { EntriesSelectedViaDrag };\nvar EntrySelectedViaContextMenu = /** @class */ (function () {\n    function EntrySelectedViaContextMenu(entries) {\n        this.entries = entries;\n    }\n    EntrySelectedViaContextMenu.type = '[Drive] File Selected Via ContextMenu';\n    return EntrySelectedViaContextMenu;\n}());\nexport { EntrySelectedViaContextMenu };\nvar EntryTapped = /** @class */ (function () {\n    function EntryTapped(entry, ctrlKey) {\n        if (ctrlKey === void 0) { ctrlKey = false; }\n        this.entry = entry;\n        this.ctrlKey = ctrlKey;\n    }\n    EntryTapped.type = '[Drive] User Tapped File';\n    return EntryTapped;\n}());\nexport { EntryTapped };\nvar EntryDoubleTapped = /** @class */ (function () {\n    function EntryDoubleTapped(entry) {\n        this.entry = entry;\n    }\n    EntryDoubleTapped.type = '[Drive] User Double Tapped Entry';\n    return EntryDoubleTapped;\n}());\nexport { EntryDoubleTapped };\nvar FileDeleteSuccess = /** @class */ (function () {\n    function FileDeleteSuccess(deletedFiles) {\n        this.deletedFiles = deletedFiles;\n    }\n    FileDeleteSuccess.type = '[Drive] Successfully Deleted Files';\n    return FileDeleteSuccess;\n}());\nexport { FileDeleteSuccess };\nvar EntryContextMenuOpened = /** @class */ (function () {\n    function EntryContextMenuOpened(entry) {\n        this.entry = entry;\n    }\n    EntryContextMenuOpened.type = '[Drive] Entry Context Menu Opened';\n    return EntryContextMenuOpened;\n}());\nexport { EntryContextMenuOpened };\nvar NewFolderCreated = /** @class */ (function () {\n    function NewFolderCreated(folder) {\n        this.folder = folder;\n    }\n    NewFolderCreated.type = '[Drive] New Folder Created';\n    return NewFolderCreated;\n}());\nexport { NewFolderCreated };\nvar EntryRenamed = /** @class */ (function () {\n    function EntryRenamed(entry, newName) {\n        this.entry = entry;\n        this.newName = newName;\n    }\n    EntryRenamed.type = '[Drive] Entry Renamed';\n    return EntryRenamed;\n}());\nexport { EntryRenamed };\nvar StartedDragging = /** @class */ (function () {\n    function StartedDragging() {\n    }\n    StartedDragging.type = '[Drive] Started Dragging';\n    return StartedDragging;\n}());\nexport { StartedDragging };\nvar StoppedDragging = /** @class */ (function () {\n    function StoppedDragging() {\n    }\n    StoppedDragging.type = '[Drive] Stopped Dragging';\n    return StoppedDragging;\n}());\nexport { StoppedDragging };\nvar MoveEntriesSuccess = /** @class */ (function () {\n    function MoveEntriesSuccess(destination, entries) {\n        this.destination = destination;\n        this.entries = entries;\n    }\n    MoveEntriesSuccess.type = '[Drive API] Move Entries Success';\n    return MoveEntriesSuccess;\n}());\nexport { MoveEntriesSuccess };\nvar MoveEntriesFailed = /** @class */ (function () {\n    function MoveEntriesFailed(messages) {\n        this.messages = messages;\n    }\n    MoveEntriesFailed.type = '[Drive API] Move Entries Failed';\n    return MoveEntriesFailed;\n}());\nexport { MoveEntriesFailed };\nvar TrashedEntriesDeleteSuccess = /** @class */ (function () {\n    function TrashedEntriesDeleteSuccess(entries) {\n        this.entries = entries;\n    }\n    TrashedEntriesDeleteSuccess.type = '[Drive API] Trashed Entries Delete Forever Success';\n    return TrashedEntriesDeleteSuccess;\n}());\nexport { TrashedEntriesDeleteSuccess };\nvar TrashedEntriesRestoreSuccess = /** @class */ (function () {\n    function TrashedEntriesRestoreSuccess(entries) {\n        this.entries = entries;\n    }\n    TrashedEntriesRestoreSuccess.type = '[Drive API] Trashed Entries Restore Success';\n    return TrashedEntriesRestoreSuccess;\n}());\nexport { TrashedEntriesRestoreSuccess };\nvar NotEnoughSpaceError = /** @class */ (function () {\n    function NotEnoughSpaceError() {\n    }\n    NotEnoughSpaceError.type = '[Drive] Not Enough Space Error';\n    return NotEnoughSpaceError;\n}());\nexport { NotEnoughSpaceError };\nvar UserSpaceUsageChanged = /** @class */ (function () {\n    function UserSpaceUsageChanged() {\n    }\n    UserSpaceUsageChanged.type = '[Drive] User Space Usage Changed';\n    return UserSpaceUsageChanged;\n}());\nexport { UserSpaceUsageChanged };\nvar BreakpointChanged = /** @class */ (function () {\n    function BreakpointChanged(status) {\n        this.status = status;\n    }\n    BreakpointChanged.type = '[Drive] BreakpointChanged';\n    return BreakpointChanged;\n}());\nexport { BreakpointChanged };\n","import { DriveEntry } from '../../files/models/drive-entry';\r\nimport { DriveFolder } from '../../folders/models/driveFolder';\r\nimport { DriveApiIndexParams } from '../../drive-entry-api.service';\r\nimport { SortColumn } from '../../entries/available-sorts';\r\nimport { RootFolder } from '../../folders/root-folder';\r\nimport {\r\n    DrivePage, FOLDER_PAGE, RECENT_PAGE, ROOT_FOLDER_PAGE, SEARCH_PAGE, SHARES_PAGE, STARRED_PAGE, TRASH_PAGE\r\n} from '../models/drive-page';\r\n\r\nexport interface LoadEntriesAction {\r\n    queryParams: DriveApiIndexParams;\r\n    page?: DrivePage;\r\n    folder?: DriveFolder|RootFolder;\r\n    loadMore?: boolean;\r\n}\r\n\r\nexport class RecentEntriesPageOpened implements LoadEntriesAction {\r\n    static readonly type = '[Drive] Recent Entries Page Opened';\r\n    public page = RECENT_PAGE;\r\n    public queryParams = {orderBy: 'created_at' as SortColumn, recentOnly: true};\r\n}\r\n\r\nexport class FolderPageOpened implements LoadEntriesAction {\r\n    static readonly type = '[Drive] Folder Page Opened';\r\n    public page: DrivePage;\r\n    public queryParams = {};\r\n    constructor(folderHash: string|'root') {\r\n        const page = folderHash === 'root' ? ROOT_FOLDER_PAGE : FOLDER_PAGE;\r\n        this.page = {...page, folderHash};\r\n    }\r\n}\r\n\r\nexport class SharesFolderOpened implements LoadEntriesAction {\r\n    static readonly type = '[Drive] Shared with me folder opened';\r\n    public page = SHARES_PAGE;\r\n    public queryParams = {sharedOnly: true};\r\n}\r\n\r\nexport class TrashPageOpened implements LoadEntriesAction {\r\n    static readonly type = '[Drive] Trash Page Opened';\r\n    public page = TRASH_PAGE;\r\n    public queryParams = {deletedOnly: true};\r\n}\r\n\r\nexport class SearchPageOpened implements LoadEntriesAction {\r\n    static readonly type = '[Drive] Search Page Opened';\r\n    public page = SEARCH_PAGE;\r\n    constructor(public queryParams: {\r\n        type?: string;\r\n        query?: string;\r\n    } = {}) {}\r\n}\r\n\r\nexport class StarredPageOpened implements LoadEntriesAction {\r\n    static readonly type = '[Drive] Starred Entries Page Opened';\r\n    public page = STARRED_PAGE;\r\n    public queryParams = {starredOnly: true};\r\n}\r\n\r\nexport class EntriesSelectedViaDrag {\r\n    static readonly type = '[Drive] Entries Selected Via Drag';\r\n    constructor(public entries: DriveEntry[]) {}\r\n}\r\n\r\nexport class EntrySelectedViaContextMenu {\r\n    static readonly type = '[Drive] File Selected Via ContextMenu';\r\n    constructor(public entries: DriveEntry[]) {}\r\n}\r\n\r\nexport class EntryTapped {\r\n    static readonly type = '[Drive] User Tapped File';\r\n    constructor(public entry: DriveEntry, public ctrlKey = false) {}\r\n}\r\n\r\nexport class EntryDoubleTapped {\r\n    static readonly type = '[Drive] User Double Tapped Entry';\r\n    constructor(public entry: DriveEntry) {}\r\n}\r\n\r\nexport class FileDeleteSuccess {\r\n    static readonly type = '[Drive] Successfully Deleted Files';\r\n    constructor(public deletedFiles: DriveEntry[]) {}\r\n}\r\n\r\nexport class EntryContextMenuOpened {\r\n    static readonly type = '[Drive] Entry Context Menu Opened';\r\n    constructor(public entry: DriveEntry) {}\r\n}\r\n\r\nexport class NewFolderCreated {\r\n    static readonly type = '[Drive] New Folder Created';\r\n    constructor(public folder: DriveFolder) {}\r\n}\r\n\r\nexport class EntryRenamed {\r\n    static readonly type = '[Drive] Entry Renamed';\r\n    constructor(public entry: DriveEntry, public newName: string) {}\r\n}\r\n\r\nexport class StartedDragging {\r\n    static readonly type = '[Drive] Started Dragging';\r\n}\r\n\r\nexport class StoppedDragging {\r\n    static readonly type = '[Drive] Stopped Dragging';\r\n}\r\n\r\nexport class MoveEntriesSuccess {\r\n    static readonly type = '[Drive API] Move Entries Success';\r\n    constructor(public destination: number | 'root', public entries: DriveEntry[]) {}\r\n}\r\n\r\nexport class MoveEntriesFailed {\r\n    static readonly type = '[Drive API] Move Entries Failed';\r\n    constructor(public messages: object) {}\r\n}\r\n\r\nexport class TrashedEntriesDeleteSuccess {\r\n    static readonly type = '[Drive API] Trashed Entries Delete Forever Success';\r\n    constructor(public entries: DriveEntry[]) {}\r\n}\r\n\r\nexport class TrashedEntriesRestoreSuccess {\r\n    static readonly type = '[Drive API] Trashed Entries Restore Success';\r\n    constructor(public entries: DriveEntry[]) {}\r\n}\r\n\r\nexport class NotEnoughSpaceError {\r\n    static readonly type = '[Drive] Not Enough Space Error';\r\n}\r\n\r\nexport class UserSpaceUsageChanged {\r\n    static readonly type = '[Drive] User Space Usage Changed';\r\n}\r\n\r\nexport class BreakpointChanged {\r\n    static readonly type = '[Drive] BreakpointChanged';\r\n    constructor(public status: {isMobile: boolean}) {}\r\n}\r\n\r\n\r\n","import { DriveFolder } from '../../folders/models/driveFolder';\r\nimport { DriveEntry } from '../../files/models/drive-entry';\r\nimport { ConfirmModalData } from 'common/core/ui/confirm-modal/confirm-modal.component';\r\nimport { ComponentType } from '@angular/cdk/portal';\r\nimport { UploadedFile } from 'common/uploads/uploaded-file';\r\nimport { SortColumn, SortDirection } from '../../entries/available-sorts';\r\nimport { LoadEntriesAction } from './events';\r\nimport { DriveApiIndexParams } from '../../drive-entry-api.service';\r\nimport { RootFolder } from '../../folders/root-folder';\r\nimport { FileEntry } from 'common/uploads/file-entry';\r\nimport { ShareableLink } from '../../sharing/links/models/shareable-link';\r\nimport { MatDialogConfig } from '@angular/material';\r\nimport { User } from '../../../../common/core/types/models/User';\r\n\r\nexport class LoadUserFolders {\r\n    static readonly type = '[Drive] Load User Folders';\r\n}\r\n\r\nexport class LoadUserSpaceUsage {\r\n    static readonly type = '[Drive] Load User Space Usage';\r\n}\r\n\r\nexport class BuildFolderTree {\r\n    static readonly type = '[Drive] Build Folder Tree';\r\n    constructor(public folders?: DriveFolder[]) {}\r\n}\r\n\r\nexport class OpenFolder {\r\n    static readonly type = '[Drive] Open Folder';\r\n    constructor(public folder?: DriveFolder|RootFolder) {}\r\n}\r\n\r\nexport class OpenSearchPage {\r\n    static readonly type = '[Drive] Open Search Page';\r\n    constructor(public queryParams: {\r\n        type?: string,\r\n        query?: string,\r\n    }) {}\r\n}\r\n\r\nexport class SelectEntries {\r\n    static readonly type = '[Drive] Select Entries';\r\n    constructor(public entries: DriveEntry[]) {}\r\n}\r\n\r\nexport class SelectAllEntries {\r\n    static readonly type = '[Drive] Select All Entries';\r\n}\r\n\r\nexport class DeselectAllEntries {\r\n    static readonly type = '[Drive] Deselect All Entries';\r\n}\r\n\r\nexport class DeleteSelectedEntries {\r\n    static readonly type = '[Drive] Delete Selected Entries';\r\n}\r\n\r\nexport class OpenUploadsPanel {\r\n    static readonly type = '[Drive] Open UploadsApiService Panel';\r\n}\r\n\r\nexport class CloseUploadsPanel {\r\n    static readonly type = '[Drive] Close UploadsApiService Panel';\r\n}\r\n\r\nexport class AddEntries {\r\n    static readonly type = '[Drive] Add Entries';\r\n    constructor(public entries: DriveEntry[]) {}\r\n}\r\n\r\nexport class MoveEntries {\r\n    static readonly type = '[Drive API] Move Entries';\r\n    constructor(public destination: number | 'root', public entries?: DriveEntry[]) {}\r\n}\r\n\r\nexport class OpenDialog {\r\n    static readonly type = '[Drive] Open Dialog';\r\n    constructor(public dialog: ComponentType<any>, public data?: object, public config?: string|MatDialogConfig) {}\r\n}\r\n\r\nexport class OpenConfirmDialog {\r\n    static readonly type = '[Drive] Open Confirm Dialog';\r\n    constructor(public data: ConfirmModalData, public confirmAction: any) {}\r\n}\r\n\r\nexport class SetViewMode {\r\n    static readonly type = '[Drive] Set View Mode';\r\n    constructor(public mode?: 'list'|'grid') {}\r\n}\r\n\r\nexport class ToggleDetailsSidebar {\r\n    static readonly type = '[Drive] Toggle Details';\r\n}\r\n\r\nexport class ToggleSidebar {\r\n    static readonly type = '[Drive] Toggle Sidebar';\r\n}\r\n\r\nexport class UploadFiles {\r\n    static readonly type = '[Drive] Upload Files';\r\n    constructor(public files: UploadedFile[]) {}\r\n}\r\n\r\nexport class RestoreTrashedEntries {\r\n    static readonly type = '[Drive] Restore Trashed Entries';\r\n    constructor(public entries?: DriveEntry[]) {}\r\n}\r\n\r\nexport class DeleteTrashedEntriesForever {\r\n    static readonly type = '[Drive] Restore Trashed Entries Forever';\r\n}\r\n\r\nexport class EmptyTrash {\r\n    static readonly type = '[Drive] Empty Trash';\r\n}\r\n\r\nexport class OpenFilePreview {\r\n    static readonly type = '[Drive] Open File Preview Overlay';\r\n    constructor(public entries?: DriveEntry[]) {}\r\n}\r\n\r\nexport class DownloadEntries {\r\n    static readonly type = '[Drive] Download Files';\r\n    constructor(public entries?: FileEntry[], public link?: ShareableLink, public password?: string) {}\r\n}\r\n\r\nexport class AddStar {\r\n    static readonly type = '[Drive] Add a Star';\r\n    constructor(public entries: DriveEntry[]) {}\r\n}\r\n\r\nexport class RemoveStar {\r\n    static readonly type = '[Drive] Remove Star';\r\n    constructor(public entries: DriveEntry[]) {}\r\n}\r\n\r\nexport class RemoveEntries {\r\n    static readonly type = '[Drive] Remove Entries';\r\n    constructor(public entries: DriveEntry[]) {}\r\n}\r\n\r\nexport class ChangeSort {\r\n    static readonly type = '[Drive] Change Sort';\r\n    constructor(public sort: SortColumn, public direction: SortDirection = 'desc') {}\r\n}\r\n\r\nexport class LoadMoreEntries implements LoadEntriesAction {\r\n    static readonly type = '[Drive Infinite Scroll] Load More Entries';\r\n    public loadMore = true;\r\n    constructor(public queryParams: DriveApiIndexParams = {}) {}\r\n}\r\n\r\nexport class ReloadPageEntries implements LoadEntriesAction {\r\n    static readonly type = '[Drive] Reload Page Entries';\r\n    constructor(public queryParams: DriveApiIndexParams = {}) {}\r\n}\r\n\r\nexport class CopySelectedEntries {\r\n    static readonly type = '[Drive] Copy Selected Entries';\r\n}\r\n\r\nexport class OpenUploadWindow {\r\n    static readonly type = '[Drive] Open Upload Window';\r\n    constructor(public type: 'file'|'directory') {}\r\n}\r\n\r\nexport class ShowLoadingToast {\r\n    static readonly type = '[Drive] Show Loading Toast';\r\n    constructor(public message: string) {}\r\n}\r\n\r\nexport class HideLoadingToast {\r\n    static readonly type = '[Drive] Hide Loading Toast';\r\n}\r\n\r\nexport class ResetState {\r\n    static readonly type = '[Drive] Reset State';\r\n}\r\n\r\nexport class UpdateEntries {\r\n    static readonly type = '[Drive] Update Entries';\r\n    constructor(public entries: DriveEntry[]) {}\r\n}\r\n\r\nexport class SetCurrentUser {\r\n    static readonly type = '[Drive] Set Current User';\r\n    constructor(public user: User) {}\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Inject, Optional, ViewEncapsulation } from '@angular/core';\r\nimport { Store } from '@ngxs/store';\r\nimport { DriveEntry } from '../../../files/models/drive-entry';\r\nimport { CONTEXT_MENU_DATA } from 'common/core/ui/context-menu/context-menu-data';\r\nimport { EntryContextMenuOpened } from '../../../state/actions/events';\r\nimport { CurrentUser } from 'common/auth/current-user';\r\nimport { DeselectAllEntries } from '../../../state/actions/commands';\r\n\r\nexport interface FileContextMenuData {\r\n    entry: DriveEntry;\r\n}\r\n\r\n@Component({\r\n    selector: 'drive-context-menu',\r\n    templateUrl: './drive-context-menu.component.html',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class DriveContextMenuComponent {\r\n    @HostBinding('class.context-menu') contextMenu = true;\r\n\r\n    constructor(\r\n        @Optional() @Inject(CONTEXT_MENU_DATA) public data: FileContextMenuData,\r\n        protected store: Store,\r\n        protected currentUser: CurrentUser\r\n    ) {\r\n        if (this.data && this.data.entry) {\r\n            this.store.dispatch(new EntryContextMenuOpened(this.data.entry));\r\n        } else {\r\n            this.store.dispatch(new DeselectAllEntries());\r\n        }\r\n    }\r\n}\r\n","import { DriveContextMenuComponent } from './components/drive-context-menu/drive-context-menu.component';\r\n\r\nexport const DRIVE_CONTEXT_MENUS = {\r\n    entry: DriveContextMenuComponent,\r\n};\r\n","import {\n    Component, ViewEncapsulation, ChangeDetectionStrategy, ElementRef, ViewChild, AfterViewInit, Inject, OnDestroy,\n} from '@angular/core';\nimport { DriveEntry } from '../../files/models/drive-entry';\nimport { OverlayPanelRef } from 'common/core/ui/overlay-panel/overlay-panel-ref';\nimport { OVERLAY_PANEL_DATA } from 'common/core/ui/overlay-panel/overlay-panel-data';\nimport { DriveContextMenuComponent } from '../../context-actions/components/drive-context-menu/drive-context-menu.component';\nimport { ContextMenu } from 'common/core/ui/context-menu/context-menu.service';\nimport { PreviewFilesService } from 'common/file-preview/preview-files.service';\nimport { DownloadEntries } from '../../state/actions/commands';\nimport { Store } from '@ngxs/store';\nimport { Subscription } from 'rxjs';\n\nexport interface FilePreviewOverlayData {\n    entries: DriveEntry[];\n}\n\n@Component({\n    selector: 'file-preview-overlay',\n    templateUrl: './file-preview-overlay.component.html',\n    styleUrls: ['./file-preview-overlay.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FilePreviewOverlayComponent implements AfterViewInit, OnDestroy {\n    public entries: DriveEntry[] = [];\n    @ViewChild('previewContainer', {read: ElementRef}) previewContainer: ElementRef;\n    @ViewChild('moreOptionsButton', {read: ElementRef}) optionsButton: ElementRef;\n    private downloadSub: Subscription;\n\n    constructor(\n        private store: Store,\n        private el: ElementRef,\n        private contextMenu: ContextMenu,\n        private overlayRef: OverlayPanelRef,\n        private previewFiles: PreviewFilesService,\n        @Inject(OVERLAY_PANEL_DATA) public data: FilePreviewOverlayData\n    ) {\n        this.entries = data.entries;\n    }\n\n    ngAfterViewInit() {\n        this.bindToDownload();\n\n        this.previewContainer.nativeElement.addEventListener('click', e => {\n            if ( ! e.target.closest('.preview-object')) {\n                this.overlayRef.close();\n            }\n        });\n    }\n\n    ngOnDestroy() {\n        this.downloadSub.unsubscribe();\n    }\n\n    public openContextMenu() {\n        const origin = this.optionsButton.nativeElement;\n        this.contextMenu.open(DriveContextMenuComponent, origin, {data: {entry: this.previewFiles.getCurrent()}});\n    }\n\n    public closeOverlay() {\n        this.overlayRef.close();\n    }\n\n    private bindToDownload() {\n        this.downloadSub = this.previewFiles.download.subscribe(() => {\n            const entries = this.previewFiles.getAllEntries();\n            this.store.dispatch(new DownloadEntries(entries));\n        });\n    }\n}\n","export enum LoadingToastMessages {\r\n    copyEntries =  'Copying items...',\r\n    emptyTrash = 'Emptying trash...',\r\n    moveEntries = 'Moving items...',\r\n}\r\n","import {Injectable} from '@angular/core';\nimport {AppHttpClient} from 'common/core/http/app-http-client.service';\nimport {FOLDERS_API_ROUTES} from './folders-api-routes.enum';\nimport {DriveFolder} from '../models/driveFolder';\nimport {CurrentUser} from 'common/auth/current-user';\nimport {PaginatedBackendResponse} from 'common/core/types/paginated-backend-response';\nimport { BackendResponse } from 'common/core/types/backend-response';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class FoldersApiService {\n\n    constructor(\n        private http: AppHttpClient,\n        private currentUser: CurrentUser\n    ) {}\n\n    public getAll(params?: {userId?: number}): PaginatedBackendResponse<DriveFolder> {\n        return this.http.get(FOLDERS_API_ROUTES.GET_ALL, params);\n    }\n\n    public getAllForCurrentUser(): BackendResponse<{folders: DriveFolder[]}> {\n        return this.http.get('drive/users/' + this.currentUser.get('id') + '/folders');\n    }\n\n    public create(params: {name: string, parent_id: number|'root'}): BackendResponse<{folder: DriveFolder}> {\n        if (params.parent_id === 'root') params.parent_id = null;\n        return this.http.post(FOLDERS_API_ROUTES.CREATE, params);\n    }\n\n    public getByHash(hash: string): BackendResponse<{folder: DriveFolder}> {\n        return this.http.get('drive/folders/find', {hash});\n    }\n}\n","import { AppHttpClient } from 'common/core/http/app-http-client.service';\nimport { FOLDERS_API_ROUTES } from './folders-api-routes.enum';\nimport { CurrentUser } from 'common/auth/current-user';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../../../common/core/http/app-http-client.service\";\nimport * as i2 from \"../../../../common/auth/current-user\";\nvar FoldersApiService = /** @class */ (function () {\n    function FoldersApiService(http, currentUser) {\n        this.http = http;\n        this.currentUser = currentUser;\n    }\n    FoldersApiService.prototype.getAll = function (params) {\n        return this.http.get(FOLDERS_API_ROUTES.GET_ALL, params);\n    };\n    FoldersApiService.prototype.getAllForCurrentUser = function () {\n        return this.http.get('drive/users/' + this.currentUser.get('id') + '/folders');\n    };\n    FoldersApiService.prototype.create = function (params) {\n        if (params.parent_id === 'root')\n            params.parent_id = null;\n        return this.http.post(FOLDERS_API_ROUTES.CREATE, params);\n    };\n    FoldersApiService.prototype.getByHash = function (hash) {\n        return this.http.get('drive/folders/find', { hash: hash });\n    };\n    FoldersApiService.ngInjectableDef = i0.defineInjectable({ factory: function FoldersApiService_Factory() { return new FoldersApiService(i0.inject(i1.AppHttpClient), i0.inject(i2.CurrentUser)); }, token: FoldersApiService, providedIn: \"root\" });\n    return FoldersApiService;\n}());\nexport { FoldersApiService };\n","import { Injectable } from '@angular/core';\nimport { AppHttpClient } from 'common/core/http/app-http-client.service';\nimport { DriveEntry } from './files/models/drive-entry';\nimport { BackendResponse } from 'common/core/types/backend-response';\nimport { PaginationResponse } from 'common/core/types/pagination-response';\nimport { DriveFolder } from './folders/models/driveFolder';\nimport { Observable } from 'rxjs';\nimport { CurrentUser } from 'common/auth/current-user';\nimport { PaginatedBackendResponse } from 'common/core/types/paginated-backend-response';\nimport { Tag } from 'common/core/types/models/Tag';\nimport { SortColumn, SortDirection } from './entries/available-sorts';\nimport { UserSpaceUsage } from './state/models/user-space-usage';\n\nexport interface DriveApiIndexParams {\n    orderBy?: SortColumn;\n    orderDir?: SortDirection;\n    folderId?: number|'root';\n    userId?: number;\n    query?: string;\n    type?: string;\n    deletedOnly?: boolean;\n    starredOnly?: boolean;\n    sharedOnly?: boolean;\n    per_page?: number;\n    page?: number;\n    recentOnly?: boolean;\n}\n\nexport interface DriveEntriesPaginationResponse extends PaginationResponse<DriveFolder> {\n    folder?: DriveFolder;\n}\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DriveEntryApiService {\n    constructor(private http: AppHttpClient, private currentUser: CurrentUser) {}\n\n    public getEntriesForFolder(params: DriveApiIndexParams = {}): Observable<DriveEntriesPaginationResponse> {\n        return this.http.get('drive/entries', params);\n    }\n\n    public getCurrentUserEntries(params: DriveApiIndexParams): PaginatedBackendResponse<DriveEntry> {\n        params.userId = this.currentUser.get('id');\n        return this.http.get('drive/entries', params);\n    }\n\n    public rename(entryId: number, params: {name: string}): BackendResponse<void> {\n        return this.http.put('drive/entries/' + entryId + '/rename', params);\n    }\n\n    public delete(params: {entryIds?: number[], deleteForever?: boolean, emptyTrash?: boolean}): BackendResponse<void> {\n        return this.http.delete('drive/entries', params);\n    }\n\n    public copy(params: {entryIds: number[]}): BackendResponse<{entries: DriveEntry[]}> {\n        return this.http.post('drive/entries/copy', params);\n    }\n\n    public restore(params: {entryIds: number[]}): BackendResponse<void> {\n        return this.http.post('drive/entries/restore', params);\n    }\n\n    public emptyTrash(): BackendResponse<void> {\n        return this.delete({emptyTrash: true});\n    }\n\n    public moveEntries(params: {entries: {id: number, type: string}[], destination: number|'root'}): BackendResponse<{entries: DriveEntry[]}> {\n        if (params.destination === 'root') params.destination = null;\n        return this.http.post('drive/entries/move', params);\n    }\n\n    public addStar(ids: number[]): BackendResponse<{tag: Tag}> {\n        return this.http.post('drive/entries/star', {ids});\n    }\n\n    public removeStar(ids: number[]): BackendResponse<{tag: Tag}> {\n        return this.http.post('drive/entries/unstar', {ids});\n    }\n\n    public getSpaceUsage(): BackendResponse<UserSpaceUsage> {\n        return this.http.get('drive/user/space-usage');\n    }\n}\n","import { AppHttpClient } from 'common/core/http/app-http-client.service';\nimport { CurrentUser } from 'common/auth/current-user';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../common/core/http/app-http-client.service\";\nimport * as i2 from \"../../common/auth/current-user\";\nvar DriveEntryApiService = /** @class */ (function () {\n    function DriveEntryApiService(http, currentUser) {\n        this.http = http;\n        this.currentUser = currentUser;\n    }\n    DriveEntryApiService.prototype.getEntriesForFolder = function (params) {\n        if (params === void 0) { params = {}; }\n        return this.http.get('drive/entries', params);\n    };\n    DriveEntryApiService.prototype.getCurrentUserEntries = function (params) {\n        params.userId = this.currentUser.get('id');\n        return this.http.get('drive/entries', params);\n    };\n    DriveEntryApiService.prototype.rename = function (entryId, params) {\n        return this.http.put('drive/entries/' + entryId + '/rename', params);\n    };\n    DriveEntryApiService.prototype.delete = function (params) {\n        return this.http.delete('drive/entries', params);\n    };\n    DriveEntryApiService.prototype.copy = function (params) {\n        return this.http.post('drive/entries/copy', params);\n    };\n    DriveEntryApiService.prototype.restore = function (params) {\n        return this.http.post('drive/entries/restore', params);\n    };\n    DriveEntryApiService.prototype.emptyTrash = function () {\n        return this.delete({ emptyTrash: true });\n    };\n    DriveEntryApiService.prototype.moveEntries = function (params) {\n        if (params.destination === 'root')\n            params.destination = null;\n        return this.http.post('drive/entries/move', params);\n    };\n    DriveEntryApiService.prototype.addStar = function (ids) {\n        return this.http.post('drive/entries/star', { ids: ids });\n    };\n    DriveEntryApiService.prototype.removeStar = function (ids) {\n        return this.http.post('drive/entries/unstar', { ids: ids });\n    };\n    DriveEntryApiService.prototype.getSpaceUsage = function () {\n        return this.http.get('drive/user/space-usage');\n    };\n    DriveEntryApiService.ngInjectableDef = i0.defineInjectable({ factory: function DriveEntryApiService_Factory() { return new DriveEntryApiService(i0.inject(i1.AppHttpClient), i0.inject(i2.CurrentUser)); }, token: DriveEntryApiService, providedIn: \"root\" });\n    return DriveEntryApiService;\n}());\nexport { DriveEntryApiService };\n","import { Injectable } from '@angular/core';\nimport { DriveFolder } from './folders/models/driveFolder';\nimport { ROOT_FOLDER, RootFolder } from './folders/root-folder';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DriveUrlsService {\n    public driveRoot() {\n        return '/drive';\n    }\n\n    public folder(folder: DriveFolder|RootFolder) {\n        if (folder === ROOT_FOLDER) {\n            return this.driveRoot();\n        } else {\n            return `/drive/folders/${(folder as DriveFolder).hash}`;\n        }\n    }\n}\n","import { ROOT_FOLDER } from './folders/root-folder';\nimport * as i0 from \"@angular/core\";\nvar DriveUrlsService = /** @class */ (function () {\n    function DriveUrlsService() {\n    }\n    DriveUrlsService.prototype.driveRoot = function () {\n        return '/drive';\n    };\n    DriveUrlsService.prototype.folder = function (folder) {\n        if (folder === ROOT_FOLDER) {\n            return this.driveRoot();\n        }\n        else {\n            return \"/drive/folders/\" + folder.hash;\n        }\n    };\n    DriveUrlsService.ngInjectableDef = i0.defineInjectable({ factory: function DriveUrlsService_Factory() { return new DriveUrlsService(); }, token: DriveUrlsService, providedIn: \"root\" });\n    return DriveUrlsService;\n}());\nexport { DriveUrlsService };\n","import { DriveStateModel } from './drive-state-model';\r\nimport { ROOT_FOLDER_PAGE } from './drive-page';\r\n\r\nexport const DRIVE_STATE_MODEL_DEFAULTS: DriveStateModel = {\r\n    isMobile: false,\r\n    activePage: ROOT_FOLDER_PAGE,\r\n    folderTree: [],\r\n    flatFolders: {},\r\n    userFoldersLoaded: false,\r\n    entries: [],\r\n    selectedEntries: [],\r\n    dragging: false,\r\n    loading: false,\r\n    uploadsPanelOpen: false,\r\n    viewMode: 'grid' as 'grid'|'list',\r\n    detailsVisible: true,\r\n    sidebarOpen: true,\r\n    currentUser: null,\r\n    spaceUsage: {\r\n        available: null,\r\n        used: null,\r\n    },\r\n    meta: {\r\n        sortColumn: 'updated_at',\r\n        sortDirection: 'desc',\r\n        currentPage: 0,\r\n        lastPage: 0,\r\n    },\r\n};\r\n","import {Injectable} from '@angular/core';\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\nexport class LocalStorage {\r\n\r\n    /**\r\n     * JS LocalStorage instance.\r\n     */\r\n    private readonly storage;\r\n\r\n    /**\r\n     * LocalStorage Constructor.\r\n     */\r\n    constructor() {\r\n        if (this.localStorageAvailable()) {\r\n            this.storage = localStorage;\r\n        } else {\r\n            this.storage = null;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Retrieve specified item from local storage.\r\n     */\r\n    public get<T>(key: string, defaultValue?: T): any|T {\r\n        if ( ! this.storage) return defaultValue;\r\n\r\n        let value;\r\n        try { value = JSON.parse(this.storage.getItem(key)) } catch(e) {}\r\n\r\n        return value == null ? defaultValue : value;\r\n    }\r\n\r\n    /**\r\n     * Store specified item in local storage.\r\n     */\r\n    public set(key: string, value: any) {\r\n        if ( ! this.storage) return null;\r\n        this.storage.setItem(key, JSON.stringify(value));\r\n    }\r\n\r\n    /**\r\n     * Remove specified item from local storage.\r\n     */\r\n    public remove(key: string) {\r\n        if ( ! this.storage) return null;\r\n        this.storage.removeItem(key);\r\n    }\r\n\r\n    /**\r\n     * Check if local storage is available.\r\n     */\r\n    public localStorageAvailable(): boolean {\r\n        const test = 'test';\r\n\r\n        try {\r\n            localStorage.setItem(test, test);\r\n            localStorage.removeItem(test);\r\n            return true;\r\n        } catch(e) {\r\n            return false;\r\n        }\r\n    }\r\n}\r\n","import * as i0 from \"@angular/core\";\nvar LocalStorage = /** @class */ (function () {\n    /**\n     * LocalStorage Constructor.\n     */\n    function LocalStorage() {\n        if (this.localStorageAvailable()) {\n            this.storage = localStorage;\n        }\n        else {\n            this.storage = null;\n        }\n    }\n    /**\n     * Retrieve specified item from local storage.\n     */\n    LocalStorage.prototype.get = function (key, defaultValue) {\n        if (!this.storage)\n            return defaultValue;\n        var value;\n        try {\n            value = JSON.parse(this.storage.getItem(key));\n        }\n        catch (e) { }\n        return value == null ? defaultValue : value;\n    };\n    /**\n     * Store specified item in local storage.\n     */\n    LocalStorage.prototype.set = function (key, value) {\n        if (!this.storage)\n            return null;\n        this.storage.setItem(key, JSON.stringify(value));\n    };\n    /**\n     * Remove specified item from local storage.\n     */\n    LocalStorage.prototype.remove = function (key) {\n        if (!this.storage)\n            return null;\n        this.storage.removeItem(key);\n    };\n    /**\n     * Check if local storage is available.\n     */\n    LocalStorage.prototype.localStorageAvailable = function () {\n        var test = 'test';\n        try {\n            localStorage.setItem(test, test);\n            localStorage.removeItem(test);\n            return true;\n        }\n        catch (e) {\n            return false;\n        }\n    };\n    LocalStorage.ngInjectableDef = i0.defineInjectable({ factory: function LocalStorage_Factory() { return new LocalStorage(); }, token: LocalStorage, providedIn: \"root\" });\n    return LocalStorage;\n}());\nexport { LocalStorage };\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { UploadValidator } from 'common/uploads/validation/upload-validator';\nimport { FileSizeValidation } from 'common/uploads/validation/validations/file-size-validation';\nimport { convertToBytes } from 'common/core/utils/convertToBytes';\nimport { AllowedExtensionsValidation } from 'common/uploads/validation/validations/allowed-extensions-validation';\nimport { BlockedExtensionsValidation } from 'common/uploads/validation/validations/blocked-extensions-validation';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../../common/core/config/settings.service\";\nimport * as i2 from \"../../../common/core/ui/toast.service\";\nimport * as i3 from \"../../../common/core/translations/translations.service\";\nvar DriveUploadValidator = /** @class */ (function (_super) {\n    __extends(DriveUploadValidator, _super);\n    function DriveUploadValidator() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.DEFAULT_MAX_FILE_SIZE_MB = 8;\n        return _this;\n    }\n    DriveUploadValidator.prototype.initValidations = function () {\n        this.validations.push(new FileSizeValidation({ maxSize: this.getMaxFileSize() }, this.i18n));\n        var allowedExtensions = this.getAllowedExtensions(), blockedExtensions = this.getBlockedExtensions();\n        if (allowedExtensions && allowedExtensions.length) {\n            this.validations.push(new AllowedExtensionsValidation({ extensions: allowedExtensions }, this.i18n));\n        }\n        if (blockedExtensions && blockedExtensions.length) {\n            this.validations.push(new BlockedExtensionsValidation({ extensions: blockedExtensions }, this.i18n));\n        }\n    };\n    DriveUploadValidator.prototype.getMaxFileSize = function () {\n        return this.settings.get('uploads.max_size', convertToBytes(this.DEFAULT_MAX_FILE_SIZE_MB, 'MB'));\n    };\n    DriveUploadValidator.prototype.getAllowedExtensions = function () {\n        return this.settings.getJson('uploads.allowed_extensions');\n    };\n    DriveUploadValidator.prototype.getBlockedExtensions = function () {\n        return this.settings.getJson('uploads.blocked_extensions');\n    };\n    DriveUploadValidator.ngInjectableDef = i0.defineInjectable({ factory: function DriveUploadValidator_Factory() { return new DriveUploadValidator(i0.inject(i1.Settings), i0.inject(i2.Toast), i0.inject(i3.Translations)); }, token: DriveUploadValidator, providedIn: \"root\" });\n    return DriveUploadValidator;\n}(UploadValidator));\nexport { DriveUploadValidator };\n","import { Injectable } from '@angular/core';\nimport { UploadValidator } from 'common/uploads/validation/upload-validator';\nimport { FileSizeValidation } from 'common/uploads/validation/validations/file-size-validation';\nimport { convertToBytes } from 'common/core/utils/convertToBytes';\nimport { AllowedExtensionsValidation } from 'common/uploads/validation/validations/allowed-extensions-validation';\nimport { BlockedExtensionsValidation } from 'common/uploads/validation/validations/blocked-extensions-validation';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DriveUploadValidator extends UploadValidator {\n    protected readonly DEFAULT_MAX_FILE_SIZE_MB = 8;\n\n    protected initValidations() {\n        this.validations.push(\n            new FileSizeValidation(\n                {maxSize: this.getMaxFileSize()},\n                this.i18n\n            )\n        );\n\n        const allowedExtensions = this.getAllowedExtensions(),\n            blockedExtensions = this.getBlockedExtensions();\n\n        if (allowedExtensions && allowedExtensions.length) {\n            this.validations.push(new AllowedExtensionsValidation(\n                {extensions: allowedExtensions}, this.i18n\n            ));\n        }\n\n        if (blockedExtensions && blockedExtensions.length) {\n            this.validations.push(new BlockedExtensionsValidation(\n                {extensions: blockedExtensions}, this.i18n\n            ));\n        }\n    }\n\n    protected getMaxFileSize(): number {\n        return this.settings.get(\n            'uploads.max_size',\n            convertToBytes(this.DEFAULT_MAX_FILE_SIZE_MB, 'MB')\n        );\n    }\n\n    protected getAllowedExtensions() {\n        return this.settings.getJson('uploads.allowed_extensions');\n    }\n\n    protected getBlockedExtensions() {\n        return this.settings.getJson('uploads.blocked_extensions');\n    }\n}\n","var __assign = (this && this.__assign) || Object.assign || function(t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n        s = arguments[i];\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n            t[p] = s[p];\n    }\n    return t;\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { Action, Selector, State, Store } from '@ngxs/store';\nimport { FoldersApiService } from '../folders/api/folders-api.service';\nimport { finalize, tap } from 'rxjs/operators';\nimport { DriveEntryApiService } from '../drive-entry-api.service';\nimport { Router } from '@angular/router';\nimport { DriveUrlsService } from '../drive-urls.service';\nimport { RouterState } from '@ngxs/router-plugin';\nimport isEqual from 'lodash/isEqual';\nimport { AddEntries, BuildFolderTree, DeleteSelectedEntries, DeleteTrashedEntriesForever, DeselectAllEntries, EmptyTrash, LoadUserFolders, MoveEntries, OpenConfirmDialog, OpenFolder, OpenUploadsPanel, RestoreTrashedEntries, SelectEntries, ToggleDetailsSidebar, SetViewMode, UploadFiles, OpenFilePreview, AddStar, RemoveStar, RemoveEntries, OpenSearchPage, LoadMoreEntries, ReloadPageEntries, ToggleSidebar, CopySelectedEntries, OpenUploadWindow, LoadUserSpaceUsage, ShowLoadingToast, HideLoadingToast, ResetState, UpdateEntries, SelectAllEntries, SetCurrentUser, } from './actions/commands';\nimport { EntryRenamed, EntryContextMenuOpened, FileDeleteSuccess, EntryDoubleTapped, EntrySelectedViaContextMenu, EntriesSelectedViaDrag, EntryTapped, FolderPageOpened, MoveEntriesFailed, MoveEntriesSuccess, NewFolderCreated, RecentEntriesPageOpened, SearchPageOpened, SharesFolderOpened, StarredPageOpened, StartedDragging, StoppedDragging, TrashedEntriesDeleteSuccess, TrashedEntriesRestoreSuccess, TrashPageOpened, UserSpaceUsageChanged, NotEnoughSpaceError, BreakpointChanged } from './actions/events';\nimport { VIEW_MODE_KEY } from './models/drive-state-model';\nimport { DRIVE_STATE_MODEL_DEFAULTS } from './models/drive-state-model-defaults';\nimport { LocalStorage } from 'common/core/services/local-storage.service';\nimport { ROOT_FOLDER } from '../folders/root-folder';\nimport { UploadQueueService } from 'common/uploads/upload-queue/upload-queue.service';\nimport { DriveUploadValidator } from '../uploads/drive-upload-validator';\nimport { openUploadWindow } from 'common/uploads/utils/open-upload-window';\nimport { LoadingToastMessages } from '../messages/loading-toast/loading-toast-messages';\nimport { User } from 'common/core/types/models/User';\nimport { DrivePage, TRASH_PAGE } from './models/drive-page';\nvar DriveState = /** @class */ (function () {\n    function DriveState(foldersApi, entriesApi, router, driveUrls, uploads, store, localStore, validator, uploadInputConfig) {\n        this.foldersApi = foldersApi;\n        this.entriesApi = entriesApi;\n        this.router = router;\n        this.driveUrls = driveUrls;\n        this.uploads = uploads;\n        this.store = store;\n        this.localStore = localStore;\n        this.validator = validator;\n        this.uploadInputConfig = uploadInputConfig;\n    }\n    DriveState_1 = DriveState;\n    DriveState.flatFolders = function (state) {\n        return state.flatFolders;\n    };\n    DriveState.userFoldersLoaded = function (state) {\n        return state.userFoldersLoaded;\n    };\n    DriveState.activePage = function (state) {\n        return state.activePage;\n    };\n    DriveState.activePageName = function (state) {\n        return state.activePage.name;\n    };\n    DriveState.userFolders = function (state) {\n        return state.folderTree;\n    };\n    DriveState.selectedEntries = function (state) {\n        return state.selectedEntries;\n    };\n    DriveState.selectedEntryIds = function (state, selectedEntries) {\n        return selectedEntries.map(function (entry) { return entry.id; });\n    };\n    DriveState.selectedEntry = function (state, selected) {\n        return selected ? selected[selected.length - 1] : null;\n    };\n    DriveState.selectedEntryOrActiveFolder = function (state, selected) {\n        return selected || state.activePage.folder;\n    };\n    DriveState.selectedEntryParent = function (state, selected, folders) {\n        if (!selected || !folders || !selected.parent_id)\n            return ROOT_FOLDER;\n        return folders[selected.parent_id];\n    };\n    DriveState.anythingSelected = function (state, selectedEntries) {\n        return selectedEntries.length > 0;\n    };\n    DriveState.allSelectedEntriesStarred = function (state, selectedEntries) {\n        return selectedEntries.every(function (entry) { return !!entry.tags.find(function (tag) { return tag.name === 'starred'; }); });\n    };\n    DriveState.onlyFoldersSelected = function (state, selectedEntries) {\n        return selectedEntries.every(function (entry) { return entry.type === 'folder'; });\n    };\n    DriveState.entries = function (state) {\n        return state.entries;\n    };\n    DriveState.entriesEmpty = function (state) {\n        // only return true if entries have already loaded\n        return state.meta.currentPage && !state.loading && state.entries.length === 0;\n    };\n    DriveState.multipleEntriesSelected = function (state, selectedEntries) {\n        return selectedEntries.length > 1;\n    };\n    DriveState.activeFolder = function (state) {\n        return state.activePage.folder;\n    };\n    DriveState.selectedFolderId = function (state, selectedEntries) {\n        var folder = selectedEntries.filter(function (entry) { return entry.type === 'folder'; })[0];\n        return folder ? folder.id : null;\n    };\n    DriveState.meta = function (state) {\n        return state.meta;\n    };\n    DriveState.dragging = function (state) {\n        return state.dragging;\n    };\n    DriveState.loading = function (state) {\n        return state.loading;\n    };\n    DriveState.currentPage = function (state) {\n        return state.meta.currentPage;\n    };\n    DriveState.viewMode = function (state) {\n        return state.viewMode;\n    };\n    DriveState.detailsOpen = function (state) {\n        return state.detailsVisible;\n    };\n    DriveState.sidebarOpen = function (state) {\n        return state.sidebarOpen;\n    };\n    DriveState.sortColumn = function (state) {\n        return state.meta.sortColumn;\n    };\n    DriveState.sortDirection = function (state) {\n        return state.meta.sortDirection;\n    };\n    DriveState.canLoadMoreEntries = function (state) {\n        return state.meta.currentPage < state.meta.lastPage;\n    };\n    DriveState.userSpaceUsed = function (state) {\n        return state.spaceUsage.used;\n    };\n    DriveState.userSpaceAvailable = function (state) {\n        return state.spaceUsage.available;\n    };\n    DriveState.spaceUsedPercent = function (state, spaceUsed, spaceAvail) {\n        return (spaceUsed * 100) / spaceAvail;\n    };\n    DriveState.isMobile = function (state) {\n        return state.isMobile;\n    };\n    DriveState.userHasPermission = function (permission, folder, user) {\n        // we are not in a folder view, can bail\n        if (!folder || !user)\n            return false;\n        if (folder.id === 'root')\n            return true;\n        // check if user is the owner of currently open folder\n        var folderUser = folder.users.find(function (u) { return u.id === user.id; });\n        if (folderUser.owns_entry)\n            return true;\n        return folderUser.entry_permissions[permission];\n    };\n    DriveState.currentUser = function (state) {\n        return state.currentUser;\n    };\n    DriveState.userOwnsActiveFolder = function (state, activeFolder, currentUser) {\n        return DriveState_1.userHasPermission('owner', activeFolder, currentUser);\n    };\n    DriveState.userCanEditSelectedFolder = function (state, activeFolder, currentUser) {\n        return DriveState_1.userHasPermission('edit', activeFolder, currentUser);\n    };\n    DriveState.userCanEditSelectedEntries = function (state, entries, currentUser) {\n        return entries.every(function (entry) {\n            var user = entry.users.find(function (u) { return u.id === currentUser.id; });\n            return user && (user.owns_entry || user.entry_permissions.edit);\n        });\n    };\n    DriveState.canUpload = function (state, page, userCanEditFolder) {\n        return page.folder && userCanEditFolder;\n    };\n    DriveState.prototype.loadUserFolders = function (ctx) {\n        return this.foldersApi.getAllForCurrentUser().pipe(tap(function (response) {\n            return ctx.dispatch(new BuildFolderTree(response.folders));\n        }));\n    };\n    DriveState.prototype.buildFolderTree = function (ctx, action) {\n        var hashTable = {};\n        var tree = [];\n        if (action.folders) {\n            for (var i = 0, len = action.folders.length; i < len; i++) {\n                var folder = action.folders[i];\n                hashTable[folder.id] = folder;\n            }\n        }\n        else {\n            hashTable = ctx.getState().flatFolders;\n        }\n        for (var id in hashTable) {\n            if (!hashTable.hasOwnProperty(id))\n                continue;\n            var folder = hashTable[id];\n            // clear children from previous builds, to prevent duplicates\n            folder.children = [];\n            if (folder.parent_id) {\n                var parent_1 = hashTable[folder.parent_id];\n                if (parent_1) {\n                    if (!parent_1.children)\n                        parent_1.children = [];\n                    parent_1.children.push(folder);\n                }\n            }\n            else {\n                tree.push(folder);\n            }\n        }\n        ctx.patchState({\n            folderTree: tree,\n            flatFolders: hashTable,\n            userFoldersLoaded: true,\n        });\n    };\n    DriveState.prototype.loadDriveEntries = function (ctx, action) {\n        var oldState = ctx.getState(), newState = { loading: true, meta: __assign({}, oldState.meta) };\n        // only replace active page if it's actually specified, this way\n        // \"Reload\" and \"LoadMore\" actions will not remove active page\n        newState.activePage = action.page ? action.page : oldState.activePage;\n        // set sorting from specified query params or specified page or currently active page\n        newState.meta.sortColumn = action.queryParams.orderBy || newState.activePage.sortColumn;\n        newState.meta.sortDirection = action.queryParams.orderDir || newState.activePage.sortDirection;\n        // if it's not search page, clear type and query\n        if (newState.activePage.name !== 'search') {\n            newState.meta.query = null;\n            newState.meta.type = null;\n        }\n        newState.meta.query = action.queryParams.query || newState.meta.query;\n        newState.meta.type = action.queryParams.type || newState.meta.type;\n        ctx.patchState(newState);\n        var params = this.transformQueryParams(action.queryParams);\n        return this.entriesApi.getEntriesForFolder(params).pipe(tap(function (response) {\n            var entries = action.loadMore ? oldState.entries : [];\n            var state = {\n                entries: entries.concat(response.data),\n                meta: __assign({}, newState.meta, { lastPage: response.last_page, currentPage: response.current_page }),\n                loading: false\n            };\n            // make sure \"root\" page folder is not overridden, it's\n            // a static constant, so is not returned from backend\n            if (newState.activePage.name !== 'root') {\n                state.activePage = __assign({}, newState.activePage, { folder: response.folder });\n            }\n            return ctx.patchState(state);\n        }, function () {\n            return ctx.patchState({ loading: false });\n        }));\n    };\n    DriveState.prototype.openFolder = function (ctx, action) {\n        var currentFolder = ctx.getState().activePage.folder;\n        if (currentFolder && action.folder.id === currentFolder.id)\n            return;\n        if (action.folder && action.folder['deleted_at']) {\n            return ctx.dispatch(new OpenConfirmDialog({\n                title: 'Folder is in trash',\n                body: 'To view this folder, you need to restore it first.',\n                ok: 'Restore'\n            }, new RestoreTrashedEntries()));\n        }\n        else {\n            ctx.patchState({ loading: true });\n            return this.router.navigate([this.driveUrls.folder(action.folder)]);\n        }\n    };\n    DriveState.prototype.openSearchPage = function (ctx, action) {\n        var oldParams = this.store.selectSnapshot(RouterState.state).root.queryParams;\n        if (isEqual(oldParams, action.queryParams))\n            return;\n        ctx.patchState({ loading: true });\n        return this.router.navigate(['/drive/search'], { queryParams: action.queryParams });\n    };\n    DriveState.prototype.selectEntries = function (ctx, action) {\n        ctx.patchState({ selectedEntries: action.entries });\n    };\n    DriveState.prototype.deselectAllEntries = function (ctx) {\n        if (!ctx.getState().selectedEntries.length)\n            return;\n        ctx.patchState({ selectedEntries: [] });\n    };\n    DriveState.prototype.SelectAllEntries = function (ctx) {\n        ctx.patchState({ selectedEntries: ctx.getState().entries.slice() });\n    };\n    DriveState.prototype.entryTapped = function (ctx, action) {\n        var current = ctx.getState().selectedEntries;\n        var alreadySelected = false;\n        // remove entry with matching ID (if exists) to avoid duplicates\n        var i = current.findIndex(function (curr) { return curr.id === action.entry.id; });\n        if (i > -1) {\n            current.splice(i, 1);\n            alreadySelected = true;\n        }\n        if (action.ctrlKey) {\n            if (alreadySelected) {\n                ctx.patchState({ selectedEntries: current });\n            }\n            else {\n                ctx.patchState({ selectedEntries: current.concat([action.entry]) });\n            }\n        }\n        else {\n            ctx.patchState({ selectedEntries: [action.entry] });\n        }\n    };\n    DriveState.prototype.entryDoubleTapped = function (ctx, action) {\n        if (action.entry.type === 'folder') {\n            return ctx.dispatch(new OpenFolder(action.entry));\n        }\n        else {\n            return ctx.dispatch(new OpenFilePreview([action.entry]));\n        }\n    };\n    DriveState.prototype.deleteSelectedEntries = function (ctx) {\n        var _this = this;\n        var entries = this.store.selectSnapshot(DriveState_1.selectedEntries), entryIds = this.store.selectSnapshot(DriveState_1.selectedEntryIds), flatFolders = this.store.selectSnapshot(DriveState_1.flatFolders), activePage = ctx.getState().activePage;\n        return this.entriesApi.delete({ entryIds: entryIds }).pipe(tap(function () {\n            // filter out deleted entries\n            var newEntries = ctx.getState().entries\n                .filter(function (entry) { return entryIds.indexOf(entry.id) === -1; });\n            var newState = { entries: newEntries }, actions = [new FileDeleteSuccess(entries)];\n            // clear selected entries\n            newState.selectedEntries = [];\n            // if selected folder was active, navigate to its parent\n            if (activePage.folder && entryIds.indexOf(activePage.folder.id) > -1) {\n                _this.store.dispatch(new OpenFolder(_this.store.selectSnapshot(DriveState_1.selectedEntryParent)));\n            }\n            // rebuild folders tree\n            var folders = entries.filter(function (entry) { return entry.type === 'folder'; });\n            if (folders.length) {\n                folders.forEach(function (folder) { return delete flatFolders[folder.id]; });\n                newState.flatFolders = flatFolders;\n                actions.push(new BuildFolderTree());\n            }\n            ctx.patchState(newState);\n            return ctx.dispatch(actions);\n        }));\n    };\n    DriveState.prototype.fileContextMenuOpened = function (ctx, action) {\n        if (!action.entry)\n            return;\n        var fileAlreadySelected = ctx.getState().selectedEntries\n            .find(function (entry) { return entry.id === action.entry.id; });\n        if (!fileAlreadySelected) {\n            return ctx.dispatch(new EntrySelectedViaContextMenu([action.entry]));\n        }\n    };\n    DriveState.prototype.newFolderCreated = function (ctx, action) {\n        var _a;\n        var state = ctx.getState(), newFolderId = action.folder.parent_id || 'root';\n        // start new folder into user folders cache\n        var newState = {\n            flatFolders: __assign({}, state.flatFolders, (_a = {}, _a[action.folder.id] = action.folder, _a))\n        };\n        // push new folder into parent folder entries, if parent is currently open\n        if (newFolderId === state.activePage.folder.id) {\n            newState.entries = [action.folder].concat(state.entries);\n        }\n        ctx.patchState(newState);\n        // rebuild folder tree\n        return ctx.dispatch(new BuildFolderTree());\n    };\n    DriveState.prototype.entryRenamed = function (ctx, action) {\n        var state = ctx.getState(), newState = { entries: state.entries.slice() }, i = newState.entries.findIndex(function (curr) { return curr.id === action.entry.id; });\n        // rename entry inside main entries array\n        if (i > -1) {\n            newState.entries[i] = __assign({}, newState.entries[i], { name: action.newName });\n        }\n        // rename entry inside selected entries array\n        newState.selectedEntries = [__assign({}, state.selectedEntries[0], { name: action.newName })];\n        // rename active folder\n        if (state.activePage.folder && state.activePage.folder.id === action.entry.id) {\n            newState.activePage = __assign({}, state.activePage, { folder: action.entry });\n        }\n        // rebuild folder tree\n        if (action.entry.type === 'folder') {\n            var flatFolders = __assign({}, state.flatFolders);\n            flatFolders[action.entry.id].name = action.newName;\n            newState.flatFolders = flatFolders;\n            ctx.dispatch(new BuildFolderTree());\n        }\n        ctx.patchState(newState);\n    };\n    DriveState.prototype.startedDragging = function (ctx) {\n        ctx.patchState({ dragging: true });\n    };\n    DriveState.prototype.stoppedDragging = function (ctx) {\n        ctx.patchState({ dragging: false });\n    };\n    DriveState.prototype.movieEntries = function (ctx, action) {\n        var selected = ctx.getState().selectedEntries;\n        ctx.dispatch(new ShowLoadingToast(LoadingToastMessages.moveEntries));\n        var minimal = selected.map(function (entry) {\n            return { id: entry.id, type: entry.type === 'folder' ? 'folder' : 'file' };\n        });\n        return this.entriesApi.moveEntries({ entries: minimal, destination: action.destination }).pipe(finalize(function () { return ctx.dispatch(new HideLoadingToast()); }), tap(function (response) {\n            return ctx.dispatch(new MoveEntriesSuccess(action.destination, response.entries));\n        }, function (error) {\n            return ctx.dispatch(new MoveEntriesFailed(error.messages));\n        }));\n    };\n    DriveState.prototype.moveEntriesSuccess = function (ctx, action) {\n        var state = ctx.getState(), entryIds = action.entries.map(function (entry) { return entry.id; }), folders = action.entries.filter(function (entry) { return entry.type === 'folder'; });\n        // remove moved entries from old folder\n        var newState = {\n            selectedEntries: [],\n            entries: state.entries.filter(function (entry) { return entryIds.indexOf(entry.id) === -1; })\n        };\n        // rebuild folder tree\n        if (folders.length) {\n            newState.flatFolders = __assign({}, state.flatFolders);\n            action.entries\n                .filter(function (entry) { return entry.type === 'folder'; })\n                .forEach(function (entry) { return newState.flatFolders[entry.id] = entry; });\n        }\n        // update active folder\n        if (state.activePage.folder) {\n            var folder = action.entries.find(function (entry) { return state.activePage.folder.id === entry.id; });\n            if (folder)\n                newState.activePage = __assign({}, state.activePage, { folder: folder });\n        }\n        ctx.patchState(newState);\n        return ctx.dispatch(new BuildFolderTree());\n    };\n    DriveState.prototype.toggleViewMode = function (ctx, action) {\n        var current = ctx.getState().viewMode, viewMode = action.mode || current === 'list' ? 'grid' : 'list';\n        this.localStore.set(VIEW_MODE_KEY, viewMode);\n        ctx.patchState({ viewMode: viewMode });\n    };\n    DriveState.prototype.toggleDetailsSidebar = function (ctx) {\n        ctx.patchState({\n            detailsVisible: !ctx.getState().detailsVisible\n        });\n    };\n    DriveState.prototype.toggleSidebar = function (ctx) {\n        ctx.patchState({\n            sidebarOpen: !ctx.getState().sidebarOpen\n        });\n    };\n    DriveState.prototype.addEntries = function (ctx, action) {\n        var currentEntries = ctx.getState().entries, spaceUsage = ctx.getState().spaceUsage;\n        var newEntries = action.entries\n            .filter(function (entry) { return !currentEntries.find(function (curr) { return curr.id === entry.id; }); });\n        var newSize = newEntries.filter(function (entry) { return entry.type !== 'folder'; })\n            .reduce(function (sum, entry) { return sum + entry.file_size; }, 0);\n        ctx.patchState({\n            entries: newEntries.concat(currentEntries),\n            spaceUsage: __assign({}, spaceUsage, { used: spaceUsage.used + newSize })\n        });\n    };\n    DriveState.prototype.uploadFiles = function (ctx, action) {\n        if (!this.enoughSpaceLeftToUpload(ctx.getState().spaceUsage, action.files)) {\n            return ctx.dispatch(new NotEnoughSpaceError());\n        }\n        if (!action.files.length)\n            return;\n        ctx.dispatch(new OpenUploadsPanel());\n        var state = ctx.getState(), folder = state.activePage.folder, parentId = (folder && folder !== ROOT_FOLDER) ? folder.id : null;\n        var config = {\n            httpParams: { parentId: parentId },\n            validator: this.validator,\n        };\n        return this.uploads.start(action.files, config).pipe(tap(function (entry) {\n            // get parent folders, if user has uploaded folders and not single files\n            var entries = [entry.parent, entry];\n            // remove all entries that are not direct child of currently open folder\n            var newEntries = entries\n                .filter(function (newEntry) { return newEntry && newEntry.parent_id === parentId; });\n            // add newly uploaded files and created folders\n            ctx.dispatch(new AddEntries(newEntries));\n            // rebuild folder tree, if there are any folders\n            var folders = entries.filter(function (entry) { return entry && entry.type === 'folder'; });\n            if (folders.length) {\n                var flatFolders_1 = __assign({}, ctx.getState().flatFolders);\n                folders.forEach(function (f) { return flatFolders_1[f.id] = f; });\n                ctx.patchState({ flatFolders: flatFolders_1 });\n                ctx.dispatch(new BuildFolderTree());\n            }\n        }));\n    };\n    DriveState.prototype.deleteTrashedEntriesForever = function (ctx) {\n        var selectedEntries = this.store.selectSnapshot(DriveState_1.selectedEntries), entryIds = selectedEntries.map(function (entry) { return entry.id; });\n        var newEntries = ctx.getState().entries\n            .filter(function (entry) { return entryIds.indexOf(entry.id) === -1; });\n        return this.entriesApi.delete({ entryIds: entryIds, deleteForever: true }).pipe(tap(function () {\n            ctx.patchState({\n                entries: newEntries,\n                selectedEntries: [],\n            });\n            return ctx.dispatch([\n                new TrashedEntriesDeleteSuccess(selectedEntries),\n                new UserSpaceUsageChanged(),\n            ]);\n        }));\n    };\n    DriveState.prototype.restoreTrashedEntries = function (ctx, action) {\n        var activePage = this.store.selectSnapshot(DriveState_1.activePage);\n        var restoredEntries = action.entries || this.store.selectSnapshot(DriveState_1.selectedEntries);\n        var entryIds = restoredEntries.map(function (entry) { return entry.id; });\n        var newEntries;\n        if (activePage === TRASH_PAGE) {\n            newEntries = ctx.getState().entries\n                .filter(function (entry) { return entryIds.indexOf(entry.id) === -1; });\n        }\n        else {\n            newEntries = ctx.getState().entries.concat(action.entries);\n        }\n        return this.entriesApi.restore({ entryIds: entryIds }).pipe(tap(function () {\n            ctx.patchState({\n                entries: newEntries,\n                selectedEntries: [],\n            });\n            return ctx.dispatch(new TrashedEntriesRestoreSuccess(restoredEntries));\n        }));\n    };\n    DriveState.prototype.emptyTrash = function (ctx) {\n        ctx.dispatch(new ShowLoadingToast(LoadingToastMessages.emptyTrash));\n        return this.entriesApi.emptyTrash().pipe(finalize(function () { return ctx.dispatch(new HideLoadingToast()); }), tap(function () {\n            ctx.patchState({\n                entries: [],\n                selectedEntries: [],\n            });\n            return ctx.dispatch(new UserSpaceUsageChanged());\n        }));\n    };\n    DriveState.prototype.addStar = function (ctx, action) {\n        var state = ctx.getState(), ids = action.entries.map(function (entry) { return entry.id; });\n        return this.entriesApi.addStar(ids).pipe(tap(function (response) {\n            var newEntries = state.entries.map(function (entry) {\n                if (ids.indexOf(entry.id) > -1) {\n                    if (!entry.tags)\n                        entry.tags = [];\n                    entry.tags.push(response.tag);\n                }\n                return entry;\n            });\n            var selectedEntries = state.selectedEntries.map(function (entry) {\n                entry.tags.push(response.tag);\n                return entry;\n            });\n            ctx.patchState({\n                entries: newEntries,\n                selectedEntries: selectedEntries,\n            });\n        }));\n    };\n    DriveState.prototype.removeStar = function (ctx, action) {\n        var _this = this;\n        var state = ctx.getState(), ids = action.entries.map(function (entry) { return entry.id; });\n        return this.entriesApi.removeStar(ids).pipe(tap(function (response) {\n            var newEntries = state.entries.map(function (entry) {\n                if (ids.indexOf(entry.id) > -1)\n                    _this.removeTag(entry, response.tag);\n                return entry;\n            });\n            var selectedEntries = state.selectedEntries\n                .map(function (entry) { return _this.removeTag(entry, response.tag); });\n            ctx.patchState({\n                entries: newEntries,\n                selectedEntries: selectedEntries\n            });\n        }));\n    };\n    DriveState.prototype.removeSelectedEntries = function (ctx, action) {\n        var ids = action.entries.map(function (entry) { return entry.id; });\n        var newEntries = ctx.getState().entries\n            .filter(function (entry) { return ids.indexOf(entry.id) === -1; });\n        ctx.patchState({\n            entries: newEntries\n        });\n    };\n    DriveState.prototype.copySelectedEntries = function (ctx) {\n        var entries = this.store.selectSnapshot(DriveState_1.selectedEntries), entryIds = entries.map(function (entry) { return entry.id; }), folders = entries.filter(function (entry) { return entry.type === 'folder'; }), oldState = ctx.getState();\n        ctx.dispatch(new ShowLoadingToast(LoadingToastMessages.copyEntries));\n        return this.entriesApi.copy({ entryIds: entryIds }).pipe(finalize(function () { return ctx.dispatch(new HideLoadingToast()); }), tap(function (response) {\n            var newState = {};\n            // show copied entries, if we are in a folder view\n            if (ctx.getState().activePage.folder) {\n                newState.entries = oldState.entries.concat(response.entries);\n            }\n            // rebuild folder tree\n            if (folders.length) {\n                newState.flatFolders = __assign({}, oldState.flatFolders);\n                response.entries\n                    .filter(function (folder) { return folder.type === 'folder'; })\n                    .forEach(function (folder) { return newState.flatFolders[folder.id] = folder; });\n            }\n            ctx.patchState(newState);\n            // update user space usage\n            ctx.dispatch(new UserSpaceUsageChanged());\n            // rebuild folder tree\n            if (folders.length)\n                ctx.dispatch(new BuildFolderTree());\n        }));\n    };\n    DriveState.prototype.openUploadWindow = function (ctx, action) {\n        var config = __assign({}, this.uploadInputConfig, { directory: action.type === 'directory' });\n        openUploadWindow(config).then(function (files) {\n            if (!files || !files.length)\n                return;\n            ctx.dispatch(new UploadFiles(files));\n        });\n    };\n    DriveState.prototype.loadUserSpaceUsage = function (ctx) {\n        return this.entriesApi.getSpaceUsage().pipe(tap(function (spaceUsage) {\n            ctx.patchState({ spaceUsage: { used: spaceUsage.used, available: spaceUsage.available } });\n        }));\n    };\n    DriveState.prototype.updateEntries = function (ctx, action) {\n        var entries = ctx.getState().entries;\n        action.entries.forEach(function (updatedEntry) {\n            var i = entries.findIndex(function (entry) { return updatedEntry.id === entry.id; });\n            entries[i] = __assign({}, entries[i], updatedEntry);\n        });\n        ctx.patchState({ entries: entries });\n    };\n    DriveState.prototype.breakpointChanged = function (ctx, action) {\n        ctx.patchState({\n            isMobile: action.status.isMobile,\n            sidebarOpen: !action.status.isMobile,\n            detailsVisible: !action.status.isMobile,\n        });\n    };\n    DriveState.prototype.setCurrentUser = function (ctx, action) {\n        ctx.patchState({ currentUser: action.user });\n    };\n    DriveState.prototype.resetState = function (ctx) {\n        ctx.setState(__assign({}, DRIVE_STATE_MODEL_DEFAULTS, { viewMode: ctx.getState().viewMode }));\n    };\n    DriveState.prototype.transformQueryParams = function (params) {\n        var page = this.store.selectSnapshot(DriveState_1.activePage), meta = this.store.selectSnapshot(DriveState_1.meta);\n        var queryParams = __assign({ orderBy: meta.sortColumn, orderDir: meta.sortDirection }, params);\n        if (page.folderHash)\n            queryParams.folderId = page.folderHash;\n        if (meta.query)\n            queryParams.query = meta.query;\n        if (meta.type)\n            queryParams.type = meta.type;\n        return queryParams;\n    };\n    /**\n     * Check if user has enough space left to upload all specified files.\n     */\n    DriveState.prototype.enoughSpaceLeftToUpload = function (spaceUsage, files) {\n        var newSize = files.reduce(function (sum, file) { return sum + file.size; }, 0), currentlyUsing = spaceUsage.used, availableSpace = spaceUsage.available;\n        return (newSize + currentlyUsing) < availableSpace;\n    };\n    DriveState.prototype.removeTag = function (entry, tag) {\n        var i = entry.tags.findIndex(function (t) { return t.id === tag.id; });\n        entry.tags.splice(i, 1);\n        return entry;\n    };\n    var DriveState_1;\n    __decorate([\n        Action(LoadUserFolders),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"loadUserFolders\", null);\n    __decorate([\n        Action(BuildFolderTree),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, BuildFolderTree]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"buildFolderTree\", null);\n    __decorate([\n        Action(FolderPageOpened),\n        Action(RecentEntriesPageOpened),\n        Action(TrashPageOpened),\n        Action(StarredPageOpened),\n        Action(SearchPageOpened),\n        Action(SharesFolderOpened),\n        Action(ReloadPageEntries),\n        Action(LoadMoreEntries),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"loadDriveEntries\", null);\n    __decorate([\n        Action(OpenFolder, { cancelUncompleted: true }),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, OpenFolder]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"openFolder\", null);\n    __decorate([\n        Action(OpenSearchPage, { cancelUncompleted: true }),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, OpenSearchPage]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"openSearchPage\", null);\n    __decorate([\n        Action(EntriesSelectedViaDrag),\n        Action(EntrySelectedViaContextMenu),\n        Action(SelectEntries),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"selectEntries\", null);\n    __decorate([\n        Action(DeselectAllEntries),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"deselectAllEntries\", null);\n    __decorate([\n        Action(SelectAllEntries),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"SelectAllEntries\", null);\n    __decorate([\n        Action(EntryTapped),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, EntryTapped]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"entryTapped\", null);\n    __decorate([\n        Action(EntryDoubleTapped),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, EntryDoubleTapped]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"entryDoubleTapped\", null);\n    __decorate([\n        Action(DeleteSelectedEntries),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"deleteSelectedEntries\", null);\n    __decorate([\n        Action(EntryContextMenuOpened),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, EntryContextMenuOpened]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"fileContextMenuOpened\", null);\n    __decorate([\n        Action(NewFolderCreated),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, NewFolderCreated]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"newFolderCreated\", null);\n    __decorate([\n        Action(EntryRenamed),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, EntryRenamed]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"entryRenamed\", null);\n    __decorate([\n        Action(StartedDragging),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"startedDragging\", null);\n    __decorate([\n        Action(StoppedDragging),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"stoppedDragging\", null);\n    __decorate([\n        Action(MoveEntries),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, MoveEntries]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"movieEntries\", null);\n    __decorate([\n        Action(MoveEntriesSuccess),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, MoveEntriesSuccess]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"moveEntriesSuccess\", null);\n    __decorate([\n        Action(SetViewMode),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, SetViewMode]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"toggleViewMode\", null);\n    __decorate([\n        Action(ToggleDetailsSidebar),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"toggleDetailsSidebar\", null);\n    __decorate([\n        Action(ToggleSidebar),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"toggleSidebar\", null);\n    __decorate([\n        Action(AddEntries),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, AddEntries]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"addEntries\", null);\n    __decorate([\n        Action(UploadFiles),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, UploadFiles]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"uploadFiles\", null);\n    __decorate([\n        Action(DeleteTrashedEntriesForever),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"deleteTrashedEntriesForever\", null);\n    __decorate([\n        Action(RestoreTrashedEntries),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, RestoreTrashedEntries]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"restoreTrashedEntries\", null);\n    __decorate([\n        Action(EmptyTrash, { cancelUncompleted: true }),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"emptyTrash\", null);\n    __decorate([\n        Action(AddStar, { cancelUncompleted: true }),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, AddStar]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"addStar\", null);\n    __decorate([\n        Action(RemoveStar, { cancelUncompleted: true }),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, RemoveStar]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"removeStar\", null);\n    __decorate([\n        Action(RemoveEntries),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, RemoveEntries]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"removeSelectedEntries\", null);\n    __decorate([\n        Action(CopySelectedEntries),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"copySelectedEntries\", null);\n    __decorate([\n        Action(OpenUploadWindow),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, OpenUploadWindow]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"openUploadWindow\", null);\n    __decorate([\n        Action(LoadUserSpaceUsage),\n        Action(UserSpaceUsageChanged),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"loadUserSpaceUsage\", null);\n    __decorate([\n        Action(UpdateEntries),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, UpdateEntries]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"updateEntries\", null);\n    __decorate([\n        Action(BreakpointChanged),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, BreakpointChanged]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"breakpointChanged\", null);\n    __decorate([\n        Action(SetCurrentUser),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, SetCurrentUser]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"setCurrentUser\", null);\n    __decorate([\n        Action(ResetState),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"resetState\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"flatFolders\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"userFoldersLoaded\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"activePage\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"activePageName\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"userFolders\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"selectedEntries\", null);\n    __decorate([\n        Selector([DriveState_1.selectedEntries]),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, Array]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"selectedEntryIds\", null);\n    __decorate([\n        Selector([DriveState_1.selectedEntries]),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, Array]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"selectedEntry\", null);\n    __decorate([\n        Selector([DriveState_1.selectedEntry]),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, Array]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"selectedEntryOrActiveFolder\", null);\n    __decorate([\n        Selector([DriveState_1.selectedEntryOrActiveFolder, DriveState_1.flatFolders]),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, Object, Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"selectedEntryParent\", null);\n    __decorate([\n        Selector([DriveState_1.selectedEntries]),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, Array]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"anythingSelected\", null);\n    __decorate([\n        Selector([DriveState_1.selectedEntries]),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, Array]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"allSelectedEntriesStarred\", null);\n    __decorate([\n        Selector([DriveState_1.selectedEntries]),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, Array]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"onlyFoldersSelected\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"entries\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"entriesEmpty\", null);\n    __decorate([\n        Selector([DriveState_1.selectedEntries]),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, Array]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"multipleEntriesSelected\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"activeFolder\", null);\n    __decorate([\n        Selector([DriveState_1.selectedEntries]),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, Array]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"selectedFolderId\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"meta\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"dragging\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"loading\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"currentPage\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"viewMode\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"detailsOpen\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"sidebarOpen\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"sortColumn\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"sortDirection\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"canLoadMoreEntries\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"userSpaceUsed\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"userSpaceAvailable\", null);\n    __decorate([\n        Selector([DriveState_1.userSpaceUsed, DriveState_1.userSpaceAvailable]),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, Number, Number]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"spaceUsedPercent\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"isMobile\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"currentUser\", null);\n    __decorate([\n        Selector([DriveState_1.activeFolder, DriveState_1.currentUser]),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, Object, User]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"userOwnsActiveFolder\", null);\n    __decorate([\n        Selector([DriveState_1.activeFolder, DriveState_1.currentUser]),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, Object, User]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"userCanEditSelectedFolder\", null);\n    __decorate([\n        Selector([DriveState_1.selectedEntries, DriveState_1.currentUser]),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, Array, User]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"userCanEditSelectedEntries\", null);\n    __decorate([\n        Selector([DriveState_1.activePage, DriveState_1.userCanEditSelectedFolder]),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, DrivePage, Boolean]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState, \"canUpload\", null);\n    DriveState = DriveState_1 = __decorate([\n        State({\n            name: 'drive',\n            defaults: DRIVE_STATE_MODEL_DEFAULTS,\n        }),\n        __metadata(\"design:paramtypes\", [FoldersApiService,\n            DriveEntryApiService,\n            Router,\n            DriveUrlsService,\n            UploadQueueService,\n            Store,\n            LocalStorage,\n            DriveUploadValidator, Object])\n    ], DriveState);\n    return DriveState;\n}());\nexport { DriveState };\n","import { DriveFolder } from '../folders/models/driveFolder';\r\nimport { DriveEntry } from '../files/models/drive-entry';\r\nimport { Action, Selector, State, StateContext, Store } from '@ngxs/store';\r\nimport { FoldersApiService } from '../folders/api/folders-api.service';\r\nimport { finalize, tap } from 'rxjs/operators';\r\nimport { DriveApiIndexParams, DriveEntryApiService } from '../drive-entry-api.service';\r\nimport { Router } from '@angular/router';\r\nimport { DriveUrlsService } from '../drive-urls.service';\r\nimport { RouterState } from '@ngxs/router-plugin';\r\nimport isEqual from 'lodash/isEqual';\r\nimport {\r\n    AddEntries,\r\n    BuildFolderTree,\r\n    DeleteSelectedEntries,\r\n    DeleteTrashedEntriesForever,\r\n    DeselectAllEntries,\r\n    EmptyTrash,\r\n    LoadUserFolders,\r\n    MoveEntries,\r\n    OpenConfirmDialog,\r\n    OpenFolder,\r\n    OpenUploadsPanel,\r\n    RestoreTrashedEntries,\r\n    SelectEntries,\r\n    ToggleDetailsSidebar,\r\n    SetViewMode,\r\n    UploadFiles,\r\n    OpenFilePreview,\r\n    AddStar,\r\n    RemoveStar,\r\n    RemoveEntries,\r\n    OpenSearchPage,\r\n    LoadMoreEntries,\r\n    ReloadPageEntries,\r\n    ToggleSidebar,\r\n    CopySelectedEntries,\r\n    OpenUploadWindow,\r\n    LoadUserSpaceUsage,\r\n    ShowLoadingToast,\r\n    HideLoadingToast,\r\n    ResetState,\r\n    UpdateEntries,\r\n    SelectAllEntries, SetCurrentUser,\r\n} from './actions/commands';\r\nimport {\r\n    EntryRenamed,\r\n    EntryContextMenuOpened,\r\n    FileDeleteSuccess,\r\n    EntryDoubleTapped,\r\n    EntrySelectedViaContextMenu,\r\n    EntriesSelectedViaDrag,\r\n    EntryTapped,\r\n    FolderPageOpened,\r\n    MoveEntriesFailed,\r\n    MoveEntriesSuccess,\r\n    NewFolderCreated,\r\n    RecentEntriesPageOpened,\r\n    SearchPageOpened,\r\n    SharesFolderOpened,\r\n    StarredPageOpened,\r\n    StartedDragging,\r\n    StoppedDragging,\r\n    TrashedEntriesDeleteSuccess,\r\n    TrashedEntriesRestoreSuccess,\r\n    TrashPageOpened,\r\n    LoadEntriesAction,\r\n    UserSpaceUsageChanged,\r\n    NotEnoughSpaceError, BreakpointChanged\r\n} from './actions/events';\r\nimport { DriveStateModel, VIEW_MODE_KEY } from './models/drive-state-model';\r\nimport { DRIVE_STATE_MODEL_DEFAULTS } from './models/drive-state-model-defaults';\r\nimport { LocalStorage } from 'common/core/services/local-storage.service';\r\nimport { ROOT_FOLDER, RootFolder } from '../folders/root-folder';\r\nimport { UploadQueueService } from 'common/uploads/upload-queue/upload-queue.service';\r\nimport { DriveUploadValidator } from '../uploads/drive-upload-validator';\r\nimport { openUploadWindow } from 'common/uploads/utils/open-upload-window';\r\nimport { Inject } from '@angular/core';\r\nimport { UploadInputConfig } from 'common/uploads/upload-input-config';\r\nimport { UploadedFile } from 'common/uploads/uploaded-file';\r\nimport { UserSpaceUsage } from './models/user-space-usage';\r\nimport { LoadingToastMessages } from '../messages/loading-toast/loading-toast-messages';\r\nimport { User } from 'common/core/types/models/User';\r\nimport { DrivePage, TRASH_PAGE } from './models/drive-page';\r\nimport { DRIVE_UPLOAD_INPUT_CONFIG } from '../upload-input-config';\r\nimport { Tag } from 'common/core/types/models/Tag';\r\nimport { resolveDep } from '@angular/core/src/view/provider';\r\n\r\n@State<DriveStateModel>({\r\n    name: 'drive',\r\n    defaults: DRIVE_STATE_MODEL_DEFAULTS,\r\n})\r\nexport class DriveState {\r\n    constructor(\r\n        private foldersApi: FoldersApiService,\r\n        private entriesApi: DriveEntryApiService,\r\n        private router: Router,\r\n        private driveUrls: DriveUrlsService,\r\n        private uploads: UploadQueueService,\r\n        private store: Store,\r\n        private localStore: LocalStorage,\r\n        private validator: DriveUploadValidator,\r\n        @Inject(DRIVE_UPLOAD_INPUT_CONFIG) private uploadInputConfig: UploadInputConfig,\r\n    ) {}\r\n\r\n    @Selector()\r\n    static flatFolders(state: DriveStateModel) {\r\n        return state.flatFolders;\r\n    }\r\n\r\n    @Selector()\r\n    static userFoldersLoaded(state: DriveStateModel) {\r\n        return state.userFoldersLoaded;\r\n    }\r\n\r\n    @Selector()\r\n    static activePage(state: DriveStateModel) {\r\n        return state.activePage;\r\n    }\r\n\r\n    @Selector()\r\n    static activePageName(state: DriveStateModel) {\r\n        return state.activePage.name;\r\n    }\r\n\r\n    @Selector()\r\n    static userFolders(state: DriveStateModel) {\r\n        return state.folderTree;\r\n    }\r\n\r\n    @Selector()\r\n    static selectedEntries(state: DriveStateModel) {\r\n        return state.selectedEntries;\r\n    }\r\n\r\n    @Selector([DriveState.selectedEntries])\r\n    static selectedEntryIds(state: DriveStateModel, selectedEntries: DriveEntry[]) {\r\n        return selectedEntries.map(entry => entry.id);\r\n    }\r\n\r\n    @Selector([DriveState.selectedEntries])\r\n    static selectedEntry(state: DriveStateModel, selected: DriveEntry[]) {\r\n        return selected ? selected[selected.length - 1] : null;\r\n    }\r\n\r\n    @Selector([DriveState.selectedEntry])\r\n    static selectedEntryOrActiveFolder(state: DriveStateModel, selected: DriveEntry[]) {\r\n        return selected || state.activePage.folder;\r\n    }\r\n\r\n    @Selector([DriveState.selectedEntryOrActiveFolder, DriveState.flatFolders])\r\n    static selectedEntryParent(state: DriveStateModel, selected: DriveFolder, folders: {[key: number]: DriveFolder}) {\r\n        if ( ! selected || ! folders || ! selected.parent_id) return ROOT_FOLDER;\r\n        return folders[selected.parent_id];\r\n    }\r\n\r\n    @Selector([DriveState.selectedEntries])\r\n    static anythingSelected(state: DriveStateModel, selectedEntries: DriveEntry[]) {\r\n        return selectedEntries.length > 0;\r\n    }\r\n\r\n    @Selector([DriveState.selectedEntries])\r\n    static allSelectedEntriesStarred(state: DriveStateModel, selectedEntries: DriveEntry[]) {\r\n        return selectedEntries.every(entry => !!entry.tags.find(tag => tag.name === 'starred'));\r\n    }\r\n\r\n    @Selector([DriveState.selectedEntries])\r\n    static onlyFoldersSelected(state: DriveStateModel, selectedEntries: DriveEntry[]) {\r\n        return selectedEntries.every(entry => entry.type === 'folder');\r\n    }\r\n\r\n    @Selector()\r\n    static entries(state: DriveStateModel) {\r\n        return state.entries;\r\n    }\r\n\r\n    @Selector()\r\n    static entriesEmpty(state: DriveStateModel) {\r\n        // only return true if entries have already loaded\r\n        return state.meta.currentPage && ! state.loading && state.entries.length === 0;\r\n    }\r\n\r\n    @Selector([DriveState.selectedEntries])\r\n    static multipleEntriesSelected(state: DriveStateModel, selectedEntries: DriveEntry[]) {\r\n        return selectedEntries.length > 1;\r\n    }\r\n\r\n    @Selector()\r\n    static activeFolder(state: DriveStateModel) {\r\n        return state.activePage.folder;\r\n    }\r\n\r\n    @Selector([DriveState.selectedEntries])\r\n    static selectedFolderId(state: DriveStateModel, selectedEntries: DriveEntry[]) {\r\n        const folder = selectedEntries.filter(entry => entry.type === 'folder')[0];\r\n        return folder ? folder.id : null;\r\n    }\r\n\r\n    @Selector()\r\n    static meta(state: DriveStateModel) {\r\n        return state.meta;\r\n    }\r\n\r\n    @Selector()\r\n    static dragging(state: DriveStateModel) {\r\n        return state.dragging;\r\n    }\r\n\r\n    @Selector()\r\n    static loading(state: DriveStateModel) {\r\n        return state.loading;\r\n    }\r\n\r\n    @Selector()\r\n    static currentPage(state: DriveStateModel) {\r\n        return state.meta.currentPage;\r\n    }\r\n\r\n    @Selector()\r\n    static viewMode(state: DriveStateModel) {\r\n        return state.viewMode;\r\n    }\r\n\r\n    @Selector()\r\n    static detailsOpen(state: DriveStateModel) {\r\n        return state.detailsVisible;\r\n    }\r\n\r\n    @Selector()\r\n    static sidebarOpen(state: DriveStateModel) {\r\n        return state.sidebarOpen;\r\n    }\r\n\r\n    @Selector()\r\n    static sortColumn(state: DriveStateModel) {\r\n        return state.meta.sortColumn;\r\n    }\r\n\r\n    @Selector()\r\n    static sortDirection(state: DriveStateModel) {\r\n        return state.meta.sortDirection;\r\n    }\r\n\r\n    @Selector()\r\n    static canLoadMoreEntries(state: DriveStateModel) {\r\n        return state.meta.currentPage < state.meta.lastPage;\r\n    }\r\n\r\n    @Selector()\r\n    static userSpaceUsed(state: DriveStateModel) {\r\n        return state.spaceUsage.used;\r\n    }\r\n\r\n    @Selector()\r\n    static userSpaceAvailable(state: DriveStateModel) {\r\n        return state.spaceUsage.available;\r\n    }\r\n\r\n    @Selector([DriveState.userSpaceUsed, DriveState.userSpaceAvailable])\r\n    static spaceUsedPercent(state: DriveStateModel, spaceUsed: number, spaceAvail: number) {\r\n        return (spaceUsed * 100) / spaceAvail;\r\n    }\r\n\r\n    @Selector()\r\n    static isMobile(state: DriveStateModel) {\r\n        return state.isMobile;\r\n    }\r\n\r\n    static userHasPermission(permission: 'edit'|'owner', folder: DriveEntry|RootFolder, user: User) {\r\n        // we are not in a folder view, can bail\r\n        if ( ! folder || ! user) return false;\r\n\r\n        if (folder.id === 'root') return true;\r\n\r\n        // check if user is the owner of currently open folder\r\n        const folderUser = (folder as DriveEntry).users.find(u => u.id === user.id);\r\n\r\n        if (folderUser.owns_entry) return true;\r\n\r\n        return folderUser.entry_permissions[permission];\r\n    }\r\n\r\n    @Selector()\r\n    static currentUser(state: DriveStateModel) {\r\n        return state.currentUser;\r\n    }\r\n\r\n    @Selector([DriveState.activeFolder, DriveState.currentUser])\r\n    static userOwnsActiveFolder(state: DriveStateModel, activeFolder: DriveEntry|RootFolder, currentUser: User) {\r\n       return DriveState.userHasPermission('owner', activeFolder, currentUser);\r\n    }\r\n\r\n    @Selector([DriveState.activeFolder, DriveState.currentUser])\r\n    static userCanEditSelectedFolder(state: DriveStateModel, activeFolder: DriveEntry|RootFolder, currentUser: User) {\r\n        return DriveState.userHasPermission('edit', activeFolder, currentUser);\r\n    }\r\n\r\n    @Selector([DriveState.selectedEntries, DriveState.currentUser])\r\n    static userCanEditSelectedEntries(state: DriveStateModel, entries: DriveEntry[], currentUser: User) {\r\n        return entries.every(entry => {\r\n            const user = entry.users.find(u => u.id === currentUser.id);\r\n            return user && (user.owns_entry || user.entry_permissions.edit);\r\n        });\r\n    }\r\n\r\n    @Selector([DriveState.activePage, DriveState.userCanEditSelectedFolder])\r\n    static canUpload(state: DriveStateModel, page: DrivePage, userCanEditFolder: boolean) {\r\n        return page.folder && userCanEditFolder;\r\n    }\r\n\r\n    @Action(LoadUserFolders)\r\n    loadUserFolders(ctx: StateContext<DriveStateModel>) {\r\n        return this.foldersApi.getAllForCurrentUser().pipe(tap(response => {\r\n            return ctx.dispatch(new BuildFolderTree(response.folders));\r\n        }));\r\n    }\r\n\r\n    @Action(BuildFolderTree)\r\n    buildFolderTree(ctx: StateContext<DriveStateModel>, action: BuildFolderTree) {\r\n        let hashTable = {}; const tree = [];\r\n\r\n        if (action.folders) {\r\n            for (let i = 0, len = action.folders.length; i < len; i++) {\r\n                const folder = action.folders[i];\r\n                hashTable[folder.id] = folder;\r\n            }\r\n        } else {\r\n            hashTable = ctx.getState().flatFolders;\r\n        }\r\n\r\n        for (const id in hashTable) {\r\n            if ( ! hashTable.hasOwnProperty(id)) continue;\r\n            const folder = hashTable[id];\r\n\r\n            // clear children from previous builds, to prevent duplicates\r\n            folder.children = [];\r\n\r\n            if (folder.parent_id) {\r\n                const parent = hashTable[folder.parent_id];\r\n                if (parent) {\r\n                    if ( ! parent.children) parent.children = [];\r\n                    parent.children.push(folder);\r\n                }\r\n            } else {\r\n                tree.push(folder);\r\n            }\r\n        }\r\n\r\n        ctx.patchState({\r\n            folderTree: tree,\r\n            flatFolders: hashTable,\r\n            userFoldersLoaded: true,\r\n        });\r\n    }\r\n\r\n    @Action(FolderPageOpened)\r\n    @Action(RecentEntriesPageOpened)\r\n    @Action(TrashPageOpened)\r\n    @Action(StarredPageOpened)\r\n    @Action(SearchPageOpened)\r\n    @Action(SharesFolderOpened)\r\n    @Action(ReloadPageEntries)\r\n    @Action(LoadMoreEntries)\r\n    loadDriveEntries(ctx: StateContext<DriveStateModel>, action: LoadEntriesAction) {\r\n        const oldState = ctx.getState(),\r\n            newState = {loading: true, meta: {...oldState.meta}} as Partial<DriveStateModel>;\r\n\r\n        // only replace active page if it's actually specified, this way\r\n        // \"Reload\" and \"LoadMore\" actions will not remove active page\r\n        newState.activePage = action.page ? action.page : oldState.activePage;\r\n\r\n        // set sorting from specified query params or specified page or currently active page\r\n        newState.meta.sortColumn = action.queryParams.orderBy || newState.activePage.sortColumn;\r\n        newState.meta.sortDirection = action.queryParams.orderDir || newState.activePage.sortDirection;\r\n\r\n        // if it's not search page, clear type and query\r\n        if (newState.activePage.name !== 'search') {\r\n            newState.meta.query = null;\r\n            newState.meta.type = null;\r\n        }\r\n\r\n        newState.meta.query = action.queryParams.query || newState.meta.query;\r\n        newState.meta.type = action.queryParams.type || newState.meta.type;\r\n\r\n        ctx.patchState(newState);\r\n\r\n        const params = this.transformQueryParams(action.queryParams);\r\n\r\n        return this.entriesApi.getEntriesForFolder(params).pipe(tap(response => {\r\n            const entries = action.loadMore ? oldState.entries : [];\r\n\r\n            const state = {\r\n                entries: entries.concat(response.data),\r\n                meta: {\r\n                    ...newState.meta,\r\n                    lastPage: response.last_page,\r\n                    currentPage: response.current_page\r\n                },\r\n                loading: false\r\n            } as Partial<DriveStateModel>;\r\n\r\n            // make sure \"root\" page folder is not overridden, it's\r\n            // a static constant, so is not returned from backend\r\n            if (newState.activePage.name !== 'root') {\r\n                state.activePage = {\r\n                    ...newState.activePage,\r\n                    folder: response.folder,\r\n                };\r\n            }\r\n\r\n            return ctx.patchState(state);\r\n        }, () => {\r\n            return ctx.patchState({loading: false});\r\n        }));\r\n    }\r\n\r\n    @Action(OpenFolder, {cancelUncompleted: true})\r\n    openFolder(ctx: StateContext<DriveStateModel>, action: OpenFolder) {\r\n        const currentFolder = ctx.getState().activePage.folder;\r\n        if (currentFolder && action.folder.id === currentFolder.id) return;\r\n\r\n        if (action.folder && action.folder['deleted_at']) {\r\n            return ctx.dispatch(new OpenConfirmDialog({\r\n                title: 'Folder is in trash',\r\n                body: 'To view this folder, you need to restore it first.',\r\n                ok: 'Restore'\r\n            }, new RestoreTrashedEntries()));\r\n        } else {\r\n            ctx.patchState({loading: true});\r\n            return this.router.navigate([this.driveUrls.folder(action.folder)]);\r\n        }\r\n    }\r\n\r\n    @Action(OpenSearchPage, {cancelUncompleted: true})\r\n    openSearchPage(ctx: StateContext<DriveStateModel>, action: OpenSearchPage) {\r\n        const oldParams = this.store.selectSnapshot(RouterState.state).root.queryParams;\r\n        if (isEqual(oldParams, action.queryParams)) return;\r\n        ctx.patchState({loading: true});\r\n        return this.router.navigate(['/drive/search'], {queryParams: action.queryParams});\r\n    }\r\n\r\n    @Action(EntriesSelectedViaDrag)\r\n    @Action(EntrySelectedViaContextMenu)\r\n    @Action(SelectEntries)\r\n    selectEntries(ctx: StateContext<DriveStateModel>, action: EntriesSelectedViaDrag | EntrySelectedViaContextMenu | SelectEntries) {\r\n        ctx.patchState({selectedEntries: action.entries});\r\n    }\r\n\r\n    @Action(DeselectAllEntries)\r\n    deselectAllEntries(ctx: StateContext<DriveStateModel>) {\r\n        if ( ! ctx.getState().selectedEntries.length) return;\r\n        ctx.patchState({selectedEntries: []});\r\n    }\r\n\r\n    @Action(SelectAllEntries)\r\n    SelectAllEntries(ctx: StateContext<DriveStateModel>) {\r\n        ctx.patchState({selectedEntries: ctx.getState().entries.slice()});\r\n    }\r\n\r\n    @Action(EntryTapped)\r\n    entryTapped(ctx: StateContext<DriveStateModel>, action: EntryTapped) {\r\n        const current = ctx.getState().selectedEntries;\r\n        let alreadySelected = false;\r\n\r\n        // remove entry with matching ID (if exists) to avoid duplicates\r\n        const i = current.findIndex(curr => curr.id === action.entry.id);\r\n        if (i > -1) {\r\n            current.splice(i, 1);\r\n            alreadySelected = true;\r\n        }\r\n\r\n        if (action.ctrlKey) {\r\n            if (alreadySelected) {\r\n                ctx.patchState({selectedEntries: current});\r\n            } else {\r\n                ctx.patchState({selectedEntries: [...current, action.entry]});\r\n            }\r\n        } else {\r\n            ctx.patchState({selectedEntries: [action.entry]});\r\n        }\r\n    }\r\n\r\n    @Action(EntryDoubleTapped)\r\n    entryDoubleTapped(ctx: StateContext<DriveStateModel>, action: EntryDoubleTapped) {\r\n        if (action.entry.type === 'folder') {\r\n            return ctx.dispatch(new OpenFolder(action.entry as DriveFolder));\r\n        } else {\r\n            return ctx.dispatch(new OpenFilePreview([action.entry]));\r\n        }\r\n    }\r\n\r\n    @Action(DeleteSelectedEntries)\r\n    deleteSelectedEntries(ctx: StateContext<DriveStateModel>) {\r\n        const entries = this.store.selectSnapshot(DriveState.selectedEntries),\r\n            entryIds = this.store.selectSnapshot(DriveState.selectedEntryIds),\r\n            flatFolders = this.store.selectSnapshot(DriveState.flatFolders),\r\n            activePage = ctx.getState().activePage;\r\n\r\n        return this.entriesApi.delete({entryIds}).pipe(tap(() => {\r\n            // filter out deleted entries\r\n            const newEntries = ctx.getState().entries\r\n                .filter(entry => entryIds.indexOf(entry.id) === -1);\r\n\r\n            const newState = {entries: newEntries} as Partial<DriveStateModel>,\r\n                actions = [new FileDeleteSuccess(entries)] as any[];\r\n\r\n            // clear selected entries\r\n            newState.selectedEntries = [];\r\n\r\n            // if selected folder was active, navigate to its parent\r\n            if (activePage.folder && entryIds.indexOf(activePage.folder.id) > -1) {\r\n                this.store.dispatch(new OpenFolder(this.store.selectSnapshot(DriveState.selectedEntryParent)));\r\n            }\r\n\r\n            // rebuild folders tree\r\n            const folders = entries.filter(entry => entry.type === 'folder');\r\n            if (folders.length) {\r\n                folders.forEach(folder => delete flatFolders[folder.id]);\r\n                newState.flatFolders = flatFolders;\r\n                actions.push(new BuildFolderTree());\r\n            }\r\n\r\n            ctx.patchState(newState);\r\n            return ctx.dispatch(actions);\r\n        }));\r\n    }\r\n\r\n    @Action(EntryContextMenuOpened)\r\n    fileContextMenuOpened(ctx: StateContext<DriveStateModel>, action: EntryContextMenuOpened) {\r\n        if ( ! action.entry) return;\r\n\r\n        const fileAlreadySelected = ctx.getState().selectedEntries\r\n            .find(entry => entry.id === action.entry.id);\r\n\r\n        if ( ! fileAlreadySelected) {\r\n            return ctx.dispatch(new EntrySelectedViaContextMenu([action.entry]));\r\n        }\r\n    }\r\n\r\n    @Action(NewFolderCreated)\r\n    newFolderCreated(ctx: StateContext<DriveStateModel>, action: NewFolderCreated) {\r\n        const state = ctx.getState(),\r\n            newFolderId = action.folder.parent_id || 'root';\r\n\r\n        // start new folder into user folders cache\r\n        const newState = {\r\n            flatFolders: {...state.flatFolders, [action.folder.id]: action.folder}\r\n        } as Partial<DriveStateModel>;\r\n\r\n        // push new folder into parent folder entries, if parent is currently open\r\n        if (newFolderId === state.activePage.folder.id) {\r\n            newState.entries = [action.folder, ...state.entries];\r\n        }\r\n\r\n        ctx.patchState(newState);\r\n\r\n        // rebuild folder tree\r\n        return ctx.dispatch(new BuildFolderTree());\r\n    }\r\n\r\n    @Action(EntryRenamed)\r\n    entryRenamed(ctx: StateContext<DriveStateModel>, action: EntryRenamed) {\r\n        const state = ctx.getState(),\r\n            newState = {entries: state.entries.slice()} as Partial<DriveStateModel>,\r\n            i = newState.entries.findIndex(curr => curr.id === action.entry.id);\r\n\r\n        // rename entry inside main entries array\r\n        if (i > -1) {\r\n            newState.entries[i] = {...newState.entries[i], name: action.newName};\r\n        }\r\n\r\n        // rename entry inside selected entries array\r\n        newState.selectedEntries = [{...state.selectedEntries[0], name: action.newName}];\r\n\r\n        // rename active folder\r\n        if (state.activePage.folder && state.activePage.folder.id === action.entry.id) {\r\n            newState.activePage = {...state.activePage, folder: action.entry};\r\n        }\r\n\r\n        // rebuild folder tree\r\n        if (action.entry.type === 'folder') {\r\n            const flatFolders = {...state.flatFolders};\r\n            flatFolders[action.entry.id].name = action.newName;\r\n            newState.flatFolders = flatFolders;\r\n            ctx.dispatch(new BuildFolderTree());\r\n        }\r\n\r\n        ctx.patchState(newState);\r\n    }\r\n\r\n    @Action(StartedDragging)\r\n    startedDragging(ctx: StateContext<DriveStateModel>) {\r\n        ctx.patchState({dragging: true});\r\n    }\r\n\r\n    @Action(StoppedDragging)\r\n    stoppedDragging(ctx: StateContext<DriveStateModel>) {\r\n        ctx.patchState({dragging: false});\r\n    }\r\n\r\n    @Action(MoveEntries)\r\n    movieEntries(ctx: StateContext<DriveStateModel>, action: MoveEntries) {\r\n        const selected = ctx.getState().selectedEntries;\r\n        ctx.dispatch(new ShowLoadingToast(LoadingToastMessages.moveEntries));\r\n\r\n        const minimal = selected.map(entry => {\r\n            return {id: entry.id, type: entry.type === 'folder' ? 'folder' : 'file'};\r\n        });\r\n\r\n        return this.entriesApi.moveEntries({entries: minimal, destination: action.destination}).pipe(\r\n            finalize(() => ctx.dispatch(new HideLoadingToast())),\r\n            tap(response => {\r\n                return ctx.dispatch(new MoveEntriesSuccess(action.destination, response.entries));\r\n            }, error => {\r\n                return ctx.dispatch(new MoveEntriesFailed(error.messages));\r\n            })\r\n        );\r\n    }\r\n\r\n    @Action(MoveEntriesSuccess)\r\n    moveEntriesSuccess(ctx: StateContext<DriveStateModel>, action: MoveEntriesSuccess) {\r\n        const state = ctx.getState(),\r\n            entryIds = action.entries.map(entry => entry.id),\r\n            folders = action.entries.filter(entry => entry.type === 'folder');\r\n\r\n        // remove moved entries from old folder\r\n        const newState = {\r\n            selectedEntries: [],\r\n            entries: state.entries.filter(entry => entryIds.indexOf(entry.id) === -1)\r\n        } as Partial<DriveStateModel>;\r\n\r\n        // rebuild folder tree\r\n        if (folders.length) {\r\n            newState.flatFolders = {...state.flatFolders};\r\n            action.entries\r\n                .filter(entry => entry.type === 'folder')\r\n                .forEach(entry => newState.flatFolders[entry.id] = entry as DriveFolder);\r\n        }\r\n\r\n        // update active folder\r\n        if (state.activePage.folder) {\r\n            const folder = action.entries.find(entry => state.activePage.folder.id === entry.id);\r\n            if (folder) newState.activePage = {...state.activePage, folder};\r\n        }\r\n\r\n        ctx.patchState(newState);\r\n        return ctx.dispatch(new BuildFolderTree());\r\n    }\r\n\r\n    @Action(SetViewMode)\r\n    toggleViewMode(ctx: StateContext<DriveStateModel>, action: SetViewMode) {\r\n        const current = ctx.getState().viewMode,\r\n            viewMode = action.mode || current === 'list' ? 'grid' : 'list';\r\n\r\n        this.localStore.set(VIEW_MODE_KEY, viewMode);\r\n\r\n        ctx.patchState({viewMode});\r\n    }\r\n\r\n    @Action(ToggleDetailsSidebar)\r\n    toggleDetailsSidebar(ctx: StateContext<DriveStateModel>) {\r\n        ctx.patchState({\r\n            detailsVisible: !ctx.getState().detailsVisible\r\n        });\r\n    }\r\n\r\n    @Action(ToggleSidebar)\r\n    toggleSidebar(ctx: StateContext<DriveStateModel>) {\r\n        ctx.patchState({\r\n            sidebarOpen: !ctx.getState().sidebarOpen\r\n        });\r\n    }\r\n\r\n    @Action(AddEntries)\r\n    addEntries(ctx: StateContext<DriveStateModel>, action: AddEntries) {\r\n        const currentEntries = ctx.getState().entries,\r\n            spaceUsage = ctx.getState().spaceUsage;\r\n\r\n        const newEntries = action.entries\r\n            .filter(entry => !currentEntries.find(curr => curr.id === entry.id));\r\n\r\n        const newSize = newEntries.filter(entry => entry.type !== 'folder')\r\n            .reduce((sum, entry) => sum + entry.file_size, 0);\r\n\r\n        ctx.patchState({\r\n            entries: [...newEntries, ...currentEntries],\r\n            spaceUsage: {...spaceUsage, used: spaceUsage.used + newSize}\r\n        });\r\n    }\r\n\r\n    @Action(UploadFiles)\r\n    uploadFiles(ctx: StateContext<DriveStateModel>, action: UploadFiles) {\r\n        if ( ! this.enoughSpaceLeftToUpload(ctx.getState().spaceUsage, action.files)) {\r\n            return ctx.dispatch(new NotEnoughSpaceError());\r\n        }\r\n\r\n        if ( ! action.files.length) return;\r\n\r\n        ctx.dispatch(new OpenUploadsPanel());\r\n\r\n        const state = ctx.getState(),\r\n            folder = state.activePage.folder,\r\n            parentId = (folder && folder !== ROOT_FOLDER) ? folder.id : null;\r\n\r\n        const config = {\r\n            httpParams: {parentId},\r\n            validator: this.validator,\r\n        };\r\n\r\n        return this.uploads.start(action.files, config).pipe(tap(entry => {\r\n            // get parent folders, if user has uploaded folders and not single files\r\n            const entries = [entry.parent, entry];\r\n\r\n            // remove all entries that are not direct child of currently open folder\r\n            const newEntries = entries\r\n                .filter(newEntry => newEntry && newEntry.parent_id === parentId);\r\n\r\n            // add newly uploaded files and created folders\r\n            ctx.dispatch(new AddEntries(newEntries as DriveEntry[]));\r\n\r\n            // rebuild folder tree, if there are any folders\r\n            const folders = entries.filter(entry => entry && entry.type === 'folder');\r\n            if (folders.length) {\r\n                const flatFolders = {...ctx.getState().flatFolders};\r\n                folders.forEach(f => flatFolders[f.id] = f as DriveFolder);\r\n                ctx.patchState({flatFolders});\r\n                ctx.dispatch(new BuildFolderTree());\r\n            }\r\n        }));\r\n    }\r\n\r\n    @Action(DeleteTrashedEntriesForever)\r\n    deleteTrashedEntriesForever(ctx: StateContext<DriveStateModel>) {\r\n        const selectedEntries = this.store.selectSnapshot(DriveState.selectedEntries),\r\n            entryIds = selectedEntries.map(entry => entry.id);\r\n\r\n        const newEntries = ctx.getState().entries\r\n                .filter(entry => entryIds.indexOf(entry.id) === -1);\r\n\r\n        return this.entriesApi.delete({entryIds, deleteForever: true}).pipe(tap(() => {\r\n            ctx.patchState({\r\n                entries: newEntries,\r\n                selectedEntries: [],\r\n            });\r\n\r\n            return ctx.dispatch([\r\n                new TrashedEntriesDeleteSuccess(selectedEntries),\r\n                new UserSpaceUsageChanged(),\r\n            ]);\r\n        }));\r\n    }\r\n\r\n    @Action(RestoreTrashedEntries)\r\n    restoreTrashedEntries(ctx: StateContext<DriveStateModel>, action: RestoreTrashedEntries) {\r\n        const activePage = this.store.selectSnapshot(DriveState.activePage);\r\n        const restoredEntries = action.entries || this.store.selectSnapshot(DriveState.selectedEntries);\r\n        const entryIds = restoredEntries.map(entry => entry.id);\r\n        let newEntries: DriveEntry[];\r\n\r\n        if (activePage === TRASH_PAGE) {\r\n            newEntries = ctx.getState().entries\r\n                .filter(entry => entryIds.indexOf(entry.id) === -1);\r\n        } else {\r\n            newEntries = [...ctx.getState().entries, ...action.entries];\r\n        }\r\n\r\n        return this.entriesApi.restore({entryIds}).pipe(tap(() => {\r\n            ctx.patchState({\r\n                entries: newEntries,\r\n                selectedEntries: [],\r\n            });\r\n\r\n            return ctx.dispatch(new TrashedEntriesRestoreSuccess(restoredEntries));\r\n        }));\r\n    }\r\n\r\n    @Action(EmptyTrash, {cancelUncompleted: true})\r\n    emptyTrash(ctx: StateContext<DriveStateModel>) {\r\n        ctx.dispatch(new ShowLoadingToast(LoadingToastMessages.emptyTrash));\r\n\r\n        return this.entriesApi.emptyTrash().pipe(\r\n            finalize(() => ctx.dispatch(new HideLoadingToast())),\r\n            tap(() => {\r\n                ctx.patchState({\r\n                    entries: [],\r\n                    selectedEntries: [],\r\n                });\r\n\r\n                return ctx.dispatch(new UserSpaceUsageChanged());\r\n            })\r\n        );\r\n    }\r\n\r\n    @Action(AddStar, {cancelUncompleted: true})\r\n    addStar(ctx: StateContext<DriveStateModel>, action: AddStar) {\r\n        const state = ctx.getState(),\r\n            ids = action.entries.map(entry => entry.id);\r\n\r\n        return this.entriesApi.addStar(ids).pipe(tap(response => {\r\n            const newEntries = state.entries.map(entry => {\r\n                if (ids.indexOf(entry.id) > -1) {\r\n                    if ( ! entry.tags) entry.tags = [];\r\n                    entry.tags.push(response.tag);\r\n                }\r\n                return entry;\r\n            });\r\n\r\n            const selectedEntries = state.selectedEntries.map(entry => {\r\n                entry.tags.push(response.tag);\r\n                return entry;\r\n            });\r\n\r\n            ctx.patchState({\r\n                entries: newEntries,\r\n                selectedEntries: selectedEntries,\r\n            });\r\n        }));\r\n    }\r\n\r\n    @Action(RemoveStar, {cancelUncompleted: true})\r\n    removeStar(ctx: StateContext<DriveStateModel>, action: RemoveStar) {\r\n        const state = ctx.getState(),\r\n            ids = action.entries.map(entry => entry.id);\r\n\r\n        return this.entriesApi.removeStar(ids).pipe(tap(response => {\r\n            const newEntries = state.entries.map(entry => {\r\n                if (ids.indexOf(entry.id) > -1) this.removeTag(entry, response.tag);\r\n                return entry;\r\n            });\r\n\r\n            const selectedEntries = state.selectedEntries\r\n                .map(entry => this.removeTag(entry, response.tag));\r\n\r\n            ctx.patchState({\r\n                entries: newEntries,\r\n                selectedEntries: selectedEntries\r\n            });\r\n        }));\r\n    }\r\n\r\n    @Action(RemoveEntries)\r\n    removeSelectedEntries(ctx: StateContext<DriveStateModel>, action: RemoveEntries) {\r\n        const ids = action.entries.map(entry => entry.id);\r\n\r\n        const newEntries = ctx.getState().entries\r\n            .filter(entry => ids.indexOf(entry.id) === -1);\r\n\r\n        ctx.patchState({\r\n            entries: newEntries\r\n        });\r\n    }\r\n\r\n    @Action(CopySelectedEntries)\r\n    copySelectedEntries(ctx: StateContext<DriveStateModel>) {\r\n        const entries = this.store.selectSnapshot(DriveState.selectedEntries),\r\n            entryIds = entries.map(entry => entry.id),\r\n            folders = entries.filter(entry => entry.type === 'folder'),\r\n            oldState = ctx.getState();\r\n\r\n        ctx.dispatch(new ShowLoadingToast(LoadingToastMessages.copyEntries));\r\n\r\n        return this.entriesApi.copy({entryIds}).pipe(\r\n            finalize(() => ctx.dispatch(new HideLoadingToast())),\r\n            tap(response => {\r\n                const newState = {} as Partial<DriveStateModel>;\r\n\r\n                // show copied entries, if we are in a folder view\r\n                if (ctx.getState().activePage.folder) {\r\n                    newState.entries =  oldState.entries.concat(response.entries);\r\n                }\r\n\r\n                // rebuild folder tree\r\n                if (folders.length) {\r\n                    newState.flatFolders = {...oldState.flatFolders};\r\n                    response.entries\r\n                        .filter(folder => folder.type === 'folder')\r\n                        .forEach(folder => newState.flatFolders[folder.id] = folder as DriveFolder);\r\n                }\r\n\r\n                ctx.patchState(newState);\r\n\r\n                // update user space usage\r\n                ctx.dispatch(new UserSpaceUsageChanged());\r\n\r\n                // rebuild folder tree\r\n                if (folders.length) ctx.dispatch(new BuildFolderTree());\r\n            })\r\n        );\r\n    }\r\n\r\n    @Action(OpenUploadWindow)\r\n    openUploadWindow(ctx: StateContext<DriveStateModel>, action: OpenUploadWindow) {\r\n        const config = {\r\n            ...this.uploadInputConfig,\r\n            directory: action.type === 'directory'\r\n        };\r\n\r\n        openUploadWindow(config).then(files => {\r\n            if ( ! files || ! files.length) return;\r\n            ctx.dispatch(new UploadFiles(files));\r\n        });\r\n    }\r\n\r\n    @Action(LoadUserSpaceUsage)\r\n    @Action(UserSpaceUsageChanged)\r\n    loadUserSpaceUsage(ctx: StateContext<DriveStateModel>) {\r\n        return this.entriesApi.getSpaceUsage().pipe(tap(spaceUsage => {\r\n            ctx.patchState({spaceUsage: {used: spaceUsage.used, available: spaceUsage.available}});\r\n        }));\r\n    }\r\n\r\n    @Action(UpdateEntries)\r\n    updateEntries(ctx: StateContext<DriveStateModel>, action: UpdateEntries) {\r\n        const entries = ctx.getState().entries;\r\n\r\n        action.entries.forEach(updatedEntry => {\r\n            const i = entries.findIndex(entry => updatedEntry.id === entry.id);\r\n            entries[i] = {...entries[i], ...updatedEntry};\r\n        });\r\n\r\n        ctx.patchState({entries});\r\n    }\r\n\r\n    @Action(BreakpointChanged)\r\n    breakpointChanged(ctx: StateContext<DriveStateModel>, action: BreakpointChanged) {\r\n        ctx.patchState({\r\n            isMobile: action.status.isMobile,\r\n            sidebarOpen: !action.status.isMobile,\r\n            detailsVisible: !action.status.isMobile,\r\n        });\r\n    }\r\n\r\n    @Action(SetCurrentUser)\r\n    setCurrentUser(ctx: StateContext<DriveStateModel>, action: SetCurrentUser) {\r\n        ctx.patchState({currentUser: action.user});\r\n    }\r\n\r\n    @Action(ResetState)\r\n    resetState(ctx: StateContext<DriveStateModel>) {\r\n        ctx.setState({...DRIVE_STATE_MODEL_DEFAULTS, viewMode: ctx.getState().viewMode});\r\n    }\r\n\r\n    private transformQueryParams(params: DriveApiIndexParams): DriveApiIndexParams {\r\n        const page = this.store.selectSnapshot(DriveState.activePage),\r\n            meta = this.store.selectSnapshot(DriveState.meta);\r\n\r\n        const queryParams = {\r\n            orderBy: meta.sortColumn,\r\n            orderDir: meta.sortDirection,\r\n            ...params\r\n        };\r\n\r\n        if (page.folderHash) queryParams.folderId = page.folderHash;\r\n        if (meta.query) queryParams.query = meta.query;\r\n        if (meta.type) queryParams.type = meta.type;\r\n\r\n        return queryParams;\r\n    }\r\n\r\n    /**\r\n     * Check if user has enough space left to upload all specified files.\r\n     */\r\n    private enoughSpaceLeftToUpload(spaceUsage: UserSpaceUsage, files: UploadedFile[]) {\r\n        const newSize = files.reduce((sum, file) => sum + file.size, 0),\r\n            currentlyUsing = spaceUsage.used,\r\n            availableSpace = spaceUsage.available;\r\n\r\n        return (newSize + currentlyUsing) < availableSpace;\r\n    }\r\n\r\n    private removeTag(entry: DriveEntry, tag: Tag) {\r\n        const i = entry.tags.findIndex(t => t.id === tag.id);\r\n        entry.tags.splice(i, 1);\r\n        return entry;\r\n    }\r\n}\r\n","import { SortColumn, SortDirection } from '../../entries/available-sorts';\r\nimport { DriveEntry } from '../../files/models/drive-entry';\r\nimport { DriveFolder } from '../../folders/models/driveFolder';\r\nimport { DrivePage } from './drive-page';\r\nimport { UserSpaceUsage } from './user-space-usage';\r\nimport { User } from 'common/core/types/models/User';\r\n\r\nexport interface DriveStateModel {\r\n    isMobile: boolean;\r\n    activePage: DrivePage;\r\n    folderTree: DriveFolder[];\r\n    flatFolders: {[key: number]: DriveFolder};\r\n    userFoldersLoaded: boolean;\r\n    entries: DriveEntry[];\r\n    selectedEntries: DriveEntry[];\r\n    spaceUsage: UserSpaceUsage;\r\n    meta: {\r\n        currentPage: number;\r\n        lastPage: number;\r\n        sortColumn: SortColumn;\r\n        sortDirection: SortDirection;\r\n        type?: string|null,\r\n        query?: string|null\r\n    };\r\n    dragging: boolean;\r\n    loading: boolean;\r\n    uploadsPanelOpen: boolean;\r\n    viewMode: 'list'|'grid';\r\n    detailsVisible: boolean;\r\n    sidebarOpen: boolean;\r\n    currentUser: User|null;\r\n}\r\n\r\nexport const VIEW_MODE_KEY = 'bedesk.viewMode';\r\n","import { Actions, ofActionSuccessful, Store } from '@ngxs/store';\r\nimport { OpenFilePreview } from '../actions/commands';\r\nimport { OverlayPanel } from 'common/core/ui/overlay-panel/overlay-panel.service';\r\nimport { FilePreviewOverlayComponent } from '../../preview/file-preview-overlay/file-preview-overlay.component';\r\nimport { DriveState } from '../drive-state';\r\n\r\nexport class OverlayHandler {\r\n    constructor(\r\n        private store: Store,\r\n        private actions$: Actions,\r\n        private overlay: OverlayPanel,\r\n    ) {\r\n        this.actions$.pipe(ofActionSuccessful(OpenFilePreview))\r\n            .subscribe((action: OpenFilePreview) => {\r\n                this.overlay.open(FilePreviewOverlayComponent, {\r\n                    position: 'center',\r\n                    origin: 'global',\r\n                    panelClass: 'file-preview-overlay-container',\r\n                    data: {entries: action.entries || this.selectedEntries()}\r\n                });\r\n            });\r\n    }\r\n\r\n    private selectedEntries() {\r\n        return this.store.selectSnapshot(DriveState.selectedEntries);\r\n    }\r\n}\r\n","import { Actions, ofActionSuccessful, Store } from '@ngxs/store';\r\nimport { DownloadEntries } from '../actions/commands';\r\nimport { DriveState } from '../drive-state';\r\nimport { downloadFileFromUrl } from 'common/uploads/utils/download-file-from-url';\r\nimport { Settings } from 'common/core/config/settings.service';\r\nimport { FileEntry } from 'common/uploads/file-entry';\r\n\r\nexport class DownloadHandler {\r\n    constructor(\r\n        private actions$: Actions,\r\n        private store: Store,\r\n        private settings: Settings,\r\n    ) {\r\n        this.actions$.pipe(ofActionSuccessful(DownloadEntries))\r\n            .subscribe((action: DownloadEntries) => {\r\n                downloadFileFromUrl(this.getDownloadUrl(action));\r\n            });\r\n    }\r\n\r\n    private getDownloadUrl(action: DownloadEntries): string {\r\n        const hashes = this.getEntryHashes(action.entries);\r\n        let base = `${this.settings.getBaseUrl()}secure/uploads/download?hashes=${hashes}`;\r\n        if (action.link) base += `&shareable_link=${action.link.id}`;\r\n        if (action.password) base += `&password=${action.password}`;\r\n        return base;\r\n    }\r\n\r\n    /**\r\n     * Get hashes string for specified entries or for currently selected entries.\r\n     */\r\n    private getEntryHashes(entries?: FileEntry[]): string {\r\n        if ( ! entries) {\r\n            entries = this.store.selectSnapshot(DriveState.selectedEntries);\r\n        }\r\n\r\n        return entries.map(entry => entry.hash).join(',');\r\n    }\r\n}\r\n","/**\r\n * Download file from specified url.\r\n */\r\nexport function downloadFileFromUrl(url: string, name?: string) {\r\n    const link = document.createElement('a');\r\n    link.href = url;\r\n    if (name) link.download = name;\r\n    document.body.appendChild(link);\r\n    link.click();\r\n    document.body.removeChild(link);\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { BackendResponse } from 'common/core/types/backend-response';\nimport { ShareableLink } from './models/shareable-link';\nimport { AppHttpClient } from 'common/core/http/app-http-client.service';\nimport { ShareableLinkOptions } from './models/shareable-link-options';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ShareableLinksApiService {\n    constructor(private http: AppHttpClient) {}\n\n    public findByEntryId(entryId: number, params: {autoCreate?: boolean}): BackendResponse<{ link: ShareableLink }> {\n        return this.http.get(`drive/entries/${entryId}/shareable-link`, params);\n    }\n\n    public findByHash(hash: string, params?: {withEntries: boolean}): BackendResponse<{ link: ShareableLink }> {\n        return this.http.get(`drive/shareable-links/${hash}`, params);\n    }\n\n    public create(entryId: number, params: Partial<ShareableLinkOptions>): BackendResponse<{ link: ShareableLink }> {\n        return this.http.post(`drive/entries/${entryId}/shareable-link`, params);\n    }\n\n    public update(id: number, params: Partial<ShareableLinkOptions>): BackendResponse<{ link: ShareableLink }> {\n        return this.http.put(`drive/shareable-links/${id}`, params);\n    }\n\n    public delete(id: number): BackendResponse<void> {\n        return this.http.delete(`drive/shareable-links/${id})`);\n    }\n\n    public checkPassword(linkId: number, password: string): BackendResponse<{matches: boolean}> {\n        return this.http.post(`drive/shareable-links/${linkId}/check-password`, {password});\n    }\n\n    /**\n     * Import shareable link entry into current user's drive.\n     */\n    public importEntry(linkId: number, password?: string) {\n        return this.http.post(`drive/shareable-links/${linkId}/import`, {password});\n    }\n}\n","import { AppHttpClient } from 'common/core/http/app-http-client.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../../../common/core/http/app-http-client.service\";\nvar ShareableLinksApiService = /** @class */ (function () {\n    function ShareableLinksApiService(http) {\n        this.http = http;\n    }\n    ShareableLinksApiService.prototype.findByEntryId = function (entryId, params) {\n        return this.http.get(\"drive/entries/\" + entryId + \"/shareable-link\", params);\n    };\n    ShareableLinksApiService.prototype.findByHash = function (hash, params) {\n        return this.http.get(\"drive/shareable-links/\" + hash, params);\n    };\n    ShareableLinksApiService.prototype.create = function (entryId, params) {\n        return this.http.post(\"drive/entries/\" + entryId + \"/shareable-link\", params);\n    };\n    ShareableLinksApiService.prototype.update = function (id, params) {\n        return this.http.put(\"drive/shareable-links/\" + id, params);\n    };\n    ShareableLinksApiService.prototype.delete = function (id) {\n        return this.http.delete(\"drive/shareable-links/\" + id + \")\");\n    };\n    ShareableLinksApiService.prototype.checkPassword = function (linkId, password) {\n        return this.http.post(\"drive/shareable-links/\" + linkId + \"/check-password\", { password: password });\n    };\n    /**\n     * Import shareable link entry into current user's drive.\n     */\n    ShareableLinksApiService.prototype.importEntry = function (linkId, password) {\n        return this.http.post(\"drive/shareable-links/\" + linkId + \"/import\", { password: password });\n    };\n    ShareableLinksApiService.ngInjectableDef = i0.defineInjectable({ factory: function ShareableLinksApiService_Factory() { return new ShareableLinksApiService(i0.inject(i1.AppHttpClient)); }, token: ShareableLinksApiService, providedIn: \"root\" });\n    return ShareableLinksApiService;\n}());\nexport { ShareableLinksApiService };\n","var __assign = (this && this.__assign) || Object.assign || function(t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n        s = arguments[i];\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n            t[p] = s[p];\n    }\n    return t;\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { Action, Selector, State, Store } from '@ngxs/store';\nimport { ShareableLinksApiService } from './shareable-links-api.service';\nimport { finalize, tap } from 'rxjs/operators';\nimport { DriveState } from '../../state/drive-state';\nimport { Settings } from 'common/core/config/settings.service';\nvar LoadShareableLink = /** @class */ (function () {\n    function LoadShareableLink(options) {\n        if (options === void 0) { options = {}; }\n        this.options = options;\n    }\n    LoadShareableLink.type = '[Shareable Link] Load From Backend';\n    return LoadShareableLink;\n}());\nexport { LoadShareableLink };\nvar UpdateShareableLink = /** @class */ (function () {\n    function UpdateShareableLink(options) {\n        this.options = options;\n    }\n    UpdateShareableLink.type = '[Shareable Link] Update';\n    return UpdateShareableLink;\n}());\nexport { UpdateShareableLink };\nvar CreateShareableLink = /** @class */ (function () {\n    function CreateShareableLink(options) {\n        this.options = options;\n    }\n    CreateShareableLink.type = '[Shareable Link] Create';\n    return CreateShareableLink;\n}());\nexport { CreateShareableLink };\nvar DeleteShareableLink = /** @class */ (function () {\n    function DeleteShareableLink() {\n    }\n    DeleteShareableLink.type = '[Shareable Link] Delete';\n    return DeleteShareableLink;\n}());\nexport { DeleteShareableLink };\nvar ToggleOptionsPanel = /** @class */ (function () {\n    function ToggleOptionsPanel() {\n    }\n    ToggleOptionsPanel.type = '[Shareable Link] Toggle Options Panel Visibility';\n    return ToggleOptionsPanel;\n}());\nexport { ToggleOptionsPanel };\nvar LinkCopySuccess = /** @class */ (function () {\n    function LinkCopySuccess() {\n    }\n    LinkCopySuccess.type = '[Shareable Link] Copy To Clipboard Success';\n    return LinkCopySuccess;\n}());\nexport { LinkCopySuccess };\nvar ResetShareLinkState = /** @class */ (function () {\n    function ResetShareLinkState() {\n    }\n    ResetShareLinkState.type = '[Shareable Link] Reset State';\n    return ResetShareLinkState;\n}());\nexport { ResetShareLinkState };\nvar defaultState = {\n    link: null,\n    loading: false,\n    optionsPanelVisible: true,\n    backendErrors: {},\n    cache: {},\n    linkOptions: {\n        allowDownload: false,\n        allowEdit: false,\n        expiresAt: null,\n        password: null,\n    }\n};\nvar ShareLinkState = /** @class */ (function () {\n    function ShareLinkState(store, settings, linksApi) {\n        this.store = store;\n        this.settings = settings;\n        this.linksApi = linksApi;\n    }\n    ShareLinkState.loading = function (state) {\n        return state.loading;\n    };\n    ShareLinkState.link = function (state) {\n        return state.link;\n    };\n    ShareLinkState.optionsVisible = function (state) {\n        return !state.loading && state.optionsPanelVisible;\n    };\n    ShareLinkState.backendErrors = function (state) {\n        return state.backendErrors;\n    };\n    ShareLinkState.prototype.createShareableLink = function (ctx, action) {\n        var entryId = this.store.selectSnapshot(DriveState.selectedEntryIds)[0];\n        ctx.patchState({ loading: true });\n        return this.linksApi.create(entryId, action.options)\n            .pipe(finalize(ctx.patchState({ loading: false, backendErrors: {} })), tap(function (response) {\n            var _a;\n            var link = response.link;\n            ctx.patchState({\n                cache: __assign({}, ctx.getState().cache, (_a = {}, _a[link.entry_id] = link, _a)),\n                link: response.link,\n                optionsPanelVisible: false\n            });\n        }, function (errorResponse) {\n            ctx.patchState({ backendErrors: errorResponse.messages });\n        }));\n    };\n    ShareLinkState.prototype.updateLink = function (ctx, action) {\n        var link = ctx.getState().link;\n        ctx.patchState({ loading: true });\n        return this.linksApi.update(link.id, action.options)\n            .pipe(finalize(ctx.patchState({ loading: false, backendErrors: {} })), tap(function (response) {\n            var _a;\n            return ctx.patchState({\n                link: response.link,\n                cache: __assign({}, ctx.getState().cache, (_a = {}, _a[link.entry_id] = response.link, _a)),\n                optionsPanelVisible: false\n            });\n        }, function (errorResponse) {\n            ctx.patchState({ backendErrors: errorResponse.messages });\n        }));\n    };\n    ShareLinkState.prototype.loadShareableLink = function (ctx, action) {\n        var entryId = this.store.selectSnapshot(DriveState.selectedEntryIds)[0], cachedLink = ctx.getState().cache[entryId];\n        if (cachedLink) {\n            return ctx.patchState({ link: cachedLink, optionsPanelVisible: false });\n        }\n        ctx.patchState({ loading: true });\n        return this.linksApi.findByEntryId(entryId, { autoCreate: action.options.autoCreate })\n            .pipe(finalize(function () { return ctx.patchState({ loading: false }); }), tap(function (response) {\n            var _a;\n            return ctx.patchState({\n                link: response.link,\n                optionsPanelVisible: false,\n                cache: __assign({}, ctx.getState().cache, (_a = {}, _a[response.link.entry_id] = response.link, _a)),\n            });\n        }, function () { }));\n    };\n    ShareLinkState.prototype.deleteShareableLink = function (ctx) {\n        var link = ctx.getState().link;\n        ctx.patchState({ loading: true });\n        return this.linksApi.delete(link.id)\n            .pipe(finalize(ctx.patchState({ loading: false })), tap(function () {\n            var cache = ctx.getState().cache;\n            delete cache[link.entry_id];\n            ctx.patchState({\n                link: null,\n                cache: cache,\n            });\n        }));\n    };\n    ShareLinkState.prototype.toggleOptionsPanel = function (ctx) {\n        ctx.patchState({\n            optionsPanelVisible: !ctx.getState().optionsPanelVisible\n        });\n    };\n    ShareLinkState.prototype.resetShareLinkState = function (ctx) {\n        return ctx.patchState(__assign({}, ctx.getState(), defaultState));\n    };\n    __decorate([\n        Action(CreateShareableLink),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, UpdateShareableLink]),\n        __metadata(\"design:returntype\", void 0)\n    ], ShareLinkState.prototype, \"createShareableLink\", null);\n    __decorate([\n        Action(UpdateShareableLink),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, UpdateShareableLink]),\n        __metadata(\"design:returntype\", void 0)\n    ], ShareLinkState.prototype, \"updateLink\", null);\n    __decorate([\n        Action(LoadShareableLink),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, LoadShareableLink]),\n        __metadata(\"design:returntype\", void 0)\n    ], ShareLinkState.prototype, \"loadShareableLink\", null);\n    __decorate([\n        Action(DeleteShareableLink),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], ShareLinkState.prototype, \"deleteShareableLink\", null);\n    __decorate([\n        Action(ToggleOptionsPanel),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], ShareLinkState.prototype, \"toggleOptionsPanel\", null);\n    __decorate([\n        Action(ResetShareLinkState, { cancelUncompleted: true }),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], ShareLinkState.prototype, \"resetShareLinkState\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], ShareLinkState, \"loading\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], ShareLinkState, \"link\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], ShareLinkState, \"optionsVisible\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], ShareLinkState, \"backendErrors\", null);\n    ShareLinkState = __decorate([\n        State({\n            name: 'shareLink',\n            defaults: defaultState\n        }),\n        __metadata(\"design:paramtypes\", [Store,\n            Settings,\n            ShareableLinksApiService])\n    ], ShareLinkState);\n    return ShareLinkState;\n}());\nexport { ShareLinkState };\n","import { Action, Selector, State, StateContext, Store } from '@ngxs/store';\r\nimport { ShareableLinkOptions } from './models/shareable-link-options';\r\nimport { ShareableLinksApiService } from './shareable-links-api.service';\r\nimport { ShareableLink } from './models/shareable-link';\r\nimport { finalize, tap } from 'rxjs/operators';\r\nimport { DriveState } from '../../state/drive-state';\r\nimport { Settings } from 'common/core/config/settings.service';\r\nimport { BackendErrorMessages } from 'common/core/types/backend-error-response';\r\n\r\nexport interface ShareLinkStateModel {\r\n    cache: {[key: number]: ShareableLink};\r\n    backendErrors: BackendErrorMessages;\r\n    link: ShareableLink;\r\n    loading: boolean;\r\n    linkOptions: ShareableLinkOptions;\r\n    optionsPanelVisible: boolean;\r\n}\r\n\r\nexport class LoadShareableLink {\r\n    static readonly type = '[Shareable Link] Load From Backend';\r\n    constructor(public options: {autoCreate?: boolean} = {}) {}\r\n}\r\n\r\nexport class UpdateShareableLink {\r\n    static readonly type = '[Shareable Link] Update';\r\n    constructor(public options: ShareableLinkOptions) {}\r\n}\r\n\r\nexport class CreateShareableLink {\r\n    static readonly type = '[Shareable Link] Create';\r\n    constructor(public options: ShareableLinkOptions) {}\r\n}\r\n\r\nexport class DeleteShareableLink {\r\n    static readonly type = '[Shareable Link] Delete';\r\n}\r\n\r\nexport class ToggleOptionsPanel {\r\n    static readonly type = '[Shareable Link] Toggle Options Panel Visibility';\r\n}\r\n\r\nexport class LinkCopySuccess {\r\n    static readonly type = '[Shareable Link] Copy To Clipboard Success';\r\n}\r\n\r\nexport class ResetShareLinkState {\r\n    static readonly type = '[Shareable Link] Reset State';\r\n}\r\n\r\nconst defaultState = {\r\n    link: null,\r\n    loading: false,\r\n    optionsPanelVisible: true,\r\n    backendErrors: {},\r\n    cache: {},\r\n    linkOptions: {\r\n        allowDownload: false,\r\n        allowEdit: false,\r\n        expiresAt: null,\r\n        password: null,\r\n    }\r\n};\r\n\r\n@State<ShareLinkStateModel>({\r\n    name: 'shareLink',\r\n    defaults: defaultState\r\n})\r\nexport class ShareLinkState {\r\n    constructor(\r\n        private store: Store,\r\n        private settings: Settings,\r\n        private linksApi: ShareableLinksApiService\r\n    ) {}\r\n\r\n    @Selector()\r\n    static loading(state: ShareLinkStateModel) {\r\n        return state.loading;\r\n    }\r\n\r\n    @Selector()\r\n    static link(state: ShareLinkStateModel) {\r\n        return state.link;\r\n    }\r\n\r\n    @Selector()\r\n    static optionsVisible(state: ShareLinkStateModel) {\r\n        return ! state.loading && state.optionsPanelVisible;\r\n    }\r\n\r\n    @Selector()\r\n    static backendErrors(state: ShareLinkStateModel) {\r\n        return state.backendErrors;\r\n    }\r\n\r\n    @Action(CreateShareableLink)\r\n    createShareableLink(ctx: StateContext<ShareLinkStateModel>, action: UpdateShareableLink) {\r\n        const entryId = this.store.selectSnapshot(DriveState.selectedEntryIds)[0];\r\n\r\n        ctx.patchState({loading: true});\r\n\r\n        return this.linksApi.create(entryId, action.options)\r\n            .pipe(\r\n                finalize(ctx.patchState({loading: false, backendErrors: {}})),\r\n                tap(response => {\r\n                    const link = response.link;\r\n                    ctx.patchState({\r\n                        cache: {...ctx.getState().cache, [link.entry_id]: link},\r\n                        link: response.link,\r\n                        optionsPanelVisible: false\r\n                    });\r\n                }, errorResponse => {\r\n                    ctx.patchState({backendErrors: errorResponse.messages});\r\n                })\r\n            );\r\n    }\r\n\r\n    @Action(UpdateShareableLink)\r\n    updateLink(ctx: StateContext<ShareLinkStateModel>, action: UpdateShareableLink) {\r\n        const link = ctx.getState().link;\r\n\r\n        ctx.patchState({loading: true});\r\n\r\n        return this.linksApi.update(link.id, action.options)\r\n            .pipe(\r\n                finalize(ctx.patchState({loading: false, backendErrors: {}})),\r\n                tap(response => ctx.patchState({\r\n                    link: response.link,\r\n                    cache: {...ctx.getState().cache, [link.entry_id]: response.link},\r\n                    optionsPanelVisible: false\r\n                }), errorResponse => {\r\n                    ctx.patchState({backendErrors: errorResponse.messages});\r\n                })\r\n            );\r\n    }\r\n\r\n    @Action(LoadShareableLink)\r\n    loadShareableLink(ctx: StateContext<ShareLinkStateModel>, action: LoadShareableLink) {\r\n        const entryId = this.store.selectSnapshot(DriveState.selectedEntryIds)[0],\r\n            cachedLink = ctx.getState().cache[entryId];\r\n\r\n        if (cachedLink) {\r\n            return ctx.patchState({link: cachedLink, optionsPanelVisible: false});\r\n        }\r\n\r\n        ctx.patchState({loading: true});\r\n\r\n        return this.linksApi.findByEntryId(entryId, {autoCreate: action.options.autoCreate})\r\n            .pipe(\r\n                finalize(() => ctx.patchState({loading: false})),\r\n                tap(response => ctx.patchState({\r\n                    link: response.link,\r\n                    optionsPanelVisible: false,\r\n                    cache: {...ctx.getState().cache, [response.link.entry_id]: response.link},\r\n                }), () => {})\r\n            );\r\n    }\r\n\r\n    @Action(DeleteShareableLink)\r\n    deleteShareableLink(ctx: StateContext<ShareLinkStateModel>) {\r\n        const link = ctx.getState().link;\r\n\r\n        ctx.patchState({loading: true});\r\n\r\n        return this.linksApi.delete(link.id)\r\n            .pipe(\r\n                finalize(ctx.patchState({loading: false})),\r\n                tap(() => {\r\n                    const cache = ctx.getState().cache;\r\n                    delete cache[link.entry_id];\r\n\r\n                    ctx.patchState({\r\n                        link: null,\r\n                        cache: cache,\r\n                    });\r\n                })\r\n            );\r\n    }\r\n\r\n    @Action(ToggleOptionsPanel)\r\n    toggleOptionsPanel(ctx: StateContext<ShareLinkStateModel>) {\r\n        ctx.patchState({\r\n           optionsPanelVisible: !ctx.getState().optionsPanelVisible\r\n        });\r\n    }\r\n\r\n    @Action(ResetShareLinkState, {cancelUncompleted: true})\r\n    resetShareLinkState(ctx: StateContext<ShareLinkStateModel>) {\r\n        return ctx.patchState({...ctx.getState(), ...defaultState});\r\n    }\r\n}\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, Inject } from '@angular/core';\nimport { MAT_SNACK_BAR_DATA } from '@angular/material';\n\n@Component({\n    selector: 'loading-toast',\n    templateUrl: './loading-toast.component.html',\n    styleUrls: ['./loading-toast.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LoadingToastComponent {\n    constructor(@Inject(MAT_SNACK_BAR_DATA) public data: {message: string}) {}\n}\n","import { Actions, ofAction, ofActionSuccessful, Store } from '@ngxs/store';\r\nimport { AddStar, HideLoadingToast, RemoveStar, RestoreTrashedEntries, ShowLoadingToast } from '../actions/commands';\r\nimport {\r\n    EntryRenamed,\r\n    FileDeleteSuccess,\r\n    MoveEntriesFailed,\r\n    MoveEntriesSuccess,\r\n    NewFolderCreated, NotEnoughSpaceError,\r\n    TrashedEntriesDeleteSuccess,\r\n    TrashedEntriesRestoreSuccess\r\n} from '../actions/events';\r\nimport { Toast } from 'common/core/ui/toast.service';\r\nimport { LinkCopySuccess } from '../../sharing/links/share-link.state';\r\nimport { Router } from '@angular/router';\r\nimport { LoadingToastComponent } from '../../messages/loading-toast/loading-toast.component';\r\nimport { MatSnackBarRef } from '@angular/material';\r\n\r\nexport class ToastHandler {\r\n    constructor(\r\n        private actions$: Actions,\r\n        private toast: Toast,\r\n        private store: Store,\r\n        private router: Router,\r\n    ) {\r\n        this.entriesDeleted();\r\n        this.entriesStarred();\r\n        this.entriesUnstarred();\r\n        this.entriesMoveFailed();\r\n        this.folderCreated();\r\n        this.entriesMoved();\r\n        this.entriesDeletedForever();\r\n        this.entriesRestoredFromTrash();\r\n        this.entryRenamed();\r\n        this.linkCopiedToClipboard();\r\n        this.notEnoughSpace();\r\n        this.loadingToast();\r\n    }\r\n\r\n    private entriesDeleted() {\r\n        this.actions$\r\n            .pipe(ofAction(FileDeleteSuccess))\r\n            .subscribe((action: FileDeleteSuccess) => {\r\n                this.toast.open(`Deleted ${action.deletedFiles.length} items`, {action: 'UNDO'})\r\n                    .onAction().subscribe(() => {\r\n                        this.store.dispatch(new RestoreTrashedEntries(action.deletedFiles));\r\n                    });\r\n            });\r\n    }\r\n\r\n    private entriesStarred() {\r\n        this.actions$\r\n            .pipe(ofActionSuccessful(AddStar))\r\n            .subscribe((action: AddStar) => {\r\n                this.toast.open(`Star added.`, {action: 'UNDO'}).onAction()\r\n                    .subscribe(() => {\r\n                        this.store.dispatch(new RemoveStar(action.entries));\r\n                    });\r\n            });\r\n    }\r\n\r\n    private entriesUnstarred() {\r\n        this.actions$\r\n            .pipe(ofActionSuccessful(RemoveStar))\r\n            .subscribe((action: RemoveStar) => {\r\n                this.toast.open(`Star Removed.`, {action: 'UNDO'}).onAction()\r\n                    .subscribe(() => {\r\n                        this.store.dispatch(new AddStar(action.entries));\r\n                    });\r\n            });\r\n    }\r\n\r\n    private entriesMoved() {\r\n        this.actions$.pipe(ofAction(MoveEntriesSuccess))\r\n            .subscribe((action: MoveEntriesSuccess) => {\r\n                this.toast.open(`Moved ${action.entries.length} items.`, {action: 'Undo'});\r\n            });\r\n    }\r\n\r\n    private entriesMoveFailed() {\r\n        this.actions$.pipe(ofAction(MoveEntriesFailed))\r\n            .subscribe(() => {\r\n                this.toast.open('There was an issue with moving selected items.');\r\n            });\r\n    }\r\n\r\n    private folderCreated() {\r\n        this.actions$.pipe(ofAction(NewFolderCreated))\r\n            .subscribe(() => {\r\n                this.toast.open('Folder created.');\r\n            });\r\n    }\r\n\r\n    private entriesDeletedForever() {\r\n        this.actions$.pipe(ofActionSuccessful(TrashedEntriesDeleteSuccess))\r\n            .subscribe((action: TrashedEntriesDeleteSuccess) => {\r\n                this.toast.open(`Permanently deleted ${action.entries.length} items.`);\r\n            });\r\n    }\r\n\r\n    private entriesRestoredFromTrash() {\r\n        this.actions$.pipe(ofActionSuccessful(TrashedEntriesRestoreSuccess))\r\n            .subscribe((action: TrashedEntriesRestoreSuccess) => {\r\n                this.toast.open(`Restored ${action.entries.length} items.`);\r\n            });\r\n    }\r\n\r\n    private entryRenamed() {\r\n        this.actions$.pipe(ofActionSuccessful(EntryRenamed))\r\n            .subscribe((action: EntryRenamed) => {\r\n                this.toast.open(`${action.entry.name} renamed to ${action.newName}`);\r\n            });\r\n\r\n    }\r\n\r\n    private linkCopiedToClipboard() {\r\n        this.actions$.pipe(ofActionSuccessful(LinkCopySuccess))\r\n            .subscribe(() => {\r\n                this.toast.open(`Link copied to clipboard.`);\r\n            });\r\n    }\r\n\r\n    private notEnoughSpace() {\r\n        this.actions$.pipe(ofActionSuccessful(NotEnoughSpaceError))\r\n            .subscribe(() => {\r\n                this.toast.open(`You are out of space. Try to delete some files.`, {action: 'Upgrade'})\r\n                    .onAction().subscribe(() => {\r\n                        this.router.navigate(['/billing/upgrade']);\r\n                    });\r\n            });\r\n    }\r\n\r\n    private loadingToast() {\r\n        let toastRef: MatSnackBarRef<any>;\r\n\r\n        this.actions$.pipe(ofActionSuccessful(ShowLoadingToast))\r\n            .subscribe((action: ShowLoadingToast) => {\r\n                toastRef = this.toast.openComponent(LoadingToastComponent, {duration: 0, data: {message: action.message}});\r\n            });\r\n\r\n        this.actions$.pipe(ofActionSuccessful(HideLoadingToast))\r\n            .subscribe(() => {\r\n                if (toastRef) {\r\n                    toastRef.dismiss();\r\n                    toastRef = null;\r\n                }\r\n            });\r\n\r\n    }\r\n}\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, OnDestroy, NgZone } from '@angular/core';\nimport { UploadQueueService } from 'common/uploads/upload-queue/upload-queue.service';\nimport { UploadQueueItem } from 'common/uploads/upload-queue/upload-queue-item';\nimport { Store } from '@ngxs/store';\nimport { CloseUploadsPanel } from '../../state/actions/commands';\nimport { BehaviorSubject } from 'rxjs';\n\n@Component({\n    selector: 'uploads-panel',\n    templateUrl: './uploads-panel.component.html',\n    styleUrls: ['./uploads-panel.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UploadsPanelComponent implements OnDestroy {\n    public minimized$ = new BehaviorSubject(false);\n\n    constructor(\n        private store: Store,\n        public activeUploads: UploadQueueService,\n        private zone: NgZone,\n    ) {}\n\n    ngOnDestroy() {\n        this.activeUploads.reset();\n    }\n\n    public toggleMinimized() {\n       this.zone.run(() => {\n           this.minimized$.next(!this.minimized$.value);\n       });\n    }\n\n    public close() {\n        this.store.dispatch(new CloseUploadsPanel());\n    }\n\n    public trackById(index: number, upload: UploadQueueItem) {\n        return upload.id;\n    }\n}\n","import { Actions, ofActionSuccessful } from '@ngxs/store';\r\nimport { CloseUploadsPanel, OpenUploadsPanel } from '../actions/commands';\r\nimport { OverlayPanel } from 'common/core/ui/overlay-panel/overlay-panel.service';\r\nimport { UploadsPanelComponent } from '../../uploads/uploads-panel/uploads-panel.component';\r\nimport { OverlayPanelRef } from 'common/core/ui/overlay-panel/overlay-panel-ref';\r\nimport { CurrentUser } from 'common/auth/current-user';\r\nimport { OverlayPanelConfig } from 'common/core/ui/overlay-panel/overlay-panel-config';\r\n\r\nconst overlayConfig: OverlayPanelConfig = {\r\n    origin: 'global',\r\n    hasBackdrop: false,\r\n    position: {right: '10px', bottom: '10px'},\r\n    mobilePosition: {left: 0, bottom: 0}\r\n};\r\n\r\nexport class UploadPanelHandler {\r\n    private uploadPanelRef: OverlayPanelRef;\r\n\r\n    constructor(\r\n        private actions$: Actions,\r\n        private currentUser: CurrentUser,\r\n        private overlayPanel: OverlayPanel,\r\n    ) {\r\n        this.actions$\r\n            .pipe(ofActionSuccessful(OpenUploadsPanel))\r\n            .subscribe(() => {\r\n                this.openUploadsPanel();\r\n            });\r\n\r\n        this.actions$\r\n            .pipe(ofActionSuccessful(CloseUploadsPanel))\r\n            .subscribe(() => {\r\n               this.closeUploadsPanel();\r\n            });\r\n\r\n        this.currentUser.userChanged.subscribe(() => {\r\n            this.closeUploadsPanel();\r\n        });\r\n    }\r\n\r\n    public openUploadsPanel() {\r\n        if (this.uploadPanelRef) return;\r\n        this.uploadPanelRef = this.overlayPanel\r\n            .open(UploadsPanelComponent, overlayConfig);\r\n    }\r\n\r\n    private closeUploadsPanel() {\r\n        if ( ! this.uploadPanelRef) return;\r\n        this.uploadPanelRef.close();\r\n        this.uploadPanelRef = null;\r\n    }\r\n}\r\n","import { Actions, ofActionDispatched, Store } from '@ngxs/store';\r\nimport { OpenConfirmDialog, OpenDialog } from '../actions/commands';\r\nimport { NgZone } from '@angular/core';\r\nimport { Modal } from 'common/core/ui/dialogs/modal.service';\r\nimport { ConfirmModalComponent } from 'common/core/ui/confirm-modal/confirm-modal.component';\r\n\r\nexport class DialogHandler {\r\n    constructor(\r\n        private actions$: Actions,\r\n        private dialog: Modal,\r\n        private zone: NgZone,\r\n        private store: Store,\r\n    ) {\r\n        this.actions$.pipe(ofActionDispatched(OpenDialog))\r\n            .subscribe((action: OpenDialog) => {\r\n                this.zone.run(() => {\r\n                    this.dialog.open(action.dialog, action.data, action.config);\r\n                });\r\n            });\r\n\r\n        this.actions$.pipe(ofActionDispatched(OpenConfirmDialog))\r\n            .subscribe((action: OpenConfirmDialog) => {\r\n                this.zone.run(() => {\r\n                    this.openConfirmDialog(action);\r\n                });\r\n            });\r\n    }\r\n\r\n    private openConfirmDialog(action: OpenConfirmDialog) {\r\n        this.dialog.open(ConfirmModalComponent, action.data)\r\n            .beforeClose()\r\n            .subscribe(confirmed => {\r\n                if ( ! confirmed) return;\r\n                return this.store.dispatch(action.confirmAction);\r\n            });\r\n    }\r\n}\r\n","import { Actions, ofActionSuccessful } from '@ngxs/store';\r\nimport { ReloadPageEntries } from '../actions/commands';\r\nimport { DriveDomCacheService } from '../../interactions/drive-dom-cache.service';\r\n\r\nexport class ResetScrollHandler {\r\n    constructor(\r\n        private actions$: Actions,\r\n        private domCache: DriveDomCacheService\r\n    ) {\r\n        this.actions$.pipe(ofActionSuccessful(ReloadPageEntries))\r\n            .subscribe(() => {\r\n                this.domCache.scrollCont.scrollTo({top: 0});\r\n            });\r\n    }\r\n}\r\n","import { Store } from '@ngxs/store';\r\nimport { DeselectAllEntries } from '../actions/commands';\r\nimport { DriveState } from '../drive-state';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nexport class PageChangeHandler {\r\n    constructor(\r\n        private store: Store\r\n    ) {\r\n        this.store.select(DriveState.activePage)\r\n            .pipe(filter(page => !!page))\r\n            .subscribe(() => {\r\n                this.store.dispatch(new DeselectAllEntries());\r\n            });\r\n    }\r\n}\r\n","import { Actions, ofActionSuccessful, Store } from '@ngxs/store';\r\nimport { RouterNavigation, RouterState } from '@ngxs/router-plugin';\r\nimport {\r\n    FolderPageOpened,\r\n    RecentEntriesPageOpened, SearchPageOpened,\r\n    SharesFolderOpened,\r\n    StarredPageOpened,\r\n    TrashPageOpened\r\n} from '../actions/events';\r\nimport { DrivePageType } from '../models/available-pages';\r\nimport { DRIVE_PAGE_NAMES } from '../models/drive-page';\r\nimport { filter } from 'rxjs/operators';\r\nimport { CurrentUser } from 'common/auth/current-user';\r\n\r\nconst LINK_PREVIEW_PAGE = 's';\r\n\r\nexport class PageLoadHandler {\r\n    constructor(\r\n        private store: Store,\r\n        private actions$: Actions,\r\n        private currentUser: CurrentUser,\r\n    ) {\r\n        this.actions$\r\n            .pipe(\r\n                ofActionSuccessful(RouterNavigation),\r\n                filter((action: RouterNavigation) => action.event.urlAfterRedirects.indexOf('drive') > -1),\r\n                filter(() => this.currentUser.isLoggedIn()),\r\n            )\r\n            .subscribe(() => {\r\n                const action = this.getPageLoadAction();\r\n                if (action) this.store.dispatch(action);\r\n            });\r\n    }\r\n\r\n    private getPageLoadAction() {\r\n        const params = this.getPageUriParams();\r\n\r\n        switch (params.pageName) {\r\n            case DRIVE_PAGE_NAMES.RECENT:\r\n                return new RecentEntriesPageOpened();\r\n            case DRIVE_PAGE_NAMES.TRASH:\r\n                return new TrashPageOpened();\r\n            case DRIVE_PAGE_NAMES.SHARES:\r\n                return new SharesFolderOpened();\r\n            case DRIVE_PAGE_NAMES.STARRED:\r\n                return new StarredPageOpened();\r\n            case DRIVE_PAGE_NAMES.SEARCH:\r\n                const state = this.store.selectSnapshot(RouterState.state),\r\n                    search = state.root.firstChild.queryParams;\r\n                return new SearchPageOpened({type: search.type, query: search.query});\r\n            case LINK_PREVIEW_PAGE:\r\n                return null;\r\n            default:\r\n                return new FolderPageOpened(params.folderHash || 'root');\r\n        }\r\n    }\r\n\r\n    private getPageUriParams() {\r\n        // remove query params\r\n        const uri = this.store.selectSnapshot(RouterState.url).split('?')[0];\r\n\r\n        // current drive uri parts\r\n        let parts = uri.split('/');\r\n\r\n        // remove empty parts\r\n        parts = parts.filter(x => !!x);\r\n\r\n        return {pageName: parts[1] as DrivePageType|string, folderHash: parts[2]};\r\n    }\r\n}\r\n","import { Actions, ofActionSuccessful, Store } from '@ngxs/store';\r\nimport { RemoveEntries, RemoveStar } from '../actions/commands';\r\nimport { filter } from 'rxjs/operators';\r\nimport { DriveState } from '../drive-state';\r\nimport { DRIVE_PAGE_NAMES } from '../models/drive-page';\r\n\r\nexport class RemoveStarHandler {\r\n    constructor(\r\n        private actions$: Actions,\r\n        private store: Store\r\n    ) {\r\n        this.actions$.pipe(ofActionSuccessful(RemoveStar))\r\n            .pipe(filter(() => {\r\n                const name = this.store.selectSnapshot(DriveState.activePage).name;\r\n                return name === DRIVE_PAGE_NAMES.RECENT;\r\n            }))\r\n            .subscribe((action: RemoveStar) => {\r\n                this.store.dispatch(new RemoveEntries(action.entries));\r\n            });\r\n    }\r\n}\r\n","import { Injector, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DriveRoutingModule } from './drive-routing.module';\nimport { DriveComponent } from './drive.component';\nimport {\n    MatAutocompleteModule,\n    MatButtonModule,\n    MatDialogModule,\n    MatIconModule,\n    MatProgressBarModule, MatProgressSpinnerModule,\n    MatSelectModule,\n    MatSidenavModule,\n    MatSortModule,\n    MatTableModule,\n    MatTabsModule,\n    MatTooltipModule,\n    MatTreeModule\n} from '@angular/material';\nimport { SidebarComponent } from './sidebar/sidebar.component';\nimport { FoldersTreeComponent } from './sidebar/folders-tree/folders-tree.component';\nimport { UiModule } from 'common/core/ui/ui.module';\nimport { FilesGridComponent } from './files/components/files-grid/files-grid.component';\nimport { FileThumbnailComponent } from './files/components/file-thumbnail/file-thumbnail.component';\nimport { FilesGridItemComponent } from './files/components/files-grid/files-grid-item/files-grid-item.component';\nimport { DriveHammerInteractionsDirective } from './interactions/drive-hammer-interactions.directive';\nimport { FileIconComponent } from './files/components/file-icon/file-icon.component';\nimport { AVAILABLE_CONTEXT_MENUS } from 'common/core/ui/context-menu/available-context-menus';\nimport { DRIVE_CONTEXT_MENUS } from './context-actions/drive-context-menus';\nimport { DriveContextMenuComponent } from './context-actions/components/drive-context-menu/drive-context-menu.component';\nimport { SidebarActionButtonsComponent } from './sidebar/sidebar-action-buttons/sidebar-action-buttons.component';\nimport { CrupdateFolderDialogComponent } from './folders/components/crupdate-folder-dialog/crupdate-folder-dialog.component';\nimport { RenameEntryDialogComponent } from './entries/rename-entry-dialog/rename-entry-dialog.component';\nimport { EntryDragPreviewComponent } from './interactions/entry-drag-preview/entry-drag-preview.component';\nimport { EntryBreadcrumbsComponent } from './drive-toolbar/entry-breadcrumbs/entry-breadcrumbs.component';\nimport { UploadsPanelComponent } from './uploads/uploads-panel/uploads-panel.component';\nimport { UploadsModule } from 'common/uploads/uploads.module';\nimport { MoveEntriesDialogComponent } from './entries/move-entries-dialog/move-entries-dialog.component';\nimport { FolderDropTargetDirective } from './interactions/drop-targets/folder-drop-target.directive';\nimport { DriveToolbarComponent } from './drive-toolbar/drive-toolbar.component';\nimport { ToolbarActionsComponent } from './drive-toolbar/toolbar-actions/toolbar-actions.component';\nimport { MainSearchbarComponent } from './search/main-searchbar/main-searchbar.component';\nimport { UploadDropzoneComponent } from './uploads/upload-dropzone/upload-dropzone.component';\nimport { EntriesContainerComponent } from './entries/entries-container/entries-container.component';\nimport { DetailsPanelComponent } from './details-sidebar/details-panel/details-panel.component';\nimport { FilePreviewOverlayComponent } from './preview/file-preview-overlay/file-preview-overlay.component';\nimport { FilePreviewModule } from 'common/file-preview/file-preview.module';\nimport { FilePreviewToolbarComponent } from './preview/file-preview-overlay/file-preview-toolbar/file-preview-toolbar.component';\nimport { OverlayHandler } from './state/handlers/overlay-handler';\nimport { DownloadHandler } from './state/handlers/donwlod-handler';\nimport { ToastHandler } from './state/handlers/toast-handler';\nimport { UploadPanelHandler } from './state/handlers/upload-panel-handler';\nimport { DialogHandler } from './state/handlers/dialog-handler';\nimport { SharingModule } from './sharing/sharing.module';\nimport { DetailsSidebarComponent } from './details-sidebar/details-sidebar.component';\nimport { FileListHeaderComponent } from './header/file-list-header/file-list-header.component';\nimport { DriveInfiniteScrollDirective } from './interactions/drive-infinite-scroll.directive';\nimport { ResetScrollHandler } from './state/handlers/reset-scroll-handler';\nimport { FilesListComponent } from './files/components/files-list/files-list.component';\nimport { ToggleSelectedClassDirective } from './interactions/toggle-selected-class.directive';\nimport { PageChangeHandler } from './state/handlers/page-change-handler';\nimport { PageLoadHandler } from './state/handlers/page-load-handler';\nimport { RemoveStarHandler } from './state/handlers/remove-star-handler';\nimport { NoFolderEntriesComponent } from './messages/no-folder-entries/no-folder-entries.component';\nimport { NoTrashedEntriesComponent } from './messages/no-trashed-entries/no-trashed-entries.component';\nimport { NoStarredEntriesComponent } from './messages/no-starred-entries/no-starred-entries.component';\nimport { NoRecentEntriesComponent } from './messages/no-recent-entries/no-recent-entries.component';\nimport { UploadsPanelItemComponent } from './uploads/uploads-panel/uploads-panel-item/uploads-panel-item.component';\nimport { NgxsModule } from '@ngxs/store';\nimport { ShareDialogState } from './sharing/state/share-dialog.state';\nimport { ShareLinkState } from './sharing/links/share-link.state';\nimport { DriveState } from './state/drive-state';\nimport { Settings } from 'common/core/config/settings.service';\nimport { ContextMenu } from 'common/core/ui/context-menu/context-menu.service';\nimport { UploadInputConfig } from 'common/uploads/upload-input-config';\nimport { OverlayPanel } from 'common/core/ui/overlay-panel/overlay-panel.service';\nimport { PreviewFilesService } from 'common/file-preview/preview-files.service';\nimport { AvailableSpaceIndicatorComponent } from './sidebar/available-space-indicator/available-space-indicator.component';\nimport { LoadingToastComponent } from './messages/loading-toast/loading-toast.component';\nimport { Toast } from 'common/core/ui/toast.service';\nimport { LinkPreviewContainerComponent } from './preview/link-preview-container/link-preview-container.component';\nimport { LinkPreviewPasswordPanelComponent } from './preview/link-preview-container/link-preview-password-panel/link-preview-password-panel.component';\nimport { ContextActionsContainerComponent } from './context-actions/components/context-actions-container/context-actions-container.component';\nimport { DRIVE_UPLOAD_INPUT_CONFIG } from './upload-input-config';\nimport { NoSearchEntriesComponent } from './messages/no-search-entries/no-search-entries.component';\n\nexport const STATE_HANDLERS = [\n    OverlayHandler,\n    DownloadHandler,\n    ToastHandler,\n    UploadPanelHandler,\n    DialogHandler,\n    ResetScrollHandler,\n    PageChangeHandler,\n    PageLoadHandler,\n    RemoveStarHandler,\n];\n\n@NgModule({\n    imports: [\n        CommonModule,\n        UiModule,\n        UploadsModule,\n        DriveRoutingModule,\n        FilePreviewModule,\n        SharingModule,\n\n        // material\n        MatSidenavModule,\n        MatTreeModule,\n        MatButtonModule,\n        MatDialogModule,\n        MatProgressBarModule,\n        MatIconModule,\n        MatTooltipModule,\n        MatAutocompleteModule,\n        MatTabsModule,\n        MatSelectModule,\n        MatTableModule,\n        MatSortModule,\n        MatProgressSpinnerModule,\n\n        // state\n        NgxsModule.forFeature([\n            DriveState,\n            ShareDialogState,\n            ShareLinkState,\n        ]),\n    ],\n    declarations: [\n        DriveComponent,\n        SidebarComponent,\n        FoldersTreeComponent,\n        FilesGridComponent,\n        FileThumbnailComponent,\n        DriveHammerInteractionsDirective,\n        FilesGridItemComponent,\n        FileIconComponent,\n        DriveContextMenuComponent,\n        SidebarActionButtonsComponent,\n        CrupdateFolderDialogComponent,\n        RenameEntryDialogComponent,\n        EntryDragPreviewComponent,\n        DriveToolbarComponent,\n        EntryBreadcrumbsComponent,\n        UploadsPanelComponent,\n        MoveEntriesDialogComponent,\n        FolderDropTargetDirective,\n        ToolbarActionsComponent,\n        MainSearchbarComponent,\n        UploadDropzoneComponent,\n        NoFolderEntriesComponent,\n        NoTrashedEntriesComponent,\n        NoStarredEntriesComponent,\n        NoRecentEntriesComponent,\n        NoSearchEntriesComponent,\n        EntriesContainerComponent,\n        DetailsSidebarComponent,\n        DetailsPanelComponent,\n        FilePreviewOverlayComponent,\n        FilePreviewToolbarComponent,\n        FileListHeaderComponent,\n        DriveInfiniteScrollDirective,\n        FilesListComponent,\n        ToggleSelectedClassDirective,\n        UploadsPanelItemComponent,\n        AvailableSpaceIndicatorComponent,\n        LoadingToastComponent,\n        LinkPreviewContainerComponent,\n        LinkPreviewPasswordPanelComponent,\n        ContextActionsContainerComponent,\n    ],\n    entryComponents: [\n        DriveContextMenuComponent,\n        CrupdateFolderDialogComponent,\n        RenameEntryDialogComponent,\n        UploadsPanelComponent,\n        MoveEntriesDialogComponent,\n        FilePreviewOverlayComponent,\n        LoadingToastComponent,\n    ],\n    providers: [\n        // fix angular lazy loaded entry components issue\n        ContextMenu,\n        OverlayPanel,\n        PreviewFilesService,\n        Toast,\n\n        // handlers\n        ...STATE_HANDLERS,\n        {\n            provide: AVAILABLE_CONTEXT_MENUS,\n            useValue: DRIVE_CONTEXT_MENUS,\n            multi: true,\n        },\n        {\n            provide: DRIVE_UPLOAD_INPUT_CONFIG,\n            deps: [Settings],\n            useFactory: (settings) => {\n                const uploadInputConfig: UploadInputConfig = {multiple: true};\n\n                const extensions = settings.getJson('drive.validation.allowed_extensions');\n                if (extensions) {\n                    uploadInputConfig.extensions = extensions.map(ext => '.' + ext);\n                }\n\n                return uploadInputConfig;\n            },\n        },\n    ]\n})\nexport class DriveModule {\n    constructor(private injector: Injector) {\n        STATE_HANDLERS.forEach(handler => this.injector.get(handler));\n    }\n}\n","import { Injector } from '@angular/core';\nimport { DRIVE_CONTEXT_MENUS } from './context-actions/drive-context-menus';\nimport { OverlayHandler } from './state/handlers/overlay-handler';\nimport { DownloadHandler } from './state/handlers/donwlod-handler';\nimport { ToastHandler } from './state/handlers/toast-handler';\nimport { UploadPanelHandler } from './state/handlers/upload-panel-handler';\nimport { DialogHandler } from './state/handlers/dialog-handler';\nimport { ResetScrollHandler } from './state/handlers/reset-scroll-handler';\nimport { PageChangeHandler } from './state/handlers/page-change-handler';\nimport { PageLoadHandler } from './state/handlers/page-load-handler';\nimport { RemoveStarHandler } from './state/handlers/remove-star-handler';\nexport var STATE_HANDLERS = [\n    OverlayHandler,\n    DownloadHandler,\n    ToastHandler,\n    UploadPanelHandler,\n    DialogHandler,\n    ResetScrollHandler,\n    PageChangeHandler,\n    PageLoadHandler,\n    RemoveStarHandler,\n];\nvar ɵ0 = DRIVE_CONTEXT_MENUS, ɵ1 = function (settings) {\n    var uploadInputConfig = { multiple: true };\n    var extensions = settings.getJson('drive.validation.allowed_extensions');\n    if (extensions) {\n        uploadInputConfig.extensions = extensions.map(function (ext) { return '.' + ext; });\n    }\n    return uploadInputConfig;\n};\nvar DriveModule = /** @class */ (function () {\n    function DriveModule(injector) {\n        var _this = this;\n        this.injector = injector;\n        STATE_HANDLERS.forEach(function (handler) { return _this.injector.get(handler); });\n    }\n    return DriveModule;\n}());\nexport { DriveModule };\nexport { ɵ0, ɵ1 };\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, EventEmitter } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\nimport { ShareableLinksApiService } from '../../../sharing/links/shareable-links-api.service';\nimport { ShareableLink } from '../../../sharing/links/models/shareable-link';\n\n@Component({\n    selector: 'link-preview-password-panel',\n    templateUrl: './link-preview-password-panel.component.html',\n    styleUrls: ['./link-preview-password-panel.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LinkPreviewPasswordPanelComponent {\n    public passwordControl = new FormControl();\n    public passwordError$ = new BehaviorSubject(false);\n\n    @Input() link: ShareableLink;\n    @Output() passwordValid = new EventEmitter(null);\n\n    constructor(private links: ShareableLinksApiService) {}\n\n    public submitPassword() {\n        this.links.checkPassword(this.link.id, this.passwordControl.value)\n            .subscribe(response => {\n               this.handlePasswordCheck(response.matches);\n            }, () => {});\n    }\n\n    private handlePasswordCheck(matches: boolean) {\n        this.passwordError$.next(!matches);\n\n        if (matches) {\n            this.passwordValid.emit(this.passwordControl.value);\n        }\n    }\n}\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./link-preview-password-panel.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../../../../common/core/translations/translate.directive\";\nimport * as i3 from \"../../../../../common/core/translations/translations.service\";\nimport * as i4 from \"../../../../../common/core/config/settings.service\";\nimport * as i5 from \"../../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i6 from \"@angular/material/icon\";\nimport * as i7 from \"@angular/forms\";\nimport * as i8 from \"@angular/common\";\nimport * as i9 from \"../../../../../../node_modules/@angular/material/button/typings/index.ngfactory\";\nimport * as i10 from \"@angular/material/button\";\nimport * as i11 from \"@angular/cdk/platform\";\nimport * as i12 from \"@angular/cdk/a11y\";\nimport * as i13 from \"@angular/platform-browser/animations\";\nimport * as i14 from \"./link-preview-password-panel.component\";\nimport * as i15 from \"../../../sharing/links/shareable-links-api.service\";\nvar styles_LinkPreviewPasswordPanelComponent = [i0.styles];\nvar RenderType_LinkPreviewPasswordPanelComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_LinkPreviewPasswordPanelComponent, data: {} });\nexport { RenderType_LinkPreviewPasswordPanelComponent as RenderType_LinkPreviewPasswordPanelComponent };\nfunction View_LinkPreviewPasswordPanelComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 2, \"div\", [[\"class\", \"error\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(1, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Password does not match.\"]))], null, null); }\nexport function View_LinkPreviewPasswordPanelComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"password-custom\"]], [[2, \"mat-icon-inline\", null]], null, null, i5.View_MatIcon_0, i5.RenderType_MatIcon)), i1.ɵdid(1, 638976, null, 0, i6.MatIcon, [i1.ElementRef, i6.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵeld(3, 0, null, null, 37, \"form\", [[\"class\", \"content\"], [\"ngNativeValidate\", \"\"]], [[2, \"ng-untouched\", null], [2, \"ng-touched\", null], [2, \"ng-pristine\", null], [2, \"ng-dirty\", null], [2, \"ng-valid\", null], [2, \"ng-invalid\", null], [2, \"ng-pending\", null]], [[null, \"ngSubmit\"], [null, \"submit\"], [null, \"reset\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"submit\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 4).onSubmit($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"reset\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 4).onReset() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"ngSubmit\" === en)) {\n        var pd_2 = (_co.submitPassword() !== false);\n        ad = (pd_2 && ad);\n    } return ad; }, null, null)), i1.ɵdid(4, 4210688, null, 0, i7.NgForm, [[8, null], [8, null]], null, { ngSubmit: \"ngSubmit\" }), i1.ɵprd(2048, null, i7.ControlContainer, null, [i7.NgForm]), i1.ɵdid(6, 16384, null, 0, i7.NgControlStatusGroup, [[4, i7.ControlContainer]], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(8, 0, null, null, 2, \"div\", [[\"class\", \"message\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(9, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"The link you are trying to access is password protected.\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(12, 0, null, null, 15, \"div\", [[\"class\", \"input-container\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(14, 0, null, null, 2, \"label\", [[\"class\", \"hidden\"], [\"for\", \"password\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(15, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Password\"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(18, 0, null, null, 8, \"input\", [[\"id\", \"password\"], [\"placeholder\", \"Password\"], [\"required\", \"\"], [\"trans-placeholder\", \"\"], [\"type\", \"password\"]], [[1, \"required\", 0], [2, \"ng-untouched\", null], [2, \"ng-touched\", null], [2, \"ng-pristine\", null], [2, \"ng-dirty\", null], [2, \"ng-valid\", null], [2, \"ng-invalid\", null], [2, \"ng-pending\", null]], [[null, \"input\"], [null, \"blur\"], [null, \"compositionstart\"], [null, \"compositionend\"]], function (_v, en, $event) { var ad = true; if ((\"input\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 19)._handleInput($event.target.value) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"blur\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 19).onTouched() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"compositionstart\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 19)._compositionStart() !== false);\n        ad = (pd_2 && ad);\n    } if ((\"compositionend\" === en)) {\n        var pd_3 = (i1.ɵnov(_v, 19)._compositionEnd($event.target.value) !== false);\n        ad = (pd_3 && ad);\n    } return ad; }, null, null)), i1.ɵdid(19, 16384, null, 0, i7.DefaultValueAccessor, [i1.Renderer2, i1.ElementRef, [2, i7.COMPOSITION_BUFFER_MODE]], null, null), i1.ɵdid(20, 16384, null, 0, i7.RequiredValidator, [], { required: [0, \"required\"] }, null), i1.ɵprd(1024, null, i7.NG_VALIDATORS, function (p0_0) { return [p0_0]; }, [i7.RequiredValidator]), i1.ɵprd(1024, null, i7.NG_VALUE_ACCESSOR, function (p0_0) { return [p0_0]; }, [i7.DefaultValueAccessor]), i1.ɵdid(23, 540672, null, 0, i7.FormControlDirective, [[6, i7.NG_VALIDATORS], [8, null], [6, i7.NG_VALUE_ACCESSOR], [2, i7.ɵangular_packages_forms_forms_j]], { form: [0, \"form\"] }, null), i1.ɵprd(2048, null, i7.NgControl, null, [i7.FormControlDirective]), i1.ɵdid(25, 16384, null, 0, i7.NgControlStatus, [[4, i7.NgControl]], null, null), i1.ɵdid(26, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(29, 0, null, null, 10, \"div\", [[\"class\", \"button-container\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵand(16777216, null, null, 2, null, View_LinkPreviewPasswordPanelComponent_1)), i1.ɵdid(32, 16384, null, 0, i8.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), i1.ɵpid(131072, i8.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(35, 0, null, null, 3, \"button\", [[\"color\", \"primary\"], [\"mat-raised-button\", \"\"], [\"trans\", \"\"], [\"type\", \"submit\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], null, null, i9.View_MatButton_0, i9.RenderType_MatButton)), i1.ɵdid(36, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), i1.ɵdid(37, 180224, null, 0, i10.MatButton, [i1.ElementRef, i11.Platform, i12.FocusMonitor, [2, i13.ANIMATION_MODULE_TYPE]], { color: [0, \"color\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"Enter\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; var currVal_1 = \"password-custom\"; _ck(_v, 1, 0, currVal_1); var currVal_17 = \"\"; _ck(_v, 20, 0, currVal_17); var currVal_18 = _co.passwordControl; _ck(_v, 23, 0, currVal_18); var currVal_19 = i1.ɵunv(_v, 32, 0, i1.ɵnov(_v, 33).transform(_co.passwordError$)); _ck(_v, 32, 0, currVal_19); var currVal_22 = \"primary\"; _ck(_v, 37, 0, currVal_22); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 1).inline; _ck(_v, 0, 0, currVal_0); var currVal_2 = i1.ɵnov(_v, 6).ngClassUntouched; var currVal_3 = i1.ɵnov(_v, 6).ngClassTouched; var currVal_4 = i1.ɵnov(_v, 6).ngClassPristine; var currVal_5 = i1.ɵnov(_v, 6).ngClassDirty; var currVal_6 = i1.ɵnov(_v, 6).ngClassValid; var currVal_7 = i1.ɵnov(_v, 6).ngClassInvalid; var currVal_8 = i1.ɵnov(_v, 6).ngClassPending; _ck(_v, 3, 0, currVal_2, currVal_3, currVal_4, currVal_5, currVal_6, currVal_7, currVal_8); var currVal_9 = (i1.ɵnov(_v, 20).required ? \"\" : null); var currVal_10 = i1.ɵnov(_v, 25).ngClassUntouched; var currVal_11 = i1.ɵnov(_v, 25).ngClassTouched; var currVal_12 = i1.ɵnov(_v, 25).ngClassPristine; var currVal_13 = i1.ɵnov(_v, 25).ngClassDirty; var currVal_14 = i1.ɵnov(_v, 25).ngClassValid; var currVal_15 = i1.ɵnov(_v, 25).ngClassInvalid; var currVal_16 = i1.ɵnov(_v, 25).ngClassPending; _ck(_v, 18, 0, currVal_9, currVal_10, currVal_11, currVal_12, currVal_13, currVal_14, currVal_15, currVal_16); var currVal_20 = (i1.ɵnov(_v, 37).disabled || null); var currVal_21 = (i1.ɵnov(_v, 37)._animationMode === \"NoopAnimations\"); _ck(_v, 35, 0, currVal_20, currVal_21); }); }\nexport function View_LinkPreviewPasswordPanelComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"link-preview-password-panel\", [], null, null, null, View_LinkPreviewPasswordPanelComponent_0, RenderType_LinkPreviewPasswordPanelComponent)), i1.ɵdid(1, 49152, null, 0, i14.LinkPreviewPasswordPanelComponent, [i15.ShareableLinksApiService], null, null)], null, null); }\nvar LinkPreviewPasswordPanelComponentNgFactory = i1.ɵccf(\"link-preview-password-panel\", i14.LinkPreviewPasswordPanelComponent, View_LinkPreviewPasswordPanelComponent_Host_0, { link: \"link\" }, { passwordValid: \"passwordValid\" }, []);\nexport { LinkPreviewPasswordPanelComponentNgFactory as LinkPreviewPasswordPanelComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"link-preview-password-panel{display:flex;background-color:#fff;color:rgba(0,0,0,.87);padding:25px;border-radius:3px;position:absolute;top:0;left:0;right:0;bottom:0;width:500px;height:192px;max-width:90%;max-height:90%;margin:auto}link-preview-password-panel .content{flex:1 1 auto}link-preview-password-panel .content .message{margin-bottom:8px}link-preview-password-panel .button-container{display:flex;align-items:center;margin-top:10px}link-preview-password-panel .button-container button{margin-left:auto}link-preview-password-panel .mat-icon{width:140px;height:140px;flex:0 0 140px;margin-right:10px;margin-left:-25px}\"];\nexport { styles as styles };\n","<mat-icon svgIcon=\"password-custom\"></mat-icon>\n<form class=\"content\" (ngSubmit)=\"submitPassword()\" ngNativeValidate>\n    <div class=\"message\" trans>The link you are trying to access is password protected.</div>\n    <div class=\"input-container\">\n        <label for=\"password\" class=\"hidden\" trans>Password</label>\n        <input type=\"password\" id=\"password\" placeholder=\"Password\" [formControl]=\"passwordControl\" trans-placeholder required>\n    </div>\n    <div class=\"button-container\">\n        <div class=\"error\" *ngIf=\"passwordError$ | async\" trans>Password does not match.</div>\n        <button type=\"submit\" mat-raised-button color=\"primary\" trans>Enter</button>\n    </div>\n</form>","export const SUPPORTED_ENTRY_TYPES = [\r\n    'audio',\r\n    'video',\r\n    'text',\r\n    'pdf',\r\n    'archive',\r\n    'folder',\r\n    'shared-folder',\r\n    'image'\r\n];\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, OnChanges } from '@angular/core';\nimport { SUPPORTED_ENTRY_TYPES } from '../../../entries/supported-entry-types';\n\n@Component({\n    selector: 'file-icon',\n    templateUrl: './file-icon.component.html',\n    styleUrls: ['./file-icon.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FileIconComponent implements OnChanges {\n    @Input() type: string;\n\n    ngOnChanges() {\n        if (SUPPORTED_ENTRY_TYPES.indexOf(this.type) === -1) {\n            this.type = 'default';\n        }\n    }\n}\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./file-icon.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i3 from \"@angular/common\";\nimport * as i4 from \"@angular/material/icon\";\nimport * as i5 from \"./file-icon.component\";\nvar styles_FileIconComponent = [i0.styles];\nvar RenderType_FileIconComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_FileIconComponent, data: {} });\nexport { RenderType_FileIconComponent as RenderType_FileIconComponent };\nexport function View_FileIconComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 0, null, null, 2, \"mat-icon\", [[\"class\", \"file-color mat-icon\"], [\"role\", \"img\"]], [[2, \"mat-icon-inline\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(1, 278528, null, 0, i3.NgClass, [i1.IterableDiffers, i1.KeyValueDiffers, i1.ElementRef, i1.Renderer2], { klass: [0, \"klass\"], ngClass: [1, \"ngClass\"] }, null), i1.ɵdid(2, 638976, null, 0, i4.MatIcon, [i1.ElementRef, i4.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_1 = \"file-color\"; var currVal_2 = (_co.type + \"-file\"); _ck(_v, 1, 0, currVal_1, currVal_2); var currVal_3 = (_co.type + \"-file-custom\"); _ck(_v, 2, 0, currVal_3); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 2).inline; _ck(_v, 0, 0, currVal_0); }); }\nexport function View_FileIconComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"file-icon\", [], null, null, null, View_FileIconComponent_0, RenderType_FileIconComponent)), i1.ɵdid(1, 573440, null, 0, i5.FileIconComponent, [], null, null)], null, null); }\nvar FileIconComponentNgFactory = i1.ɵccf(\"file-icon\", i5.FileIconComponent, View_FileIconComponent_Host_0, { type: \"type\" }, {}, []);\nexport { FileIconComponentNgFactory as FileIconComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"file-icon{display:inline-block;flex-shrink:0;width:24px;height:24px}file-icon>.mat-icon{width:100%;height:100%}\"];\nexport { styles as styles };\n","<mat-icon\n        [svgIcon]=\"type+'-file-custom'\"\n        class=\"file-color\"\n        [ngClass]=\"type+'-file'\"\n></mat-icon>","import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, EventEmitter } from '@angular/core';\nimport { PreviewFilesService } from 'common/file-preview/preview-files.service';\nimport { Settings } from 'common/core/config/settings.service';\n\n@Component({\n    selector: 'file-preview-toolbar',\n    templateUrl: './file-preview-toolbar.component.html',\n    styleUrls: ['./file-preview-toolbar.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FilePreviewToolbarComponent {\n    @Input() showLogo = false;\n    @Input() disableDownload = false;\n    @Input() showCloseButton = false;\n\n    @Output() closed = new EventEmitter();\n\n    constructor(\n        public previewFiles: PreviewFilesService,\n        public settings: Settings,\n    ) {}\n\n    public downloadFiles() {\n        this.previewFiles.download.next();\n    }\n}\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const CURRENT_PREVIEW_FILE = new InjectionToken<any>('CURRENT_PREVIEW_FILE');\r\n","import { EventEmitter, Inject } from '@angular/core';\r\nimport { CURRENT_PREVIEW_FILE } from './current-preview-file';\r\nimport { FileEntry } from '../uploads/file-entry';\r\nimport { PREVIEW_URL_TRANSFORMER, PreviewUrlTransformer } from './preview-url-transformer';\r\nimport { Settings } from '../core/config/settings.service';\r\nimport { Observable } from 'rxjs';\r\nimport { AppHttpClient } from '../core/http/app-http-client.service';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\n\r\nexport abstract class BaseFilePreview {\r\n    public download = new EventEmitter();\r\n\r\n    constructor(\r\n        @Inject(CURRENT_PREVIEW_FILE) protected file: FileEntry,\r\n        @Inject(PREVIEW_URL_TRANSFORMER) protected transformer: PreviewUrlTransformer,\r\n        protected settings: Settings,\r\n        protected http: AppHttpClient,\r\n        protected sanitizer: DomSanitizer,\r\n    ) {}\r\n\r\n    public getSrc(): string {\r\n        return this.settings.getBaseUrl() + this.transformer(this.file.id);\r\n    }\r\n\r\n    public getSafeSrc(): SafeResourceUrl {\r\n        return this.sanitizer.bypassSecurityTrustResourceUrl(this.getSrc());\r\n    }\r\n\r\n    public getContents(): Observable<string> {\r\n        return this.http.get(this.getSrc(), null, {responseType: 'text'});\r\n    }\r\n}\r\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { BaseFilePreview } from '../base-file-preview';\nvar DefaultPreviewComponent = /** @class */ (function (_super) {\n    __extends(DefaultPreviewComponent, _super);\n    function DefaultPreviewComponent() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    return DefaultPreviewComponent;\n}(BaseFilePreview));\nexport { DefaultPreviewComponent };\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\r\nimport { BaseFilePreview } from '../base-file-preview';\r\n\r\n@Component({\r\n    selector: 'default-preview',\r\n    templateUrl: './default-preview.component.html',\r\n    styleUrls: ['./default-preview.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DefaultPreviewComponent extends BaseFilePreview {\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport type PreviewUrlTransformer = (entryId: number) => string;\r\n\r\nexport const PREVIEW_URL_TRANSFORMER = new InjectionToken<PreviewUrlTransformer>('PREVIEW_URL_TRANSFORMER', {\r\n    factory: () => {\r\n        return entryId => 'secure/uploads/' + entryId;\r\n    },\r\n    providedIn: 'root',\r\n});\r\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { OnInit } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { BaseFilePreview } from '../base-file-preview';\nvar TextPreviewComponent = /** @class */ (function (_super) {\n    __extends(TextPreviewComponent, _super);\n    function TextPreviewComponent() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.className = 'preview-object';\n        _this.content = new BehaviorSubject('');\n        return _this;\n    }\n    TextPreviewComponent.prototype.ngOnInit = function () {\n        var _this = this;\n        this.getContents()\n            .subscribe(function (content) { return _this.content.next(content); });\n    };\n    return TextPreviewComponent;\n}(BaseFilePreview));\nexport { TextPreviewComponent };\n","import { Component, OnInit, ViewEncapsulation, ChangeDetectionStrategy, HostBinding } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { BaseFilePreview } from '../base-file-preview';\r\n\r\n@Component({\r\n    selector: 'text-preview',\r\n    templateUrl: './text-preview.component.html',\r\n    styleUrls: ['./text-preview.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class TextPreviewComponent extends BaseFilePreview implements OnInit {\r\n    @HostBinding('class') className = 'preview-object';\r\n    public content = new BehaviorSubject('');\r\n\r\n    ngOnInit() {\r\n        this.getContents()\r\n            .subscribe(content => this.content.next(content));\r\n    }\r\n}\r\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { ElementRef, OnInit } from '@angular/core';\nimport { BaseFilePreview } from '../base-file-preview';\nvar AudioPreviewComponent = /** @class */ (function (_super) {\n    __extends(AudioPreviewComponent, _super);\n    function AudioPreviewComponent() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.invalidMedia = false;\n        return _this;\n    }\n    AudioPreviewComponent.prototype.ngOnInit = function () {\n        this.invalidMedia = !this.canPlayVideo();\n        if (!this.invalidMedia) {\n            this.player().src = this.getSrc();\n            this.player().play();\n        }\n    };\n    AudioPreviewComponent.prototype.canPlayVideo = function () {\n        return !!this.player().canPlayType(this.file.mime);\n    };\n    AudioPreviewComponent.prototype.player = function () {\n        return this.playerEl.nativeElement;\n    };\n    return AudioPreviewComponent;\n}(BaseFilePreview));\nexport { AudioPreviewComponent };\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, ViewChild, ElementRef, OnInit } from '@angular/core';\r\nimport { FileEntry } from '../../uploads/file-entry';\r\nimport { CURRENT_PREVIEW_FILE } from '../current-preview-file';\r\nimport { BaseFilePreview } from '../base-file-preview';\r\n\r\n@Component({\r\n    selector: 'audio-preview',\r\n    templateUrl: './audio-preview.component.html',\r\n    styleUrls: ['./audio-preview.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AudioPreviewComponent extends BaseFilePreview implements OnInit {\r\n    @ViewChild('playerEl') playerEl: ElementRef;\r\n    public invalidMedia = false;\r\n\r\n    ngOnInit() {\r\n        this.invalidMedia = !this.canPlayVideo();\r\n\r\n        if ( ! this.invalidMedia) {\r\n            this.player().src = this.getSrc();\r\n            this.player().play();\r\n        }\r\n    }\r\n\r\n    protected canPlayVideo(): boolean {\r\n        return !!this.player().canPlayType(this.file.mime);\r\n    }\r\n\r\n    protected player() {\r\n        return this.playerEl.nativeElement as HTMLVideoElement|HTMLAudioElement;\r\n    }\r\n}\r\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { AudioPreviewComponent } from '../audio-preview/audio-preview.component';\nvar VideoPreviewComponent = /** @class */ (function (_super) {\n    __extends(VideoPreviewComponent, _super);\n    function VideoPreviewComponent() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    return VideoPreviewComponent;\n}(AudioPreviewComponent));\nexport { VideoPreviewComponent };\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\r\nimport { AudioPreviewComponent } from '../audio-preview/audio-preview.component';\r\n\r\n@Component({\r\n    selector: 'video-preview',\r\n    templateUrl: './video-preview.component.html',\r\n    styleUrls: ['./video-preview.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class VideoPreviewComponent extends AudioPreviewComponent {\r\n}\r\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { BaseFilePreview } from '../base-file-preview';\nvar ImagePreviewComponent = /** @class */ (function (_super) {\n    __extends(ImagePreviewComponent, _super);\n    function ImagePreviewComponent() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    return ImagePreviewComponent;\n}(BaseFilePreview));\nexport { ImagePreviewComponent };\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\r\nimport { BaseFilePreview } from '../base-file-preview';\r\n\r\n@Component({\r\n    selector: 'image-preview',\r\n    templateUrl: './image-preview.component.html',\r\n    styleUrls: ['./image-preview.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ImagePreviewComponent extends BaseFilePreview {}\r\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { BaseFilePreview } from '../base-file-preview';\nvar PdfPreviewComponent = /** @class */ (function (_super) {\n    __extends(PdfPreviewComponent, _super);\n    function PdfPreviewComponent() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.className = 'preview-object';\n        return _this;\n    }\n    return PdfPreviewComponent;\n}(BaseFilePreview));\nexport { PdfPreviewComponent };\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, } from '@angular/core';\r\nimport { BaseFilePreview } from '../base-file-preview';\r\n\r\n@Component({\r\n  selector: 'pdf-preview',\r\n  templateUrl: './pdf-preview.component.html',\r\n  styleUrls: ['./pdf-preview.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PdfPreviewComponent extends BaseFilePreview {\r\n    @HostBinding('class') className = 'preview-object';\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { TextPreviewComponent } from './text-preview/text-preview.component';\r\nimport { VideoPreviewComponent } from './video-preview/video-preview.component';\r\nimport { ImagePreviewComponent } from './image-preview/image-preview.component';\r\nimport { PdfPreviewComponent } from './pdf-preview/pdf-preview.component';\r\nimport { AudioPreviewComponent } from './audio-preview/audio-preview.component';\r\n\r\nexport const AVAILABLE_PREVIEWS = new InjectionToken<any>('AVAILABLE_PREVIEWS');\r\n\r\nexport class DefaultPreviews {\r\n    text = TextPreviewComponent;\r\n    video = VideoPreviewComponent;\r\n    audio = AudioPreviewComponent;\r\n    image = ImagePreviewComponent;\r\n    pdf = PdfPreviewComponent;\r\n}\r\n\r\n","import { Inject, Injectable, Injector } from '@angular/core';\r\nimport { FileEntry } from '../uploads/file-entry';\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\nimport { AVAILABLE_PREVIEWS, DefaultPreviews } from './available-previews';\r\nimport { ComponentPortal, PortalInjector } from '@angular/cdk/portal';\r\nimport { CURRENT_PREVIEW_FILE } from './current-preview-file';\r\nimport { DefaultPreviewComponent } from './default-preview/default-preview.component';\r\nimport { filter } from 'rxjs/operators';\r\nimport { PREVIEW_URL_TRANSFORMER, PreviewUrlTransformer } from './preview-url-transformer';\r\n\r\ninterface PreviewFilesMeta {\r\n    entry?: FileEntry;\r\n    pointer?: number;\r\n    total?: number;\r\n    haveNext?: boolean;\r\n    havePrevious?: boolean;\r\n}\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class PreviewFilesService {\r\n    private files: FileEntry[] = [];\r\n    private portal = new BehaviorSubject(null);\r\n    private meta: BehaviorSubject<PreviewFilesMeta> = new BehaviorSubject({});\r\n    private previewUriTransformer: PreviewUrlTransformer|null = null;\r\n    public download = new Subject();\r\n\r\n    constructor(\r\n        @Inject(AVAILABLE_PREVIEWS) private availablePreviews: DefaultPreviews,\r\n        private injector: Injector,\r\n    ) {}\r\n\r\n    public pagination(): Observable<PreviewFilesMeta> {\r\n        return this.meta\r\n            .pipe(filter(data => data && !!data.entry));\r\n    }\r\n\r\n    public getCurrent(): FileEntry {\r\n        return this.meta.value.entry;\r\n    }\r\n\r\n    public getAllEntries() {\r\n        return this.files;\r\n    }\r\n\r\n    public getPortal(): Observable<ComponentPortal<any>> {\r\n        return this.portal.asObservable();\r\n    }\r\n\r\n    public showNext() {\r\n        if ( ! this.meta.value.haveNext) return;\r\n        this.updateMeta('next');\r\n        this.updatePortal();\r\n    }\r\n\r\n    public showPrevious() {\r\n        if ( ! this.meta.value.havePrevious) return;\r\n        this.updateMeta('previous');\r\n        this.updatePortal();\r\n    }\r\n\r\n    private updateMeta(dir?: 'next'|'previous') {\r\n        let newPointer = 0;\r\n\r\n        if (dir) {\r\n            const oldPointer = this.meta.value.pointer;\r\n            newPointer = dir === 'next' ? oldPointer + 1 : oldPointer - 1;\r\n        }\r\n\r\n        this.meta.next({\r\n            pointer: newPointer,\r\n            entry: this.files[newPointer],\r\n            total: this.files.length,\r\n            haveNext: (newPointer + 1) < this.files.length,\r\n            havePrevious: (newPointer - 1) > -1,\r\n        });\r\n    }\r\n\r\n    private updatePortal() {\r\n        const current = this.getCurrent();\r\n        const comp = (current && this.availablePreviews[current.type]) || DefaultPreviewComponent;\r\n        this.portal.next(new ComponentPortal(comp, null, this.createInjector()));\r\n    }\r\n\r\n    public set(files: FileEntry[]) {\r\n        if ( ! files || files.length === 0) return;\r\n        this.files = files.filter(entry => entry.type !== 'folder');\r\n        this.updateMeta();\r\n        this.updatePortal();\r\n    }\r\n\r\n    private createInjector(): PortalInjector {\r\n        const injectionTokens = new WeakMap();\r\n\r\n        // set currently active preview file\r\n        injectionTokens.set(CURRENT_PREVIEW_FILE, this.getCurrent());\r\n\r\n        // override preview backend uri, if specified\r\n        if (this.previewUriTransformer) {\r\n            injectionTokens.set(PREVIEW_URL_TRANSFORMER, this.previewUriTransformer);\r\n        }\r\n\r\n        return new PortalInjector(this.injector, injectionTokens);\r\n    }\r\n\r\n    public destroy() {\r\n        this.meta.next({});\r\n        this.files = null;\r\n        this.portal.next(null);\r\n    }\r\n\r\n    /**\r\n     * Provide transformer function for preview file backend url.\r\n     * (for changing base uri, adding url params etc)\r\n     */\r\n    public setPreviewUriTransformer(transformer: PreviewUrlTransformer) {\r\n        this.previewUriTransformer = transformer;\r\n    }\r\n}\r\n","import { Injector } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { DefaultPreviews } from './available-previews';\nimport { ComponentPortal, PortalInjector } from '@angular/cdk/portal';\nimport { CURRENT_PREVIEW_FILE } from './current-preview-file';\nimport { DefaultPreviewComponent } from './default-preview/default-preview.component';\nimport { filter } from 'rxjs/operators';\nimport { PREVIEW_URL_TRANSFORMER } from './preview-url-transformer';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./available-previews\";\nvar PreviewFilesService = /** @class */ (function () {\n    function PreviewFilesService(availablePreviews, injector) {\n        this.availablePreviews = availablePreviews;\n        this.injector = injector;\n        this.files = [];\n        this.portal = new BehaviorSubject(null);\n        this.meta = new BehaviorSubject({});\n        this.previewUriTransformer = null;\n        this.download = new Subject();\n    }\n    PreviewFilesService.prototype.pagination = function () {\n        return this.meta\n            .pipe(filter(function (data) { return data && !!data.entry; }));\n    };\n    PreviewFilesService.prototype.getCurrent = function () {\n        return this.meta.value.entry;\n    };\n    PreviewFilesService.prototype.getAllEntries = function () {\n        return this.files;\n    };\n    PreviewFilesService.prototype.getPortal = function () {\n        return this.portal.asObservable();\n    };\n    PreviewFilesService.prototype.showNext = function () {\n        if (!this.meta.value.haveNext)\n            return;\n        this.updateMeta('next');\n        this.updatePortal();\n    };\n    PreviewFilesService.prototype.showPrevious = function () {\n        if (!this.meta.value.havePrevious)\n            return;\n        this.updateMeta('previous');\n        this.updatePortal();\n    };\n    PreviewFilesService.prototype.updateMeta = function (dir) {\n        var newPointer = 0;\n        if (dir) {\n            var oldPointer = this.meta.value.pointer;\n            newPointer = dir === 'next' ? oldPointer + 1 : oldPointer - 1;\n        }\n        this.meta.next({\n            pointer: newPointer,\n            entry: this.files[newPointer],\n            total: this.files.length,\n            haveNext: (newPointer + 1) < this.files.length,\n            havePrevious: (newPointer - 1) > -1,\n        });\n    };\n    PreviewFilesService.prototype.updatePortal = function () {\n        var current = this.getCurrent();\n        var comp = (current && this.availablePreviews[current.type]) || DefaultPreviewComponent;\n        this.portal.next(new ComponentPortal(comp, null, this.createInjector()));\n    };\n    PreviewFilesService.prototype.set = function (files) {\n        if (!files || files.length === 0)\n            return;\n        this.files = files.filter(function (entry) { return entry.type !== 'folder'; });\n        this.updateMeta();\n        this.updatePortal();\n    };\n    PreviewFilesService.prototype.createInjector = function () {\n        var injectionTokens = new WeakMap();\n        // set currently active preview file\n        injectionTokens.set(CURRENT_PREVIEW_FILE, this.getCurrent());\n        // override preview backend uri, if specified\n        if (this.previewUriTransformer) {\n            injectionTokens.set(PREVIEW_URL_TRANSFORMER, this.previewUriTransformer);\n        }\n        return new PortalInjector(this.injector, injectionTokens);\n    };\n    PreviewFilesService.prototype.destroy = function () {\n        this.meta.next({});\n        this.files = null;\n        this.portal.next(null);\n    };\n    /**\n     * Provide transformer function for preview file backend url.\n     * (for changing base uri, adding url params etc)\n     */\n    PreviewFilesService.prototype.setPreviewUriTransformer = function (transformer) {\n        this.previewUriTransformer = transformer;\n    };\n    PreviewFilesService.ngInjectableDef = i0.defineInjectable({ factory: function PreviewFilesService_Factory() { return new PreviewFilesService(i0.inject(i1.AVAILABLE_PREVIEWS), i0.inject(i0.INJECTOR)); }, token: PreviewFilesService, providedIn: \"root\" });\n    return PreviewFilesService;\n}());\nexport { PreviewFilesService };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./file-preview-toolbar.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../../../../../node_modules/@angular/material/button/typings/index.ngfactory\";\nimport * as i3 from \"@angular/material/button\";\nimport * as i4 from \"@angular/cdk/platform\";\nimport * as i5 from \"@angular/cdk/a11y\";\nimport * as i6 from \"@angular/platform-browser/animations\";\nimport * as i7 from \"../../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i8 from \"@angular/material/icon\";\nimport * as i9 from \"../../../files/components/file-icon/file-icon.component.ngfactory\";\nimport * as i10 from \"../../../files/components/file-icon/file-icon.component\";\nimport * as i11 from \"@angular/common\";\nimport * as i12 from \"@angular/router\";\nimport * as i13 from \"./file-preview-toolbar.component\";\nimport * as i14 from \"../../../../../common/file-preview/preview-files.service\";\nimport * as i15 from \"../../../../../common/core/config/settings.service\";\nvar styles_FilePreviewToolbarComponent = [i0.styles];\nvar RenderType_FilePreviewToolbarComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_FilePreviewToolbarComponent, data: {} });\nexport { RenderType_FilePreviewToolbarComponent as RenderType_FilePreviewToolbarComponent };\nfunction View_FilePreviewToolbarComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 5, \"button\", [[\"class\", \"back-button\"], [\"mat-icon-button\", \"\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.closed.emit(true) !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i2.View_MatButton_0, i2.RenderType_MatButton)), i1.ɵdid(1, 180224, null, 0, i3.MatButton, [i1.ElementRef, i4.Platform, i5.FocusMonitor, [2, i6.ANIMATION_MODULE_TYPE]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵeld(3, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"arrow-back\"]], [[2, \"mat-icon-inline\", null]], null, null, i7.View_MatIcon_0, i7.RenderType_MatIcon)), i1.ɵdid(4, 638976, null, 0, i8.MatIcon, [i1.ElementRef, i8.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n\"]))], function (_ck, _v) { var currVal_3 = \"arrow-back\"; _ck(_v, 4, 0, currVal_3); }, function (_ck, _v) { var currVal_0 = (i1.ɵnov(_v, 1).disabled || null); var currVal_1 = (i1.ɵnov(_v, 1)._animationMode === \"NoopAnimations\"); _ck(_v, 0, 0, currVal_0, currVal_1); var currVal_2 = i1.ɵnov(_v, 4).inline; _ck(_v, 3, 0, currVal_2); }); }\nfunction View_FilePreviewToolbarComponent_3(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 21, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(2, 0, null, null, 18, \"div\", [[\"class\", \"navigation\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(4, 0, null, null, 5, \"button\", [[\"class\", \"previous\"], [\"mat-icon-button\", \"\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.previewFiles.showPrevious() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i2.View_MatButton_0, i2.RenderType_MatButton)), i1.ɵdid(5, 180224, null, 0, i3.MatButton, [i1.ElementRef, i4.Platform, i5.FocusMonitor, [2, i6.ANIMATION_MODULE_TYPE]], { disabled: [0, \"disabled\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n                \"])), (_l()(), i1.ɵeld(7, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"keyboard-arrow-left\"]], [[2, \"mat-icon-inline\", null]], null, null, i7.View_MatIcon_0, i7.RenderType_MatIcon)), i1.ɵdid(8, 638976, null, 0, i8.MatIcon, [i1.ElementRef, i8.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n            \"])), (_l()(), i1.ɵeld(11, 0, null, null, 1, \"span\", [[\"class\", \"meta\"]], null, null, null, null, null)), (_l()(), i1.ɵted(12, null, [\"\", \" of \", \"\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n            \"])), (_l()(), i1.ɵeld(14, 0, null, null, 5, \"button\", [[\"class\", \"next\"], [\"mat-icon-button\", \"\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.previewFiles.showNext() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i2.View_MatButton_0, i2.RenderType_MatButton)), i1.ɵdid(15, 180224, null, 0, i3.MatButton, [i1.ElementRef, i4.Platform, i5.FocusMonitor, [2, i6.ANIMATION_MODULE_TYPE]], { disabled: [0, \"disabled\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n                \"])), (_l()(), i1.ɵeld(17, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"keyboard-arrow-right\"]], [[2, \"mat-icon-inline\", null]], null, null, i7.View_MatIcon_0, i7.RenderType_MatIcon)), i1.ɵdid(18, 638976, null, 0, i8.MatIcon, [i1.ElementRef, i8.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"]))], function (_ck, _v) { var currVal_2 = !_v.context.ngIf.havePrevious; _ck(_v, 5, 0, currVal_2); var currVal_4 = \"keyboard-arrow-left\"; _ck(_v, 8, 0, currVal_4); var currVal_9 = !_v.context.ngIf.haveNext; _ck(_v, 15, 0, currVal_9); var currVal_11 = \"keyboard-arrow-right\"; _ck(_v, 18, 0, currVal_11); }, function (_ck, _v) { var currVal_0 = (i1.ɵnov(_v, 5).disabled || null); var currVal_1 = (i1.ɵnov(_v, 5)._animationMode === \"NoopAnimations\"); _ck(_v, 4, 0, currVal_0, currVal_1); var currVal_3 = i1.ɵnov(_v, 8).inline; _ck(_v, 7, 0, currVal_3); var currVal_5 = (_v.context.ngIf.pointer + 1); var currVal_6 = _v.context.ngIf.total; _ck(_v, 12, 0, currVal_5, currVal_6); var currVal_7 = (i1.ɵnov(_v, 15).disabled || null); var currVal_8 = (i1.ɵnov(_v, 15)._animationMode === \"NoopAnimations\"); _ck(_v, 14, 0, currVal_7, currVal_8); var currVal_10 = i1.ɵnov(_v, 18).inline; _ck(_v, 17, 0, currVal_10); }); }\nfunction View_FilePreviewToolbarComponent_2(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 23, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(2, 0, null, null, 4, \"div\", [[\"class\", \"entry-name\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(4, 0, null, null, 1, \"file-icon\", [], null, null, null, i9.View_FileIconComponent_0, i9.RenderType_FileIconComponent)), i1.ɵdid(5, 573440, null, 0, i10.FileIconComponent, [], { type: [0, \"type\"] }, null), (_l()(), i1.ɵted(6, null, [\"\\n        \", \"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n    \"])), (_l()(), i1.ɵand(16777216, null, null, 2, null, View_FilePreviewToolbarComponent_3)), i1.ɵdid(9, 16384, null, 0, i11.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), i1.ɵpid(131072, i11.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n\\n    \"])), (_l()(), i1.ɵeld(12, 0, null, null, 10, \"div\", [[\"class\", \"actions\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(14, 0, null, null, 5, \"button\", [[\"mat-icon-button\", \"\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.downloadFiles() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i2.View_MatButton_0, i2.RenderType_MatButton)), i1.ɵdid(15, 180224, null, 0, i3.MatButton, [i1.ElementRef, i4.Platform, i5.FocusMonitor, [2, i6.ANIMATION_MODULE_TYPE]], { disabled: [0, \"disabled\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵeld(17, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"file-download\"]], [[2, \"mat-icon-inline\", null]], null, null, i7.View_MatIcon_0, i7.RenderType_MatIcon)), i1.ɵdid(18, 638976, null, 0, i8.MatIcon, [i1.ElementRef, i8.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), i1.ɵncd(null, 0), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; var currVal_0 = _v.context.ngIf.entry.type; _ck(_v, 5, 0, currVal_0); var currVal_2 = i1.ɵunv(_v, 9, 0, i1.ɵnov(_v, 10).transform(_co.previewFiles.pagination())); _ck(_v, 9, 0, currVal_2); var currVal_5 = _co.disableDownload; _ck(_v, 15, 0, currVal_5); var currVal_7 = \"file-download\"; _ck(_v, 18, 0, currVal_7); }, function (_ck, _v) { var currVal_1 = _v.context.ngIf.entry.name; _ck(_v, 6, 0, currVal_1); var currVal_3 = (i1.ɵnov(_v, 15).disabled || null); var currVal_4 = (i1.ɵnov(_v, 15)._animationMode === \"NoopAnimations\"); _ck(_v, 14, 0, currVal_3, currVal_4); var currVal_6 = i1.ɵnov(_v, 18).inline; _ck(_v, 17, 0, currVal_6); }); }\nfunction View_FilePreviewToolbarComponent_5(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 0, \"img\", [], [[8, \"src\", 4]], null, null, null, null))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = (_co.settings.getBaseUrl(true) + _co.settings.get(\"branding.logo_light\")); _ck(_v, 0, 0, currVal_0); }); }\nfunction View_FilePreviewToolbarComponent_4(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 5, \"a\", [[\"class\", \"logo\"], [\"routerLink\", \"/drive\"]], [[1, \"target\", 0], [8, \"href\", 4]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; if ((\"click\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 1).onClick($event.button, $event.ctrlKey, $event.metaKey, $event.shiftKey) !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, null, null)), i1.ɵdid(1, 671744, null, 0, i12.RouterLinkWithHref, [i12.Router, i12.ActivatedRoute, i11.LocationStrategy], { routerLink: [0, \"routerLink\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_FilePreviewToolbarComponent_5)), i1.ɵdid(4, 16384, null, 0, i11.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; var currVal_2 = \"/drive\"; _ck(_v, 1, 0, currVal_2); var currVal_3 = (_co.showLogo && _co.settings.get(\"branding.logo_light\")); _ck(_v, 4, 0, currVal_3); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 1).target; var currVal_1 = i1.ɵnov(_v, 1).href; _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nexport function View_FilePreviewToolbarComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵand(16777216, null, null, 1, null, View_FilePreviewToolbarComponent_1)), i1.ɵdid(1, 16384, null, 0, i11.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵand(16777216, null, null, 2, null, View_FilePreviewToolbarComponent_2)), i1.ɵdid(4, 16384, null, 0, i11.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), i1.ɵpid(131072, i11.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_FilePreviewToolbarComponent_4)), i1.ɵdid(8, 16384, null, 0, i11.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.showCloseButton; _ck(_v, 1, 0, currVal_0); var currVal_1 = i1.ɵunv(_v, 4, 0, i1.ɵnov(_v, 5).transform(_co.previewFiles.pagination())); _ck(_v, 4, 0, currVal_1); var currVal_2 = (_co.showLogo && _co.settings.has(\"branding.logo_light\")); _ck(_v, 8, 0, currVal_2); }, null); }\nexport function View_FilePreviewToolbarComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"file-preview-toolbar\", [], null, null, null, View_FilePreviewToolbarComponent_0, RenderType_FilePreviewToolbarComponent)), i1.ɵdid(1, 49152, null, 0, i13.FilePreviewToolbarComponent, [i14.PreviewFilesService, i15.Settings], null, null)], null, null); }\nvar FilePreviewToolbarComponentNgFactory = i1.ɵccf(\"file-preview-toolbar\", i13.FilePreviewToolbarComponent, View_FilePreviewToolbarComponent_Host_0, { showLogo: \"showLogo\", disableDownload: \"disableDownload\", showCloseButton: \"showCloseButton\" }, { closed: \"closed\" }, [\"*\"]);\nexport { FilePreviewToolbarComponentNgFactory as FilePreviewToolbarComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"file-preview-toolbar{position:fixed;top:0;left:0;display:flex;width:100%;align-items:center;color:#fff;height:60px;padding:0 15px;background:linear-gradient(to bottom,rgba(0,0,0,.65) 0,transparent 100%);z-index:10}file-preview-toolbar .entry-name{display:block;margin-right:25px;margin-left:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}file-preview-toolbar .entry-name file-icon{display:inline-block;vertical-align:bottom;margin-right:5px}@media only screen and (min-width:550px){file-preview-toolbar .entry-name{max-width:calc(50% - 77.5px)}file-preview-toolbar .navigation{position:absolute;left:50%;top:50%;margin-right:-50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}}@media only screen and (max-width:550px){file-preview-toolbar{padding:0 5px}file-preview-toolbar .navigation{position:fixed;bottom:10px;left:5px}}file-preview-toolbar .actions{margin-left:auto;white-space:nowrap}file-preview-toolbar .actions a,file-preview-toolbar .actions button{margin:0 5px}file-preview-toolbar .close-button{margin-right:25px}file-preview-toolbar .logo{position:fixed;bottom:15px;right:15px;opacity:.2;width:150px;height:auto}file-preview-toolbar .logo img{width:100%;height:auto}file-preview-toolbar .mat-icon-button[disabled][disabled]{color:#737373}\"];\nexport { styles as styles };\n","<button mat-icon-button class=\"back-button\" (click)=\"closed.emit(true)\" *ngIf=\"showCloseButton\">\r\n    <mat-icon svgIcon=\"arrow-back\"></mat-icon>\r\n</button>\r\n<ng-container *ngIf=\"previewFiles.pagination() | async as pagination\">\r\n    <div class=\"entry-name\">\r\n        <file-icon [type]=\"pagination.entry.type\"></file-icon>\r\n        {{pagination.entry.name}}\r\n    </div>\r\n\r\n    <ng-container *ngIf=\"previewFiles.pagination() | async as pagination\">\r\n        <div class=\"navigation\">\r\n            <button mat-icon-button class=\"previous\" [disabled]=\"!pagination.havePrevious\" (click)=\"previewFiles.showPrevious()\">\r\n                <mat-icon svgIcon=\"keyboard-arrow-left\"></mat-icon>\r\n            </button>\r\n\r\n            <span class=\"meta\">{{pagination.pointer + 1}} of {{pagination.total}}</span>\r\n\r\n            <button mat-icon-button class=\"next\" [disabled]=\"!pagination.haveNext\" (click)=\"previewFiles.showNext()\">\r\n                <mat-icon svgIcon=\"keyboard-arrow-right\"></mat-icon>\r\n            </button>\r\n        </div>\r\n    </ng-container>\r\n\r\n    <div class=\"actions\">\r\n        <button mat-icon-button (click)=\"downloadFiles()\" [disabled]=\"disableDownload\">\r\n            <mat-icon svgIcon=\"file-download\"></mat-icon>\r\n        </button>\r\n        <ng-content></ng-content>\r\n    </div>\r\n</ng-container>\r\n<a routerLink=\"/drive\" class=\"logo\" *ngIf=\"showLogo && settings.has('branding.logo_light')\">\r\n    <img *ngIf=\"showLogo && settings.get('branding.logo_light')\" [src]=\"settings.getBaseUrl(true) + settings.get('branding.logo_light')\">\r\n</a>","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./ad-host.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"./ad-host.component\";\nimport * as i3 from \"../../config/settings.service\";\nimport * as i4 from \"../../../auth/current-user\";\nimport * as i5 from \"../../utils/lazy-loader.service\";\nvar styles_AdHostComponent = [i0.styles];\nvar RenderType_AdHostComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_AdHostComponent, data: {} });\nexport { RenderType_AdHostComponent as RenderType_AdHostComponent };\nexport function View_AdHostComponent_0(_l) { return i1.ɵvid(2, [], null, null); }\nexport function View_AdHostComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"ad-host\", [], [[8, \"id\", 0]], null, null, View_AdHostComponent_0, RenderType_AdHostComponent)), i1.ɵdid(1, 114688, null, 0, i2.AdHostComponent, [i1.ElementRef, i1.Renderer2, i3.Settings, i4.CurrentUser, i5.LazyLoaderService], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 1).randomId; _ck(_v, 0, 0, currVal_0); }); }\nvar AdHostComponentNgFactory = i1.ɵccf(\"ad-host\", i2.AdHostComponent, View_AdHostComponent_Host_0, { slot: \"slot\" }, {}, []);\nexport { AdHostComponentNgFactory as AdHostComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"ad-host{display:block;align-items:center;justify-content:center;max-width:100%;overflow:hidden}ad-host:empty{display:none}ad-host.margin-bottom{margin-bottom:15px}ad-host.margin-top{margin-top:15px}\"];\nexport { styles as styles };\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, OnChanges, OnDestroy, ComponentRef } from '@angular/core';\r\nimport { FileEntry } from '../../uploads/file-entry';\r\nimport { PreviewFilesService } from '../preview-files.service';\r\nimport { BaseFilePreview } from '../base-file-preview';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n    selector: 'preview-container',\r\n    templateUrl: './preview-container.component.html',\r\n    styleUrls: ['./preview-container.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PreviewContainerComponent implements OnChanges, OnDestroy {\r\n    @Input() files: FileEntry[];\r\n    private downloadSub: Subscription;\r\n\r\n    constructor(public previewFiles: PreviewFilesService) {}\r\n\r\n    ngOnChanges(changes) {\r\n        this.previewFiles.set(this.files);\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        this.previewFiles.destroy();\r\n        if (this.downloadSub) this.downloadSub.unsubscribe();\r\n    }\r\n\r\n    public test(comp: ComponentRef<BaseFilePreview>) {\r\n        if (this.downloadSub) this.downloadSub.unsubscribe();\r\n        this.downloadSub = comp.instance.download.subscribe(() => {\r\n            this.previewFiles.download.next();\r\n        });\r\n    }\r\n}\r\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./preview-container.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"@angular/cdk/portal\";\nimport * as i3 from \"@angular/common\";\nimport * as i4 from \"./preview-container.component\";\nimport * as i5 from \"../preview-files.service\";\nvar styles_PreviewContainerComponent = [i0.styles];\nvar RenderType_PreviewContainerComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_PreviewContainerComponent, data: {} });\nexport { RenderType_PreviewContainerComponent as RenderType_PreviewContainerComponent };\nfunction View_PreviewContainerComponent_2(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵand(0, null, null, 0))], null, null); }\nfunction View_PreviewContainerComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 4, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(16777216, null, null, 1, function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"attached\" === en)) {\n        var pd_0 = (_co.test($event) !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, View_PreviewContainerComponent_2)), i1.ɵdid(3, 212992, null, 0, i2.CdkPortalOutlet, [i1.ComponentFactoryResolver, i1.ViewContainerRef], { portal: [0, \"portal\"] }, { attached: \"attached\" }), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var currVal_0 = _v.context.ngIf; _ck(_v, 3, 0, currVal_0); }, null); }\nexport function View_PreviewContainerComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵand(16777216, null, null, 2, null, View_PreviewContainerComponent_1)), i1.ɵdid(1, 16384, null, 0, i3.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), i1.ɵpid(131072, i3.AsyncPipe, [i1.ChangeDetectorRef])], function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵunv(_v, 1, 0, i1.ɵnov(_v, 2).transform(_co.previewFiles.getPortal())); _ck(_v, 1, 0, currVal_0); }, null); }\nexport function View_PreviewContainerComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"preview-container\", [], null, null, null, View_PreviewContainerComponent_0, RenderType_PreviewContainerComponent)), i1.ɵdid(1, 704512, null, 0, i4.PreviewContainerComponent, [i5.PreviewFilesService], null, null)], null, null); }\nvar PreviewContainerComponentNgFactory = i1.ɵccf(\"preview-container\", i4.PreviewContainerComponent, View_PreviewContainerComponent_Host_0, { files: \"files\" }, {}, []);\nexport { PreviewContainerComponentNgFactory as PreviewContainerComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"preview-container{display:flex;width:100%;min-height:100%;align-items:center;justify-content:center;position:relative;overflow:hidden}preview-container>*{position:absolute;top:0;left:0;right:0;bottom:0;margin:auto}\"];\nexport { styles as styles };\n","<ng-container *ngIf=\"previewFiles.getPortal() | async as portal\">\r\n    <ng-template [cdkPortalOutlet]=\"portal\" (attached)=\"test($event)\"></ng-template>\r\n</ng-container>","import { Component, OnInit, ViewEncapsulation, ChangeDetectionStrategy, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ShareableLinksApiService } from '../../sharing/links/shareable-links-api.service';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { PreviewFilesService } from 'common/file-preview/preview-files.service';\nimport { Settings } from 'common/core/config/settings.service';\nimport { ShareableLink } from '../../sharing/links/models/shareable-link';\nimport { FileEntry } from 'common/uploads/file-entry';\nimport { CurrentUser } from 'common/auth/current-user';\nimport { filter, map } from 'rxjs/operators';\nimport { Toast } from 'common/core/ui/toast.service';\nimport { Store } from '@ngxs/store';\nimport { DownloadEntries } from '../../state/actions/commands';\n\n@Component({\n    selector: 'link-preview-container',\n    templateUrl: './link-preview-container.component.html',\n    styleUrls: ['./link-preview-container.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        PreviewFilesService,\n    ]\n})\nexport class LinkPreviewContainerComponent implements OnInit, OnDestroy {\n    public link$: BehaviorSubject<ShareableLink> = new BehaviorSubject(null);\n    public entries$: BehaviorSubject<FileEntry[]> = new BehaviorSubject([]);\n    public passwordPanelVisible$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n    private password: string;\n    private downloadSub: Subscription;\n\n    /**\n     * Check if current user owns this entry or\n     * already has it imported into their drive.\n     */\n    public get entryAlreadyImported$(): Observable<boolean> {\n        const userId = this.currentUser.get('id');\n\n        return this.link$.pipe(\n            filter(link => !!link && !!link.entry && !!link.entry.users),\n            map(link => link.entry),\n            map(entry => !!entry.users.find(user => user.id === userId))\n        );\n    }\n\n    constructor(\n        private store: Store,\n        private route: ActivatedRoute,\n        private links: ShareableLinksApiService,\n        public previewFiles: PreviewFilesService,\n        public settings: Settings,\n        public currentUser: CurrentUser,\n        private router: Router,\n        private toast: Toast,\n    ) {}\n\n    ngOnInit() {\n        this.bindToDownload();\n\n        this.route.params.subscribe(params => {\n            this.links.findByHash(params.hash, {withEntries: true}).subscribe(response => {\n                this.link$.next(response.link);\n\n                if (this.link$.value.password) {\n                    this.togglePasswordPanel(true);\n                } else {\n                    this.togglePasswordPanel(false);\n                    this.showPreview();\n                }\n\n            }, () => {\n                this.router.navigate(['/404']);\n            });\n        });\n    }\n\n    ngOnDestroy() {\n        this.downloadSub.unsubscribe();\n    }\n\n    public import() {\n        this.links.importEntry(this.link$.value.id, this.password)\n            .subscribe(response => {\n                const link = this.link$.value;\n                link.entry.users = response.users;\n                this.link$.next(link);\n                this.toast.open(`\"${link.entry.name}\" imported into your drive.`);\n            });\n    }\n\n    public togglePasswordPanel(value: boolean) {\n        this.passwordPanelVisible$.next(value);\n    }\n\n    private bindToDownload() {\n        this.downloadSub = this.previewFiles.download.subscribe(() => {\n            const link = this.link$.value;\n            this.store.dispatch(new DownloadEntries([link.entry], link, this.password));\n        });\n    }\n\n    /**\n     * Show preview for shareable link files.\n     */\n    private showPreview() {\n        const link = this.link$.value;\n        this.previewFiles.setPreviewUriTransformer(this.urlTransformer.bind(this));\n        this.setEntries(link.entry);\n    }\n\n    /**\n     * Set all preview entries.\n     */\n    private setEntries(entry: FileEntry) {\n        let entries = entry.children.length ? entry.children : [entry];\n        entries = entries.filter(ent => ent.type !== 'folder');\n        this.entries$.next(entries);\n    }\n\n    public setValidPassword(password: string) {\n        this.showPreview();\n        this.togglePasswordPanel(false);\n        this.password = password;\n    }\n\n    public urlTransformer(entryId: number) {\n        let base = `secure/uploads/${entryId}?shareable_link=${this.link$.value.id}`;\n        if (this.password) base += `&password=${this.password}`;\n        return base;\n    }\n}\n","import { OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ShareableLinksApiService } from '../../sharing/links/shareable-links-api.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { PreviewFilesService } from 'common/file-preview/preview-files.service';\nimport { Settings } from 'common/core/config/settings.service';\nimport { CurrentUser } from 'common/auth/current-user';\nimport { filter, map } from 'rxjs/operators';\nimport { Toast } from 'common/core/ui/toast.service';\nimport { Store } from '@ngxs/store';\nimport { DownloadEntries } from '../../state/actions/commands';\nvar LinkPreviewContainerComponent = /** @class */ (function () {\n    function LinkPreviewContainerComponent(store, route, links, previewFiles, settings, currentUser, router, toast) {\n        this.store = store;\n        this.route = route;\n        this.links = links;\n        this.previewFiles = previewFiles;\n        this.settings = settings;\n        this.currentUser = currentUser;\n        this.router = router;\n        this.toast = toast;\n        this.link$ = new BehaviorSubject(null);\n        this.entries$ = new BehaviorSubject([]);\n        this.passwordPanelVisible$ = new BehaviorSubject(false);\n    }\n    Object.defineProperty(LinkPreviewContainerComponent.prototype, \"entryAlreadyImported$\", {\n        /**\n         * Check if current user owns this entry or\n         * already has it imported into their drive.\n         */\n        get: function () {\n            var userId = this.currentUser.get('id');\n            return this.link$.pipe(filter(function (link) { return !!link && !!link.entry && !!link.entry.users; }), map(function (link) { return link.entry; }), map(function (entry) { return !!entry.users.find(function (user) { return user.id === userId; }); }));\n        },\n        enumerable: true,\n        configurable: true\n    });\n    LinkPreviewContainerComponent.prototype.ngOnInit = function () {\n        var _this = this;\n        this.bindToDownload();\n        this.route.params.subscribe(function (params) {\n            _this.links.findByHash(params.hash, { withEntries: true }).subscribe(function (response) {\n                _this.link$.next(response.link);\n                if (_this.link$.value.password) {\n                    _this.togglePasswordPanel(true);\n                }\n                else {\n                    _this.togglePasswordPanel(false);\n                    _this.showPreview();\n                }\n            }, function () {\n                _this.router.navigate(['/404']);\n            });\n        });\n    };\n    LinkPreviewContainerComponent.prototype.ngOnDestroy = function () {\n        this.downloadSub.unsubscribe();\n    };\n    LinkPreviewContainerComponent.prototype.import = function () {\n        var _this = this;\n        this.links.importEntry(this.link$.value.id, this.password)\n            .subscribe(function (response) {\n            var link = _this.link$.value;\n            link.entry.users = response.users;\n            _this.link$.next(link);\n            _this.toast.open(\"\\\"\" + link.entry.name + \"\\\" imported into your drive.\");\n        });\n    };\n    LinkPreviewContainerComponent.prototype.togglePasswordPanel = function (value) {\n        this.passwordPanelVisible$.next(value);\n    };\n    LinkPreviewContainerComponent.prototype.bindToDownload = function () {\n        var _this = this;\n        this.downloadSub = this.previewFiles.download.subscribe(function () {\n            var link = _this.link$.value;\n            _this.store.dispatch(new DownloadEntries([link.entry], link, _this.password));\n        });\n    };\n    /**\n     * Show preview for shareable link files.\n     */\n    LinkPreviewContainerComponent.prototype.showPreview = function () {\n        var link = this.link$.value;\n        this.previewFiles.setPreviewUriTransformer(this.urlTransformer.bind(this));\n        this.setEntries(link.entry);\n    };\n    /**\n     * Set all preview entries.\n     */\n    LinkPreviewContainerComponent.prototype.setEntries = function (entry) {\n        var entries = entry.children.length ? entry.children : [entry];\n        entries = entries.filter(function (ent) { return ent.type !== 'folder'; });\n        this.entries$.next(entries);\n    };\n    LinkPreviewContainerComponent.prototype.setValidPassword = function (password) {\n        this.showPreview();\n        this.togglePasswordPanel(false);\n        this.password = password;\n    };\n    LinkPreviewContainerComponent.prototype.urlTransformer = function (entryId) {\n        var base = \"secure/uploads/\" + entryId + \"?shareable_link=\" + this.link$.value.id;\n        if (this.password)\n            base += \"&password=\" + this.password;\n        return base;\n    };\n    return LinkPreviewContainerComponent;\n}());\nexport { LinkPreviewContainerComponent };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./link-preview-container.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"./link-preview-password-panel/link-preview-password-panel.component.ngfactory\";\nimport * as i3 from \"./link-preview-password-panel/link-preview-password-panel.component\";\nimport * as i4 from \"../../sharing/links/shareable-links-api.service\";\nimport * as i5 from \"@angular/common\";\nimport * as i6 from \"../../../../../node_modules/@angular/material/button/typings/index.ngfactory\";\nimport * as i7 from \"../../../../common/core/translations/translate.directive\";\nimport * as i8 from \"../../../../common/core/translations/translations.service\";\nimport * as i9 from \"../../../../common/core/config/settings.service\";\nimport * as i10 from \"@angular/material/button\";\nimport * as i11 from \"@angular/cdk/platform\";\nimport * as i12 from \"@angular/cdk/a11y\";\nimport * as i13 from \"@angular/platform-browser/animations\";\nimport * as i14 from \"@angular/router\";\nimport * as i15 from \"../file-preview-overlay/file-preview-toolbar/file-preview-toolbar.component.ngfactory\";\nimport * as i16 from \"../file-preview-overlay/file-preview-toolbar/file-preview-toolbar.component\";\nimport * as i17 from \"../../../../common/file-preview/preview-files.service\";\nimport * as i18 from \"../../../../common/core/ui/ad-host/ad-host.component.ngfactory\";\nimport * as i19 from \"../../../../common/core/ui/ad-host/ad-host.component\";\nimport * as i20 from \"../../../../common/auth/current-user\";\nimport * as i21 from \"../../../../common/core/utils/lazy-loader.service\";\nimport * as i22 from \"../../../../common/file-preview/preview-container/preview-container.component.ngfactory\";\nimport * as i23 from \"../../../../common/file-preview/preview-container/preview-container.component\";\nimport * as i24 from \"../../../../common/file-preview/available-previews\";\nimport * as i25 from \"./link-preview-container.component\";\nimport * as i26 from \"@ngxs/store\";\nimport * as i27 from \"../../../../common/core/ui/toast.service\";\nvar styles_LinkPreviewContainerComponent = [i0.styles];\nvar RenderType_LinkPreviewContainerComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_LinkPreviewContainerComponent, data: {} });\nexport { RenderType_LinkPreviewContainerComponent as RenderType_LinkPreviewContainerComponent };\nfunction View_LinkPreviewContainerComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 2, \"link-preview-password-panel\", [], null, [[null, \"passwordValid\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"passwordValid\" === en)) {\n        var pd_0 = (_co.setValidPassword($event) !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i2.View_LinkPreviewPasswordPanelComponent_0, i2.RenderType_LinkPreviewPasswordPanelComponent)), i1.ɵdid(1, 49152, null, 0, i3.LinkPreviewPasswordPanelComponent, [i4.ShareableLinksApiService], { link: [0, \"link\"] }, { passwordValid: \"passwordValid\" }), i1.ɵpid(131072, i5.AsyncPipe, [i1.ChangeDetectorRef])], function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵunv(_v, 1, 0, i1.ɵnov(_v, 2).transform(_co.link$)); _ck(_v, 1, 0, currVal_0); }, null); }\nfunction View_LinkPreviewContainerComponent_3(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 4, \"a\", [[\"color\", \"primary\"], [\"mat-flat-button\", \"\"], [\"routerLink\", \"/login\"], [\"trans\", \"\"]], [[1, \"tabindex\", 0], [1, \"disabled\", 0], [1, \"aria-disabled\", 0], [2, \"_mat-animation-noopable\", null], [1, \"target\", 0], [8, \"href\", 4]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; if ((\"click\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 2)._haltDisabledEvents($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"click\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 3).onClick($event.button, $event.ctrlKey, $event.metaKey, $event.shiftKey) !== false);\n        ad = (pd_1 && ad);\n    } return ad; }, i6.View_MatAnchor_0, i6.RenderType_MatAnchor)), i1.ɵdid(1, 4341760, null, 0, i7.TranslateDirective, [i1.ElementRef, i8.Translations, i9.Settings], null, null), i1.ɵdid(2, 180224, null, 0, i10.MatAnchor, [i11.Platform, i12.FocusMonitor, i1.ElementRef, [2, i13.ANIMATION_MODULE_TYPE]], { color: [0, \"color\"] }, null), i1.ɵdid(3, 671744, null, 0, i14.RouterLinkWithHref, [i14.Router, i14.ActivatedRoute, i5.LocationStrategy], { routerLink: [0, \"routerLink\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"Sign In\"]))], function (_ck, _v) { var currVal_6 = \"primary\"; _ck(_v, 2, 0, currVal_6); var currVal_7 = \"/login\"; _ck(_v, 3, 0, currVal_7); }, function (_ck, _v) { var currVal_0 = (i1.ɵnov(_v, 2).disabled ? (0 - 1) : (i1.ɵnov(_v, 2).tabIndex || 0)); var currVal_1 = (i1.ɵnov(_v, 2).disabled || null); var currVal_2 = i1.ɵnov(_v, 2).disabled.toString(); var currVal_3 = (i1.ɵnov(_v, 2)._animationMode === \"NoopAnimations\"); var currVal_4 = i1.ɵnov(_v, 3).target; var currVal_5 = i1.ɵnov(_v, 3).href; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3, currVal_4, currVal_5); }); }\nfunction View_LinkPreviewContainerComponent_4(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 3, \"button\", [[\"color\", \"primary\"], [\"mat-flat-button\", \"\"], [\"trans\", \"\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.import() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i6.View_MatButton_0, i6.RenderType_MatButton)), i1.ɵdid(1, 4341760, null, 0, i7.TranslateDirective, [i1.ElementRef, i8.Translations, i9.Settings], null, null), i1.ɵdid(2, 180224, null, 0, i10.MatButton, [i1.ElementRef, i11.Platform, i12.FocusMonitor, [2, i13.ANIMATION_MODULE_TYPE]], { color: [0, \"color\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"Import\"]))], function (_ck, _v) { var currVal_2 = \"primary\"; _ck(_v, 2, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = (i1.ɵnov(_v, 2).disabled || null); var currVal_1 = (i1.ɵnov(_v, 2)._animationMode === \"NoopAnimations\"); _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nfunction View_LinkPreviewContainerComponent_2(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(1, 0, null, null, 10, \"file-preview-toolbar\", [], null, null, null, i15.View_FilePreviewToolbarComponent_0, i15.RenderType_FilePreviewToolbarComponent)), i1.ɵdid(2, 49152, null, 0, i16.FilePreviewToolbarComponent, [i17.PreviewFilesService, i9.Settings], { showLogo: [0, \"showLogo\"], disableDownload: [1, \"disableDownload\"] }, null), i1.ɵpid(131072, i5.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵand(16777216, null, 0, 1, null, View_LinkPreviewContainerComponent_3)), i1.ɵdid(6, 16384, null, 0, i5.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵand(16777216, null, 0, 2, null, View_LinkPreviewContainerComponent_4)), i1.ɵdid(9, 16384, null, 0, i5.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), i1.ɵpid(131072, i5.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(13, 0, null, null, 1, \"ad-host\", [[\"slot\", \"ads.filePreview\"]], [[8, \"id\", 0]], null, null, i18.View_AdHostComponent_0, i18.RenderType_AdHostComponent)), i1.ɵdid(14, 114688, null, 0, i19.AdHostComponent, [i1.ElementRef, i1.Renderer2, i9.Settings, i20.CurrentUser, i21.LazyLoaderService], { slot: [0, \"slot\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(16, 0, null, null, 2, \"preview-container\", [], [[2, \"has-ad\", null]], null, null, i22.View_PreviewContainerComponent_0, i22.RenderType_PreviewContainerComponent)), i1.ɵdid(17, 704512, null, 0, i23.PreviewContainerComponent, [i17.PreviewFilesService], { files: [0, \"files\"] }, null), i1.ɵpid(131072, i5.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; var currVal_0 = true; var tmp_1_0 = null; var currVal_1 = !(((tmp_1_0 = i1.ɵunv(_v, 2, 1, i1.ɵnov(_v, 3).transform(_co.link$))) == null) ? null : tmp_1_0.allow_download); _ck(_v, 2, 0, currVal_0, currVal_1); var currVal_2 = !_co.currentUser.isLoggedIn(); _ck(_v, 6, 0, currVal_2); var currVal_3 = (!i1.ɵunv(_v, 9, 0, i1.ɵnov(_v, 10).transform(_co.entryAlreadyImported$)) && _co.currentUser.isLoggedIn()); _ck(_v, 9, 0, currVal_3); var currVal_5 = \"ads.filePreview\"; _ck(_v, 14, 0, currVal_5); var currVal_7 = i1.ɵunv(_v, 17, 0, i1.ɵnov(_v, 18).transform(_co.entries$)); _ck(_v, 17, 0, currVal_7); }, function (_ck, _v) { var _co = _v.component; var currVal_4 = i1.ɵnov(_v, 14).randomId; _ck(_v, 13, 0, currVal_4); var currVal_6 = _co.settings.has(\"ads.filePreview\"); _ck(_v, 16, 0, currVal_6); }); }\nexport function View_LinkPreviewContainerComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵand(16777216, null, null, 2, null, View_LinkPreviewContainerComponent_1)), i1.ɵdid(1, 16384, null, 0, i5.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"], ngIfElse: [1, \"ngIfElse\"] }, null), i1.ɵpid(131072, i5.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵand(0, [[\"filePreview\", 2]], null, 0, null, View_LinkPreviewContainerComponent_2))], function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵunv(_v, 1, 0, i1.ɵnov(_v, 2).transform(_co.passwordPanelVisible$)); var currVal_1 = i1.ɵnov(_v, 4); _ck(_v, 1, 0, currVal_0, currVal_1); }, null); }\nexport function View_LinkPreviewContainerComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 2, \"link-preview-container\", [], null, null, null, View_LinkPreviewContainerComponent_0, RenderType_LinkPreviewContainerComponent)), i1.ɵprd(512, null, i17.PreviewFilesService, i17.PreviewFilesService, [i24.AVAILABLE_PREVIEWS, i1.Injector]), i1.ɵdid(2, 245760, null, 0, i25.LinkPreviewContainerComponent, [i26.Store, i14.ActivatedRoute, i4.ShareableLinksApiService, i17.PreviewFilesService, i9.Settings, i20.CurrentUser, i14.Router, i27.Toast], null, null)], function (_ck, _v) { _ck(_v, 2, 0); }, null); }\nvar LinkPreviewContainerComponentNgFactory = i1.ɵccf(\"link-preview-container\", i25.LinkPreviewContainerComponent, View_LinkPreviewContainerComponent_Host_0, {}, {}, []);\nexport { LinkPreviewContainerComponentNgFactory as LinkPreviewContainerComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"link-preview-container{display:block;width:100%;height:100%;background-color:rgba(0,0,0,.9);color:#fff;overflow:auto;position:relative}link-preview-container preview-container{margin:60px 0;min-height:calc(100% - 120px)}link-preview-container ad-host{margin-top:80px}\"];\nexport { styles as styles };\n","<link-preview-password-panel *ngIf=\"passwordPanelVisible$ | async; else filePreview\" [link]=\"link$ | async\" (passwordValid)=\"setValidPassword($event)\"></link-preview-password-panel>\n\n<ng-template #filePreview>\n    <file-preview-toolbar [showLogo]=\"true\" [disableDownload]=\"!(link$ | async)?.allow_download\">\n        <a mat-flat-button color=\"primary\" routerLink=\"/login\" *ngIf=\"!currentUser.isLoggedIn()\" trans>Sign In</a>\n        <button\n                mat-flat-button\n                color=\"primary\"\n                (click)=\"import()\"\n                *ngIf=\"!(entryAlreadyImported$ | async) && currentUser.isLoggedIn()\"\n                trans\n        >Import</button>\n    </file-preview-toolbar>\n    <ad-host slot=\"ads.filePreview\"></ad-host>\n    <preview-container [files]=\"entries$ | async\" [class.has-ad]=\"settings.has('ads.filePreview')\"></preview-container>\n</ng-template>","export const SEARCH_FILE_TYPES = [\r\n    {name: 'Folders', type: 'folder'},\r\n    {name: 'Images', type: 'image'},\r\n    {name: 'Text documents', type: 'text'},\r\n    {name: 'Video', type: 'video'},\r\n    {name: 'Audio', type: 'audio'},\r\n    {name: 'PDFs', type: 'pdf'},\r\n];\r\n","import { Component, OnInit, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, ElementRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { SEARCH_FILE_TYPES } from '../search-file-types';\nimport { MatAutocompleteSelectedEvent } from '@angular/material';\nimport { Store } from '@ngxs/store';\nimport {  OpenSearchPage } from '../../state/actions/commands';\nimport { debounceTime, distinctUntilChanged, filter, switchMap } from 'rxjs/operators';\nimport { DriveEntryApiService } from '../../drive-entry-api.service';\nimport { BehaviorSubject, of as observableOf } from 'rxjs';\nimport { DriveEntry } from '../../files/models/drive-entry';\nimport { EntryDoubleTapped } from '../../state/actions/events';\n\ninterface SearchResult {\n    type: 'entry'|'entryType';\n    content: DriveEntry|{name: string, type: string};\n}\n\n@Component({\n    selector: 'main-searchbar',\n    templateUrl: './main-searchbar.component.html',\n    styleUrls: ['./main-searchbar.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MainSearchbarComponent implements OnInit {\n    @ViewChild('trigger', {read: ElementRef}) trigger: ElementRef;\n    private defaultResults: SearchResult[] = [];\n    public formControl = new FormControl();\n    public results: BehaviorSubject<SearchResult[]> = new BehaviorSubject([]);\n    private lastQuery: string;\n\n    constructor(\n        private store: Store,\n        private driveApi: DriveEntryApiService,\n    ) {\n        this.setDefaultResults();\n    }\n\n    ngOnInit() {\n        this.formControl.valueChanges.pipe(\n            debounceTime(300),\n            distinctUntilChanged(),\n            filter(q => typeof q === 'string'),\n            switchMap(query => this.search(query))\n        ).subscribe(response => {\n            this.results.next(response.data.map(entry => {\n                return {type: 'entry', content: entry} as SearchResult;\n            }));\n        });\n    }\n\n    public executeAction(e: MatAutocompleteSelectedEvent) {\n        const value = e.option.value as SearchResult;\n\n        if (value.type === 'entryType') {\n            this.openSearchPage({type: value.content.type});\n            this.resetForm();\n        } else {\n            this.store.dispatch(new EntryDoubleTapped(value.content as DriveEntry));\n        }\n\n        this.trigger.nativeElement.blur();\n    }\n\n    public openSearchPage(params: {type?: string, query?: string}) {\n        this.store.dispatch(new OpenSearchPage(params));\n    }\n\n    private search(query: string) {\n        this.lastQuery = query;\n        if ( ! query || query.length < 3) return observableOf({data: []});\n        return this.driveApi.getCurrentUserEntries({query, per_page: 8});\n    }\n\n    private setDefaultResults() {\n        this.defaultResults = SEARCH_FILE_TYPES.map(entryType => {\n            return {type: 'entryType', content: entryType} as SearchResult;\n        });\n\n        this.results.next(this.defaultResults);\n    }\n\n    public resetForm() {\n        this.formControl.reset();\n        this.setDefaultResults();\n        this.lastQuery = null;\n    }\n\n    displayFn = () => {\n        // always show original user query when\n        // clicking on any autocomplete option\n        return this.lastQuery || '';\n    }\n}\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./main-searchbar.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../../../../node_modules/@angular/material/button/typings/index.ngfactory\";\nimport * as i3 from \"@angular/material/button\";\nimport * as i4 from \"@angular/cdk/platform\";\nimport * as i5 from \"@angular/cdk/a11y\";\nimport * as i6 from \"@angular/platform-browser/animations\";\nimport * as i7 from \"../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i8 from \"@angular/material/icon\";\nimport * as i9 from \"../../../../../node_modules/@angular/material/core/typings/index.ngfactory\";\nimport * as i10 from \"@angular/material/core\";\nimport * as i11 from \"../../files/components/file-icon/file-icon.component.ngfactory\";\nimport * as i12 from \"../../files/components/file-icon/file-icon.component\";\nimport * as i13 from \"@angular/common\";\nimport * as i14 from \"../../../../common/core/ui/formatted-date.pipe\";\nimport * as i15 from \"../../../../common/core/config/settings.service\";\nimport * as i16 from \"@angular/forms\";\nimport * as i17 from \"@angular/material/autocomplete\";\nimport * as i18 from \"@angular/cdk/overlay\";\nimport * as i19 from \"@angular/cdk/bidi\";\nimport * as i20 from \"@angular/cdk/scrolling\";\nimport * as i21 from \"../../../../common/core/translations/translate.directive\";\nimport * as i22 from \"../../../../common/core/translations/translations.service\";\nimport * as i23 from \"../../../../../node_modules/@angular/material/autocomplete/typings/index.ngfactory\";\nimport * as i24 from \"./main-searchbar.component\";\nimport * as i25 from \"@ngxs/store\";\nimport * as i26 from \"../../drive-entry-api.service\";\nvar styles_MainSearchbarComponent = [i0.styles];\nvar RenderType_MainSearchbarComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_MainSearchbarComponent, data: {} });\nexport { RenderType_MainSearchbarComponent as RenderType_MainSearchbarComponent };\nfunction View_MainSearchbarComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 5, \"button\", [[\"class\", \"cancel-icon\"], [\"mat-icon-button\", \"\"], [\"type\", \"button\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.resetForm() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i2.View_MatButton_0, i2.RenderType_MatButton)), i1.ɵdid(1, 180224, null, 0, i3.MatButton, [i1.ElementRef, i4.Platform, i5.FocusMonitor, [2, i6.ANIMATION_MODULE_TYPE]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(3, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"close\"]], [[2, \"mat-icon-inline\", null]], null, null, i7.View_MatIcon_0, i7.RenderType_MatIcon)), i1.ɵdid(4, 638976, null, 0, i8.MatIcon, [i1.ElementRef, i8.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"]))], function (_ck, _v) { var currVal_3 = \"close\"; _ck(_v, 4, 0, currVal_3); }, function (_ck, _v) { var currVal_0 = (i1.ɵnov(_v, 1).disabled || null); var currVal_1 = (i1.ɵnov(_v, 1)._animationMode === \"NoopAnimations\"); _ck(_v, 0, 0, currVal_0, currVal_1); var currVal_2 = i1.ɵnov(_v, 4).inline; _ck(_v, 3, 0, currVal_2); }); }\nfunction View_MainSearchbarComponent_3(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"div\", [[\"class\", \"owner\"]], null, null, null, null, null)), (_l()(), i1.ɵted(1, null, [\"\", \"\"]))], null, function (_ck, _v) { var currVal_0 = ((_v.parent.context.$implicit.content.users[0] == null) ? null : _v.parent.context.$implicit.content.users[0].display_name); _ck(_v, 1, 0, currVal_0); }); }\nfunction View_MainSearchbarComponent_4(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 2, \"div\", [[\"class\", \"date\"]], null, null, null, null, null)), (_l()(), i1.ɵted(1, null, [\"\", \"\"])), i1.ɵppd(2, 1)], null, function (_ck, _v) { var currVal_0 = i1.ɵunv(_v, 1, 0, _ck(_v, 2, 0, i1.ɵnov(_v.parent.parent, 0), _v.parent.context.$implicit.content.updated_at)); _ck(_v, 1, 0, currVal_0); }); }\nfunction View_MainSearchbarComponent_2(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 20, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(2, 0, null, null, 17, \"mat-option\", [[\"class\", \"mat-option\"], [\"role\", \"option\"]], [[1, \"tabindex\", 0], [2, \"mat-selected\", null], [2, \"mat-option-multiple\", null], [2, \"mat-active\", null], [8, \"id\", 0], [1, \"aria-selected\", 0], [1, \"aria-disabled\", 0], [2, \"mat-option-disabled\", null]], [[null, \"click\"], [null, \"keydown\"]], function (_v, en, $event) { var ad = true; if ((\"click\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 3)._selectViaInteraction() !== false);\n        ad = (pd_0 && ad);\n    } if ((\"keydown\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 3)._handleKeydown($event) !== false);\n        ad = (pd_1 && ad);\n    } return ad; }, i9.View_MatOption_0, i9.RenderType_MatOption)), i1.ɵdid(3, 8568832, [[2, 4]], 0, i10.MatOption, [i1.ElementRef, i1.ChangeDetectorRef, [2, i10.MAT_OPTION_PARENT_COMPONENT], [2, i10.MatOptgroup]], { value: [0, \"value\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵeld(5, 0, null, 0, 1, \"file-icon\", [], null, null, null, i11.View_FileIconComponent_0, i11.RenderType_FileIconComponent)), i1.ɵdid(6, 573440, null, 0, i12.FileIconComponent, [], { type: [0, \"type\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵeld(8, 0, null, 0, 7, \"div\", [[\"class\", \"meta\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(10, 0, null, null, 1, \"div\", [[\"class\", \"name\"]], null, null, null, null, null)), (_l()(), i1.ɵted(11, null, [\"\", \"\"])), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_MainSearchbarComponent_3)), i1.ɵdid(14, 16384, null, 0, i13.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵand(16777216, null, 0, 1, null, View_MainSearchbarComponent_4)), i1.ɵdid(18, 16384, null, 0, i13.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"]))], function (_ck, _v) { var currVal_8 = _v.context.$implicit; _ck(_v, 3, 0, currVal_8); var currVal_9 = _v.context.$implicit.content.type; _ck(_v, 6, 0, currVal_9); var currVal_11 = _v.context.$implicit.content.users; _ck(_v, 14, 0, currVal_11); var currVal_12 = _v.context.$implicit.content.updated_at; _ck(_v, 18, 0, currVal_12); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 3)._getTabIndex(); var currVal_1 = i1.ɵnov(_v, 3).selected; var currVal_2 = i1.ɵnov(_v, 3).multiple; var currVal_3 = i1.ɵnov(_v, 3).active; var currVal_4 = i1.ɵnov(_v, 3).id; var currVal_5 = i1.ɵnov(_v, 3).selected.toString(); var currVal_6 = i1.ɵnov(_v, 3).disabled.toString(); var currVal_7 = i1.ɵnov(_v, 3).disabled; _ck(_v, 2, 0, currVal_0, currVal_1, currVal_2, currVal_3, currVal_4, currVal_5, currVal_6, currVal_7); var currVal_10 = _v.context.$implicit.content.name; _ck(_v, 11, 0, currVal_10); }); }\nexport function View_MainSearchbarComponent_0(_l) { return i1.ɵvid(2, [i1.ɵpid(0, i14.FormattedDatePipe, [i15.Settings, i1.LOCALE_ID]), i1.ɵqud(402653184, 1, { trigger: 0 }), (_l()(), i1.ɵeld(2, 0, null, null, 24, \"form\", [[\"class\", \"input-container\"], [\"novalidate\", \"\"]], [[2, \"ng-untouched\", null], [2, \"ng-touched\", null], [2, \"ng-pristine\", null], [2, \"ng-dirty\", null], [2, \"ng-valid\", null], [2, \"ng-invalid\", null], [2, \"ng-pending\", null]], [[null, \"ngSubmit\"], [null, \"submit\"], [null, \"reset\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"submit\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 4).onSubmit($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"reset\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 4).onReset() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"ngSubmit\" === en)) {\n        var pd_2 = (_co.openSearchPage({ query: _co.formControl.value }) !== false);\n        ad = (pd_2 && ad);\n    } return ad; }, null, null)), i1.ɵdid(3, 16384, null, 0, i16.ɵangular_packages_forms_forms_bg, [], null, null), i1.ɵdid(4, 4210688, null, 0, i16.NgForm, [[8, null], [8, null]], null, { ngSubmit: \"ngSubmit\" }), i1.ɵprd(2048, null, i16.ControlContainer, null, [i16.NgForm]), i1.ɵdid(6, 16384, null, 0, i16.NgControlStatusGroup, [[4, i16.ControlContainer]], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(8, 16777216, [[1, 0], [\"trigger\", 1]], null, 7, \"input\", [[\"placeholder\", \"Search Drive\"], [\"trans-placeholder\", \"\"], [\"type\", \"text\"]], [[1, \"autocomplete\", 0], [1, \"role\", 0], [1, \"aria-autocomplete\", 0], [1, \"aria-activedescendant\", 0], [1, \"aria-expanded\", 0], [1, \"aria-owns\", 0], [2, \"ng-untouched\", null], [2, \"ng-touched\", null], [2, \"ng-pristine\", null], [2, \"ng-dirty\", null], [2, \"ng-valid\", null], [2, \"ng-invalid\", null], [2, \"ng-pending\", null]], [[null, \"input\"], [null, \"blur\"], [null, \"compositionstart\"], [null, \"compositionend\"], [null, \"focusin\"], [null, \"keydown\"]], function (_v, en, $event) { var ad = true; if ((\"input\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 9)._handleInput($event.target.value) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"blur\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 9).onTouched() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"compositionstart\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 9)._compositionStart() !== false);\n        ad = (pd_2 && ad);\n    } if ((\"compositionend\" === en)) {\n        var pd_3 = (i1.ɵnov(_v, 9)._compositionEnd($event.target.value) !== false);\n        ad = (pd_3 && ad);\n    } if ((\"focusin\" === en)) {\n        var pd_4 = (i1.ɵnov(_v, 10)._handleFocus() !== false);\n        ad = (pd_4 && ad);\n    } if ((\"blur\" === en)) {\n        var pd_5 = (i1.ɵnov(_v, 10)._onTouched() !== false);\n        ad = (pd_5 && ad);\n    } if ((\"input\" === en)) {\n        var pd_6 = (i1.ɵnov(_v, 10)._handleInput($event) !== false);\n        ad = (pd_6 && ad);\n    } if ((\"keydown\" === en)) {\n        var pd_7 = (i1.ɵnov(_v, 10)._handleKeydown($event) !== false);\n        ad = (pd_7 && ad);\n    } return ad; }, null, null)), i1.ɵdid(9, 16384, null, 0, i16.DefaultValueAccessor, [i1.Renderer2, i1.ElementRef, [2, i16.COMPOSITION_BUFFER_MODE]], null, null), i1.ɵdid(10, 147456, null, 0, i17.MatAutocompleteTrigger, [i1.ElementRef, i18.Overlay, i1.ViewContainerRef, i1.NgZone, i1.ChangeDetectorRef, i17.MAT_AUTOCOMPLETE_SCROLL_STRATEGY, [2, i19.Directionality], [8, null], [2, i13.DOCUMENT], i20.ViewportRuler], { autocomplete: [0, \"autocomplete\"] }, null), i1.ɵprd(1024, null, i16.NG_VALUE_ACCESSOR, function (p0_0, p1_0) { return [p0_0, p1_0]; }, [i16.DefaultValueAccessor, i17.MatAutocompleteTrigger]), i1.ɵdid(12, 540672, null, 0, i16.FormControlDirective, [[8, null], [8, null], [6, i16.NG_VALUE_ACCESSOR], [2, i16.ɵangular_packages_forms_forms_j]], { form: [0, \"form\"] }, null), i1.ɵprd(2048, null, i16.NgControl, null, [i16.FormControlDirective]), i1.ɵdid(14, 16384, null, 0, i16.NgControlStatus, [[4, i16.NgControl]], null, null), i1.ɵdid(15, 4341760, null, 0, i21.TranslateDirective, [i1.ElementRef, i22.Translations, i15.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(17, 0, null, null, 5, \"button\", [[\"class\", \"search-icon\"], [\"mat-icon-button\", \"\"], [\"type\", \"button\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], null, null, i2.View_MatButton_0, i2.RenderType_MatButton)), i1.ɵdid(18, 180224, null, 0, i3.MatButton, [i1.ElementRef, i4.Platform, i5.FocusMonitor, [2, i6.ANIMATION_MODULE_TYPE]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(20, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"search\"]], [[2, \"mat-icon-inline\", null]], null, null, i7.View_MatIcon_0, i7.RenderType_MatIcon)), i1.ɵdid(21, 638976, null, 0, i8.MatIcon, [i1.ElementRef, i8.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_MainSearchbarComponent_1)), i1.ɵdid(25, 16384, null, 0, i13.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵeld(28, 0, null, null, 9, \"mat-autocomplete\", [[\"class\", \"file-types-autocomplete mat-elevation-z1 mat-autocomplete\"]], null, [[null, \"optionSelected\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"optionSelected\" === en)) {\n        var pd_0 = (_co.executeAction($event) !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i23.View_MatAutocomplete_0, i23.RenderType_MatAutocomplete)), i1.ɵprd(6144, null, i10.MAT_OPTION_PARENT_COMPONENT, null, [i17.MatAutocomplete]), i1.ɵdid(30, 1097728, [[\"auto\", 4]], 2, i17.MatAutocomplete, [i1.ChangeDetectorRef, i1.ElementRef, i17.MAT_AUTOCOMPLETE_DEFAULT_OPTIONS], { displayWith: [0, \"displayWith\"], classList: [1, \"classList\"] }, { optionSelected: \"optionSelected\" }), i1.ɵqud(603979776, 2, { options: 1 }), i1.ɵqud(603979776, 3, { optionGroups: 1 }), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵand(16777216, null, 0, 2, null, View_MainSearchbarComponent_2)), i1.ɵdid(35, 278528, null, 0, i13.NgForOf, [i1.ViewContainerRef, i1.TemplateRef, i1.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null), i1.ɵpid(131072, i13.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, 0, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; var currVal_20 = i1.ɵnov(_v, 30); _ck(_v, 10, 0, currVal_20); var currVal_21 = _co.formControl; _ck(_v, 12, 0, currVal_21); var currVal_25 = \"search\"; _ck(_v, 21, 0, currVal_25); var currVal_26 = _co.formControl.value; _ck(_v, 25, 0, currVal_26); var currVal_27 = _co.displayFn; var currVal_28 = \"file-types-autocomplete mat-elevation-z1\"; _ck(_v, 30, 0, currVal_27, currVal_28); var currVal_29 = i1.ɵunv(_v, 35, 0, i1.ɵnov(_v, 36).transform(_co.results)); _ck(_v, 35, 0, currVal_29); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 6).ngClassUntouched; var currVal_1 = i1.ɵnov(_v, 6).ngClassTouched; var currVal_2 = i1.ɵnov(_v, 6).ngClassPristine; var currVal_3 = i1.ɵnov(_v, 6).ngClassDirty; var currVal_4 = i1.ɵnov(_v, 6).ngClassValid; var currVal_5 = i1.ɵnov(_v, 6).ngClassInvalid; var currVal_6 = i1.ɵnov(_v, 6).ngClassPending; _ck(_v, 2, 0, currVal_0, currVal_1, currVal_2, currVal_3, currVal_4, currVal_5, currVal_6); var currVal_7 = i1.ɵnov(_v, 10).autocompleteAttribute; var currVal_8 = (i1.ɵnov(_v, 10).autocompleteDisabled ? null : \"combobox\"); var currVal_9 = (i1.ɵnov(_v, 10).autocompleteDisabled ? null : \"list\"); var currVal_10 = ((i1.ɵnov(_v, 10).activeOption == null) ? null : i1.ɵnov(_v, 10).activeOption.id); var currVal_11 = (i1.ɵnov(_v, 10).autocompleteDisabled ? null : i1.ɵnov(_v, 10).panelOpen.toString()); var currVal_12 = ((i1.ɵnov(_v, 10).autocompleteDisabled || !i1.ɵnov(_v, 10).panelOpen) ? null : ((i1.ɵnov(_v, 10).autocomplete == null) ? null : i1.ɵnov(_v, 10).autocomplete.id)); var currVal_13 = i1.ɵnov(_v, 14).ngClassUntouched; var currVal_14 = i1.ɵnov(_v, 14).ngClassTouched; var currVal_15 = i1.ɵnov(_v, 14).ngClassPristine; var currVal_16 = i1.ɵnov(_v, 14).ngClassDirty; var currVal_17 = i1.ɵnov(_v, 14).ngClassValid; var currVal_18 = i1.ɵnov(_v, 14).ngClassInvalid; var currVal_19 = i1.ɵnov(_v, 14).ngClassPending; _ck(_v, 8, 1, [currVal_7, currVal_8, currVal_9, currVal_10, currVal_11, currVal_12, currVal_13, currVal_14, currVal_15, currVal_16, currVal_17, currVal_18, currVal_19]); var currVal_22 = (i1.ɵnov(_v, 18).disabled || null); var currVal_23 = (i1.ɵnov(_v, 18)._animationMode === \"NoopAnimations\"); _ck(_v, 17, 0, currVal_22, currVal_23); var currVal_24 = i1.ɵnov(_v, 21).inline; _ck(_v, 20, 0, currVal_24); }); }\nexport function View_MainSearchbarComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"main-searchbar\", [], null, null, null, View_MainSearchbarComponent_0, RenderType_MainSearchbarComponent)), i1.ɵdid(1, 114688, null, 0, i24.MainSearchbarComponent, [i25.Store, i26.DriveEntryApiService], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nvar MainSearchbarComponentNgFactory = i1.ɵccf(\"main-searchbar\", i24.MainSearchbarComponent, View_MainSearchbarComponent_Host_0, {}, {}, []);\nexport { MainSearchbarComponentNgFactory as MainSearchbarComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"main-searchbar{display:block;width:100%;max-width:700px;background-color:#fff;border:1px solid #eff1f2;position:relative;color:#656565;border-radius:3px}main-searchbar .input-container input{font-size:1.6rem;padding:0 50px;outline:0;border:none;transition:background-color .1s ease-in}main-searchbar .input-container input:focus{background-color:#fff;box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);border-bottom-left-radius:0;border-bottom-right-radius:0}main-searchbar .search-icon{position:absolute;top:2px;left:6px}main-searchbar .cancel-icon{position:absolute;top:3px;right:6px}.file-types-autocomplete.mat-autocomplete-panel{max-height:350px;color:rgba(0,0,0,.87);background-color:#fff}.file-types-autocomplete.mat-autocomplete-panel .mat-option{line-height:normal;margin-bottom:5px;font-size:1.4rem}.file-types-autocomplete.mat-autocomplete-panel .mat-option-text{display:flex;align-items:center}.file-types-autocomplete.mat-autocomplete-panel .mat-option-text .date,.file-types-autocomplete.mat-autocomplete-panel .mat-option-text file-icon{-ms-grid-row-align:start;align-self:start}.file-types-autocomplete.mat-autocomplete-panel .mat-option-text .owner{color:rgba(0,0,0,.54)}.file-types-autocomplete.mat-autocomplete-panel .mat-option-text file-icon{margin-right:10px}.file-types-autocomplete.mat-autocomplete-panel .mat-option-text .date{margin-left:auto}\"];\nexport { styles as styles };\n","<form class=\"input-container\" (ngSubmit)=\"openSearchPage({query: formControl.value})\">\n    <input type=\"text\" [matAutocomplete]=\"auto\" [formControl]=\"formControl\" placeholder=\"Search Drive\" #trigger trans-placeholder>\n    <button type=\"button\" mat-icon-button class=\"search-icon\">\n        <mat-icon svgIcon=\"search\"></mat-icon>\n    </button>\n    <button type=\"button\" mat-icon-button class=\"cancel-icon\" *ngIf=\"formControl.value\" (click)=\"resetForm()\">\n        <mat-icon svgIcon=\"close\"></mat-icon>\n    </button>\n</form>\n\n<mat-autocomplete #auto=\"matAutocomplete\" class=\"file-types-autocomplete mat-elevation-z1\" (optionSelected)=\"executeAction($event)\" [displayWith]=\"displayFn\">\n    <ng-container *ngFor=\"let result of results | async\">\n        <mat-option [value]=\"result\">\n            <file-icon [type]=\"result.content.type\"></file-icon>\n            <div class=\"meta\">\n                <div class=\"name\">{{result.content.name}}</div>\n                <div class=\"owner\" *ngIf=\"result.content.users\">{{result.content.users[0]?.display_name}}</div>\n            </div>\n            <div class=\"date\" *ngIf=\"result.content.updated_at\">{{result.content.updated_at | formattedDate}}</div>\n        </mat-option>\n    </ng-container>\n</mat-autocomplete>","import { Directive, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { openUploadWindow } from '../utils/open-upload-window';\r\nimport { UploadInputConfig } from '../upload-input-config';\r\n\r\n@Directive({\r\n    selector: '[uploadButton]'\r\n})\r\nexport class UploadButtonDirective implements OnInit {\r\n    @Input('uploadButton') config: UploadInputConfig = {};\r\n    @Output('filesSelected') filesSelected = new EventEmitter();\r\n\r\n    constructor(private el: ElementRef) {}\r\n\r\n    ngOnInit() {\r\n        this.el.nativeElement.addEventListener('click', e => {\r\n            e.preventDefault();\r\n            e.stopPropagation();\r\n\r\n            openUploadWindow(this.config).then(files => {\r\n                if (files && files.length) {\r\n                    this.filesSelected.emit(files);\r\n                }\r\n            });\r\n        });\r\n    }\r\n}\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, ChangeDetectorRef } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';\nimport { DriveFolder } from '../../models/driveFolder';\nimport { FoldersApiService } from '../../api/folders-api.service';\nimport { Store } from '@ngxs/store';\nimport { BackendErrorResponse } from 'common/core/types/backend-error-response';\nimport { DriveState} from '../../../state/drive-state';\nimport { finalize } from 'rxjs/operators';\nimport { NewFolderCreated } from '../../../state/actions/events';\n\nexport interface CrupdateFolderDialogData {\n    folder?: DriveFolder;\n}\n\nexport interface CrupdateFolderErrors {\n    name?: string;\n}\n\n@Component({\n    selector: 'crupdate-folder-dialog',\n    templateUrl: './crupdate-folder-dialog.component.html',\n    styleUrls: ['./crupdate-folder-dialog.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CrupdateFolderDialogComponent {\n    public folderName = new FormControl();\n    public loading = new BehaviorSubject(false);\n    public errors: CrupdateFolderErrors = {};\n\n    constructor(\n        private dialogRef: MatDialogRef<CrupdateFolderDialogComponent>,\n        @Inject(MAT_DIALOG_DATA) public data: CrupdateFolderDialogData,\n        private store: Store,\n        private foldersApi: FoldersApiService,\n        private changeDetection: ChangeDetectorRef,\n    ) {}\n\n    public confirm() {\n        this.loading.next(true);\n\n        const selectedFolderId = this.store.selectSnapshot(DriveState.selectedFolderId),\n            activeFolder = this.store.selectSnapshot(DriveState.activeFolder);\n\n        const params = {\n            name: this.folderName.value,\n            parent_id: selectedFolderId || (activeFolder ? activeFolder.id : null),\n        };\n\n        return this.foldersApi.create(params)\n            .pipe(finalize(() => this.loading.next(false)))\n            .subscribe(response => {\n                this.setErrors();\n                this.store.dispatch(new NewFolderCreated(response.folder));\n                this.close();\n            }, response => this.setErrors(response));\n    }\n\n    public setErrors(response?: BackendErrorResponse<CrupdateFolderErrors>) {\n        this.errors = response ? response.messages : {};\n        this.changeDetection.detectChanges();\n    }\n\n    public close() {\n        this.dialogRef.close();\n    }\n}\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, Inject } from '@angular/core';\nimport { Modal } from 'common/core/ui/dialogs/modal.service';\nimport { CrupdateFolderDialogComponent } from '../../folders/components/crupdate-folder-dialog/crupdate-folder-dialog.component';\nimport { Select, Store } from '@ngxs/store';\nimport { UploadFiles } from '../../state/actions/commands';\nimport { UploadedFile } from 'common/uploads/uploaded-file';\nimport { UploadInputConfig } from 'common/uploads/upload-input-config';\nimport { DriveState } from '../../state/drive-state';\nimport { Observable } from 'rxjs';\nimport { DRIVE_UPLOAD_INPUT_CONFIG } from '../../upload-input-config';\n\n@Component({\n    selector: 'sidebar-action-buttons',\n    templateUrl: './sidebar-action-buttons.component.html',\n    styleUrls: ['./sidebar-action-buttons.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SidebarActionButtonsComponent {\n    @Select(DriveState.canUpload) canUpload$: Observable<boolean>;\n\n    constructor(\n        private dialog: Modal,\n        private store: Store,\n        @Inject(DRIVE_UPLOAD_INPUT_CONFIG) public uploadInputConfig: UploadInputConfig,\n    ) {}\n\n    public openNewFolderDialog() {\n        this.dialog.open(CrupdateFolderDialogComponent);\n    }\n\n    public openUploadsPanel(files: UploadedFile[]) {\n        this.store.dispatch(new UploadFiles(files));\n    }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { Modal } from 'common/core/ui/dialogs/modal.service';\nimport { CrupdateFolderDialogComponent } from '../../folders/components/crupdate-folder-dialog/crupdate-folder-dialog.component';\nimport { Select, Store } from '@ngxs/store';\nimport { UploadFiles } from '../../state/actions/commands';\nimport { DriveState } from '../../state/drive-state';\nimport { Observable } from 'rxjs';\nvar SidebarActionButtonsComponent = /** @class */ (function () {\n    function SidebarActionButtonsComponent(dialog, store, uploadInputConfig) {\n        this.dialog = dialog;\n        this.store = store;\n        this.uploadInputConfig = uploadInputConfig;\n    }\n    SidebarActionButtonsComponent.prototype.openNewFolderDialog = function () {\n        this.dialog.open(CrupdateFolderDialogComponent);\n    };\n    SidebarActionButtonsComponent.prototype.openUploadsPanel = function (files) {\n        this.store.dispatch(new UploadFiles(files));\n    };\n    __decorate([\n        Select(DriveState.canUpload),\n        __metadata(\"design:type\", Observable)\n    ], SidebarActionButtonsComponent.prototype, \"canUpload$\", void 0);\n    return SidebarActionButtonsComponent;\n}());\nexport { SidebarActionButtonsComponent };\n","import { InjectionToken } from '@angular/core';\r\nimport { UploadInputConfig } from '../../common/uploads/upload-input-config';\r\n\r\nexport const DRIVE_UPLOAD_INPUT_CONFIG = new InjectionToken<UploadInputConfig>('DRIVE_UPLOAD_INPUT_CONFIG');","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./sidebar-action-buttons.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../../../../node_modules/@angular/material/button/typings/index.ngfactory\";\nimport * as i3 from \"@angular/material/button\";\nimport * as i4 from \"@angular/cdk/platform\";\nimport * as i5 from \"@angular/cdk/a11y\";\nimport * as i6 from \"@angular/platform-browser/animations\";\nimport * as i7 from \"@angular/common\";\nimport * as i8 from \"../../../../common/uploads/directives/upload-button.directive\";\nimport * as i9 from \"../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i10 from \"@angular/material/icon\";\nimport * as i11 from \"../../../../common/core/translations/translate.directive\";\nimport * as i12 from \"../../../../common/core/translations/translations.service\";\nimport * as i13 from \"../../../../common/core/config/settings.service\";\nimport * as i14 from \"./sidebar-action-buttons.component\";\nimport * as i15 from \"../../../../common/core/ui/dialogs/modal.service\";\nimport * as i16 from \"@ngxs/store\";\nimport * as i17 from \"../../upload-input-config\";\nvar styles_SidebarActionButtonsComponent = [i0.styles];\nvar RenderType_SidebarActionButtonsComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_SidebarActionButtonsComponent, data: {} });\nexport { RenderType_SidebarActionButtonsComponent as RenderType_SidebarActionButtonsComponent };\nexport function View_SidebarActionButtonsComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 0, null, null, 11, \"button\", [[\"class\", \"upload-button\"], [\"color\", \"primary\"], [\"mat-raised-button\", \"\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"filesSelected\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"filesSelected\" === en)) {\n        var pd_0 = (_co.openUploadsPanel($event) !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i2.View_MatButton_0, i2.RenderType_MatButton)), i1.ɵdid(1, 180224, null, 0, i3.MatButton, [i1.ElementRef, i4.Platform, i5.FocusMonitor, [2, i6.ANIMATION_MODULE_TYPE]], { disabled: [0, \"disabled\"], color: [1, \"color\"] }, null), i1.ɵpid(131072, i7.AsyncPipe, [i1.ChangeDetectorRef]), i1.ɵdid(3, 81920, null, 0, i8.UploadButtonDirective, [i1.ElementRef], { config: [0, \"config\"] }, { filesSelected: \"filesSelected\" }), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵeld(5, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"cloud-upload\"]], [[2, \"mat-icon-inline\", null]], null, null, i9.View_MatIcon_0, i9.RenderType_MatIcon)), i1.ɵdid(6, 638976, null, 0, i10.MatIcon, [i1.ElementRef, i10.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵeld(8, 0, null, 0, 2, \"span\", [[\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(9, 4341760, null, 0, i11.TranslateDirective, [i1.ElementRef, i12.Translations, i13.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Upload\"])), (_l()(), i1.ɵted(-1, 0, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵeld(13, 0, null, null, 6, \"button\", [[\"class\", \"new-folder-button\"], [\"color\", \"primary\"], [\"mat-raised-button\", \"\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.openNewFolderDialog() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i2.View_MatButton_0, i2.RenderType_MatButton)), i1.ɵdid(14, 180224, null, 0, i3.MatButton, [i1.ElementRef, i4.Platform, i5.FocusMonitor, [2, i6.ANIMATION_MODULE_TYPE]], { disabled: [0, \"disabled\"], color: [1, \"color\"] }, null), i1.ɵpid(131072, i7.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵeld(17, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"create-new-folder\"]], [[2, \"mat-icon-inline\", null]], null, null, i9.View_MatIcon_0, i9.RenderType_MatIcon)), i1.ɵdid(18, 638976, null, 0, i10.MatIcon, [i1.ElementRef, i10.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; var currVal_2 = !i1.ɵunv(_v, 1, 0, i1.ɵnov(_v, 2).transform(_co.canUpload$)); var currVal_3 = \"primary\"; _ck(_v, 1, 0, currVal_2, currVal_3); var currVal_4 = _co.uploadInputConfig; _ck(_v, 3, 0, currVal_4); var currVal_6 = \"cloud-upload\"; _ck(_v, 6, 0, currVal_6); var currVal_9 = !i1.ɵunv(_v, 14, 0, i1.ɵnov(_v, 15).transform(_co.canUpload$)); var currVal_10 = \"primary\"; _ck(_v, 14, 0, currVal_9, currVal_10); var currVal_12 = \"create-new-folder\"; _ck(_v, 18, 0, currVal_12); }, function (_ck, _v) { var currVal_0 = (i1.ɵnov(_v, 1).disabled || null); var currVal_1 = (i1.ɵnov(_v, 1)._animationMode === \"NoopAnimations\"); _ck(_v, 0, 0, currVal_0, currVal_1); var currVal_5 = i1.ɵnov(_v, 6).inline; _ck(_v, 5, 0, currVal_5); var currVal_7 = (i1.ɵnov(_v, 14).disabled || null); var currVal_8 = (i1.ɵnov(_v, 14)._animationMode === \"NoopAnimations\"); _ck(_v, 13, 0, currVal_7, currVal_8); var currVal_11 = i1.ɵnov(_v, 18).inline; _ck(_v, 17, 0, currVal_11); }); }\nexport function View_SidebarActionButtonsComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"sidebar-action-buttons\", [], null, null, null, View_SidebarActionButtonsComponent_0, RenderType_SidebarActionButtonsComponent)), i1.ɵdid(1, 49152, null, 0, i14.SidebarActionButtonsComponent, [i15.Modal, i16.Store, i17.DRIVE_UPLOAD_INPUT_CONFIG], null, null)], null, null); }\nvar SidebarActionButtonsComponentNgFactory = i1.ɵccf(\"sidebar-action-buttons\", i14.SidebarActionButtonsComponent, View_SidebarActionButtonsComponent_Host_0, {}, {}, []);\nexport { SidebarActionButtonsComponentNgFactory as SidebarActionButtonsComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"sidebar-action-buttons{display:block;text-align:center}sidebar-action-buttons .new-folder-button{max-width:60px;min-width:auto}\"];\nexport { styles as styles };\n","<button mat-raised-button color=\"primary\" class=\"upload-button\" [disabled]=\"!(canUpload$ | async)\" [uploadButton]=\"uploadInputConfig\" (filesSelected)=\"openUploadsPanel($event)\">\n    <mat-icon svgIcon=\"cloud-upload\"></mat-icon>\n    <span trans>Upload</span>\n</button>\n\n<button mat-raised-button color=\"primary\" class=\"new-folder-button\" [disabled]=\"!(canUpload$ | async)\" (click)=\"openNewFolderDialog()\">\n    <mat-icon svgIcon=\"create-new-folder\"></mat-icon>\n</button>","import { ElementRef, OnDestroy, OnInit } from '@angular/core';\nimport { Select } from '@ngxs/store';\nimport { DriveState } from '../../state/drive-state';\nimport { Observable, fromEvent, Subscription } from 'rxjs';\n\nexport abstract class BaseDropTarget implements OnInit, OnDestroy {\n    @Select(DriveState.dragging) dragging: Observable<boolean>;\n    protected subs: Subscription[] = [];\n    protected active: boolean;\n    protected abstract el: ElementRef;\n\n    ngOnInit() {\n        this.dragging.subscribe(dragging => {\n            if (dragging) {\n                this.onDragStart();\n            } else {\n                this.onDragEnd();\n            }\n        });\n    }\n\n    ngOnDestroy() {\n        this.unsubscribe();\n    }\n\n    protected abstract canDrop();\n    protected abstract executeAction();\n\n    protected onDragStart() {\n        const enter = fromEvent(this.el.nativeElement, 'mouseenter')\n            .subscribe(() => this.onDragEnter());\n\n        const leave = fromEvent(this.el.nativeElement, 'mouseleave')\n            .subscribe(() => this.onDragLeave());\n\n        this.subs.push(enter, leave);\n    }\n\n    protected onDragEnter() {\n        if ( ! this.canDrop()) return;\n        this.active = true;\n        this.el.nativeElement.classList.add('drag-over');\n    }\n\n    protected onDragLeave() {\n        this.active = false;\n        this.removeDragOverClass();\n    }\n\n    protected onDragEnd() {\n        this.unsubscribe();\n        this.removeDragOverClass();\n\n        // pointer never left element before drag stop,\n        // we can assume that user dropped on this el\n        if (this.active && this.canDrop()) {\n            this.executeAction();\n            this.active = false;\n        }\n    }\n\n    protected unsubscribe() {\n        this.subs.forEach(sub => sub && sub.unsubscribe());\n    }\n\n    protected removeDragOverClass() {\n        this.el.nativeElement.classList.remove('drag-over');\n    }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { Select } from '@ngxs/store';\nimport { DriveState } from '../../state/drive-state';\nimport { Observable, fromEvent } from 'rxjs';\nvar BaseDropTarget = /** @class */ (function () {\n    function BaseDropTarget() {\n        this.subs = [];\n    }\n    BaseDropTarget.prototype.ngOnInit = function () {\n        var _this = this;\n        this.dragging.subscribe(function (dragging) {\n            if (dragging) {\n                _this.onDragStart();\n            }\n            else {\n                _this.onDragEnd();\n            }\n        });\n    };\n    BaseDropTarget.prototype.ngOnDestroy = function () {\n        this.unsubscribe();\n    };\n    BaseDropTarget.prototype.onDragStart = function () {\n        var _this = this;\n        var enter = fromEvent(this.el.nativeElement, 'mouseenter')\n            .subscribe(function () { return _this.onDragEnter(); });\n        var leave = fromEvent(this.el.nativeElement, 'mouseleave')\n            .subscribe(function () { return _this.onDragLeave(); });\n        this.subs.push(enter, leave);\n    };\n    BaseDropTarget.prototype.onDragEnter = function () {\n        if (!this.canDrop())\n            return;\n        this.active = true;\n        this.el.nativeElement.classList.add('drag-over');\n    };\n    BaseDropTarget.prototype.onDragLeave = function () {\n        this.active = false;\n        this.removeDragOverClass();\n    };\n    BaseDropTarget.prototype.onDragEnd = function () {\n        this.unsubscribe();\n        this.removeDragOverClass();\n        // pointer never left element before drag stop,\n        // we can assume that user dropped on this el\n        if (this.active && this.canDrop()) {\n            this.executeAction();\n            this.active = false;\n        }\n    };\n    BaseDropTarget.prototype.unsubscribe = function () {\n        this.subs.forEach(function (sub) { return sub && sub.unsubscribe(); });\n    };\n    BaseDropTarget.prototype.removeDragOverClass = function () {\n        this.el.nativeElement.classList.remove('drag-over');\n    };\n    __decorate([\n        Select(DriveState.dragging),\n        __metadata(\"design:type\", Observable)\n    ], BaseDropTarget.prototype, \"dragging\", void 0);\n    return BaseDropTarget;\n}());\nexport { BaseDropTarget };\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { ElementRef } from '@angular/core';\nimport { BaseDropTarget } from './base-drop-target';\nimport { DriveState } from '../../state/drive-state';\nimport { Store } from '@ngxs/store';\nimport { MoveEntries } from '../../state/actions/commands';\nimport { RootFolder } from '../../folders/root-folder';\nvar FolderDropTargetDirective = /** @class */ (function (_super) {\n    __extends(FolderDropTargetDirective, _super);\n    function FolderDropTargetDirective(el, store) {\n        var _this = _super.call(this) || this;\n        _this.el = el;\n        _this.store = store;\n        return _this;\n    }\n    FolderDropTargetDirective.prototype.canDrop = function () {\n        var entries = this.store.selectSnapshot(DriveState.selectedEntries), folder = this.folder;\n        // trying to move file to root, but file is already in root\n        if (this.folder.id === 'root' && entries[0].parent_id === null)\n            return false;\n        return !entries.find(function (entry) { return entry.path.indexOf(folder.path) > -1; });\n    };\n    FolderDropTargetDirective.prototype.executeAction = function () {\n        var destination = this.folder.id;\n        return this.store.dispatch(new MoveEntries(destination));\n    };\n    return FolderDropTargetDirective;\n}(BaseDropTarget));\nexport { FolderDropTargetDirective };\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { BaseDropTarget } from './base-drop-target';\nimport { DriveState} from '../../state/drive-state';\nimport { Store } from '@ngxs/store';\nimport { DriveFolder } from '../../folders/models/driveFolder';\nimport { MoveEntries } from '../../state/actions/commands';\nimport { ROOT_FOLDER, RootFolder } from '../../folders/root-folder';\n\n@Directive({\n    selector: '[folderDropTarget]'\n})\nexport class FolderDropTargetDirective extends BaseDropTarget {\n    @Input('folderDropTarget') folder: DriveFolder|RootFolder;\n\n    constructor(\n        protected el: ElementRef,\n        protected store: Store,\n    ) {\n      super();\n    }\n\n    protected canDrop(): boolean {\n        const entries = this.store.selectSnapshot(DriveState.selectedEntries),\n            folder = this.folder as DriveFolder;\n\n        // trying to move file to root, but file is already in root\n        if (this.folder.id === 'root' && entries[0].parent_id === null) return false;\n\n        return !entries.find(entry => entry.path.indexOf(folder.path) > -1);\n    }\n\n    protected executeAction() {\n        const destination = this.folder.id;\n        return this.store.dispatch(new MoveEntries(destination));\n    }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { __extends } from 'tslib';\nimport { Observable, BehaviorSubject, of, Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { Directive, TemplateRef, ViewContainerRef, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, Input, IterableDiffers, ViewChild, ViewEncapsulation, Optional, Renderer2, NgModule } from '@angular/core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Base tree control. It has basic toggle/expand/collapse operations on a single data node.\n * @abstract\n * @template T\n */\nvar  /**\n * Base tree control. It has basic toggle/expand/collapse operations on a single data node.\n * @abstract\n * @template T\n */\nBaseTreeControl = /** @class */ (function () {\n    function BaseTreeControl() {\n        /**\n         * A selection model with multi-selection to track expansion status.\n         */\n        this.expansionModel = new SelectionModel(true);\n    }\n    /** Toggles one single data node's expanded/collapsed state. */\n    /**\n     * Toggles one single data node's expanded/collapsed state.\n     * @param {?} dataNode\n     * @return {?}\n     */\n    BaseTreeControl.prototype.toggle = /**\n     * Toggles one single data node's expanded/collapsed state.\n     * @param {?} dataNode\n     * @return {?}\n     */\n    function (dataNode) {\n        this.expansionModel.toggle(dataNode);\n    };\n    /** Expands one single data node. */\n    /**\n     * Expands one single data node.\n     * @param {?} dataNode\n     * @return {?}\n     */\n    BaseTreeControl.prototype.expand = /**\n     * Expands one single data node.\n     * @param {?} dataNode\n     * @return {?}\n     */\n    function (dataNode) {\n        this.expansionModel.select(dataNode);\n    };\n    /** Collapses one single data node. */\n    /**\n     * Collapses one single data node.\n     * @param {?} dataNode\n     * @return {?}\n     */\n    BaseTreeControl.prototype.collapse = /**\n     * Collapses one single data node.\n     * @param {?} dataNode\n     * @return {?}\n     */\n    function (dataNode) {\n        this.expansionModel.deselect(dataNode);\n    };\n    /** Whether a given data node is expanded or not. Returns true if the data node is expanded. */\n    /**\n     * Whether a given data node is expanded or not. Returns true if the data node is expanded.\n     * @param {?} dataNode\n     * @return {?}\n     */\n    BaseTreeControl.prototype.isExpanded = /**\n     * Whether a given data node is expanded or not. Returns true if the data node is expanded.\n     * @param {?} dataNode\n     * @return {?}\n     */\n    function (dataNode) {\n        return this.expansionModel.isSelected(dataNode);\n    };\n    /** Toggles a subtree rooted at `node` recursively. */\n    /**\n     * Toggles a subtree rooted at `node` recursively.\n     * @param {?} dataNode\n     * @return {?}\n     */\n    BaseTreeControl.prototype.toggleDescendants = /**\n     * Toggles a subtree rooted at `node` recursively.\n     * @param {?} dataNode\n     * @return {?}\n     */\n    function (dataNode) {\n        this.expansionModel.isSelected(dataNode)\n            ? this.collapseDescendants(dataNode)\n            : this.expandDescendants(dataNode);\n    };\n    /** Collapse all dataNodes in the tree. */\n    /**\n     * Collapse all dataNodes in the tree.\n     * @return {?}\n     */\n    BaseTreeControl.prototype.collapseAll = /**\n     * Collapse all dataNodes in the tree.\n     * @return {?}\n     */\n    function () {\n        this.expansionModel.clear();\n    };\n    /** Expands a subtree rooted at given data node recursively. */\n    /**\n     * Expands a subtree rooted at given data node recursively.\n     * @param {?} dataNode\n     * @return {?}\n     */\n    BaseTreeControl.prototype.expandDescendants = /**\n     * Expands a subtree rooted at given data node recursively.\n     * @param {?} dataNode\n     * @return {?}\n     */\n    function (dataNode) {\n        var /** @type {?} */ toBeProcessed = [dataNode];\n        toBeProcessed.push.apply(toBeProcessed, this.getDescendants(dataNode));\n        (_a = this.expansionModel).select.apply(_a, toBeProcessed);\n        var _a;\n    };\n    /** Collapses a subtree rooted at given data node recursively. */\n    /**\n     * Collapses a subtree rooted at given data node recursively.\n     * @param {?} dataNode\n     * @return {?}\n     */\n    BaseTreeControl.prototype.collapseDescendants = /**\n     * Collapses a subtree rooted at given data node recursively.\n     * @param {?} dataNode\n     * @return {?}\n     */\n    function (dataNode) {\n        var /** @type {?} */ toBeProcessed = [dataNode];\n        toBeProcessed.push.apply(toBeProcessed, this.getDescendants(dataNode));\n        (_a = this.expansionModel).deselect.apply(_a, toBeProcessed);\n        var _a;\n    };\n    return BaseTreeControl;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Flat tree control. Able to expand/collapse a subtree recursively for flattened tree.\n * @template T\n */\nvar  /**\n * Flat tree control. Able to expand/collapse a subtree recursively for flattened tree.\n * @template T\n */\nFlatTreeControl = /** @class */ (function (_super) {\n    __extends(FlatTreeControl, _super);\n    /** Construct with flat tree data node functions getLevel and isExpandable. */\n    function FlatTreeControl(getLevel, isExpandable) {\n        var _this = _super.call(this) || this;\n        _this.getLevel = getLevel;\n        _this.isExpandable = isExpandable;\n        return _this;\n    }\n    /**\n     * Gets a list of the data node's subtree of descendent data nodes.\n     *\n     * To make this working, the `dataNodes` of the TreeControl must be flattened tree nodes\n     * with correct levels.\n     */\n    /**\n     * Gets a list of the data node's subtree of descendent data nodes.\n     *\n     * To make this working, the `dataNodes` of the TreeControl must be flattened tree nodes\n     * with correct levels.\n     * @param {?} dataNode\n     * @return {?}\n     */\n    FlatTreeControl.prototype.getDescendants = /**\n     * Gets a list of the data node's subtree of descendent data nodes.\n     *\n     * To make this working, the `dataNodes` of the TreeControl must be flattened tree nodes\n     * with correct levels.\n     * @param {?} dataNode\n     * @return {?}\n     */\n    function (dataNode) {\n        var /** @type {?} */ startIndex = this.dataNodes.indexOf(dataNode);\n        var /** @type {?} */ results = [];\n        // Goes through flattened tree nodes in the `dataNodes` array, and get all descendants.\n        // The level of descendants of a tree node must be greater than the level of the given\n        // tree node.\n        // If we reach a node whose level is equal to the level of the tree node, we hit a sibling.\n        // If we reach a node whose level is greater than the level of the tree node, we hit a\n        // sibling of an ancestor.\n        for (var /** @type {?} */ i = startIndex + 1; i < this.dataNodes.length && this.getLevel(dataNode) < this.getLevel(this.dataNodes[i]); i++) {\n            results.push(this.dataNodes[i]);\n        }\n        return results;\n    };\n    /**\n     * Expands all data nodes in the tree.\n     *\n     * To make this working, the `dataNodes` variable of the TreeControl must be set to all flattened\n     * data nodes of the tree.\n     */\n    /**\n     * Expands all data nodes in the tree.\n     *\n     * To make this working, the `dataNodes` variable of the TreeControl must be set to all flattened\n     * data nodes of the tree.\n     * @return {?}\n     */\n    FlatTreeControl.prototype.expandAll = /**\n     * Expands all data nodes in the tree.\n     *\n     * To make this working, the `dataNodes` variable of the TreeControl must be set to all flattened\n     * data nodes of the tree.\n     * @return {?}\n     */\n    function () {\n        (_a = this.expansionModel).select.apply(_a, this.dataNodes);\n        var _a;\n    };\n    return FlatTreeControl;\n}(BaseTreeControl));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Nested tree control. Able to expand/collapse a subtree recursively for NestedNode type.\n * @template T\n */\nvar  /**\n * Nested tree control. Able to expand/collapse a subtree recursively for NestedNode type.\n * @template T\n */\nNestedTreeControl = /** @class */ (function (_super) {\n    __extends(NestedTreeControl, _super);\n    /** Construct with nested tree function getChildren. */\n    function NestedTreeControl(getChildren) {\n        var _this = _super.call(this) || this;\n        _this.getChildren = getChildren;\n        return _this;\n    }\n    /**\n     * Expands all dataNodes in the tree.\n     *\n     * To make this working, the `dataNodes` variable of the TreeControl must be set to all root level\n     * data nodes of the tree.\n     */\n    /**\n     * Expands all dataNodes in the tree.\n     *\n     * To make this working, the `dataNodes` variable of the TreeControl must be set to all root level\n     * data nodes of the tree.\n     * @return {?}\n     */\n    NestedTreeControl.prototype.expandAll = /**\n     * Expands all dataNodes in the tree.\n     *\n     * To make this working, the `dataNodes` variable of the TreeControl must be set to all root level\n     * data nodes of the tree.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        this.expansionModel.clear();\n        var /** @type {?} */ allNodes = this.dataNodes.reduce(function (accumulator, dataNode) {\n            return accumulator.concat(_this.getDescendants(dataNode), [dataNode]);\n        }, []);\n        (_a = this.expansionModel).select.apply(_a, allNodes);\n        var _a;\n    };\n    /** Gets a list of descendant dataNodes of a subtree rooted at given data node recursively. */\n    /**\n     * Gets a list of descendant dataNodes of a subtree rooted at given data node recursively.\n     * @param {?} dataNode\n     * @return {?}\n     */\n    NestedTreeControl.prototype.getDescendants = /**\n     * Gets a list of descendant dataNodes of a subtree rooted at given data node recursively.\n     * @param {?} dataNode\n     * @return {?}\n     */\n    function (dataNode) {\n        var /** @type {?} */ descendants = [];\n        this._getDescendants(descendants, dataNode);\n        // Remove the node itself\n        return descendants.splice(1);\n    };\n    /** A helper function to get descendants recursively. */\n    /**\n     * A helper function to get descendants recursively.\n     * @param {?} descendants\n     * @param {?} dataNode\n     * @return {?}\n     */\n    NestedTreeControl.prototype._getDescendants = /**\n     * A helper function to get descendants recursively.\n     * @param {?} descendants\n     * @param {?} dataNode\n     * @return {?}\n     */\n    function (descendants, dataNode) {\n        var _this = this;\n        descendants.push(dataNode);\n        var /** @type {?} */ childrenNodes = this.getChildren(dataNode);\n        if (Array.isArray(childrenNodes)) {\n            childrenNodes.forEach(function (child) { return _this._getDescendants(descendants, child); });\n        }\n        else if (childrenNodes instanceof Observable) {\n            childrenNodes.pipe(take(1)).subscribe(function (children) {\n                children.forEach(function (child) { return _this._getDescendants(descendants, child); });\n            });\n        }\n    };\n    return NestedTreeControl;\n}(BaseTreeControl));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Context provided to the tree node component.\n * @template T\n */\nvar  /**\n * Context provided to the tree node component.\n * @template T\n */\nCdkTreeNodeOutletContext = /** @class */ (function () {\n    function CdkTreeNodeOutletContext(data) {\n        this.$implicit = data;\n    }\n    return CdkTreeNodeOutletContext;\n}());\n/**\n * Data node definition for the CdkTree.\n * Captures the node's template and a when predicate that describes when this node should be used.\n * @template T\n */\nvar CdkTreeNodeDef = /** @class */ (function () {\n    /** @docs-private */\n    function CdkTreeNodeDef(template) {\n        this.template = template;\n    }\n    CdkTreeNodeDef.decorators = [\n        { type: Directive, args: [{\n                    selector: '[cdkTreeNodeDef]',\n                    inputs: [\n                        'when: cdkTreeNodeDefWhen'\n                    ],\n                },] },\n    ];\n    /** @nocollapse */\n    CdkTreeNodeDef.ctorParameters = function () { return [\n        { type: TemplateRef, },\n    ]; };\n    return CdkTreeNodeDef;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Outlet for nested CdkNode. Put `[cdkTreeNodeOutlet]` on a tag to place children dataNodes\n * inside the outlet.\n */\nvar CdkTreeNodeOutlet = /** @class */ (function () {\n    function CdkTreeNodeOutlet(viewContainer) {\n        this.viewContainer = viewContainer;\n    }\n    CdkTreeNodeOutlet.decorators = [\n        { type: Directive, args: [{\n                    selector: '[cdkTreeNodeOutlet]'\n                },] },\n    ];\n    /** @nocollapse */\n    CdkTreeNodeOutlet.ctorParameters = function () { return [\n        { type: ViewContainerRef, },\n    ]; };\n    return CdkTreeNodeOutlet;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * Returns an error to be thrown when there is no usable data.\n * \\@docs-private\n * @return {?}\n */\nfunction getTreeNoValidDataSourceError() {\n    return Error(\"A valid data source must be provided.\");\n}\n/**\n * Returns an error to be thrown when there are multiple nodes that are missing a when function.\n * \\@docs-private\n * @return {?}\n */\nfunction getTreeMultipleDefaultNodeDefsError() {\n    return Error(\"There can only be one default row without a when predicate function.\");\n}\n/**\n * Returns an error to be thrown when there are no matching node defs for a particular set of data.\n * \\@docs-private\n * @return {?}\n */\nfunction getTreeMissingMatchingNodeDefError() {\n    return Error(\"Could not find a matching node definition for the provided node data.\");\n}\n/**\n * Returns an error to be thrown when there are tree control.\n * \\@docs-private\n * @return {?}\n */\nfunction getTreeControlMissingError() {\n    return Error(\"Could not find a tree control for the tree.\");\n}\n/**\n * Returns an error to be thrown when tree control did not implement functions for flat/nested node.\n * \\@docs-private\n * @return {?}\n */\nfunction getTreeControlFunctionsMissingError() {\n    return Error(\"Could not find functions for nested/flat tree in tree control.\");\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * CDK tree component that connects with a data source to retrieve data of type `T` and renders\n * dataNodes with hierarchy. Updates the dataNodes when new data is provided by the data source.\n * @template T\n */\nvar CdkTree = /** @class */ (function () {\n    function CdkTree(_differs, _changeDetectorRef) {\n        this._differs = _differs;\n        this._changeDetectorRef = _changeDetectorRef;\n        /**\n         * Subject that emits when the component has been destroyed.\n         */\n        this._onDestroy = new Subject();\n        /**\n         * Level of nodes\n         */\n        this._levels = new Map();\n        /**\n         * Stream containing the latest information on what rows are being displayed on screen.\n         * Can be used by the data source to as a heuristic of what data should be provided.\n         */\n        this.viewChange = new BehaviorSubject({ start: 0, end: Number.MAX_VALUE });\n    }\n    Object.defineProperty(CdkTree.prototype, \"dataSource\", {\n        get: /**\n         * Provides a stream containing the latest data array to render. Influenced by the tree's\n         * stream of view window (what dataNodes are currently on screen).\n         * Data source can be an observable of data array, or a dara array to render.\n         * @return {?}\n         */\n        function () { return this._dataSource; },\n        set: /**\n         * @param {?} dataSource\n         * @return {?}\n         */\n        function (dataSource) {\n            if (this._dataSource !== dataSource) {\n                this._switchDataSource(dataSource);\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @return {?}\n     */\n    CdkTree.prototype.ngOnInit = /**\n     * @return {?}\n     */\n    function () {\n        this._dataDiffer = this._differs.find([]).create(this.trackBy);\n        if (!this.treeControl) {\n            throw getTreeControlMissingError();\n        }\n    };\n    /**\n     * @return {?}\n     */\n    CdkTree.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        this._nodeOutlet.viewContainer.clear();\n        this._onDestroy.next();\n        this._onDestroy.complete();\n        if (this._dataSource && typeof (/** @type {?} */ (this._dataSource)).disconnect === 'function') {\n            (/** @type {?} */ (this.dataSource)).disconnect(this);\n        }\n        if (this._dataSubscription) {\n            this._dataSubscription.unsubscribe();\n            this._dataSubscription = null;\n        }\n    };\n    /**\n     * @return {?}\n     */\n    CdkTree.prototype.ngAfterContentChecked = /**\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ defaultNodeDefs = this._nodeDefs.filter(function (def) { return !def.when; });\n        if (defaultNodeDefs.length > 1) {\n            throw getTreeMultipleDefaultNodeDefsError();\n        }\n        this._defaultNodeDef = defaultNodeDefs[0];\n        if (this.dataSource && this._nodeDefs && !this._dataSubscription) {\n            this._observeRenderChanges();\n        }\n    };\n    /**\n     * Switch to the provided data source by resetting the data and unsubscribing from the current\n     * render change subscription if one exists. If the data source is null, interpret this by\n     * clearing the node outlet. Otherwise start listening for new data.\n     * @param {?} dataSource\n     * @return {?}\n     */\n    CdkTree.prototype._switchDataSource = /**\n     * Switch to the provided data source by resetting the data and unsubscribing from the current\n     * render change subscription if one exists. If the data source is null, interpret this by\n     * clearing the node outlet. Otherwise start listening for new data.\n     * @param {?} dataSource\n     * @return {?}\n     */\n    function (dataSource) {\n        if (this._dataSource && typeof (/** @type {?} */ (this._dataSource)).disconnect === 'function') {\n            (/** @type {?} */ (this.dataSource)).disconnect(this);\n        }\n        if (this._dataSubscription) {\n            this._dataSubscription.unsubscribe();\n            this._dataSubscription = null;\n        }\n        // Remove the all dataNodes if there is now no data source\n        if (!dataSource) {\n            this._nodeOutlet.viewContainer.clear();\n        }\n        this._dataSource = dataSource;\n        if (this._nodeDefs) {\n            this._observeRenderChanges();\n        }\n    };\n    /**\n     * Set up a subscription for the data provided by the data source.\n     * @return {?}\n     */\n    CdkTree.prototype._observeRenderChanges = /**\n     * Set up a subscription for the data provided by the data source.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        var /** @type {?} */ dataStream;\n        // Cannot use `instanceof DataSource` since the data source could be a literal with\n        // `connect` function and may not extends DataSource.\n        if (typeof (/** @type {?} */ (this._dataSource)).connect === 'function') {\n            dataStream = (/** @type {?} */ (this._dataSource)).connect(this);\n        }\n        else if (this._dataSource instanceof Observable) {\n            dataStream = this._dataSource;\n        }\n        else if (Array.isArray(this._dataSource)) {\n            dataStream = of(this._dataSource);\n        }\n        if (dataStream) {\n            this._dataSubscription = dataStream.pipe(takeUntil(this._onDestroy))\n                .subscribe(function (data) { return _this.renderNodeChanges(data); });\n        }\n        else {\n            throw getTreeNoValidDataSourceError();\n        }\n    };\n    /** Check for changes made in the data and render each change (node added/removed/moved). */\n    /**\n     * Check for changes made in the data and render each change (node added/removed/moved).\n     * @param {?} data\n     * @param {?=} dataDiffer\n     * @param {?=} viewContainer\n     * @param {?=} parentData\n     * @return {?}\n     */\n    CdkTree.prototype.renderNodeChanges = /**\n     * Check for changes made in the data and render each change (node added/removed/moved).\n     * @param {?} data\n     * @param {?=} dataDiffer\n     * @param {?=} viewContainer\n     * @param {?=} parentData\n     * @return {?}\n     */\n    function (data, dataDiffer, viewContainer, parentData) {\n        var _this = this;\n        if (dataDiffer === void 0) { dataDiffer = this._dataDiffer; }\n        if (viewContainer === void 0) { viewContainer = this._nodeOutlet.viewContainer; }\n        var /** @type {?} */ changes = dataDiffer.diff(data);\n        if (!changes) {\n            return;\n        }\n        changes.forEachOperation(function (item, adjustedPreviousIndex, currentIndex) {\n            if (item.previousIndex == null) {\n                _this.insertNode(data[currentIndex], currentIndex, viewContainer, parentData);\n            }\n            else if (currentIndex == null) {\n                viewContainer.remove(adjustedPreviousIndex);\n                _this._levels.delete(item.item);\n            }\n            else {\n                var /** @type {?} */ view = viewContainer.get(adjustedPreviousIndex);\n                viewContainer.move(/** @type {?} */ ((view)), currentIndex);\n            }\n        });\n        this._changeDetectorRef.detectChanges();\n    };\n    /**\n     * Finds the matching node definition that should be used for this node data. If there is only\n     * one node definition, it is returned. Otherwise, find the node definition that has a when\n     * predicate that returns true with the data. If none return true, return the default node\n     * definition.\n     */\n    /**\n     * Finds the matching node definition that should be used for this node data. If there is only\n     * one node definition, it is returned. Otherwise, find the node definition that has a when\n     * predicate that returns true with the data. If none return true, return the default node\n     * definition.\n     * @param {?} data\n     * @param {?} i\n     * @return {?}\n     */\n    CdkTree.prototype._getNodeDef = /**\n     * Finds the matching node definition that should be used for this node data. If there is only\n     * one node definition, it is returned. Otherwise, find the node definition that has a when\n     * predicate that returns true with the data. If none return true, return the default node\n     * definition.\n     * @param {?} data\n     * @param {?} i\n     * @return {?}\n     */\n    function (data, i) {\n        if (this._nodeDefs.length === 1) {\n            return this._nodeDefs.first;\n        }\n        var /** @type {?} */ nodeDef = this._nodeDefs.find(function (def) { return def.when && def.when(i, data); }) || this._defaultNodeDef;\n        if (!nodeDef) {\n            throw getTreeMissingMatchingNodeDefError();\n        }\n        return nodeDef;\n    };\n    /**\n     * Create the embedded view for the data node template and place it in the correct index location\n     * within the data node view container.\n     */\n    /**\n     * Create the embedded view for the data node template and place it in the correct index location\n     * within the data node view container.\n     * @param {?} nodeData\n     * @param {?} index\n     * @param {?=} viewContainer\n     * @param {?=} parentData\n     * @return {?}\n     */\n    CdkTree.prototype.insertNode = /**\n     * Create the embedded view for the data node template and place it in the correct index location\n     * within the data node view container.\n     * @param {?} nodeData\n     * @param {?} index\n     * @param {?=} viewContainer\n     * @param {?=} parentData\n     * @return {?}\n     */\n    function (nodeData, index, viewContainer, parentData) {\n        var /** @type {?} */ node = this._getNodeDef(nodeData, index);\n        // Node context that will be provided to created embedded view\n        var /** @type {?} */ context = new CdkTreeNodeOutletContext(nodeData);\n        // If the tree is flat tree, then use the `getLevel` function in flat tree control\n        // Otherwise, use the level of parent node.\n        if (this.treeControl.getLevel) {\n            context.level = this.treeControl.getLevel(nodeData);\n        }\n        else if (typeof parentData !== 'undefined' && this._levels.has(parentData)) {\n            context.level = /** @type {?} */ ((this._levels.get(parentData))) + 1;\n        }\n        else {\n            context.level = 0;\n        }\n        this._levels.set(nodeData, context.level);\n        // Use default tree nodeOutlet, or nested node's nodeOutlet\n        var /** @type {?} */ container = viewContainer ? viewContainer : this._nodeOutlet.viewContainer;\n        container.createEmbeddedView(node.template, context, index);\n        // Set the data to just created `CdkTreeNode`.\n        // The `CdkTreeNode` created from `createEmbeddedView` will be saved in static variable\n        //     `mostRecentTreeNode`. We get it from static variable and pass the node data to it.\n        if (CdkTreeNode.mostRecentTreeNode) {\n            CdkTreeNode.mostRecentTreeNode.data = nodeData;\n        }\n    };\n    CdkTree.decorators = [\n        { type: Component, args: [{selector: 'cdk-tree',\n                    exportAs: 'cdkTree',\n                    template: \"<ng-container cdkTreeNodeOutlet></ng-container>\",\n                    host: {\n                        'class': 'cdk-tree',\n                        'role': 'tree',\n                    },\n                    encapsulation: ViewEncapsulation.None,\n                    changeDetection: ChangeDetectionStrategy.OnPush\n                },] },\n    ];\n    /** @nocollapse */\n    CdkTree.ctorParameters = function () { return [\n        { type: IterableDiffers, },\n        { type: ChangeDetectorRef, },\n    ]; };\n    CdkTree.propDecorators = {\n        \"dataSource\": [{ type: Input },],\n        \"treeControl\": [{ type: Input },],\n        \"trackBy\": [{ type: Input },],\n        \"_nodeOutlet\": [{ type: ViewChild, args: [CdkTreeNodeOutlet,] },],\n        \"_nodeDefs\": [{ type: ContentChildren, args: [CdkTreeNodeDef,] },],\n    };\n    return CdkTree;\n}());\n/**\n * Tree node for CdkTree. It contains the data in the tree node.\n * @template T\n */\nvar CdkTreeNode = /** @class */ (function () {\n    function CdkTreeNode(_elementRef, _tree) {\n        this._elementRef = _elementRef;\n        this._tree = _tree;\n        /**\n         * Subject that emits when the component has been destroyed.\n         */\n        this._destroyed = new Subject();\n        /**\n         * The role of the node should be 'group' if it's an internal node,\n         * and 'treeitem' if it's a leaf node.\n         */\n        this.role = 'treeitem';\n        CdkTreeNode.mostRecentTreeNode = /** @type {?} */ (this);\n    }\n    Object.defineProperty(CdkTreeNode.prototype, \"data\", {\n        /** The tree node's data. */\n        get: /**\n         * The tree node's data.\n         * @return {?}\n         */\n        function () { return this._data; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._data = value;\n            this._setRoleFromData();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(CdkTreeNode.prototype, \"isExpanded\", {\n        get: /**\n         * @return {?}\n         */\n        function () {\n            return this._tree.treeControl.isExpanded(this._data);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(CdkTreeNode.prototype, \"level\", {\n        get: /**\n         * @return {?}\n         */\n        function () {\n            return this._tree.treeControl.getLevel ? this._tree.treeControl.getLevel(this._data) : 0;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @return {?}\n     */\n    CdkTreeNode.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        // If this is the last tree node being destroyed,\n        // clear out the reference to avoid leaking memory.\n        if (CdkTreeNode.mostRecentTreeNode === this) {\n            CdkTreeNode.mostRecentTreeNode = null;\n        }\n        this._destroyed.next();\n        this._destroyed.complete();\n    };\n    /** Focuses the menu item. Implements for FocusableOption. */\n    /**\n     * Focuses the menu item. Implements for FocusableOption.\n     * @return {?}\n     */\n    CdkTreeNode.prototype.focus = /**\n     * Focuses the menu item. Implements for FocusableOption.\n     * @return {?}\n     */\n    function () {\n        this._elementRef.nativeElement.focus();\n    };\n    /**\n     * @return {?}\n     */\n    CdkTreeNode.prototype._setRoleFromData = /**\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        if (this._tree.treeControl.isExpandable) {\n            this.role = this._tree.treeControl.isExpandable(this._data) ? 'group' : 'treeitem';\n        }\n        else {\n            if (!this._tree.treeControl.getChildren) {\n                throw getTreeControlFunctionsMissingError();\n            }\n            var /** @type {?} */ childrenNodes = this._tree.treeControl.getChildren(this._data);\n            if (Array.isArray(childrenNodes)) {\n                this._setRoleFromChildren(/** @type {?} */ (childrenNodes));\n            }\n            else if (childrenNodes instanceof Observable) {\n                childrenNodes.pipe(takeUntil(this._destroyed))\n                    .subscribe(function (children) { return _this._setRoleFromChildren(children); });\n            }\n        }\n    };\n    /**\n     * @param {?} children\n     * @return {?}\n     */\n    CdkTreeNode.prototype._setRoleFromChildren = /**\n     * @param {?} children\n     * @return {?}\n     */\n    function (children) {\n        this.role = children && children.length ? 'group' : 'treeitem';\n    };\n    /**\n     * The most recently created `CdkTreeNode`. We save it in static variable so we can retrieve it\n     * in `CdkTree` and set the data to it.\n     */\n    CdkTreeNode.mostRecentTreeNode = null;\n    CdkTreeNode.decorators = [\n        { type: Directive, args: [{\n                    selector: 'cdk-tree-node',\n                    exportAs: 'cdkTreeNode',\n                    host: {\n                        '[attr.aria-expanded]': 'isExpanded',\n                        '[attr.aria-level]': 'role === \"treeitem\" ? level : null',\n                        '[attr.role]': 'role',\n                        'class': 'cdk-tree-node',\n                    },\n                },] },\n    ];\n    /** @nocollapse */\n    CdkTreeNode.ctorParameters = function () { return [\n        { type: ElementRef, },\n        { type: CdkTree, },\n    ]; };\n    CdkTreeNode.propDecorators = {\n        \"role\": [{ type: Input },],\n    };\n    return CdkTreeNode;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Nested node is a child of `<cdk-tree>`. It works with nested tree.\n * By using `cdk-nested-tree-node` component in tree node template, children of the parent node will\n * be added in the `cdkTreeNodeOutlet` in tree node template.\n * For example:\n *   ```html\n *   <cdk-mested-tree-node>\n *     {{node.name}}\n *     <ng-template cdkTreeNodeOutlet></ng-template>\n *   </cdk-tree-node>\n *   ```\n * The children of node will be automatically added to `cdkTreeNodeOutlet`, the result dom will be\n * like this:\n *   ```html\n *   <cdk-nested-tree-node>\n *     {{node.name}}\n *      <cdk-nested-tree-node>{{child1.name}}</cdk-tree-node>\n *      <cdk-nested-tree-node>{{child2.name}}</cdk-tree-node>\n *   </cdk-tree-node>\n *   ```\n * @template T\n */\nvar CdkNestedTreeNode = /** @class */ (function (_super) {\n    __extends(CdkNestedTreeNode, _super);\n    function CdkNestedTreeNode(_elementRef, _tree, _differs) {\n        var _this = _super.call(this, _elementRef, _tree) || this;\n        _this._elementRef = _elementRef;\n        _this._tree = _tree;\n        _this._differs = _differs;\n        return _this;\n    }\n    /**\n     * @return {?}\n     */\n    CdkNestedTreeNode.prototype.ngAfterContentInit = /**\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        this._dataDiffer = this._differs.find([]).create(this._tree.trackBy);\n        if (!this._tree.treeControl.getChildren) {\n            throw getTreeControlFunctionsMissingError();\n        }\n        var /** @type {?} */ childrenNodes = this._tree.treeControl.getChildren(this.data);\n        if (Array.isArray(childrenNodes)) {\n            this.updateChildrenNodes(/** @type {?} */ (childrenNodes));\n        }\n        else if (childrenNodes instanceof Observable) {\n            childrenNodes.pipe(takeUntil(this._destroyed))\n                .subscribe(function (result) { return _this.updateChildrenNodes(result); });\n        }\n        this.nodeOutlet.changes.pipe(takeUntil(this._destroyed))\n            .subscribe(function () { return _this.updateChildrenNodes(); });\n    };\n    /**\n     * @return {?}\n     */\n    CdkNestedTreeNode.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        this._clear();\n        _super.prototype.ngOnDestroy.call(this);\n    };\n    /** Add children dataNodes to the NodeOutlet */\n    /**\n     * Add children dataNodes to the NodeOutlet\n     * @param {?=} children\n     * @return {?}\n     */\n    CdkNestedTreeNode.prototype.updateChildrenNodes = /**\n     * Add children dataNodes to the NodeOutlet\n     * @param {?=} children\n     * @return {?}\n     */\n    function (children) {\n        if (children) {\n            this._children = children;\n        }\n        if (this.nodeOutlet.length && this._children) {\n            var /** @type {?} */ viewContainer = this.nodeOutlet.first.viewContainer;\n            this._tree.renderNodeChanges(this._children, this._dataDiffer, viewContainer, this._data);\n        }\n        else {\n            // Reset the data differ if there's no children nodes displayed\n            this._dataDiffer.diff([]);\n        }\n    };\n    /** Clear the children dataNodes. */\n    /**\n     * Clear the children dataNodes.\n     * @return {?}\n     */\n    CdkNestedTreeNode.prototype._clear = /**\n     * Clear the children dataNodes.\n     * @return {?}\n     */\n    function () {\n        if (this.nodeOutlet && this.nodeOutlet.first) {\n            this.nodeOutlet.first.viewContainer.clear();\n            this._dataDiffer.diff([]);\n        }\n    };\n    CdkNestedTreeNode.decorators = [\n        { type: Directive, args: [{\n                    selector: 'cdk-nested-tree-node',\n                    exportAs: 'cdkNestedTreeNode',\n                    host: {\n                        '[attr.aria-expanded]': 'isExpanded',\n                        '[attr.role]': 'role',\n                        'class': 'cdk-tree-node cdk-nested-tree-node',\n                    },\n                    providers: [{ provide: CdkTreeNode, useExisting: CdkNestedTreeNode }]\n                },] },\n    ];\n    /** @nocollapse */\n    CdkNestedTreeNode.ctorParameters = function () { return [\n        { type: ElementRef, },\n        { type: CdkTree, },\n        { type: IterableDiffers, },\n    ]; };\n    CdkNestedTreeNode.propDecorators = {\n        \"nodeOutlet\": [{ type: ContentChildren, args: [CdkTreeNodeOutlet,] },],\n    };\n    return CdkNestedTreeNode;\n}(CdkTreeNode));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Indent for the children tree dataNodes.\n * This directive will add left-padding to the node to show hierarchy.\n * @template T\n */\nvar CdkTreeNodePadding = /** @class */ (function () {\n    function CdkTreeNodePadding(_treeNode, _tree, _renderer, _element, _dir) {\n        var _this = this;\n        this._treeNode = _treeNode;\n        this._tree = _tree;\n        this._renderer = _renderer;\n        this._element = _element;\n        this._dir = _dir;\n        /**\n         * Subject that emits when the component has been destroyed.\n         */\n        this._destroyed = new Subject();\n        this._indent = 40;\n        this._setPadding();\n        if (this._dir) {\n            this._dir.change.pipe(takeUntil(this._destroyed)).subscribe(function () { return _this._setPadding(); });\n        }\n    }\n    Object.defineProperty(CdkTreeNodePadding.prototype, \"level\", {\n        get: /**\n         * The level of depth of the tree node. The padding will be `level * indent` pixels.\n         * @return {?}\n         */\n        function () { return this._level; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._level = coerceNumberProperty(value);\n            this._setPadding();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(CdkTreeNodePadding.prototype, \"indent\", {\n        get: /**\n         * The indent for each level. Default number 40px from material design menu sub-menu spec.\n         * @return {?}\n         */\n        function () { return this._indent; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._indent = coerceNumberProperty(value);\n            this._setPadding();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @return {?}\n     */\n    CdkTreeNodePadding.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        this._destroyed.next();\n        this._destroyed.complete();\n    };\n    /** The padding indent value for the tree node. Returns a string with px numbers if not null. */\n    /**\n     * The padding indent value for the tree node. Returns a string with px numbers if not null.\n     * @return {?}\n     */\n    CdkTreeNodePadding.prototype._paddingIndent = /**\n     * The padding indent value for the tree node. Returns a string with px numbers if not null.\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ nodeLevel = (this._treeNode.data && this._tree.treeControl.getLevel)\n            ? this._tree.treeControl.getLevel(this._treeNode.data)\n            : null;\n        var /** @type {?} */ level = this._level || nodeLevel;\n        return level ? level * this._indent + \"px\" : null;\n    };\n    /**\n     * @return {?}\n     */\n    CdkTreeNodePadding.prototype._setPadding = /**\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ padding = this._paddingIndent();\n        var /** @type {?} */ paddingProp = this._dir && this._dir.value === 'rtl' ? 'paddingRight' : 'paddingLeft';\n        this._renderer.setStyle(this._element.nativeElement, paddingProp, padding);\n    };\n    CdkTreeNodePadding.decorators = [\n        { type: Directive, args: [{\n                    selector: '[cdkTreeNodePadding]',\n                },] },\n    ];\n    /** @nocollapse */\n    CdkTreeNodePadding.ctorParameters = function () { return [\n        { type: CdkTreeNode, },\n        { type: CdkTree, },\n        { type: Renderer2, },\n        { type: ElementRef, },\n        { type: Directionality, decorators: [{ type: Optional },] },\n    ]; };\n    CdkTreeNodePadding.propDecorators = {\n        \"level\": [{ type: Input, args: ['cdkTreeNodePadding',] },],\n        \"indent\": [{ type: Input, args: ['cdkTreeNodePaddingIndent',] },],\n    };\n    return CdkTreeNodePadding;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Node toggle to expand/collapse the node.\n * @template T\n */\nvar CdkTreeNodeToggle = /** @class */ (function () {\n    function CdkTreeNodeToggle(_tree, _treeNode) {\n        this._tree = _tree;\n        this._treeNode = _treeNode;\n        this._recursive = false;\n    }\n    Object.defineProperty(CdkTreeNodeToggle.prototype, \"recursive\", {\n        get: /**\n         * Whether expand/collapse the node recursively.\n         * @return {?}\n         */\n        function () { return this._recursive; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) { this._recursive = coerceBooleanProperty(value); },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @param {?} event\n     * @return {?}\n     */\n    CdkTreeNodeToggle.prototype._toggle = /**\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        this.recursive\n            ? this._tree.treeControl.toggleDescendants(this._treeNode.data)\n            : this._tree.treeControl.toggle(this._treeNode.data);\n        event.stopPropagation();\n    };\n    CdkTreeNodeToggle.decorators = [\n        { type: Directive, args: [{\n                    selector: '[cdkTreeNodeToggle]',\n                    host: {\n                        '(click)': '_toggle($event)',\n                    }\n                },] },\n    ];\n    /** @nocollapse */\n    CdkTreeNodeToggle.ctorParameters = function () { return [\n        { type: CdkTree, },\n        { type: CdkTreeNode, },\n    ]; };\n    CdkTreeNodeToggle.propDecorators = {\n        \"recursive\": [{ type: Input, args: ['cdkTreeNodeToggleRecursive',] },],\n    };\n    return CdkTreeNodeToggle;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nvar /** @type {?} */ EXPORTED_DECLARATIONS = [\n    CdkNestedTreeNode,\n    CdkTreeNodeDef,\n    CdkTreeNodePadding,\n    CdkTreeNodeToggle,\n    CdkTree,\n    CdkTreeNode,\n    CdkTreeNodeOutlet,\n];\nvar CdkTreeModule = /** @class */ (function () {\n    function CdkTreeModule() {\n    }\n    CdkTreeModule.decorators = [\n        { type: NgModule, args: [{\n                    imports: [CommonModule],\n                    exports: EXPORTED_DECLARATIONS,\n                    declarations: EXPORTED_DECLARATIONS,\n                    providers: [FocusMonitor, CdkTreeNodeDef]\n                },] },\n    ];\n    return CdkTreeModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\nexport { BaseTreeControl, FlatTreeControl, NestedTreeControl, CdkNestedTreeNode, CdkTreeNodeOutletContext, CdkTreeNodeDef, CdkTreeNodePadding, CdkTreeNodeOutlet, CdkTree, CdkTreeNode, getTreeNoValidDataSourceError, getTreeMultipleDefaultNodeDefsError, getTreeMissingMatchingNodeDefError, getTreeControlMissingError, getTreeControlFunctionsMissingError, CdkTreeModule, CdkTreeNodeToggle };\n//# sourceMappingURL=tree.es5.js.map\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Directive, ViewContainerRef, Attribute, ContentChildren, ElementRef, Input, IterableDiffers, ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation, NgModule } from '@angular/core';\nimport { __extends } from 'tslib';\nimport { CdkNestedTreeNode, CdkTree, CdkTreeNode, CdkTreeNodeDef, CdkTreeNodePadding, CdkTreeNodeToggle, CdkTreeModule } from '@angular/cdk/tree';\nimport { mixinDisabled, mixinTabIndex, MatCommonModule } from '@angular/material/core';\nimport { CommonModule } from '@angular/common';\nimport { DataSource } from '@angular/cdk/collections';\nimport { BehaviorSubject, merge } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Outlet for nested CdkNode. Put `[matTreeNodeOutlet]` on a tag to place children dataNodes\n * inside the outlet.\n */\nvar MatTreeNodeOutlet = /** @class */ (function () {\n    function MatTreeNodeOutlet(viewContainer) {\n        this.viewContainer = viewContainer;\n    }\n    MatTreeNodeOutlet.decorators = [\n        { type: Directive, args: [{\n                    selector: '[matTreeNodeOutlet]'\n                },] },\n    ];\n    /** @nocollapse */\n    MatTreeNodeOutlet.ctorParameters = function () { return [\n        { type: ViewContainerRef, },\n    ]; };\n    return MatTreeNodeOutlet;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n// TODO(devversion): workaround for https://github.com/angular/material2/issues/12760\nvar /** @type {?} */ _CdkTreeNodeDef = CdkTreeNodeDef;\nvar /** @type {?} */ _MatTreeNodeMixinBase = mixinTabIndex(mixinDisabled(CdkTreeNode));\nvar /** @type {?} */ _MatNestedTreeNodeMixinBase = mixinTabIndex(mixinDisabled(CdkNestedTreeNode));\n/**\n * Wrapper for the CdkTree node with Material design styles.\n * @template T\n */\nvar MatTreeNode = /** @class */ (function (_super) {\n    __extends(MatTreeNode, _super);\n    function MatTreeNode(_elementRef, _tree, tabIndex) {\n        var _this = _super.call(this, _elementRef, _tree) || this;\n        _this._elementRef = _elementRef;\n        _this._tree = _tree;\n        _this.role = 'treeitem';\n        _this.tabIndex = Number(tabIndex) || 0;\n        return _this;\n    }\n    MatTreeNode.decorators = [\n        { type: Directive, args: [{\n                    selector: 'mat-tree-node',\n                    exportAs: 'matTreeNode',\n                    inputs: ['disabled', 'tabIndex'],\n                    host: {\n                        '[attr.aria-expanded]': 'isExpanded',\n                        '[attr.aria-level]': 'role === \"treeitem\" ? level : null',\n                        '[attr.role]': 'role',\n                        'class': 'mat-tree-node'\n                    },\n                    providers: [{ provide: CdkTreeNode, useExisting: MatTreeNode }]\n                },] },\n    ];\n    /** @nocollapse */\n    MatTreeNode.ctorParameters = function () { return [\n        { type: ElementRef, },\n        { type: CdkTree, },\n        { type: undefined, decorators: [{ type: Attribute, args: ['tabindex',] },] },\n    ]; };\n    MatTreeNode.propDecorators = {\n        \"role\": [{ type: Input },],\n    };\n    return MatTreeNode;\n}(_MatTreeNodeMixinBase));\n/**\n * Wrapper for the CdkTree node definition with Material design styles.\n * @template T\n */\nvar MatTreeNodeDef = /** @class */ (function (_super) {\n    __extends(MatTreeNodeDef, _super);\n    function MatTreeNodeDef() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    MatTreeNodeDef.decorators = [\n        { type: Directive, args: [{\n                    selector: '[matTreeNodeDef]',\n                    inputs: [\n                        'when: matTreeNodeDefWhen'\n                    ],\n                    providers: [{ provide: CdkTreeNodeDef, useExisting: MatTreeNodeDef }]\n                },] },\n    ];\n    /** @nocollapse */\n    MatTreeNodeDef.propDecorators = {\n        \"data\": [{ type: Input, args: ['matTreeNode',] },],\n    };\n    return MatTreeNodeDef;\n}(_CdkTreeNodeDef));\n/**\n * Wrapper for the CdkTree nested node with Material design styles.\n * @template T\n */\nvar MatNestedTreeNode = /** @class */ (function (_super) {\n    __extends(MatNestedTreeNode, _super);\n    function MatNestedTreeNode(_elementRef, _tree, _differs, tabIndex) {\n        var _this = _super.call(this, _elementRef, _tree, _differs) || this;\n        _this._elementRef = _elementRef;\n        _this._tree = _tree;\n        _this._differs = _differs;\n        _this.tabIndex = Number(tabIndex) || 0;\n        return _this;\n    }\n    // This is a workaround for https://github.com/angular/angular/issues/23091\n    // In aot mode, the lifecycle hooks from parent class are not called.\n    // TODO(tinayuangao): Remove when the angular issue #23091 is fixed\n    /**\n     * @return {?}\n     */\n    MatNestedTreeNode.prototype.ngAfterContentInit = /**\n     * @return {?}\n     */\n    function () {\n        _super.prototype.ngAfterContentInit.call(this);\n    };\n    /**\n     * @return {?}\n     */\n    MatNestedTreeNode.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        _super.prototype.ngOnDestroy.call(this);\n    };\n    MatNestedTreeNode.decorators = [\n        { type: Directive, args: [{\n                    selector: 'mat-nested-tree-node',\n                    exportAs: 'matNestedTreeNode',\n                    host: {\n                        '[attr.aria-expanded]': 'isExpanded',\n                        '[attr.role]': 'role',\n                        'class': 'mat-nested-tree-node',\n                    },\n                    inputs: ['disabled', 'tabIndex'],\n                    providers: [\n                        { provide: CdkNestedTreeNode, useExisting: MatNestedTreeNode },\n                        { provide: CdkTreeNode, useExisting: MatNestedTreeNode }\n                    ]\n                },] },\n    ];\n    /** @nocollapse */\n    MatNestedTreeNode.ctorParameters = function () { return [\n        { type: ElementRef, },\n        { type: CdkTree, },\n        { type: IterableDiffers, },\n        { type: undefined, decorators: [{ type: Attribute, args: ['tabindex',] },] },\n    ]; };\n    MatNestedTreeNode.propDecorators = {\n        \"node\": [{ type: Input, args: ['matNestedTreeNode',] },],\n        \"nodeOutlet\": [{ type: ContentChildren, args: [MatTreeNodeOutlet,] },],\n    };\n    return MatNestedTreeNode;\n}(_MatNestedTreeNodeMixinBase));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n// TODO(devversion): workaround for https://github.com/angular/material2/issues/12760\nvar /** @type {?} */ _CdkTreeNodePadding = CdkTreeNodePadding;\n/**\n * Wrapper for the CdkTree padding with Material design styles.\n * @template T\n */\nvar MatTreeNodePadding = /** @class */ (function (_super) {\n    __extends(MatTreeNodePadding, _super);\n    function MatTreeNodePadding() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    MatTreeNodePadding.decorators = [\n        { type: Directive, args: [{\n                    selector: '[matTreeNodePadding]',\n                    providers: [{ provide: CdkTreeNodePadding, useExisting: MatTreeNodePadding }]\n                },] },\n    ];\n    /** @nocollapse */\n    MatTreeNodePadding.propDecorators = {\n        \"level\": [{ type: Input, args: ['matTreeNodePadding',] },],\n        \"indent\": [{ type: Input, args: ['matTreeNodePaddingIndent',] },],\n    };\n    return MatTreeNodePadding;\n}(_CdkTreeNodePadding));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n// TODO(devversion): workaround for https://github.com/angular/material2/issues/12760\nvar /** @type {?} */ _CdkTree = CdkTree;\n/**\n * Wrapper for the CdkTable with Material design styles.\n * @template T\n */\nvar MatTree = /** @class */ (function (_super) {\n    __extends(MatTree, _super);\n    function MatTree() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    MatTree.decorators = [\n        { type: Component, args: [{selector: 'mat-tree',\n                    exportAs: 'matTree',\n                    template: \"<ng-container matTreeNodeOutlet></ng-container>\",\n                    host: {\n                        'class': 'mat-tree',\n                        'role': 'tree',\n                    },\n                    styles: [\".mat-tree{display:block}.mat-tree-node{display:flex;align-items:center;min-height:48px;flex:1;overflow:hidden;word-wrap:break-word}.mat-nested-tree-ndoe{border-bottom-width:0}\"],\n                    encapsulation: ViewEncapsulation.None,\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    providers: [{ provide: CdkTree, useExisting: MatTree }]\n                },] },\n    ];\n    /** @nocollapse */\n    MatTree.propDecorators = {\n        \"_nodeOutlet\": [{ type: ViewChild, args: [MatTreeNodeOutlet,] },],\n    };\n    return MatTree;\n}(_CdkTree));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n// TODO(devversion): workaround for https://github.com/angular/material2/issues/12760\nvar /** @type {?} */ _CdkTreeNodeToggle = CdkTreeNodeToggle;\n/**\n * Wrapper for the CdkTree's toggle with Material design styles.\n * @template T\n */\nvar MatTreeNodeToggle = /** @class */ (function (_super) {\n    __extends(MatTreeNodeToggle, _super);\n    function MatTreeNodeToggle() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.recursive = false;\n        return _this;\n    }\n    MatTreeNodeToggle.decorators = [\n        { type: Directive, args: [{\n                    selector: '[matTreeNodeToggle]',\n                    host: {\n                        '(click)': '_toggle($event)',\n                    },\n                    providers: [{ provide: CdkTreeNodeToggle, useExisting: MatTreeNodeToggle }]\n                },] },\n    ];\n    /** @nocollapse */\n    MatTreeNodeToggle.propDecorators = {\n        \"recursive\": [{ type: Input, args: ['matTreeNodeToggleRecursive',] },],\n    };\n    return MatTreeNodeToggle;\n}(_CdkTreeNodeToggle));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nvar /** @type {?} */ MAT_TREE_DIRECTIVES = [\n    MatNestedTreeNode,\n    MatTreeNodeDef,\n    MatTreeNodePadding,\n    MatTreeNodeToggle,\n    MatTree,\n    MatTreeNode,\n    MatTreeNodeOutlet\n];\nvar MatTreeModule = /** @class */ (function () {\n    function MatTreeModule() {\n    }\n    MatTreeModule.decorators = [\n        { type: NgModule, args: [{\n                    imports: [CdkTreeModule, CommonModule, MatCommonModule],\n                    exports: MAT_TREE_DIRECTIVES,\n                    declarations: MAT_TREE_DIRECTIVES,\n                },] },\n    ];\n    return MatTreeModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Tree flattener to convert a normal type of node to node with children & level information.\n * Transform nested nodes of type `T` to flattened nodes of type `F`.\n *\n * For example, the input data of type `T` is nested, and contains its children data:\n *   SomeNode: {\n *     key: 'Fruits',\n *     children: [\n *       NodeOne: {\n *         key: 'Apple',\n *       },\n *       NodeTwo: {\n *        key: 'Pear',\n *      }\n *    ]\n *  }\n *  After flattener flatten the tree, the structure will become\n *  SomeNode: {\n *    key: 'Fruits',\n *    expandable: true,\n *    level: 1\n *  },\n *  NodeOne: {\n *    key: 'Apple',\n *    expandable: false,\n *    level: 2\n *  },\n *  NodeTwo: {\n *   key: 'Pear',\n *   expandable: false,\n *   level: 2\n * }\n * and the output flattened type is `F` with additional information.\n * @template T, F\n */\nvar  /**\n * Tree flattener to convert a normal type of node to node with children & level information.\n * Transform nested nodes of type `T` to flattened nodes of type `F`.\n *\n * For example, the input data of type `T` is nested, and contains its children data:\n *   SomeNode: {\n *     key: 'Fruits',\n *     children: [\n *       NodeOne: {\n *         key: 'Apple',\n *       },\n *       NodeTwo: {\n *        key: 'Pear',\n *      }\n *    ]\n *  }\n *  After flattener flatten the tree, the structure will become\n *  SomeNode: {\n *    key: 'Fruits',\n *    expandable: true,\n *    level: 1\n *  },\n *  NodeOne: {\n *    key: 'Apple',\n *    expandable: false,\n *    level: 2\n *  },\n *  NodeTwo: {\n *   key: 'Pear',\n *   expandable: false,\n *   level: 2\n * }\n * and the output flattened type is `F` with additional information.\n * @template T, F\n */\nMatTreeFlattener = /** @class */ (function () {\n    function MatTreeFlattener(transformFunction, getLevel, isExpandable, getChildren) {\n        this.transformFunction = transformFunction;\n        this.getLevel = getLevel;\n        this.isExpandable = isExpandable;\n        this.getChildren = getChildren;\n    }\n    /**\n     * @param {?} node\n     * @param {?} level\n     * @param {?} resultNodes\n     * @param {?} parentMap\n     * @return {?}\n     */\n    MatTreeFlattener.prototype._flattenNode = /**\n     * @param {?} node\n     * @param {?} level\n     * @param {?} resultNodes\n     * @param {?} parentMap\n     * @return {?}\n     */\n    function (node, level, resultNodes, parentMap) {\n        var _this = this;\n        var /** @type {?} */ flatNode = this.transformFunction(node, level);\n        resultNodes.push(flatNode);\n        if (this.isExpandable(flatNode)) {\n            var /** @type {?} */ childrenNodes = this.getChildren(node);\n            if (Array.isArray(childrenNodes)) {\n                this._flattenChildren(childrenNodes, level, resultNodes, parentMap);\n            }\n            else {\n                childrenNodes.pipe(take(1)).subscribe(function (children) {\n                    _this._flattenChildren(children, level, resultNodes, parentMap);\n                });\n            }\n        }\n        return resultNodes;\n    };\n    /**\n     * @param {?} children\n     * @param {?} level\n     * @param {?} resultNodes\n     * @param {?} parentMap\n     * @return {?}\n     */\n    MatTreeFlattener.prototype._flattenChildren = /**\n     * @param {?} children\n     * @param {?} level\n     * @param {?} resultNodes\n     * @param {?} parentMap\n     * @return {?}\n     */\n    function (children, level, resultNodes, parentMap) {\n        var _this = this;\n        children.forEach(function (child, index) {\n            var /** @type {?} */ childParentMap = parentMap.slice();\n            childParentMap.push(index != children.length - 1);\n            _this._flattenNode(child, level + 1, resultNodes, childParentMap);\n        });\n    };\n    /**\n     * Flatten a list of node type T to flattened version of node F.\n     * Please note that type T may be nested, and the length of `structuredData` may be different\n     * from that of returned list `F[]`.\n     */\n    /**\n     * Flatten a list of node type T to flattened version of node F.\n     * Please note that type T may be nested, and the length of `structuredData` may be different\n     * from that of returned list `F[]`.\n     * @param {?} structuredData\n     * @return {?}\n     */\n    MatTreeFlattener.prototype.flattenNodes = /**\n     * Flatten a list of node type T to flattened version of node F.\n     * Please note that type T may be nested, and the length of `structuredData` may be different\n     * from that of returned list `F[]`.\n     * @param {?} structuredData\n     * @return {?}\n     */\n    function (structuredData) {\n        var _this = this;\n        var /** @type {?} */ resultNodes = [];\n        structuredData.forEach(function (node) { return _this._flattenNode(node, 0, resultNodes, []); });\n        return resultNodes;\n    };\n    /**\n     * Expand flattened node with current expansion status.\n     * The returned list may have different length.\n     */\n    /**\n     * Expand flattened node with current expansion status.\n     * The returned list may have different length.\n     * @param {?} nodes\n     * @param {?} treeControl\n     * @return {?}\n     */\n    MatTreeFlattener.prototype.expandFlattenedNodes = /**\n     * Expand flattened node with current expansion status.\n     * The returned list may have different length.\n     * @param {?} nodes\n     * @param {?} treeControl\n     * @return {?}\n     */\n    function (nodes, treeControl) {\n        var _this = this;\n        var /** @type {?} */ results = [];\n        var /** @type {?} */ currentExpand = [];\n        currentExpand[0] = true;\n        nodes.forEach(function (node) {\n            var /** @type {?} */ expand = true;\n            for (var /** @type {?} */ i = 0; i <= _this.getLevel(node); i++) {\n                expand = expand && currentExpand[i];\n            }\n            if (expand) {\n                results.push(node);\n            }\n            if (_this.isExpandable(node)) {\n                currentExpand[_this.getLevel(node) + 1] = treeControl.isExpanded(node);\n            }\n        });\n        return results;\n    };\n    return MatTreeFlattener;\n}());\n/**\n * Data source for flat tree.\n * The data source need to handle expansion/collapsion of the tree node and change the data feed\n * to `MatTree`.\n * The nested tree nodes of type `T` are flattened through `MatTreeFlattener`, and converted\n * to type `F` for `MatTree` to consume.\n * @template T, F\n */\nvar  /**\n * Data source for flat tree.\n * The data source need to handle expansion/collapsion of the tree node and change the data feed\n * to `MatTree`.\n * The nested tree nodes of type `T` are flattened through `MatTreeFlattener`, and converted\n * to type `F` for `MatTree` to consume.\n * @template T, F\n */\nMatTreeFlatDataSource = /** @class */ (function (_super) {\n    __extends(MatTreeFlatDataSource, _super);\n    function MatTreeFlatDataSource(treeControl, treeFlattener, initialData) {\n        if (initialData === void 0) { initialData = []; }\n        var _this = _super.call(this) || this;\n        _this.treeControl = treeControl;\n        _this.treeFlattener = treeFlattener;\n        _this._flattenedData = new BehaviorSubject([]);\n        _this._expandedData = new BehaviorSubject([]);\n        _this._data = new BehaviorSubject(initialData);\n        return _this;\n    }\n    Object.defineProperty(MatTreeFlatDataSource.prototype, \"data\", {\n        get: /**\n         * @return {?}\n         */\n        function () { return this._data.value; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._data.next(value);\n            this._flattenedData.next(this.treeFlattener.flattenNodes(this.data));\n            this.treeControl.dataNodes = this._flattenedData.value;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @param {?} collectionViewer\n     * @return {?}\n     */\n    MatTreeFlatDataSource.prototype.connect = /**\n     * @param {?} collectionViewer\n     * @return {?}\n     */\n    function (collectionViewer) {\n        var _this = this;\n        var /** @type {?} */ changes = [\n            collectionViewer.viewChange,\n            /** @type {?} */ ((this.treeControl.expansionModel.onChange)),\n            this._flattenedData\n        ];\n        return merge.apply(void 0, changes).pipe(map(function () {\n            _this._expandedData.next(_this.treeFlattener.expandFlattenedNodes(_this._flattenedData.value, _this.treeControl));\n            return _this._expandedData.value;\n        }));\n    };\n    /**\n     * @return {?}\n     */\n    MatTreeFlatDataSource.prototype.disconnect = /**\n     * @return {?}\n     */\n    function () {\n        // no op\n    };\n    return MatTreeFlatDataSource;\n}(DataSource));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Data source for nested tree.\n *\n * The data source for nested tree doesn't have to consider node flattener, or the way to expand\n * or collapse. The expansion/collapsion will be handled by TreeControl and each non-leaf node.\n * @template T\n */\nvar  /**\n * Data source for nested tree.\n *\n * The data source for nested tree doesn't have to consider node flattener, or the way to expand\n * or collapse. The expansion/collapsion will be handled by TreeControl and each non-leaf node.\n * @template T\n */\nMatTreeNestedDataSource = /** @class */ (function (_super) {\n    __extends(MatTreeNestedDataSource, _super);\n    function MatTreeNestedDataSource() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this._data = new BehaviorSubject([]);\n        return _this;\n    }\n    Object.defineProperty(MatTreeNestedDataSource.prototype, \"data\", {\n        /**\n         * Data for the nested tree\n         */\n        get: /**\n         * Data for the nested tree\n         * @return {?}\n         */\n        function () { return this._data.value; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) { this._data.next(value); },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @param {?} collectionViewer\n     * @return {?}\n     */\n    MatTreeNestedDataSource.prototype.connect = /**\n     * @param {?} collectionViewer\n     * @return {?}\n     */\n    function (collectionViewer) {\n        var _this = this;\n        return merge.apply(void 0, [collectionViewer.viewChange, this._data]).pipe(map(function () {\n            return _this.data;\n        }));\n    };\n    /**\n     * @return {?}\n     */\n    MatTreeNestedDataSource.prototype.disconnect = /**\n     * @return {?}\n     */\n    function () {\n        // no op\n    };\n    return MatTreeNestedDataSource;\n}(DataSource));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\nexport { _CdkTreeNodeDef, _MatTreeNodeMixinBase, _MatNestedTreeNodeMixinBase, MatTreeNode, MatTreeNodeDef, MatNestedTreeNode, _CdkTreeNodePadding, MatTreeNodePadding, _CdkTree, MatTree, MatTreeModule, _CdkTreeNodeToggle, MatTreeNodeToggle, MatTreeNodeOutlet, MatTreeFlattener, MatTreeFlatDataSource, MatTreeNestedDataSource };\n//# sourceMappingURL=tree.es5.js.map\n","import {Directive, ElementRef, Inject, Input, OnInit} from '@angular/core';\r\nimport {ContextMenu} from './context-menu.service';\r\nimport { AVAILABLE_CONTEXT_MENUS } from './available-context-menus';\r\n\r\n@Directive({\r\n    selector: '[contextMenu]'\r\n})\r\nexport class ContextMenuDirective implements OnInit {\r\n    @Input('contextMenu') params: string|{type: string, [key: string]: any};\r\n    @Input('disableContextMenu') disableContextMenu = false;\r\n\r\n    public availableMenus: object = {};\r\n\r\n    constructor(\r\n        private el: ElementRef,\r\n        private contextMenu: ContextMenu,\r\n        @Inject(AVAILABLE_CONTEXT_MENUS) _availableMenus: object[]\r\n    ) {\r\n        _availableMenus.forEach(config => {\r\n            Object.assign(this.availableMenus, config);\r\n        });\r\n    }\r\n\r\n    ngOnInit() {\r\n        this.el.nativeElement.addEventListener('contextmenu', e => {\r\n            e.preventDefault();\r\n            e.stopPropagation();\r\n\r\n            if (this.disableContextMenu) return;\r\n\r\n            this.contextMenu.open(\r\n                this.getMenuComponent(),\r\n                e,\r\n                {\r\n                    overlayX: 'start',\r\n                    overlayY: 'top',\r\n                    data: this.getMenuData()\r\n                }\r\n            );\r\n        });\r\n    }\r\n\r\n    private getMenuComponent() {\r\n        if (typeof this.params === 'string') {\r\n            return this.availableMenus[this.params];\r\n        } else {\r\n            return this.availableMenus[this.params.type];\r\n        }\r\n    }\r\n\r\n    private getMenuData() {\r\n        return (typeof this.params === 'string') ? {type: this.params} : this.params;\r\n    }\r\n}\r\n","import {OverlayRef} from '@angular/cdk/overlay';\r\n\r\nexport class ContextMenuRef<T> {\r\n    constructor(private overlayRef: OverlayRef) {}\r\n\r\n    public close() {\r\n        if (this.overlayRef) {\r\n            this.overlayRef.dispose();\r\n        }\r\n    }\r\n\r\n    public backdropClick() {\r\n        return this.overlayRef.backdropClick();\r\n    }\r\n\r\n    public attachments() {\r\n        return this.overlayRef.attachments();\r\n    }\r\n\r\n    public detachments() {\r\n        return this.overlayRef.detachments();\r\n    }\r\n\r\n    public backdropElement() {\r\n        return this.overlayRef.backdropElement;\r\n    }\r\n\r\n    public contextMenuElement() {\r\n        return this.overlayRef.overlayElement;\r\n    }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const CONTEXT_MENU_DATA = new InjectionToken<{ [key: string]: any }>('CONTEXT_MENU_DATA');\r\n","import { ComponentFactoryResolver, Injectable, Injector, NgZone, Type, ElementRef } from '@angular/core';\r\nimport { NavigationStart, Router } from '@angular/router';\r\nimport { ComponentPortal, PortalInjector } from '@angular/cdk/portal';\r\nimport { Overlay, PositionStrategy } from '@angular/cdk/overlay';\r\nimport { filter } from 'rxjs/operators';\r\nimport { ContextMenuRef } from './context-menu-ref';\r\nimport { CONTEXT_MENU_DATA } from './context-menu-data';\r\n\r\nexport interface ContextMenuParams {\r\n    data?: { [key: string]: any };\r\n    offsetX?: number;\r\n    offsetY?: number;\r\n    originX?: 'start' | 'center' | 'end';\r\n    originY?: 'top' | 'center' | 'bottom';\r\n    overlayX?: 'start' | 'center' | 'end';\r\n    overlayY?: 'top' | 'center' | 'bottom';\r\n}\r\n\r\ntype MenuOrigin = MouseEvent | EventTarget | HTMLElement;\r\n\r\nconst ORIGIN_ID = 'dynamic-context-menu-origin';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class ContextMenu {\r\n    private lastOrigin: HTMLElement;\r\n    private openContextMenu: ContextMenuRef<any>|null;\r\n\r\n    constructor(\r\n        private router: Router,\r\n        private zone: NgZone,\r\n        private injector: Injector,\r\n        private resolver: ComponentFactoryResolver,\r\n        private overlay: Overlay,\r\n    ) {\r\n        this.router.events\r\n            .pipe(filter(e => e instanceof NavigationStart))\r\n            .subscribe(() => this.close());\r\n    }\r\n\r\n    /**\r\n     * Show specified modal.\r\n     */\r\n    public open<T>(component: Type<T>, e: MenuOrigin, params: ContextMenuParams = {}): ContextMenuRef<T> {\r\n        this.close();\r\n\r\n        const overlayRef = this.createOverlay(e, params);\r\n        this.openContextMenu = new ContextMenuRef(overlayRef);\r\n\r\n        const injector = new PortalInjector(this.injector, new WeakMap<any, any>([\r\n            [CONTEXT_MENU_DATA, params.data],\r\n            [ContextMenuRef, this.openContextMenu],\r\n        ]));\r\n\r\n        const portal = new ComponentPortal(component, null, injector);\r\n\r\n        overlayRef.attach(portal);\r\n        this.bindEventsToOverlay();\r\n\r\n        return this.openContextMenu;\r\n    }\r\n\r\n    /**\r\n     * Close currently open context menu.\r\n     */\r\n    public close() {\r\n        this.removeLastOrigin();\r\n\r\n        if (this.openContextMenu) {\r\n            this.openContextMenu.close();\r\n            this.openContextMenu = null;\r\n        }\r\n    }\r\n\r\n    private createOverlay(e: MenuOrigin, params: ContextMenuParams) {\r\n        return this.overlay.create({\r\n            positionStrategy: this.getMenuPositionStrategy(e, params),\r\n            scrollStrategy: this.overlay.scrollStrategies.close(),\r\n            hasBackdrop: true,\r\n            backdropClass: 'context-menu-backdrop',\r\n            panelClass: 'context-menu-overlay'\r\n        });\r\n    }\r\n\r\n    private bindEventsToOverlay() {\r\n        this.openContextMenu.contextMenuElement().addEventListener('click', () => {\r\n            this.close();\r\n        });\r\n\r\n        this.openContextMenu.backdropClick().subscribe(() => {\r\n            this.close();\r\n        });\r\n\r\n        this.openContextMenu.backdropElement().addEventListener('contextmenu', e => {\r\n            e.preventDefault();\r\n            this.close();\r\n        });\r\n\r\n        this.openContextMenu.detachments().subscribe(() => {\r\n            this.close();\r\n        });\r\n    }\r\n\r\n    private getMenuPositionStrategy(e: MenuOrigin, params: ContextMenuParams): PositionStrategy {\r\n        this.createOriginFromEvent(e, params);\r\n\r\n        const primary = {\r\n            originX: params.originX || 'center',\r\n            originY: params.originY || 'bottom',\r\n            overlayX: params.overlayX || 'center',\r\n            overlayY: params.overlayY || 'top',\r\n        };\r\n\r\n        return this.overlay.position().flexibleConnectedTo(new ElementRef(this.lastOrigin))\r\n            .withPositions([\r\n                primary,\r\n                {originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom'},\r\n                {originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top'},\r\n                {originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'bottom'}\r\n            ]);\r\n    }\r\n\r\n    private createOriginFromEvent(e: MenuOrigin, params: ContextMenuParams) {\r\n        this.removeLastOrigin();\r\n\r\n        if (e instanceof HTMLElement || e instanceof EventTarget) {\r\n            this.lastOrigin = e as HTMLElement;\r\n        } else {\r\n            this.lastOrigin = document.createElement('div');\r\n            this.lastOrigin.style.position = 'fixed';\r\n            this.lastOrigin.style.top = e.clientY + (params.offsetY || 0) + 'px';\r\n            this.lastOrigin.style.left = e.clientX + (params.offsetX || 0) + 'px';\r\n            this.lastOrigin.id = ORIGIN_ID;\r\n            document.body.appendChild(this.lastOrigin);\r\n        }\r\n    }\r\n\r\n    private removeLastOrigin() {\r\n        if (this.lastOrigin && this.lastOrigin.id === ORIGIN_ID) {\r\n            this.lastOrigin.remove();\r\n        }\r\n    }\r\n}\r\n","import { ComponentFactoryResolver, Injector, NgZone, Type, ElementRef } from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport { ComponentPortal, PortalInjector } from '@angular/cdk/portal';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { filter } from 'rxjs/operators';\nimport { ContextMenuRef } from './context-menu-ref';\nimport { CONTEXT_MENU_DATA } from './context-menu-data';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nimport * as i2 from \"@angular/cdk/overlay\";\nvar ORIGIN_ID = 'dynamic-context-menu-origin';\nvar ContextMenu = /** @class */ (function () {\n    function ContextMenu(router, zone, injector, resolver, overlay) {\n        var _this = this;\n        this.router = router;\n        this.zone = zone;\n        this.injector = injector;\n        this.resolver = resolver;\n        this.overlay = overlay;\n        this.router.events\n            .pipe(filter(function (e) { return e instanceof NavigationStart; }))\n            .subscribe(function () { return _this.close(); });\n    }\n    /**\n     * Show specified modal.\n     */\n    ContextMenu.prototype.open = function (component, e, params) {\n        if (params === void 0) { params = {}; }\n        this.close();\n        var overlayRef = this.createOverlay(e, params);\n        this.openContextMenu = new ContextMenuRef(overlayRef);\n        var injector = new PortalInjector(this.injector, new WeakMap([\n            [CONTEXT_MENU_DATA, params.data],\n            [ContextMenuRef, this.openContextMenu],\n        ]));\n        var portal = new ComponentPortal(component, null, injector);\n        overlayRef.attach(portal);\n        this.bindEventsToOverlay();\n        return this.openContextMenu;\n    };\n    /**\n     * Close currently open context menu.\n     */\n    ContextMenu.prototype.close = function () {\n        this.removeLastOrigin();\n        if (this.openContextMenu) {\n            this.openContextMenu.close();\n            this.openContextMenu = null;\n        }\n    };\n    ContextMenu.prototype.createOverlay = function (e, params) {\n        return this.overlay.create({\n            positionStrategy: this.getMenuPositionStrategy(e, params),\n            scrollStrategy: this.overlay.scrollStrategies.close(),\n            hasBackdrop: true,\n            backdropClass: 'context-menu-backdrop',\n            panelClass: 'context-menu-overlay'\n        });\n    };\n    ContextMenu.prototype.bindEventsToOverlay = function () {\n        var _this = this;\n        this.openContextMenu.contextMenuElement().addEventListener('click', function () {\n            _this.close();\n        });\n        this.openContextMenu.backdropClick().subscribe(function () {\n            _this.close();\n        });\n        this.openContextMenu.backdropElement().addEventListener('contextmenu', function (e) {\n            e.preventDefault();\n            _this.close();\n        });\n        this.openContextMenu.detachments().subscribe(function () {\n            _this.close();\n        });\n    };\n    ContextMenu.prototype.getMenuPositionStrategy = function (e, params) {\n        this.createOriginFromEvent(e, params);\n        var primary = {\n            originX: params.originX || 'center',\n            originY: params.originY || 'bottom',\n            overlayX: params.overlayX || 'center',\n            overlayY: params.overlayY || 'top',\n        };\n        return this.overlay.position().flexibleConnectedTo(new ElementRef(this.lastOrigin))\n            .withPositions([\n            primary,\n            { originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom' },\n            { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\n            { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'bottom' }\n        ]);\n    };\n    ContextMenu.prototype.createOriginFromEvent = function (e, params) {\n        this.removeLastOrigin();\n        if (e instanceof HTMLElement || e instanceof EventTarget) {\n            this.lastOrigin = e;\n        }\n        else {\n            this.lastOrigin = document.createElement('div');\n            this.lastOrigin.style.position = 'fixed';\n            this.lastOrigin.style.top = e.clientY + (params.offsetY || 0) + 'px';\n            this.lastOrigin.style.left = e.clientX + (params.offsetX || 0) + 'px';\n            this.lastOrigin.id = ORIGIN_ID;\n            document.body.appendChild(this.lastOrigin);\n        }\n    };\n    ContextMenu.prototype.removeLastOrigin = function () {\n        if (this.lastOrigin && this.lastOrigin.id === ORIGIN_ID) {\n            this.lastOrigin.remove();\n        }\n    };\n    ContextMenu.ngInjectableDef = i0.defineInjectable({ factory: function ContextMenu_Factory() { return new ContextMenu(i0.inject(i1.Router), i0.inject(i0.NgZone), i0.inject(i0.INJECTOR), i0.inject(i0.ComponentFactoryResolver), i0.inject(i2.Overlay)); }, token: ContextMenu, providedIn: \"root\" });\n    return ContextMenu;\n}());\nexport { ContextMenu };\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const AVAILABLE_CONTEXT_MENUS = new InjectionToken<any>('AVAILABLE_CONTEXT_MENUS');\r\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/tree\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@angular/cdk/a11y\";\nimport * as i4 from \"@angular/cdk/platform\";\nimport * as i5 from \"@angular/cdk/tree\";\nimport * as i6 from \"@angular/cdk/bidi\";\nimport * as i7 from \"@angular/material/core\";\nvar MatTreeModuleNgFactory = i0.ɵcmf(i1.MatTreeModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i2.NgLocalization, i2.NgLocaleLocalization, [i0.LOCALE_ID, [2, i2.ɵangular_packages_common_common_a]]), i0.ɵmpd(135680, i3.FocusMonitor, i3.FocusMonitor, [i0.NgZone, i4.Platform]), i0.ɵmpd(4608, i5.CdkTreeNodeDef, i5.CdkTreeNodeDef, [i0.TemplateRef]), i0.ɵmpd(1073742336, i2.CommonModule, i2.CommonModule, []), i0.ɵmpd(1073742336, i5.CdkTreeModule, i5.CdkTreeModule, []), i0.ɵmpd(1073742336, i6.BidiModule, i6.BidiModule, []), i0.ɵmpd(1073742336, i7.MatCommonModule, i7.MatCommonModule, [[2, i7.MATERIAL_SANITY_CHECKS]]), i0.ɵmpd(1073742336, i1.MatTreeModule, i1.MatTreeModule, [])]); });\nexport { MatTreeModuleNgFactory as MatTreeModuleNgFactory };\nvar styles_MatTree = [\".mat-tree{display:block}.mat-tree-node{display:flex;align-items:center;min-height:48px;flex:1;overflow:hidden;word-wrap:break-word}.mat-nested-tree-ndoe{border-bottom-width:0}\"];\nvar RenderType_MatTree = i0.ɵcrt({ encapsulation: 2, styles: styles_MatTree, data: {} });\nexport { RenderType_MatTree as RenderType_MatTree };\nexport function View_MatTree_0(_l) { return i0.ɵvid(2, [i0.ɵqud(402653184, 1, { _nodeOutlet: 0 }), (_l()(), i0.ɵeld(1, 16777216, null, null, 1, null, null, null, null, null, null, null)), i0.ɵdid(2, 16384, [[1, 4]], 0, i1.MatTreeNodeOutlet, [i0.ViewContainerRef], null, null)], null, null); }\nexport function View_MatTree_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"mat-tree\", [[\"class\", \"mat-tree\"], [\"role\", \"tree\"]], null, null, null, View_MatTree_0, RenderType_MatTree)), i0.ɵprd(6144, null, i5.CdkTree, null, [i1.MatTree]), i0.ɵdid(2, 2342912, null, 1, i1.MatTree, [i0.IterableDiffers, i0.ChangeDetectorRef], null, null), i0.ɵqud(603979776, 1, { _nodeDefs: 1 })], function (_ck, _v) { _ck(_v, 2, 0); }, null); }\nvar MatTreeNgFactory = i0.ɵccf(\"mat-tree\", i1.MatTree, View_MatTree_Host_0, { dataSource: \"dataSource\", treeControl: \"treeControl\", trackBy: \"trackBy\" }, {}, []);\nexport { MatTreeNgFactory as MatTreeNgFactory };\n","<ng-container matTreeNodeOutlet></ng-container>","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { FoldersTreeService } from './folders-tree.service';\nimport { DriveFolder } from '../../folders/models/driveFolder';\nimport { DriveEntry } from '../../files/models/drive-entry';\n\n@Component({\n    selector: 'folders-tree',\n    templateUrl: './folders-tree.component.html',\n    styleUrls: ['./folders-tree.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FoldersTreeComponent {\n    @HostBinding('class.expanded') @Input() public expanded = false;\n    @Input() selectedFolder: string;\n    @Input() movingEntries: DriveEntry[] = [];\n    @Input() disableContextMenu = false;\n    @Output() folderSelected: EventEmitter<DriveFolder> = new EventEmitter();\n\n    // TODO: start trackBy function when it's fixed on angular material side\n    constructor(public tree: FoldersTreeService) {}\n\n    public selectFolder(folder: DriveFolder) {\n        this.selectedFolder = folder.hash;\n        this.folderSelected.emit(folder);\n    }\n\n    public toggle() {\n        this.expanded = !this.expanded;\n    }\n\n    public nodeIsDisabled(folder: DriveFolder): boolean {\n        return !!this.movingEntries.find(entry => entry.path.indexOf(folder.path) > -1);\n    }\n}\n","import {Injectable} from '@angular/core';\nimport {DriveFolder} from '../../folders/models/driveFolder';\nimport {MatTreeFlatDataSource, MatTreeFlattener} from '@angular/material/tree';\nimport {FlatTreeControl} from '@angular/cdk/tree';\nimport {Observable, of as observableOf} from 'rxjs';\nimport { Select } from '@ngxs/store';\nimport { DriveState } from '../../state/drive-state';\nimport { filter } from 'rxjs/operators';\n\n/** Flat node with expandable and level information */\nexport interface FolderFlatNode extends DriveFolder {\n    level: number;\n    expandable: boolean;\n}\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class FoldersTreeService {\n    @Select(DriveState.userFolders) userFolders$: Observable<DriveFolder[]>;\n\n    public control: FlatTreeControl<FolderFlatNode>;\n\n    public flattener: MatTreeFlattener<DriveFolder, FolderFlatNode>;\n\n    public dataSource: MatTreeFlatDataSource<DriveFolder, FolderFlatNode>;\n\n    constructor() {\n        this.createTreeFlattener();\n        this.createTreeControl();\n        this.createTreeDataSource();\n        this.bindToStore();\n    }\n\n    private createTreeFlattener() {\n        this.flattener = new MatTreeFlattener(\n            this.transformer,\n            this.getLevel,\n            this.isExpandable, this.getChildren\n        );\n    }\n\n    private createTreeControl() {\n        this.control = new FlatTreeControl<FolderFlatNode>(\n            this.getLevel,\n            this.isExpandable\n        );\n    }\n\n    private createTreeDataSource() {\n        this.dataSource = new MatTreeFlatDataSource(\n            this.control,\n            this.flattener\n        );\n    }\n\n    private bindToStore() {\n        this.userFolders$\n            .pipe(filter(x => !!x))\n            .subscribe(folders => {\n                this.dataSource.data = folders;\n            });\n    }\n\n    public transformer(node: DriveFolder, level: number) {\n        const flatNode = Object.assign({}, node) as FolderFlatNode;\n        flatNode.level = level;\n        flatNode.expandable = !!node.children;\n        return flatNode;\n    }\n\n    private getLevel(node: FolderFlatNode): number {\n        return node.level;\n    }\n\n    private isExpandable(node: FolderFlatNode): boolean {\n        return node.expandable;\n    }\n\n    private getChildren(node: DriveFolder): Observable<DriveFolder[]> {\n        return observableOf(node.children);\n    }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { MatTreeFlatDataSource, MatTreeFlattener } from '@angular/material/tree';\nimport { FlatTreeControl } from '@angular/cdk/tree';\nimport { Observable, of as observableOf } from 'rxjs';\nimport { Select } from '@ngxs/store';\nimport { DriveState } from '../../state/drive-state';\nimport { filter } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nvar FoldersTreeService = /** @class */ (function () {\n    function FoldersTreeService() {\n        this.createTreeFlattener();\n        this.createTreeControl();\n        this.createTreeDataSource();\n        this.bindToStore();\n    }\n    FoldersTreeService.prototype.createTreeFlattener = function () {\n        this.flattener = new MatTreeFlattener(this.transformer, this.getLevel, this.isExpandable, this.getChildren);\n    };\n    FoldersTreeService.prototype.createTreeControl = function () {\n        this.control = new FlatTreeControl(this.getLevel, this.isExpandable);\n    };\n    FoldersTreeService.prototype.createTreeDataSource = function () {\n        this.dataSource = new MatTreeFlatDataSource(this.control, this.flattener);\n    };\n    FoldersTreeService.prototype.bindToStore = function () {\n        var _this = this;\n        this.userFolders$\n            .pipe(filter(function (x) { return !!x; }))\n            .subscribe(function (folders) {\n            _this.dataSource.data = folders;\n        });\n    };\n    FoldersTreeService.prototype.transformer = function (node, level) {\n        var flatNode = Object.assign({}, node);\n        flatNode.level = level;\n        flatNode.expandable = !!node.children;\n        return flatNode;\n    };\n    FoldersTreeService.prototype.getLevel = function (node) {\n        return node.level;\n    };\n    FoldersTreeService.prototype.isExpandable = function (node) {\n        return node.expandable;\n    };\n    FoldersTreeService.prototype.getChildren = function (node) {\n        return observableOf(node.children);\n    };\n    FoldersTreeService.ngInjectableDef = i0.defineInjectable({ factory: function FoldersTreeService_Factory() { return new FoldersTreeService(); }, token: FoldersTreeService, providedIn: \"root\" });\n    __decorate([\n        Select(DriveState.userFolders),\n        __metadata(\"design:type\", Observable)\n    ], FoldersTreeService.prototype, \"userFolders$\", void 0);\n    return FoldersTreeService;\n}());\nexport { FoldersTreeService };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./folders-tree.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"@angular/cdk/tree\";\nimport * as i3 from \"@angular/material/tree\";\nimport * as i4 from \"../../../../common/core/ui/context-menu/context-menu.directive\";\nimport * as i5 from \"../../../../common/core/ui/context-menu/context-menu.service\";\nimport * as i6 from \"../../../../common/core/ui/context-menu/available-context-menus\";\nimport * as i7 from \"@angular/cdk/bidi\";\nimport * as i8 from \"../../interactions/drop-targets/folder-drop-target.directive\";\nimport * as i9 from \"@ngxs/store\";\nimport * as i10 from \"../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i11 from \"@angular/material/icon\";\nimport * as i12 from \"../../../../../node_modules/@angular/material/tree/typings/index.ngfactory\";\nimport * as i13 from \"./folders-tree.component\";\nimport * as i14 from \"./folders-tree.service\";\nvar styles_FoldersTreeComponent = [i0.styles];\nvar RenderType_FoldersTreeComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_FoldersTreeComponent, data: {} });\nexport { RenderType_FoldersTreeComponent as RenderType_FoldersTreeComponent };\nfunction View_FoldersTreeComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 22, \"mat-tree-node\", [[\"class\", \"mat-tree-node\"], [\"matTreeNodePadding\", \"\"], [\"matTreeNodePaddingIndent\", \"24\"]], [[2, \"active\", null], [2, \"disabled\", null], [1, \"aria-expanded\", 0], [1, \"aria-level\", 0], [1, \"role\", 0]], null, null, null, null)), i1.ɵprd(6144, null, i2.CdkTreeNodePadding, null, [i3.MatTreeNodePadding]), i1.ɵdid(2, 81920, null, 0, i4.ContextMenuDirective, [i1.ElementRef, i5.ContextMenu, i6.AVAILABLE_CONTEXT_MENUS], { params: [0, \"params\"], disableContextMenu: [1, \"disableContextMenu\"] }, null), i1.ɵpod(3, { type: 0, entry: 1 }), i1.ɵdid(4, 16384, null, 0, i3.MatTreeNode, [i1.ElementRef, i2.CdkTree, [8, null]], null, null), i1.ɵprd(2048, null, i2.CdkTreeNode, null, [i3.MatTreeNode]), i1.ɵdid(6, 147456, null, 0, i3.MatTreeNodePadding, [i2.CdkTreeNode, i2.CdkTree, i1.Renderer2, i1.ElementRef, [2, i7.Directionality]], { level: [0, \"level\"], indent: [1, \"indent\"] }, null), i1.ɵdid(7, 212992, null, 0, i8.FolderDropTargetDirective, [i1.ElementRef, i9.Store], { folder: [0, \"folder\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(9, 0, null, null, 3, \"mat-icon\", [[\"class\", \"toggle-expansion-icon mat-icon\"], [\"matTreeNodeToggle\", \"\"], [\"role\", \"img\"], [\"svgIcon\", \"arrow-drop-down\"]], [[2, \"expanded\", null], [2, \"mat-icon-inline\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; if ((\"click\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 12)._toggle($event) !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i10.View_MatIcon_0, i10.RenderType_MatIcon)), i1.ɵprd(6144, null, i2.CdkTreeNodeToggle, null, [i3.MatTreeNodeToggle]), i1.ɵdid(11, 638976, null, 0, i11.MatIcon, [i1.ElementRef, i11.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), i1.ɵdid(12, 16384, null, 0, i3.MatTreeNodeToggle, [i2.CdkTree, i2.CdkTreeNode], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(14, 0, null, null, 7, \"button\", [[\"class\", \"no-style folder-button\"], [\"type\", \"button\"]], null, [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.selectFolder(_v.context.$implicit) !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(16, 0, null, null, 1, \"mat-icon\", [[\"class\", \"folder-icon mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"folder\"]], [[2, \"mat-icon-inline\", null]], null, null, i10.View_MatIcon_0, i10.RenderType_MatIcon)), i1.ɵdid(17, 638976, null, 0, i11.MatIcon, [i1.ElementRef, i11.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(19, 0, null, null, 1, \"span\", [[\"class\", \"folder-name text\"]], null, null, null, null, null)), (_l()(), i1.ɵted(20, null, [\"\", \"\"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"]))], function (_ck, _v) { var _co = _v.component; var currVal_5 = _ck(_v, 3, 0, \"entry\", _v.context.$implicit); var currVal_6 = _co.disableContextMenu; _ck(_v, 2, 0, currVal_5, currVal_6); var currVal_7 = \"\"; var currVal_8 = \"24\"; _ck(_v, 6, 0, currVal_7, currVal_8); var currVal_9 = _v.context.$implicit; _ck(_v, 7, 0, currVal_9); var currVal_12 = \"arrow-drop-down\"; _ck(_v, 11, 0, currVal_12); var currVal_14 = \"folder\"; _ck(_v, 17, 0, currVal_14); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = (_co.selectedFolder === _v.context.$implicit.hash); var currVal_1 = _co.nodeIsDisabled(_v.context.$implicit); var currVal_2 = i1.ɵnov(_v, 4).isExpanded; var currVal_3 = ((i1.ɵnov(_v, 4).role === \"treeitem\") ? i1.ɵnov(_v, 4).level : null); var currVal_4 = i1.ɵnov(_v, 4).role; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3, currVal_4); var currVal_10 = _co.tree.control.isExpanded(_v.context.$implicit); var currVal_11 = i1.ɵnov(_v, 11).inline; _ck(_v, 9, 0, currVal_10, currVal_11); var currVal_13 = i1.ɵnov(_v, 17).inline; _ck(_v, 16, 0, currVal_13); var currVal_15 = _v.context.$implicit.name; _ck(_v, 20, 0, currVal_15); }); }\nexport function View_FoldersTreeComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 0, null, null, 8, \"mat-tree\", [[\"class\", \"mat-tree\"], [\"role\", \"tree\"]], null, null, null, i12.View_MatTree_0, i12.RenderType_MatTree)), i1.ɵprd(6144, null, i2.CdkTree, null, [i3.MatTree]), i1.ɵdid(2, 2342912, null, 1, i3.MatTree, [i1.IterableDiffers, i1.ChangeDetectorRef], { dataSource: [0, \"dataSource\"], treeControl: [1, \"treeControl\"] }, null), i1.ɵqud(603979776, 1, { _nodeDefs: 1 }), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(0, null, null, 2, null, View_FoldersTreeComponent_1)), i1.ɵdid(6, 16384, null, 0, i3.MatTreeNodeDef, [i1.TemplateRef], null, null), i1.ɵprd(2048, [[1, 4]], i2.CdkTreeNodeDef, null, [i3.MatTreeNodeDef]), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.tree.dataSource; var currVal_1 = _co.tree.control; _ck(_v, 2, 0, currVal_0, currVal_1); }, null); }\nexport function View_FoldersTreeComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"folders-tree\", [], [[2, \"expanded\", null]], null, null, View_FoldersTreeComponent_0, RenderType_FoldersTreeComponent)), i1.ɵdid(1, 49152, null, 0, i13.FoldersTreeComponent, [i14.FoldersTreeService], null, null)], null, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 1).expanded; _ck(_v, 0, 0, currVal_0); }); }\nvar FoldersTreeComponentNgFactory = i1.ɵccf(\"folders-tree\", i13.FoldersTreeComponent, View_FoldersTreeComponent_Host_0, { expanded: \"expanded\", selectedFolder: \"selectedFolder\", movingEntries: \"movingEntries\", disableContextMenu: \"disableContextMenu\" }, { folderSelected: \"folderSelected\" }, []);\nexport { FoldersTreeComponentNgFactory as FoldersTreeComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"folders-tree{display:none;color:#656565}folders-tree.expanded{display:block}folders-tree .mat-tree .folder-icon{margin-right:5px;color:rgba(0,0,0,.5)}folders-tree .mat-tree .mat-tree-node{padding-right:24px;white-space:nowrap}folders-tree .mat-tree .mat-tree-node.disabled{pointer-events:none;opacity:.5}folders-tree .mat-tree .mat-tree-node:not(.active):not(.drag-over){color:inherit;background-color:#fafafa}folders-tree .mat-tree .mat-tree-node:not(.active):not(.drag-over):hover{background-color:#f1f1f1}folders-tree .mat-tree .mat-tree-node.active{color:#1976d2;background-color:#e8f0fe}folders-tree .mat-tree .mat-tree-node.active .folder-icon{color:inherit}folders-tree .mat-tree .mat-tree-node.active .text{font-weight:500}folders-tree .mat-tree .folder-button{display:flex;align-items:center;color:inherit;width:100%;min-height:inherit;line-height:inherit}folders-tree .mat-tree .folder-icon{flex:0 0 24px}folders-tree .mat-tree .folder-name{padding-top:2.5px}\"];\nexport { styles as styles };\n","<mat-tree [dataSource]=\"tree.dataSource\" [treeControl]=\"tree.control\">\n    <mat-tree-node\n            *matTreeNodeDef=\"let node\"\n            matTreeNodePadding\n            matTreeNodePaddingIndent=\"24\"\n            [contextMenu]=\"{type: 'entry', entry: node}\"\n            [disableContextMenu]=\"disableContextMenu\"\n            [folderDropTarget]=\"node\"\n            [class.active]=\"selectedFolder === node.hash\"\n            [class.disabled]=\"nodeIsDisabled(node)\"\n    >\n        <mat-icon class=\"toggle-expansion-icon\"\n                  matTreeNodeToggle\n                  [class.expanded]=\"tree.control.isExpanded(node)\"\n                  svgIcon=\"arrow-drop-down\"\n        ></mat-icon>\n        <button type=\"button\" class=\"no-style folder-button\" (click)=\"selectFolder(node)\">\n            <mat-icon svgIcon=\"folder\" class=\"folder-icon\"></mat-icon>\n            <span class=\"folder-name text\">{{node.name}}</span>\n        </button>\n    </mat-tree-node>\n</mat-tree>","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/progress-bar\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@angular/cdk/bidi\";\nimport * as i4 from \"@angular/material/core\";\nimport * as i5 from \"@angular/platform-browser/animations\";\nvar MatProgressBarModuleNgFactory = i0.ɵcmf(i1.MatProgressBarModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i2.NgLocalization, i2.NgLocaleLocalization, [i0.LOCALE_ID, [2, i2.ɵangular_packages_common_common_a]]), i0.ɵmpd(1073742336, i2.CommonModule, i2.CommonModule, []), i0.ɵmpd(1073742336, i3.BidiModule, i3.BidiModule, []), i0.ɵmpd(1073742336, i4.MatCommonModule, i4.MatCommonModule, [[2, i4.MATERIAL_SANITY_CHECKS]]), i0.ɵmpd(1073742336, i1.MatProgressBarModule, i1.MatProgressBarModule, [])]); });\nexport { MatProgressBarModuleNgFactory as MatProgressBarModuleNgFactory };\nvar styles_MatProgressBar = [\".mat-progress-bar{display:block;height:5px;overflow:hidden;position:relative;transition:opacity 250ms linear;width:100%}._mat-animation-noopable.mat-progress-bar{transition:none;animation:none}.mat-progress-bar .mat-progress-bar-element,.mat-progress-bar .mat-progress-bar-fill::after{height:100%;position:absolute;width:100%}.mat-progress-bar .mat-progress-bar-background{width:calc(100% + 10px)}@media screen and (-ms-high-contrast:active){.mat-progress-bar .mat-progress-bar-background{display:none}}.mat-progress-bar .mat-progress-bar-buffer{transform-origin:top left;transition:transform 250ms ease}@media screen and (-ms-high-contrast:active){.mat-progress-bar .mat-progress-bar-buffer{border-top:solid 5px;opacity:.5}}.mat-progress-bar .mat-progress-bar-secondary{display:none}.mat-progress-bar .mat-progress-bar-fill{animation:none;transform-origin:top left;transition:transform 250ms ease}@media screen and (-ms-high-contrast:active){.mat-progress-bar .mat-progress-bar-fill{border-top:solid 5px}}.mat-progress-bar .mat-progress-bar-fill::after{animation:none;content:'';display:inline-block;left:0}.mat-progress-bar[dir=rtl],[dir=rtl] .mat-progress-bar{transform:rotateY(180deg)}.mat-progress-bar[mode=query]{transform:rotateZ(180deg)}.mat-progress-bar[mode=query][dir=rtl],[dir=rtl] .mat-progress-bar[mode=query]{transform:rotateZ(180deg) rotateY(180deg)}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-fill,.mat-progress-bar[mode=query] .mat-progress-bar-fill{transition:none}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-primary,.mat-progress-bar[mode=query] .mat-progress-bar-primary{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-primary-indeterminate-translate 2s infinite linear;left:-145.166611%}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-primary.mat-progress-bar-fill::after,.mat-progress-bar[mode=query] .mat-progress-bar-primary.mat-progress-bar-fill::after{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-primary-indeterminate-scale 2s infinite linear}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-secondary,.mat-progress-bar[mode=query] .mat-progress-bar-secondary{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-secondary-indeterminate-translate 2s infinite linear;left:-54.888891%;display:block}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-secondary.mat-progress-bar-fill::after,.mat-progress-bar[mode=query] .mat-progress-bar-secondary.mat-progress-bar-fill::after{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-secondary-indeterminate-scale 2s infinite linear}.mat-progress-bar[mode=buffer] .mat-progress-bar-background{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-background-scroll 250ms infinite linear;display:block}.mat-progress-bar._mat-animation-noopable .mat-progress-bar-background,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-buffer,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-fill,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-fill::after,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-primary,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-primary.mat-progress-bar-fill::after,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-secondary,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-secondary.mat-progress-bar-fill::after{animation:none;transition:none}@keyframes mat-progress-bar-primary-indeterminate-translate{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(.5,0,.70173,.49582);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(.30244,.38135,.55,.95635);transform:translateX(83.67142%)}100%{transform:translateX(200.61106%)}}@keyframes mat-progress-bar-primary-indeterminate-scale{0%{transform:scaleX(.08)}36.65%{animation-timing-function:cubic-bezier(.33473,.12482,.78584,1);transform:scaleX(.08)}69.15%{animation-timing-function:cubic-bezier(.06,.11,.6,1);transform:scaleX(.66148)}100%{transform:scaleX(.08)}}@keyframes mat-progress-bar-secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(.15,0,.51506,.40969);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(.31033,.28406,.8,.73371);transform:translateX(37.65191%)}48.35%{animation-timing-function:cubic-bezier(.4,.62704,.6,.90203);transform:translateX(84.38617%)}100%{transform:translateX(160.27778%)}}@keyframes mat-progress-bar-secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(.15,0,.51506,.40969);transform:scaleX(.08)}19.15%{animation-timing-function:cubic-bezier(.31033,.28406,.8,.73371);transform:scaleX(.4571)}44.15%{animation-timing-function:cubic-bezier(.4,.62704,.6,.90203);transform:scaleX(.72796)}100%{transform:scaleX(.08)}}@keyframes mat-progress-bar-background-scroll{to{transform:translateX(-10px)}}\"];\nvar RenderType_MatProgressBar = i0.ɵcrt({ encapsulation: 2, styles: styles_MatProgressBar, data: {} });\nexport { RenderType_MatProgressBar as RenderType_MatProgressBar };\nexport function View_MatProgressBar_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵeld(0, 0, null, null, 4, \":svg:svg\", [[\"class\", \"mat-progress-bar-background mat-progress-bar-element\"], [\"focusable\", \"false\"], [\"height\", \"5\"], [\"width\", \"100%\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 2, \":svg:defs\", [], null, null, null, null, null)), (_l()(), i0.ɵeld(2, 0, null, null, 1, \":svg:pattern\", [[\"height\", \"5\"], [\"patternUnits\", \"userSpaceOnUse\"], [\"width\", \"10\"], [\"x\", \"5\"], [\"y\", \"0\"]], [[8, \"id\", 0]], null, null, null, null)), (_l()(), i0.ɵeld(3, 0, null, null, 0, \":svg:circle\", [[\"cx\", \"2.5\"], [\"cy\", \"2.5\"], [\"r\", \"2.5\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(4, 0, null, null, 0, \":svg:rect\", [[\"height\", \"100%\"], [\"width\", \"100%\"]], [[1, \"fill\", 0]], null, null, null, null)), (_l()(), i0.ɵeld(5, 0, null, null, 1, \"div\", [[\"class\", \"mat-progress-bar-buffer mat-progress-bar-element\"]], null, null, null, null, null)), i0.ɵdid(6, 278528, null, 0, i2.NgStyle, [i0.KeyValueDiffers, i0.ElementRef, i0.Renderer2], { ngStyle: [0, \"ngStyle\"] }, null), (_l()(), i0.ɵeld(7, 0, null, null, 1, \"div\", [[\"class\", \"mat-progress-bar-primary mat-progress-bar-fill mat-progress-bar-element\"]], null, null, null, null, null)), i0.ɵdid(8, 278528, null, 0, i2.NgStyle, [i0.KeyValueDiffers, i0.ElementRef, i0.Renderer2], { ngStyle: [0, \"ngStyle\"] }, null), (_l()(), i0.ɵeld(9, 0, null, null, 0, \"div\", [[\"class\", \"mat-progress-bar-secondary mat-progress-bar-fill mat-progress-bar-element\"]], null, null, null, null, null))], function (_ck, _v) { var _co = _v.component; var currVal_2 = _co._bufferTransform(); _ck(_v, 6, 0, currVal_2); var currVal_3 = _co._primaryTransform(); _ck(_v, 8, 0, currVal_3); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.progressbarId; _ck(_v, 2, 0, currVal_0); var currVal_1 = _co._rectangleFillValue; _ck(_v, 4, 0, currVal_1); }); }\nexport function View_MatProgressBar_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"mat-progress-bar\", [[\"aria-valuemax\", \"100\"], [\"aria-valuemin\", \"0\"], [\"class\", \"mat-progress-bar\"], [\"role\", \"progressbar\"]], [[1, \"aria-valuenow\", 0], [1, \"mode\", 0], [2, \"_mat-animation-noopable\", null]], null, null, View_MatProgressBar_0, RenderType_MatProgressBar)), i0.ɵdid(1, 49152, null, 0, i1.MatProgressBar, [i0.ElementRef, [2, i5.ANIMATION_MODULE_TYPE], [2, i1.MAT_PROGRESS_BAR_LOCATION]], null, null)], null, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1).value; var currVal_1 = i0.ɵnov(_v, 1).mode; var currVal_2 = (i0.ɵnov(_v, 1)._animationMode === \"NoopAnimations\"); _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2); }); }\nvar MatProgressBarNgFactory = i0.ɵccf(\"mat-progress-bar\", i1.MatProgressBar, View_MatProgressBar_Host_0, { color: \"color\", value: \"value\", bufferValue: \"bufferValue\", mode: \"mode\" }, {}, []);\nexport { MatProgressBarNgFactory as MatProgressBarNgFactory };\n","<svg width=\"100%\" height=\"5\" focusable=\"false\" class=\"mat-progress-bar-background mat-progress-bar-element\"><defs><pattern [id]=\"progressbarId\" x=\"5\" y=\"0\" width=\"10\" height=\"5\" patternUnits=\"userSpaceOnUse\"><circle cx=\"2.5\" cy=\"2.5\" r=\"2.5\"/></pattern></defs><rect [attr.fill]=\"_rectangleFillValue\" width=\"100%\" height=\"100%\"/></svg><div class=\"mat-progress-bar-buffer mat-progress-bar-element\" [ngStyle]=\"_bufferTransform()\"></div><div class=\"mat-progress-bar-primary mat-progress-bar-fill mat-progress-bar-element\" [ngStyle]=\"_primaryTransform()\"></div><div class=\"mat-progress-bar-secondary mat-progress-bar-fill mat-progress-bar-element\"></div>","import { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\nimport { Select } from '@ngxs/store';\nimport { DriveState } from '../../state/drive-state';\nimport { Observable } from 'rxjs';\n\n@Component({\n    selector: 'available-space-indicator',\n    templateUrl: './available-space-indicator.component.html',\n    styleUrls: ['./available-space-indicator.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AvailableSpaceIndicatorComponent {\n    @Select(DriveState.userSpaceUsed) spaceUsed$: Observable<number>;\n    @Select(DriveState.userSpaceAvailable) spaceAvailable$: Observable<number>;\n    @Select(DriveState.spaceUsedPercent) spaceUsedPercent$: Observable<number>;\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { Select } from '@ngxs/store';\nimport { DriveState } from '../../state/drive-state';\nimport { Observable } from 'rxjs';\nvar AvailableSpaceIndicatorComponent = /** @class */ (function () {\n    function AvailableSpaceIndicatorComponent() {\n    }\n    __decorate([\n        Select(DriveState.userSpaceUsed),\n        __metadata(\"design:type\", Observable)\n    ], AvailableSpaceIndicatorComponent.prototype, \"spaceUsed$\", void 0);\n    __decorate([\n        Select(DriveState.userSpaceAvailable),\n        __metadata(\"design:type\", Observable)\n    ], AvailableSpaceIndicatorComponent.prototype, \"spaceAvailable$\", void 0);\n    __decorate([\n        Select(DriveState.spaceUsedPercent),\n        __metadata(\"design:type\", Observable)\n    ], AvailableSpaceIndicatorComponent.prototype, \"spaceUsedPercent$\", void 0);\n    return AvailableSpaceIndicatorComponent;\n}());\nexport { AvailableSpaceIndicatorComponent };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./available-space-indicator.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../../../../node_modules/@angular/material/progress-bar/typings/index.ngfactory\";\nimport * as i3 from \"@angular/material/progress-bar\";\nimport * as i4 from \"@angular/platform-browser/animations\";\nimport * as i5 from \"@angular/common\";\nimport * as i6 from \"../../../../common/core/translations/translate.directive\";\nimport * as i7 from \"../../../../common/core/translations/translations.service\";\nimport * as i8 from \"../../../../common/core/config/settings.service\";\nimport * as i9 from \"@angular/router\";\nimport * as i10 from \"../../../../common/uploads/formatted-file-size.pipe\";\nimport * as i11 from \"./available-space-indicator.component\";\nvar styles_AvailableSpaceIndicatorComponent = [i0.styles];\nvar RenderType_AvailableSpaceIndicatorComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_AvailableSpaceIndicatorComponent, data: {} });\nexport { RenderType_AvailableSpaceIndicatorComponent as RenderType_AvailableSpaceIndicatorComponent };\nfunction View_AvailableSpaceIndicatorComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 34, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(2, 0, null, null, 2, \"mat-progress-bar\", [[\"aria-valuemax\", \"100\"], [\"aria-valuemin\", \"0\"], [\"class\", \"mat-progress-bar\"], [\"mode\", \"determinate\"], [\"role\", \"progressbar\"]], [[1, \"aria-valuenow\", 0], [1, \"mode\", 0], [2, \"_mat-animation-noopable\", null]], null, null, i2.View_MatProgressBar_0, i2.RenderType_MatProgressBar)), i1.ɵdid(3, 49152, null, 0, i3.MatProgressBar, [i1.ElementRef, [2, i4.ANIMATION_MODULE_TYPE], [2, i3.MAT_PROGRESS_BAR_LOCATION]], { value: [0, \"value\"], mode: [1, \"mode\"] }, null), i1.ɵpid(131072, i5.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n\\n    \"])), (_l()(), i1.ɵeld(6, 0, null, null, 19, \"div\", [[\"class\", \"usage-info\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(8, 0, null, null, 3, \"span\", [], null, null, null, null, null)), (_l()(), i1.ɵted(9, null, [\"\", \"\"])), i1.ɵpid(131072, i5.AsyncPipe, [i1.ChangeDetectorRef]), i1.ɵppd(11, 1), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(13, 0, null, null, 2, \"span\", [[\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(14, 4341760, null, 0, i6.TranslateDirective, [i1.ElementRef, i7.Translations, i8.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"of\"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(17, 0, null, null, 3, \"span\", [], null, null, null, null, null)), (_l()(), i1.ɵted(18, null, [\"\", \"\"])), i1.ɵpid(131072, i5.AsyncPipe, [i1.ChangeDetectorRef]), i1.ɵppd(20, 1), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(22, 0, null, null, 2, \"span\", [[\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(23, 4341760, null, 0, i6.TranslateDirective, [i1.ElementRef, i7.Translations, i8.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"used\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n    \"])), (_l()(), i1.ɵeld(27, 0, null, null, 6, \"div\", [[\"class\", \"upgrade-link-container\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(29, 0, null, null, 3, \"a\", [[\"routerLink\", \"/billing/upgrade\"], [\"target\", \"_blank\"], [\"trans\", \"\"]], [[1, \"target\", 0], [8, \"href\", 4]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; if ((\"click\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 31).onClick($event.button, $event.ctrlKey, $event.metaKey, $event.shiftKey) !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, null, null)), i1.ɵdid(30, 4341760, null, 0, i6.TranslateDirective, [i1.ElementRef, i7.Translations, i8.Settings], null, null), i1.ɵdid(31, 671744, null, 0, i9.RouterLinkWithHref, [i9.Router, i9.ActivatedRoute, i5.LocationStrategy], { target: [0, \"target\"], routerLink: [1, \"routerLink\"] }, null), (_l()(), i1.ɵted(-1, null, [\"Upgrade Storage\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; var currVal_3 = i1.ɵunv(_v, 3, 0, i1.ɵnov(_v, 4).transform(_co.spaceUsedPercent$)); var currVal_4 = \"determinate\"; _ck(_v, 3, 0, currVal_3, currVal_4); var currVal_9 = \"_blank\"; var currVal_10 = \"/billing/upgrade\"; _ck(_v, 31, 0, currVal_9, currVal_10); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵnov(_v, 3).value; var currVal_1 = i1.ɵnov(_v, 3).mode; var currVal_2 = (i1.ɵnov(_v, 3)._animationMode === \"NoopAnimations\"); _ck(_v, 2, 0, currVal_0, currVal_1, currVal_2); var currVal_5 = i1.ɵunv(_v, 9, 0, _ck(_v, 11, 0, i1.ɵnov(_v.parent, 0), i1.ɵunv(_v, 9, 0, i1.ɵnov(_v, 10).transform(_co.spaceUsed$)))); _ck(_v, 9, 0, currVal_5); var currVal_6 = i1.ɵunv(_v, 18, 0, _ck(_v, 20, 0, i1.ɵnov(_v.parent, 0), i1.ɵunv(_v, 18, 0, i1.ɵnov(_v, 19).transform(_co.spaceAvailable$)))); _ck(_v, 18, 0, currVal_6); var currVal_7 = i1.ɵnov(_v, 31).target; var currVal_8 = i1.ɵnov(_v, 31).href; _ck(_v, 29, 0, currVal_7, currVal_8); }); }\nexport function View_AvailableSpaceIndicatorComponent_0(_l) { return i1.ɵvid(2, [i1.ɵpid(0, i10.FormattedFileSizePipe, []), (_l()(), i1.ɵand(16777216, null, null, 2, null, View_AvailableSpaceIndicatorComponent_1)), i1.ɵdid(2, 16384, null, 0, i5.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), i1.ɵpid(131072, i5.AsyncPipe, [i1.ChangeDetectorRef])], function (_ck, _v) { var _co = _v.component; var currVal_0 = (i1.ɵunv(_v, 2, 0, i1.ɵnov(_v, 3).transform(_co.spaceUsedPercent$)) >= 0); _ck(_v, 2, 0, currVal_0); }, null); }\nexport function View_AvailableSpaceIndicatorComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"available-space-indicator\", [], null, null, null, View_AvailableSpaceIndicatorComponent_0, RenderType_AvailableSpaceIndicatorComponent)), i1.ɵdid(1, 49152, null, 0, i11.AvailableSpaceIndicatorComponent, [], null, null)], null, null); }\nvar AvailableSpaceIndicatorComponentNgFactory = i1.ɵccf(\"available-space-indicator\", i11.AvailableSpaceIndicatorComponent, View_AvailableSpaceIndicatorComponent_Host_0, {}, {}, []);\nexport { AvailableSpaceIndicatorComponentNgFactory as AvailableSpaceIndicatorComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"available-space-indicator{display:block;margin-top:25px}available-space-indicator .usage-info{margin:5px 0;font-size:1.3rem}available-space-indicator .upgrade-link-container{color:#1565c0}\"];\nexport { styles as styles };\n","<ng-container *ngIf=\"(spaceUsedPercent$ | async) >= 0\">\r\n    <mat-progress-bar mode=\"determinate\" [value]=\"spaceUsedPercent$ | async\"></mat-progress-bar>\r\n\r\n    <div class=\"usage-info\">\r\n        <span>{{ spaceUsed$ | async | formattedFileSize }}</span>\r\n        <span trans>of</span>\r\n        <span>{{ spaceAvailable$ | async | formattedFileSize }}</span>\r\n        <span trans>used</span>\r\n    </div>\r\n\r\n    <div class=\"upgrade-link-container\">\r\n        <a routerLink=\"/billing/upgrade\" target=\"_blank\" trans>Upgrade Storage</a>\r\n    </div>\r\n</ng-container>","import {Component, ViewEncapsulation, ChangeDetectionStrategy} from '@angular/core';\nimport { DriveUrlsService } from '../drive-urls.service';\nimport { DriveFolder } from '../folders/models/driveFolder';\nimport { DriveState} from '../state/drive-state';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { OpenFolder } from '../state/actions/commands';\nimport { ROOT_FOLDER, RootFolder } from '../folders/root-folder';\n\n@Component({\n    selector: 'sidebar',\n    templateUrl: './sidebar.component.html',\n    styleUrls: ['./sidebar.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SidebarComponent {\n    @Select(DriveState.activePage) activeFolder: Observable<string>;\n\n    constructor(\n        public urls: DriveUrlsService,\n        private store: Store\n    ) {}\n\n    public openFolder(folder: DriveFolder) {\n        this.store.dispatch(new OpenFolder(folder));\n    }\n\n    public getRootFolder(): RootFolder {\n        return ROOT_FOLDER;\n    }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { DriveUrlsService } from '../drive-urls.service';\nimport { DriveState } from '../state/drive-state';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { OpenFolder } from '../state/actions/commands';\nimport { ROOT_FOLDER } from '../folders/root-folder';\nvar SidebarComponent = /** @class */ (function () {\n    function SidebarComponent(urls, store) {\n        this.urls = urls;\n        this.store = store;\n    }\n    SidebarComponent.prototype.openFolder = function (folder) {\n        this.store.dispatch(new OpenFolder(folder));\n    };\n    SidebarComponent.prototype.getRootFolder = function () {\n        return ROOT_FOLDER;\n    };\n    __decorate([\n        Select(DriveState.activePage),\n        __metadata(\"design:type\", Observable)\n    ], SidebarComponent.prototype, \"activeFolder\", void 0);\n    return SidebarComponent;\n}());\nexport { SidebarComponent };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./sidebar.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"./sidebar-action-buttons/sidebar-action-buttons.component.ngfactory\";\nimport * as i3 from \"./sidebar-action-buttons/sidebar-action-buttons.component\";\nimport * as i4 from \"../../../common/core/ui/dialogs/modal.service\";\nimport * as i5 from \"@ngxs/store\";\nimport * as i6 from \"../upload-input-config\";\nimport * as i7 from \"@angular/router\";\nimport * as i8 from \"../interactions/drop-targets/folder-drop-target.directive\";\nimport * as i9 from \"../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i10 from \"@angular/material/icon\";\nimport * as i11 from \"../../../common/core/translations/translate.directive\";\nimport * as i12 from \"../../../common/core/translations/translations.service\";\nimport * as i13 from \"../../../common/core/config/settings.service\";\nimport * as i14 from \"./folders-tree/folders-tree.component.ngfactory\";\nimport * as i15 from \"./folders-tree/folders-tree.component\";\nimport * as i16 from \"./folders-tree/folders-tree.service\";\nimport * as i17 from \"@angular/common\";\nimport * as i18 from \"../../../common/core/ui/custom-menu/custom-menu.component.ngfactory\";\nimport * as i19 from \"../../../common/core/ui/custom-menu/custom-menu.component\";\nimport * as i20 from \"../../../common/auth/current-user\";\nimport * as i21 from \"./available-space-indicator/available-space-indicator.component.ngfactory\";\nimport * as i22 from \"./available-space-indicator/available-space-indicator.component\";\nimport * as i23 from \"./sidebar.component\";\nimport * as i24 from \"../drive-urls.service\";\nvar styles_SidebarComponent = [i0.styles];\nvar RenderType_SidebarComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_SidebarComponent, data: {} });\nexport { RenderType_SidebarComponent as RenderType_SidebarComponent };\nexport function View_SidebarComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"sidebar-action-buttons\", [], null, null, null, i2.View_SidebarActionButtonsComponent_0, i2.RenderType_SidebarActionButtonsComponent)), i1.ɵdid(1, 49152, null, 0, i3.SidebarActionButtonsComponent, [i4.Modal, i5.Store, i6.DRIVE_UPLOAD_INPUT_CONFIG], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵeld(3, 0, null, null, 24, \"div\", [[\"class\", \"drive-folders\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(5, 0, null, null, 17, \"div\", [[\"class\", \"sidebar-menu-item\"], [\"routerLinkActive\", \"active\"]], null, [[null, \"click\"]], function (_v, en, $event) { var ad = true; if ((\"click\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 6).onClick() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, null, null)), i1.ɵdid(6, 16384, [[1, 4]], 0, i7.RouterLink, [i7.Router, i7.ActivatedRoute, [8, null], i1.Renderer2, i1.ElementRef], { routerLink: [0, \"routerLink\"] }, null), i1.ɵdid(7, 1720320, null, 2, i7.RouterLinkActive, [i7.Router, i1.ElementRef, i1.Renderer2, i1.ChangeDetectorRef], { routerLinkActiveOptions: [0, \"routerLinkActiveOptions\"], routerLinkActive: [1, \"routerLinkActive\"] }, null), i1.ɵqud(603979776, 1, { links: 1 }), i1.ɵqud(603979776, 2, { linksWithHrefs: 1 }), i1.ɵpod(10, { exact: 0 }), i1.ɵdid(11, 212992, null, 0, i8.FolderDropTargetDirective, [i1.ElementRef, i5.Store], { folder: [0, \"folder\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(13, 0, null, null, 1, \"mat-icon\", [[\"class\", \"toggle-expansion-icon mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"arrow-drop-down\"]], [[2, \"expanded\", null], [2, \"mat-icon-inline\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; if ((\"click\" === en)) {\n        i1.ɵnov(_v, 25).toggle();\n        var pd_0 = ($event.stopPropagation() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i9.View_MatIcon_0, i9.RenderType_MatIcon)), i1.ɵdid(14, 638976, null, 0, i10.MatIcon, [i1.ElementRef, i10.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(16, 0, null, null, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"network-drive-custom\"]], [[2, \"mat-icon-inline\", null]], null, null, i9.View_MatIcon_0, i9.RenderType_MatIcon)), i1.ɵdid(17, 638976, null, 0, i10.MatIcon, [i1.ElementRef, i10.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(19, 0, null, null, 2, \"span\", [[\"class\", \"text\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(20, 4341760, null, 0, i11.TranslateDirective, [i1.ElementRef, i12.Translations, i13.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"My Drive\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n    \"])), (_l()(), i1.ɵeld(24, 0, null, null, 2, \"folders-tree\", [], [[2, \"expanded\", null]], [[null, \"folderSelected\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"folderSelected\" === en)) {\n        var pd_0 = (_co.openFolder($event) !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i14.View_FoldersTreeComponent_0, i14.RenderType_FoldersTreeComponent)), i1.ɵdid(25, 49152, [[\"tree\", 4]], 0, i15.FoldersTreeComponent, [i16.FoldersTreeService], { selectedFolder: [0, \"selectedFolder\"] }, { folderSelected: \"folderSelected\" }), i1.ɵpid(131072, i17.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵeld(29, 0, null, null, 1, \"custom-menu\", [[\"class\", \"sidebar-menu\"], [\"itemClass\", \"sidebar-menu-item\"], [\"position\", \"drive-sidebar\"]], [[2, \"hidden\", null]], null, null, i18.View_CustomMenuComponent_0, i18.RenderType_CustomMenuComponent)), i1.ɵdid(30, 245760, null, 0, i19.CustomMenuComponent, [i13.Settings, i20.CurrentUser, i1.ChangeDetectorRef], { position: [0, \"position\"], itemClass: [1, \"itemClass\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵeld(32, 0, null, null, 1, \"available-space-indicator\", [], null, null, null, i21.View_AvailableSpaceIndicatorComponent_0, i21.RenderType_AvailableSpaceIndicatorComponent)), i1.ɵdid(33, 49152, null, 0, i22.AvailableSpaceIndicatorComponent, [], null, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.urls.driveRoot(); _ck(_v, 6, 0, currVal_0); var currVal_1 = _ck(_v, 10, 0, true); var currVal_2 = \"active\"; _ck(_v, 7, 0, currVal_1, currVal_2); var currVal_3 = _co.getRootFolder(); _ck(_v, 11, 0, currVal_3); var currVal_6 = \"arrow-drop-down\"; _ck(_v, 14, 0, currVal_6); var currVal_8 = \"network-drive-custom\"; _ck(_v, 17, 0, currVal_8); var currVal_10 = i1.ɵunv(_v, 25, 0, i1.ɵnov(_v, 26).transform(_co.activeFolder)); _ck(_v, 25, 0, currVal_10); var currVal_12 = \"drive-sidebar\"; var currVal_13 = \"sidebar-menu-item\"; _ck(_v, 30, 0, currVal_12, currVal_13); }, function (_ck, _v) { var currVal_4 = i1.ɵnov(_v, 25).expanded; var currVal_5 = i1.ɵnov(_v, 14).inline; _ck(_v, 13, 0, currVal_4, currVal_5); var currVal_7 = i1.ɵnov(_v, 17).inline; _ck(_v, 16, 0, currVal_7); var currVal_9 = i1.ɵnov(_v, 25).expanded; _ck(_v, 24, 0, currVal_9); var currVal_11 = i1.ɵnov(_v, 30).shouldHide; _ck(_v, 29, 0, currVal_11); }); }\nexport function View_SidebarComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"sidebar\", [], null, null, null, View_SidebarComponent_0, RenderType_SidebarComponent)), i1.ɵdid(1, 49152, null, 0, i23.SidebarComponent, [i24.DriveUrlsService, i5.Store], null, null)], null, null); }\nvar SidebarComponentNgFactory = i1.ɵccf(\"sidebar\", i23.SidebarComponent, View_SidebarComponent_Host_0, {}, {}, []);\nexport { SidebarComponentNgFactory as SidebarComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"sidebar{display:block;width:100%;height:100%;color:#656565;background-color:#fafafa;position:relative}sidebar sidebar-action-buttons{padding:28px 0}sidebar .drag-over{background-color:#e8f0fe}sidebar .sidebar-menu-item{display:flex;align-items:center;width:100%;height:48px;min-height:inherit;line-height:inherit;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:inherit;outline:0;cursor:pointer;-webkit-user-drag:none}sidebar .sidebar-menu-item.active{color:#1976d2;background-color:#e8f0fe}sidebar .sidebar-menu-item.active .text{font-weight:500}sidebar .sidebar-menu-item:not(.active):not(.drag-over):hover{background-color:#f1f1f1}sidebar .sidebar-menu-item .mat-icon:not(.toggle-expansion-icon){margin-right:15px}sidebar .sidebar-menu .sidebar-menu-item{padding-left:24px;padding-right:24px}sidebar available-space-indicator{position:absolute;bottom:20px;left:0;width:100%;padding:0 20px}sidebar folders-tree .mat-tree-node:before{display:block;content:\\\" \\\";width:24px;flex:0 0 24px}\"];\nexport { styles as styles };\n","<sidebar-action-buttons></sidebar-action-buttons>\r\n\r\n<div class=\"drive-folders\">\r\n    <div class=\"sidebar-menu-item\" [routerLink]=\"urls.driveRoot()\" routerLinkActive=\"active\" [routerLinkActiveOptions]=\"{exact: true}\" [folderDropTarget]=\"getRootFolder()\">\r\n        <mat-icon svgIcon=\"arrow-drop-down\" class=\"toggle-expansion-icon\" [class.expanded]=\"tree.expanded\" (click)=\"tree.toggle(); $event.stopPropagation()\"></mat-icon>\r\n        <mat-icon svgIcon=\"network-drive-custom\"></mat-icon>\r\n        <span class=\"text\" trans>My Drive</span>\r\n    </div>\r\n\r\n    <folders-tree (folderSelected)=\"openFolder($event)\" [selectedFolder]=\"activeFolder | async\" #tree></folders-tree>\r\n</div>\r\n\r\n<custom-menu class=\"sidebar-menu\" position=\"drive-sidebar\" itemClass=\"sidebar-menu-item\"></custom-menu>\r\n\r\n<available-space-indicator></available-space-indicator>","import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { DriveEntry } from '../../models/drive-entry';\nimport { DriveUrlsService } from '../../../drive-urls.service';\nimport { Settings } from 'common/core/config/settings.service';\n\n@Component({\n    selector: 'file-thumbnail',\n    templateUrl: './file-thumbnail.component.html',\n    styleUrls: ['./file-thumbnail.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FileThumbnailComponent {\n    @Input() file: DriveEntry;\n\n    constructor(\n        private urls: DriveUrlsService,\n        private settings: Settings\n    ) {}\n\n    public getPreviewUrl(): string {\n        return this.settings.getBaseUrl(true) + this.file.url;\n    }\n\n    public getFolderIcon() {\n        if (this.file.users && this.file.users.length > 1) {\n            return 'shared-folder';\n        } else {\n            return 'folder';\n        }\n    }\n}\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./file-thumbnail.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"../file-icon/file-icon.component.ngfactory\";\nimport * as i4 from \"../file-icon/file-icon.component\";\nimport * as i5 from \"./file-thumbnail.component\";\nimport * as i6 from \"../../../drive-urls.service\";\nimport * as i7 from \"../../../../../common/core/config/settings.service\";\nvar styles_FileThumbnailComponent = [i0.styles];\nvar RenderType_FileThumbnailComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_FileThumbnailComponent, data: {} });\nexport { RenderType_FileThumbnailComponent as RenderType_FileThumbnailComponent };\nfunction View_FileThumbnailComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"img\", [[\"class\", \"file-color\"], [\"draggable\", \"false\"]], [[8, \"src\", 4]], null, null, null, null)), i1.ɵdid(1, 278528, null, 0, i2.NgClass, [i1.IterableDiffers, i1.KeyValueDiffers, i1.ElementRef, i1.Renderer2], { klass: [0, \"klass\"], ngClass: [1, \"ngClass\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_1 = \"file-color\"; var currVal_2 = (_co.file.type + \"-file\"); _ck(_v, 1, 0, currVal_1, currVal_2); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.getPreviewUrl(); _ck(_v, 0, 0, currVal_0); }); }\nfunction View_FileThumbnailComponent_2(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"file-icon\", [], null, null, null, i3.View_FileIconComponent_0, i3.RenderType_FileIconComponent)), i1.ɵdid(1, 573440, null, 0, i4.FileIconComponent, [], { type: [0, \"type\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = ((_co.file.type === \"folder\") ? _co.getFolderIcon() : _co.file.type); _ck(_v, 1, 0, currVal_0); }, null); }\nexport function View_FileThumbnailComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵand(16777216, null, null, 1, null, View_FileThumbnailComponent_1)), i1.ɵdid(1, 16384, null, 0, i2.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_FileThumbnailComponent_2)), i1.ɵdid(4, 16384, null, 0, i2.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = (_co.file.type === \"image\"); _ck(_v, 1, 0, currVal_0); var currVal_1 = (_co.file.type !== \"image\"); _ck(_v, 4, 0, currVal_1); }, null); }\nexport function View_FileThumbnailComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"file-thumbnail\", [], null, null, null, View_FileThumbnailComponent_0, RenderType_FileThumbnailComponent)), i1.ɵdid(1, 49152, null, 0, i5.FileThumbnailComponent, [i6.DriveUrlsService, i7.Settings], null, null)], null, null); }\nvar FileThumbnailComponentNgFactory = i1.ɵccf(\"file-thumbnail\", i5.FileThumbnailComponent, View_FileThumbnailComponent_Host_0, { file: \"file\" }, {}, []);\nexport { FileThumbnailComponentNgFactory as FileThumbnailComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"file-thumbnail{display:block;background-color:#fafafa}file-thumbnail img{display:block;max-width:100%;height:auto}\"];\nexport { styles as styles };\n","<img [src]=\"getPreviewUrl()\"\r\n     *ngIf=\"file.type === 'image'\"\r\n     [ngClass]=\"file.type+'-file'\"\r\n     class=\"file-color\"\r\n     draggable=\"false\">\r\n\r\n<file-icon *ngIf=\"file.type !== 'image'\" [type]=\"file.type === 'folder' ? getFolderIcon() : file.type\"></file-icon>","import { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\nimport { Select, Store } from '@ngxs/store';\nimport { DriveState } from '../../state/drive-state';\nimport { Observable } from 'rxjs';\nimport { DriveEntry } from '../../files/models/drive-entry';\nimport { OpenFolder } from '../../state/actions/commands';\n\n@Component({\n    selector: 'details-panel',\n    templateUrl: './details-panel.component.html',\n    styleUrls: ['./details-panel.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DetailsPanelComponent {\n    @Select(DriveState.selectedEntryOrActiveFolder) entry$: Observable<DriveEntry>;\n    @Select(DriveState.selectedEntryParent) parent$: Observable<DriveEntry>;\n\n    constructor(private store: Store) {}\n\n    public openLocation() {\n        const parent = this.store.selectSnapshot(DriveState.selectedEntryParent);\n        this.store.dispatch(new OpenFolder(parent));\n    }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { Select, Store } from '@ngxs/store';\nimport { DriveState } from '../../state/drive-state';\nimport { Observable } from 'rxjs';\nimport { OpenFolder } from '../../state/actions/commands';\nvar DetailsPanelComponent = /** @class */ (function () {\n    function DetailsPanelComponent(store) {\n        this.store = store;\n    }\n    DetailsPanelComponent.prototype.openLocation = function () {\n        var parent = this.store.selectSnapshot(DriveState.selectedEntryParent);\n        this.store.dispatch(new OpenFolder(parent));\n    };\n    __decorate([\n        Select(DriveState.selectedEntryOrActiveFolder),\n        __metadata(\"design:type\", Observable)\n    ], DetailsPanelComponent.prototype, \"entry$\", void 0);\n    __decorate([\n        Select(DriveState.selectedEntryParent),\n        __metadata(\"design:type\", Observable)\n    ], DetailsPanelComponent.prototype, \"parent$\", void 0);\n    return DetailsPanelComponent;\n}());\nexport { DetailsPanelComponent };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./details-panel.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../files/components/file-thumbnail/file-thumbnail.component.ngfactory\";\nimport * as i3 from \"../../files/components/file-thumbnail/file-thumbnail.component\";\nimport * as i4 from \"../../drive-urls.service\";\nimport * as i5 from \"../../../../common/core/config/settings.service\";\nimport * as i6 from \"@angular/material/tooltip\";\nimport * as i7 from \"@angular/cdk/overlay\";\nimport * as i8 from \"@angular/cdk/scrolling\";\nimport * as i9 from \"@angular/cdk/platform\";\nimport * as i10 from \"@angular/cdk/a11y\";\nimport * as i11 from \"@angular/cdk/bidi\";\nimport * as i12 from \"../../../../common/core/translations/translate.directive\";\nimport * as i13 from \"../../../../common/core/translations/translations.service\";\nimport * as i14 from \"@angular/common\";\nimport * as i15 from \"../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i16 from \"@angular/material/icon\";\nimport * as i17 from \"../../../../common/uploads/formatted-file-size.pipe\";\nimport * as i18 from \"../../../../common/core/ui/formatted-date.pipe\";\nimport * as i19 from \"./details-panel.component\";\nimport * as i20 from \"@ngxs/store\";\nvar styles_DetailsPanelComponent = [i0.styles];\nvar RenderType_DetailsPanelComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_DetailsPanelComponent, data: {} });\nexport { RenderType_DetailsPanelComponent as RenderType_DetailsPanelComponent };\nfunction View_DetailsPanelComponent_3(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"file-thumbnail\", [[\"class\", \"preview\"]], null, null, null, i2.View_FileThumbnailComponent_0, i2.RenderType_FileThumbnailComponent)), i1.ɵdid(1, 49152, null, 0, i3.FileThumbnailComponent, [i4.DriveUrlsService, i5.Settings], { file: [0, \"file\"] }, null)], function (_ck, _v) { var currVal_0 = _v.parent.parent.context.ngIf; _ck(_v, 1, 0, currVal_0); }, null); }\nfunction View_DetailsPanelComponent_4(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 16777216, null, null, 1, \"img\", [], [[8, \"src\", 4]], [[null, \"longpress\"], [null, \"keydown\"], [null, \"touchend\"]], function (_v, en, $event) { var ad = true; if ((\"longpress\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 1).show() !== false);\n        ad = (pd_0 && ad);\n    } if ((\"keydown\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 1)._handleKeydown($event) !== false);\n        ad = (pd_1 && ad);\n    } if ((\"touchend\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 1)._handleTouchend() !== false);\n        ad = (pd_2 && ad);\n    } return ad; }, null, null)), i1.ɵdid(1, 147456, null, 0, i6.MatTooltip, [i7.Overlay, i1.ElementRef, i8.ScrollDispatcher, i1.ViewContainerRef, i1.NgZone, i9.Platform, i10.AriaDescriber, i10.FocusMonitor, i6.MAT_TOOLTIP_SCROLL_STRATEGY, [2, i11.Directionality], [2, i6.MAT_TOOLTIP_DEFAULT_OPTIONS]], { message: [0, \"message\"] }, null), (_l()(), i1.ɵand(0, null, null, 0))], function (_ck, _v) { var currVal_1 = _v.context.$implicit.display_name; _ck(_v, 1, 0, currVal_1); }, function (_ck, _v) { var currVal_0 = _v.context.$implicit.avatar; _ck(_v, 0, 0, currVal_0); }); }\nfunction View_DetailsPanelComponent_5(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 8, \"div\", [[\"class\", \"item\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(2, 0, null, null, 2, \"div\", [[\"class\", \"name\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(3, 4341760, null, 0, i12.TranslateDirective, [i1.ElementRef, i13.Translations, i5.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Owner\"])), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(6, 0, null, null, 1, \"div\", [[\"class\", \"value\"]], null, null, null, null, null)), (_l()(), i1.ɵted(7, null, [\"\", \"\"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"]))], null, function (_ck, _v) { var currVal_0 = _v.parent.parent.context.ngIf.users[0].display_name; _ck(_v, 7, 0, currVal_0); }); }\nfunction View_DetailsPanelComponent_2(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 88, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_DetailsPanelComponent_3)), i1.ɵdid(3, 16384, null, 0, i14.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(5, 0, null, null, 4, \"div\", [[\"class\", \"users-list\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_DetailsPanelComponent_4)), i1.ɵdid(8, 278528, null, 0, i14.NgForOf, [i1.ViewContainerRef, i1.TemplateRef, i1.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(11, 0, null, null, 76, \"div\", [[\"class\", \"details-list\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(13, 0, null, null, 9, \"div\", [[\"class\", \"item\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(15, 0, null, null, 2, \"div\", [[\"class\", \"name\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(16, 4341760, null, 0, i12.TranslateDirective, [i1.ElementRef, i13.Translations, i5.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Type\"])), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(19, 0, null, null, 2, \"div\", [[\"class\", \"value type-value\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(20, 4341760, null, 0, i12.TranslateDirective, [i1.ElementRef, i13.Translations, i5.Settings], null, null), (_l()(), i1.ɵted(21, null, [\"\", \"\"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(24, 0, null, null, 9, \"div\", [[\"class\", \"item\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(26, 0, null, null, 2, \"div\", [[\"class\", \"name\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(27, 4341760, null, 0, i12.TranslateDirective, [i1.ElementRef, i13.Translations, i5.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Size\"])), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(30, 0, null, null, 2, \"div\", [[\"class\", \"value\"]], null, null, null, null, null)), (_l()(), i1.ɵted(31, null, [\"\", \"\"])), i1.ɵppd(32, 1), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(35, 0, null, null, 9, \"div\", [[\"class\", \"item\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(37, 0, null, null, 2, \"div\", [[\"class\", \"name\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(38, 4341760, null, 0, i12.TranslateDirective, [i1.ElementRef, i13.Translations, i5.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Storage Used\"])), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(41, 0, null, null, 2, \"div\", [[\"class\", \"value\"]], null, null, null, null, null)), (_l()(), i1.ɵted(42, null, [\"\", \"\"])), i1.ɵppd(43, 1), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(46, 0, null, null, 15, \"div\", [[\"class\", \"item location-item\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(48, 0, null, null, 2, \"div\", [[\"class\", \"name\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(49, 4341760, null, 0, i12.TranslateDirective, [i1.ElementRef, i13.Translations, i5.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Location\"])), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(52, 0, null, null, 8, \"div\", [[\"class\", \"value\"]], null, [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.openLocation() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                    \"])), (_l()(), i1.ɵeld(54, 0, null, null, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"folder\"]], [[2, \"mat-icon-inline\", null]], null, null, i15.View_MatIcon_0, i15.RenderType_MatIcon)), i1.ɵdid(55, 638976, null, 0, i16.MatIcon, [i1.ElementRef, i16.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n                    \"])), (_l()(), i1.ɵeld(57, 0, null, null, 2, \"span\", [[\"class\", \"text\"]], null, null, null, null, null)), (_l()(), i1.ɵted(58, null, [\"\", \"\"])), i1.ɵpid(131072, i14.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_DetailsPanelComponent_5)), i1.ɵdid(64, 16384, null, 0, i14.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(66, 0, null, null, 9, \"div\", [[\"class\", \"item\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(68, 0, null, null, 2, \"div\", [[\"class\", \"name\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(69, 4341760, null, 0, i12.TranslateDirective, [i1.ElementRef, i13.Translations, i5.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Last Updated\"])), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(72, 0, null, null, 2, \"div\", [[\"class\", \"value\"]], null, null, null, null, null)), (_l()(), i1.ɵted(73, null, [\"\", \"\"])), i1.ɵppd(74, 1), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(77, 0, null, null, 9, \"div\", [[\"class\", \"item\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(79, 0, null, null, 2, \"div\", [[\"class\", \"name\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(80, 4341760, null, 0, i12.TranslateDirective, [i1.ElementRef, i13.Translations, i5.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Created\"])), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(83, 0, null, null, 2, \"div\", [[\"class\", \"value\"]], null, null, null, null, null)), (_l()(), i1.ɵted(84, null, [\"\", \"\"])), i1.ɵppd(85, 1), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"]))], function (_ck, _v) { var currVal_0 = (_v.parent.context.ngIf.type === \"image\"); _ck(_v, 3, 0, currVal_0); var currVal_1 = _v.parent.context.ngIf.users; _ck(_v, 8, 0, currVal_1); var currVal_6 = \"folder\"; _ck(_v, 55, 0, currVal_6); var currVal_8 = (_v.parent.context.ngIf.users && _v.parent.context.ngIf.users.length); _ck(_v, 64, 0, currVal_8); }, function (_ck, _v) { var _co = _v.component; var currVal_2 = _v.parent.context.ngIf.type; _ck(_v, 21, 0, currVal_2); var currVal_3 = i1.ɵunv(_v, 31, 0, _ck(_v, 32, 0, i1.ɵnov(_v.parent.parent, 0), _v.parent.context.ngIf.file_size)); _ck(_v, 31, 0, currVal_3); var currVal_4 = i1.ɵunv(_v, 42, 0, _ck(_v, 43, 0, i1.ɵnov(_v.parent.parent, 0), _v.parent.context.ngIf.file_size)); _ck(_v, 42, 0, currVal_4); var currVal_5 = i1.ɵnov(_v, 55).inline; _ck(_v, 54, 0, currVal_5); var tmp_7_0 = null; var currVal_7 = ((((tmp_7_0 = i1.ɵunv(_v, 58, 0, i1.ɵnov(_v, 59).transform(_co.parent$))) == null) ? null : tmp_7_0.name) || \"My Drive\"); _ck(_v, 58, 0, currVal_7); var currVal_9 = i1.ɵunv(_v, 73, 0, _ck(_v, 74, 0, i1.ɵnov(_v.parent.parent, 1), _v.parent.context.ngIf.updated_at)); _ck(_v, 73, 0, currVal_9); var currVal_10 = i1.ɵunv(_v, 84, 0, _ck(_v, 85, 0, i1.ɵnov(_v.parent.parent, 1), _v.parent.context.ngIf.created_at)); _ck(_v, 84, 0, currVal_10); }); }\nfunction View_DetailsPanelComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 4, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_DetailsPanelComponent_2)), i1.ɵdid(3, 16384, null, 0, i14.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"], ngIfElse: [1, \"ngIfElse\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var currVal_0 = _v.context.ngIf.updated_at; var currVal_1 = i1.ɵnov(_v.parent, 6); _ck(_v, 3, 0, currVal_0, currVal_1); }, null); }\nfunction View_DetailsPanelComponent_6(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(1, 0, null, null, 8, \"div\", [[\"class\", \"nothing-selected\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(3, 0, null, null, 1, \"mat-icon\", [[\"class\", \"icon mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"selection-tool-custom\"]], [[2, \"mat-icon-inline\", null]], null, null, i15.View_MatIcon_0, i15.RenderType_MatIcon)), i1.ɵdid(4, 638976, null, 0, i16.MatIcon, [i1.ElementRef, i16.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(6, 0, null, null, 2, \"div\", [[\"class\", \"text\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(7, 4341760, null, 0, i12.TranslateDirective, [i1.ElementRef, i13.Translations, i5.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Select file or folder to view its details.\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var currVal_1 = \"selection-tool-custom\"; _ck(_v, 4, 0, currVal_1); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 4).inline; _ck(_v, 3, 0, currVal_0); }); }\nexport function View_DetailsPanelComponent_0(_l) { return i1.ɵvid(2, [i1.ɵpid(0, i17.FormattedFileSizePipe, []), i1.ɵpid(0, i18.FormattedDatePipe, [i5.Settings, i1.LOCALE_ID]), (_l()(), i1.ɵand(16777216, null, null, 2, null, View_DetailsPanelComponent_1)), i1.ɵdid(3, 16384, null, 0, i14.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"], ngIfElse: [1, \"ngIfElse\"] }, null), i1.ɵpid(131072, i14.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵand(0, [[\"nothingSelected\", 2]], null, 0, null, View_DetailsPanelComponent_6))], function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵunv(_v, 3, 0, i1.ɵnov(_v, 4).transform(_co.entry$)); var currVal_1 = i1.ɵnov(_v, 6); _ck(_v, 3, 0, currVal_0, currVal_1); }, null); }\nexport function View_DetailsPanelComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"details-panel\", [], null, null, null, View_DetailsPanelComponent_0, RenderType_DetailsPanelComponent)), i1.ɵdid(1, 49152, null, 0, i19.DetailsPanelComponent, [i20.Store], null, null)], null, null); }\nvar DetailsPanelComponentNgFactory = i1.ɵccf(\"details-panel\", i19.DetailsPanelComponent, View_DetailsPanelComponent_Host_0, {}, {}, []);\nexport { DetailsPanelComponentNgFactory as DetailsPanelComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"details-panel{display:block;padding:24px}details-panel file-thumbnail{margin-bottom:20px}details-panel .users-list{display:flex;flex-wrap:wrap;margin-bottom:20px}details-panel .users-list img{width:36px;height:36px;flex:0 0 36px;-o-object-fit:cover;object-fit:cover;margin-right:10px;border-radius:50%;overflow:hidden}details-panel .details-list .item{display:flex;align-items:center;margin-bottom:10px}details-panel .details-list .item .name{width:120px;flex:0 0 120px;color:#656565}details-panel .details-list .item .value{flex:1 1 auto}details-panel .details-list .item .type-value{text-transform:capitalize}details-panel .nothing-selected{display:flex;align-items:center;font-size:1.7rem;font-weight:400}details-panel .nothing-selected .mat-icon{margin-right:5px;width:36px;height:36px;flex-shrink:0}details-panel .location-item .value{font-weight:500;cursor:pointer}details-panel .location-item .value .mat-icon{color:#656565;vertical-align:bottom}details-panel .location-item .value:hover .text{color:#1565c0;text-decoration:underline}\"];\nexport { styles as styles };\n","<ng-container *ngIf=\"entry$ | async as entry; else nothingSelected\">\n    <ng-container *ngIf=\"entry.updated_at; else nothingSelected\">\n        <file-thumbnail *ngIf=\"entry.type === 'image'\" class=\"preview\" [file]=\"entry\"></file-thumbnail>\n        <div class=\"users-list\">\n            <img *ngFor=\"let user of entry.users\" [src]=\"user.avatar\" [matTooltip]=\"user.display_name\">\n        </div>\n        <div class=\"details-list\">\n            <div class=\"item\">\n                <div class=\"name\" trans>Type</div>\n                <div class=\"value type-value\" trans>{{entry.type}}</div>\n            </div>\n            <div class=\"item\">\n                <div class=\"name\" trans>Size</div>\n                <div class=\"value\">{{entry.file_size | formattedFileSize}}</div>\n            </div>\n            <div class=\"item\">\n                <div class=\"name\" trans>Storage Used</div>\n                <div class=\"value\">{{entry.file_size | formattedFileSize}}</div>\n            </div>\n            <div class=\"item location-item\">\n                <div class=\"name\" trans>Location</div>\n                <div class=\"value\" (click)=\"openLocation()\">\n                    <mat-icon svgIcon=\"folder\"></mat-icon>\n                    <span class=\"text\">{{(parent$ | async)?.name || 'My Drive'}}</span>\n                </div>\n            </div>\n            <div class=\"item\" *ngIf=\"entry.users && entry.users.length\">\n                <div class=\"name\" trans>Owner</div>\n                <div class=\"value\">{{entry.users[0].display_name}}</div>\n            </div>\n            <div class=\"item\">\n                <div class=\"name\" trans>Last Updated</div>\n                <div class=\"value\">{{entry.updated_at | formattedDate}}</div>\n            </div>\n            <div class=\"item\">\n                <div class=\"name\" trans>Created</div>\n                <div class=\"value\">{{entry.created_at | formattedDate}}</div>\n            </div>\n        </div>\n    </ng-container>\n</ng-container>\n\n<ng-template #nothingSelected>\n    <div class=\"nothing-selected\">\n        <mat-icon svgIcon=\"selection-tool-custom\" class=\"icon\"></mat-icon>\n        <div class=\"text\" trans>Select file or folder to view its details.</div>\n    </div>\n</ng-template>","import { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\nimport { Select, Store } from '@ngxs/store';\nimport { DriveState} from '../state/drive-state';\nimport { Observable } from 'rxjs';\nimport { DriveEntry } from '../files/models/drive-entry';\nimport { ToggleDetailsSidebar } from '../state/actions/commands';\nimport { DrivePage } from '../state/models/drive-page';\n\n@Component({\n    selector: 'details-sidebar',\n    templateUrl: './details-sidebar.component.html',\n    styleUrls: ['./details-sidebar.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DetailsSidebarComponent {\n    @Select(DriveState.selectedEntryOrActiveFolder) entry$: Observable<DriveEntry>;\n    @Select(DriveState.activePage) activePage$: Observable<DrivePage>;\n\n    constructor(private store: Store) {}\n\n    public close() {\n        this.store.dispatch(new ToggleDetailsSidebar());\n    }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { Select, Store } from '@ngxs/store';\nimport { DriveState } from '../state/drive-state';\nimport { Observable } from 'rxjs';\nimport { ToggleDetailsSidebar } from '../state/actions/commands';\nvar DetailsSidebarComponent = /** @class */ (function () {\n    function DetailsSidebarComponent(store) {\n        this.store = store;\n    }\n    DetailsSidebarComponent.prototype.close = function () {\n        this.store.dispatch(new ToggleDetailsSidebar());\n    };\n    __decorate([\n        Select(DriveState.selectedEntryOrActiveFolder),\n        __metadata(\"design:type\", Observable)\n    ], DetailsSidebarComponent.prototype, \"entry$\", void 0);\n    __decorate([\n        Select(DriveState.activePage),\n        __metadata(\"design:type\", Observable)\n    ], DetailsSidebarComponent.prototype, \"activePage$\", void 0);\n    return DetailsSidebarComponent;\n}());\nexport { DetailsSidebarComponent };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./details-sidebar.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../files/components/file-icon/file-icon.component.ngfactory\";\nimport * as i3 from \"../files/components/file-icon/file-icon.component\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"../../../common/core/translations/translate.directive\";\nimport * as i6 from \"../../../common/core/translations/translations.service\";\nimport * as i7 from \"../../../common/core/config/settings.service\";\nimport * as i8 from \"../../../../node_modules/@angular/material/button/typings/index.ngfactory\";\nimport * as i9 from \"@angular/material/button\";\nimport * as i10 from \"@angular/cdk/platform\";\nimport * as i11 from \"@angular/cdk/a11y\";\nimport * as i12 from \"@angular/platform-browser/animations\";\nimport * as i13 from \"../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i14 from \"@angular/material/icon\";\nimport * as i15 from \"./details-panel/details-panel.component.ngfactory\";\nimport * as i16 from \"./details-panel/details-panel.component\";\nimport * as i17 from \"@ngxs/store\";\nimport * as i18 from \"./details-sidebar.component\";\nvar styles_DetailsSidebarComponent = [i0.styles];\nvar RenderType_DetailsSidebarComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_DetailsSidebarComponent, data: {} });\nexport { RenderType_DetailsSidebarComponent as RenderType_DetailsSidebarComponent };\nfunction View_DetailsSidebarComponent_2(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 7, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(2, 0, null, null, 1, \"file-icon\", [], null, null, null, i2.View_FileIconComponent_0, i2.RenderType_FileIconComponent)), i1.ɵdid(3, 573440, null, 0, i3.FileIconComponent, [], { type: [0, \"type\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(5, 0, null, null, 1, \"div\", [[\"class\", \"name\"]], null, null, null, null, null)), (_l()(), i1.ɵted(6, null, [\"\", \"\"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"]))], function (_ck, _v) { var currVal_0 = _v.parent.context.ngIf.type; _ck(_v, 3, 0, currVal_0); }, function (_ck, _v) { var currVal_1 = _v.parent.context.ngIf.name; _ck(_v, 6, 0, currVal_1); }); }\nfunction View_DetailsSidebarComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 4, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_DetailsSidebarComponent_2)), i1.ɵdid(3, 16384, null, 0, i4.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"], ngIfElse: [1, \"ngIfElse\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"]))], function (_ck, _v) { var currVal_0 = _v.context.ngIf.type; var currVal_1 = i1.ɵnov(_v.parent, 8); _ck(_v, 3, 0, currVal_0, currVal_1); }, null); }\nfunction View_DetailsSidebarComponent_3(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(1, 0, null, null, 1, \"file-icon\", [[\"type\", \"folder\"]], null, null, null, i2.View_FileIconComponent_0, i2.RenderType_FileIconComponent)), i1.ɵdid(2, 573440, null, 0, i3.FileIconComponent, [], { type: [0, \"type\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(4, 0, null, null, 3, \"div\", [[\"class\", \"name\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(5, 4341760, null, 0, i5.TranslateDirective, [i1.ElementRef, i6.Translations, i7.Settings], null, null), (_l()(), i1.ɵted(6, null, [\"\", \"\"])), i1.ɵpid(131072, i4.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n        \"]))], function (_ck, _v) { var currVal_0 = \"folder\"; _ck(_v, 2, 0, currVal_0); }, function (_ck, _v) { var _co = _v.component; var tmp_1_0 = null; var currVal_1 = (((tmp_1_0 = i1.ɵunv(_v, 6, 0, i1.ɵnov(_v, 7).transform(_co.activePage$))) == null) ? null : tmp_1_0.viewName); _ck(_v, 6, 0, currVal_1); }); }\nexport function View_DetailsSidebarComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 0, null, null, 17, \"div\", [[\"class\", \"header\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(2, 0, null, null, 14, \"div\", [[\"class\", \"title\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵand(16777216, null, null, 2, null, View_DetailsSidebarComponent_1)), i1.ɵdid(5, 16384, null, 0, i4.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"], ngIfElse: [1, \"ngIfElse\"] }, null), i1.ɵpid(131072, i4.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵand(0, [[\"defaultTitle\", 2]], null, 0, null, View_DetailsSidebarComponent_3)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(10, 0, null, null, 5, \"button\", [[\"class\", \"close-button\"], [\"mat-icon-button\", \"\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.close() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i8.View_MatButton_0, i8.RenderType_MatButton)), i1.ɵdid(11, 180224, null, 0, i9.MatButton, [i1.ElementRef, i10.Platform, i11.FocusMonitor, [2, i12.ANIMATION_MODULE_TYPE]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵeld(13, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"close\"]], [[2, \"mat-icon-inline\", null]], null, null, i13.View_MatIcon_0, i13.RenderType_MatIcon)), i1.ɵdid(14, 638976, null, 0, i14.MatIcon, [i1.ElementRef, i14.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵeld(19, 0, null, null, 1, \"details-panel\", [], null, null, null, i15.View_DetailsPanelComponent_0, i15.RenderType_DetailsPanelComponent)), i1.ɵdid(20, 49152, null, 0, i16.DetailsPanelComponent, [i17.Store], null, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵunv(_v, 5, 0, i1.ɵnov(_v, 6).transform(_co.entry$)); var currVal_1 = i1.ɵnov(_v, 8); _ck(_v, 5, 0, currVal_0, currVal_1); var currVal_5 = \"close\"; _ck(_v, 14, 0, currVal_5); }, function (_ck, _v) { var currVal_2 = (i1.ɵnov(_v, 11).disabled || null); var currVal_3 = (i1.ɵnov(_v, 11)._animationMode === \"NoopAnimations\"); _ck(_v, 10, 0, currVal_2, currVal_3); var currVal_4 = i1.ɵnov(_v, 14).inline; _ck(_v, 13, 0, currVal_4); }); }\nexport function View_DetailsSidebarComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"details-sidebar\", [], null, null, null, View_DetailsSidebarComponent_0, RenderType_DetailsSidebarComponent)), i1.ɵdid(1, 49152, null, 0, i18.DetailsSidebarComponent, [i17.Store], null, null)], null, null); }\nvar DetailsSidebarComponentNgFactory = i1.ɵccf(\"details-sidebar\", i18.DetailsSidebarComponent, View_DetailsSidebarComponent_Host_0, {}, {}, []);\nexport { DetailsSidebarComponentNgFactory as DetailsSidebarComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"details-sidebar{display:block;padding:28px 0}details-sidebar>.header{margin-bottom:20px;padding:0 24px}details-sidebar>.header .title{display:flex;align-items:center}details-sidebar>.header .title .name{font-size:2.1rem;word-wrap:break-word;overflow:hidden;text-overflow:ellipsis}details-sidebar>.header .title file-icon{width:24px;height:24px;margin-right:18px}details-sidebar>.header .close-button{color:rgba(0,0,0,.54);margin-left:auto}details-sidebar .mat-tab-label{min-width:50%}\"];\nexport { styles as styles };\n","<div class=\"header\">\n    <div class=\"title\">\n        <ng-container *ngIf=\"entry$ | async as entry; else defaultTitle\">\n            <ng-container *ngIf=\"entry.type; else defaultTitle\">\n                <file-icon [type]=\"entry.type\"></file-icon>\n                <div class=\"name\">{{entry.name}}</div>\n            </ng-container>\n        </ng-container>\n        <ng-template #defaultTitle>\n            <file-icon type=\"folder\"></file-icon>\n            <div class=\"name\" trans>{{ (activePage$ | async)?.viewName }}</div>\n        </ng-template>\n        <button mat-icon-button class=\"close-button\" (click)=\"close()\">\n            <mat-icon svgIcon=\"close\"></mat-icon>\n        </button>\n    </div>\n</div>\n<details-panel></details-panel>","import { ContentChildren, Directive, ElementRef, NgZone, OnDestroy, OnInit, QueryList } from '@angular/core';\nimport { FilesGridItemComponent } from '../files/components/files-grid/files-grid-item/files-grid-item.component';\nimport { Store } from '@ngxs/store';\nimport { EntryDoubleTapped} from '../state/actions/events';\nimport { DragEntryService } from './drag-entry.service';\nimport { DeselectAllEntries, SelectEntries } from '../state/actions/commands';\nimport { EntryTapped } from '../state/actions/events';\nimport { DriveState } from '../state/drive-state';\nimport { DriveEntry } from '../files/models/drive-entry';\nimport { FilesDragSelectService } from './files-drag-select.service';\nimport { DriveDomCacheService } from './drive-dom-cache.service';\n\n@Directive({\n    selector: '[driveHammerInteractions]'\n})\nexport class DriveHammerInteractionsDirective implements OnInit, OnDestroy {\n    @ContentChildren(FilesGridItemComponent, {descendants: true}) gridItems: QueryList<FilesGridItemComponent>;\n\n    private hammerManager: HammerManager;\n    private panService: FilesDragSelectService|DragEntryService|null;\n\n    constructor(\n        private zone: NgZone,\n        private el: ElementRef,\n        private store: Store,\n        private dragSelect: FilesDragSelectService,\n        private dragEntry: DragEntryService,\n        private domCache: DriveDomCacheService,\n    ) {}\n\n    ngOnInit() {\n        this.bindToHammer();\n    }\n\n    ngOnDestroy() {\n        this.dragSelect.removeSelectBox();\n    }\n\n    private bindToHammer() {\n        this.createHammerManager();\n        this.onPanStart();\n        this.onPan();\n        this.onPanEnd();\n        this.onTap();\n        this.onDoubleTap();\n    }\n\n    private createHammerManager() {\n        this.zone.runOutsideAngular(() => {\n            this.hammerManager = new Hammer.Manager(this.domCache.filesCont);\n\n            const isMobile = this.store.selectSnapshot(DriveState.isMobile);\n\n            const tap = new Hammer.Tap(),\n                pan = new Hammer.Pan({enable: !isMobile}),\n                doubleTap = new Hammer.Tap({ event: 'doubletap', taps: 2 });\n\n            this.hammerManager.add([tap, doubleTap, pan]);\n            this.hammerManager.get('doubletap').recognizeWith('tap');\n        });\n    }\n\n    private onPanStart() {\n        this.hammerManager.on('panstart', e => {\n            const gridElement = this.getEntryEl(e);\n\n            if (gridElement) {\n                this.panService = this.dragEntry;\n                const entry = this.getEntryByEl(gridElement),\n                    selectedEntries = this.store.selectSnapshot(DriveState.selectedEntries);\n\n                // select entry, if not already selected\n                if ( ! selectedEntries.find(en => en.id === entry.id)) {\n                    this.store.dispatch(new SelectEntries([this.getEntryByEl(gridElement)]));\n                }\n            } else {\n                this.panService = this.dragSelect;\n            }\n\n            this.panService.start(e);\n        });\n    }\n\n    private onPan() {\n        this.hammerManager.on('pan', e => {\n            if (this.panService) this.panService.move(e);\n        });\n    }\n\n    private onPanEnd() {\n        this.hammerManager.on('panend', () => {\n            if (this.panService) this.panService.end();\n        });\n    }\n\n    private onTap() {\n        this.hammerManager.on('tap', e => {\n            const entryEl = this.getEntryEl(e);\n            this.dragSelect.removeSelectBox();\n\n            if (entryEl) {\n                this.store.dispatch(new EntryTapped(this.getEntryByEl(entryEl), e.srcEvent.ctrlKey));\n            } else if (e.target.closest('.files-container')) {\n                this.store.dispatch(new DeselectAllEntries());\n            }\n        });\n    }\n\n    private onDoubleTap() {\n        this.hammerManager.on('doubletap', e => {\n            const gridElement = this.getEntryEl(e);\n            if ( ! gridElement) return;\n\n            this.store.dispatch(new EntryDoubleTapped(\n                this.getEntryByEl(gridElement)\n            ));\n        });\n    }\n\n    private getEntryEl(e: HammerInput) {\n        return e.target.closest('.drive-entry') as HTMLElement;\n    }\n\n    private getEntryByEl(el: HTMLElement): DriveEntry {\n        const id = +el.dataset.id;\n        return this.store.selectSnapshot(DriveState.entries)\n            .find(curr => curr.id === +id);\n    }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DriveDomCacheService {\n    public scrollCont: HTMLElement;\n    public filesCont: HTMLElement;\n    public filesContRect: ClientRect;\n    public scrollContRect: ClientRect;\n    public dragPreview: HTMLElement;\n}\n","import * as i0 from \"@angular/core\";\nvar DriveDomCacheService = /** @class */ (function () {\n    function DriveDomCacheService() {\n    }\n    DriveDomCacheService.ngInjectableDef = i0.defineInjectable({ factory: function DriveDomCacheService_Factory() { return new DriveDomCacheService(); }, token: DriveDomCacheService, providedIn: \"root\" });\n    return DriveDomCacheService;\n}());\nexport { DriveDomCacheService };\n","var __assign = (this && this.__assign) || Object.assign || function(t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n        s = arguments[i];\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n            t[p] = s[p];\n    }\n    return t;\n};\nimport { EntriesSelectedViaDrag } from '../state/actions/events';\nimport { Store } from '@ngxs/store';\nimport { DriveDomCacheService } from './drive-dom-cache.service';\nimport { DriveState } from '../state/drive-state';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ngxs/store\";\nimport * as i2 from \"./drive-dom-cache.service\";\nvar GRID_ITEM_SELECTOR = 'files-grid-item';\nvar FilesDragSelectService = /** @class */ (function () {\n    function FilesDragSelectService(store, cache) {\n        this.store = store;\n        this.cache = cache;\n        this.initial = { x: 0, y: 0, scrollTop: 0 };\n    }\n    FilesDragSelectService.prototype.start = function (e) {\n        this.cacheClientRects();\n        this.createSelectBox();\n        this.bindScroll();\n        this.initial = __assign({}, this.hammerToRelative(e), { scrollTop: this.cache.scrollCont.scrollTop });\n        this.selectBox.style.top = this.initial.y + 'px';\n        this.selectBox.style.left = this.initial.x + 'px';\n    };\n    FilesDragSelectService.prototype.move = function (e) {\n        this.lastPanEvent = e;\n        this.resizeBox(e);\n    };\n    FilesDragSelectService.prototype.end = function () {\n        this.removeSelectBox();\n        this.dispatchSelectedAction();\n        this.unbindScroll();\n    };\n    FilesDragSelectService.prototype.resizeBox = function (e) {\n        if (!e)\n            e = this.lastPanEvent;\n        if (!e || !this.selectBox)\n            return;\n        var newPos = this.getNewSelectorPosition(e);\n        this.scrollAndRepositionSelector(newPos);\n        this.selectIntersectingElements();\n    };\n    /**\n     * Calculate new position of selector box.\n     */\n    FilesDragSelectService.prototype.getNewSelectorPosition = function (e) {\n        var current = this.hammerToRelative(e);\n        var tmp, x1 = this.initial.x, y1 = this.initial.y, x2 = current.x, y2 = current.y;\n        if (x1 > x2) {\n            tmp = x2;\n            x2 = x1;\n            x1 = tmp;\n        }\n        if (y1 > y2) {\n            tmp = y2;\n            y2 = y1;\n            y1 = tmp;\n        }\n        return {\n            width: x2 - x1,\n            height: y2 - y1,\n            top: y1,\n            right: x1 + (x2 - x1),\n            bottom: y1 + (y2 - y1),\n            left: x1,\n        };\n    };\n    /**\n     * Check if specified position intersects any container edge.\n     */\n    FilesDragSelectService.prototype.reachedAreaEdge = function (newPos) {\n        var area = this.rectToRelative(this.cache.filesContRect);\n        if (newPos.left <= area.left) {\n            return 'left';\n        }\n        else if (newPos.top <= area.top) {\n            return 'top';\n        }\n        else if (newPos.right >= area.right) {\n            return 'right';\n        }\n        else if (newPos.bottom >= area.bottom) {\n            return 'bottom';\n        }\n        return false;\n    };\n    /**\n     * Auto scroll container (if needed) and reposition selector box.\n     */\n    FilesDragSelectService.prototype.scrollAndRepositionSelector = function (newPos) {\n        var area = this.cache.scrollCont, edge = this.reachedAreaEdge(newPos);\n        // make sure top always starts at the same coordinates\n        // regardless of any scrolling done during dragging\n        newPos.top += this.initial.scrollTop;\n        // auto scroll when cursor reaches container edge\n        if (edge === 'bottom') {\n            area.scrollBy({ top: 4 });\n        }\n        else if (edge === 'top') {\n            area.scrollBy({ top: -4 });\n        }\n        // scroll diff between drag start and now (auto scroll or mouse wheel)\n        var scrollDiff = this.cache.scrollCont.scrollTop - this.initial.scrollTop, scrollValue = Math.abs(scrollDiff);\n        // top needs to be changed only if scroll direction is top\n        if (scrollDiff < 0) {\n            newPos.top -= scrollValue;\n        }\n        // height needs to be changed regardless of direction and method\n        newPos.height += scrollValue;\n        // check if we have reached bottom edge again, after scroll values are applied\n        var reachedBottom = (newPos.top + newPos.height) >= this.cache.scrollCont.scrollHeight;\n        // if any select area edge is reached, bail\n        if (edge === 'left' || edge === 'right' || reachedBottom)\n            return;\n        // finally, reposition select box with scroll values applied\n        this.applyPosition(newPos);\n    };\n    /**\n     * Apply specified position to selector box.\n     */\n    FilesDragSelectService.prototype.applyPosition = function (newPos) {\n        this.selectBox.style.width = newPos.width + 'px';\n        this.selectBox.style.height = newPos.height + 'px';\n        this.selectBox.style.left = newPos.left + 'px';\n        this.selectBox.style.top = newPos.top + 'px';\n    };\n    FilesDragSelectService.prototype.selectIntersectingElements = function () {\n        var selectedBoxRect = this.selectBox.getBoundingClientRect();\n        this.getGridElements().forEach(function (gridItem) {\n            var rect = gridItem.getBoundingClientRect();\n            // item intersects the select box\n            if (rect.top + rect.height > selectedBoxRect.top\n                && rect.left + rect.width > selectedBoxRect.left\n                && rect.bottom - rect.height < selectedBoxRect.bottom\n                && rect.right - rect.width < selectedBoxRect.right) {\n                gridItem.classList.add('selected');\n            }\n            else {\n                gridItem.classList.remove('selected');\n            }\n        });\n    };\n    /**\n     * Transform absolute container client rect into relative.\n     */\n    FilesDragSelectService.prototype.rectToRelative = function (rect) {\n        return {\n            width: rect.width,\n            height: rect.height,\n            left: rect.left - this.cache.filesContRect.left,\n            top: rect.top - this.cache.filesContRect.top,\n            right: rect.right - this.cache.filesContRect.left,\n            bottom: rect.bottom - this.cache.filesContRect.top\n        };\n    };\n    /**\n     * Transform hammer absolute event to relative coordinates.\n     */\n    FilesDragSelectService.prototype.hammerToRelative = function (e) {\n        return {\n            x: e.center.x - this.cache.filesContRect.left,\n            y: e.center.y - this.cache.filesContRect.top\n        };\n    };\n    FilesDragSelectService.prototype.dispatchSelectedAction = function () {\n        var ids = this.getGridElements()\n            .filter(function (el) { return el.classList.contains('selected'); })\n            .map(function (el) { return +el.dataset.id; });\n        var entries = this.store.selectSnapshot(DriveState.entries)\n            .filter(function (entry) { return ids.indexOf(entry.id) > -1; });\n        this.store.dispatch(new EntriesSelectedViaDrag(entries));\n    };\n    FilesDragSelectService.prototype.createSelectBox = function () {\n        this.selectBox = document.createElement('div');\n        this.selectBox.classList.add('files-select-box');\n        this.cache.filesCont.appendChild(this.selectBox);\n    };\n    FilesDragSelectService.prototype.removeSelectBox = function () {\n        if (!this.selectBox)\n            return;\n        this.selectBox.remove();\n        this.selectBox = null;\n    };\n    FilesDragSelectService.prototype.cacheClientRects = function () {\n        this.cache.filesContRect = this.cache.filesCont.getBoundingClientRect();\n        this.cache.scrollContRect = this.cache.scrollCont.getBoundingClientRect();\n    };\n    FilesDragSelectService.prototype.getGridElements = function () {\n        return Array.from(this.cache.filesCont.querySelectorAll(GRID_ITEM_SELECTOR));\n    };\n    FilesDragSelectService.prototype.bindScroll = function () {\n        var _this = this;\n        this.scrollListener = function () { return _this.resizeBox(); };\n        this.cache.scrollCont.addEventListener('scroll', this.scrollListener);\n    };\n    FilesDragSelectService.prototype.unbindScroll = function () {\n        this.cache.scrollCont.removeEventListener('scroll', this.scrollListener);\n    };\n    FilesDragSelectService.ngInjectableDef = i0.defineInjectable({ factory: function FilesDragSelectService_Factory() { return new FilesDragSelectService(i0.inject(i1.Store), i0.inject(i2.DriveDomCacheService)); }, token: FilesDragSelectService, providedIn: \"root\" });\n    return FilesDragSelectService;\n}());\nexport { FilesDragSelectService };\n","import { Injectable } from '@angular/core';\r\nimport { EntriesSelectedViaDrag } from '../state/actions/events';\r\nimport { Store } from '@ngxs/store';\r\nimport { DriveDomCacheService } from './drive-dom-cache.service';\r\nimport { DriveState } from '../state/drive-state';\r\n\r\nconst GRID_ITEM_SELECTOR = 'files-grid-item';\r\n\r\ntype AreaEdge = 'top'|'left'|'right'|'bottom'|false;\r\n\r\ninterface SelectorRect extends ClientRect {\r\n    height: number;\r\n    width: number;\r\n}\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class FilesDragSelectService {\r\n    private selectBox: HTMLDivElement;\r\n    private initial = {x: 0, y: 0, scrollTop: 0};\r\n    private lastPanEvent: HammerInput|null;\r\n    private scrollListener: EventListener;\r\n\r\n    constructor(\r\n        private store: Store,\r\n        private cache: DriveDomCacheService,\r\n    ) {}\r\n\r\n    public start(e: HammerInput) {\r\n        this.cacheClientRects();\r\n        this.createSelectBox();\r\n        this.bindScroll();\r\n\r\n        this.initial = {\r\n            ...this.hammerToRelative(e),\r\n            scrollTop: this.cache.scrollCont.scrollTop,\r\n        };\r\n\r\n        this.selectBox.style.top = this.initial.y + 'px';\r\n        this.selectBox.style.left = this.initial.x + 'px';\r\n\r\n\r\n    }\r\n\r\n    public move(e: HammerInput) {\r\n        this.lastPanEvent = e;\r\n        this.resizeBox(e);\r\n    }\r\n\r\n    public end() {\r\n        this.removeSelectBox();\r\n        this.dispatchSelectedAction();\r\n        this.unbindScroll();\r\n    }\r\n\r\n    public resizeBox(e?: HammerInput|null) {\r\n        if ( ! e) e = this.lastPanEvent;\r\n        if ( ! e || ! this.selectBox) return;\r\n        const newPos = this.getNewSelectorPosition(e);\r\n        this.scrollAndRepositionSelector(newPos);\r\n        this.selectIntersectingElements();\r\n    }\r\n\r\n    /**\r\n     * Calculate new position of selector box.\r\n     */\r\n    private getNewSelectorPosition(e: HammerInput): SelectorRect {\r\n        const current = this.hammerToRelative(e);\r\n\r\n        let tmp,\r\n            x1 = this.initial.x,\r\n            y1 = this.initial.y,\r\n            x2 = current.x,\r\n            y2 = current.y;\r\n\r\n        if (x1 > x2) { tmp = x2; x2 = x1; x1 = tmp; }\r\n        if (y1 > y2) { tmp = y2; y2 = y1; y1 = tmp; }\r\n\r\n        return {\r\n            width: x2 - x1,\r\n            height: y2 - y1,\r\n            top: y1,\r\n            right: x1 + (x2 - x1), // left + width\r\n            bottom: y1 + (y2 - y1), // top + height\r\n            left: x1,\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Check if specified position intersects any container edge.\r\n     */\r\n    private reachedAreaEdge(newPos: ClientRect): AreaEdge {\r\n        const area = this.rectToRelative(this.cache.filesContRect);\r\n\r\n        if (newPos.left <= area.left) {\r\n            return 'left';\r\n        } else if (newPos.top <= area.top) {\r\n            return 'top';\r\n        } else if (newPos.right >= area.right) {\r\n            return 'right';\r\n        } else if (newPos.bottom >= area.bottom) {\r\n            return 'bottom';\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    /**\r\n     * Auto scroll container (if needed) and reposition selector box.\r\n     */\r\n    private scrollAndRepositionSelector(newPos: SelectorRect) {\r\n        const area = this.cache.scrollCont,\r\n            edge = this.reachedAreaEdge(newPos);\r\n\r\n        // make sure top always starts at the same coordinates\r\n        // regardless of any scrolling done during dragging\r\n        newPos.top += this.initial.scrollTop;\r\n\r\n        // auto scroll when cursor reaches container edge\r\n        if (edge === 'bottom') {\r\n            area.scrollBy({top: 4});\r\n        } else if (edge === 'top') {\r\n            area.scrollBy({top: -4});\r\n        }\r\n\r\n        // scroll diff between drag start and now (auto scroll or mouse wheel)\r\n        const scrollDiff = this.cache.scrollCont.scrollTop - this.initial.scrollTop,\r\n            scrollValue = Math.abs(scrollDiff);\r\n\r\n        // top needs to be changed only if scroll direction is top\r\n        if (scrollDiff < 0) {\r\n            newPos.top -= scrollValue;\r\n        }\r\n\r\n        // height needs to be changed regardless of direction and method\r\n        newPos.height += scrollValue;\r\n\r\n        // check if we have reached bottom edge again, after scroll values are applied\r\n        const reachedBottom = (newPos.top + newPos.height) >= this.cache.scrollCont.scrollHeight;\r\n\r\n        // if any select area edge is reached, bail\r\n        if (edge === 'left' || edge === 'right' || reachedBottom) return;\r\n\r\n        // finally, reposition select box with scroll values applied\r\n        this.applyPosition(newPos);\r\n    }\r\n\r\n    /**\r\n     * Apply specified position to selector box.\r\n     */\r\n    private applyPosition(newPos: ClientRect) {\r\n        this.selectBox.style.width = newPos.width + 'px';\r\n        this.selectBox.style.height = newPos.height + 'px';\r\n        this.selectBox.style.left = newPos.left + 'px';\r\n        this.selectBox.style.top = newPos.top + 'px';\r\n    }\r\n\r\n    private selectIntersectingElements() {\r\n        const selectedBoxRect = this.selectBox.getBoundingClientRect();\r\n\r\n        this.getGridElements().forEach((gridItem: HTMLElement) => {\r\n            const rect = gridItem.getBoundingClientRect();\r\n\r\n            // item intersects the select box\r\n            if (rect.top + rect.height > selectedBoxRect.top\r\n                && rect.left + rect.width > selectedBoxRect.left\r\n                && rect.bottom - rect.height < selectedBoxRect.bottom\r\n                && rect.right - rect.width < selectedBoxRect.right) {\r\n                gridItem.classList.add('selected');\r\n            } else {\r\n                gridItem.classList.remove('selected');\r\n            }\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Transform absolute container client rect into relative.\r\n     */\r\n    private rectToRelative(rect: ClientRect): ClientRect {\r\n        return {\r\n            width: rect.width,\r\n            height: rect.height,\r\n            left: rect.left - this.cache.filesContRect.left,\r\n            top: rect.top - this.cache.filesContRect.top,\r\n            right: rect.right - this.cache.filesContRect.left,\r\n            bottom: rect.bottom - this.cache.filesContRect.top\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Transform hammer absolute event to relative coordinates.\r\n     */\r\n    private hammerToRelative(e: HammerInput) {\r\n        return {\r\n            x: e.center.x - this.cache.filesContRect.left,\r\n            y: e.center.y - this.cache.filesContRect.top\r\n        };\r\n    }\r\n\r\n    private dispatchSelectedAction() {\r\n        const ids = this.getGridElements()\r\n            .filter(el => el.classList.contains('selected'))\r\n            .map(el => +el.dataset.id);\r\n\r\n        const entries = this.store.selectSnapshot(DriveState.entries)\r\n            .filter(entry => ids.indexOf(entry.id) > -1);\r\n\r\n        this.store.dispatch(new EntriesSelectedViaDrag(entries));\r\n    }\r\n\r\n    private createSelectBox() {\r\n        this.selectBox = document.createElement('div');\r\n        this.selectBox.classList.add('files-select-box');\r\n        this.cache.filesCont.appendChild(this.selectBox);\r\n    }\r\n\r\n    public removeSelectBox() {\r\n        if ( ! this.selectBox) return;\r\n        this.selectBox.remove();\r\n        this.selectBox = null;\r\n    }\r\n\r\n    private cacheClientRects() {\r\n        this.cache.filesContRect = this.cache.filesCont.getBoundingClientRect();\r\n        this.cache.scrollContRect = this.cache.scrollCont.getBoundingClientRect();\r\n    }\r\n\r\n    private getGridElements(): HTMLElement[] {\r\n        return Array.from(this.cache.filesCont.querySelectorAll(GRID_ITEM_SELECTOR));\r\n    }\r\n\r\n    private bindScroll() {\r\n        this.scrollListener = () => this.resizeBox();\r\n        this.cache.scrollCont.addEventListener('scroll', this.scrollListener);\r\n    }\r\n\r\n    private unbindScroll() {\r\n        this.cache.scrollCont.removeEventListener('scroll', this.scrollListener);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { DriveDomCacheService } from './drive-dom-cache.service';\nimport { Store } from '@ngxs/store';\nimport { StoppedDragging } from '../state/actions/events';\nimport { StartedDragging } from '../state/actions/events';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DragEntryService {\n    constructor(\n        private domCache: DriveDomCacheService,\n        private store: Store\n    ) {}\n\n    public start(e: HammerInput) {\n        this.store.dispatch(new StartedDragging());\n    }\n\n    public move(e: HammerInput) {\n        this.domCache.dragPreview.style.top = e.center.y + 'px';\n        this.domCache.dragPreview.style.left = e.center.x + 'px';\n    }\n\n    public end() {\n        this.store.dispatch(new StoppedDragging());\n    }\n}\n","import { DriveDomCacheService } from './drive-dom-cache.service';\nimport { Store } from '@ngxs/store';\nimport { StoppedDragging } from '../state/actions/events';\nimport { StartedDragging } from '../state/actions/events';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./drive-dom-cache.service\";\nimport * as i2 from \"@ngxs/store\";\nvar DragEntryService = /** @class */ (function () {\n    function DragEntryService(domCache, store) {\n        this.domCache = domCache;\n        this.store = store;\n    }\n    DragEntryService.prototype.start = function (e) {\n        this.store.dispatch(new StartedDragging());\n    };\n    DragEntryService.prototype.move = function (e) {\n        this.domCache.dragPreview.style.top = e.center.y + 'px';\n        this.domCache.dragPreview.style.left = e.center.x + 'px';\n    };\n    DragEntryService.prototype.end = function () {\n        this.store.dispatch(new StoppedDragging());\n    };\n    DragEntryService.ngInjectableDef = i0.defineInjectable({ factory: function DragEntryService_Factory() { return new DragEntryService(i0.inject(i1.DriveDomCacheService), i0.inject(i2.Store)); }, token: DragEntryService, providedIn: \"root\" });\n    return DragEntryService;\n}());\nexport { DragEntryService };\n","var __assign = (this && this.__assign) || Object.assign || function(t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n        s = arguments[i];\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n            t[p] = s[p];\n    }\n    return t;\n};\nimport { OnInit } from '@angular/core';\nimport { DriveEntryApiService } from '../../drive-entry-api.service';\nimport { Store } from '@ngxs/store';\nimport { DriveState } from '../../state/drive-state';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { Translations } from 'common/core/translations/translations.service';\nimport { ContextMenu } from 'common/core/ui/context-menu/context-menu.service';\nimport { DriveContextMenuComponent } from '../../context-actions/components/drive-context-menu/drive-context-menu.component';\nimport { distinctUntilChanged, filter } from 'rxjs/operators';\nimport { OpenFolder } from '../../state/actions/commands';\nimport { ROOT_FOLDER } from '../../folders/root-folder';\nimport { DriveFolderPage, ROOT_FOLDER_PAGE, SHARES_PAGE } from '../../state/models/drive-page';\nimport { Navigate } from '@ngxs/router-plugin';\nvar EntryBreadcrumbsComponent = /** @class */ (function () {\n    function EntryBreadcrumbsComponent(entriesApi, i18n, contextMenu, store) {\n        this.entriesApi = entriesApi;\n        this.i18n = i18n;\n        this.contextMenu = contextMenu;\n        this.store = store;\n        this.breadcrumb = new BehaviorSubject([]);\n    }\n    EntryBreadcrumbsComponent.prototype.ngOnInit = function () {\n        var _this = this;\n        // wait until entries and user folders are loaded\n        var sub = combineLatest(this.store.select(DriveState.meta), this.store.select(DriveState.userFoldersLoaded)).subscribe(function (combined) {\n            if (combined[0].currentPage && combined[1]) {\n                _this.bindToActivePage();\n                sub && sub.unsubscribe();\n            }\n        });\n    };\n    EntryBreadcrumbsComponent.prototype.openPage = function (page) {\n        if (page.folder) {\n            this.store.dispatch(new OpenFolder(page.folder));\n        }\n        else {\n            this.store.dispatch(new Navigate(['/drive/shares']));\n        }\n    };\n    EntryBreadcrumbsComponent.prototype.openContextMenu = function (item, origin) {\n        var params = { originX: 'start', overlayX: 'start' };\n        switch (item.name) {\n            case 'trash':\n                return this.contextMenu.open(DriveContextMenuComponent, origin, params);\n            case 'root':\n                return this.contextMenu.open(DriveContextMenuComponent, origin, params);\n            case 'folder':\n                params = __assign({ data: { entry: this.store.selectSnapshot(DriveState.activeFolder) } }, params);\n                return this.contextMenu.open(DriveContextMenuComponent, origin, params);\n        }\n    };\n    EntryBreadcrumbsComponent.prototype.generateBreadCrumb = function (page, folders) {\n        var breadcrumbs = [page.name === 'folder' ? this.getFolderRootBreadcrumb(page) : page];\n        if (page.folder && page.folder !== ROOT_FOLDER) {\n            var folderPath = this.getBreadcrumbForFolder(page.folder, folders);\n            breadcrumbs.push.apply(breadcrumbs, folderPath);\n        }\n        this.breadcrumb.next(breadcrumbs);\n    };\n    EntryBreadcrumbsComponent.prototype.getBreadcrumbForFolder = function (folder, allFolders) {\n        return folder.path.split('/').map(function (id) {\n            var pathFolder = folder.id === +id ? folder : allFolders[id];\n            return folder && new DriveFolderPage(pathFolder);\n        }).filter(function (f) { return !!f; });\n    };\n    EntryBreadcrumbsComponent.prototype.getFolderRootBreadcrumb = function (page) {\n        var userOwnsFolder = this.store.selectSnapshot(DriveState.userOwnsActiveFolder);\n        if (!page.folder || userOwnsFolder) {\n            return ROOT_FOLDER_PAGE;\n        }\n        else {\n            return SHARES_PAGE;\n        }\n    };\n    EntryBreadcrumbsComponent.prototype.bindToActivePage = function () {\n        var _this = this;\n        combineLatest(this.store.select(DriveState.activePage), this.store.select(DriveState.flatFolders)).pipe(distinctUntilChanged(), filter(function (combined) {\n            // wait until folder data is fully loaded\n            return !combined[0].folderHash || combined[0].folder;\n        })).subscribe(function (combined) {\n            _this.generateBreadCrumb(combined[0], combined[1]);\n        });\n    };\n    return EntryBreadcrumbsComponent;\n}());\nexport { EntryBreadcrumbsComponent };\n","import { Component, OnInit, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\nimport { DriveEntryApiService } from '../../drive-entry-api.service';\nimport { Store } from '@ngxs/store';\nimport { DriveState} from '../../state/drive-state';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { Translations } from 'common/core/translations/translations.service';\nimport { ContextMenu, ContextMenuParams } from 'common/core/ui/context-menu/context-menu.service';\nimport { DriveContextMenuComponent } from '../../context-actions/components/drive-context-menu/drive-context-menu.component';\nimport { DriveFolder } from '../../folders/models/driveFolder';\nimport { distinctUntilChanged, filter } from 'rxjs/operators';\nimport { OpenFolder } from '../../state/actions/commands';\nimport { ROOT_FOLDER } from '../../folders/root-folder';\nimport { DriveFolderPage, DrivePage, ROOT_FOLDER_PAGE, SHARES_PAGE } from '../../state/models/drive-page';\nimport { DriveEntry } from '../../files/models/drive-entry';\nimport { Navigate } from '@ngxs/router-plugin';\n\n@Component({\n    selector: 'entry-breadcrumbs',\n    templateUrl: './entry-breadcrumbs.component.html',\n    styleUrls: ['./entry-breadcrumbs.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EntryBreadcrumbsComponent implements OnInit {\n    public breadcrumb: BehaviorSubject<DrivePage[]> = new BehaviorSubject([]);\n\n    constructor(\n        private entriesApi: DriveEntryApiService,\n        private i18n: Translations,\n        private contextMenu: ContextMenu,\n        private store: Store\n    ) {}\n\n    ngOnInit() {\n        // wait until entries and user folders are loaded\n        const sub = combineLatest(\n            this.store.select(DriveState.meta),\n            this.store.select(DriveState.userFoldersLoaded),\n        ).subscribe(combined => {\n            if (combined[0].currentPage && combined[1]) {\n                this.bindToActivePage();\n                sub && sub.unsubscribe();\n            }\n        });\n    }\n\n    public openPage(page: DrivePage) {\n        if (page.folder) {\n            this.store.dispatch(new OpenFolder(page.folder));\n        } else {\n            this.store.dispatch(new Navigate(['/drive/shares']));\n        }\n    }\n\n    public openContextMenu(item: DrivePage, origin: HTMLElement) {\n        let params = {originX: 'start', overlayX: 'start'} as ContextMenuParams;\n\n        switch (item.name) {\n            case 'trash':\n                return this.contextMenu.open(DriveContextMenuComponent, origin, params);\n            case 'root':\n                return this.contextMenu.open(DriveContextMenuComponent, origin, params);\n            case 'folder':\n                params = {data: {entry: this.store.selectSnapshot(DriveState.activeFolder)}, ...params};\n                return this.contextMenu.open(DriveContextMenuComponent, origin, params);\n        }\n    }\n\n    private generateBreadCrumb(page: DrivePage, folders?: {[key: number]: DriveFolder}) {\n        const breadcrumbs = [page.name === 'folder' ? this.getFolderRootBreadcrumb(page) : page];\n\n        if (page.folder && page.folder !== ROOT_FOLDER) {\n            const folderPath = this.getBreadcrumbForFolder(page.folder, folders);\n\n            breadcrumbs.push(...folderPath);\n        }\n\n        this.breadcrumb.next(breadcrumbs);\n    }\n\n    private getBreadcrumbForFolder(folder: DriveEntry, allFolders: {[key: number]: DriveEntry}) {\n        return folder.path.split('/').map(id => {\n            const pathFolder = folder.id === +id ? folder : allFolders[id];\n            return folder && new DriveFolderPage(pathFolder);\n        }).filter(f => !!f);\n    }\n\n    private getFolderRootBreadcrumb(page: DriveFolderPage) {\n        const userOwnsFolder = this.store.selectSnapshot(DriveState.userOwnsActiveFolder);\n\n        if ( ! page.folder || userOwnsFolder) {\n            return ROOT_FOLDER_PAGE;\n        } else {\n            return SHARES_PAGE;\n        }\n    }\n\n    private bindToActivePage() {\n        combineLatest(\n            this.store.select(DriveState.activePage),\n            this.store.select(DriveState.flatFolders)\n        ).pipe(\n            distinctUntilChanged(),\n            filter(combined => {\n                // wait until folder data is fully loaded\n                return ! combined[0].folderHash || combined[0].folder;\n            })\n        ).subscribe(combined => {\n            this.generateBreadCrumb(combined[0], combined[1]);\n        });\n    }\n}\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./entry-breadcrumbs.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i3 from \"@angular/material/icon\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"../../../../common/core/translations/translate.pipe\";\nimport * as i6 from \"../../../../common/core/translations/translations.service\";\nimport * as i7 from \"./entry-breadcrumbs.component\";\nimport * as i8 from \"../../drive-entry-api.service\";\nimport * as i9 from \"../../../../common/core/ui/context-menu/context-menu.service\";\nimport * as i10 from \"@ngxs/store\";\nvar styles_EntryBreadcrumbsComponent = [i0.styles];\nvar RenderType_EntryBreadcrumbsComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_EntryBreadcrumbsComponent, data: {} });\nexport { RenderType_EntryBreadcrumbsComponent as RenderType_EntryBreadcrumbsComponent };\nfunction View_EntryBreadcrumbsComponent_2(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"arrow-drop-down\"]], [[2, \"mat-icon-inline\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(1, 638976, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null)], function (_ck, _v) { var currVal_1 = \"arrow-drop-down\"; _ck(_v, 1, 0, currVal_1); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 1).inline; _ck(_v, 0, 0, currVal_0); }); }\nfunction View_EntryBreadcrumbsComponent_3(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"mat-icon\", [[\"class\", \"separator mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"keyboard-arrow-right\"]], [[2, \"mat-icon-inline\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(1, 638976, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null)], function (_ck, _v) { var currVal_1 = \"keyboard-arrow-right\"; _ck(_v, 1, 0, currVal_1); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 1).inline; _ck(_v, 0, 0, currVal_0); }); }\nfunction View_EntryBreadcrumbsComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 14, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(2, 0, [[\"button\", 1]], null, 8, \"div\", [[\"class\", \"breadcrumb-item\"]], [[2, \"no-action\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = ((_v.context.last ? _co.openContextMenu(_v.context.$implicit, i1.ɵnov(_v, 2)) : _co.openPage(_v.context.$implicit)) !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(4, 0, null, null, 2, \"span\", [[\"class\", \"name\"]], null, null, null, null, null)), (_l()(), i1.ɵted(5, null, [\"\", \"\"])), i1.ɵppd(6, 1), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_EntryBreadcrumbsComponent_2)), i1.ɵdid(9, 16384, null, 0, i4.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_EntryBreadcrumbsComponent_3)), i1.ɵdid(13, 16384, null, 0, i4.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var currVal_2 = (_v.context.last && _v.context.$implicit.hasActions); _ck(_v, 9, 0, currVal_2); var currVal_3 = !_v.context.last; _ck(_v, 13, 0, currVal_3); }, function (_ck, _v) { var currVal_0 = !_v.context.$implicit.hasActions; _ck(_v, 2, 0, currVal_0); var currVal_1 = (_v.context.first ? i1.ɵunv(_v, 5, 0, _ck(_v, 6, 0, i1.ɵnov(_v.parent, 0), _v.context.$implicit.viewName)) : _v.context.$implicit.viewName); _ck(_v, 5, 0, currVal_1); }); }\nexport function View_EntryBreadcrumbsComponent_0(_l) { return i1.ɵvid(2, [i1.ɵpid(0, i5.TransPipe, [i6.Translations]), (_l()(), i1.ɵand(16777216, null, null, 2, null, View_EntryBreadcrumbsComponent_1)), i1.ɵdid(2, 278528, null, 0, i4.NgForOf, [i1.ViewContainerRef, i1.TemplateRef, i1.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null), i1.ɵpid(131072, i4.AsyncPipe, [i1.ChangeDetectorRef])], function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵunv(_v, 2, 0, i1.ɵnov(_v, 3).transform(_co.breadcrumb)); _ck(_v, 2, 0, currVal_0); }, null); }\nexport function View_EntryBreadcrumbsComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"entry-breadcrumbs\", [], null, null, null, View_EntryBreadcrumbsComponent_0, RenderType_EntryBreadcrumbsComponent)), i1.ɵdid(1, 114688, null, 0, i7.EntryBreadcrumbsComponent, [i8.DriveEntryApiService, i6.Translations, i9.ContextMenu, i10.Store], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nvar EntryBreadcrumbsComponentNgFactory = i1.ɵccf(\"entry-breadcrumbs\", i7.EntryBreadcrumbsComponent, View_EntryBreadcrumbsComponent_Host_0, {}, {}, []);\nexport { EntryBreadcrumbsComponentNgFactory as EntryBreadcrumbsComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"entry-breadcrumbs{display:flex;align-items:center;max-width:100%;overflow:hidden}entry-breadcrumbs .breadcrumb-item{font-size:1.8rem;color:rgba(0,0,0,.87);border-radius:4px;padding:4px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}entry-breadcrumbs .breadcrumb-item:hover{background-color:#f1f1f1}entry-breadcrumbs .breadcrumb-item:first-of-type{text-transform:capitalize}entry-breadcrumbs .breadcrumb-item .mat-icon{vertical-align:middle;color:rgba(0,0,0,.54);margin-left:-5px}entry-breadcrumbs .separator{color:rgba(0,0,0,.54)}\"];\nexport { styles as styles };\n","<ng-container *ngFor=\"let item of breadcrumb | async; last as last; first as first;\">\r\n    <div class=\"breadcrumb-item\" (click)=\"last ? openContextMenu(item, button) : openPage(item)\" [class.no-action]=\"!item.hasActions\" #button>\r\n        <span class=\"name\">{{first ? (item.viewName | trans) : item.viewName}}</span>\r\n        <mat-icon svgIcon=\"arrow-drop-down\" *ngIf=\"last && item.hasActions\"></mat-icon>\r\n    </div>\r\n    <mat-icon class=\"separator\" svgIcon=\"keyboard-arrow-right\" *ngIf=\"!last\"></mat-icon>\r\n</ng-container>","import { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n    selector: 'drive-toolbar',\n    templateUrl: './drive-toolbar.component.html',\n    styleUrls: ['./drive-toolbar.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DriveToolbarComponent {\n}\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./drive-toolbar.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"./entry-breadcrumbs/entry-breadcrumbs.component.ngfactory\";\nimport * as i3 from \"./entry-breadcrumbs/entry-breadcrumbs.component\";\nimport * as i4 from \"../drive-entry-api.service\";\nimport * as i5 from \"../../../common/core/translations/translations.service\";\nimport * as i6 from \"../../../common/core/ui/context-menu/context-menu.service\";\nimport * as i7 from \"@ngxs/store\";\nimport * as i8 from \"./drive-toolbar.component\";\nvar styles_DriveToolbarComponent = [i0.styles];\nvar RenderType_DriveToolbarComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_DriveToolbarComponent, data: {} });\nexport { RenderType_DriveToolbarComponent as RenderType_DriveToolbarComponent };\nexport function View_DriveToolbarComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"entry-breadcrumbs\", [], null, null, null, i2.View_EntryBreadcrumbsComponent_0, i2.RenderType_EntryBreadcrumbsComponent)), i1.ɵdid(1, 114688, null, 0, i3.EntryBreadcrumbsComponent, [i4.DriveEntryApiService, i5.Translations, i6.ContextMenu, i7.Store], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nexport function View_DriveToolbarComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"drive-toolbar\", [], null, null, null, View_DriveToolbarComponent_0, RenderType_DriveToolbarComponent)), i1.ɵdid(1, 49152, null, 0, i8.DriveToolbarComponent, [], null, null)], null, null); }\nvar DriveToolbarComponentNgFactory = i1.ɵccf(\"drive-toolbar\", i8.DriveToolbarComponent, View_DriveToolbarComponent_Host_0, {}, {}, []);\nexport { DriveToolbarComponentNgFactory as DriveToolbarComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"drive-toolbar{display:block;padding:14px 28px;width:100%;overflow:hidden}drive-toolbar entry-breadcrumbs{margin:0 -8px}\"];\nexport { styles as styles };\n","<entry-breadcrumbs></entry-breadcrumbs>","import { Store } from '@ngxs/store';\r\nimport { DriveState } from '../state/drive-state';\r\nimport { DriveContextAction } from './types/drive-context-action';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport abstract class DriveContextActions {\r\n    protected multipleEntriesSelected: boolean;\r\n    protected allStarred: boolean;\r\n    protected onlyFoldersSelected: boolean;\r\n\r\n    protected abstract actions: DriveContextAction[];\r\n\r\n    constructor(protected store: Store) {}\r\n\r\n    public getActions() {\r\n        this.updateStatus();\r\n        return this.actions;\r\n    }\r\n\r\n    protected getSelectedEntries() {\r\n        return this.store.selectSnapshot(DriveState.selectedEntries);\r\n    }\r\n\r\n    protected updateStatus() {\r\n        this.multipleEntriesSelected = this.store.selectSnapshot(DriveState.multipleEntriesSelected);\r\n        this.allStarred = this.store.selectSnapshot(DriveState.allSelectedEntriesStarred);\r\n        this.onlyFoldersSelected = this.store.selectSnapshot(DriveState.onlyFoldersSelected);\r\n    }\r\n}\r\n","import { Store } from '@ngxs/store';\nimport { DriveState } from '../state/drive-state';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ngxs/store\";\nvar DriveContextActions = /** @class */ (function () {\n    function DriveContextActions(store) {\n        this.store = store;\n    }\n    DriveContextActions.prototype.getActions = function () {\n        this.updateStatus();\n        return this.actions;\n    };\n    DriveContextActions.prototype.getSelectedEntries = function () {\n        return this.store.selectSnapshot(DriveState.selectedEntries);\n    };\n    DriveContextActions.prototype.updateStatus = function () {\n        this.multipleEntriesSelected = this.store.selectSnapshot(DriveState.multipleEntriesSelected);\n        this.allStarred = this.store.selectSnapshot(DriveState.allSelectedEntriesStarred);\n        this.onlyFoldersSelected = this.store.selectSnapshot(DriveState.onlyFoldersSelected);\n    };\n    DriveContextActions.ngInjectableDef = i0.defineInjectable({ factory: function DriveContextActions_Factory() { return new DriveContextActions(i0.inject(i1.Store)); }, token: DriveContextActions, providedIn: \"root\" });\n    return DriveContextActions;\n}());\nexport { DriveContextActions };\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { DeleteTrashedEntriesForever, OpenConfirmDialog, RestoreTrashedEntries, } from '../../state/actions/commands';\nimport { DriveContextActions } from '../drive-context-actions';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ngxs/store\";\nvar noopTrue = function () { return true; };\nvar ɵ0 = noopTrue;\nvar TrashActions = /** @class */ (function (_super) {\n    __extends(TrashActions, _super);\n    function TrashActions() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.actions = [\n            {\n                viewName: 'Restore',\n                icon: 'restore',\n                showInCompact: true,\n                execute: function () {\n                    _this.store.dispatch(new RestoreTrashedEntries());\n                },\n                visible: noopTrue,\n            },\n            {\n                viewName: 'Delete Forever',\n                icon: 'delete-forever',\n                showInCompact: true,\n                execute: function () {\n                    _this.deleteForever();\n                },\n                visible: noopTrue,\n            },\n        ];\n        return _this;\n    }\n    TrashActions.prototype.deleteForever = function () {\n        this.store.dispatch(new OpenConfirmDialog({\n            title: 'Delete Forever',\n            body: 'This will permanently delete selected items.',\n            bodyBold: 'This action can not be undone.',\n            ok: 'Delete Forever',\n        }, new DeleteTrashedEntriesForever()));\n    };\n    TrashActions.ngInjectableDef = i0.defineInjectable({ factory: function TrashActions_Factory() { return new TrashActions(i0.inject(i1.Store)); }, token: TrashActions, providedIn: \"root\" });\n    return TrashActions;\n}(DriveContextActions));\nexport { TrashActions };\nexport { ɵ0 };\n","import { DeleteTrashedEntriesForever, OpenConfirmDialog, RestoreTrashedEntries, } from '../../state/actions/commands';\r\nimport { Injectable } from '@angular/core';\r\nimport { DriveContextActions } from '../drive-context-actions';\r\n\r\nconst noopTrue = () => true;\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class TrashActions extends DriveContextActions {\r\n    protected actions = [\r\n        {\r\n            viewName: 'Restore',\r\n            icon: 'restore',\r\n            showInCompact: true,\r\n            execute: () => {\r\n                this.store.dispatch(new RestoreTrashedEntries());\r\n            },\r\n            visible: noopTrue,\r\n        },\r\n        {\r\n            viewName: 'Delete Forever',\r\n            icon: 'delete-forever',\r\n            showInCompact: true,\r\n            execute: () => {\r\n                this.deleteForever();\r\n            },\r\n            visible: noopTrue,\r\n        },\r\n    ];\r\n\r\n    public deleteForever() {\r\n        this.store.dispatch(new OpenConfirmDialog({\r\n            title: 'Delete Forever',\r\n            body: 'This will permanently delete selected items.',\r\n            bodyBold: 'This action can not be undone.',\r\n            ok: 'Delete Forever',\r\n        }, new DeleteTrashedEntriesForever()));\r\n    }\r\n}\r\n","import { OnDestroy } from '@angular/core';\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { MatDialogRef } from '@angular/material';\r\n\r\nexport class BaseDialog implements OnDestroy {\r\n    public loading = new BehaviorSubject(false);\r\n    protected subs: Subscription[] = [];\r\n    protected dialogRef: MatDialogRef<BaseDialog>;\r\n\r\n    ngOnDestroy() {\r\n        this.subs.forEach(sub => sub && sub.unsubscribe());\r\n    }\r\n\r\n    public close() {\r\n        this.dialogRef.close();\r\n    }\r\n\r\n    protected addSubs(...sub: Subscription[]) {\r\n        this.subs.push(...sub);\r\n    }\r\n}\r\n","import { BehaviorSubject } from 'rxjs';\nvar BaseDialog = /** @class */ (function () {\n    function BaseDialog() {\n        this.loading = new BehaviorSubject(false);\n        this.subs = [];\n    }\n    BaseDialog.prototype.ngOnDestroy = function () {\n        this.subs.forEach(function (sub) { return sub && sub.unsubscribe(); });\n    };\n    BaseDialog.prototype.close = function () {\n        this.dialogRef.close();\n    };\n    BaseDialog.prototype.addSubs = function () {\n        var sub = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            sub[_i] = arguments[_i];\n        }\n        var _a;\n        (_a = this.subs).push.apply(_a, sub);\n    };\n    return BaseDialog;\n}());\nexport { BaseDialog };\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, OnInit, OnDestroy, AfterViewInit } from '@angular/core';\nimport {  MatDialogRef } from '@angular/material';\nimport { Actions, ofActionDispatched, Select, Store } from '@ngxs/store';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport {\n    DeleteShareableLink,\n    LinkCopySuccess,\n    LoadShareableLink, ResetShareLinkState,\n    ShareLinkState,\n    ToggleOptionsPanel\n} from '../links/share-link.state';\nimport { Settings } from 'common/core/config/settings.service';\nimport { shareLinkSocially } from 'common/core/utils/shareLink';\nimport { ShareableLink } from '../links/models/shareable-link';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport copy from 'copy-to-clipboard';\nimport { BaseDialog } from 'common/core/ui/dialogs/base-dialog';\nimport { Toast } from 'common/core/ui/toast.service';\n\n@Component({\n    selector: 'share-link-dialog',\n    templateUrl: './share-link-dialog.component.html',\n    styleUrls: ['./share-link-dialog.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    animations: [\n        trigger('visibility', [\n            state('true', style({\n                height: '*',\n                padding: '*',\n                display: 'block',\n                overflow: '*',\n            })),\n            state('false', style({\n                height: '0',\n                padding: '0',\n                display: 'none',\n                overflow: 'hidden',\n            })),\n            transition('true <=> false', animate('225ms cubic-bezier(.4,0,.2,1)'))\n        ]),\n    ],\n})\nexport class ShareLinkDialogComponent extends BaseDialog implements AfterViewInit, OnInit, OnDestroy {\n    @Select(ShareLinkState.loading) loading$: Observable<boolean>;\n    @Select(ShareLinkState.link) link$: Observable<ShareableLink>;\n    @Select(ShareLinkState.optionsVisible) optionsVisible$: Observable<boolean>;\n    public shareableLink$ = new BehaviorSubject(null);\n\n    constructor(\n        protected store: Store,\n        protected toast: Toast,\n        protected actions$: Actions,\n        protected settings: Settings,\n        protected dialogRef: MatDialogRef<ShareLinkDialogComponent>,\n    ) {\n        super();\n    }\n\n    ngOnInit() {\n        this.store.dispatch(new LoadShareableLink());\n        this.bindToOptionsPanelToggle();\n    }\n\n    ngAfterViewInit() {\n        this.bindToLinkChange();\n    }\n\n    ngOnDestroy() {\n        this.store.dispatch(new ResetShareLinkState());\n    }\n\n    public toggleOptionsPanel() {\n        this.store.dispatch(new ToggleOptionsPanel());\n    }\n\n    public deleteLink() {\n        this.store.dispatch(new DeleteShareableLink()).subscribe(() => {\n            this.toast.open('Link deleted.');\n            this.dialogRef.close();\n        });\n    }\n\n    public copyLinkToClipboard() {\n        this.focusInput();\n        const success = copy(this.shareableLink$.value);\n\n        if (success) {\n            this.store.dispatch(new LinkCopySuccess());\n        }\n    }\n\n    private bindToLinkChange() {\n        this.link$.subscribe(link => {\n            if ( ! link) return;\n            this.shareableLink$.next(this.settings.getBaseUrl() + 'drive/s/' + link.hash);\n            setTimeout(() => this.focusInput());\n        });\n    }\n\n    private bindToOptionsPanelToggle() {\n        const sub = this.actions$.pipe(ofActionDispatched(ToggleOptionsPanel))\n            .subscribe(() => {\n                // close dialog if user canceled link creation\n                if ( ! this.store.selectSnapshot(ShareLinkState.optionsVisible) && ! this.shareableLink$.value) {\n                    this.close();\n                }\n            });\n\n        this.addSubs(sub);\n    }\n\n    public shareLink(network: string) {\n        shareLinkSocially(network, this.shareableLink$.value);\n    }\n\n    public focusInput() {\n        const input = document.getElementById('link-input') as HTMLInputElement;\n        input.focus();\n        input.select();\n    }\n}\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { OnInit, OnDestroy, AfterViewInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material';\nimport { Actions, ofActionDispatched, Select, Store } from '@ngxs/store';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { DeleteShareableLink, LinkCopySuccess, LoadShareableLink, ResetShareLinkState, ShareLinkState, ToggleOptionsPanel } from '../links/share-link.state';\nimport { Settings } from 'common/core/config/settings.service';\nimport { shareLinkSocially } from 'common/core/utils/shareLink';\nimport copy from 'copy-to-clipboard';\nimport { BaseDialog } from 'common/core/ui/dialogs/base-dialog';\nimport { Toast } from 'common/core/ui/toast.service';\nvar ShareLinkDialogComponent = /** @class */ (function (_super) {\n    __extends(ShareLinkDialogComponent, _super);\n    function ShareLinkDialogComponent(store, toast, actions$, settings, dialogRef) {\n        var _this = _super.call(this) || this;\n        _this.store = store;\n        _this.toast = toast;\n        _this.actions$ = actions$;\n        _this.settings = settings;\n        _this.dialogRef = dialogRef;\n        _this.shareableLink$ = new BehaviorSubject(null);\n        return _this;\n    }\n    ShareLinkDialogComponent.prototype.ngOnInit = function () {\n        this.store.dispatch(new LoadShareableLink());\n        this.bindToOptionsPanelToggle();\n    };\n    ShareLinkDialogComponent.prototype.ngAfterViewInit = function () {\n        this.bindToLinkChange();\n    };\n    ShareLinkDialogComponent.prototype.ngOnDestroy = function () {\n        this.store.dispatch(new ResetShareLinkState());\n    };\n    ShareLinkDialogComponent.prototype.toggleOptionsPanel = function () {\n        this.store.dispatch(new ToggleOptionsPanel());\n    };\n    ShareLinkDialogComponent.prototype.deleteLink = function () {\n        var _this = this;\n        this.store.dispatch(new DeleteShareableLink()).subscribe(function () {\n            _this.toast.open('Link deleted.');\n            _this.dialogRef.close();\n        });\n    };\n    ShareLinkDialogComponent.prototype.copyLinkToClipboard = function () {\n        this.focusInput();\n        var success = copy(this.shareableLink$.value);\n        if (success) {\n            this.store.dispatch(new LinkCopySuccess());\n        }\n    };\n    ShareLinkDialogComponent.prototype.bindToLinkChange = function () {\n        var _this = this;\n        this.link$.subscribe(function (link) {\n            if (!link)\n                return;\n            _this.shareableLink$.next(_this.settings.getBaseUrl() + 'drive/s/' + link.hash);\n            setTimeout(function () { return _this.focusInput(); });\n        });\n    };\n    ShareLinkDialogComponent.prototype.bindToOptionsPanelToggle = function () {\n        var _this = this;\n        var sub = this.actions$.pipe(ofActionDispatched(ToggleOptionsPanel))\n            .subscribe(function () {\n            // close dialog if user canceled link creation\n            if (!_this.store.selectSnapshot(ShareLinkState.optionsVisible) && !_this.shareableLink$.value) {\n                _this.close();\n            }\n        });\n        this.addSubs(sub);\n    };\n    ShareLinkDialogComponent.prototype.shareLink = function (network) {\n        shareLinkSocially(network, this.shareableLink$.value);\n    };\n    ShareLinkDialogComponent.prototype.focusInput = function () {\n        var input = document.getElementById('link-input');\n        input.focus();\n        input.select();\n    };\n    __decorate([\n        Select(ShareLinkState.loading),\n        __metadata(\"design:type\", Observable)\n    ], ShareLinkDialogComponent.prototype, \"loading$\", void 0);\n    __decorate([\n        Select(ShareLinkState.link),\n        __metadata(\"design:type\", Observable)\n    ], ShareLinkDialogComponent.prototype, \"link$\", void 0);\n    __decorate([\n        Select(ShareLinkState.optionsVisible),\n        __metadata(\"design:type\", Observable)\n    ], ShareLinkDialogComponent.prototype, \"optionsVisible$\", void 0);\n    return ShareLinkDialogComponent;\n}(BaseDialog));\nexport { ShareLinkDialogComponent };\n","export function shareLinkSocially(network: string, link: string, name?: string, image?: string) {\r\n    const width  = 575,\r\n        height = 400,\r\n        left   = (window.innerWidth  - width)  / 2,\r\n        top    = (window.innerHeight - height) / 2,\r\n        url    = generateSocialShareUrl(network, link, name, image),\r\n        opts   = 'status=1, scrollbars=1' + ',width=' + width + ',height=' + height + ',top=' + top + ',left=' + left;\r\n\r\n    window.open(url, 'share', opts);\r\n}\r\n\r\nfunction generateSocialShareUrl(type: string, link: string, name?: string, image?: string) {\r\n    switch (type) {\r\n        case 'facebook':\r\n            return 'https://www.facebook.com/sharer/sharer.php?u=' + link ;\r\n        case 'twitter':\r\n            return 'https://twitter.com/intent/tweet?text=' + link ;\r\n        case 'google-plus':\r\n            return 'https://plus.google.com/share?url=' + link ;\r\n        case 'pinterest':\r\n            return 'https://pinterest.com/pin/create/button/?url=' + link + '&media=' + image;\r\n        case 'tumblr':\r\n            const base = 'https://www.tumblr.com/widgets/share/tool?shareSource=legacy&canonicalUrl=&posttype=photo&title=&caption=';\r\n            return base + this.mediaItem.name + '&content=' + image + '&url=' + link ;\r\n        case 'blogger':\r\n            return 'https://www.blogger.com/blog_this.pyra?t&u=' + link + '&n=' + name;\r\n    }\r\n}\r\n","export interface DriveEntryPermissions {\r\n    edit?: boolean;\r\n    view?: boolean;\r\n    download?: boolean;\r\n}\r\n\r\nexport const DRIVE_ENTRY_FULL_PERMISSIONS = {\r\n    edit: true,\r\n    view: true,\r\n    download: true,\r\n};\r\n","var __assign = (this && this.__assign) || Object.assign || function(t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n        s = arguments[i];\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n            t[p] = s[p];\n    }\n    return t;\n};\nimport { AppHttpClient } from 'common/core/http/app-http-client.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../../common/core/http/app-http-client.service\";\nvar SharesApiService = /** @class */ (function () {\n    function SharesApiService(http) {\n        this.http = http;\n    }\n    /**\n     * Update users and permissions on specified entries.\n     */\n    SharesApiService.prototype.updateUsers = function (params) {\n        return this.http.put('drive/shares/update-users', params);\n    };\n    /**\n     * Attach specified users to entries.\n     */\n    SharesApiService.prototype.shareEntries = function (params) {\n        return this.http.post('drive/shares/add-users', __assign({}, params, { entries: params.entries.map(function (entry) { return entry.id; }) }));\n    };\n    /**\n     * Detach specified user from entries.\n     */\n    SharesApiService.prototype.detachUser = function (userId, entryIds) {\n        return this.http.delete('drive/shares/remove-user/' + userId, { entries: entryIds });\n    };\n    SharesApiService.ngInjectableDef = i0.defineInjectable({ factory: function SharesApiService_Factory() { return new SharesApiService(i0.inject(i1.AppHttpClient)); }, token: SharesApiService, providedIn: \"root\" });\n    return SharesApiService;\n}());\nexport { SharesApiService };\n","import { Injectable } from '@angular/core';\nimport { AppHttpClient } from 'common/core/http/app-http-client.service';\nimport { DriveEntryUser } from '../files/models/drive-entry';\nimport { DriveEntryPermissions } from '../permissions/drive-entry-permissions';\nimport { BackendResponse } from 'common/core/types/backend-response';\nimport { FileEntry } from 'common/uploads/file-entry';\n\ninterface UserChangeParams {\n    users: {id: number, permissions: DriveEntryPermissions}[];\n    entries: number[];\n}\n\nexport interface DriveEntryApiParams {\n    entries: FileEntry[];\n    emails: string[];\n    permissions: DriveEntryPermissions;\n}\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class SharesApiService {\n    constructor(private http: AppHttpClient) {}\n\n    /**\n     * Update users and permissions on specified entries.\n     */\n    public updateUsers(params: UserChangeParams): BackendResponse<{users: DriveEntryUser[]}> {\n        return this.http.put('drive/shares/update-users', params);\n    }\n\n    /**\n     * Attach specified users to entries.\n     */\n    public shareEntries(params: DriveEntryApiParams): BackendResponse<{users: DriveEntryUser[]}> {\n        return this.http.post('drive/shares/add-users', {\n            ...params,\n            entries: params.entries.map(entry => entry.id)\n        });\n    }\n\n    /**\n     * Detach specified user from entries.\n     */\n    public detachUser(userId: number, entryIds: number[]): BackendResponse<void> {\n        return this.http.delete('drive/shares/remove-user/' + userId, {entries: entryIds});\n    }\n}\n","var __assign = (this && this.__assign) || Object.assign || function(t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n        s = arguments[i];\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n            t[p] = s[p];\n    }\n    return t;\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { Action, Selector, State, Store } from '@ngxs/store';\nimport { DriveState } from '../../state/drive-state';\nimport { finalize, tap } from 'rxjs/operators';\nimport { SharesApiService } from '../shares-api.service';\nimport isEqual from 'lodash/isEqual';\nimport cloneDeep from 'lodash/cloneDeep';\nimport uniqBy from 'lodash/uniqBy';\nimport { UpdateEntries } from '../../state/actions/commands';\nvar SetInitialUsers = /** @class */ (function () {\n    function SetInitialUsers() {\n    }\n    SetInitialUsers.type = '[ShareDialog] Set Initial Users';\n    return SetInitialUsers;\n}());\nexport { SetInitialUsers };\nvar UpdateUserPermissions = /** @class */ (function () {\n    function UpdateUserPermissions(user, permissions) {\n        this.user = user;\n        this.permissions = permissions;\n    }\n    UpdateUserPermissions.type = '[ShareDialog] Update User Permissions';\n    return UpdateUserPermissions;\n}());\nexport { UpdateUserPermissions };\nvar RemoveUser = /** @class */ (function () {\n    function RemoveUser(user) {\n        this.user = user;\n    }\n    RemoveUser.type = '[ShareDialog] Remove User';\n    return RemoveUser;\n}());\nexport { RemoveUser };\nvar SetUsers = /** @class */ (function () {\n    function SetUsers(users) {\n        this.users = users;\n    }\n    SetUsers.type = '[ShareDialog] Set Users';\n    return SetUsers;\n}());\nexport { SetUsers };\nvar SaveChanges = /** @class */ (function () {\n    function SaveChanges() {\n    }\n    SaveChanges.type = '[ShareDialog] Save Changes';\n    return SaveChanges;\n}());\nexport { SaveChanges };\nvar ResetState = /** @class */ (function () {\n    function ResetState() {\n    }\n    ResetState.type = '[ShareDialog] Reset';\n    return ResetState;\n}());\nexport { ResetState };\nvar ShareEntries = /** @class */ (function () {\n    function ShareEntries(payload) {\n        this.payload = payload;\n    }\n    ShareEntries.type = '[ShareDialog] Share Entries';\n    return ShareEntries;\n}());\nexport { ShareEntries };\nvar ShareEntriesFailed = /** @class */ (function () {\n    function ShareEntriesFailed(messages) {\n        this.messages = messages;\n    }\n    ShareEntriesFailed.type = '[ShareDialog] Share Entries Failed';\n    return ShareEntriesFailed;\n}());\nexport { ShareEntriesFailed };\nvar ShareDialogState = /** @class */ (function () {\n    function ShareDialogState(store, sharesApi) {\n        this.store = store;\n        this.sharesApi = sharesApi;\n    }\n    ShareDialogState.usersWithAccess = function (state) {\n        return state.usersWithAccess;\n    };\n    ShareDialogState.dirty = function (state) {\n        return !isEqual(state.original, state.usersWithAccess);\n    };\n    ShareDialogState.loading = function (state) {\n        return state.loading;\n    };\n    ShareDialogState.prototype.setInitialUsers = function (ctx) {\n        var entries = this.store.selectSnapshot(DriveState.selectedEntries);\n        var users = entries\n            .map(function (entry) { return entry.users; })\n            .reduce(function (all, curr) { return all.concat(curr); }, []);\n        // make sure we don't override anything in main drive store\n        users = cloneDeep(users);\n        users = users.filter(function (user) { return !!user; });\n        // multiple entries might contain same users\n        var uniqueUsers = uniqBy(users, function (user) { return user.id; });\n        // if permissions for same user are not same on\n        // all selected entries, show \"varies\" permission\n        if (entries.length > 1) {\n            uniqueUsers.forEach(function (user) {\n                var permissions = entries\n                    .map(function (entry) { return entry.users.find(function (u) { return u.id === user.id; }); })\n                    .filter(function (u) { return !!u; })\n                    .map(function (u) { return Object.assign({}, u.entry_permissions); });\n                if (entries.length !== permissions.length || permissions.some(function (p) { return !isEqual(p, permissions[0]); })) {\n                    user.entry_permissions = { varies: true };\n                }\n            });\n        }\n        ctx.patchState({\n            usersWithAccess: cloneDeep(uniqueUsers),\n            original: uniqueUsers,\n        });\n    };\n    ShareDialogState.prototype.setUsers = function (ctx, action) {\n        ctx.patchState({\n            usersWithAccess: action.users,\n            original: cloneDeep(action.users)\n        });\n    };\n    ShareDialogState.prototype.updateUserPermissions = function (ctx, action) {\n        var users = ctx.getState().usersWithAccess;\n        // update user permissions\n        users.find(function (curr) { return curr.id === action.user.id; }).entry_permissions = action.permissions;\n        ctx.patchState({ usersWithAccess: users });\n    };\n    ShareDialogState.prototype.removeUser = function (ctx, action) {\n        var users = ctx.getState().usersWithAccess;\n        // mark user as \"removed\"\n        users.find(function (curr) { return curr.id === action.user.id; }).removed = true;\n        ctx.patchState({ usersWithAccess: users });\n    };\n    ShareDialogState.prototype.resetState = function (ctx) {\n        ctx.setState({\n            loading: false,\n            usersWithAccess: [],\n            original: [],\n        });\n    };\n    ShareDialogState.prototype.saveChanges = function (ctx) {\n        var _this = this;\n        ctx.patchState({ loading: true });\n        var state = ctx.getState();\n        var entries = this.store.selectSnapshot(DriveState.selectedEntries);\n        var users = state.usersWithAccess\n            // filter out entry owner\n            .filter(function (user) { return !user.owns_entry; })\n            // filter out users if they do not have same permissions for\n            // all selected entries (except for users that are being removed)\n            .filter(function (user) { return !user.entry_permissions.varies || user.removed; })\n            .map(function (user) {\n            return { id: user.id, removed: user.removed, permissions: user.entry_permissions };\n        });\n        return this.sharesApi.updateUsers({ entries: entries.map(function (e) { return e.id; }), users: users }).pipe(finalize(function () { return ctx.patchState({ loading: false }); }), tap(function (response) {\n            var newUsers = response.users;\n            // update permissions in share dialog store\n            ctx.patchState({\n                usersWithAccess: newUsers,\n                original: cloneDeep(newUsers),\n            });\n            _this.updateEntriesInDriveStore(newUsers);\n        }));\n    };\n    ShareDialogState.prototype.shareEntries = function (ctx, action) {\n        var _this = this;\n        ctx.patchState({ loading: true });\n        var payload = __assign({}, action.payload, { entries: this.store.selectSnapshot(DriveState.selectedEntries) });\n        return this.sharesApi.shareEntries(payload)\n            .pipe(finalize(function () { return ctx.patchState({ loading: false }); }), tap(function (response) {\n            ctx.dispatch(new SetUsers(response.users));\n            _this.updateEntriesInDriveStore(response.users);\n        }, function (errorResponse) {\n            ctx.dispatch(new ShareEntriesFailed(errorResponse.messages));\n        }));\n    };\n    ShareDialogState.prototype.updateEntriesInDriveStore = function (newUsers) {\n        var entries = this.store.selectSnapshot(DriveState.selectedEntries);\n        // update permissions in main drive store, otherwise we'll get old\n        // permissions if user re-opens share dialog without page reload\n        var updatedEntries = entries.map(function (entry) {\n            entry.users = newUsers;\n            return entry;\n        });\n        this.store.dispatch(new UpdateEntries(updatedEntries));\n    };\n    __decorate([\n        Action(SetInitialUsers),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], ShareDialogState.prototype, \"setInitialUsers\", null);\n    __decorate([\n        Action(SetUsers),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, SetUsers]),\n        __metadata(\"design:returntype\", void 0)\n    ], ShareDialogState.prototype, \"setUsers\", null);\n    __decorate([\n        Action(UpdateUserPermissions),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, UpdateUserPermissions]),\n        __metadata(\"design:returntype\", void 0)\n    ], ShareDialogState.prototype, \"updateUserPermissions\", null);\n    __decorate([\n        Action(RemoveUser),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, UpdateUserPermissions]),\n        __metadata(\"design:returntype\", void 0)\n    ], ShareDialogState.prototype, \"removeUser\", null);\n    __decorate([\n        Action(ResetState),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], ShareDialogState.prototype, \"resetState\", null);\n    __decorate([\n        Action(SaveChanges, { cancelUncompleted: true }),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], ShareDialogState.prototype, \"saveChanges\", null);\n    __decorate([\n        Action(ShareEntries, { cancelUncompleted: true }),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, ShareEntries]),\n        __metadata(\"design:returntype\", void 0)\n    ], ShareDialogState.prototype, \"shareEntries\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], ShareDialogState, \"usersWithAccess\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], ShareDialogState, \"dirty\", null);\n    __decorate([\n        Selector(),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object]),\n        __metadata(\"design:returntype\", void 0)\n    ], ShareDialogState, \"loading\", null);\n    ShareDialogState = __decorate([\n        State({\n            name: 'shareDialog',\n            defaults: {\n                usersWithAccess: [],\n                original: [],\n                loading: false,\n            }\n        }),\n        __metadata(\"design:paramtypes\", [Store,\n            SharesApiService])\n    ], ShareDialogState);\n    return ShareDialogState;\n}());\nexport { ShareDialogState };\n","import { Action, Selector, State, StateContext, Store } from '@ngxs/store';\r\nimport { DriveState } from '../../state/drive-state';\r\nimport { DriveEntryUser } from '../../files/models/drive-entry';\r\nimport { DriveEntryPermissions } from '../../permissions/drive-entry-permissions';\r\nimport { finalize, tap } from 'rxjs/operators';\r\nimport { SharesApiService } from '../shares-api.service';\r\nimport isEqual from 'lodash/isEqual';\r\nimport cloneDeep from 'lodash/cloneDeep';\r\nimport uniqBy from 'lodash/uniqBy';\r\nimport { BackendErrorMessages } from 'common/core/types/backend-error-response';\r\nimport { ShareDialogEntryPermissions } from '../share-dialog/types/ShareDialogEntryPermissions';\r\nimport { UpdateEntries } from '../../state/actions/commands';\r\n\r\nexport class SetInitialUsers {\r\n    static readonly type = '[ShareDialog] Set Initial Users';\r\n}\r\n\r\nexport class UpdateUserPermissions {\r\n    static readonly type = '[ShareDialog] Update User Permissions';\r\n    constructor(public user: DriveEntryUser, public permissions: DriveEntryPermissions) {}\r\n}\r\n\r\nexport class RemoveUser {\r\n    static readonly type = '[ShareDialog] Remove User';\r\n    constructor(public user: DriveEntryUser) {}\r\n}\r\n\r\nexport class SetUsers {\r\n    static readonly type = '[ShareDialog] Set Users';\r\n    constructor(public users: DriveEntryUser[]) {}\r\n}\r\n\r\nexport class SaveChanges {\r\n    static readonly type = '[ShareDialog] Save Changes';\r\n}\r\n\r\nexport class ResetState {\r\n    static readonly type = '[ShareDialog] Reset';\r\n}\r\n\r\nexport class ShareEntries {\r\n    static readonly type = '[ShareDialog] Share Entries';\r\n    constructor(public payload: {emails: string[], permissions: DriveEntryPermissions}) {}\r\n}\r\n\r\nexport class ShareEntriesFailed {\r\n    static readonly type = '[ShareDialog] Share Entries Failed';\r\n    constructor(public messages: BackendErrorMessages) {}\r\n}\r\n\r\nexport interface ShareDialogEntryUser extends DriveEntryUser {\r\n    removed?: boolean;\r\n    entry_permissions: ShareDialogEntryPermissions;\r\n}\r\n\r\nexport interface ShareDialogStateModel {\r\n    loading: boolean;\r\n    original: ShareDialogEntryUser[];\r\n    usersWithAccess: ShareDialogEntryUser[];\r\n}\r\n\r\n@State<ShareDialogStateModel>({\r\n    name: 'shareDialog',\r\n    defaults: {\r\n        usersWithAccess: [],\r\n        original: [],\r\n        loading: false,\r\n    }\r\n})\r\nexport class ShareDialogState {\r\n    constructor(\r\n        private store: Store,\r\n        private sharesApi: SharesApiService\r\n    ) {}\r\n\r\n    @Selector()\r\n    static usersWithAccess(state: ShareDialogStateModel) {\r\n        return state.usersWithAccess;\r\n    }\r\n\r\n    @Selector()\r\n    static dirty(state: ShareDialogStateModel) {\r\n        return !isEqual(state.original, state.usersWithAccess);\r\n    }\r\n\r\n    @Selector()\r\n    static loading(state: ShareDialogStateModel) {\r\n        return state.loading;\r\n    }\r\n\r\n    @Action(SetInitialUsers)\r\n    setInitialUsers(ctx: StateContext<ShareDialogStateModel>) {\r\n        const entries = this.store.selectSnapshot(DriveState.selectedEntries);\r\n\r\n        let users = entries\r\n            .map(entry => entry.users)\r\n            .reduce((all, curr) => all.concat(curr), []);\r\n\r\n        // make sure we don't override anything in main drive store\r\n        users = cloneDeep(users);\r\n        users = users.filter(user => !!user);\r\n\r\n        // multiple entries might contain same users\r\n        const uniqueUsers = uniqBy(users, user => user.id) as ShareDialogEntryUser[];\r\n\r\n        // if permissions for same user are not same on\r\n        // all selected entries, show \"varies\" permission\r\n        if (entries.length > 1) {\r\n            uniqueUsers.forEach(user => {\r\n                const permissions = entries\r\n                    .map(entry => entry.users.find(u => u.id === user.id))\r\n                    .filter(u => !!u)\r\n                    .map(u => Object.assign({}, u.entry_permissions));\r\n\r\n                if (entries.length !== permissions.length || permissions.some(p => !isEqual(p, permissions[0]))) {\r\n                    user.entry_permissions = {varies: true};\r\n                }\r\n            });\r\n        }\r\n\r\n        ctx.patchState({\r\n            usersWithAccess: cloneDeep(uniqueUsers),\r\n            original: uniqueUsers,\r\n        });\r\n    }\r\n\r\n    @Action(SetUsers)\r\n    setUsers(ctx: StateContext<ShareDialogStateModel>, action: SetUsers) {\r\n        ctx.patchState({\r\n            usersWithAccess: action.users,\r\n            original: cloneDeep(action.users)\r\n        });\r\n    }\r\n\r\n    @Action(UpdateUserPermissions)\r\n    updateUserPermissions(ctx: StateContext<ShareDialogStateModel>, action: UpdateUserPermissions) {\r\n        const users = ctx.getState().usersWithAccess;\r\n\r\n        // update user permissions\r\n        users.find(curr => curr.id === action.user.id).entry_permissions = action.permissions;\r\n\r\n        ctx.patchState({usersWithAccess: users});\r\n    }\r\n\r\n    @Action(RemoveUser)\r\n    removeUser(ctx: StateContext<ShareDialogStateModel>, action: UpdateUserPermissions) {\r\n        const users = ctx.getState().usersWithAccess;\r\n\r\n        // mark user as \"removed\"\r\n        users.find(curr => curr.id === action.user.id).removed = true;\r\n\r\n        ctx.patchState({usersWithAccess: users});\r\n    }\r\n\r\n    @Action(ResetState)\r\n    resetState(ctx: StateContext<ShareDialogStateModel>) {\r\n       ctx.setState({\r\n           loading: false,\r\n           usersWithAccess: [],\r\n           original: [],\r\n       });\r\n    }\r\n\r\n    @Action(SaveChanges, {cancelUncompleted: true})\r\n    saveChanges(ctx: StateContext<ShareDialogStateModel>) {\r\n        ctx.patchState({loading: true});\r\n\r\n        const state = ctx.getState();\r\n        const entries = this.store.selectSnapshot(DriveState.selectedEntries);\r\n\r\n        const users = state.usersWithAccess\r\n            // filter out entry owner\r\n            .filter(user => !user.owns_entry)\r\n            // filter out users if they do not have same permissions for\r\n            // all selected entries (except for users that are being removed)\r\n            .filter(user => !user.entry_permissions.varies || user.removed)\r\n            .map(user => {\r\n                return {id: user.id, removed: user.removed, permissions: user.entry_permissions};\r\n            });\r\n\r\n        return this.sharesApi.updateUsers({entries: entries.map(e => e.id), users}).pipe(\r\n            finalize(() => ctx.patchState({loading: false})),\r\n            tap(response => {\r\n                const newUsers = response.users;\r\n\r\n                // update permissions in share dialog store\r\n                ctx.patchState({\r\n                    usersWithAccess: newUsers,\r\n                    original: cloneDeep(newUsers),\r\n                });\r\n\r\n                this.updateEntriesInDriveStore(newUsers);\r\n            }\r\n        ));\r\n    }\r\n\r\n    @Action(ShareEntries, {cancelUncompleted: true})\r\n    shareEntries(ctx: StateContext<ShareDialogStateModel>, action: ShareEntries) {\r\n        ctx.patchState({loading: true});\r\n\r\n        const payload = {\r\n            ...action.payload,\r\n            entries: this.store.selectSnapshot(DriveState.selectedEntries)\r\n        };\r\n\r\n        return this.sharesApi.shareEntries(payload)\r\n            .pipe(\r\n                finalize(() => ctx.patchState({loading: false})),\r\n                tap(response => {\r\n                    ctx.dispatch(new SetUsers(response.users));\r\n                    this.updateEntriesInDriveStore(response.users);\r\n                }, errorResponse => {\r\n                    ctx.dispatch(new ShareEntriesFailed(errorResponse.messages));\r\n                })\r\n            );\r\n    }\r\n\r\n    private updateEntriesInDriveStore(newUsers: DriveEntryUser[]) {\r\n        const entries = this.store.selectSnapshot(DriveState.selectedEntries);\r\n\r\n        // update permissions in main drive store, otherwise we'll get old\r\n        // permissions if user re-opens share dialog without page reload\r\n        const updatedEntries = entries.map(entry => {\r\n            entry.users = newUsers;\r\n            return entry;\r\n        });\r\n\r\n        this.store.dispatch(new UpdateEntries(updatedEntries));\r\n    }\r\n}\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, OnDestroy } from '@angular/core';\nimport { MatDialogRef } from '@angular/material';\nimport { Actions, ofActionDispatched, Select, Store } from '@ngxs/store';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { DRIVE_ENTRY_FULL_PERMISSIONS, DriveEntryPermissions } from '../../permissions/drive-entry-permissions';\nimport { ResetState, SetInitialUsers, ShareDialogState, ShareEntries, ShareEntriesFailed } from '../state/share-dialog.state';\nimport { FormControl } from '@angular/forms';\nimport { BackendErrorMessages } from 'common/core/types/backend-error-response';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n    selector: 'share-dialog',\n    templateUrl: './share-dialog.component.html',\n    styleUrls: ['./share-dialog.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ShareDialogComponent implements OnDestroy {\n    @Select(ShareDialogState.loading) loading$: Observable<boolean>;\n\n    private destroyed$ = new Subject();\n    public errors: BehaviorSubject<BackendErrorMessages> = new BehaviorSubject({});\n    public shareModel: { emails: FormControl, permissions: DriveEntryPermissions, };\n\n    constructor(\n        public dialogRef: MatDialogRef<ShareDialogComponent>,\n        private store: Store,\n        private actions$: Actions\n    ) {\n        this.resetModel();\n        this.store.dispatch(new SetInitialUsers());\n\n        this.bindToShareError();\n        this.bindToShareModel();\n    }\n\n    ngOnDestroy() {\n        this.store.dispatch(new ResetState());\n        this.destroyed$.next();\n        this.destroyed$.complete();\n    }\n\n    public share() {\n        const payload = {\n            emails: this.shareModel.emails.value,\n            permissions: this.shareModel.permissions,\n        };\n\n        this.store.dispatch(new ShareEntries(payload)).subscribe(() => {\n            this.setErrorMessages();\n            this.resetModel();\n        });\n    }\n\n    private resetModel() {\n        this.shareModel = {\n            emails: new FormControl([]),\n            permissions: DRIVE_ENTRY_FULL_PERMISSIONS\n        };\n    }\n\n    private setErrorMessages(messages?: BackendErrorMessages) {\n        this.errors.next(messages || {});\n    }\n\n    private bindToShareModel() {\n        this.shareModel.emails.valueChanges\n            .pipe(takeUntil(this.destroyed$))\n            .subscribe(() => this.setErrorMessages());\n    }\n\n    private bindToShareError() {\n        this.actions$.pipe(\n            takeUntil(this.destroyed$),\n            ofActionDispatched(ShareEntriesFailed)\n        ).subscribe((action: ShareEntriesFailed) => {\n            this.setErrorMessages(action.messages);\n        });\n    }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { OnDestroy } from '@angular/core';\nimport { MatDialogRef } from '@angular/material';\nimport { Actions, ofActionDispatched, Select, Store } from '@ngxs/store';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { DRIVE_ENTRY_FULL_PERMISSIONS } from '../../permissions/drive-entry-permissions';\nimport { ResetState, SetInitialUsers, ShareDialogState, ShareEntries, ShareEntriesFailed } from '../state/share-dialog.state';\nimport { FormControl } from '@angular/forms';\nimport { takeUntil } from 'rxjs/operators';\nvar ShareDialogComponent = /** @class */ (function () {\n    function ShareDialogComponent(dialogRef, store, actions$) {\n        this.dialogRef = dialogRef;\n        this.store = store;\n        this.actions$ = actions$;\n        this.destroyed$ = new Subject();\n        this.errors = new BehaviorSubject({});\n        this.resetModel();\n        this.store.dispatch(new SetInitialUsers());\n        this.bindToShareError();\n        this.bindToShareModel();\n    }\n    ShareDialogComponent.prototype.ngOnDestroy = function () {\n        this.store.dispatch(new ResetState());\n        this.destroyed$.next();\n        this.destroyed$.complete();\n    };\n    ShareDialogComponent.prototype.share = function () {\n        var _this = this;\n        var payload = {\n            emails: this.shareModel.emails.value,\n            permissions: this.shareModel.permissions,\n        };\n        this.store.dispatch(new ShareEntries(payload)).subscribe(function () {\n            _this.setErrorMessages();\n            _this.resetModel();\n        });\n    };\n    ShareDialogComponent.prototype.resetModel = function () {\n        this.shareModel = {\n            emails: new FormControl([]),\n            permissions: DRIVE_ENTRY_FULL_PERMISSIONS\n        };\n    };\n    ShareDialogComponent.prototype.setErrorMessages = function (messages) {\n        this.errors.next(messages || {});\n    };\n    ShareDialogComponent.prototype.bindToShareModel = function () {\n        var _this = this;\n        this.shareModel.emails.valueChanges\n            .pipe(takeUntil(this.destroyed$))\n            .subscribe(function () { return _this.setErrorMessages(); });\n    };\n    ShareDialogComponent.prototype.bindToShareError = function () {\n        var _this = this;\n        this.actions$.pipe(takeUntil(this.destroyed$), ofActionDispatched(ShareEntriesFailed)).subscribe(function (action) {\n            _this.setErrorMessages(action.messages);\n        });\n    };\n    __decorate([\n        Select(ShareDialogState.loading),\n        __metadata(\"design:type\", Observable)\n    ], ShareDialogComponent.prototype, \"loading$\", void 0);\n    return ShareDialogComponent;\n}());\nexport { ShareDialogComponent };\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, ChangeDetectorRef, OnInit } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { FormControl } from '@angular/forms';\nimport { BackendErrorResponse } from 'common/core/types/backend-error-response';\nimport { DriveState} from '../../state/drive-state';\nimport { Store } from '@ngxs/store';\nimport { MatDialogRef } from '@angular/material';\nimport { finalize } from 'rxjs/operators';\nimport { Toast } from 'common/core/ui/toast.service';\nimport { DriveEntry } from '../../files/models/drive-entry';\nimport { DriveEntryApiService } from '../../drive-entry-api.service';\nimport { EntryRenamed } from '../../state/actions/events';\n\nexport interface RenameEntryDialogErrors {\n    name?: string;\n}\n\n@Component({\n    selector: 'rename-entry-dialog',\n    templateUrl: './rename-entry-dialog.component.html',\n    styleUrls: ['./rename-entry-dialog.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class RenameEntryDialogComponent implements OnInit {\n    public entryName = new FormControl();\n    public loading = new BehaviorSubject(false);\n    public errors: RenameEntryDialogErrors = {};\n    public entry: DriveEntry;\n\n    constructor(\n        private dialogRef: MatDialogRef<RenameEntryDialogComponent>,\n        private store: Store,\n        private toast: Toast,\n        private entriesApi: DriveEntryApiService,\n        private changeDetection: ChangeDetectorRef,\n    ) {}\n\n    ngOnInit() {\n        this.entry = this.store.selectSnapshot(DriveState.selectedEntries)[0];\n        this.entryName.setValue(this.entry.name);\n    }\n\n    public confirm() {\n        const newName = this.entryName.value;\n\n        // entry name was not changed\n        if (newName === this.entry.name) {\n            return this.close();\n        }\n\n        this.loading.next(true);\n\n        return this.entriesApi.rename(this.entry.id, {name: newName})\n            .pipe(finalize(() => this.loading.next(false)))\n            .subscribe(() => {\n                this.setErrors();\n                this.store.dispatch(new EntryRenamed(this.entry, newName));\n                this.close();\n            }, response => this.setErrors(response));\n    }\n\n    public setErrors(response?: BackendErrorResponse<RenameEntryDialogErrors>) {\n        this.loading.next(false);\n        this.errors = response ? response.messages : {};\n        this.changeDetection.detectChanges();\n    }\n\n    public close() {\n        this.dialogRef.close();\n    }\n}\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { CopySelectedEntries, DeleteSelectedEntries, DownloadEntries, OpenDialog, OpenFilePreview, RemoveEntries, } from '../../state/actions/commands';\nimport { DriveContextActions } from '../drive-context-actions';\nimport { ShareLinkDialogComponent } from '../../sharing/share-link-dialog/share-link-dialog.component';\nimport { Store } from '@ngxs/store';\nimport { CurrentUser } from 'common/auth/current-user';\nimport { SharesApiService } from '../../sharing/shares-api.service';\nimport { ShareDialogComponent } from '../../sharing/share-dialog/share-dialog.component';\nimport { RenameEntryDialogComponent } from '../../entries/rename-entry-dialog/rename-entry-dialog.component';\nimport { DriveState } from '../../state/drive-state';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ngxs/store\";\nimport * as i2 from \"../../../../common/auth/current-user\";\nimport * as i3 from \"../../sharing/shares-api.service\";\nvar noopTrue = function () { return true; };\nvar ɵ0 = noopTrue;\nvar SharesActions = /** @class */ (function (_super) {\n    __extends(SharesActions, _super);\n    function SharesActions(store, currentUser, shares) {\n        var _this = _super.call(this, store) || this;\n        _this.store = store;\n        _this.currentUser = currentUser;\n        _this.shares = shares;\n        _this.actions = [\n            {\n                viewName: 'Preview',\n                icon: 'visibility',\n                execute: function () {\n                    _this.store.dispatch(new OpenFilePreview());\n                },\n                visible: function () {\n                    return !_this.onlyFoldersSelected;\n                },\n            },\n            {\n                viewName: 'Manage People',\n                icon: 'person-add',\n                showInCompact: true,\n                execute: function () {\n                    _this.store.dispatch(new OpenDialog(ShareDialogComponent, null, 'share-dialog-container'));\n                },\n                visible: function () {\n                    return _this.userHasPermission('edit');\n                },\n            },\n            {\n                viewName: 'Get shareable link',\n                icon: 'link',\n                execute: function () {\n                    _this.store.dispatch(new OpenDialog(ShareLinkDialogComponent, null, {\n                        panelClass: 'share-link-dialog-container',\n                        autoFocus: false,\n                    }));\n                },\n                visible: function () {\n                    return !_this.multipleEntriesSelected && _this.userHasPermission('edit');\n                }\n            },\n            {\n                viewName: 'Rename',\n                icon: 'edit',\n                execute: function () {\n                    _this.store.dispatch(new OpenDialog(RenameEntryDialogComponent, null, 'rename-entry-dialog-container'));\n                },\n                visible: function () {\n                    return !_this.multipleEntriesSelected && _this.userHasPermission('edit');\n                }\n            },\n            {\n                viewName: 'Add to my drive',\n                icon: 'add-box',\n                execute: function () {\n                    _this.store.dispatch(new CopySelectedEntries());\n                },\n                visible: noopTrue,\n            },\n            {\n                viewName: 'Make a copy',\n                icon: 'content-copy',\n                execute: function () {\n                    _this.store.dispatch(new CopySelectedEntries());\n                },\n                visible: noopTrue,\n            },\n            {\n                viewName: 'Download',\n                icon: 'file-download',\n                execute: function () {\n                    _this.store.dispatch(new DownloadEntries());\n                },\n                visible: function () {\n                    return _this.userHasPermission('download');\n                },\n            },\n            {\n                viewName: 'Delete',\n                icon: 'delete',\n                showInCompact: true,\n                execute: function () {\n                    _this.delete();\n                },\n                visible: noopTrue,\n            },\n        ];\n        return _this;\n    }\n    SharesActions.prototype.userHasPermission = function (permission) {\n        var _this = this;\n        return this.getSelectedEntries().every(function (entry) {\n            var user = entry.users.find(function (u) { return u.id === _this.currentUser.get('id'); });\n            return user && (user.owns_entry || user.entry_permissions[permission]);\n        });\n    };\n    SharesActions.prototype.delete = function () {\n        var _this = this;\n        var entries = this.getSelectedEntries();\n        // if user owns or can edit selected entries, delete them\n        if (this.store.selectSnapshot(DriveState.userCanEditSelectedEntries)) {\n            this.store.dispatch(new DeleteSelectedEntries());\n            // otherwise, just remove entries from user's \"shared with me\" page\n        }\n        else {\n            this.shares.detachUser(this.currentUser.get('id'), entries.map(function (e) { return e.id; })).subscribe(function () {\n                _this.store.dispatch(new RemoveEntries(entries));\n            });\n        }\n    };\n    SharesActions.ngInjectableDef = i0.defineInjectable({ factory: function SharesActions_Factory() { return new SharesActions(i0.inject(i1.Store), i0.inject(i2.CurrentUser), i0.inject(i3.SharesApiService)); }, token: SharesActions, providedIn: \"root\" });\n    return SharesActions;\n}(DriveContextActions));\nexport { SharesActions };\nexport { ɵ0 };\n","import {\r\n    CopySelectedEntries, DeleteSelectedEntries, DownloadEntries, OpenDialog, OpenFilePreview, RemoveEntries,\r\n} from '../../state/actions/commands';\r\nimport { Injectable } from '@angular/core';\r\nimport { DriveContextActions } from '../drive-context-actions';\r\nimport { ShareLinkDialogComponent } from '../../sharing/share-link-dialog/share-link-dialog.component';\r\nimport { Store } from '@ngxs/store';\r\nimport { CurrentUser } from 'common/auth/current-user';\r\nimport { SharesApiService } from '../../sharing/shares-api.service';\r\nimport { DriveEntryPermissions } from '../../permissions/drive-entry-permissions';\r\nimport { ShareDialogComponent } from '../../sharing/share-dialog/share-dialog.component';\r\nimport { RenameEntryDialogComponent } from '../../entries/rename-entry-dialog/rename-entry-dialog.component';\r\nimport { DriveState } from '../../state/drive-state';\r\nimport { DriveEntry } from '../../files/models/drive-entry';\r\n\r\nconst noopTrue = () => true;\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class SharesActions extends DriveContextActions {\r\n    protected actions = [\r\n        {\r\n            viewName: 'Preview',\r\n            icon: 'visibility',\r\n            execute: () => {\r\n                this.store.dispatch(new OpenFilePreview());\r\n            },\r\n            visible: () => {\r\n                return !this.onlyFoldersSelected;\r\n            },\r\n        },\r\n        {\r\n            viewName: 'Manage People',\r\n            icon: 'person-add',\r\n            showInCompact: true,\r\n            execute: () => {\r\n                this.store.dispatch(new OpenDialog(ShareDialogComponent, null, 'share-dialog-container'));\r\n            },\r\n            visible: () => {\r\n                return this.userHasPermission('edit');\r\n            },\r\n        },\r\n        {\r\n            viewName: 'Get shareable link',\r\n            icon: 'link',\r\n            execute: () => {\r\n                this.store.dispatch(new OpenDialog(ShareLinkDialogComponent, null, {\r\n                    panelClass: 'share-link-dialog-container',\r\n                    autoFocus: false,\r\n                }));\r\n            },\r\n            visible: () => {\r\n                return !this.multipleEntriesSelected && this.userHasPermission('edit');\r\n            }\r\n        },\r\n        {\r\n            viewName: 'Rename',\r\n            icon: 'edit',\r\n            execute: () => {\r\n                this.store.dispatch(new OpenDialog(RenameEntryDialogComponent, null, 'rename-entry-dialog-container'));\r\n            },\r\n            visible: () => {\r\n                return !this.multipleEntriesSelected && this.userHasPermission('edit');\r\n            }\r\n        },\r\n        {\r\n            viewName: 'Add to my drive',\r\n            icon: 'add-box',\r\n            execute: () => {\r\n                this.store.dispatch(new CopySelectedEntries());\r\n            },\r\n            visible: noopTrue,\r\n        },\r\n        {\r\n            viewName: 'Make a copy',\r\n            icon: 'content-copy',\r\n            execute: () => {\r\n                this.store.dispatch(new CopySelectedEntries());\r\n            },\r\n            visible: noopTrue,\r\n        },\r\n        {\r\n            viewName: 'Download',\r\n            icon: 'file-download',\r\n            execute: () => {\r\n                this.store.dispatch(new DownloadEntries());\r\n            },\r\n            visible: () => {\r\n                return this.userHasPermission('download');\r\n            },\r\n        },\r\n        {\r\n            viewName: 'Delete',\r\n            icon: 'delete',\r\n            showInCompact: true,\r\n            execute: () => {\r\n                this.delete();\r\n            },\r\n            visible: noopTrue,\r\n        },\r\n    ];\r\n\r\n    constructor(\r\n        protected store: Store,\r\n        protected currentUser: CurrentUser,\r\n        protected shares: SharesApiService,\r\n    ) {\r\n        super(store);\r\n    }\r\n\r\n    protected userHasPermission(permission: keyof DriveEntryPermissions) {\r\n        return this.getSelectedEntries().every(entry => {\r\n            const user = entry.users.find(u => u.id === this.currentUser.get('id'));\r\n            return user && (user.owns_entry || user.entry_permissions[permission]);\r\n        });\r\n    }\r\n\r\n    public delete() {\r\n        const entries = this.getSelectedEntries();\r\n\r\n        // if user owns or can edit selected entries, delete them\r\n        if (this.store.selectSnapshot(DriveState.userCanEditSelectedEntries)) {\r\n            this.store.dispatch(new DeleteSelectedEntries());\r\n\r\n        // otherwise, just remove entries from user's \"shared with me\" page\r\n        } else {\r\n            this.shares.detachUser(\r\n                this.currentUser.get('id'),\r\n                entries.map(e => e.id),\r\n            ).subscribe(() => {\r\n                this.store.dispatch(new RemoveEntries(entries));\r\n            });\r\n        }\r\n    }\r\n}\r\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { OpenDialog, OpenUploadWindow, } from '../../state/actions/commands';\nimport { DriveContextActions } from '../drive-context-actions';\nimport { CrupdateFolderDialogComponent } from '../../folders/components/crupdate-folder-dialog/crupdate-folder-dialog.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ngxs/store\";\nvar noopTrue = function () { return true; };\nvar ɵ0 = noopTrue;\nvar FolderActions = /** @class */ (function (_super) {\n    __extends(FolderActions, _super);\n    function FolderActions() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.actions = [\n            {\n                viewName: 'New Folder',\n                icon: 'create-new-folder',\n                execute: function () {\n                    _this.store.dispatch(new OpenDialog(CrupdateFolderDialogComponent, null, 'crupdate-folder-dialog-container'));\n                },\n                visible: noopTrue,\n                separatorAfter: true,\n            },\n            {\n                viewName: 'Upload Files',\n                icon: 'cloud-upload',\n                execute: function () {\n                    _this.openUploadWindow('file');\n                },\n                visible: noopTrue,\n            },\n            {\n                viewName: 'Upload Folder',\n                icon: 'upload-folder-custom',\n                execute: function () {\n                    _this.openUploadWindow('directory');\n                },\n                visible: noopTrue,\n            },\n        ];\n        return _this;\n    }\n    FolderActions.prototype.openUploadWindow = function (type) {\n        this.store.dispatch(new OpenUploadWindow(type));\n    };\n    FolderActions.ngInjectableDef = i0.defineInjectable({ factory: function FolderActions_Factory() { return new FolderActions(i0.inject(i1.Store)); }, token: FolderActions, providedIn: \"root\" });\n    return FolderActions;\n}(DriveContextActions));\nexport { FolderActions };\nexport { ɵ0 };\n","import { EmptyTrash, OpenConfirmDialog, OpenDialog, OpenUploadWindow, } from '../../state/actions/commands';\r\nimport { Injectable } from '@angular/core';\r\nimport { DriveContextActions } from '../drive-context-actions';\r\nimport { CrupdateFolderDialogComponent } from '../../folders/components/crupdate-folder-dialog/crupdate-folder-dialog.component';\r\n\r\nconst noopTrue = () => true;\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class FolderActions extends DriveContextActions {\r\n    protected actions = [\r\n        {\r\n            viewName: 'New Folder',\r\n            icon: 'create-new-folder',\r\n            execute: () => {\r\n                this.store.dispatch(new OpenDialog(\r\n                    CrupdateFolderDialogComponent,\r\n                    null,\r\n                    'crupdate-folder-dialog-container')\r\n                );\r\n            },\r\n            visible: noopTrue,\r\n            separatorAfter: true,\r\n        },\r\n        {\r\n            viewName: 'Upload Files',\r\n            icon: 'cloud-upload',\r\n            execute: () => {\r\n                this.openUploadWindow('file');\r\n            },\r\n            visible: noopTrue,\r\n        },\r\n        {\r\n            viewName: 'Upload Folder',\r\n            icon: 'upload-folder-custom',\r\n            execute: () => {\r\n                this.openUploadWindow('directory');\r\n            },\r\n            visible: noopTrue,\r\n        },\r\n    ];\r\n\r\n    public openUploadWindow(type: 'file'|'directory') {\r\n        this.store.dispatch(new OpenUploadWindow(type));\r\n    }\r\n}\r\n","import { Component, OnInit, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\nimport { MatDialogRef } from '@angular/material';\nimport { Actions, ofAction, Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { DriveState} from '../../state/drive-state';\nimport { DriveFolder } from '../../folders/models/driveFolder';\nimport { take } from 'rxjs/operators';\nimport { FoldersTreeService } from '../../sidebar/folders-tree/folders-tree.service';\nimport { BaseDialog } from 'common/core/ui/dialogs/base-dialog';\nimport { MoveEntries } from '../../state/actions/commands';\nimport { MoveEntriesFailed, MoveEntriesSuccess } from '../../state/actions/events';\nimport { DriveEntry } from '../../files/models/drive-entry';\n\n@Component({\n    selector: 'move-entries-dialog',\n    templateUrl: './move-entries-dialog.component.html',\n    styleUrls: ['./move-entries-dialog.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [FoldersTreeService],\n})\nexport class MoveEntriesDialogComponent extends BaseDialog implements OnInit {\n    public selectedFolder: DriveFolder;\n    @Select(DriveState.selectedEntries) selectedEntries$: Observable<DriveEntry[]>;\n\n    constructor(\n        protected dialogRef: MatDialogRef<MoveEntriesDialogComponent>,\n        protected store: Store,\n        protected actions: Actions,\n    ) {\n        super();\n    }\n\n    ngOnInit() {\n        const failure = this.actions.pipe(ofAction(MoveEntriesFailed)).subscribe(() => {\n            this.loading.next(false);\n        });\n\n        const success = this.actions.pipe(ofAction(MoveEntriesSuccess), take(1))\n            .subscribe(() => {\n                this.selectedFolder = null;\n                this.close();\n            });\n\n        this.addSubs(success, failure);\n    }\n\n    public confirm() {\n        this.loading.next(true);\n\n        this.store.dispatch(new MoveEntries(this.selectedFolder.id))\n            .subscribe(() => {\n                this.loading.next(false);\n            });\n    }\n}\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { OnInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material';\nimport { Actions, ofAction, Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { DriveState } from '../../state/drive-state';\nimport { take } from 'rxjs/operators';\nimport { BaseDialog } from 'common/core/ui/dialogs/base-dialog';\nimport { MoveEntries } from '../../state/actions/commands';\nimport { MoveEntriesFailed, MoveEntriesSuccess } from '../../state/actions/events';\nvar MoveEntriesDialogComponent = /** @class */ (function (_super) {\n    __extends(MoveEntriesDialogComponent, _super);\n    function MoveEntriesDialogComponent(dialogRef, store, actions) {\n        var _this = _super.call(this) || this;\n        _this.dialogRef = dialogRef;\n        _this.store = store;\n        _this.actions = actions;\n        return _this;\n    }\n    MoveEntriesDialogComponent.prototype.ngOnInit = function () {\n        var _this = this;\n        var failure = this.actions.pipe(ofAction(MoveEntriesFailed)).subscribe(function () {\n            _this.loading.next(false);\n        });\n        var success = this.actions.pipe(ofAction(MoveEntriesSuccess), take(1))\n            .subscribe(function () {\n            _this.selectedFolder = null;\n            _this.close();\n        });\n        this.addSubs(success, failure);\n    };\n    MoveEntriesDialogComponent.prototype.confirm = function () {\n        var _this = this;\n        this.loading.next(true);\n        this.store.dispatch(new MoveEntries(this.selectedFolder.id))\n            .subscribe(function () {\n            _this.loading.next(false);\n        });\n    };\n    __decorate([\n        Select(DriveState.selectedEntries),\n        __metadata(\"design:type\", Observable)\n    ], MoveEntriesDialogComponent.prototype, \"selectedEntries$\", void 0);\n    return MoveEntriesDialogComponent;\n}(BaseDialog));\nexport { MoveEntriesDialogComponent };\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { AddStar, CopySelectedEntries, DeleteSelectedEntries, DownloadEntries, OpenDialog, OpenFilePreview, RemoveStar } from '../../state/actions/commands';\nimport { ShareDialogComponent } from '../../sharing/share-dialog/share-dialog.component';\nimport { ShareLinkDialogComponent } from '../../sharing/share-link-dialog/share-link-dialog.component';\nimport { CrupdateFolderDialogComponent } from '../../folders/components/crupdate-folder-dialog/crupdate-folder-dialog.component';\nimport { MoveEntriesDialogComponent } from '../../entries/move-entries-dialog/move-entries-dialog.component';\nimport { RenameEntryDialogComponent } from '../../entries/rename-entry-dialog/rename-entry-dialog.component';\nimport { DriveContextActions } from '../drive-context-actions';\nimport { DriveState } from '../../state/drive-state';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ngxs/store\";\nvar noopTrue = function () { return true; };\nvar ɵ0 = noopTrue;\nvar EntryActions = /** @class */ (function (_super) {\n    __extends(EntryActions, _super);\n    function EntryActions() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.actions = [\n            {\n                viewName: 'Preview',\n                icon: 'visibility',\n                showInCompact: true,\n                execute: function () {\n                    _this.store.dispatch(new OpenFilePreview());\n                },\n                visible: function () {\n                    return !_this.onlyFoldersSelected;\n                },\n            },\n            {\n                viewName: 'Manage People',\n                icon: 'person-add',\n                showInCompact: true,\n                execute: function () {\n                    _this.store.dispatch(new OpenDialog(ShareDialogComponent, null, 'share-dialog-container'));\n                },\n                visible: noopTrue,\n            },\n            {\n                viewName: 'Get shareable link',\n                icon: 'link',\n                execute: function () {\n                    _this.store.dispatch(new OpenDialog(ShareLinkDialogComponent, null, {\n                        panelClass: 'share-link-dialog-container',\n                        autoFocus: false,\n                    }));\n                },\n                visible: function () { return !_this.multipleEntriesSelected; }\n            },\n            {\n                viewName: 'Add a star',\n                icon: 'star',\n                execute: function () {\n                    _this.store.dispatch(new AddStar(_this.getSelectedEntries()));\n                },\n                visible: function () { return !_this.allStarred; }\n            },\n            {\n                viewName: 'Remove star',\n                icon: 'star-border',\n                execute: function () {\n                    _this.store.dispatch(new RemoveStar(_this.getSelectedEntries()));\n                },\n                visible: function () { return _this.allStarred; }\n            },\n            {\n                viewName: 'New Folder',\n                icon: 'create-new-folder',\n                execute: function () {\n                    _this.store.dispatch(new OpenDialog(CrupdateFolderDialogComponent, null, 'crupdate-folder-dialog-container'));\n                },\n                visible: function () {\n                    var folderIsSelected = _this.store.selectSnapshot(DriveState.selectedFolderId);\n                    return !_this.multipleEntriesSelected && !!folderIsSelected;\n                }\n            },\n            {\n                viewName: 'Move to',\n                icon: 'subdirectory-arrow-right',\n                execute: function () {\n                    _this.store.dispatch(new OpenDialog(MoveEntriesDialogComponent, null, 'move-entries-dialog-container'));\n                },\n                visible: noopTrue,\n            },\n            {\n                viewName: 'Rename',\n                icon: 'edit',\n                execute: function () {\n                    _this.store.dispatch(new OpenDialog(RenameEntryDialogComponent, null, 'rename-entry-dialog-container'));\n                },\n                visible: function () { return !_this.multipleEntriesSelected; }\n            },\n            {\n                viewName: 'Make a copy',\n                icon: 'content-copy',\n                execute: function () {\n                    _this.store.dispatch(new CopySelectedEntries());\n                },\n                visible: noopTrue,\n            },\n            {\n                viewName: 'Download',\n                icon: 'file-download',\n                separatorAfter: true,\n                execute: function () {\n                    _this.store.dispatch(new DownloadEntries());\n                },\n                visible: noopTrue,\n            },\n            {\n                viewName: 'Delete',\n                icon: 'delete',\n                showInCompact: true,\n                execute: function () {\n                    _this.store.dispatch(new DeleteSelectedEntries());\n                },\n                visible: noopTrue,\n            },\n        ];\n        return _this;\n    }\n    EntryActions.ngInjectableDef = i0.defineInjectable({ factory: function EntryActions_Factory() { return new EntryActions(i0.inject(i1.Store)); }, token: EntryActions, providedIn: \"root\" });\n    return EntryActions;\n}(DriveContextActions));\nexport { EntryActions };\nexport { ɵ0 };\n","import {\r\n    AddStar,\r\n    CopySelectedEntries, DeleteSelectedEntries,\r\n    DownloadEntries,\r\n    OpenDialog,\r\n    OpenFilePreview,\r\n    RemoveStar\r\n} from '../../state/actions/commands';\r\nimport { ShareDialogComponent } from '../../sharing/share-dialog/share-dialog.component';\r\nimport { ShareLinkDialogComponent } from '../../sharing/share-link-dialog/share-link-dialog.component';\r\nimport { CrupdateFolderDialogComponent } from '../../folders/components/crupdate-folder-dialog/crupdate-folder-dialog.component';\r\nimport { Injectable } from '@angular/core';\r\nimport { MoveEntriesDialogComponent } from '../../entries/move-entries-dialog/move-entries-dialog.component';\r\nimport { RenameEntryDialogComponent } from '../../entries/rename-entry-dialog/rename-entry-dialog.component';\r\nimport { DriveContextActions } from '../drive-context-actions';\r\nimport { DriveState } from '../../state/drive-state';\r\n\r\nconst noopTrue = () => true;\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class EntryActions extends DriveContextActions {\r\n    protected actions = [\r\n        {\r\n            viewName: 'Preview',\r\n            icon: 'visibility',\r\n            showInCompact: true,\r\n            execute: () => {\r\n                this.store.dispatch(new OpenFilePreview());\r\n            },\r\n            visible: () => {\r\n                return !this.onlyFoldersSelected;\r\n            },\r\n        },\r\n        {\r\n            viewName: 'Manage People',\r\n            icon: 'person-add',\r\n            showInCompact: true,\r\n            execute: () => {\r\n                this.store.dispatch(new OpenDialog(ShareDialogComponent, null, 'share-dialog-container'));\r\n            },\r\n            visible: noopTrue,\r\n        },\r\n        {\r\n            viewName: 'Get shareable link',\r\n            icon: 'link',\r\n            execute: () => {\r\n                this.store.dispatch(new OpenDialog(ShareLinkDialogComponent, null, {\r\n                    panelClass: 'share-link-dialog-container',\r\n                    autoFocus: false,\r\n                }));\r\n            },\r\n            visible: () => !this.multipleEntriesSelected\r\n        },\r\n        {\r\n            viewName: 'Add a star',\r\n            icon: 'star',\r\n            execute: () => {\r\n                this.store.dispatch(new AddStar(this.getSelectedEntries()));\r\n            },\r\n            visible: () => !this.allStarred\r\n        },\r\n        {\r\n            viewName: 'Remove star',\r\n            icon: 'star-border',\r\n            execute: () => {\r\n                this.store.dispatch(new RemoveStar(this.getSelectedEntries()));\r\n            },\r\n            visible: () => this.allStarred\r\n        },\r\n        {\r\n            viewName: 'New Folder',\r\n            icon: 'create-new-folder',\r\n            execute: () => {\r\n                this.store.dispatch(new OpenDialog(CrupdateFolderDialogComponent, null, 'crupdate-folder-dialog-container'));\r\n            },\r\n            visible: () => {\r\n                const folderIsSelected = this.store.selectSnapshot(DriveState.selectedFolderId);\r\n                return !this.multipleEntriesSelected && !!folderIsSelected;\r\n            }\r\n        },\r\n        {\r\n            viewName: 'Move to',\r\n            icon: 'subdirectory-arrow-right',\r\n            execute: () => {\r\n                this.store.dispatch(new OpenDialog(MoveEntriesDialogComponent, null, 'move-entries-dialog-container'));\r\n            },\r\n            visible: noopTrue,\r\n        },\r\n        {\r\n            viewName: 'Rename',\r\n            icon: 'edit',\r\n            execute: () => {\r\n                this.store.dispatch(new OpenDialog(RenameEntryDialogComponent, null, 'rename-entry-dialog-container'));\r\n            },\r\n            visible: () => !this.multipleEntriesSelected\r\n        },\r\n        {\r\n            viewName: 'Make a copy',\r\n            icon: 'content-copy',\r\n            execute: () => {\r\n                this.store.dispatch(new CopySelectedEntries());\r\n            },\r\n            visible: noopTrue,\r\n        },\r\n        {\r\n            viewName: 'Download',\r\n            icon: 'file-download',\r\n            separatorAfter: true,\r\n            execute: () => {\r\n                this.store.dispatch(new DownloadEntries());\r\n            },\r\n            visible: noopTrue,\r\n        },\r\n        {\r\n            viewName: 'Delete',\r\n            icon: 'delete',\r\n            showInCompact: true,\r\n            execute: () => {\r\n                this.store.dispatch(new DeleteSelectedEntries());\r\n            },\r\n            visible: noopTrue,\r\n        },\r\n    ];\r\n}\r\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { EmptyTrash, OpenConfirmDialog, } from '../../state/actions/commands';\nimport { DriveContextActions } from '../drive-context-actions';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ngxs/store\";\nvar noopTrue = function () { return true; };\nvar ɵ0 = noopTrue;\nvar TrashPageActions = /** @class */ (function (_super) {\n    __extends(TrashPageActions, _super);\n    function TrashPageActions() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.actions = [\n            {\n                viewName: 'Empty Trash',\n                icon: 'delete-forever',\n                execute: function () {\n                    _this.emptyTrash();\n                },\n                visible: noopTrue,\n            },\n        ];\n        return _this;\n    }\n    TrashPageActions.prototype.emptyTrash = function () {\n        this.store.dispatch(new OpenConfirmDialog({\n            title: 'Empty Trash',\n            body: 'All files and folders in your trash will be permanently deleted.',\n            bodyBold: 'This action can not be undone.',\n            ok: 'Empty Trash'\n        }, new EmptyTrash()));\n    };\n    TrashPageActions.ngInjectableDef = i0.defineInjectable({ factory: function TrashPageActions_Factory() { return new TrashPageActions(i0.inject(i1.Store)); }, token: TrashPageActions, providedIn: \"root\" });\n    return TrashPageActions;\n}(DriveContextActions));\nexport { TrashPageActions };\nexport { ɵ0 };\n","import { EmptyTrash, OpenConfirmDialog, } from '../../state/actions/commands';\r\nimport { Injectable } from '@angular/core';\r\nimport { DriveContextActions } from '../drive-context-actions';\r\n\r\nconst noopTrue = () => true;\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class TrashPageActions extends DriveContextActions {\r\n    protected actions = [\r\n        {\r\n            viewName: 'Empty Trash',\r\n            icon: 'delete-forever',\r\n            execute: () => {\r\n                this.emptyTrash();\r\n            },\r\n            visible: noopTrue,\r\n        },\r\n    ];\r\n\r\n    public emptyTrash() {\r\n        this.store.dispatch(new OpenConfirmDialog({\r\n            title: 'Empty Trash',\r\n            body: 'All files and folders in your trash will be permanently deleted.',\r\n            bodyBold: 'This action can not be undone.',\r\n            ok: 'Empty Trash'\r\n        }, new EmptyTrash()));\r\n    }\r\n}\r\n","import {\n    Component,\n    ViewEncapsulation,\n    ChangeDetectionStrategy,\n    Input,\n    HostBinding,\n    Injector,\n    ViewChild,\n    ElementRef, OnDestroy\n} from '@angular/core';\nimport { DriveState } from '../../../state/drive-state';\nimport { Store } from '@ngxs/store';\nimport { DriveContextAction } from '../../types/drive-context-action';\nimport { TrashActions } from '../../actions/trash-actions';\nimport { SharesActions } from '../../actions/shares-actions';\nimport { FolderActions } from '../../actions/folder-actions';\nimport { EntryActions } from '../../actions/entry-actions';\nimport { BehaviorSubject, combineLatest, Subscription } from 'rxjs';\nimport { DrivePage } from '../../../state/models/drive-page';\nimport { DriveContextMenuComponent } from '../drive-context-menu/drive-context-menu.component';\nimport { ContextMenu } from 'common/core/ui/context-menu/context-menu.service';\nimport { TrashPageActions } from '../../actions/trash-page-actions';\nimport { DriveEntry } from '../../../files/models/drive-entry';\n\n@Component({\n    selector: 'context-actions-container',\n    templateUrl: './context-actions-container.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ContextActionsContainerComponent implements OnDestroy {\n    @ViewChild('moreActionsButton', {read: ElementRef}) moreActionsButton: ElementRef;\n    @Input() @HostBinding('class.compact') compact = false;\n\n    // whether there are more actions to display in \"compact\" mode\n    public hasMoreActions$ = new BehaviorSubject(false);\n    public actions$: BehaviorSubject<DriveContextAction[]> = new BehaviorSubject([]);\n    private subscription: Subscription;\n\n    constructor(\n        private store: Store,\n        private injector: Injector,\n        private contextMenu: ContextMenu,\n    ) {\n        this.subscription = combineLatest(\n            this.store.select(DriveState.activePage),\n            this.store.select(DriveState.selectedEntry),\n        ).subscribe(combined => {\n            this.setActions(combined[0], combined[1]);\n            this.hasMoreActions$.next(this.actions$.value.some(action => !action.showInCompact));\n        });\n    }\n\n    ngOnDestroy() {\n        this.subscription.unsubscribe();\n    }\n\n    public openMoreActionsMenu() {\n        const entry = this.store.selectSnapshot(DriveState.selectedEntryOrActiveFolder);\n        this.contextMenu.open(\n            DriveContextMenuComponent,\n            this.moreActionsButton.nativeElement,\n            {data: {entry}}\n        );\n    }\n\n    private setActions(activePage: DrivePage, selectedEntry: DriveEntry) {\n        // user clicked on \"trash\" page name in breadcrumb\n        if (activePage.name === 'trash' && ! selectedEntry) {\n            this.actions$.next(this.injector.get(TrashPageActions).getActions());\n\n        // context menu opened for selected entries while in \"trash\" or \"shares\" page\n        } else if (activePage.name === 'trash' && selectedEntry) {\n            this.actions$.next(this.injector.get(TrashActions).getActions());\n        } else if (activePage.name === 'shares' && selectedEntry) {\n            this.actions$.next(this.injector.get(SharesActions).getActions());\n\n        // context menu opened by clicking on empty space in folder view\n        } else if (activePage.folder && ! selectedEntry) {\n            this.actions$.next(this.injector.get(FolderActions).getActions());\n\n        // show entries context menu for \"starred\" page\n        } else if (activePage.name === 'starred' || activePage.name === 'recent') {\n            this.actions$.next(this.injector.get(EntryActions).getActions());\n\n        // default to entry actions if can't match to anything else\n        } else if (selectedEntry) {\n            this.setActionsForEntry();\n        } else {\n            this.actions$.next([]);\n        }\n    }\n\n    private setActionsForEntry() {\n        if (this.store.selectSnapshot(DriveState.userOwnsActiveFolder)) {\n            this.actions$.next(this.injector.get(EntryActions).getActions());\n        } else {\n            this.actions$.next(this.injector.get(SharesActions).getActions());\n        }\n    }\n}\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i2 from \"@angular/material/icon\";\nimport * as i3 from \"../../../../../common/core/translations/translate.directive\";\nimport * as i4 from \"../../../../../common/core/translations/translations.service\";\nimport * as i5 from \"../../../../../common/core/config/settings.service\";\nimport * as i6 from \"../../../../../../node_modules/@angular/material/button/typings/index.ngfactory\";\nimport * as i7 from \"@angular/material/button\";\nimport * as i8 from \"@angular/cdk/platform\";\nimport * as i9 from \"@angular/cdk/a11y\";\nimport * as i10 from \"@angular/platform-browser/animations\";\nimport * as i11 from \"@angular/material/tooltip\";\nimport * as i12 from \"@angular/cdk/overlay\";\nimport * as i13 from \"@angular/cdk/scrolling\";\nimport * as i14 from \"@angular/cdk/bidi\";\nimport * as i15 from \"@angular/common\";\nimport * as i16 from \"../../../../../common/core/translations/translate.pipe\";\nimport * as i17 from \"./context-actions-container.component\";\nimport * as i18 from \"@ngxs/store\";\nimport * as i19 from \"../../../../../common/core/ui/context-menu/context-menu.service\";\nvar styles_ContextActionsContainerComponent = [];\nvar RenderType_ContextActionsContainerComponent = i0.ɵcrt({ encapsulation: 2, styles: styles_ContextActionsContainerComponent, data: {} });\nexport { RenderType_ContextActionsContainerComponent as RenderType_ContextActionsContainerComponent };\nfunction View_ContextActionsContainerComponent_3(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 8, \"button\", [[\"class\", \"context-menu-item\"]], null, [[null, \"click\"]], function (_v, en, $event) { var ad = true; if ((\"click\" === en)) {\n        var pd_0 = (_v.parent.parent.context.$implicit.execute() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, null, null)), (_l()(), i0.ɵted(-1, null, [\"\\n            \"])), (_l()(), i0.ɵeld(2, 0, null, null, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"]], [[2, \"mat-icon-inline\", null]], null, null, i1.View_MatIcon_0, i1.RenderType_MatIcon)), i0.ɵdid(3, 638976, null, 0, i2.MatIcon, [i0.ElementRef, i2.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i0.ɵted(-1, null, [\"\\n            \"])), (_l()(), i0.ɵeld(5, 0, null, null, 2, \"span\", [[\"trans\", \"\"]], null, null, null, null, null)), i0.ɵdid(6, 4341760, null, 0, i3.TranslateDirective, [i0.ElementRef, i4.Translations, i5.Settings], null, null), (_l()(), i0.ɵted(7, null, [\"\", \"\"])), (_l()(), i0.ɵted(-1, null, [\"\\n        \"]))], function (_ck, _v) { var currVal_1 = _v.parent.parent.context.$implicit.icon; _ck(_v, 3, 0, currVal_1); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 3).inline; _ck(_v, 2, 0, currVal_0); var currVal_2 = _v.parent.parent.context.$implicit.viewName; _ck(_v, 7, 0, currVal_2); }); }\nfunction View_ContextActionsContainerComponent_4(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 16777216, null, null, 7, \"button\", [[\"mat-icon-button\", \"\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"], [null, \"longpress\"], [null, \"keydown\"], [null, \"touchend\"]], function (_v, en, $event) { var ad = true; if ((\"longpress\" === en)) {\n        var pd_0 = (i0.ɵnov(_v, 2).show() !== false);\n        ad = (pd_0 && ad);\n    } if ((\"keydown\" === en)) {\n        var pd_1 = (i0.ɵnov(_v, 2)._handleKeydown($event) !== false);\n        ad = (pd_1 && ad);\n    } if ((\"touchend\" === en)) {\n        var pd_2 = (i0.ɵnov(_v, 2)._handleTouchend() !== false);\n        ad = (pd_2 && ad);\n    } if ((\"click\" === en)) {\n        var pd_3 = (_v.parent.parent.context.$implicit.execute() !== false);\n        ad = (pd_3 && ad);\n    } return ad; }, i6.View_MatButton_0, i6.RenderType_MatButton)), i0.ɵdid(1, 180224, null, 0, i7.MatButton, [i0.ElementRef, i8.Platform, i9.FocusMonitor, [2, i10.ANIMATION_MODULE_TYPE]], null, null), i0.ɵdid(2, 147456, null, 0, i11.MatTooltip, [i12.Overlay, i0.ElementRef, i13.ScrollDispatcher, i0.ViewContainerRef, i0.NgZone, i8.Platform, i9.AriaDescriber, i9.FocusMonitor, i11.MAT_TOOLTIP_SCROLL_STRATEGY, [2, i14.Directionality], [2, i11.MAT_TOOLTIP_DEFAULT_OPTIONS]], { message: [0, \"message\"] }, null), i0.ɵppd(3, 1), (_l()(), i0.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i0.ɵeld(5, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"]], [[2, \"mat-icon-inline\", null]], null, null, i1.View_MatIcon_0, i1.RenderType_MatIcon)), i0.ɵdid(6, 638976, null, 0, i2.MatIcon, [i0.ElementRef, i2.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i0.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i0.ɵand(0, null, null, 0))], function (_ck, _v) { var currVal_2 = i0.ɵunv(_v, 2, 0, _ck(_v, 3, 0, i0.ɵnov(_v.parent.parent.parent, 0), _v.parent.parent.context.$implicit.viewName)); _ck(_v, 2, 0, currVal_2); var currVal_4 = _v.parent.parent.context.$implicit.icon; _ck(_v, 6, 0, currVal_4); }, function (_ck, _v) { var currVal_0 = (i0.ɵnov(_v, 1).disabled || null); var currVal_1 = (i0.ɵnov(_v, 1)._animationMode === \"NoopAnimations\"); _ck(_v, 0, 0, currVal_0, currVal_1); var currVal_3 = i0.ɵnov(_v, 6).inline; _ck(_v, 5, 0, currVal_3); }); }\nfunction View_ContextActionsContainerComponent_5(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 0, \"div\", [[\"class\", \"separator\"]], null, null, null, null, null))], null, null); }\nfunction View_ContextActionsContainerComponent_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 10, null, null, null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"\\n        \"])), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ContextActionsContainerComponent_3)), i0.ɵdid(3, 16384, null, 0, i15.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵted(-1, null, [\"\\n\\n        \"])), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ContextActionsContainerComponent_4)), i0.ɵdid(6, 16384, null, 0, i15.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵted(-1, null, [\"\\n\\n        \"])), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ContextActionsContainerComponent_5)), i0.ɵdid(9, 16384, null, 0, i15.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵted(-1, null, [\"\\n    \"]))], function (_ck, _v) { var _co = _v.component; var currVal_0 = !_co.compact; _ck(_v, 3, 0, currVal_0); var currVal_1 = (_co.compact && _v.parent.context.$implicit.showInCompact); _ck(_v, 6, 0, currVal_1); var currVal_2 = (!_co.compact && _v.parent.context.$implicit.separatorAfter); _ck(_v, 9, 0, currVal_2); }, null); }\nfunction View_ContextActionsContainerComponent_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 4, null, null, null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"\\n    \"])), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_ContextActionsContainerComponent_2)), i0.ɵdid(3, 16384, null, 0, i15.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i0.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var currVal_0 = _v.context.$implicit.visible(); _ck(_v, 3, 0, currVal_0); }, null); }\nfunction View_ContextActionsContainerComponent_6(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 16777216, [[1, 0]], null, 7, \"button\", [[\"mat-icon-button\", \"\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"], [null, \"longpress\"], [null, \"keydown\"], [null, \"touchend\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"longpress\" === en)) {\n        var pd_0 = (i0.ɵnov(_v, 2).show() !== false);\n        ad = (pd_0 && ad);\n    } if ((\"keydown\" === en)) {\n        var pd_1 = (i0.ɵnov(_v, 2)._handleKeydown($event) !== false);\n        ad = (pd_1 && ad);\n    } if ((\"touchend\" === en)) {\n        var pd_2 = (i0.ɵnov(_v, 2)._handleTouchend() !== false);\n        ad = (pd_2 && ad);\n    } if ((\"click\" === en)) {\n        var pd_3 = (_co.openMoreActionsMenu() !== false);\n        ad = (pd_3 && ad);\n    } return ad; }, i6.View_MatButton_0, i6.RenderType_MatButton)), i0.ɵdid(1, 180224, [[\"moreActionsButton\", 4]], 0, i7.MatButton, [i0.ElementRef, i8.Platform, i9.FocusMonitor, [2, i10.ANIMATION_MODULE_TYPE]], null, null), i0.ɵdid(2, 147456, null, 0, i11.MatTooltip, [i12.Overlay, i0.ElementRef, i13.ScrollDispatcher, i0.ViewContainerRef, i0.NgZone, i8.Platform, i9.AriaDescriber, i9.FocusMonitor, i11.MAT_TOOLTIP_SCROLL_STRATEGY, [2, i14.Directionality], [2, i11.MAT_TOOLTIP_DEFAULT_OPTIONS]], { message: [0, \"message\"] }, null), i0.ɵppd(3, 1), (_l()(), i0.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i0.ɵeld(5, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"more-vert\"]], [[2, \"mat-icon-inline\", null]], null, null, i1.View_MatIcon_0, i1.RenderType_MatIcon)), i0.ɵdid(6, 638976, null, 0, i2.MatIcon, [i0.ElementRef, i2.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i0.ɵted(-1, 0, [\"\\n\"])), (_l()(), i0.ɵand(0, null, null, 0))], function (_ck, _v) { var currVal_2 = i0.ɵunv(_v, 2, 0, _ck(_v, 3, 0, i0.ɵnov(_v.parent, 0), \"More actions\")); _ck(_v, 2, 0, currVal_2); var currVal_4 = \"more-vert\"; _ck(_v, 6, 0, currVal_4); }, function (_ck, _v) { var currVal_0 = (i0.ɵnov(_v, 1).disabled || null); var currVal_1 = (i0.ɵnov(_v, 1)._animationMode === \"NoopAnimations\"); _ck(_v, 0, 0, currVal_0, currVal_1); var currVal_3 = i0.ɵnov(_v, 6).inline; _ck(_v, 5, 0, currVal_3); }); }\nexport function View_ContextActionsContainerComponent_0(_l) { return i0.ɵvid(2, [i0.ɵpid(0, i16.TransPipe, [i4.Translations]), i0.ɵqud(671088640, 1, { moreActionsButton: 0 }), (_l()(), i0.ɵand(16777216, null, null, 2, null, View_ContextActionsContainerComponent_1)), i0.ɵdid(3, 278528, null, 0, i15.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null), i0.ɵpid(131072, i15.AsyncPipe, [i0.ChangeDetectorRef]), (_l()(), i0.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i0.ɵand(16777216, null, null, 2, null, View_ContextActionsContainerComponent_6)), i0.ɵdid(7, 16384, null, 0, i15.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), i0.ɵpid(131072, i15.AsyncPipe, [i0.ChangeDetectorRef])], function (_ck, _v) { var _co = _v.component; var currVal_0 = i0.ɵunv(_v, 3, 0, i0.ɵnov(_v, 4).transform(_co.actions$)); _ck(_v, 3, 0, currVal_0); var currVal_1 = i0.ɵunv(_v, 7, 0, i0.ɵnov(_v, 8).transform((_co.compact && _co.hasMoreActions$))); _ck(_v, 7, 0, currVal_1); }, null); }\nexport function View_ContextActionsContainerComponent_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"context-actions-container\", [], [[2, \"compact\", null]], null, null, View_ContextActionsContainerComponent_0, RenderType_ContextActionsContainerComponent)), i0.ɵdid(1, 180224, null, 0, i17.ContextActionsContainerComponent, [i18.Store, i0.Injector, i19.ContextMenu], null, null)], null, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1).compact; _ck(_v, 0, 0, currVal_0); }); }\nvar ContextActionsContainerComponentNgFactory = i0.ɵccf(\"context-actions-container\", i17.ContextActionsContainerComponent, View_ContextActionsContainerComponent_Host_0, { compact: \"compact\" }, {}, []);\nexport { ContextActionsContainerComponentNgFactory as ContextActionsContainerComponentNgFactory };\n","<ng-container *ngFor=\"let action of actions$ | async\">\n    <ng-container *ngIf=\"action.visible()\">\n        <button class=\"context-menu-item\" *ngIf=\"!compact\" (click)=\"action.execute()\">\n            <mat-icon [svgIcon]=\"action.icon\"></mat-icon>\n            <span trans>{{action.viewName}}</span>\n        </button>\n\n        <button mat-icon-button (click)=\"action.execute()\" [matTooltip]=\"action.viewName | trans\" *ngIf=\"compact && action.showInCompact\">\n            <mat-icon [svgIcon]=\"action.icon\"></mat-icon>\n        </button>\n\n        <div class=\"separator\" *ngIf=\"!compact && action.separatorAfter\"></div>\n    </ng-container>\n</ng-container>\n\n<button mat-icon-button (click)=\"openMoreActionsMenu()\" [matTooltip]=\"'More actions' | trans\" #moreActionsButton *ngIf=\"compact && hasMoreActions$ | async\">\n    <mat-icon svgIcon=\"more-vert\"></mat-icon>\n</button>","import { Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, ElementRef } from '@angular/core';\nimport { Select, Store } from '@ngxs/store';\nimport { DriveState } from '../../state/drive-state';\nimport { Observable } from 'rxjs';\nimport { ContextMenu } from 'common/core/ui/context-menu/context-menu.service';\nimport { DriveContextMenuComponent } from '../../context-actions/components/drive-context-menu/drive-context-menu.component';\nimport { ToggleDetailsSidebar, SetViewMode } from '../../state/actions/commands';\n\n@Component({\n    selector: 'toolbar-actions',\n    templateUrl: './toolbar-actions.component.html',\n    styleUrls: ['./toolbar-actions.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ToolbarActionsComponent {\n    @ViewChild('moreActionsButton', {read: ElementRef}) moreActionsButton: ElementRef;\n    @Select(DriveState.anythingSelected) anythingSelected: Observable<boolean>;\n    @Select(DriveState.viewMode) viewMode: Observable<'list'|'grid'>;\n    @Select(DriveState.detailsOpen) activityOpen: Observable<boolean>;\n    @Select(DriveState.multipleEntriesSelected) multipleEntriesSelected$: Observable<boolean>;\n\n    constructor(\n        protected store: Store,\n        protected contextMenu: ContextMenu,\n    ) {\n\n    }\n\n    public toggleViewMode() {\n        this.store.dispatch(new SetViewMode());\n    }\n\n    public ToggleDetails() {\n        this.store.dispatch(new ToggleDetailsSidebar());\n    }\n\n    public openMoreActionsMenu() {\n        const entry = this.store.selectSnapshot(DriveState.selectedEntry);\n        this.contextMenu.open(\n            DriveContextMenuComponent,\n            this.moreActionsButton.nativeElement,\n            {data: {entry}}\n        );\n    }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { ElementRef } from '@angular/core';\nimport { Select, Store } from '@ngxs/store';\nimport { DriveState } from '../../state/drive-state';\nimport { Observable } from 'rxjs';\nimport { ContextMenu } from 'common/core/ui/context-menu/context-menu.service';\nimport { DriveContextMenuComponent } from '../../context-actions/components/drive-context-menu/drive-context-menu.component';\nimport { ToggleDetailsSidebar, SetViewMode } from '../../state/actions/commands';\nvar ToolbarActionsComponent = /** @class */ (function () {\n    function ToolbarActionsComponent(store, contextMenu) {\n        this.store = store;\n        this.contextMenu = contextMenu;\n    }\n    ToolbarActionsComponent.prototype.toggleViewMode = function () {\n        this.store.dispatch(new SetViewMode());\n    };\n    ToolbarActionsComponent.prototype.ToggleDetails = function () {\n        this.store.dispatch(new ToggleDetailsSidebar());\n    };\n    ToolbarActionsComponent.prototype.openMoreActionsMenu = function () {\n        var entry = this.store.selectSnapshot(DriveState.selectedEntry);\n        this.contextMenu.open(DriveContextMenuComponent, this.moreActionsButton.nativeElement, { data: { entry: entry } });\n    };\n    __decorate([\n        Select(DriveState.anythingSelected),\n        __metadata(\"design:type\", Observable)\n    ], ToolbarActionsComponent.prototype, \"anythingSelected\", void 0);\n    __decorate([\n        Select(DriveState.viewMode),\n        __metadata(\"design:type\", Observable)\n    ], ToolbarActionsComponent.prototype, \"viewMode\", void 0);\n    __decorate([\n        Select(DriveState.detailsOpen),\n        __metadata(\"design:type\", Observable)\n    ], ToolbarActionsComponent.prototype, \"activityOpen\", void 0);\n    __decorate([\n        Select(DriveState.multipleEntriesSelected),\n        __metadata(\"design:type\", Observable)\n    ], ToolbarActionsComponent.prototype, \"multipleEntriesSelected$\", void 0);\n    return ToolbarActionsComponent;\n}());\nexport { ToolbarActionsComponent };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./toolbar-actions.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../context-actions/components/context-actions-container/context-actions-container.component.ngfactory\";\nimport * as i3 from \"../../context-actions/components/context-actions-container/context-actions-container.component\";\nimport * as i4 from \"@ngxs/store\";\nimport * as i5 from \"../../../../common/core/ui/context-menu/context-menu.service\";\nimport * as i6 from \"../../../../../node_modules/@angular/material/button/typings/index.ngfactory\";\nimport * as i7 from \"@angular/material/button\";\nimport * as i8 from \"@angular/cdk/platform\";\nimport * as i9 from \"@angular/cdk/a11y\";\nimport * as i10 from \"@angular/platform-browser/animations\";\nimport * as i11 from \"../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i12 from \"@angular/material/icon\";\nimport * as i13 from \"@angular/common\";\nimport * as i14 from \"./toolbar-actions.component\";\nvar styles_ToolbarActionsComponent = [i0.styles];\nvar RenderType_ToolbarActionsComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_ToolbarActionsComponent, data: {} });\nexport { RenderType_ToolbarActionsComponent as RenderType_ToolbarActionsComponent };\nexport function View_ToolbarActionsComponent_0(_l) { return i1.ɵvid(2, [i1.ɵqud(402653184, 1, { moreActionsButton: 0 }), (_l()(), i1.ɵeld(1, 0, null, null, 1, \"context-actions-container\", [], [[2, \"compact\", null]], null, null, i2.View_ContextActionsContainerComponent_0, i2.RenderType_ContextActionsContainerComponent)), i1.ɵdid(2, 180224, null, 0, i3.ContextActionsContainerComponent, [i4.Store, i1.Injector, i5.ContextMenu], { compact: [0, \"compact\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵeld(4, 0, null, null, 17, \"div\", [[\"class\", \"always-visible-actions\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(6, 0, null, null, 6, \"button\", [[\"mat-icon-button\", \"\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.toggleViewMode() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i6.View_MatButton_0, i6.RenderType_MatButton)), i1.ɵdid(7, 180224, null, 0, i7.MatButton, [i1.ElementRef, i8.Platform, i9.FocusMonitor, [2, i10.ANIMATION_MODULE_TYPE]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(9, 0, null, 0, 2, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"]], [[2, \"mat-icon-inline\", null]], null, null, i11.View_MatIcon_0, i11.RenderType_MatIcon)), i1.ɵdid(10, 638976, null, 0, i12.MatIcon, [i1.ElementRef, i12.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), i1.ɵpid(131072, i13.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(14, 0, null, null, 6, \"button\", [[\"mat-icon-button\", \"\"]], [[2, \"active\", null], [8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.ToggleDetails() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i6.View_MatButton_0, i6.RenderType_MatButton)), i1.ɵdid(15, 180224, null, 0, i7.MatButton, [i1.ElementRef, i8.Platform, i9.FocusMonitor, [2, i10.ANIMATION_MODULE_TYPE]], null, null), i1.ɵpid(131072, i13.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(18, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"info\"]], [[2, \"mat-icon-inline\", null]], null, null, i11.View_MatIcon_0, i11.RenderType_MatIcon)), i1.ɵdid(19, 638976, null, 0, i12.MatIcon, [i1.ElementRef, i12.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"]))], function (_ck, _v) { var _co = _v.component; var currVal_1 = true; _ck(_v, 2, 0, currVal_1); var currVal_5 = ((i1.ɵunv(_v, 10, 0, i1.ɵnov(_v, 11).transform(_co.viewMode)) === \"list\") ? \"view-list\" : \"view-module\"); _ck(_v, 10, 0, currVal_5); var currVal_10 = \"info\"; _ck(_v, 19, 0, currVal_10); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵnov(_v, 2).compact; _ck(_v, 1, 0, currVal_0); var currVal_2 = (i1.ɵnov(_v, 7).disabled || null); var currVal_3 = (i1.ɵnov(_v, 7)._animationMode === \"NoopAnimations\"); _ck(_v, 6, 0, currVal_2, currVal_3); var currVal_4 = i1.ɵnov(_v, 10).inline; _ck(_v, 9, 0, currVal_4); var currVal_6 = i1.ɵunv(_v, 14, 0, i1.ɵnov(_v, 16).transform(_co.activityOpen)); var currVal_7 = (i1.ɵnov(_v, 15).disabled || null); var currVal_8 = (i1.ɵnov(_v, 15)._animationMode === \"NoopAnimations\"); _ck(_v, 14, 0, currVal_6, currVal_7, currVal_8); var currVal_9 = i1.ɵnov(_v, 19).inline; _ck(_v, 18, 0, currVal_9); }); }\nexport function View_ToolbarActionsComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"toolbar-actions\", [], null, null, null, View_ToolbarActionsComponent_0, RenderType_ToolbarActionsComponent)), i1.ɵdid(1, 49152, null, 0, i14.ToolbarActionsComponent, [i4.Store, i5.ContextMenu], null, null)], null, null); }\nvar ToolbarActionsComponentNgFactory = i1.ɵccf(\"toolbar-actions\", i14.ToolbarActionsComponent, View_ToolbarActionsComponent_Host_0, {}, {}, []);\nexport { ToolbarActionsComponentNgFactory as ToolbarActionsComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"toolbar-actions{display:flex;align-items:center;color:#656565}toolbar-actions context-actions-container{border-right:1px solid #e0e0e0;padding-right:5px;margin-right:5px}toolbar-actions .always-visible-actions .active{color:#1565c0}\"];\nexport { styles as styles };\n","<context-actions-container [compact]=\"true\"></context-actions-container>\n\n<div class=\"always-visible-actions\">\n    <button mat-icon-button (click)=\"toggleViewMode()\">\n        <mat-icon [svgIcon]=\"(viewMode | async) === 'list' ? 'view-list' : 'view-module'\"></mat-icon>\n    </button>\n    <button mat-icon-button (click)=\"ToggleDetails()\" [class.active]=\"activityOpen | async\">\n        <mat-icon svgIcon=\"info\"></mat-icon>\n    </button>\n</div>\n\n","export const AVAILABLE_SORTS: DriveSortOption[] = [\r\n    {name: 'file_size', viewName: 'Size'},\r\n    {name: 'name', viewName: 'Name'},\r\n    {name: 'updated_at', viewName: 'Last Modified'},\r\n    {name: 'created_at', viewName: 'Upload Date'},\r\n    {name: 'type', viewName: 'Type'},\r\n    {name: 'extension', viewName: 'Extension'},\r\n];\r\n\r\nexport interface DriveSortOption {\r\n    name: SortColumn;\r\n    viewName: string;\r\n}\r\n\r\nexport type SortColumn = 'file_size' | 'name' | 'updated_at' | 'created_at' | 'type' | 'extension';\r\nexport type SortDirection = 'desc'|'asc';\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\nimport { Select, Store } from '@ngxs/store';\nimport { ReloadPageEntries } from '../../state/actions/commands';\nimport { AVAILABLE_SORTS, DriveSortOption, SortColumn, SortDirection } from '../../entries/available-sorts';\nimport { DriveState } from '../../state/drive-state';\nimport { Observable } from 'rxjs';\nimport { DrivePage } from '../../state/models/drive-page';\n\n@Component({\n    selector: 'file-list-header',\n    templateUrl: './file-list-header.component.html',\n    styleUrls: ['./file-list-header.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FileListHeaderComponent {\n    @Select(DriveState.sortColumn) sortColumn$: Observable<DriveSortOption>;\n    @Select(DriveState.activePage) activePage$: Observable<DrivePage>;\n    public availableSorts = AVAILABLE_SORTS;\n\n    constructor(private store: Store) {}\n\n    public changeSort(sort: DriveSortOption) {\n        this.store.dispatch(new ReloadPageEntries({orderBy: sort.name}));\n    }\n\n    public changeDirection(direction: SortDirection) {\n        this.store.dispatch(new ReloadPageEntries({orderDir: direction}));\n    }\n\n    public sortIsActive(sort: DriveSortOption): boolean {\n        return this.store.selectSnapshot(DriveState.sortColumn) === sort.name;\n    }\n\n    public directionIsActive(direction: SortDirection): boolean {\n        return this.store.selectSnapshot(DriveState.sortDirection) === direction;\n    }\n\n    public getSortViewName(name: SortColumn): string {\n        return this.availableSorts.find(sort => sort.name === name).viewName;\n    }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { Select, Store } from '@ngxs/store';\nimport { ReloadPageEntries } from '../../state/actions/commands';\nimport { AVAILABLE_SORTS } from '../../entries/available-sorts';\nimport { DriveState } from '../../state/drive-state';\nimport { Observable } from 'rxjs';\nvar FileListHeaderComponent = /** @class */ (function () {\n    function FileListHeaderComponent(store) {\n        this.store = store;\n        this.availableSorts = AVAILABLE_SORTS;\n    }\n    FileListHeaderComponent.prototype.changeSort = function (sort) {\n        this.store.dispatch(new ReloadPageEntries({ orderBy: sort.name }));\n    };\n    FileListHeaderComponent.prototype.changeDirection = function (direction) {\n        this.store.dispatch(new ReloadPageEntries({ orderDir: direction }));\n    };\n    FileListHeaderComponent.prototype.sortIsActive = function (sort) {\n        return this.store.selectSnapshot(DriveState.sortColumn) === sort.name;\n    };\n    FileListHeaderComponent.prototype.directionIsActive = function (direction) {\n        return this.store.selectSnapshot(DriveState.sortDirection) === direction;\n    };\n    FileListHeaderComponent.prototype.getSortViewName = function (name) {\n        return this.availableSorts.find(function (sort) { return sort.name === name; }).viewName;\n    };\n    __decorate([\n        Select(DriveState.sortColumn),\n        __metadata(\"design:type\", Observable)\n    ], FileListHeaderComponent.prototype, \"sortColumn$\", void 0);\n    __decorate([\n        Select(DriveState.activePage),\n        __metadata(\"design:type\", Observable)\n    ], FileListHeaderComponent.prototype, \"activePage$\", void 0);\n    return FileListHeaderComponent;\n}());\nexport { FileListHeaderComponent };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./file-list-header.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../../../../node_modules/@angular/material/menu/typings/index.ngfactory\";\nimport * as i3 from \"@angular/material/menu\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"@angular/cdk/a11y\";\nimport * as i6 from \"../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i7 from \"@angular/material/icon\";\nimport * as i8 from \"../../../../common/core/translations/translate.directive\";\nimport * as i9 from \"../../../../common/core/translations/translations.service\";\nimport * as i10 from \"../../../../common/core/config/settings.service\";\nimport * as i11 from \"../../../../common/core/translations/translate.pipe\";\nimport * as i12 from \"@angular/cdk/overlay\";\nimport * as i13 from \"@angular/cdk/bidi\";\nimport * as i14 from \"../../drive-toolbar/toolbar-actions/toolbar-actions.component.ngfactory\";\nimport * as i15 from \"../../drive-toolbar/toolbar-actions/toolbar-actions.component\";\nimport * as i16 from \"@ngxs/store\";\nimport * as i17 from \"../../../../common/core/ui/context-menu/context-menu.service\";\nimport * as i18 from \"./file-list-header.component\";\nvar styles_FileListHeaderComponent = [i0.styles];\nvar RenderType_FileListHeaderComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_FileListHeaderComponent, data: {} });\nexport { RenderType_FileListHeaderComponent as RenderType_FileListHeaderComponent };\nfunction View_FileListHeaderComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 9, \"button\", [[\"class\", \"mat-menu-item\"], [\"mat-menu-item\", \"\"], [\"role\", \"menuitem\"]], [[2, \"active\", null], [2, \"mat-menu-item-highlighted\", null], [2, \"mat-menu-item-submenu-trigger\", null], [1, \"tabindex\", 0], [1, \"aria-disabled\", 0], [1, \"disabled\", 0]], [[null, \"click\"], [null, \"mouseenter\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 1)._checkDisabled($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"mouseenter\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 1)._handleMouseEnter() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"click\" === en)) {\n        var pd_2 = (_co.changeSort(_v.context.$implicit) !== false);\n        ad = (pd_2 && ad);\n    } return ad; }, i2.View_MatMenuItem_0, i2.RenderType_MatMenuItem)), i1.ɵdid(1, 180224, [[1, 4]], 0, i3.MatMenuItem, [i1.ElementRef, i4.DOCUMENT, i5.FocusMonitor, [2, i3.ɵf23]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵeld(3, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"check\"]], [[2, \"mat-icon-inline\", null]], null, null, i6.View_MatIcon_0, i6.RenderType_MatIcon)), i1.ɵdid(4, 638976, null, 0, i7.MatIcon, [i1.ElementRef, i7.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵeld(6, 0, null, 0, 2, \"span\", [[\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(7, 4341760, null, 0, i8.TranslateDirective, [i1.ElementRef, i9.Translations, i10.Settings], null, null), (_l()(), i1.ɵted(8, null, [\"\", \"\"])), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"]))], function (_ck, _v) { var currVal_7 = \"check\"; _ck(_v, 4, 0, currVal_7); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.sortIsActive(_v.context.$implicit); var currVal_1 = i1.ɵnov(_v, 1)._highlighted; var currVal_2 = i1.ɵnov(_v, 1)._triggersSubmenu; var currVal_3 = i1.ɵnov(_v, 1)._getTabIndex(); var currVal_4 = i1.ɵnov(_v, 1).disabled.toString(); var currVal_5 = (i1.ɵnov(_v, 1).disabled || null); _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3, currVal_4, currVal_5); var currVal_6 = i1.ɵnov(_v, 4).inline; _ck(_v, 3, 0, currVal_6); var currVal_8 = _v.context.$implicit.viewName; _ck(_v, 8, 0, currVal_8); }); }\nexport function View_FileListHeaderComponent_0(_l) { return i1.ɵvid(2, [i1.ɵpid(0, i11.TransPipe, [i9.Translations]), (_l()(), i1.ɵeld(1, 0, null, null, 66, \"div\", [[\"class\", \"sort-header\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(3, 0, null, null, 2, \"span\", [[\"class\", \"label\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(4, 4341760, null, 0, i8.TranslateDirective, [i1.ElementRef, i9.Translations, i10.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Sort by\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(7, 16777216, null, null, 17, \"button\", [[\"aria-haspopup\", \"true\"], [\"class\", \"no-style\"]], [[8, \"disabled\", 0], [1, \"aria-expanded\", 0]], [[null, \"mousedown\"], [null, \"keydown\"], [null, \"click\"]], function (_v, en, $event) { var ad = true; if ((\"mousedown\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 8)._handleMousedown($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"keydown\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 8)._handleKeydown($event) !== false);\n        ad = (pd_1 && ad);\n    } if ((\"click\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 8)._handleClick($event) !== false);\n        ad = (pd_2 && ad);\n    } return ad; }, null, null)), i1.ɵdid(8, 1196032, null, 0, i3.MatMenuTrigger, [i12.Overlay, i1.ElementRef, i1.ViewContainerRef, i3.MAT_MENU_SCROLL_STRATEGY, [2, i3.MatMenu], [8, null], [2, i13.Directionality], i5.FocusMonitor], { menu: [0, \"menu\"] }, null), i1.ɵpid(131072, i4.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(11, 0, null, null, 9, \"span\", [[\"class\", \"sort-button-content\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(13, 0, null, null, 3, \"span\", [], null, null, null, null, null)), (_l()(), i1.ɵted(14, null, [\"\", \"\"])), i1.ɵpid(131072, i4.AsyncPipe, [i1.ChangeDetectorRef]), i1.ɵppd(16, 1), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(18, 0, null, null, 1, \"mat-icon\", [[\"class\", \"arrow-icon mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"keyboard-arrow-down\"]], [[2, \"mat-icon-inline\", null]], null, null, i6.View_MatIcon_0, i6.RenderType_MatIcon)), i1.ɵdid(19, 638976, null, 0, i7.MatIcon, [i1.ElementRef, i7.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(22, 0, null, null, 1, \"mat-icon\", [[\"class\", \"mobile-sort-button-content mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"sort\"]], [[2, \"mat-icon-inline\", null]], null, null, i6.View_MatIcon_0, i6.RenderType_MatIcon)), i1.ɵdid(23, 638976, null, 0, i7.MatIcon, [i1.ElementRef, i7.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(26, 0, null, null, 40, \"mat-menu\", [[\"class\", \"drive-sort-menu\"]], null, null, null, i2.View_MatMenu_0, i2.RenderType_MatMenu)), i1.ɵdid(27, 1294336, [[\"menu\", 4]], 2, i3.MatMenu, [i1.ElementRef, i1.NgZone, i3.MAT_MENU_DEFAULT_OPTIONS], { panelClass: [0, \"panelClass\"] }, null), i1.ɵqud(603979776, 1, { items: 1 }), i1.ɵqud(335544320, 2, { lazyContent: 0 }), i1.ɵprd(2048, null, i3.ɵf23, null, [i3.MatMenu]), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(32, 0, null, 0, 2, \"div\", [[\"class\", \"title\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(33, 4341760, null, 0, i8.TranslateDirective, [i1.ElementRef, i9.Translations, i10.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Direction\"])), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(36, 0, null, 0, 9, \"button\", [[\"class\", \"mat-menu-item\"], [\"mat-menu-item\", \"\"], [\"role\", \"menuitem\"]], [[2, \"active\", null], [2, \"mat-menu-item-highlighted\", null], [2, \"mat-menu-item-submenu-trigger\", null], [1, \"tabindex\", 0], [1, \"aria-disabled\", 0], [1, \"disabled\", 0]], [[null, \"click\"], [null, \"mouseenter\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 37)._checkDisabled($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"mouseenter\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 37)._handleMouseEnter() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"click\" === en)) {\n        var pd_2 = (_co.changeDirection(\"asc\") !== false);\n        ad = (pd_2 && ad);\n    } return ad; }, i2.View_MatMenuItem_0, i2.RenderType_MatMenuItem)), i1.ɵdid(37, 180224, [[1, 4]], 0, i3.MatMenuItem, [i1.ElementRef, i4.DOCUMENT, i5.FocusMonitor, [2, i3.ɵf23]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵeld(39, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"check\"]], [[2, \"mat-icon-inline\", null]], null, null, i6.View_MatIcon_0, i6.RenderType_MatIcon)), i1.ɵdid(40, 638976, null, 0, i7.MatIcon, [i1.ElementRef, i7.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵeld(42, 0, null, 0, 2, \"span\", [[\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(43, 4341760, null, 0, i8.TranslateDirective, [i1.ElementRef, i9.Translations, i10.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Ascending\"])), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(47, 0, null, 0, 9, \"button\", [[\"class\", \"mat-menu-item\"], [\"mat-menu-item\", \"\"], [\"role\", \"menuitem\"]], [[2, \"active\", null], [2, \"mat-menu-item-highlighted\", null], [2, \"mat-menu-item-submenu-trigger\", null], [1, \"tabindex\", 0], [1, \"aria-disabled\", 0], [1, \"disabled\", 0]], [[null, \"click\"], [null, \"mouseenter\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 48)._checkDisabled($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"mouseenter\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 48)._handleMouseEnter() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"click\" === en)) {\n        var pd_2 = (_co.changeDirection(\"desc\") !== false);\n        ad = (pd_2 && ad);\n    } return ad; }, i2.View_MatMenuItem_0, i2.RenderType_MatMenuItem)), i1.ɵdid(48, 180224, [[1, 4]], 0, i3.MatMenuItem, [i1.ElementRef, i4.DOCUMENT, i5.FocusMonitor, [2, i3.ɵf23]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵeld(50, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"check\"]], [[2, \"mat-icon-inline\", null]], null, null, i6.View_MatIcon_0, i6.RenderType_MatIcon)), i1.ɵdid(51, 638976, null, 0, i7.MatIcon, [i1.ElementRef, i7.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵeld(53, 0, null, 0, 2, \"span\", [[\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(54, 4341760, null, 0, i8.TranslateDirective, [i1.ElementRef, i9.Translations, i10.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Descending\"])), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(58, 0, null, 0, 0, \"div\", [[\"class\", \"separator\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(60, 0, null, 0, 2, \"div\", [[\"class\", \"title\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(61, 4341760, null, 0, i8.TranslateDirective, [i1.ElementRef, i9.Translations, i10.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Sort By\"])), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵand(16777216, null, 0, 1, null, View_FileListHeaderComponent_1)), i1.ɵdid(65, 278528, null, 0, i4.NgForOf, [i1.ViewContainerRef, i1.TemplateRef, i1.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵeld(69, 0, null, null, 1, \"toolbar-actions\", [], null, null, null, i14.View_ToolbarActionsComponent_0, i14.RenderType_ToolbarActionsComponent)), i1.ɵdid(70, 49152, null, 0, i15.ToolbarActionsComponent, [i16.Store, i17.ContextMenu], null, null)], function (_ck, _v) { var _co = _v.component; var currVal_2 = i1.ɵnov(_v, 27); _ck(_v, 8, 0, currVal_2); var currVal_5 = \"keyboard-arrow-down\"; _ck(_v, 19, 0, currVal_5); var currVal_7 = \"sort\"; _ck(_v, 23, 0, currVal_7); var currVal_8 = \"drive-sort-menu\"; _ck(_v, 27, 0, currVal_8); var currVal_16 = \"check\"; _ck(_v, 40, 0, currVal_16); var currVal_24 = \"check\"; _ck(_v, 51, 0, currVal_24); var currVal_25 = _co.availableSorts; _ck(_v, 65, 0, currVal_25); }, function (_ck, _v) { var _co = _v.component; var tmp_0_0 = null; var currVal_0 = (((tmp_0_0 = i1.ɵunv(_v, 7, 0, i1.ɵnov(_v, 9).transform(_co.activePage$))) == null) ? null : tmp_0_0.disableSort); var currVal_1 = (i1.ɵnov(_v, 8).menuOpen || null); _ck(_v, 7, 0, currVal_0, currVal_1); var currVal_3 = i1.ɵunv(_v, 14, 0, _ck(_v, 16, 0, i1.ɵnov(_v, 0), _co.getSortViewName(i1.ɵunv(_v, 14, 0, i1.ɵnov(_v, 15).transform(_co.sortColumn$))))); _ck(_v, 14, 0, currVal_3); var currVal_4 = i1.ɵnov(_v, 19).inline; _ck(_v, 18, 0, currVal_4); var currVal_6 = i1.ɵnov(_v, 23).inline; _ck(_v, 22, 0, currVal_6); var currVal_9 = _co.directionIsActive(\"asc\"); var currVal_10 = i1.ɵnov(_v, 37)._highlighted; var currVal_11 = i1.ɵnov(_v, 37)._triggersSubmenu; var currVal_12 = i1.ɵnov(_v, 37)._getTabIndex(); var currVal_13 = i1.ɵnov(_v, 37).disabled.toString(); var currVal_14 = (i1.ɵnov(_v, 37).disabled || null); _ck(_v, 36, 0, currVal_9, currVal_10, currVal_11, currVal_12, currVal_13, currVal_14); var currVal_15 = i1.ɵnov(_v, 40).inline; _ck(_v, 39, 0, currVal_15); var currVal_17 = _co.directionIsActive(\"desc\"); var currVal_18 = i1.ɵnov(_v, 48)._highlighted; var currVal_19 = i1.ɵnov(_v, 48)._triggersSubmenu; var currVal_20 = i1.ɵnov(_v, 48)._getTabIndex(); var currVal_21 = i1.ɵnov(_v, 48).disabled.toString(); var currVal_22 = (i1.ɵnov(_v, 48).disabled || null); _ck(_v, 47, 0, currVal_17, currVal_18, currVal_19, currVal_20, currVal_21, currVal_22); var currVal_23 = i1.ɵnov(_v, 51).inline; _ck(_v, 50, 0, currVal_23); }); }\nexport function View_FileListHeaderComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"file-list-header\", [], null, null, null, View_FileListHeaderComponent_0, RenderType_FileListHeaderComponent)), i1.ɵdid(1, 49152, null, 0, i18.FileListHeaderComponent, [i16.Store], null, null)], null, null); }\nvar FileListHeaderComponentNgFactory = i1.ɵccf(\"file-list-header\", i18.FileListHeaderComponent, View_FileListHeaderComponent_Host_0, {}, {}, []);\nexport { FileListHeaderComponentNgFactory as FileListHeaderComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"file-list-header{display:flex;align-items:center;border-bottom:1px solid #e0e0e0;padding-bottom:8px;margin:0 28px;color:rgba(0,0,0,.87)}file-list-header toolbar-actions{margin-left:auto}file-list-header .sort-header .label{color:rgba(0,0,0,.54);padding-right:3px}file-list-header .sort-header .arrow-icon{width:14px;height:14px;vertical-align:middle}file-list-header .sort-header button:disabled{color:rgba(0,0,0,.54);cursor:default}file-list-header .sort-header .mobile-sort-button-content,file-list-header .sort-header button:disabled .mat-icon{display:none}@media only screen and (max-width:450px){file-list-header .sort-header .label,file-list-header .sort-header .sort-button-content{display:none}file-list-header .sort-header .mobile-sort-button-content{display:inline-block}}.drive-sort-menu .mat-menu-item{padding-left:8px;line-height:35px;height:35px;font-size:1.5rem}.drive-sort-menu .mat-menu-item.active{color:#1565c0}.drive-sort-menu .mat-menu-item.active .mat-icon{visibility:visible;color:inherit}.drive-sort-menu .mat-menu-item .mat-icon{visibility:hidden;margin-right:0;width:20px;height:20px}.drive-sort-menu .separator{height:1px;background-color:#e0e0e0;margin:5px 0 20px}.drive-sort-menu .title{text-transform:uppercase;padding-left:32px;font-size:1.2rem;font-weight:500;margin-bottom:10px}\"];\nexport { styles as styles };\n","<div class=\"sort-header\">\r\n    <span class=\"label\" trans>Sort by</span>\r\n    <button class=\"no-style\" [matMenuTriggerFor]=\"menu\" [disabled]=\"(activePage$ | async)?.disableSort\">\r\n        <span class=\"sort-button-content\">\r\n            <span>{{getSortViewName(sortColumn$ | async) | trans}}</span>\r\n            <mat-icon svgIcon=\"keyboard-arrow-down\" class=\"arrow-icon\"></mat-icon>\r\n        </span>\r\n        <mat-icon svgIcon=\"sort\" class=\"mobile-sort-button-content\"></mat-icon>\r\n    </button>\r\n    <mat-menu #menu=\"matMenu\" class=\"drive-sort-menu\">\r\n        <div class=\"title\" trans>Direction</div>\r\n        <button mat-menu-item (click)=\"changeDirection('asc')\" [class.active]=\"directionIsActive('asc')\">\r\n            <mat-icon svgIcon=\"check\"></mat-icon>\r\n            <span trans>Ascending</span>\r\n        </button>\r\n        <button mat-menu-item (click)=\"changeDirection('desc')\" [class.active]=\"directionIsActive('desc')\">\r\n            <mat-icon svgIcon=\"check\"></mat-icon>\r\n            <span trans>Descending</span>\r\n        </button>\r\n        <div class=\"separator\"></div>\r\n        <div class=\"title\" trans>Sort By</div>\r\n        <button mat-menu-item *ngFor=\"let sort of availableSorts\" (click)=\"changeSort(sort)\" [class.active]=\"sortIsActive(sort)\">\r\n            <mat-icon svgIcon=\"check\"></mat-icon>\r\n            <span trans>{{sort.viewName}}</span>\r\n        </button>\r\n    </mat-menu>\r\n</div>\r\n<toolbar-actions></toolbar-actions>","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport { UploadedFile } from '../uploaded-file';\nexport function readUploadedFolders(entries) {\n    return __awaiter(this, void 0, void 0, function () {\n        var files, _a, _b, _i, key, entry, _c, _d, _e, _f;\n        return __generator(this, function (_g) {\n            switch (_g.label) {\n                case 0:\n                    files = [];\n                    _a = [];\n                    for (_b in entries)\n                        _a.push(_b);\n                    _i = 0;\n                    _g.label = 1;\n                case 1:\n                    if (!(_i < _a.length)) return [3 /*break*/, 6];\n                    key = _a[_i];\n                    entry = entries[key];\n                    if (!!entry.isDirectory) return [3 /*break*/, 3];\n                    _d = (_c = files).push;\n                    return [4 /*yield*/, transformFileEntry(entry)];\n                case 2:\n                    _d.apply(_c, [_g.sent()]);\n                    return [3 /*break*/, 5];\n                case 3:\n                    _f = (_e = files).concat;\n                    return [4 /*yield*/, readDirRecursive(entry)];\n                case 4:\n                    files = _f.apply(_e, [_g.sent()]);\n                    _g.label = 5;\n                case 5:\n                    _i++;\n                    return [3 /*break*/, 1];\n                case 6: return [2 /*return*/, files];\n            }\n        });\n    });\n}\nfunction readDirRecursive(entry, files) {\n    if (files === void 0) { files = []; }\n    return __awaiter(this, void 0, void 0, function () {\n        var entries, _a, _b, _i, key, childEntry, _c, _d;\n        return __generator(this, function (_e) {\n            switch (_e.label) {\n                case 0: return [4 /*yield*/, readEntries(entry)];\n                case 1:\n                    entries = _e.sent();\n                    _a = [];\n                    for (_b in entries)\n                        _a.push(_b);\n                    _i = 0;\n                    _e.label = 2;\n                case 2:\n                    if (!(_i < _a.length)) return [3 /*break*/, 7];\n                    key = _a[_i];\n                    childEntry = entries[key];\n                    if (!childEntry.isDirectory) return [3 /*break*/, 4];\n                    return [4 /*yield*/, readDirRecursive(childEntry, files)];\n                case 3:\n                    _e.sent();\n                    return [3 /*break*/, 6];\n                case 4:\n                    _d = (_c = files).push;\n                    return [4 /*yield*/, transformFileEntry(childEntry)];\n                case 5:\n                    _d.apply(_c, [_e.sent()]);\n                    _e.label = 6;\n                case 6:\n                    _i++;\n                    return [3 /*break*/, 2];\n                case 7: return [2 /*return*/, files];\n            }\n        });\n    });\n}\nfunction readEntries(dir) {\n    return new Promise(function (resolve) {\n        var reader = dir.createReader();\n        reader.readEntries(function (entries) { return resolve(entries); });\n    });\n}\nfunction transformFileEntry(entry) {\n    return new Promise(function (resolve) {\n        entry.file(function (file) {\n            resolve(new UploadedFile(file, entry.fullPath));\n        });\n    });\n}\n","import { UploadedFile } from '../uploaded-file';\r\n\r\nexport async function readUploadedFolders(entries: WebKitEntry[]): Promise<UploadedFile[]> {\r\n    let files = [];\r\n\r\n    for (const key in entries) {\r\n        const entry = entries[key];\r\n\r\n        if ( ! entry.isDirectory) {\r\n            files.push(await transformFileEntry(entry as WebKitFileEntry));\r\n        } else {\r\n            files = files.concat(await readDirRecursive(entry as WebKitDirectoryEntry));\r\n        }\r\n    }\r\n\r\n    return files;\r\n}\r\n\r\nasync function readDirRecursive(entry: WebKitDirectoryEntry, files = []) {\r\n    const entries = await readEntries(entry);\r\n\r\n    for (const key in entries) {\r\n        const childEntry = entries[key];\r\n\r\n        if (childEntry.isDirectory) {\r\n            await readDirRecursive(childEntry as WebKitDirectoryEntry, files);\r\n        } else {\r\n            files.push(await transformFileEntry(childEntry as WebKitFileEntry));\r\n        }\r\n    }\r\n\r\n    return files;\r\n}\r\n\r\nfunction readEntries(dir: WebKitDirectoryEntry): Promise<WebKitEntry[]> {\r\n    return new Promise(resolve => {\r\n        const reader = dir.createReader();\r\n        reader.readEntries(entries => resolve(entries as any));\r\n    });\r\n}\r\n\r\nfunction transformFileEntry(entry: WebKitFileEntry) {\r\n    return new Promise(resolve => {\r\n        entry.file((file: any) => {\r\n            resolve(new UploadedFile(file as File, entry.fullPath));\r\n        });\r\n    });\r\n}\r\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport { ElementRef, OnDestroy, EventEmitter, OnInit } from '@angular/core';\nimport { openUploadWindow } from '../utils/open-upload-window';\nimport { readUploadedFolders } from '../utils/read-uploaded-folders';\nvar UploadDropzoneDirective = /** @class */ (function () {\n    function UploadDropzoneDirective(el) {\n        this.el = el;\n        this.filesDropped = new EventEmitter();\n        this.disableDropzoneClick = false;\n        this.disableDropzone = false;\n    }\n    UploadDropzoneDirective.prototype.ngOnInit = function () {\n        var _this = this;\n        var el = this.el.nativeElement;\n        el.addEventListener('dragenter', function (e) { return _this.handleDragEnter(e); });\n        el.addEventListener('dragover', function (e) { return _this.handleDragOver(e); });\n        el.addEventListener('dragleave', function (e) { return _this.handleDragLeave(e); });\n        el.addEventListener('drop', function (e) { return _this.handleDrop(e); });\n        if (!this.disableDropzoneClick) {\n            el.addEventListener('click', function () { return _this.handleClick(); });\n        }\n    };\n    UploadDropzoneDirective.prototype.ngOnDestroy = function () {\n        this.removeClassesFromDropzone();\n    };\n    UploadDropzoneDirective.prototype.handleClick = function () {\n        var _this = this;\n        if (this.disableDropzone)\n            return;\n        openUploadWindow().then(function (files) {\n            _this.emitUploadEvent(files);\n        });\n    };\n    UploadDropzoneDirective.prototype.handleDragEnter = function (e) {\n        if (this.dropzoneDisabled(e))\n            return;\n        this.el.nativeElement.classList.add('file-over-dropzone');\n    };\n    UploadDropzoneDirective.prototype.handleDragOver = function (e) {\n        if (e.preventDefault)\n            e.preventDefault();\n        e.dataTransfer.dropEffect = this.dropzoneDisabled(e) ? 'none' : 'move';\n        return false;\n    };\n    UploadDropzoneDirective.prototype.handleDragLeave = function (e) {\n        var newEl = document.elementFromPoint(e.clientX, e.clientY);\n        if (this.el.nativeElement.contains(newEl))\n            return;\n        this.removeClassesFromDropzone();\n    };\n    UploadDropzoneDirective.prototype.handleDrop = function (e) {\n        return __awaiter(this, void 0, void 0, function () {\n            var items, _a;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        e.stopPropagation();\n                        e.preventDefault();\n                        this.removeClassesFromDropzone();\n                        if (this.dropzoneDisabled(e) || !e.dataTransfer.items)\n                            return [2 /*return*/];\n                        items = Array.from(e.dataTransfer.items)\n                            .filter(function (item) { return item.kind === 'file'; })\n                            .map(function (item) {\n                            return item.webkitGetAsEntry();\n                        });\n                        if (!items.length) return [3 /*break*/, 2];\n                        _a = this.emitUploadEvent;\n                        return [4 /*yield*/, readUploadedFolders(items)];\n                    case 1:\n                        _a.apply(this, [_b.sent()]);\n                        _b.label = 2;\n                    case 2: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    UploadDropzoneDirective.prototype.emitUploadEvent = function (files) {\n        this.filesDropped.emit(files);\n    };\n    UploadDropzoneDirective.prototype.removeClassesFromDropzone = function () {\n        this.el.nativeElement.classList.remove('file-over-dropzone');\n    };\n    UploadDropzoneDirective.prototype.dropzoneDisabled = function (e) {\n        var hasFiles = e.dataTransfer.types.find(function (type) { return type.toLowerCase() === 'files'; });\n        return this.disableDropzone || !hasFiles;\n    };\n    return UploadDropzoneDirective;\n}());\nexport { UploadDropzoneDirective };\n","import { Directive, ElementRef, OnDestroy, EventEmitter, Output, Input, OnInit } from '@angular/core';\r\nimport { openUploadWindow } from '../utils/open-upload-window';\r\nimport { UploadedFile } from '../uploaded-file';\r\nimport { readUploadedFolders } from '../utils/read-uploaded-folders';\r\n\r\n@Directive({\r\n    selector: '[fileDropzone]',\r\n})\r\nexport class UploadDropzoneDirective implements OnInit, OnDestroy {\r\n    @Output() filesDropped: EventEmitter<UploadedFile[]> = new EventEmitter();\r\n    @Input() disableDropzoneClick = false;\r\n    @Input() disableDropzone = false;\r\n\r\n    constructor(protected el: ElementRef) {}\r\n\r\n    ngOnInit() {\r\n        const el = this.el.nativeElement;\r\n        el.addEventListener('dragenter', (e) => this.handleDragEnter(e));\r\n        el.addEventListener('dragover', (e) => this.handleDragOver(e));\r\n        el.addEventListener('dragleave', (e) => this.handleDragLeave(e));\r\n        el.addEventListener('drop', (e) => this.handleDrop(e));\r\n\r\n        if ( ! this.disableDropzoneClick) {\r\n            el.addEventListener('click', () => this.handleClick());\r\n        }\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        this.removeClassesFromDropzone();\r\n    }\r\n\r\n    protected handleClick() {\r\n        if (this.disableDropzone) return;\r\n        openUploadWindow().then(files => {\r\n            this.emitUploadEvent(files);\r\n        });\r\n    }\r\n\r\n    public handleDragEnter(e) {\r\n        if (this.dropzoneDisabled(e)) return;\r\n        this.el.nativeElement.classList.add('file-over-dropzone');\r\n    }\r\n\r\n    public handleDragOver(e) {\r\n        if (e.preventDefault) e.preventDefault();\r\n        e.dataTransfer.dropEffect = this.dropzoneDisabled(e) ? 'none' : 'move';\r\n        return false;\r\n    }\r\n\r\n    public handleDragLeave(e: MouseEvent) {\r\n        const newEl = document.elementFromPoint(e.clientX, e.clientY);\r\n        if (this.el.nativeElement.contains(newEl)) return;\r\n        this.removeClassesFromDropzone();\r\n    }\r\n\r\n    public async handleDrop(e) {\r\n        e.stopPropagation();\r\n        e.preventDefault();\r\n        this.removeClassesFromDropzone();\r\n        if (this.dropzoneDisabled(e) || !e.dataTransfer.items) return;\r\n\r\n        const items = Array.from(e.dataTransfer.items)\r\n            .filter((item: DataTransferItem) => item.kind === 'file')\r\n            .map((item: DataTransferItem) => {\r\n                return item.webkitGetAsEntry();\r\n            });\r\n\r\n        if (items.length) {\r\n            this.emitUploadEvent(await readUploadedFolders(items));\r\n        }\r\n    }\r\n\r\n    protected emitUploadEvent(files: UploadedFile[]) {\r\n        this.filesDropped.emit(files);\r\n    }\r\n\r\n    protected removeClassesFromDropzone() {\r\n        this.el.nativeElement.classList.remove('file-over-dropzone');\r\n    }\r\n\r\n    protected dropzoneDisabled(e: DragEvent) {\r\n        const hasFiles = e.dataTransfer.types.find(type => type.toLowerCase() === 'files');\r\n        return this.disableDropzone || ! hasFiles;\r\n    }\r\n}\r\n","import { Input, ElementRef, OnInit } from '@angular/core';\r\nimport { fromEvent } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\nexport abstract class InfiniteScroll implements OnInit {\r\n    @Input() threshold: number | string = 50;\r\n\r\n    protected abstract el: ElementRef;\r\n\r\n    ngOnInit() {\r\n        fromEvent(this.el.nativeElement, 'scroll', {capture: true})\r\n            .pipe(debounceTime(20))\r\n            .subscribe((e: Event) => this.onScroll(e.target as HTMLElement));\r\n    }\r\n\r\n    protected onScroll(target: HTMLElement) {\r\n        if ( ! this.canLoadMore() || this.isLoading()) return;\r\n\r\n        const offset = parseInt(this.threshold as string);\r\n\r\n        if (target.scrollTop + target.offsetHeight >= target.scrollHeight - offset) {\r\n            this.loadMoreItems();\r\n        }\r\n    }\r\n\r\n    protected abstract loadMoreItems();\r\n    protected abstract canLoadMore(): boolean;\r\n    protected abstract isLoading(): boolean;\r\n}\r\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { ElementRef } from '@angular/core';\nimport { LoadMoreEntries } from '../state/actions/commands';\nimport { Store } from '@ngxs/store';\nimport { DriveState } from '../state/drive-state';\nimport { InfiniteScroll } from 'common/core/ui/infinite-scroll/infinite.scroll';\nvar DriveInfiniteScrollDirective = /** @class */ (function (_super) {\n    __extends(DriveInfiniteScrollDirective, _super);\n    function DriveInfiniteScrollDirective(el, store) {\n        var _this = _super.call(this) || this;\n        _this.el = el;\n        _this.store = store;\n        return _this;\n    }\n    DriveInfiniteScrollDirective.prototype.loadMoreItems = function () {\n        var page = this.store.selectSnapshot(DriveState.currentPage) + 1;\n        this.store.dispatch(new LoadMoreEntries({ page: page }));\n    };\n    DriveInfiniteScrollDirective.prototype.isLoading = function () {\n        return this.store.selectSnapshot(DriveState.loading);\n    };\n    DriveInfiniteScrollDirective.prototype.canLoadMore = function () {\n        return this.store.selectSnapshot(DriveState.canLoadMoreEntries);\n    };\n    return DriveInfiniteScrollDirective;\n}(InfiniteScroll));\nexport { DriveInfiniteScrollDirective };\n","import { Directive, ElementRef } from '@angular/core';\nimport { LoadMoreEntries } from '../state/actions/commands';\nimport { Store } from '@ngxs/store';\nimport { DriveState } from '../state/drive-state';\nimport { InfiniteScroll } from 'common/core/ui/infinite-scroll/infinite.scroll';\n\n@Directive({\n    selector: '[driveInfiniteScroll]'\n})\nexport class DriveInfiniteScrollDirective extends InfiniteScroll {\n    constructor(\n        protected el: ElementRef,\n        protected store: Store\n    ) {\n        super();\n    }\n\n    protected loadMoreItems() {\n        const page = this.store.selectSnapshot(DriveState.currentPage) + 1;\n        this.store.dispatch(new LoadMoreEntries({page}));\n    }\n\n    protected isLoading(): boolean {\n        return this.store.selectSnapshot(DriveState.loading);\n    }\n\n    protected canLoadMore(): boolean {\n        return this.store.selectSnapshot(DriveState.canLoadMoreEntries);\n    }\n}\n","import { AfterViewInit, Directive, ElementRef } from '@angular/core';\nimport { Select } from '@ngxs/store';\nimport { DriveState } from '../state/drive-state';\nimport { Observable } from 'rxjs';\n\n@Directive({\n    selector: '[toggleSelectedClass]'\n})\nexport class ToggleSelectedClassDirective implements AfterViewInit {\n    @Select(DriveState.selectedEntryIds) selectedEntryIds: Observable<number[]>;\n\n    constructor(private el: ElementRef) {}\n\n    ngAfterViewInit() {\n        this.selectedEntryIds.subscribe(ids => {\n            const els = this.el.nativeElement.querySelectorAll('.drive-entry');\n            if ( ! els.length) return;\n\n            Array.from(els).forEach((el: HTMLElement) => {\n                const selected = ids.indexOf(parseInt(el.dataset.id, 10)) > -1;\n\n                if (selected) {\n                    el.classList.add('selected');\n                } else {\n                    el.classList.remove('selected');\n                }\n            });\n        });\n    }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { AfterViewInit, ElementRef } from '@angular/core';\nimport { Select } from '@ngxs/store';\nimport { DriveState } from '../state/drive-state';\nimport { Observable } from 'rxjs';\nvar ToggleSelectedClassDirective = /** @class */ (function () {\n    function ToggleSelectedClassDirective(el) {\n        this.el = el;\n    }\n    ToggleSelectedClassDirective.prototype.ngAfterViewInit = function () {\n        var _this = this;\n        this.selectedEntryIds.subscribe(function (ids) {\n            var els = _this.el.nativeElement.querySelectorAll('.drive-entry');\n            if (!els.length)\n                return;\n            Array.from(els).forEach(function (el) {\n                var selected = ids.indexOf(parseInt(el.dataset.id, 10)) > -1;\n                if (selected) {\n                    el.classList.add('selected');\n                }\n                else {\n                    el.classList.remove('selected');\n                }\n            });\n        });\n    };\n    __decorate([\n        Select(DriveState.selectedEntryIds),\n        __metadata(\"design:type\", Observable)\n    ], ToggleSelectedClassDirective.prototype, \"selectedEntryIds\", void 0);\n    return ToggleSelectedClassDirective;\n}());\nexport { ToggleSelectedClassDirective };\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding } from '@angular/core';\nimport { Select, Store } from '@ngxs/store';\nimport { DriveState } from '../../state/drive-state';\nimport { Observable } from 'rxjs';\nimport { DriveEntry } from '../../files/models/drive-entry';\n\n@Component({\n    selector: 'entry-drag-preview',\n    templateUrl: './entry-drag-preview.component.html',\n    styleUrls: ['./entry-drag-preview.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EntryDragPreviewComponent {\n    @Select(DriveState.selectedEntries) entries: Observable<DriveEntry[]>;\n    @HostBinding('class') className = 'files-grid-item-footer';\n    @HostBinding('class.hidden') get dragging() {\n        return !this.store.selectSnapshot(DriveState.dragging);\n    }\n\n    constructor(private store: Store) {}\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { Select, Store } from '@ngxs/store';\nimport { DriveState } from '../../state/drive-state';\nimport { Observable } from 'rxjs';\nvar EntryDragPreviewComponent = /** @class */ (function () {\n    function EntryDragPreviewComponent(store) {\n        this.store = store;\n        this.className = 'files-grid-item-footer';\n    }\n    Object.defineProperty(EntryDragPreviewComponent.prototype, \"dragging\", {\n        get: function () {\n            return !this.store.selectSnapshot(DriveState.dragging);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    __decorate([\n        Select(DriveState.selectedEntries),\n        __metadata(\"design:type\", Observable)\n    ], EntryDragPreviewComponent.prototype, \"entries\", void 0);\n    return EntryDragPreviewComponent;\n}());\nexport { EntryDragPreviewComponent };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./entry-drag-preview.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../files/components/file-icon/file-icon.component.ngfactory\";\nimport * as i3 from \"../../files/components/file-icon/file-icon.component\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"./entry-drag-preview.component\";\nimport * as i6 from \"@ngxs/store\";\nvar styles_EntryDragPreviewComponent = [i0.styles];\nvar RenderType_EntryDragPreviewComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_EntryDragPreviewComponent, data: {} });\nexport { RenderType_EntryDragPreviewComponent as RenderType_EntryDragPreviewComponent };\nfunction View_EntryDragPreviewComponent_3(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"div\", [[\"class\", \"selected-entry-count\"]], null, null, null, null, null)), (_l()(), i1.ɵted(1, null, [\"\", \"\"]))], null, function (_ck, _v) { var currVal_0 = _v.parent.parent.context.ngIf.length; _ck(_v, 1, 0, currVal_0); }); }\nfunction View_EntryDragPreviewComponent_2(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 10, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(2, 0, null, null, 1, \"file-icon\", [], null, null, null, i2.View_FileIconComponent_0, i2.RenderType_FileIconComponent)), i1.ɵdid(3, 573440, null, 0, i3.FileIconComponent, [], { type: [0, \"type\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(5, 0, null, null, 1, \"div\", [[\"class\", \"text\"]], null, null, null, null, null)), (_l()(), i1.ɵted(6, null, [\"\", \"\"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_EntryDragPreviewComponent_3)), i1.ɵdid(9, 16384, null, 0, i4.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"]))], function (_ck, _v) { var currVal_0 = _v.parent.context.ngIf[0].type; _ck(_v, 3, 0, currVal_0); var currVal_2 = (_v.parent.context.ngIf.length > 1); _ck(_v, 9, 0, currVal_2); }, function (_ck, _v) { var currVal_1 = _v.parent.context.ngIf[0].name; _ck(_v, 6, 0, currVal_1); }); }\nfunction View_EntryDragPreviewComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 4, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_EntryDragPreviewComponent_2)), i1.ɵdid(3, 16384, null, 0, i4.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var currVal_0 = _v.context.ngIf[0]; _ck(_v, 3, 0, currVal_0); }, null); }\nexport function View_EntryDragPreviewComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵand(16777216, null, null, 2, null, View_EntryDragPreviewComponent_1)), i1.ɵdid(1, 16384, null, 0, i4.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), i1.ɵpid(131072, i4.AsyncPipe, [i1.ChangeDetectorRef])], function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵunv(_v, 1, 0, i1.ɵnov(_v, 2).transform(_co.entries)); _ck(_v, 1, 0, currVal_0); }, null); }\nexport function View_EntryDragPreviewComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"entry-drag-preview\", [], [[8, \"className\", 0], [2, \"hidden\", null]], null, null, View_EntryDragPreviewComponent_0, RenderType_EntryDragPreviewComponent)), i1.ɵdid(1, 49152, null, 0, i5.EntryDragPreviewComponent, [i6.Store], null, null)], null, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 1).className; var currVal_1 = i1.ɵnov(_v, 1).dragging; _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nvar EntryDragPreviewComponentNgFactory = i1.ɵccf(\"entry-drag-preview\", i5.EntryDragPreviewComponent, View_EntryDragPreviewComponent_Host_0, {}, {}, []);\nexport { EntryDragPreviewComponentNgFactory as EntryDragPreviewComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"entry-drag-preview{position:fixed;top:0;left:0;z-index:10;background-color:#e8f0fe;color:#1976d2;width:185px;box-shadow:0 3px 3px -2px rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12);pointer-events:none}entry-drag-preview .selected-entry-count{width:22px;height:22px;line-height:22px;text-align:center;font-weight:500;background-color:#689f38;color:#fff;position:absolute;top:-7px;right:-7px;border-radius:50%;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}\"];\nexport { styles as styles };\n","<ng-container *ngIf=\"entries | async as selectedEntries\">\n    <ng-container *ngIf=\"selectedEntries[0]\">\n        <file-icon [type]=\"selectedEntries[0].type\"></file-icon>\n        <div class=\"text\">{{selectedEntries[0].name}}</div>\n        <div class=\"selected-entry-count\" *ngIf=\"selectedEntries.length > 1\">{{selectedEntries.length}}</div>\n    </ng-container>\n</ng-container>","import { Component, OnInit, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, ElementRef, OnDestroy, } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Select, Store } from '@ngxs/store';\nimport { DriveState} from './state/drive-state';\nimport { DriveDomCacheService } from './interactions/drive-dom-cache.service';\nimport { EntryDragPreviewComponent } from './interactions/entry-drag-preview/entry-drag-preview.component';\nimport { Observable, Subscription } from 'rxjs';\nimport {\n    LoadUserFolders,\n    LoadUserSpaceUsage,\n    ResetState,\n    SetCurrentUser, SetViewMode,\n    ToggleSidebar,\n    UploadFiles\n} from './state/actions/commands';\nimport { UploadedFile } from 'common/uploads/uploaded-file';\nimport { Settings } from 'common/core/config/settings.service';\nimport { CurrentUser } from 'common/auth/current-user';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { BreakpointChanged } from './state/actions/events';\nimport { VIEW_MODE_KEY } from './state/models/drive-state-model';\nimport { LocalStorage } from 'common/core/services/local-storage.service';\n\n@Component({\n    selector: 'drive',\n    templateUrl: './drive.component.html',\n    styleUrls: ['./drive.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DriveComponent implements OnInit, OnDestroy {\n    @ViewChild('scrollContainer', {read: ElementRef}) scrollContainer: ElementRef;\n    @ViewChild('filesContainer') filesContainer: ElementRef;\n    @ViewChild(EntryDragPreviewComponent, {read: ElementRef}) dragPreview: ElementRef;\n    @Select(DriveState.dragging) dragging: Observable<boolean>;\n    @Select(DriveState.detailsOpen) activityOpen$: Observable<boolean>;\n    @Select(DriveState.sidebarOpen) sidebarOpen$: Observable<boolean>;\n    @Select(DriveState.loading) loading$: Observable<boolean>;\n    @Select(DriveState.isMobile) isMobile$: Observable<boolean>;\n    @Select(DriveState.canUpload) canUpload$: Observable<boolean>;\n\n    private subscriptions: Subscription[] = [];\n\n    constructor(\n        private store: Store,\n        private route: ActivatedRoute,\n        private currentUser: CurrentUser,\n        private localStorage: LocalStorage,\n        private domCache: DriveDomCacheService,\n        private breakpoints: BreakpointObserver,\n        public settings: Settings,\n    ) {}\n\n    ngOnInit() {\n        this.setViewMode();\n        this.cacheDemoElements();\n        this.observeBreakpointChanges();\n        this.store.dispatch(new LoadUserFolders());\n        this.store.dispatch(new LoadUserSpaceUsage());\n\n        // TODO: refactor this once auth is moved to it's own store\n        this.store.dispatch(new SetCurrentUser(this.currentUser.getModel()));\n        this.currentUser.userChanged.subscribe(user => {\n            this.store.dispatch(new SetCurrentUser(user));\n        });\n    }\n\n    ngOnDestroy() {\n        this.store.dispatch(ResetState);\n        this.subscriptions.forEach(sub => sub.unsubscribe());\n        this.subscriptions = [];\n    }\n\n    public uploadFiles(files: UploadedFile[]) {\n       this.store.dispatch(new UploadFiles(files));\n    }\n\n    public toggleSidebar() {\n        this.store.dispatch(new ToggleSidebar());\n    }\n\n    private cacheDemoElements() {\n        this.domCache.filesCont = this.filesContainer.nativeElement;\n        this.domCache.scrollCont = this.scrollContainer.nativeElement;\n        this.domCache.dragPreview = this.dragPreview.nativeElement;\n    }\n\n    private setViewMode() {\n        this.store.dispatch(new SetViewMode(\n            this.localStorage.get(VIEW_MODE_KEY, 'grid'))\n        );\n    }\n\n    private observeBreakpointChanges() {\n        const sub = this.breakpoints.observe('(max-width: 1100px)').subscribe(result => {\n            this.store.dispatch(new BreakpointChanged({isMobile: result.matches}));\n        });\n\n        this.subscriptions.push(sub);\n    }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { OnInit, ElementRef, OnDestroy, } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Select, Store } from '@ngxs/store';\nimport { DriveState } from './state/drive-state';\nimport { DriveDomCacheService } from './interactions/drive-dom-cache.service';\nimport { Observable } from 'rxjs';\nimport { LoadUserFolders, LoadUserSpaceUsage, ResetState, SetCurrentUser, SetViewMode, ToggleSidebar, UploadFiles } from './state/actions/commands';\nimport { Settings } from 'common/core/config/settings.service';\nimport { CurrentUser } from 'common/auth/current-user';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { BreakpointChanged } from './state/actions/events';\nimport { VIEW_MODE_KEY } from './state/models/drive-state-model';\nimport { LocalStorage } from 'common/core/services/local-storage.service';\nvar DriveComponent = /** @class */ (function () {\n    function DriveComponent(store, route, currentUser, localStorage, domCache, breakpoints, settings) {\n        this.store = store;\n        this.route = route;\n        this.currentUser = currentUser;\n        this.localStorage = localStorage;\n        this.domCache = domCache;\n        this.breakpoints = breakpoints;\n        this.settings = settings;\n        this.subscriptions = [];\n    }\n    DriveComponent.prototype.ngOnInit = function () {\n        var _this = this;\n        this.setViewMode();\n        this.cacheDemoElements();\n        this.observeBreakpointChanges();\n        this.store.dispatch(new LoadUserFolders());\n        this.store.dispatch(new LoadUserSpaceUsage());\n        // TODO: refactor this once auth is moved to it's own store\n        this.store.dispatch(new SetCurrentUser(this.currentUser.getModel()));\n        this.currentUser.userChanged.subscribe(function (user) {\n            _this.store.dispatch(new SetCurrentUser(user));\n        });\n    };\n    DriveComponent.prototype.ngOnDestroy = function () {\n        this.store.dispatch(ResetState);\n        this.subscriptions.forEach(function (sub) { return sub.unsubscribe(); });\n        this.subscriptions = [];\n    };\n    DriveComponent.prototype.uploadFiles = function (files) {\n        this.store.dispatch(new UploadFiles(files));\n    };\n    DriveComponent.prototype.toggleSidebar = function () {\n        this.store.dispatch(new ToggleSidebar());\n    };\n    DriveComponent.prototype.cacheDemoElements = function () {\n        this.domCache.filesCont = this.filesContainer.nativeElement;\n        this.domCache.scrollCont = this.scrollContainer.nativeElement;\n        this.domCache.dragPreview = this.dragPreview.nativeElement;\n    };\n    DriveComponent.prototype.setViewMode = function () {\n        this.store.dispatch(new SetViewMode(this.localStorage.get(VIEW_MODE_KEY, 'grid')));\n    };\n    DriveComponent.prototype.observeBreakpointChanges = function () {\n        var _this = this;\n        var sub = this.breakpoints.observe('(max-width: 1100px)').subscribe(function (result) {\n            _this.store.dispatch(new BreakpointChanged({ isMobile: result.matches }));\n        });\n        this.subscriptions.push(sub);\n    };\n    __decorate([\n        Select(DriveState.dragging),\n        __metadata(\"design:type\", Observable)\n    ], DriveComponent.prototype, \"dragging\", void 0);\n    __decorate([\n        Select(DriveState.detailsOpen),\n        __metadata(\"design:type\", Observable)\n    ], DriveComponent.prototype, \"activityOpen$\", void 0);\n    __decorate([\n        Select(DriveState.sidebarOpen),\n        __metadata(\"design:type\", Observable)\n    ], DriveComponent.prototype, \"sidebarOpen$\", void 0);\n    __decorate([\n        Select(DriveState.loading),\n        __metadata(\"design:type\", Observable)\n    ], DriveComponent.prototype, \"loading$\", void 0);\n    __decorate([\n        Select(DriveState.isMobile),\n        __metadata(\"design:type\", Observable)\n    ], DriveComponent.prototype, \"isMobile$\", void 0);\n    __decorate([\n        Select(DriveState.canUpload),\n        __metadata(\"design:type\", Observable)\n    ], DriveComponent.prototype, \"canUpload$\", void 0);\n    return DriveComponent;\n}());\nexport { DriveComponent };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./drive.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../common/core/ui/material-navbar/material-navbar.component.ngfactory\";\nimport * as i3 from \"../../common/core/ui/material-navbar/material-navbar.component\";\nimport * as i4 from \"../../common/core/config/settings.service\";\nimport * as i5 from \"../../common/auth/current-user\";\nimport * as i6 from \"@angular/common\";\nimport * as i7 from \"./search/main-searchbar/main-searchbar.component.ngfactory\";\nimport * as i8 from \"./search/main-searchbar/main-searchbar.component\";\nimport * as i9 from \"@ngxs/store\";\nimport * as i10 from \"./drive-entry-api.service\";\nimport * as i11 from \"../../../node_modules/@angular/material/sidenav/typings/index.ngfactory\";\nimport * as i12 from \"@angular/material/sidenav\";\nimport * as i13 from \"@angular/cdk/bidi\";\nimport * as i14 from \"@angular/platform-browser/animations\";\nimport * as i15 from \"@angular/cdk/a11y\";\nimport * as i16 from \"@angular/cdk/platform\";\nimport * as i17 from \"./sidebar/sidebar.component.ngfactory\";\nimport * as i18 from \"./sidebar/sidebar.component\";\nimport * as i19 from \"./drive-urls.service\";\nimport * as i20 from \"./details-sidebar/details-sidebar.component.ngfactory\";\nimport * as i21 from \"./details-sidebar/details-sidebar.component\";\nimport * as i22 from \"./interactions/drive-hammer-interactions.directive\";\nimport * as i23 from \"./interactions/files-drag-select.service\";\nimport * as i24 from \"./interactions/drag-entry.service\";\nimport * as i25 from \"./interactions/drive-dom-cache.service\";\nimport * as i26 from \"../../common/core/ui/ad-host/ad-host.component.ngfactory\";\nimport * as i27 from \"../../common/core/ui/ad-host/ad-host.component\";\nimport * as i28 from \"../../common/core/utils/lazy-loader.service\";\nimport * as i29 from \"./drive-toolbar/drive-toolbar.component.ngfactory\";\nimport * as i30 from \"./drive-toolbar/drive-toolbar.component\";\nimport * as i31 from \"./header/file-list-header/file-list-header.component.ngfactory\";\nimport * as i32 from \"./header/file-list-header/file-list-header.component\";\nimport * as i33 from \"../../common/core/ui/context-menu/context-menu.directive\";\nimport * as i34 from \"../../common/core/ui/context-menu/context-menu.service\";\nimport * as i35 from \"../../common/core/ui/context-menu/available-context-menus\";\nimport * as i36 from \"../../common/uploads/directives/upload-dropzone.directive\";\nimport * as i37 from \"./interactions/drive-infinite-scroll.directive\";\nimport * as i38 from \"./interactions/toggle-selected-class.directive\";\nimport * as i39 from \"@angular/router\";\nimport * as i40 from \"../../common/core/ui/loading-indicator/loading-indicator.component.ngfactory\";\nimport * as i41 from \"../../common/core/ui/loading-indicator/loading-indicator.component\";\nimport * as i42 from \"./interactions/entry-drag-preview/entry-drag-preview.component.ngfactory\";\nimport * as i43 from \"./interactions/entry-drag-preview/entry-drag-preview.component\";\nimport * as i44 from \"./drive.component\";\nimport * as i45 from \"../../common/core/services/local-storage.service\";\nimport * as i46 from \"@angular/cdk/layout\";\nvar styles_DriveComponent = [i0.styles];\nvar RenderType_DriveComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_DriveComponent, data: {} });\nexport { RenderType_DriveComponent as RenderType_DriveComponent };\nexport function View_DriveComponent_0(_l) { return i1.ɵvid(2, [i1.ɵqud(402653184, 1, { scrollContainer: 0 }), i1.ɵqud(402653184, 2, { filesContainer: 0 }), i1.ɵqud(402653184, 3, { dragPreview: 0 }), (_l()(), i1.ɵeld(3, 0, null, null, 6, \"material-navbar\", [[\"menuPosition\", \"drive-navbar\"]], null, [[null, \"toggleButtonClick\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"toggleButtonClick\" === en)) {\n        var pd_0 = (_co.toggleSidebar() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i2.View_MaterialNavbar_0, i2.RenderType_MaterialNavbar)), i1.ɵdid(4, 49152, null, 0, i3.MaterialNavbar, [i4.Settings, i5.CurrentUser], { menuPosition: [0, \"menuPosition\"], showToggleButton: [1, \"showToggleButton\"] }, { toggleButtonClick: \"toggleButtonClick\" }), i1.ɵpid(131072, i6.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵeld(7, 0, null, 0, 1, \"main-searchbar\", [[\"class\", \"nav-searchbar\"]], null, null, null, i7.View_MainSearchbarComponent_0, i7.RenderType_MainSearchbarComponent)), i1.ɵdid(8, 114688, null, 0, i8.MainSearchbarComponent, [i9.Store, i10.DriveEntryApiService], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵeld(11, 0, null, null, 57, \"mat-sidenav-container\", [[\"class\", \"mat-drawer-container mat-sidenav-container\"]], [[2, \"mat-drawer-container-explicit-backdrop\", null]], null, null, i11.View_MatSidenavContainer_0, i11.RenderType_MatSidenavContainer)), i1.ɵdid(12, 1490944, null, 2, i12.MatSidenavContainer, [[2, i13.Directionality], i1.ElementRef, i1.NgZone, i1.ChangeDetectorRef, i12.MAT_DRAWER_DEFAULT_AUTOSIZE, [2, i14.ANIMATION_MODULE_TYPE]], null, null), i1.ɵqud(603979776, 4, { _drawers: 1 }), i1.ɵqud(335544320, 5, { _content: 0 }), (_l()(), i1.ɵted(-1, 2, [\"\\n    \"])), (_l()(), i1.ɵeld(16, 0, null, 0, 7, \"mat-sidenav\", [[\"class\", \"left-sidebar mat-drawer mat-sidenav\"], [\"tabIndex\", \"-1\"]], [[40, \"@transform\", 0], [1, \"align\", 0], [2, \"mat-drawer-end\", null], [2, \"mat-drawer-over\", null], [2, \"mat-drawer-push\", null], [2, \"mat-drawer-side\", null], [2, \"mat-sidenav-fixed\", null], [4, \"top\", \"px\"], [4, \"bottom\", \"px\"]], [[\"component\", \"@transform.start\"], [\"component\", \"@transform.done\"]], function (_v, en, $event) { var ad = true; if ((\"component:@transform.start\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 17)._onAnimationStart($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"component:@transform.done\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 17)._onAnimationEnd($event) !== false);\n        ad = (pd_1 && ad);\n    } return ad; }, i11.View_MatSidenav_0, i11.RenderType_MatSidenav)), i1.ɵdid(17, 3325952, [[4, 4]], 0, i12.MatSidenav, [i1.ElementRef, i15.FocusTrapFactory, i15.FocusMonitor, i16.Platform, i1.NgZone, [2, i6.DOCUMENT]], { mode: [0, \"mode\"], opened: [1, \"opened\"] }, null), i1.ɵpid(131072, i6.AsyncPipe, [i1.ChangeDetectorRef]), i1.ɵpid(131072, i6.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(21, 0, null, 0, 1, \"sidebar\", [], null, null, null, i17.View_SidebarComponent_0, i17.RenderType_SidebarComponent)), i1.ɵdid(22, 49152, null, 0, i18.SidebarComponent, [i19.DriveUrlsService, i9.Store], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵted(-1, 2, [\"\\n    \"])), (_l()(), i1.ɵeld(25, 0, null, 0, 7, \"mat-sidenav\", [[\"class\", \"right-sidebar mat-drawer mat-sidenav\"], [\"position\", \"end\"], [\"tabIndex\", \"-1\"]], [[40, \"@transform\", 0], [1, \"align\", 0], [2, \"mat-drawer-end\", null], [2, \"mat-drawer-over\", null], [2, \"mat-drawer-push\", null], [2, \"mat-drawer-side\", null], [2, \"mat-sidenav-fixed\", null], [4, \"top\", \"px\"], [4, \"bottom\", \"px\"]], [[\"component\", \"@transform.start\"], [\"component\", \"@transform.done\"]], function (_v, en, $event) { var ad = true; if ((\"component:@transform.start\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 26)._onAnimationStart($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"component:@transform.done\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 26)._onAnimationEnd($event) !== false);\n        ad = (pd_1 && ad);\n    } return ad; }, i11.View_MatSidenav_0, i11.RenderType_MatSidenav)), i1.ɵdid(26, 3325952, [[4, 4]], 0, i12.MatSidenav, [i1.ElementRef, i15.FocusTrapFactory, i15.FocusMonitor, i16.Platform, i1.NgZone, [2, i6.DOCUMENT]], { position: [0, \"position\"], mode: [1, \"mode\"], opened: [2, \"opened\"] }, null), i1.ɵpid(131072, i6.AsyncPipe, [i1.ChangeDetectorRef]), i1.ɵpid(131072, i6.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(30, 0, null, 0, 1, \"details-sidebar\", [], null, null, null, i20.View_DetailsSidebarComponent_0, i20.RenderType_DetailsSidebarComponent)), i1.ɵdid(31, 49152, null, 0, i21.DetailsSidebarComponent, [i9.Store], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵted(-1, 2, [\"\\n    \"])), (_l()(), i1.ɵeld(34, 0, null, 1, 33, \"mat-sidenav-content\", [[\"class\", \"mat-drawer-content mat-sidenav-content\"], [\"driveHammerInteractions\", \"\"]], [[2, \"has-ad\", null], [4, \"margin-left\", \"px\"], [4, \"margin-right\", \"px\"]], null, null, i11.View_MatSidenavContent_0, i11.RenderType_MatSidenavContent)), i1.ɵdid(35, 1097728, [[5, 4]], 0, i12.MatSidenavContent, [i1.ChangeDetectorRef, i12.MatSidenavContainer], null, null), i1.ɵdid(36, 212992, null, 1, i22.DriveHammerInteractionsDirective, [i1.NgZone, i1.ElementRef, i9.Store, i23.FilesDragSelectService, i24.DragEntryService, i25.DriveDomCacheService], null, null), i1.ɵqud(603979776, 6, { gridItems: 1 }), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(39, 0, null, 0, 1, \"ad-host\", [[\"slot\", \"ads.drive\"]], [[8, \"id\", 0]], null, null, i26.View_AdHostComponent_0, i26.RenderType_AdHostComponent)), i1.ɵdid(40, 114688, null, 0, i27.AdHostComponent, [i1.ElementRef, i1.Renderer2, i4.Settings, i5.CurrentUser, i28.LazyLoaderService], { slot: [0, \"slot\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(42, 0, null, 0, 1, \"drive-toolbar\", [], null, null, null, i29.View_DriveToolbarComponent_0, i29.RenderType_DriveToolbarComponent)), i1.ɵdid(43, 49152, null, 0, i30.DriveToolbarComponent, [], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(45, 0, null, 0, 1, \"file-list-header\", [], null, null, null, i31.View_FileListHeaderComponent_0, i31.RenderType_FileListHeaderComponent)), i1.ɵdid(46, 49152, null, 0, i32.FileListHeaderComponent, [i9.Store], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(48, 0, null, 0, 18, \"div\", [[\"class\", \"loading-overlay-container\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(50, 0, [[2, 0], [1, 0], [\"filesContainer\", 1], [\"scrollContainer\", 1]], null, 11, \"div\", [[\"class\", \"files-container\"], [\"contextMenu\", \"entry\"], [\"driveInfiniteScroll\", \"\"], [\"fileDropzone\", \"\"], [\"toggleSelectedClass\", \"\"]], [[2, \"dragging\", null]], [[null, \"filesDropped\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"filesDropped\" === en)) {\n        var pd_0 = (_co.uploadFiles($event) !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, null, null)), i1.ɵdid(51, 81920, null, 0, i33.ContextMenuDirective, [i1.ElementRef, i34.ContextMenu, i35.AVAILABLE_CONTEXT_MENUS], { params: [0, \"params\"], disableContextMenu: [1, \"disableContextMenu\"] }, null), i1.ɵpid(131072, i6.AsyncPipe, [i1.ChangeDetectorRef]), i1.ɵdid(53, 212992, null, 0, i36.UploadDropzoneDirective, [i1.ElementRef], { disableDropzoneClick: [0, \"disableDropzoneClick\"], disableDropzone: [1, \"disableDropzone\"] }, { filesDropped: \"filesDropped\" }), i1.ɵpid(131072, i6.AsyncPipe, [i1.ChangeDetectorRef]), i1.ɵdid(55, 81920, null, 0, i37.DriveInfiniteScrollDirective, [i1.ElementRef, i9.Store], null, null), i1.ɵdid(56, 4210688, null, 0, i38.ToggleSelectedClassDirective, [i1.ElementRef], null, null), i1.ɵpid(131072, i6.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(59, 16777216, null, null, 1, \"router-outlet\", [], null, null, null, null, null)), i1.ɵdid(60, 212992, null, 0, i39.RouterOutlet, [i39.ChildrenOutletContexts, i1.ViewContainerRef, i1.ComponentFactoryResolver, [8, null], i1.ChangeDetectorRef], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(63, 0, null, null, 2, \"loading-indicator\", [[\"class\", \"overlay\"]], [[40, \"@visibility\", 0]], null, null, i40.View_LoadingIndicatorComponent_0, i40.RenderType_LoadingIndicatorComponent)), i1.ɵdid(64, 49152, null, 0, i41.LoadingIndicatorComponent, [], { isVisible: [0, \"isVisible\"] }, null), i1.ɵpid(131072, i6.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵted(-1, 0, [\"\\n\\n    \"])), (_l()(), i1.ɵted(-1, 2, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵeld(70, 0, [[3, 0]], null, 1, \"entry-drag-preview\", [], [[8, \"className\", 0], [2, \"hidden\", null]], null, null, i42.View_EntryDragPreviewComponent_0, i42.RenderType_EntryDragPreviewComponent)), i1.ɵdid(71, 49152, null, 0, i43.EntryDragPreviewComponent, [i9.Store], null, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = \"drive-navbar\"; var currVal_1 = i1.ɵunv(_v, 4, 1, i1.ɵnov(_v, 5).transform(_co.isMobile$)); _ck(_v, 4, 0, currVal_0, currVal_1); _ck(_v, 8, 0); _ck(_v, 12, 0); var currVal_12 = (i1.ɵunv(_v, 17, 0, i1.ɵnov(_v, 18).transform(_co.isMobile$)) ? \"over\" : \"side\"); var currVal_13 = i1.ɵunv(_v, 17, 1, i1.ɵnov(_v, 19).transform(_co.sidebarOpen$)); _ck(_v, 17, 0, currVal_12, currVal_13); var currVal_23 = \"end\"; var currVal_24 = (i1.ɵunv(_v, 26, 1, i1.ɵnov(_v, 27).transform(_co.isMobile$)) ? \"over\" : \"side\"); var currVal_25 = i1.ɵunv(_v, 26, 2, i1.ɵnov(_v, 28).transform(_co.activityOpen$)); _ck(_v, 26, 0, currVal_23, currVal_24, currVal_25); _ck(_v, 36, 0); var currVal_30 = \"ads.drive\"; _ck(_v, 40, 0, currVal_30); var currVal_32 = \"entry\"; var currVal_33 = !i1.ɵunv(_v, 51, 1, i1.ɵnov(_v, 52).transform(_co.canUpload$)); _ck(_v, 51, 0, currVal_32, currVal_33); var currVal_34 = true; var currVal_35 = !i1.ɵunv(_v, 53, 1, i1.ɵnov(_v, 54).transform(_co.canUpload$)); _ck(_v, 53, 0, currVal_34, currVal_35); _ck(_v, 55, 0); _ck(_v, 60, 0); var currVal_37 = i1.ɵunv(_v, 64, 0, i1.ɵnov(_v, 65).transform(_co.loading$)); _ck(_v, 64, 0, currVal_37); }, function (_ck, _v) { var _co = _v.component; var currVal_2 = i1.ɵnov(_v, 12)._backdropOverride; _ck(_v, 11, 0, currVal_2); var currVal_3 = i1.ɵnov(_v, 17)._animationState; var currVal_4 = null; var currVal_5 = (i1.ɵnov(_v, 17).position === \"end\"); var currVal_6 = (i1.ɵnov(_v, 17).mode === \"over\"); var currVal_7 = (i1.ɵnov(_v, 17).mode === \"push\"); var currVal_8 = (i1.ɵnov(_v, 17).mode === \"side\"); var currVal_9 = i1.ɵnov(_v, 17).fixedInViewport; var currVal_10 = (i1.ɵnov(_v, 17).fixedInViewport ? i1.ɵnov(_v, 17).fixedTopGap : null); var currVal_11 = (i1.ɵnov(_v, 17).fixedInViewport ? i1.ɵnov(_v, 17).fixedBottomGap : null); _ck(_v, 16, 0, currVal_3, currVal_4, currVal_5, currVal_6, currVal_7, currVal_8, currVal_9, currVal_10, currVal_11); var currVal_14 = i1.ɵnov(_v, 26)._animationState; var currVal_15 = null; var currVal_16 = (i1.ɵnov(_v, 26).position === \"end\"); var currVal_17 = (i1.ɵnov(_v, 26).mode === \"over\"); var currVal_18 = (i1.ɵnov(_v, 26).mode === \"push\"); var currVal_19 = (i1.ɵnov(_v, 26).mode === \"side\"); var currVal_20 = i1.ɵnov(_v, 26).fixedInViewport; var currVal_21 = (i1.ɵnov(_v, 26).fixedInViewport ? i1.ɵnov(_v, 26).fixedTopGap : null); var currVal_22 = (i1.ɵnov(_v, 26).fixedInViewport ? i1.ɵnov(_v, 26).fixedBottomGap : null); _ck(_v, 25, 0, currVal_14, currVal_15, currVal_16, currVal_17, currVal_18, currVal_19, currVal_20, currVal_21, currVal_22); var currVal_26 = _co.settings.has(\"ads.drive\"); var currVal_27 = i1.ɵnov(_v, 35)._container._contentMargins.left; var currVal_28 = i1.ɵnov(_v, 35)._container._contentMargins.right; _ck(_v, 34, 0, currVal_26, currVal_27, currVal_28); var currVal_29 = i1.ɵnov(_v, 40).randomId; _ck(_v, 39, 0, currVal_29); var currVal_31 = i1.ɵunv(_v, 50, 0, i1.ɵnov(_v, 57).transform(_co.dragging)); _ck(_v, 50, 0, currVal_31); var currVal_36 = i1.ɵnov(_v, 64).isVisible; _ck(_v, 63, 0, currVal_36); var currVal_38 = i1.ɵnov(_v, 71).className; var currVal_39 = i1.ɵnov(_v, 71).dragging; _ck(_v, 70, 0, currVal_38, currVal_39); }); }\nexport function View_DriveComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"drive\", [], null, null, null, View_DriveComponent_0, RenderType_DriveComponent)), i1.ɵdid(1, 245760, null, 0, i44.DriveComponent, [i9.Store, i39.ActivatedRoute, i5.CurrentUser, i45.LocalStorage, i25.DriveDomCacheService, i46.BreakpointObserver, i4.Settings], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nvar DriveComponentNgFactory = i1.ɵccf(\"drive\", i44.DriveComponent, View_DriveComponent_Host_0, {}, {}, []);\nexport { DriveComponentNgFactory as DriveComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"drive{display:block;width:100%;height:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}drive material-navbar{box-shadow:none;height:65px}drive .loading-overlay-container{position:relative;height:calc(100% - 106px)}drive .has-ad ad-host{margin-top:25px}drive .has-ad .loading-overlay-container{height:calc(100% - 281px)}drive .mat-sidenav-container{width:100%;height:calc(100% - 65px)}drive .mat-sidenav-container .left-sidebar{width:220px;flex:0 0 220px;border-right:1px solid #e0e0e0}drive .mat-sidenav-container .right-sidebar{width:300px;flex:0 0 300px;border-left:1px solid #e0e0e0;background-color:#fff;color:rgba(0,0,0,.87)}drive .mat-sidenav-container .mat-sidenav-content{position:relative;width:auto;overflow:hidden;height:100%;background-color:#fff}drive .files-container{height:100%;border:2px solid transparent;overflow-x:hidden;overflow-y:visible;position:relative;padding:26px}drive .files-container.dragging .selected{opacity:.4}drive .files-container.file-over-dropzone{border-color:#1976d2;background-color:#e8f0fe}\"];\nexport { styles as styles };\n","<material-navbar [showToggleButton]=\"(isMobile$ | async)\" (toggleButtonClick)=\"toggleSidebar()\" menuPosition=\"drive-navbar\">\n    <main-searchbar class=\"nav-searchbar\"></main-searchbar>\n</material-navbar>\n<mat-sidenav-container>\n    <mat-sidenav [mode]=\"(isMobile$ | async) ? 'over' : 'side'\" [opened]=\"sidebarOpen$ | async\" class=\"left-sidebar\">\n        <sidebar></sidebar>\n    </mat-sidenav>\n    <mat-sidenav [opened]=\"activityOpen$ | async\" [mode]=\"(isMobile$ | async) ? 'over' : 'side'\" position=\"end\" class=\"right-sidebar\">\n        <details-sidebar></details-sidebar>\n    </mat-sidenav>\n    <mat-sidenav-content driveHammerInteractions [class.has-ad]=\"settings.has('ads.drive')\">\n        <ad-host slot=\"ads.drive\"></ad-host>\n        <drive-toolbar></drive-toolbar>\n        <file-list-header></file-list-header>\n        <div class=\"loading-overlay-container\">\n            <div\n                class=\"files-container\"\n                #filesContainer\n                #scrollContainer\n                toggleSelectedClass\n                [class.dragging]=\"dragging | async\"\n                contextMenu=\"entry\"\n                [disableContextMenu]=\"!(canUpload$ | async)\"\n                fileDropzone\n                [disableDropzoneClick]=\"true\"\n                [disableDropzone]=\"!(canUpload$ | async)\"\n                driveInfiniteScroll\n                (filesDropped)=\"uploadFiles($event)\"\n            >\n                <router-outlet></router-outlet>\n            </div>\n            <loading-indicator [isVisible]=\"loading$ | async\" class=\"overlay\"></loading-indicator>\n        </div>\n\n    </mat-sidenav-content>\n</mat-sidenav-container>\n\n<entry-drag-preview></entry-drag-preview>","import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, HostBinding } from '@angular/core';\nimport { DriveEntry } from '../../../models/drive-entry';\n\n@Component({\n    selector: 'files-grid-item',\n    templateUrl: './files-grid-item.component.html',\n    styleUrls: ['./files-grid-item.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FilesGridItemComponent {\n    @HostBinding('class.drive-entry') driveEntry = true;\n    @Input() entry: DriveEntry;\n\n    @HostBinding('attr.data-id') get fileId() {\n        return this.entry.id;\n    }\n}\n","var FilesGridItemComponent = /** @class */ (function () {\n    function FilesGridItemComponent() {\n        this.driveEntry = true;\n    }\n    Object.defineProperty(FilesGridItemComponent.prototype, \"fileId\", {\n        get: function () {\n            return this.entry.id;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    return FilesGridItemComponent;\n}());\nexport { FilesGridItemComponent };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./files-grid-item.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../file-thumbnail/file-thumbnail.component.ngfactory\";\nimport * as i3 from \"../../file-thumbnail/file-thumbnail.component\";\nimport * as i4 from \"../../../../drive-urls.service\";\nimport * as i5 from \"../../../../../../common/core/config/settings.service\";\nimport * as i6 from \"../../file-icon/file-icon.component.ngfactory\";\nimport * as i7 from \"../../file-icon/file-icon.component\";\nimport * as i8 from \"./files-grid-item.component\";\nvar styles_FilesGridItemComponent = [i0.styles];\nvar RenderType_FilesGridItemComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_FilesGridItemComponent, data: {} });\nexport { RenderType_FilesGridItemComponent as RenderType_FilesGridItemComponent };\nexport function View_FilesGridItemComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 0, null, null, 4, \"div\", [[\"class\", \"preview-container\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(2, 0, null, null, 1, \"file-thumbnail\", [[\"class\", \"preview\"]], null, null, null, i2.View_FileThumbnailComponent_0, i2.RenderType_FileThumbnailComponent)), i1.ɵdid(3, 49152, null, 0, i3.FileThumbnailComponent, [i4.DriveUrlsService, i5.Settings], { file: [0, \"file\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵeld(6, 0, null, null, 7, \"figcaption\", [[\"class\", \"files-grid-item-footer\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(8, 0, null, null, 1, \"file-icon\", [], null, null, null, i6.View_FileIconComponent_0, i6.RenderType_FileIconComponent)), i1.ɵdid(9, 573440, null, 0, i7.FileIconComponent, [], { type: [0, \"type\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(11, 0, null, null, 1, \"div\", [[\"class\", \"text\"]], null, null, null, null, null)), (_l()(), i1.ɵted(12, null, [\"\", \"\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.entry; _ck(_v, 3, 0, currVal_0); var currVal_1 = _co.entry.type; _ck(_v, 9, 0, currVal_1); }, function (_ck, _v) { var _co = _v.component; var currVal_2 = _co.entry.name; _ck(_v, 12, 0, currVal_2); }); }\nexport function View_FilesGridItemComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"files-grid-item\", [], [[2, \"drive-entry\", null], [1, \"data-id\", 0]], null, null, View_FilesGridItemComponent_0, RenderType_FilesGridItemComponent)), i1.ɵdid(1, 49152, null, 0, i8.FilesGridItemComponent, [], null, null)], null, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 1).driveEntry; var currVal_1 = i1.ɵnov(_v, 1).fileId; _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nvar FilesGridItemComponentNgFactory = i1.ɵccf(\"files-grid-item\", i8.FilesGridItemComponent, View_FilesGridItemComponent_Host_0, { entry: \"entry\" }, {}, []);\nexport { FilesGridItemComponentNgFactory as FilesGridItemComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"files-grid{display:flex;flex-wrap:wrap;align-content:start;margin:-8px}files-grid:empty{margin:0}files-grid-item{box-shadow:0 1px 5px rgba(50,50,50,.1);border:1px solid #e0e0e0;background-color:#fff;flex:0 0 auto;margin:8px;border-radius:3px;transition:opacity .2s ease-in-out}@media only screen and (max-width:360px){files-grid-item{width:calc(100% - 16px)}}@media only screen and (min-width:360px) and (max-width:600px){files-grid-item{width:calc(50% - 16px)}}@media only screen and (min-width:600px) and (max-width:950px){files-grid-item{width:calc(33.33333333% - 16px)}}@media only screen and (min-width:950px) and (max-width:1200px){files-grid-item{width:calc(25% - 16px)}}@media only screen and (min-width:1200px) and (max-width:1470px){files-grid-item{width:calc(20% - 16px)}}@media only screen and (min-width:1470px){files-grid-item{width:calc(16.66666667% - 16px)}}files-grid-item.selected .files-grid-item-footer{background-color:#e8f0fe;color:#1976d2}files-grid-item .preview-container{width:100%;padding-top:calc(100% - 48px);position:relative}files-grid-item .preview-container .preview{width:100%;height:100%;position:absolute;top:0;left:0;right:0;bottom:0}files-grid-item .preview-container .preview>file-icon{width:74px;height:74px;position:absolute;top:0;left:0;bottom:0;right:0;margin:auto}files-grid-item .preview-container .preview>img{width:auto;max-width:100%;height:100%;margin:auto;-o-object-fit:cover;object-fit:cover}.files-grid-item-footer{display:flex;align-items:center;padding:16px}.files-grid-item-footer file-icon{width:16px;height:16px;margin-right:16px}.files-grid-item-footer .text{line-height:16px;margin-right:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:rgba(0,0,0,.87)}\"];\nexport { styles as styles };\n","<div class=\"preview-container\">\n    <file-thumbnail class=\"preview\" [file]=\"entry\"></file-thumbnail>\n</div>\n<figcaption class=\"files-grid-item-footer\">\n    <file-icon [type]=\"entry.type\"></file-icon>\n    <div class=\"text\">{{entry.name}}</div>\n</figcaption>","import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { DriveEntry } from '../../models/drive-entry';\n\n@Component({\n    selector: 'files-grid',\n    templateUrl: './files-grid.component.html',\n    styleUrls: ['./files-grid.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FilesGridComponent {\n    @Input() entries: DriveEntry[];\n    public trackById(index: number, entry: DriveEntry): number {\n        return entry.id;\n    }\n}\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./files-grid.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"./files-grid-item/files-grid-item.component.ngfactory\";\nimport * as i3 from \"../../../../../common/core/ui/context-menu/context-menu.directive\";\nimport * as i4 from \"../../../../../common/core/ui/context-menu/context-menu.service\";\nimport * as i5 from \"../../../../../common/core/ui/context-menu/available-context-menus\";\nimport * as i6 from \"./files-grid-item/files-grid-item.component\";\nimport * as i7 from \"@angular/common\";\nimport * as i8 from \"./files-grid.component\";\nvar styles_FilesGridComponent = [i0.styles];\nvar RenderType_FilesGridComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_FilesGridComponent, data: {} });\nexport { RenderType_FilesGridComponent as RenderType_FilesGridComponent };\nfunction View_FilesGridComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 3, \"files-grid-item\", [], [[2, \"drive-entry\", null], [1, \"data-id\", 0]], null, null, i2.View_FilesGridItemComponent_0, i2.RenderType_FilesGridItemComponent)), i1.ɵdid(1, 81920, null, 0, i3.ContextMenuDirective, [i1.ElementRef, i4.ContextMenu, i5.AVAILABLE_CONTEXT_MENUS], { params: [0, \"params\"] }, null), i1.ɵpod(2, { type: 0, entry: 1 }), i1.ɵdid(3, 49152, null, 0, i6.FilesGridItemComponent, [], { entry: [0, \"entry\"] }, null)], function (_ck, _v) { var currVal_2 = _ck(_v, 2, 0, \"entry\", _v.context.$implicit); _ck(_v, 1, 0, currVal_2); var currVal_3 = _v.context.$implicit; _ck(_v, 3, 0, currVal_3); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 3).driveEntry; var currVal_1 = i1.ɵnov(_v, 3).fileId; _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nexport function View_FilesGridComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵand(16777216, null, null, 1, null, View_FilesGridComponent_1)), i1.ɵdid(1, 278528, null, 0, i7.NgForOf, [i1.ViewContainerRef, i1.TemplateRef, i1.IterableDiffers], { ngForOf: [0, \"ngForOf\"], ngForTrackBy: [1, \"ngForTrackBy\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.entries; var currVal_1 = _co.trackById; _ck(_v, 1, 0, currVal_0, currVal_1); }, null); }\nexport function View_FilesGridComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"files-grid\", [], null, null, null, View_FilesGridComponent_0, RenderType_FilesGridComponent)), i1.ɵdid(1, 49152, null, 0, i8.FilesGridComponent, [], null, null)], null, null); }\nvar FilesGridComponentNgFactory = i1.ɵccf(\"files-grid\", i8.FilesGridComponent, View_FilesGridComponent_Host_0, { entries: \"entries\" }, {}, []);\nexport { FilesGridComponentNgFactory as FilesGridComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"files-grid{display:flex;flex-wrap:wrap;align-content:start;margin:-8px}files-grid:empty{margin:0}\"];\nexport { styles as styles };\n","<files-grid-item *ngFor=\"let entry of entries; trackBy: trackById\" [entry]=\"entry\" [contextMenu]=\"{type: 'entry', entry: entry}\"></files-grid-item>","import { Component, OnInit, ViewEncapsulation, ChangeDetectionStrategy, Input, ViewChild } from '@angular/core';\nimport { DriveEntry } from '../../models/drive-entry';\nimport { Sort } from '@angular/material';\nimport { Store } from '@ngxs/store';\nimport { ReloadPageEntries } from '../../../state/actions/commands';\nimport { SortColumn, SortDirection } from '../../../entries/available-sorts';\n\n@Component({\n    selector: 'files-list',\n    templateUrl: './files-list.component.html',\n    styleUrls: ['./files-list.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FilesListComponent implements OnInit {\n    @Input() entries: DriveEntry[];\n\n    constructor(private store: Store) {}\n\n\n    ngOnInit() {\n\n    }\n\n    public sortChange(e: Sort) {\n        const params = {\n            orderBy: e.active as SortColumn,\n            orderDir: e.direction as SortDirection\n        };\n\n        this.store.dispatch(new ReloadPageEntries(params));\n    }\n\n}\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./files-list.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"@angular/material/table\";\nimport * as i3 from \"@angular/cdk/table\";\nimport * as i4 from \"../file-thumbnail/file-thumbnail.component.ngfactory\";\nimport * as i5 from \"../file-thumbnail/file-thumbnail.component\";\nimport * as i6 from \"../../../drive-urls.service\";\nimport * as i7 from \"../../../../../common/core/config/settings.service\";\nimport * as i8 from \"../../../../../../node_modules/@angular/material/sort/typings/index.ngfactory\";\nimport * as i9 from \"@angular/material/sort\";\nimport * as i10 from \"../../../../../../node_modules/@angular/material/table/typings/index.ngfactory\";\nimport * as i11 from \"../../../../../common/core/ui/context-menu/context-menu.directive\";\nimport * as i12 from \"../../../../../common/core/ui/context-menu/context-menu.service\";\nimport * as i13 from \"../../../../../common/core/ui/context-menu/available-context-menus\";\nimport * as i14 from \"../../../../../common/core/ui/formatted-date.pipe\";\nimport * as i15 from \"../../../../../common/uploads/formatted-file-size.pipe\";\nimport * as i16 from \"@angular/cdk/bidi\";\nimport * as i17 from \"@angular/common\";\nimport * as i18 from \"@angular/cdk/platform\";\nimport * as i19 from \"./files-list.component\";\nimport * as i20 from \"@ngxs/store\";\nvar styles_FilesListComponent = [i0.styles];\nvar RenderType_FilesListComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_FilesListComponent, data: {} });\nexport { RenderType_FilesListComponent as RenderType_FilesListComponent };\nfunction View_FilesListComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 2, \"th\", [[\"class\", \"mat-header-cell\"], [\"mat-header-cell\", \"\"], [\"role\", \"columnheader\"]], null, null, null, null, null)), i1.ɵdid(1, 16384, null, 0, i2.MatHeaderCell, [i3.CdkColumnDef, i1.ElementRef], null, null), (_l()(), i1.ɵted(-1, null, [\" \"]))], null, null); }\nfunction View_FilesListComponent_2(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 5, \"td\", [[\"class\", \"mat-cell\"], [\"mat-cell\", \"\"], [\"role\", \"gridcell\"]], null, null, null, null, null)), i1.ɵdid(1, 16384, null, 0, i2.MatCell, [i3.CdkColumnDef, i1.ElementRef], null, null), (_l()(), i1.ɵted(-1, null, [\" \"])), (_l()(), i1.ɵeld(3, 0, null, null, 1, \"file-thumbnail\", [], null, null, null, i4.View_FileThumbnailComponent_0, i4.RenderType_FileThumbnailComponent)), i1.ɵdid(4, 49152, null, 0, i5.FileThumbnailComponent, [i6.DriveUrlsService, i7.Settings], { file: [0, \"file\"] }, null), (_l()(), i1.ɵted(-1, null, [\" \"]))], function (_ck, _v) { var currVal_0 = _v.context.$implicit; _ck(_v, 4, 0, currVal_0); }, null); }\nfunction View_FilesListComponent_3(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 3, \"th\", [[\"class\", \"mat-header-cell\"], [\"mat-header-cell\", \"\"], [\"mat-sort-header\", \"\"], [\"role\", \"columnheader\"]], [[1, \"aria-sort\", 0], [2, \"mat-sort-header-disabled\", null]], [[null, \"click\"], [null, \"mouseenter\"], [null, \"longpress\"], [null, \"mouseleave\"]], function (_v, en, $event) { var ad = true; if ((\"click\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 2)._handleClick() !== false);\n        ad = (pd_0 && ad);\n    } if ((\"mouseenter\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 2)._setIndicatorHintVisible(true) !== false);\n        ad = (pd_1 && ad);\n    } if ((\"longpress\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 2)._setIndicatorHintVisible(true) !== false);\n        ad = (pd_2 && ad);\n    } if ((\"mouseleave\" === en)) {\n        var pd_3 = (i1.ɵnov(_v, 2)._setIndicatorHintVisible(false) !== false);\n        ad = (pd_3 && ad);\n    } return ad; }, i8.View_MatSortHeader_0, i8.RenderType_MatSortHeader)), i1.ɵdid(1, 16384, null, 0, i2.MatHeaderCell, [i3.CdkColumnDef, i1.ElementRef], null, null), i1.ɵdid(2, 245760, null, 0, i9.MatSortHeader, [i9.MatSortHeaderIntl, i1.ChangeDetectorRef, [2, i9.MatSort], [2, i3.CdkColumnDef]], { id: [0, \"id\"] }, null), (_l()(), i1.ɵted(-1, 0, [\" Name \"]))], function (_ck, _v) { var currVal_2 = \"\"; _ck(_v, 2, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 2)._getAriaSortAttribute(); var currVal_1 = i1.ɵnov(_v, 2)._isDisabled(); _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nfunction View_FilesListComponent_4(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 2, \"td\", [[\"class\", \"mat-cell\"], [\"mat-cell\", \"\"], [\"role\", \"gridcell\"]], null, null, null, null, null)), i1.ɵdid(1, 16384, null, 0, i2.MatCell, [i3.CdkColumnDef, i1.ElementRef], null, null), (_l()(), i1.ɵted(2, null, [\" \", \" \"]))], null, function (_ck, _v) { var currVal_0 = _v.context.$implicit.name; _ck(_v, 2, 0, currVal_0); }); }\nfunction View_FilesListComponent_5(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 3, \"th\", [[\"class\", \"mat-header-cell\"], [\"mat-header-cell\", \"\"], [\"mat-sort-header\", \"updated_at\"], [\"role\", \"columnheader\"]], [[1, \"aria-sort\", 0], [2, \"mat-sort-header-disabled\", null]], [[null, \"click\"], [null, \"mouseenter\"], [null, \"longpress\"], [null, \"mouseleave\"]], function (_v, en, $event) { var ad = true; if ((\"click\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 2)._handleClick() !== false);\n        ad = (pd_0 && ad);\n    } if ((\"mouseenter\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 2)._setIndicatorHintVisible(true) !== false);\n        ad = (pd_1 && ad);\n    } if ((\"longpress\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 2)._setIndicatorHintVisible(true) !== false);\n        ad = (pd_2 && ad);\n    } if ((\"mouseleave\" === en)) {\n        var pd_3 = (i1.ɵnov(_v, 2)._setIndicatorHintVisible(false) !== false);\n        ad = (pd_3 && ad);\n    } return ad; }, i8.View_MatSortHeader_0, i8.RenderType_MatSortHeader)), i1.ɵdid(1, 16384, null, 0, i2.MatHeaderCell, [i3.CdkColumnDef, i1.ElementRef], null, null), i1.ɵdid(2, 245760, null, 0, i9.MatSortHeader, [i9.MatSortHeaderIntl, i1.ChangeDetectorRef, [2, i9.MatSort], [2, i3.CdkColumnDef]], { id: [0, \"id\"] }, null), (_l()(), i1.ɵted(-1, 0, [\" Updated \"]))], function (_ck, _v) { var currVal_2 = \"updated_at\"; _ck(_v, 2, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 2)._getAriaSortAttribute(); var currVal_1 = i1.ɵnov(_v, 2)._isDisabled(); _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nfunction View_FilesListComponent_6(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 3, \"td\", [[\"class\", \"mat-cell\"], [\"mat-cell\", \"\"], [\"role\", \"gridcell\"]], null, null, null, null, null)), i1.ɵdid(1, 16384, null, 0, i2.MatCell, [i3.CdkColumnDef, i1.ElementRef], null, null), (_l()(), i1.ɵted(2, null, [\" \", \" \"])), i1.ɵppd(3, 1)], null, function (_ck, _v) { var currVal_0 = i1.ɵunv(_v, 2, 0, _ck(_v, 3, 0, i1.ɵnov(_v.parent, 0), _v.context.$implicit.updated_at)); _ck(_v, 2, 0, currVal_0); }); }\nfunction View_FilesListComponent_7(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 3, \"th\", [[\"class\", \"mat-header-cell\"], [\"mat-header-cell\", \"\"], [\"mat-sort-header\", \"file_size\"], [\"role\", \"columnheader\"]], [[1, \"aria-sort\", 0], [2, \"mat-sort-header-disabled\", null]], [[null, \"click\"], [null, \"mouseenter\"], [null, \"longpress\"], [null, \"mouseleave\"]], function (_v, en, $event) { var ad = true; if ((\"click\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 2)._handleClick() !== false);\n        ad = (pd_0 && ad);\n    } if ((\"mouseenter\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 2)._setIndicatorHintVisible(true) !== false);\n        ad = (pd_1 && ad);\n    } if ((\"longpress\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 2)._setIndicatorHintVisible(true) !== false);\n        ad = (pd_2 && ad);\n    } if ((\"mouseleave\" === en)) {\n        var pd_3 = (i1.ɵnov(_v, 2)._setIndicatorHintVisible(false) !== false);\n        ad = (pd_3 && ad);\n    } return ad; }, i8.View_MatSortHeader_0, i8.RenderType_MatSortHeader)), i1.ɵdid(1, 16384, null, 0, i2.MatHeaderCell, [i3.CdkColumnDef, i1.ElementRef], null, null), i1.ɵdid(2, 245760, null, 0, i9.MatSortHeader, [i9.MatSortHeaderIntl, i1.ChangeDetectorRef, [2, i9.MatSort], [2, i3.CdkColumnDef]], { id: [0, \"id\"] }, null), (_l()(), i1.ɵted(-1, 0, [\" Size \"]))], function (_ck, _v) { var currVal_2 = \"file_size\"; _ck(_v, 2, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 2)._getAriaSortAttribute(); var currVal_1 = i1.ɵnov(_v, 2)._isDisabled(); _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nfunction View_FilesListComponent_8(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 3, \"td\", [[\"class\", \"mat-cell\"], [\"mat-cell\", \"\"], [\"role\", \"gridcell\"]], null, null, null, null, null)), i1.ɵdid(1, 16384, null, 0, i2.MatCell, [i3.CdkColumnDef, i1.ElementRef], null, null), (_l()(), i1.ɵted(2, null, [\" \", \" \"])), i1.ɵppd(3, 1)], null, function (_ck, _v) { var currVal_0 = i1.ɵunv(_v, 2, 0, _ck(_v, 3, 0, i1.ɵnov(_v.parent, 1), _v.context.$implicit.file_size)); _ck(_v, 2, 0, currVal_0); }); }\nfunction View_FilesListComponent_9(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 2, \"tr\", [[\"class\", \"mat-header-row\"], [\"mat-header-row\", \"\"], [\"role\", \"row\"]], null, null, null, i10.View_MatHeaderRow_0, i10.RenderType_MatHeaderRow)), i1.ɵprd(6144, null, i3.CdkHeaderRow, null, [i2.MatHeaderRow]), i1.ɵdid(2, 49152, null, 0, i2.MatHeaderRow, [], null, null)], null, null); }\nfunction View_FilesListComponent_10(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 4, \"tr\", [[\"class\", \"drive-entry mat-row\"], [\"mat-row\", \"\"], [\"role\", \"row\"]], [[1, \"data-id\", 0]], null, null, i10.View_MatRow_0, i10.RenderType_MatRow)), i1.ɵprd(6144, null, i3.CdkRow, null, [i2.MatRow]), i1.ɵdid(2, 81920, null, 0, i11.ContextMenuDirective, [i1.ElementRef, i12.ContextMenu, i13.AVAILABLE_CONTEXT_MENUS], { params: [0, \"params\"] }, null), i1.ɵpod(3, { type: 0, entry: 1 }), i1.ɵdid(4, 49152, null, 0, i2.MatRow, [], null, null)], function (_ck, _v) { var currVal_1 = _ck(_v, 3, 0, \"entry\", _v.context.$implicit); _ck(_v, 2, 0, currVal_1); }, function (_ck, _v) { var currVal_0 = _v.context.$implicit.id; _ck(_v, 0, 0, currVal_0); }); }\nexport function View_FilesListComponent_0(_l) { return i1.ɵvid(2, [i1.ɵpid(0, i14.FormattedDatePipe, [i7.Settings, i1.LOCALE_ID]), i1.ɵpid(0, i15.FormattedFileSizePipe, []), (_l()(), i1.ɵeld(2, 0, null, null, 86, \"table\", [[\"class\", \"mat-table\"], [\"mat-table\", \"\"], [\"matSort\", \"\"]], null, [[null, \"matSortChange\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"matSortChange\" === en)) {\n        var pd_0 = (_co.sortChange($event) !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i10.View_MatTable_0, i10.RenderType_MatTable)), i1.ɵdid(3, 2342912, null, 4, i2.MatTable, [i1.IterableDiffers, i1.ChangeDetectorRef, i1.ElementRef, [8, null], [2, i16.Directionality], i17.DOCUMENT, i18.Platform], { dataSource: [0, \"dataSource\"] }, null), i1.ɵqud(603979776, 1, { _contentColumnDefs: 1 }), i1.ɵqud(603979776, 2, { _contentRowDefs: 1 }), i1.ɵqud(603979776, 3, { _contentHeaderRowDefs: 1 }), i1.ɵqud(603979776, 4, { _contentFooterRowDefs: 1 }), i1.ɵdid(8, 737280, null, 0, i9.MatSort, [], null, { sortChange: \"matSortChange\" }), (_l()(), i1.ɵted(-1, null, [\"\\n  \"])), (_l()(), i1.ɵted(-1, null, [\"\\n  \"])), (_l()(), i1.ɵeld(11, 0, null, null, 14, null, null, null, null, null, null, null)), i1.ɵdid(12, 16384, null, 3, i2.MatColumnDef, [], { name: [0, \"name\"] }, null), i1.ɵqud(335544320, 5, { cell: 0 }), i1.ɵqud(335544320, 6, { headerCell: 0 }), i1.ɵqud(335544320, 7, { footerCell: 0 }), i1.ɵprd(2048, [[1, 4]], i3.CdkColumnDef, null, [i2.MatColumnDef]), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(0, null, null, 2, null, View_FilesListComponent_1)), i1.ɵdid(19, 16384, null, 0, i2.MatHeaderCellDef, [i1.TemplateRef], null, null), i1.ɵprd(2048, [[6, 4]], i3.CdkHeaderCellDef, null, [i2.MatHeaderCellDef]), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(0, null, null, 2, null, View_FilesListComponent_2)), i1.ɵdid(23, 16384, null, 0, i2.MatCellDef, [i1.TemplateRef], null, null), i1.ɵprd(2048, [[5, 4]], i3.CdkCellDef, null, [i2.MatCellDef]), (_l()(), i1.ɵted(-1, null, [\"\\n  \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n  \"])), (_l()(), i1.ɵted(-1, null, [\"\\n  \"])), (_l()(), i1.ɵeld(28, 0, null, null, 14, null, null, null, null, null, null, null)), i1.ɵdid(29, 16384, null, 3, i2.MatColumnDef, [], { name: [0, \"name\"] }, null), i1.ɵqud(335544320, 8, { cell: 0 }), i1.ɵqud(335544320, 9, { headerCell: 0 }), i1.ɵqud(335544320, 10, { footerCell: 0 }), i1.ɵprd(2048, [[1, 4]], i3.CdkColumnDef, null, [i2.MatColumnDef]), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(0, null, null, 2, null, View_FilesListComponent_3)), i1.ɵdid(36, 16384, null, 0, i2.MatHeaderCellDef, [i1.TemplateRef], null, null), i1.ɵprd(2048, [[9, 4]], i3.CdkHeaderCellDef, null, [i2.MatHeaderCellDef]), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(0, null, null, 2, null, View_FilesListComponent_4)), i1.ɵdid(40, 16384, null, 0, i2.MatCellDef, [i1.TemplateRef], null, null), i1.ɵprd(2048, [[8, 4]], i3.CdkCellDef, null, [i2.MatCellDef]), (_l()(), i1.ɵted(-1, null, [\"\\n  \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n  \"])), (_l()(), i1.ɵted(-1, null, [\"\\n  \"])), (_l()(), i1.ɵeld(45, 0, null, null, 14, null, null, null, null, null, null, null)), i1.ɵdid(46, 16384, null, 3, i2.MatColumnDef, [], { name: [0, \"name\"] }, null), i1.ɵqud(335544320, 11, { cell: 0 }), i1.ɵqud(335544320, 12, { headerCell: 0 }), i1.ɵqud(335544320, 13, { footerCell: 0 }), i1.ɵprd(2048, [[1, 4]], i3.CdkColumnDef, null, [i2.MatColumnDef]), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(0, null, null, 2, null, View_FilesListComponent_5)), i1.ɵdid(53, 16384, null, 0, i2.MatHeaderCellDef, [i1.TemplateRef], null, null), i1.ɵprd(2048, [[12, 4]], i3.CdkHeaderCellDef, null, [i2.MatHeaderCellDef]), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(0, null, null, 2, null, View_FilesListComponent_6)), i1.ɵdid(57, 16384, null, 0, i2.MatCellDef, [i1.TemplateRef], null, null), i1.ɵprd(2048, [[11, 4]], i3.CdkCellDef, null, [i2.MatCellDef]), (_l()(), i1.ɵted(-1, null, [\"\\n  \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n  \"])), (_l()(), i1.ɵted(-1, null, [\"\\n  \"])), (_l()(), i1.ɵeld(62, 0, null, null, 14, null, null, null, null, null, null, null)), i1.ɵdid(63, 16384, null, 3, i2.MatColumnDef, [], { name: [0, \"name\"] }, null), i1.ɵqud(335544320, 14, { cell: 0 }), i1.ɵqud(335544320, 15, { headerCell: 0 }), i1.ɵqud(335544320, 16, { footerCell: 0 }), i1.ɵprd(2048, [[1, 4]], i3.CdkColumnDef, null, [i2.MatColumnDef]), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(0, null, null, 2, null, View_FilesListComponent_7)), i1.ɵdid(70, 16384, null, 0, i2.MatHeaderCellDef, [i1.TemplateRef], null, null), i1.ɵprd(2048, [[15, 4]], i3.CdkHeaderCellDef, null, [i2.MatHeaderCellDef]), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(0, null, null, 2, null, View_FilesListComponent_8)), i1.ɵdid(74, 16384, null, 0, i2.MatCellDef, [i1.TemplateRef], null, null), i1.ɵprd(2048, [[14, 4]], i3.CdkCellDef, null, [i2.MatCellDef]), (_l()(), i1.ɵted(-1, null, [\"\\n  \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n  \"])), (_l()(), i1.ɵeld(78, 0, null, null, 10, \"tbody\", [], null, null, null, null, null)), (_l()(), i1.ɵand(0, null, null, 3, null, View_FilesListComponent_9)), i1.ɵdid(80, 540672, null, 0, i2.MatHeaderRowDef, [i1.TemplateRef, i1.IterableDiffers], { columns: [0, \"columns\"] }, null), i1.ɵpad(81, 4), i1.ɵprd(2048, [[3, 4]], i3.CdkHeaderRowDef, null, [i2.MatHeaderRowDef]), (_l()(), i1.ɵted(-1, null, [\"\\n  \"])), (_l()(), i1.ɵand(0, null, null, 3, null, View_FilesListComponent_10)), i1.ɵdid(85, 540672, null, 0, i2.MatRowDef, [i1.TemplateRef, i1.IterableDiffers], { columns: [0, \"columns\"] }, null), i1.ɵpad(86, 4), i1.ɵprd(2048, [[2, 4]], i3.CdkRowDef, null, [i2.MatRowDef]), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.entries; _ck(_v, 3, 0, currVal_0); _ck(_v, 8, 0); var currVal_1 = \"image\"; _ck(_v, 12, 0, currVal_1); var currVal_2 = \"name\"; _ck(_v, 29, 0, currVal_2); var currVal_3 = \"updated\"; _ck(_v, 46, 0, currVal_3); var currVal_4 = \"size\"; _ck(_v, 63, 0, currVal_4); var currVal_5 = _ck(_v, 81, 0, \"image\", \"name\", \"updated\", \"size\"); _ck(_v, 80, 0, currVal_5); var currVal_6 = _ck(_v, 86, 0, \"image\", \"name\", \"updated\", \"size\"); _ck(_v, 85, 0, currVal_6); }, null); }\nexport function View_FilesListComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"files-list\", [], null, null, null, View_FilesListComponent_0, RenderType_FilesListComponent)), i1.ɵdid(1, 114688, null, 0, i19.FilesListComponent, [i20.Store], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nvar FilesListComponentNgFactory = i1.ɵccf(\"files-list\", i19.FilesListComponent, View_FilesListComponent_Host_0, { entries: \"entries\" }, {}, []);\nexport { FilesListComponentNgFactory as FilesListComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"files-list{display:block}files-list .mat-table{width:100%}files-list .mat-table .mat-row.selected{background-color:#e8f0fe}files-list .mat-table .mat-column-image{width:60px}files-list .mat-table .mat-column-image file-thumbnail{background-color:transparent}files-list .mat-table .mat-column-image file-icon{margin-top:3px;width:35px;height:35px}files-list .mat-table .mat-column-image img{width:35px;height:35px;max-width:none;-o-object-fit:cover;object-fit:cover}files-list .mat-table td.mat-cell:first-child,files-list .mat-table td.mat-footer-cell:first-child,files-list .mat-table th.mat-header-cell:first-child{padding-left:8px}files-list .mat-table td.mat-cell:last-child,files-list .mat-table td.mat-footer-cell:last-child,files-list .mat-table th.mat-header-cell:last-child{padding-right:8px}@media only screen and (max-width:768px){files-list .mat-table .mat-column-size,files-list .mat-table .mat-column-updated,files-list .mat-table .mat-header-row{display:none}}\"];\nexport { styles as styles };\n","<table mat-table [dataSource]=\"entries\" matSort (matSortChange)=\"sortChange($event)\">\n  <!-- Image Column -->\n  <ng-container matColumnDef=\"image\">\n    <th mat-header-cell *matHeaderCellDef> </th>\n    <td mat-cell *matCellDef=\"let entry\"> <file-thumbnail [file]=\"entry\"></file-thumbnail> </td>\n  </ng-container>\n\n  <!-- Name Column -->\n  <ng-container matColumnDef=\"name\">\n    <th mat-header-cell *matHeaderCellDef mat-sort-header> Name </th>\n    <td mat-cell *matCellDef=\"let entry\"> {{entry.name}} </td>\n  </ng-container>\n\n  <!-- Updated_at Column -->\n  <ng-container matColumnDef=\"updated\">\n    <th mat-header-cell *matHeaderCellDef mat-sort-header=\"updated_at\"> Updated </th>\n    <td mat-cell *matCellDef=\"let entry\"> {{entry.updated_at | formattedDate }} </td>\n  </ng-container>\n\n  <!-- File Size Column -->\n  <ng-container matColumnDef=\"size\">\n    <th mat-header-cell *matHeaderCellDef mat-sort-header=\"file_size\"> Size </th>\n    <td mat-cell *matCellDef=\"let entry\"> {{entry.file_size | formattedFileSize}} </td>\n  </ng-container>\n\n  <tr mat-header-row *matHeaderRowDef=\"['image', 'name', 'updated', 'size']\"></tr>\n  <tr\n      class=\"drive-entry\"\n      mat-row\n      *matRowDef=\"let row; columns: ['image', 'name', 'updated', 'size'];\"\n      [contextMenu]=\"{type: 'entry', entry: row}\"\n      [attr.data-id]=\"row.id\"\n  ></tr>\n</table>","import { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n    selector: 'no-recent-entries',\n    templateUrl: './no-recent-entries.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NoRecentEntriesComponent {\n}\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../../../common/core/translations/translate.directive\";\nimport * as i2 from \"../../../../common/core/translations/translations.service\";\nimport * as i3 from \"../../../../common/core/config/settings.service\";\nimport * as i4 from \"../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i5 from \"@angular/material/icon\";\nimport * as i6 from \"./no-recent-entries.component\";\nvar styles_NoRecentEntriesComponent = [];\nvar RenderType_NoRecentEntriesComponent = i0.ɵcrt({ encapsulation: 2, styles: styles_NoRecentEntriesComponent, data: {} });\nexport { RenderType_NoRecentEntriesComponent as RenderType_NoRecentEntriesComponent };\nexport function View_NoRecentEntriesComponent_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵeld(0, 0, null, null, 12, \"div\", [[\"class\", \"no-results-message\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"\\n    \"])), (_l()(), i0.ɵeld(2, 0, null, null, 2, \"div\", [[\"class\", \"main\"], [\"trans\", \"\"]], null, null, null, null, null)), i0.ɵdid(3, 4341760, null, 0, i1.TranslateDirective, [i0.ElementRef, i2.Translations, i3.Settings], null, null), (_l()(), i0.ɵted(-1, null, [\"No recent entries.\"])), (_l()(), i0.ɵted(-1, null, [\"\\n    \"])), (_l()(), i0.ɵeld(6, 0, null, null, 2, \"div\", [[\"class\", \"secondary\"], [\"trans\", \"\"]], null, null, null, null, null)), i0.ɵdid(7, 4341760, null, 0, i1.TranslateDirective, [i0.ElementRef, i2.Translations, i3.Settings], null, null), (_l()(), i0.ɵted(-1, null, [\"You have not uploaded any files or folders yet.\"])), (_l()(), i0.ɵted(-1, null, [\"\\n    \"])), (_l()(), i0.ɵeld(10, 0, null, null, 1, \"mat-icon\", [[\"class\", \"icon mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"recent-custom\"]], [[2, \"mat-icon-inline\", null]], null, null, i4.View_MatIcon_0, i4.RenderType_MatIcon)), i0.ɵdid(11, 638976, null, 0, i5.MatIcon, [i0.ElementRef, i5.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i0.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var currVal_1 = \"recent-custom\"; _ck(_v, 11, 0, currVal_1); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 11).inline; _ck(_v, 10, 0, currVal_0); }); }\nexport function View_NoRecentEntriesComponent_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"no-recent-entries\", [], null, null, null, View_NoRecentEntriesComponent_0, RenderType_NoRecentEntriesComponent)), i0.ɵdid(1, 49152, null, 0, i6.NoRecentEntriesComponent, [], null, null)], null, null); }\nvar NoRecentEntriesComponentNgFactory = i0.ɵccf(\"no-recent-entries\", i6.NoRecentEntriesComponent, View_NoRecentEntriesComponent_Host_0, {}, {}, []);\nexport { NoRecentEntriesComponentNgFactory as NoRecentEntriesComponentNgFactory };\n","<div class=\"no-results-message\">\r\n    <div class=\"main\" trans>No recent entries.</div>\r\n    <div class=\"secondary\" trans>You have not uploaded any files or folders yet.</div>\r\n    <mat-icon svgIcon=\"recent-custom\" class=\"icon\"></mat-icon>\r\n</div>","import { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n    selector: 'no-trashed-entries',\n    templateUrl: './no-trashed-entries.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NoTrashedEntriesComponent {\n}\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../../../common/core/translations/translate.directive\";\nimport * as i2 from \"../../../../common/core/translations/translations.service\";\nimport * as i3 from \"../../../../common/core/config/settings.service\";\nimport * as i4 from \"../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i5 from \"@angular/material/icon\";\nimport * as i6 from \"./no-trashed-entries.component\";\nvar styles_NoTrashedEntriesComponent = [];\nvar RenderType_NoTrashedEntriesComponent = i0.ɵcrt({ encapsulation: 2, styles: styles_NoTrashedEntriesComponent, data: {} });\nexport { RenderType_NoTrashedEntriesComponent as RenderType_NoTrashedEntriesComponent };\nexport function View_NoTrashedEntriesComponent_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵeld(0, 0, null, null, 12, \"div\", [[\"class\", \"no-results-message\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"\\n    \"])), (_l()(), i0.ɵeld(2, 0, null, null, 2, \"div\", [[\"class\", \"main\"], [\"trans\", \"\"]], null, null, null, null, null)), i0.ɵdid(3, 4341760, null, 0, i1.TranslateDirective, [i0.ElementRef, i2.Translations, i3.Settings], null, null), (_l()(), i0.ɵted(-1, null, [\"Trash is empty.\"])), (_l()(), i0.ɵted(-1, null, [\"\\n    \"])), (_l()(), i0.ɵeld(6, 0, null, null, 2, \"div\", [[\"class\", \"secondary\"], [\"trans\", \"\"]], null, null, null, null, null)), i0.ɵdid(7, 4341760, null, 0, i1.TranslateDirective, [i0.ElementRef, i2.Translations, i3.Settings], null, null), (_l()(), i0.ɵted(-1, null, [\"There are no files or folders in your trash currently.\"])), (_l()(), i0.ɵted(-1, null, [\"\\n    \"])), (_l()(), i0.ɵeld(10, 0, null, null, 1, \"mat-icon\", [[\"class\", \"icon mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"trash-custom\"]], [[2, \"mat-icon-inline\", null]], null, null, i4.View_MatIcon_0, i4.RenderType_MatIcon)), i0.ɵdid(11, 638976, null, 0, i5.MatIcon, [i0.ElementRef, i5.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i0.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var currVal_1 = \"trash-custom\"; _ck(_v, 11, 0, currVal_1); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 11).inline; _ck(_v, 10, 0, currVal_0); }); }\nexport function View_NoTrashedEntriesComponent_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"no-trashed-entries\", [], null, null, null, View_NoTrashedEntriesComponent_0, RenderType_NoTrashedEntriesComponent)), i0.ɵdid(1, 49152, null, 0, i6.NoTrashedEntriesComponent, [], null, null)], null, null); }\nvar NoTrashedEntriesComponentNgFactory = i0.ɵccf(\"no-trashed-entries\", i6.NoTrashedEntriesComponent, View_NoTrashedEntriesComponent_Host_0, {}, {}, []);\nexport { NoTrashedEntriesComponentNgFactory as NoTrashedEntriesComponentNgFactory };\n","<div class=\"no-results-message\">\r\n    <div class=\"main\" trans>Trash is empty.</div>\r\n    <div class=\"secondary\" trans>There are no files or folders in your trash currently.</div>\r\n    <mat-icon svgIcon=\"trash-custom\" class=\"icon\"></mat-icon>\r\n</div>","import { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n    selector: 'no-starred-entries',\n    templateUrl: './no-starred-entries.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NoStarredEntriesComponent {\n}\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../../../common/core/translations/translate.directive\";\nimport * as i2 from \"../../../../common/core/translations/translations.service\";\nimport * as i3 from \"../../../../common/core/config/settings.service\";\nimport * as i4 from \"../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i5 from \"@angular/material/icon\";\nimport * as i6 from \"./no-starred-entries.component\";\nvar styles_NoStarredEntriesComponent = [];\nvar RenderType_NoStarredEntriesComponent = i0.ɵcrt({ encapsulation: 2, styles: styles_NoStarredEntriesComponent, data: {} });\nexport { RenderType_NoStarredEntriesComponent as RenderType_NoStarredEntriesComponent };\nexport function View_NoStarredEntriesComponent_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵeld(0, 0, null, null, 12, \"div\", [[\"class\", \"no-results-message\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"\\n    \"])), (_l()(), i0.ɵeld(2, 0, null, null, 2, \"div\", [[\"class\", \"main\"], [\"trans\", \"\"]], null, null, null, null, null)), i0.ɵdid(3, 4341760, null, 0, i1.TranslateDirective, [i0.ElementRef, i2.Translations, i3.Settings], null, null), (_l()(), i0.ɵted(-1, null, [\"Nothing is starred.\"])), (_l()(), i0.ɵted(-1, null, [\"\\n    \"])), (_l()(), i0.ɵeld(6, 0, null, null, 2, \"div\", [[\"class\", \"secondary\"], [\"trans\", \"\"]], null, null, null, null, null)), i0.ɵdid(7, 4341760, null, 0, i1.TranslateDirective, [i0.ElementRef, i2.Translations, i3.Settings], null, null), (_l()(), i0.ɵted(-1, null, [\"Add stars to files and folders that you want to easily find later.\"])), (_l()(), i0.ɵted(-1, null, [\"\\n    \"])), (_l()(), i0.ɵeld(10, 0, null, null, 1, \"mat-icon\", [[\"class\", \"icon mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"add-star-custom\"]], [[2, \"mat-icon-inline\", null]], null, null, i4.View_MatIcon_0, i4.RenderType_MatIcon)), i0.ɵdid(11, 638976, null, 0, i5.MatIcon, [i0.ElementRef, i5.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i0.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var currVal_1 = \"add-star-custom\"; _ck(_v, 11, 0, currVal_1); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 11).inline; _ck(_v, 10, 0, currVal_0); }); }\nexport function View_NoStarredEntriesComponent_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"no-starred-entries\", [], null, null, null, View_NoStarredEntriesComponent_0, RenderType_NoStarredEntriesComponent)), i0.ɵdid(1, 49152, null, 0, i6.NoStarredEntriesComponent, [], null, null)], null, null); }\nvar NoStarredEntriesComponentNgFactory = i0.ɵccf(\"no-starred-entries\", i6.NoStarredEntriesComponent, View_NoStarredEntriesComponent_Host_0, {}, {}, []);\nexport { NoStarredEntriesComponentNgFactory as NoStarredEntriesComponentNgFactory };\n","<div class=\"no-results-message\">\n    <div class=\"main\" trans>Nothing is starred.</div>\n    <div class=\"secondary\" trans>Add stars to files and folders that you want to easily find later.</div>\n    <mat-icon svgIcon=\"add-star-custom\" class=\"icon\"></mat-icon>\n</div>","import { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n    selector: 'no-shared-entries',\n    templateUrl: './no-shared-entries.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NoSharedEntriesComponent {\n}\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../../../common/core/translations/translate.directive\";\nimport * as i2 from \"../../../../common/core/translations/translations.service\";\nimport * as i3 from \"../../../../common/core/config/settings.service\";\nimport * as i4 from \"../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i5 from \"@angular/material/icon\";\nimport * as i6 from \"./no-shared-entries.component\";\nvar styles_NoSharedEntriesComponent = [];\nvar RenderType_NoSharedEntriesComponent = i0.ɵcrt({ encapsulation: 2, styles: styles_NoSharedEntriesComponent, data: {} });\nexport { RenderType_NoSharedEntriesComponent as RenderType_NoSharedEntriesComponent };\nexport function View_NoSharedEntriesComponent_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵeld(0, 0, null, null, 12, \"div\", [[\"class\", \"no-results-message\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"\\n    \"])), (_l()(), i0.ɵeld(2, 0, null, null, 2, \"div\", [[\"class\", \"main\"], [\"trans\", \"\"]], null, null, null, null, null)), i0.ɵdid(3, 4341760, null, 0, i1.TranslateDirective, [i0.ElementRef, i2.Translations, i3.Settings], null, null), (_l()(), i0.ɵted(-1, null, [\"Shared with me.\"])), (_l()(), i0.ɵted(-1, null, [\"\\n    \"])), (_l()(), i0.ɵeld(6, 0, null, null, 2, \"div\", [[\"class\", \"secondary\"], [\"trans\", \"\"]], null, null, null, null, null)), i0.ɵdid(7, 4341760, null, 0, i1.TranslateDirective, [i0.ElementRef, i2.Translations, i3.Settings], null, null), (_l()(), i0.ɵted(-1, null, [\"Files and folders other people have shared with you.\"])), (_l()(), i0.ɵted(-1, null, [\"\\n    \"])), (_l()(), i0.ɵeld(10, 0, null, null, 1, \"mat-icon\", [[\"class\", \"icon mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"share-custom\"]], [[2, \"mat-icon-inline\", null]], null, null, i4.View_MatIcon_0, i4.RenderType_MatIcon)), i0.ɵdid(11, 638976, null, 0, i5.MatIcon, [i0.ElementRef, i5.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i0.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var currVal_1 = \"share-custom\"; _ck(_v, 11, 0, currVal_1); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 11).inline; _ck(_v, 10, 0, currVal_0); }); }\nexport function View_NoSharedEntriesComponent_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"no-shared-entries\", [], null, null, null, View_NoSharedEntriesComponent_0, RenderType_NoSharedEntriesComponent)), i0.ɵdid(1, 49152, null, 0, i6.NoSharedEntriesComponent, [], null, null)], null, null); }\nvar NoSharedEntriesComponentNgFactory = i0.ɵccf(\"no-shared-entries\", i6.NoSharedEntriesComponent, View_NoSharedEntriesComponent_Host_0, {}, {}, []);\nexport { NoSharedEntriesComponentNgFactory as NoSharedEntriesComponentNgFactory };\n","<div class=\"no-results-message\">\r\n    <div class=\"main\" trans>Shared with me.</div>\r\n    <div class=\"secondary\" trans>Files and folders other people have shared with you.</div>\r\n    <mat-icon svgIcon=\"share-custom\" class=\"icon\"></mat-icon>\r\n</div>","import { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n    selector: 'no-search-entries',\n    templateUrl: './no-search-entries.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NoSearchEntriesComponent {\n}\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../../../common/core/translations/translate.directive\";\nimport * as i2 from \"../../../../common/core/translations/translations.service\";\nimport * as i3 from \"../../../../common/core/config/settings.service\";\nimport * as i4 from \"../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i5 from \"@angular/material/icon\";\nimport * as i6 from \"./no-search-entries.component\";\nvar styles_NoSearchEntriesComponent = [];\nvar RenderType_NoSearchEntriesComponent = i0.ɵcrt({ encapsulation: 2, styles: styles_NoSearchEntriesComponent, data: {} });\nexport { RenderType_NoSearchEntriesComponent as RenderType_NoSearchEntriesComponent };\nexport function View_NoSearchEntriesComponent_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵeld(0, 0, null, null, 12, \"div\", [[\"class\", \"no-results-message\"]], null, null, null, null, null)), (_l()(), i0.ɵted(-1, null, [\"\\n    \"])), (_l()(), i0.ɵeld(2, 0, null, null, 2, \"div\", [[\"class\", \"main\"], [\"trans\", \"\"]], null, null, null, null, null)), i0.ɵdid(3, 4341760, null, 0, i1.TranslateDirective, [i0.ElementRef, i2.Translations, i3.Settings], null, null), (_l()(), i0.ɵted(-1, null, [\"No matches found.\"])), (_l()(), i0.ɵted(-1, null, [\"\\n    \"])), (_l()(), i0.ɵeld(6, 0, null, null, 2, \"div\", [[\"class\", \"secondary\"], [\"trans\", \"\"]], null, null, null, null, null)), i0.ɵdid(7, 4341760, null, 0, i1.TranslateDirective, [i0.ElementRef, i2.Translations, i3.Settings], null, null), (_l()(), i0.ɵted(-1, null, [\"Try another search with different query or file type.\"])), (_l()(), i0.ɵted(-1, null, [\"\\n    \"])), (_l()(), i0.ɵeld(10, 0, null, null, 1, \"mat-icon\", [[\"class\", \"icon mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"search-custom\"]], [[2, \"mat-icon-inline\", null]], null, null, i4.View_MatIcon_0, i4.RenderType_MatIcon)), i0.ɵdid(11, 638976, null, 0, i5.MatIcon, [i0.ElementRef, i5.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i0.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var currVal_1 = \"search-custom\"; _ck(_v, 11, 0, currVal_1); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 11).inline; _ck(_v, 10, 0, currVal_0); }); }\nexport function View_NoSearchEntriesComponent_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"no-search-entries\", [], null, null, null, View_NoSearchEntriesComponent_0, RenderType_NoSearchEntriesComponent)), i0.ɵdid(1, 49152, null, 0, i6.NoSearchEntriesComponent, [], null, null)], null, null); }\nvar NoSearchEntriesComponentNgFactory = i0.ɵccf(\"no-search-entries\", i6.NoSearchEntriesComponent, View_NoSearchEntriesComponent_Host_0, {}, {}, []);\nexport { NoSearchEntriesComponentNgFactory as NoSearchEntriesComponentNgFactory };\n","<div class=\"no-results-message\">\n    <div class=\"main\" trans>No matches found.</div>\n    <div class=\"secondary\" trans>Try another search with different query or file type.</div>\n    <mat-icon svgIcon=\"search-custom\" class=\"icon\"></mat-icon>\n</div>","import { Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, ElementRef, AfterViewInit, Inject } from '@angular/core';\nimport { DRIVE_UPLOAD_INPUT_CONFIG } from '../../upload-input-config';\nimport { UploadInputConfig } from 'common/uploads/upload-input-config';\nimport { openUploadWindow } from '../../../../common/uploads/utils/open-upload-window';\nimport { Store } from '@ngxs/store';\nimport { UploadFiles } from '../../state/actions/commands';\n\n@Component({\n    selector: 'upload-dropzone',\n    templateUrl: './upload-dropzone.component.html',\n    styleUrls: ['./upload-dropzone.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UploadDropzoneComponent implements AfterViewInit {\n    @ViewChild('clickTarget') clickTarget: ElementRef;\n\n    constructor (\n        private store: Store,\n        @Inject(DRIVE_UPLOAD_INPUT_CONFIG) private uploadConfig: UploadInputConfig,\n    ) {}\n\n    ngAfterViewInit() {\n        this.clickTarget.nativeElement.addEventListener('click', () => {\n            openUploadWindow(this.uploadConfig).then(files => {\n                this.store.dispatch(new UploadFiles(files));\n            });\n        });\n    }\n}\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./upload-dropzone.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i3 from \"@angular/material/icon\";\nimport * as i4 from \"../../../../common/core/translations/translate.directive\";\nimport * as i5 from \"../../../../common/core/translations/translations.service\";\nimport * as i6 from \"../../../../common/core/config/settings.service\";\nimport * as i7 from \"./upload-dropzone.component\";\nimport * as i8 from \"@ngxs/store\";\nimport * as i9 from \"../../upload-input-config\";\nvar styles_UploadDropzoneComponent = [i0.styles];\nvar RenderType_UploadDropzoneComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_UploadDropzoneComponent, data: {} });\nexport { RenderType_UploadDropzoneComponent as RenderType_UploadDropzoneComponent };\nexport function View_UploadDropzoneComponent_0(_l) { return i1.ɵvid(2, [i1.ɵqud(402653184, 1, { clickTarget: 0 }), (_l()(), i1.ɵeld(1, 0, null, null, 0, \"div\", [[\"class\", \"animation-circle\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵeld(3, 0, [[1, 0], [\"clickTarget\", 1]], null, 15, \"div\", [[\"class\", \"content-circle\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(5, 0, null, null, 1, \"mat-icon\", [[\"class\", \"main-icon mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"upload-custom\"]], [[2, \"mat-icon-inline\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(6, 638976, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(8, 0, null, null, 9, \"div\", [[\"class\", \"text initial-text\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(10, 0, null, null, 2, \"div\", [[\"class\", \"primary\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(11, 4341760, null, 0, i4.TranslateDirective, [i1.ElementRef, i5.Translations, i6.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Drop files or folders here\"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(14, 0, null, null, 2, \"div\", [[\"class\", \"secondary\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(15, 4341760, null, 0, i4.TranslateDirective, [i1.ElementRef, i5.Translations, i6.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"or click to upload.\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var currVal_1 = \"upload-custom\"; _ck(_v, 6, 0, currVal_1); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 6).inline; _ck(_v, 5, 0, currVal_0); }); }\nexport function View_UploadDropzoneComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"upload-dropzone\", [], null, null, null, View_UploadDropzoneComponent_0, RenderType_UploadDropzoneComponent)), i1.ɵdid(1, 4243456, null, 0, i7.UploadDropzoneComponent, [i8.Store, i9.DRIVE_UPLOAD_INPUT_CONFIG], null, null)], null, null); }\nvar UploadDropzoneComponentNgFactory = i1.ɵccf(\"upload-dropzone\", i7.UploadDropzoneComponent, View_UploadDropzoneComponent_Host_0, {}, {}, []);\nexport { UploadDropzoneComponentNgFactory as UploadDropzoneComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"@-webkit-keyframes pulsate{0%,100%{-webkit-transform:scale(1)}50%{-webkit-transform:scale(1.05)}}@keyframes pulsate{0%,100%{-webkit-transform:scale(1)}50%{-webkit-transform:scale(1.05)}}.file-over-dropzone .animation-circle{-webkit-animation:.7s ease-out 15 pulsate;animation:.7s ease-out 15 pulsate;background-color:#1976d2;pointer-events:none}.file-over-dropzone .content-circle{color:#fff;pointer-events:none}upload-dropzone{display:block;position:relative;width:100%;height:100%;border:2px solid transparent}upload-dropzone .animation-circle,upload-dropzone .content-circle{position:absolute;top:0;left:0;right:0;bottom:0;margin:auto;width:400px;height:400px;min-height:300px;max-width:90%;max-height:90%;border-radius:50%;overflow:hidden;cursor:pointer}upload-dropzone .animation-circle{background-color:#fff;border:1px solid #e0e0e0;z-index:1}upload-dropzone .content-circle{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:transparent;border-color:transparent;color:rgba(0,0,0,.54);z-index:2}upload-dropzone .content-circle .main-icon{width:100px;height:100px}upload-dropzone .content-circle .text{text-align:center;margin-top:8px}upload-dropzone .content-circle .text .mat-icon{vertical-align:middle}upload-dropzone .content-circle .text .primary{font-size:1.8rem;font-weight:500;margin-bottom:5px}upload-dropzone .content-circle .text .secondary{font-size:1.5rem}\"];\nexport { styles as styles };\n","<div class=\"animation-circle\"></div>\n<div class=\"content-circle\" #clickTarget>\n    <mat-icon class=\"main-icon\" svgIcon=\"upload-custom\"></mat-icon>\n    <div class=\"text initial-text\">\n        <div class=\"primary\" trans>Drop files or folders here</div>\n        <div class=\"secondary\" trans>or click to upload.</div>\n    </div>\n</div>","import { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n    selector: 'no-folder-entries',\n    templateUrl: './no-folder-entries.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NoFolderEntriesComponent {\n}\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../uploads/upload-dropzone/upload-dropzone.component.ngfactory\";\nimport * as i2 from \"../../uploads/upload-dropzone/upload-dropzone.component\";\nimport * as i3 from \"@ngxs/store\";\nimport * as i4 from \"../../upload-input-config\";\nimport * as i5 from \"./no-folder-entries.component\";\nvar styles_NoFolderEntriesComponent = [];\nvar RenderType_NoFolderEntriesComponent = i0.ɵcrt({ encapsulation: 2, styles: styles_NoFolderEntriesComponent, data: {} });\nexport { RenderType_NoFolderEntriesComponent as RenderType_NoFolderEntriesComponent };\nexport function View_NoFolderEntriesComponent_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"upload-dropzone\", [], null, null, null, i1.View_UploadDropzoneComponent_0, i1.RenderType_UploadDropzoneComponent)), i0.ɵdid(1, 4243456, null, 0, i2.UploadDropzoneComponent, [i3.Store, i4.DRIVE_UPLOAD_INPUT_CONFIG], null, null)], null, null); }\nexport function View_NoFolderEntriesComponent_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"no-folder-entries\", [], null, null, null, View_NoFolderEntriesComponent_0, RenderType_NoFolderEntriesComponent)), i0.ɵdid(1, 49152, null, 0, i5.NoFolderEntriesComponent, [], null, null)], null, null); }\nvar NoFolderEntriesComponentNgFactory = i0.ɵccf(\"no-folder-entries\", i5.NoFolderEntriesComponent, View_NoFolderEntriesComponent_Host_0, {}, {}, []);\nexport { NoFolderEntriesComponentNgFactory as NoFolderEntriesComponentNgFactory };\n","<upload-dropzone></upload-dropzone>","import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, OnInit, ElementRef } from '@angular/core';\nimport { Select, Store } from '@ngxs/store';\nimport { DriveState } from '../../state/drive-state';\nimport { DriveEntry } from '../../files/models/drive-entry';\nimport { Observable } from 'rxjs';\nimport { DrivePageType } from '../../state/models/available-pages';\nimport { Keybinds } from 'common/core/keybinds/keybinds.service';\nimport { SelectAllEntries } from '../../state/actions/commands';\n\n@Component({\n    selector: 'entries-container',\n    templateUrl: './entries-container.component.html',\n    styleUrls: ['./entries-container.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EntriesContainerComponent implements OnInit {\n    @HostBinding('attr.tabindex') tabindex = 0;\n    @Select(DriveState.entries) entries$: Observable<DriveEntry[]>;\n    @Select(DriveState.entriesEmpty) noEntries: Observable<boolean>;\n    @Select(DriveState.viewMode) viewMode$: Observable<'list'|'grid'>;\n    @Select(DriveState.activePageName) activePageName$: Observable<DrivePageType>;\n\n    constructor(\n        private store: Store,\n        private el: ElementRef,\n        private keybinds: Keybinds,\n    ) {}\n\n    ngOnInit() {\n        this.keybinds.listenOn(this.el.nativeElement);\n        this.keybinds.addWithPreventDefault('ctrl+a', () => {\n            this.store.dispatch(new SelectAllEntries());\n        });\n    }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { OnInit, ElementRef } from '@angular/core';\nimport { Select, Store } from '@ngxs/store';\nimport { DriveState } from '../../state/drive-state';\nimport { Observable } from 'rxjs';\nimport { Keybinds } from 'common/core/keybinds/keybinds.service';\nimport { SelectAllEntries } from '../../state/actions/commands';\nvar EntriesContainerComponent = /** @class */ (function () {\n    function EntriesContainerComponent(store, el, keybinds) {\n        this.store = store;\n        this.el = el;\n        this.keybinds = keybinds;\n        this.tabindex = 0;\n    }\n    EntriesContainerComponent.prototype.ngOnInit = function () {\n        var _this = this;\n        this.keybinds.listenOn(this.el.nativeElement);\n        this.keybinds.addWithPreventDefault('ctrl+a', function () {\n            _this.store.dispatch(new SelectAllEntries());\n        });\n    };\n    __decorate([\n        Select(DriveState.entries),\n        __metadata(\"design:type\", Observable)\n    ], EntriesContainerComponent.prototype, \"entries$\", void 0);\n    __decorate([\n        Select(DriveState.entriesEmpty),\n        __metadata(\"design:type\", Observable)\n    ], EntriesContainerComponent.prototype, \"noEntries\", void 0);\n    __decorate([\n        Select(DriveState.viewMode),\n        __metadata(\"design:type\", Observable)\n    ], EntriesContainerComponent.prototype, \"viewMode$\", void 0);\n    __decorate([\n        Select(DriveState.activePageName),\n        __metadata(\"design:type\", Observable)\n    ], EntriesContainerComponent.prototype, \"activePageName$\", void 0);\n    return EntriesContainerComponent;\n}());\nexport { EntriesContainerComponent };\n","export enum Keycodes {\r\n    ENTER = 13,\r\n    SPACE = 32,\r\n    ESCAPE = 27,\r\n    DELETE = 46,\r\n    ARROW_UP = 38,\r\n    ARROW_RIGHT = 39,\r\n    ARROW_DOWN = 40,\r\n    ARROW_LEFT = 37,\r\n    S = 83,\r\n    N = 78,\r\n    A = 65,\r\n    T = 84,\r\n    B = 66,\r\n    C = 67,\r\n    O = 79,\r\n    P = 80,\r\n    R = 82,\r\n    F = 70,\r\n    Y = 89,\r\n    Z = 90,\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Keycodes} from './keycodes.enum';\r\n\r\ninterface ParsedKeybind {\r\n    ctrl: boolean;\r\n    shift: boolean;\r\n    key: string;\r\n}\r\n\r\n// TODO: refactor so keybinds are stored for a specific \"listenOn\" element instead of globally\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\nexport class Keybinds {\r\n    private bindings = [];\r\n\r\n    public add(keybind: string, callback: Function) {\r\n        this.bindings.push({keybind: this.parseKeybindString(keybind), keybindString: keybind, callback});\r\n    }\r\n\r\n    public addWithPreventDefault(keybind: string, callback: Function) {\r\n        this.bindings.push({keybind: this.parseKeybindString(keybind), keybindString: keybind, callback, preventDefault: true});\r\n    }\r\n\r\n    public listenOn(document: Document) {\r\n        document.addEventListener('keydown', (e: KeyboardEvent) => {\r\n            this.executeBindings(e);\r\n        });\r\n    }\r\n\r\n    private executeBindings(e: KeyboardEvent) {\r\n        this.bindings.forEach(binding => {\r\n            if ( ! this.bindingMatches(binding.keybind, e)) return;\r\n            if (binding.preventDefault && e.preventDefault) e.preventDefault();\r\n            binding.callback(e);\r\n        });\r\n    }\r\n\r\n    private bindingMatches(keybind: ParsedKeybind, e: KeyboardEvent) {\r\n        return Keycodes[keybind.key.toUpperCase()] === e.keyCode && e.ctrlKey === keybind.ctrl && e.shiftKey === keybind.shift;\r\n    }\r\n\r\n    /**\r\n     * Parse keybind string into object.\r\n     */\r\n    private parseKeybindString(keybind: string): ParsedKeybind {\r\n        const parts = keybind.trim().split('+');\r\n        const parsed = {ctrl: false, shift: false, key: ''};\r\n\r\n        parts.forEach(part => {\r\n            part = part.trim().toLowerCase();\r\n\r\n            if (part === 'ctrl') {\r\n                parsed.ctrl = true;\r\n            } else if (part === 'shift') {\r\n                parsed.shift = true;\r\n            } else {\r\n                parsed.key = part;\r\n            }\r\n        });\r\n\r\n        return parsed;\r\n    }\r\n}\r\n","import { Keycodes } from './keycodes.enum';\nimport * as i0 from \"@angular/core\";\n// TODO: refactor so keybinds are stored for a specific \"listenOn\" element instead of globally\nvar Keybinds = /** @class */ (function () {\n    function Keybinds() {\n        this.bindings = [];\n    }\n    Keybinds.prototype.add = function (keybind, callback) {\n        this.bindings.push({ keybind: this.parseKeybindString(keybind), keybindString: keybind, callback: callback });\n    };\n    Keybinds.prototype.addWithPreventDefault = function (keybind, callback) {\n        this.bindings.push({ keybind: this.parseKeybindString(keybind), keybindString: keybind, callback: callback, preventDefault: true });\n    };\n    Keybinds.prototype.listenOn = function (document) {\n        var _this = this;\n        document.addEventListener('keydown', function (e) {\n            _this.executeBindings(e);\n        });\n    };\n    Keybinds.prototype.executeBindings = function (e) {\n        var _this = this;\n        this.bindings.forEach(function (binding) {\n            if (!_this.bindingMatches(binding.keybind, e))\n                return;\n            if (binding.preventDefault && e.preventDefault)\n                e.preventDefault();\n            binding.callback(e);\n        });\n    };\n    Keybinds.prototype.bindingMatches = function (keybind, e) {\n        return Keycodes[keybind.key.toUpperCase()] === e.keyCode && e.ctrlKey === keybind.ctrl && e.shiftKey === keybind.shift;\n    };\n    /**\n     * Parse keybind string into object.\n     */\n    Keybinds.prototype.parseKeybindString = function (keybind) {\n        var parts = keybind.trim().split('+');\n        var parsed = { ctrl: false, shift: false, key: '' };\n        parts.forEach(function (part) {\n            part = part.trim().toLowerCase();\n            if (part === 'ctrl') {\n                parsed.ctrl = true;\n            }\n            else if (part === 'shift') {\n                parsed.shift = true;\n            }\n            else {\n                parsed.key = part;\n            }\n        });\n        return parsed;\n    };\n    Keybinds.ngInjectableDef = i0.defineInjectable({ factory: function Keybinds_Factory() { return new Keybinds(); }, token: Keybinds, providedIn: \"root\" });\n    return Keybinds;\n}());\nexport { Keybinds };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./entries-container.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../files/components/files-grid/files-grid.component.ngfactory\";\nimport * as i3 from \"../../files/components/files-grid/files-grid.component\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"../../files/components/files-list/files-list.component.ngfactory\";\nimport * as i6 from \"../../files/components/files-list/files-list.component\";\nimport * as i7 from \"@ngxs/store\";\nimport * as i8 from \"../../messages/no-recent-entries/no-recent-entries.component.ngfactory\";\nimport * as i9 from \"../../messages/no-recent-entries/no-recent-entries.component\";\nimport * as i10 from \"../../messages/no-trashed-entries/no-trashed-entries.component.ngfactory\";\nimport * as i11 from \"../../messages/no-trashed-entries/no-trashed-entries.component\";\nimport * as i12 from \"../../messages/no-starred-entries/no-starred-entries.component.ngfactory\";\nimport * as i13 from \"../../messages/no-starred-entries/no-starred-entries.component\";\nimport * as i14 from \"../../sharing/no-shared-entries/no-shared-entries.component.ngfactory\";\nimport * as i15 from \"../../sharing/no-shared-entries/no-shared-entries.component\";\nimport * as i16 from \"../../messages/no-search-entries/no-search-entries.component.ngfactory\";\nimport * as i17 from \"../../messages/no-search-entries/no-search-entries.component\";\nimport * as i18 from \"../../messages/no-folder-entries/no-folder-entries.component.ngfactory\";\nimport * as i19 from \"../../messages/no-folder-entries/no-folder-entries.component\";\nimport * as i20 from \"./entries-container.component\";\nimport * as i21 from \"../../../../common/core/keybinds/keybinds.service\";\nvar styles_EntriesContainerComponent = [i0.styles];\nvar RenderType_EntriesContainerComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_EntriesContainerComponent, data: {} });\nexport { RenderType_EntriesContainerComponent as RenderType_EntriesContainerComponent };\nfunction View_EntriesContainerComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 2, \"files-grid\", [], null, null, null, i2.View_FilesGridComponent_0, i2.RenderType_FilesGridComponent)), i1.ɵdid(1, 49152, null, 0, i3.FilesGridComponent, [], { entries: [0, \"entries\"] }, null), i1.ɵpid(131072, i4.AsyncPipe, [i1.ChangeDetectorRef])], function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵunv(_v, 1, 0, i1.ɵnov(_v, 2).transform(_co.entries$)); _ck(_v, 1, 0, currVal_0); }, null); }\nfunction View_EntriesContainerComponent_2(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(1, 0, null, null, 2, \"files-list\", [], null, null, null, i5.View_FilesListComponent_0, i5.RenderType_FilesListComponent)), i1.ɵdid(2, 114688, null, 0, i6.FilesListComponent, [i7.Store], { entries: [0, \"entries\"] }, null), i1.ɵpid(131072, i4.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵunv(_v, 2, 0, i1.ɵnov(_v, 3).transform(_co.entries$)); _ck(_v, 2, 0, currVal_0); }, null); }\nfunction View_EntriesContainerComponent_4(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"no-recent-entries\", [], null, null, null, i8.View_NoRecentEntriesComponent_0, i8.RenderType_NoRecentEntriesComponent)), i1.ɵdid(1, 49152, null, 0, i9.NoRecentEntriesComponent, [], null, null)], null, null); }\nfunction View_EntriesContainerComponent_5(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"no-trashed-entries\", [], null, null, null, i10.View_NoTrashedEntriesComponent_0, i10.RenderType_NoTrashedEntriesComponent)), i1.ɵdid(1, 49152, null, 0, i11.NoTrashedEntriesComponent, [], null, null)], null, null); }\nfunction View_EntriesContainerComponent_6(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"no-starred-entries\", [], null, null, null, i12.View_NoStarredEntriesComponent_0, i12.RenderType_NoStarredEntriesComponent)), i1.ɵdid(1, 49152, null, 0, i13.NoStarredEntriesComponent, [], null, null)], null, null); }\nfunction View_EntriesContainerComponent_7(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"no-shared-entries\", [], null, null, null, i14.View_NoSharedEntriesComponent_0, i14.RenderType_NoSharedEntriesComponent)), i1.ɵdid(1, 49152, null, 0, i15.NoSharedEntriesComponent, [], null, null)], null, null); }\nfunction View_EntriesContainerComponent_8(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"no-search-entries\", [], null, null, null, i16.View_NoSearchEntriesComponent_0, i16.RenderType_NoSearchEntriesComponent)), i1.ɵdid(1, 49152, null, 0, i17.NoSearchEntriesComponent, [], null, null)], null, null); }\nfunction View_EntriesContainerComponent_9(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"no-folder-entries\", [], null, null, null, i18.View_NoFolderEntriesComponent_0, i18.RenderType_NoFolderEntriesComponent)), i1.ɵdid(1, 49152, null, 0, i19.NoFolderEntriesComponent, [], null, null)], null, null); }\nfunction View_EntriesContainerComponent_3(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 21, null, null, null, null, null, null, null)), i1.ɵdid(1, 16384, null, 0, i4.NgSwitch, [], { ngSwitch: [0, \"ngSwitch\"] }, null), i1.ɵpid(131072, i4.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_EntriesContainerComponent_4)), i1.ɵdid(5, 278528, null, 0, i4.NgSwitchCase, [i1.ViewContainerRef, i1.TemplateRef, i4.NgSwitch], { ngSwitchCase: [0, \"ngSwitchCase\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_EntriesContainerComponent_5)), i1.ɵdid(8, 278528, null, 0, i4.NgSwitchCase, [i1.ViewContainerRef, i1.TemplateRef, i4.NgSwitch], { ngSwitchCase: [0, \"ngSwitchCase\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_EntriesContainerComponent_6)), i1.ɵdid(11, 278528, null, 0, i4.NgSwitchCase, [i1.ViewContainerRef, i1.TemplateRef, i4.NgSwitch], { ngSwitchCase: [0, \"ngSwitchCase\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_EntriesContainerComponent_7)), i1.ɵdid(14, 278528, null, 0, i4.NgSwitchCase, [i1.ViewContainerRef, i1.TemplateRef, i4.NgSwitch], { ngSwitchCase: [0, \"ngSwitchCase\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_EntriesContainerComponent_8)), i1.ɵdid(17, 278528, null, 0, i4.NgSwitchCase, [i1.ViewContainerRef, i1.TemplateRef, i4.NgSwitch], { ngSwitchCase: [0, \"ngSwitchCase\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_EntriesContainerComponent_9)), i1.ɵdid(20, 16384, null, 0, i4.NgSwitchDefault, [i1.ViewContainerRef, i1.TemplateRef, i4.NgSwitch], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵunv(_v, 1, 0, i1.ɵnov(_v, 2).transform(_co.activePageName$)); _ck(_v, 1, 0, currVal_0); var currVal_1 = \"recent\"; _ck(_v, 5, 0, currVal_1); var currVal_2 = \"trash\"; _ck(_v, 8, 0, currVal_2); var currVal_3 = \"starred\"; _ck(_v, 11, 0, currVal_3); var currVal_4 = \"shares\"; _ck(_v, 14, 0, currVal_4); var currVal_5 = \"search\"; _ck(_v, 17, 0, currVal_5); }, null); }\nexport function View_EntriesContainerComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵand(16777216, null, null, 2, null, View_EntriesContainerComponent_1)), i1.ɵdid(1, 16384, null, 0, i4.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"], ngIfElse: [1, \"ngIfElse\"] }, null), i1.ɵpid(131072, i4.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵand(0, [[\"filesList\", 2]], null, 0, null, View_EntriesContainerComponent_2)), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵand(16777216, null, null, 2, null, View_EntriesContainerComponent_3)), i1.ɵdid(7, 16384, null, 0, i4.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), i1.ɵpid(131072, i4.AsyncPipe, [i1.ChangeDetectorRef])], function (_ck, _v) { var _co = _v.component; var currVal_0 = (i1.ɵunv(_v, 1, 0, i1.ɵnov(_v, 2).transform(_co.viewMode$)) === \"grid\"); var currVal_1 = i1.ɵnov(_v, 4); _ck(_v, 1, 0, currVal_0, currVal_1); var currVal_2 = i1.ɵunv(_v, 7, 0, i1.ɵnov(_v, 8).transform(_co.noEntries)); _ck(_v, 7, 0, currVal_2); }, null); }\nexport function View_EntriesContainerComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"entries-container\", [], [[1, \"tabindex\", 0]], null, null, View_EntriesContainerComponent_0, RenderType_EntriesContainerComponent)), i1.ɵdid(1, 114688, null, 0, i20.EntriesContainerComponent, [i7.Store, i1.ElementRef, i21.Keybinds], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 1).tabindex; _ck(_v, 0, 0, currVal_0); }); }\nvar EntriesContainerComponentNgFactory = i1.ɵccf(\"entries-container\", i20.EntriesContainerComponent, View_EntriesContainerComponent_Host_0, {}, {}, []);\nexport { EntriesContainerComponentNgFactory as EntriesContainerComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"entries-container{display:block;height:100%;outline:0}entries-container .no-results-message{height:100%}\"];\nexport { styles as styles };\n","<files-grid [entries]=\"entries$ | async\" *ngIf=\"(viewMode$ | async) === 'grid'; else filesList\"></files-grid>\r\n<ng-template #filesList>\r\n    <files-list [entries]=\"entries$ | async\"></files-list>\r\n</ng-template>\r\n\r\n<ng-container [ngSwitch]=\"activePageName$ | async\" *ngIf=\"noEntries | async\">\r\n    <no-recent-entries *ngSwitchCase=\"'recent'\"></no-recent-entries>\r\n    <no-trashed-entries *ngSwitchCase=\"'trash'\"></no-trashed-entries>\r\n    <no-starred-entries *ngSwitchCase=\"'starred'\"></no-starred-entries>\r\n    <no-shared-entries *ngSwitchCase=\"'shares'\"></no-shared-entries>\r\n    <no-search-entries *ngSwitchCase=\"'search'\"></no-search-entries>\r\n    <no-folder-entries *ngSwitchDefault></no-folder-entries>\r\n</ng-container>","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./text-preview.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"./text-preview.component\";\nimport * as i4 from \"../current-preview-file\";\nimport * as i5 from \"../preview-url-transformer\";\nimport * as i6 from \"../../core/config/settings.service\";\nimport * as i7 from \"../../core/http/app-http-client.service\";\nimport * as i8 from \"@angular/platform-browser\";\nvar styles_TextPreviewComponent = [i0.styles];\nvar RenderType_TextPreviewComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_TextPreviewComponent, data: {} });\nexport { RenderType_TextPreviewComponent as RenderType_TextPreviewComponent };\nexport function View_TextPreviewComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 0, null, null, 2, \"pre\", [], null, null, null, null, null)), (_l()(), i1.ɵted(1, null, [\"\", \"\"])), i1.ɵpid(131072, i2.AsyncPipe, [i1.ChangeDetectorRef])], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵunv(_v, 1, 0, i1.ɵnov(_v, 2).transform(_co.content)); _ck(_v, 1, 0, currVal_0); }); }\nexport function View_TextPreviewComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"text-preview\", [], [[8, \"className\", 0]], null, null, View_TextPreviewComponent_0, RenderType_TextPreviewComponent)), i1.ɵdid(1, 114688, null, 0, i3.TextPreviewComponent, [i4.CURRENT_PREVIEW_FILE, i5.PREVIEW_URL_TRANSFORMER, i6.Settings, i7.AppHttpClient, i8.DomSanitizer], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 1).className; _ck(_v, 0, 0, currVal_0); }); }\nvar TextPreviewComponentNgFactory = i1.ɵccf(\"text-preview\", i3.TextPreviewComponent, View_TextPreviewComponent_Host_0, {}, {}, []);\nexport { TextPreviewComponentNgFactory as TextPreviewComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"text-preview{display:block;background-color:#fff;box-shadow:0 3px 3px -2px rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12);width:80%;min-height:80%;color:rgba(0,0,0,.87);word-wrap:break-word;padding:20px;overflow:auto}@media only screen and (max-width:768px){text-preview{width:90%}}text-preview pre{display:block;white-space:pre-wrap;word-wrap:break-word;margin:0;font-size:1.4rem;font-family:inherit}\"];\nexport { styles as styles };\n","<pre>{{ content | async }}</pre>","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./default-preview.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../../../node_modules/@angular/material/button/typings/index.ngfactory\";\nimport * as i3 from \"@angular/material/button\";\nimport * as i4 from \"@angular/cdk/platform\";\nimport * as i5 from \"@angular/cdk/a11y\";\nimport * as i6 from \"@angular/platform-browser/animations\";\nimport * as i7 from \"./default-preview.component\";\nimport * as i8 from \"../current-preview-file\";\nimport * as i9 from \"../preview-url-transformer\";\nimport * as i10 from \"../../core/config/settings.service\";\nimport * as i11 from \"../../core/http/app-http-client.service\";\nimport * as i12 from \"@angular/platform-browser\";\nvar styles_DefaultPreviewComponent = [i0.styles];\nvar RenderType_DefaultPreviewComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_DefaultPreviewComponent, data: {} });\nexport { RenderType_DefaultPreviewComponent as RenderType_DefaultPreviewComponent };\nexport function View_DefaultPreviewComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 0, null, null, 8, \"div\", [[\"class\", \"panel preview-object\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(2, 0, null, null, 1, \"div\", [[\"class\", \"message\"], [\"trans\", \"\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"No file preview available.\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(5, 0, null, null, 2, \"button\", [[\"color\", \"primary\"], [\"mat-raised-button\", \"\"], [\"trans\", \"\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.download.emit() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i2.View_MatButton_0, i2.RenderType_MatButton)), i1.ɵdid(6, 180224, null, 0, i3.MatButton, [i1.ElementRef, i4.Platform, i5.FocusMonitor, [2, i6.ANIMATION_MODULE_TYPE]], { color: [0, \"color\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"Download\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var currVal_2 = \"primary\"; _ck(_v, 6, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = (i1.ɵnov(_v, 6).disabled || null); var currVal_1 = (i1.ɵnov(_v, 6)._animationMode === \"NoopAnimations\"); _ck(_v, 5, 0, currVal_0, currVal_1); }); }\nexport function View_DefaultPreviewComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"default-preview\", [], null, null, null, View_DefaultPreviewComponent_0, RenderType_DefaultPreviewComponent)), i1.ɵdid(1, 49152, null, 0, i7.DefaultPreviewComponent, [i8.CURRENT_PREVIEW_FILE, i9.PREVIEW_URL_TRANSFORMER, i10.Settings, i11.AppHttpClient, i12.DomSanitizer], null, null)], null, null); }\nvar DefaultPreviewComponentNgFactory = i1.ɵccf(\"default-preview\", i7.DefaultPreviewComponent, View_DefaultPreviewComponent_Host_0, {}, {}, []);\nexport { DefaultPreviewComponentNgFactory as DefaultPreviewComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"default-preview{display:block;max-width:380px;max-height:150px}default-preview .panel{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#fff;color:rgba(0,0,0,.87);border-radius:4px;width:100%;height:100%;margin:auto;box-shadow:0 3px 3px -2px rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12)}default-preview .panel .message{font-size:1.8rem;margin-bottom:15px}default-preview .panel .mat-raised-button{display:block}\"];\nexport { styles as styles };\n","<div class=\"panel preview-object\">\r\n    <div class=\"message\" trans>No file preview available.</div>\r\n    <button mat-raised-button color=\"primary\" (click)=\"download.emit()\" trans>Download</button>\r\n</div>","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./video-preview.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../default-preview/default-preview.component.ngfactory\";\nimport * as i3 from \"../default-preview/default-preview.component\";\nimport * as i4 from \"../current-preview-file\";\nimport * as i5 from \"../preview-url-transformer\";\nimport * as i6 from \"../../core/config/settings.service\";\nimport * as i7 from \"../../core/http/app-http-client.service\";\nimport * as i8 from \"@angular/platform-browser\";\nimport * as i9 from \"@angular/common\";\nimport * as i10 from \"./video-preview.component\";\nvar styles_VideoPreviewComponent = [i0.styles];\nvar RenderType_VideoPreviewComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_VideoPreviewComponent, data: {} });\nexport { RenderType_VideoPreviewComponent as RenderType_VideoPreviewComponent };\nfunction View_VideoPreviewComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"default-preview\", [], null, null, null, i2.View_DefaultPreviewComponent_0, i2.RenderType_DefaultPreviewComponent)), i1.ɵdid(1, 49152, null, 0, i3.DefaultPreviewComponent, [i4.CURRENT_PREVIEW_FILE, i5.PREVIEW_URL_TRANSFORMER, i6.Settings, i7.AppHttpClient, i8.DomSanitizer], null, null)], null, null); }\nexport function View_VideoPreviewComponent_0(_l) { return i1.ɵvid(2, [i1.ɵqud(402653184, 1, { playerEl: 0 }), (_l()(), i1.ɵeld(1, 0, [[1, 0], [\"playerEl\", 1]], null, 0, \"video\", [[\"class\", \"preview-object\"], [\"controls\", \"controls\"]], [[2, \"hidden\", null]], null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_VideoPreviewComponent_1)), i1.ɵdid(4, 16384, null, 0, i9.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_1 = _co.invalidMedia; _ck(_v, 4, 0, currVal_1); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.invalidMedia; _ck(_v, 1, 0, currVal_0); }); }\nexport function View_VideoPreviewComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"video-preview\", [], null, null, null, View_VideoPreviewComponent_0, RenderType_VideoPreviewComponent)), i1.ɵdid(1, 114688, null, 0, i10.VideoPreviewComponent, [i4.CURRENT_PREVIEW_FILE, i5.PREVIEW_URL_TRANSFORMER, i6.Settings, i7.AppHttpClient, i8.DomSanitizer], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nvar VideoPreviewComponentNgFactory = i1.ɵccf(\"video-preview\", i10.VideoPreviewComponent, View_VideoPreviewComponent_Host_0, {}, {}, []);\nexport { VideoPreviewComponentNgFactory as VideoPreviewComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"video-preview{display:block;max-width:80%;max-height:80%;height:auto}@media only screen and (max-width:768px){video-preview{width:90%}}video-preview video{display:block;max-width:100%;max-height:100%;height:auto;margin:auto;box-shadow:0 3px 3px -2px rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12);position:absolute;top:0;left:0;right:0;bottom:0}video-preview default-preview{margin:auto;position:absolute;top:0;left:0;right:0;bottom:0}\"];\nexport { styles as styles };\n","<video #playerEl controls=\"controls\" class=\"preview-object\" [class.hidden]=\"invalidMedia\"></video>\r\n\r\n<default-preview *ngIf=\"invalidMedia\"></default-preview>","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./image-preview.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"./image-preview.component\";\nimport * as i3 from \"../current-preview-file\";\nimport * as i4 from \"../preview-url-transformer\";\nimport * as i5 from \"../../core/config/settings.service\";\nimport * as i6 from \"../../core/http/app-http-client.service\";\nimport * as i7 from \"@angular/platform-browser\";\nvar styles_ImagePreviewComponent = [i0.styles];\nvar RenderType_ImagePreviewComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_ImagePreviewComponent, data: {} });\nexport { RenderType_ImagePreviewComponent as RenderType_ImagePreviewComponent };\nexport function View_ImagePreviewComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 0, null, null, 0, \"img\", [[\"class\", \"preview-object\"]], [[8, \"src\", 4]], null, null, null, null))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.getSafeSrc(); _ck(_v, 0, 0, currVal_0); }); }\nexport function View_ImagePreviewComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"image-preview\", [], null, null, null, View_ImagePreviewComponent_0, RenderType_ImagePreviewComponent)), i1.ɵdid(1, 49152, null, 0, i2.ImagePreviewComponent, [i3.CURRENT_PREVIEW_FILE, i4.PREVIEW_URL_TRANSFORMER, i5.Settings, i6.AppHttpClient, i7.DomSanitizer], null, null)], null, null); }\nvar ImagePreviewComponentNgFactory = i1.ɵccf(\"image-preview\", i2.ImagePreviewComponent, View_ImagePreviewComponent_Host_0, {}, {}, []);\nexport { ImagePreviewComponentNgFactory as ImagePreviewComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"image-preview{display:block;max-width:80%;max-height:80%;height:auto}@media only screen and (max-width:768px){image-preview{width:90%}}image-preview img{max-width:100%;max-height:100%;height:auto;margin:auto;box-shadow:0 3px 3px -2px rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12);position:absolute;top:0;left:0;right:0;bottom:0}\"];\nexport { styles as styles };\n","<img [src]=\"getSafeSrc()\" class=\"preview-object\">","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./pdf-preview.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"./pdf-preview.component\";\nimport * as i3 from \"../current-preview-file\";\nimport * as i4 from \"../preview-url-transformer\";\nimport * as i5 from \"../../core/config/settings.service\";\nimport * as i6 from \"../../core/http/app-http-client.service\";\nimport * as i7 from \"@angular/platform-browser\";\nvar styles_PdfPreviewComponent = [i0.styles];\nvar RenderType_PdfPreviewComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_PdfPreviewComponent, data: {} });\nexport { RenderType_PdfPreviewComponent as RenderType_PdfPreviewComponent };\nexport function View_PdfPreviewComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 0, null, null, 4, \"object\", [[\"type\", \"application/pdf\"]], [[8, \"data\", 5]], null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(2, 0, null, null, 1, \"a\", [[\"trans\", \"\"]], [[8, \"href\", 4]], null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"Download the file.\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.getSafeSrc(); _ck(_v, 0, 0, currVal_0); var currVal_1 = _co.getSafeSrc(); _ck(_v, 2, 0, currVal_1); }); }\nexport function View_PdfPreviewComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"pdf-preview\", [], [[8, \"className\", 0]], null, null, View_PdfPreviewComponent_0, RenderType_PdfPreviewComponent)), i1.ɵdid(1, 49152, null, 0, i2.PdfPreviewComponent, [i3.CURRENT_PREVIEW_FILE, i4.PREVIEW_URL_TRANSFORMER, i5.Settings, i6.AppHttpClient, i7.DomSanitizer], null, null)], null, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 1).className; _ck(_v, 0, 0, currVal_0); }); }\nvar PdfPreviewComponentNgFactory = i1.ɵccf(\"pdf-preview\", i2.PdfPreviewComponent, View_PdfPreviewComponent_Host_0, {}, {}, []);\nexport { PdfPreviewComponentNgFactory as PdfPreviewComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"pdf-preview{display:block;width:100%;height:100%;margin:auto;position:absolute;top:0;left:0;right:0;bottom:0}pdf-preview object{width:100%;height:100%;border:none}\"];\nexport { styles as styles };\n","<object [data]=\"getSafeSrc()\" type=\"application/pdf\">\r\n    <a [href]=\"getSafeSrc()\" trans>Download the file.</a>\r\n</object>","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./audio-preview.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../default-preview/default-preview.component.ngfactory\";\nimport * as i3 from \"../default-preview/default-preview.component\";\nimport * as i4 from \"../current-preview-file\";\nimport * as i5 from \"../preview-url-transformer\";\nimport * as i6 from \"../../core/config/settings.service\";\nimport * as i7 from \"../../core/http/app-http-client.service\";\nimport * as i8 from \"@angular/platform-browser\";\nimport * as i9 from \"@angular/common\";\nimport * as i10 from \"./audio-preview.component\";\nvar styles_AudioPreviewComponent = [i0.styles];\nvar RenderType_AudioPreviewComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_AudioPreviewComponent, data: {} });\nexport { RenderType_AudioPreviewComponent as RenderType_AudioPreviewComponent };\nfunction View_AudioPreviewComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"default-preview\", [], null, null, null, i2.View_DefaultPreviewComponent_0, i2.RenderType_DefaultPreviewComponent)), i1.ɵdid(1, 49152, null, 0, i3.DefaultPreviewComponent, [i4.CURRENT_PREVIEW_FILE, i5.PREVIEW_URL_TRANSFORMER, i6.Settings, i7.AppHttpClient, i8.DomSanitizer], null, null)], null, null); }\nexport function View_AudioPreviewComponent_0(_l) { return i1.ɵvid(2, [i1.ɵqud(402653184, 1, { playerEl: 0 }), (_l()(), i1.ɵeld(1, 0, [[1, 0], [\"playerEl\", 1]], null, 0, \"audio\", [[\"class\", \"preview-object\"], [\"controls\", \"controls\"]], [[2, \"hidden\", null]], null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_AudioPreviewComponent_1)), i1.ɵdid(4, 16384, null, 0, i9.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_1 = _co.invalidMedia; _ck(_v, 4, 0, currVal_1); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.invalidMedia; _ck(_v, 1, 0, currVal_0); }); }\nexport function View_AudioPreviewComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"audio-preview\", [], null, null, null, View_AudioPreviewComponent_0, RenderType_AudioPreviewComponent)), i1.ɵdid(1, 114688, null, 0, i10.AudioPreviewComponent, [i4.CURRENT_PREVIEW_FILE, i5.PREVIEW_URL_TRANSFORMER, i6.Settings, i7.AppHttpClient, i8.DomSanitizer], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nvar AudioPreviewComponentNgFactory = i1.ɵccf(\"audio-preview\", i10.AudioPreviewComponent, View_AudioPreviewComponent_Host_0, {}, {}, []);\nexport { AudioPreviewComponentNgFactory as AudioPreviewComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"audio-preview{display:block;max-width:80%;height:auto}@media only screen and (max-width:768px){audio-preview{width:90%}}audio-preview audio{display:block;max-width:100%;height:auto;margin:auto;box-shadow:0 3px 3px -2px rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12);position:absolute;top:0;left:0;right:0;bottom:0}audio-preview default-preview{margin:auto;position:absolute;top:0;left:0;right:0;bottom:0}\"];\nexport { styles as styles };\n","<audio #playerEl controls=\"controls\" class=\"preview-object\" [class.hidden]=\"invalidMedia\"></audio>\r\n\r\n<default-preview *ngIf=\"invalidMedia\"></default-preview>","var __assign = (this && this.__assign) || Object.assign || function(t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n        s = arguments[i];\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n            t[p] = s[p];\n    }\n    return t;\n};\nimport { EventEmitter } from '@angular/core';\nimport { DRIVE_ENTRY_FULL_PERMISSIONS } from '../../permissions/drive-entry-permissions';\nvar SharingPermissionsButtonComponent = /** @class */ (function () {\n    function SharingPermissionsButtonComponent() {\n        this.permissions = DRIVE_ENTRY_FULL_PERMISSIONS;\n        this.change = new EventEmitter();\n        this.compact = false;\n    }\n    SharingPermissionsButtonComponent.prototype.overallPermission = function () {\n        if (this.permissions.varies) {\n            return 'varies';\n        }\n        else if (this.permissions.edit) {\n            return 'edit';\n        }\n        else if (this.permissions.download) {\n            return 'download';\n        }\n        {\n            return 'view';\n        }\n    };\n    SharingPermissionsButtonComponent.prototype.selectPermission = function (permission) {\n        if (permission === 'edit') {\n            this.permissions = __assign({}, DRIVE_ENTRY_FULL_PERMISSIONS);\n        }\n        else if (permission === 'download') {\n            this.permissions = __assign({}, DRIVE_ENTRY_FULL_PERMISSIONS, { edit: false });\n        }\n        else {\n            this.permissions = __assign({}, DRIVE_ENTRY_FULL_PERMISSIONS, { edit: false, download: false });\n        }\n        this.change.emit(this.permissions);\n    };\n    return SharingPermissionsButtonComponent;\n}());\nexport { SharingPermissionsButtonComponent };\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, EventEmitter, HostBinding } from '@angular/core';\nimport { DRIVE_ENTRY_FULL_PERMISSIONS, DriveEntryPermissions } from '../../permissions/drive-entry-permissions';\nimport { ShareDialogEntryPermissions } from '../share-dialog/types/ShareDialogEntryPermissions';\n\n@Component({\n    selector: 'sharing-permissions-button',\n    templateUrl: './sharing-permissions-button.component.html',\n    styleUrls: ['./sharing-permissions-button.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SharingPermissionsButtonComponent {\n    @Input() permissions: ShareDialogEntryPermissions = DRIVE_ENTRY_FULL_PERMISSIONS;\n    @Output() change: EventEmitter<DriveEntryPermissions> = new EventEmitter();\n    @Input() @HostBinding('class.compact') compact = false;\n\n    public overallPermission(): keyof ShareDialogEntryPermissions {\n        if (this.permissions.varies) {\n            return 'varies';\n        } else if (this.permissions.edit) {\n            return 'edit';\n        } else if (this.permissions.download) {\n            return 'download';\n        } {\n            return 'view';\n        }\n    }\n\n    public selectPermission(permission: keyof ShareDialogEntryPermissions) {\n        if (permission === 'edit') {\n            this.permissions = {...DRIVE_ENTRY_FULL_PERMISSIONS};\n        } else if (permission === 'download') {\n            this.permissions = {...DRIVE_ENTRY_FULL_PERMISSIONS, edit: false};\n        } else {\n            this.permissions = {...DRIVE_ENTRY_FULL_PERMISSIONS, edit: false, download: false};\n        }\n\n        this.change.emit(this.permissions);\n    }\n}\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./sharing-permissions-button.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i3 from \"@angular/material/icon\";\nimport * as i4 from \"../../../../common/core/translations/translate.directive\";\nimport * as i5 from \"../../../../common/core/translations/translations.service\";\nimport * as i6 from \"../../../../common/core/config/settings.service\";\nimport * as i7 from \"../../../../../node_modules/@angular/material/button/typings/index.ngfactory\";\nimport * as i8 from \"@angular/material/button\";\nimport * as i9 from \"@angular/cdk/platform\";\nimport * as i10 from \"@angular/cdk/a11y\";\nimport * as i11 from \"@angular/platform-browser/animations\";\nimport * as i12 from \"@angular/material/menu\";\nimport * as i13 from \"@angular/cdk/overlay\";\nimport * as i14 from \"@angular/cdk/bidi\";\nimport * as i15 from \"@angular/common\";\nimport * as i16 from \"../../../../../node_modules/@angular/material/menu/typings/index.ngfactory\";\nimport * as i17 from \"./sharing-permissions-button.component\";\nvar styles_SharingPermissionsButtonComponent = [i0.styles];\nvar RenderType_SharingPermissionsButtonComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_SharingPermissionsButtonComponent, data: {} });\nexport { RenderType_SharingPermissionsButtonComponent as RenderType_SharingPermissionsButtonComponent };\nfunction View_SharingPermissionsButtonComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 8, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(2, 0, null, null, 1, \"mat-icon\", [[\"class\", \"button-icon mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"priority-high\"]], [[2, \"mat-icon-inline\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(3, 638976, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(5, 0, null, null, 2, \"span\", [[\"class\", \"button-text\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(6, 4341760, null, 0, i4.TranslateDirective, [i1.ElementRef, i5.Translations, i6.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Varies\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"]))], function (_ck, _v) { var currVal_1 = \"priority-high\"; _ck(_v, 3, 0, currVal_1); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 3).inline; _ck(_v, 2, 0, currVal_0); }); }\nfunction View_SharingPermissionsButtonComponent_2(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 8, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(2, 0, null, null, 1, \"mat-icon\", [[\"class\", \"button-icon mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"edit\"]], [[2, \"mat-icon-inline\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(3, 638976, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(5, 0, null, null, 2, \"span\", [[\"class\", \"button-text\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(6, 4341760, null, 0, i4.TranslateDirective, [i1.ElementRef, i5.Translations, i6.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Can edit\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"]))], function (_ck, _v) { var currVal_1 = \"edit\"; _ck(_v, 3, 0, currVal_1); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 3).inline; _ck(_v, 2, 0, currVal_0); }); }\nfunction View_SharingPermissionsButtonComponent_3(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 8, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(2, 0, null, null, 1, \"mat-icon\", [[\"class\", \"button-icon mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"remove-red-eye\"]], [[2, \"mat-icon-inline\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(3, 638976, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(5, 0, null, null, 2, \"span\", [[\"class\", \"button-text\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(6, 4341760, null, 0, i4.TranslateDirective, [i1.ElementRef, i5.Translations, i6.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Can View\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"]))], function (_ck, _v) { var currVal_1 = \"remove-red-eye\"; _ck(_v, 3, 0, currVal_1); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 3).inline; _ck(_v, 2, 0, currVal_0); }); }\nfunction View_SharingPermissionsButtonComponent_4(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 8, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(2, 0, null, null, 1, \"mat-icon\", [[\"class\", \"button-icon mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"file-download\"]], [[2, \"mat-icon-inline\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(3, 638976, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(5, 0, null, null, 2, \"span\", [[\"class\", \"button-text\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(6, 4341760, null, 0, i4.TranslateDirective, [i1.ElementRef, i5.Translations, i6.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Can Download\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"]))], function (_ck, _v) { var currVal_1 = \"file-download\"; _ck(_v, 3, 0, currVal_1); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 3).inline; _ck(_v, 2, 0, currVal_0); }); }\nexport function View_SharingPermissionsButtonComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 16777216, null, null, 18, \"button\", [[\"aria-haspopup\", \"true\"], [\"color\", \"gray\"], [\"mat-flat-button\", \"\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null], [1, \"aria-expanded\", 0]], [[null, \"mousedown\"], [null, \"keydown\"], [null, \"click\"]], function (_v, en, $event) { var ad = true; if ((\"mousedown\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 2)._handleMousedown($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"keydown\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 2)._handleKeydown($event) !== false);\n        ad = (pd_1 && ad);\n    } if ((\"click\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 2)._handleClick($event) !== false);\n        ad = (pd_2 && ad);\n    } return ad; }, i7.View_MatButton_0, i7.RenderType_MatButton)), i1.ɵdid(1, 180224, null, 0, i8.MatButton, [i1.ElementRef, i9.Platform, i10.FocusMonitor, [2, i11.ANIMATION_MODULE_TYPE]], { color: [0, \"color\"] }, null), i1.ɵdid(2, 1196032, null, 0, i12.MatMenuTrigger, [i13.Overlay, i1.ElementRef, i1.ViewContainerRef, i12.MAT_MENU_SCROLL_STRATEGY, [2, i12.MatMenu], [8, null], [2, i14.Directionality], i10.FocusMonitor], { menu: [0, \"menu\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵand(16777216, null, 0, 1, null, View_SharingPermissionsButtonComponent_1)), i1.ɵdid(5, 16384, null, 0, i15.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n\\n    \"])), (_l()(), i1.ɵand(16777216, null, 0, 1, null, View_SharingPermissionsButtonComponent_2)), i1.ɵdid(8, 16384, null, 0, i15.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n\\n    \"])), (_l()(), i1.ɵand(16777216, null, 0, 1, null, View_SharingPermissionsButtonComponent_3)), i1.ɵdid(11, 16384, null, 0, i15.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n\\n    \"])), (_l()(), i1.ɵand(16777216, null, 0, 1, null, View_SharingPermissionsButtonComponent_4)), i1.ɵdid(14, 16384, null, 0, i15.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n\\n    \"])), (_l()(), i1.ɵeld(16, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"dropdown-icon mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"arrow-drop-down\"]], [[2, \"mat-icon-inline\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(17, 638976, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵeld(20, 0, null, null, 57, \"mat-menu\", [[\"classList\", \"mat-menu-with-description\"]], null, null, null, i16.View_MatMenu_0, i16.RenderType_MatMenu)), i1.ɵdid(21, 1294336, [[\"shareMenu\", 4]], 2, i12.MatMenu, [i1.ElementRef, i1.NgZone, i12.MAT_MENU_DEFAULT_OPTIONS], { classList: [0, \"classList\"] }, null), i1.ɵqud(603979776, 1, { items: 1 }), i1.ɵqud(335544320, 2, { lazyContent: 0 }), i1.ɵprd(2048, null, i12.ɵf23, null, [i12.MatMenu]), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵeld(26, 0, null, 0, 14, \"div\", [[\"class\", \"mat-menu-item\"], [\"mat-menu-item\", \"\"], [\"role\", \"menuitem\"]], [[2, \"mat-menu-item-highlighted\", null], [2, \"mat-menu-item-submenu-trigger\", null], [1, \"tabindex\", 0], [1, \"aria-disabled\", 0], [1, \"disabled\", 0]], [[null, \"click\"], [null, \"mouseenter\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 27)._checkDisabled($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"mouseenter\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 27)._handleMouseEnter() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"click\" === en)) {\n        var pd_2 = (_co.selectPermission(\"edit\") !== false);\n        ad = (pd_2 && ad);\n    } return ad; }, i16.View_MatMenuItem_0, i16.RenderType_MatMenuItem)), i1.ɵdid(27, 180224, [[1, 4]], 0, i12.MatMenuItem, [i1.ElementRef, i15.DOCUMENT, i10.FocusMonitor, [2, i12.ɵf23]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(29, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"check\"]], [[2, \"visually-hidden\", null], [2, \"mat-icon-inline\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(30, 638976, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(32, 0, null, 0, 7, \"div\", [], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(34, 0, null, null, 1, \"div\", [], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"Can edit\"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(37, 0, null, null, 1, \"div\", [[\"class\", \"description\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"People can edit, delete and copy the item to their own drive.\"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵeld(42, 0, null, 0, 16, \"div\", [[\"class\", \"mat-menu-item\"], [\"mat-menu-item\", \"\"], [\"role\", \"menuitem\"]], [[2, \"mat-menu-item-highlighted\", null], [2, \"mat-menu-item-submenu-trigger\", null], [1, \"tabindex\", 0], [1, \"aria-disabled\", 0], [1, \"disabled\", 0]], [[null, \"click\"], [null, \"mouseenter\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 43)._checkDisabled($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"mouseenter\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 43)._handleMouseEnter() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"click\" === en)) {\n        var pd_2 = (_co.selectPermission(\"download\") !== false);\n        ad = (pd_2 && ad);\n    } return ad; }, i16.View_MatMenuItem_0, i16.RenderType_MatMenuItem)), i1.ɵdid(43, 180224, [[1, 4]], 0, i12.MatMenuItem, [i1.ElementRef, i15.DOCUMENT, i10.FocusMonitor, [2, i12.ɵf23]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(45, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"check\"]], [[2, \"visually-hidden\", null], [2, \"mat-icon-inline\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(46, 638976, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(48, 0, null, 0, 9, \"div\", [], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(50, 0, null, null, 2, \"div\", [[\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(51, 4341760, null, 0, i4.TranslateDirective, [i1.ElementRef, i5.Translations, i6.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Can download\"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(54, 0, null, null, 2, \"div\", [[\"class\", \"description\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(55, 4341760, null, 0, i4.TranslateDirective, [i1.ElementRef, i5.Translations, i6.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"People can view and download the item.\"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵted(-1, 0, [\"\\n\\n    \"])), (_l()(), i1.ɵeld(60, 0, null, 0, 16, \"div\", [[\"class\", \"mat-menu-item\"], [\"mat-menu-item\", \"\"], [\"role\", \"menuitem\"]], [[2, \"mat-menu-item-highlighted\", null], [2, \"mat-menu-item-submenu-trigger\", null], [1, \"tabindex\", 0], [1, \"aria-disabled\", 0], [1, \"disabled\", 0]], [[null, \"click\"], [null, \"mouseenter\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 61)._checkDisabled($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"mouseenter\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 61)._handleMouseEnter() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"click\" === en)) {\n        var pd_2 = (_co.selectPermission(\"view\") !== false);\n        ad = (pd_2 && ad);\n    } return ad; }, i16.View_MatMenuItem_0, i16.RenderType_MatMenuItem)), i1.ɵdid(61, 180224, [[1, 4]], 0, i12.MatMenuItem, [i1.ElementRef, i15.DOCUMENT, i10.FocusMonitor, [2, i12.ɵf23]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(63, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"check\"]], [[2, \"visually-hidden\", null], [2, \"mat-icon-inline\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(64, 638976, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(66, 0, null, 0, 9, \"div\", [], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(68, 0, null, null, 2, \"div\", [[\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(69, 4341760, null, 0, i4.TranslateDirective, [i1.ElementRef, i5.Translations, i6.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Can view\"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(72, 0, null, null, 2, \"div\", [[\"class\", \"description\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(73, 4341760, null, 0, i4.TranslateDirective, [i1.ElementRef, i5.Translations, i6.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"People can view the item.\"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵted(-1, 0, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; var currVal_3 = \"gray\"; _ck(_v, 1, 0, currVal_3); var currVal_4 = i1.ɵnov(_v, 21); _ck(_v, 2, 0, currVal_4); var currVal_5 = (_co.overallPermission() === \"varies\"); _ck(_v, 5, 0, currVal_5); var currVal_6 = (_co.overallPermission() === \"edit\"); _ck(_v, 8, 0, currVal_6); var currVal_7 = (_co.overallPermission() === \"view\"); _ck(_v, 11, 0, currVal_7); var currVal_8 = (_co.overallPermission() === \"download\"); _ck(_v, 14, 0, currVal_8); var currVal_10 = \"arrow-drop-down\"; _ck(_v, 17, 0, currVal_10); var currVal_11 = \"mat-menu-with-description\"; _ck(_v, 21, 0, currVal_11); var currVal_19 = \"check\"; _ck(_v, 30, 0, currVal_19); var currVal_27 = \"check\"; _ck(_v, 46, 0, currVal_27); var currVal_35 = \"check\"; _ck(_v, 64, 0, currVal_35); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = (i1.ɵnov(_v, 1).disabled || null); var currVal_1 = (i1.ɵnov(_v, 1)._animationMode === \"NoopAnimations\"); var currVal_2 = (i1.ɵnov(_v, 2).menuOpen || null); _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2); var currVal_9 = i1.ɵnov(_v, 17).inline; _ck(_v, 16, 0, currVal_9); var currVal_12 = i1.ɵnov(_v, 27)._highlighted; var currVal_13 = i1.ɵnov(_v, 27)._triggersSubmenu; var currVal_14 = i1.ɵnov(_v, 27)._getTabIndex(); var currVal_15 = i1.ɵnov(_v, 27).disabled.toString(); var currVal_16 = (i1.ɵnov(_v, 27).disabled || null); _ck(_v, 26, 0, currVal_12, currVal_13, currVal_14, currVal_15, currVal_16); var currVal_17 = (_co.overallPermission() !== \"edit\"); var currVal_18 = i1.ɵnov(_v, 30).inline; _ck(_v, 29, 0, currVal_17, currVal_18); var currVal_20 = i1.ɵnov(_v, 43)._highlighted; var currVal_21 = i1.ɵnov(_v, 43)._triggersSubmenu; var currVal_22 = i1.ɵnov(_v, 43)._getTabIndex(); var currVal_23 = i1.ɵnov(_v, 43).disabled.toString(); var currVal_24 = (i1.ɵnov(_v, 43).disabled || null); _ck(_v, 42, 0, currVal_20, currVal_21, currVal_22, currVal_23, currVal_24); var currVal_25 = (_co.overallPermission() !== \"download\"); var currVal_26 = i1.ɵnov(_v, 46).inline; _ck(_v, 45, 0, currVal_25, currVal_26); var currVal_28 = i1.ɵnov(_v, 61)._highlighted; var currVal_29 = i1.ɵnov(_v, 61)._triggersSubmenu; var currVal_30 = i1.ɵnov(_v, 61)._getTabIndex(); var currVal_31 = i1.ɵnov(_v, 61).disabled.toString(); var currVal_32 = (i1.ɵnov(_v, 61).disabled || null); _ck(_v, 60, 0, currVal_28, currVal_29, currVal_30, currVal_31, currVal_32); var currVal_33 = (_co.overallPermission() !== \"view\"); var currVal_34 = i1.ɵnov(_v, 64).inline; _ck(_v, 63, 0, currVal_33, currVal_34); }); }\nexport function View_SharingPermissionsButtonComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"sharing-permissions-button\", [], [[2, \"compact\", null]], null, null, View_SharingPermissionsButtonComponent_0, RenderType_SharingPermissionsButtonComponent)), i1.ɵdid(1, 49152, null, 0, i17.SharingPermissionsButtonComponent, [], null, null)], null, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 1).compact; _ck(_v, 0, 0, currVal_0); }); }\nvar SharingPermissionsButtonComponentNgFactory = i1.ɵccf(\"sharing-permissions-button\", i17.SharingPermissionsButtonComponent, View_SharingPermissionsButtonComponent_Host_0, { permissions: \"permissions\", compact: \"compact\" }, { change: \"change\" }, []);\nexport { SharingPermissionsButtonComponentNgFactory as SharingPermissionsButtonComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\".mat-menu-with-description .mat-menu-item{display:flex;height:auto;min-height:48px;line-height:normal;white-space:normal;padding:10px 16px;font-size:1.5rem}.mat-menu-with-description .mat-menu-item .mat-icon{flex:0 0 24px}.mat-menu-with-description .mat-menu-item .description{font-size:1.4rem;color:rgba(0,0,0,.54);margin-top:3px}sharing-permissions-button{display:inline-block}sharing-permissions-button.compact .button-text{display:none}sharing-permissions-button .dropdown-icon,sharing-permissions-button:not(.compact) .button-icon{width:18px;height:18px;line-height:18px}sharing-permissions-button .button-text{font-size:1.3rem}\"];\nexport { styles as styles };\n","<button mat-flat-button color=\"gray\" [matMenuTriggerFor]=\"shareMenu\">\n    <ng-container *ngIf=\"overallPermission() === 'varies'\">\n        <mat-icon class=\"button-icon\" svgIcon=\"priority-high\"></mat-icon>\n        <span class=\"button-text\" trans>Varies</span>\n    </ng-container>\n\n    <ng-container *ngIf=\"overallPermission() === 'edit'\">\n        <mat-icon class=\"button-icon\" svgIcon=\"edit\"></mat-icon>\n        <span class=\"button-text\" trans>Can edit</span>\n    </ng-container>\n\n    <ng-container *ngIf=\"overallPermission() === 'view'\">\n        <mat-icon class=\"button-icon\" svgIcon=\"remove-red-eye\"></mat-icon>\n        <span class=\"button-text\" trans>Can View</span>\n    </ng-container>\n\n    <ng-container *ngIf=\"overallPermission() === 'download'\">\n        <mat-icon class=\"button-icon\" svgIcon=\"file-download\"></mat-icon>\n        <span class=\"button-text\" trans>Can Download</span>\n    </ng-container>\n\n    <mat-icon class=\"dropdown-icon\" svgIcon=\"arrow-drop-down\"></mat-icon>\n</button>\n\n<mat-menu #shareMenu=\"matMenu\" classList=\"mat-menu-with-description\">\n    <div mat-menu-item (click)=\"selectPermission('edit')\">\n        <mat-icon class=\"mat-icon\" svgIcon=\"check\" [class.visually-hidden]=\"overallPermission() !== 'edit'\"></mat-icon>\n        <div>\n            <div>Can edit</div>\n            <div class=\"description\">People can edit, delete and copy the item to their own drive.</div>\n        </div>\n    </div>\n    <div mat-menu-item (click)=\"selectPermission('download')\">\n        <mat-icon class=\"mat-icon\" svgIcon=\"check\" [class.visually-hidden]=\"overallPermission() !== 'download'\"></mat-icon>\n        <div>\n            <div trans>Can download</div>\n            <div class=\"description\" trans>People can view and download the item.</div>\n        </div>\n    </div>\n\n    <div mat-menu-item (click)=\"selectPermission('view')\">\n        <mat-icon class=\"mat-icon\" svgIcon=\"check\" [class.visually-hidden]=\"overallPermission() !== 'view'\"></mat-icon>\n        <div>\n            <div trans>Can view</div>\n            <div class=\"description\" trans>People can view the item.</div>\n        </div>\n    </div>\n</mat-menu>","import { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { DriveEntryUser } from '../../files/models/drive-entry';\nimport { DriveEntryPermissions } from '../../permissions/drive-entry-permissions';\nimport { ShareDialogEntryUser, RemoveUser, SaveChanges, ShareDialogState, UpdateUserPermissions } from '../state/share-dialog.state';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { CurrentUser } from '../../../../common/auth/current-user';\n\n@Component({\n    selector: 'entries-access-table',\n    templateUrl: './entries-access-table.component.html',\n    styleUrls: ['./entries-access-table.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    animations: [\n        trigger('flyInOut', [\n            state('in', style({transform: 'translateX(0)'})),\n            transition('void => *', [\n                style({transform: 'translateX(-100%)'}),\n                animate(100)\n            ]),\n            transition('* => void', [\n                animate(100, style({transform: 'translateX(100%)'}))\n            ])\n        ])\n    ]\n})\nexport class EntriesAccessTableComponent {\n    @Select(ShareDialogState.usersWithAccess) users: Observable<ShareDialogEntryUser[]>;\n    @Select(ShareDialogState.dirty) dirty: Observable<boolean>;\n    @Select(ShareDialogState.loading) loading$: Observable<boolean>;\n\n    constructor(\n        private store: Store,\n        public currentUser: CurrentUser,\n    ) {}\n\n    public updateUserPermissions(user: DriveEntryUser, newPermissions: DriveEntryPermissions) {\n        this.store.dispatch(new UpdateUserPermissions(user, newPermissions));\n    }\n\n    public removeUser(user: DriveEntryUser) {\n        this.store.dispatch(new RemoveUser(user));\n    }\n\n    public saveChanges() {\n        this.store.dispatch(new SaveChanges());\n    }\n\n    trackByUser(index: number, user: DriveEntryUser): number { return user.id; }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { Select, Store } from '@ngxs/store';\nimport { Observable } from 'rxjs';\nimport { RemoveUser, SaveChanges, ShareDialogState, UpdateUserPermissions } from '../state/share-dialog.state';\nimport { CurrentUser } from '../../../../common/auth/current-user';\nvar EntriesAccessTableComponent = /** @class */ (function () {\n    function EntriesAccessTableComponent(store, currentUser) {\n        this.store = store;\n        this.currentUser = currentUser;\n    }\n    EntriesAccessTableComponent.prototype.updateUserPermissions = function (user, newPermissions) {\n        this.store.dispatch(new UpdateUserPermissions(user, newPermissions));\n    };\n    EntriesAccessTableComponent.prototype.removeUser = function (user) {\n        this.store.dispatch(new RemoveUser(user));\n    };\n    EntriesAccessTableComponent.prototype.saveChanges = function () {\n        this.store.dispatch(new SaveChanges());\n    };\n    EntriesAccessTableComponent.prototype.trackByUser = function (index, user) { return user.id; };\n    __decorate([\n        Select(ShareDialogState.usersWithAccess),\n        __metadata(\"design:type\", Observable)\n    ], EntriesAccessTableComponent.prototype, \"users\", void 0);\n    __decorate([\n        Select(ShareDialogState.dirty),\n        __metadata(\"design:type\", Observable)\n    ], EntriesAccessTableComponent.prototype, \"dirty\", void 0);\n    __decorate([\n        Select(ShareDialogState.loading),\n        __metadata(\"design:type\", Observable)\n    ], EntriesAccessTableComponent.prototype, \"loading$\", void 0);\n    return EntriesAccessTableComponent;\n}());\nexport { EntriesAccessTableComponent };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./entries-access-table.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../../../common/core/translations/translate.directive\";\nimport * as i3 from \"../../../../common/core/translations/translations.service\";\nimport * as i4 from \"../../../../common/core/config/settings.service\";\nimport * as i5 from \"../sharing-permissions-button/sharing-permissions-button.component.ngfactory\";\nimport * as i6 from \"../sharing-permissions-button/sharing-permissions-button.component\";\nimport * as i7 from \"../../../../../node_modules/@angular/material/button/typings/index.ngfactory\";\nimport * as i8 from \"@angular/material/button\";\nimport * as i9 from \"@angular/cdk/platform\";\nimport * as i10 from \"@angular/cdk/a11y\";\nimport * as i11 from \"@angular/platform-browser/animations\";\nimport * as i12 from \"@angular/common\";\nimport * as i13 from \"../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i14 from \"@angular/material/icon\";\nimport * as i15 from \"./entries-access-table.component\";\nimport * as i16 from \"@ngxs/store\";\nimport * as i17 from \"../../../../common/auth/current-user\";\nvar styles_EntriesAccessTableComponent = [i0.styles];\nvar RenderType_EntriesAccessTableComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_EntriesAccessTableComponent, data: { \"animation\": [{ type: 7, name: \"flyInOut\", definitions: [{ type: 0, name: \"in\", styles: { type: 6, styles: { transform: \"translateX(0)\" }, offset: null }, options: undefined }, { type: 1, expr: \"void => *\", animation: [{ type: 6, styles: { transform: \"translateX(-100%)\" }, offset: null }, { type: 4, styles: null, timings: 100 }], options: null }, { type: 1, expr: \"* => void\", animation: [{ type: 4, styles: { type: 6, styles: { transform: \"translateX(100%)\" }, offset: null }, timings: 100 }], options: null }], options: {} }] } });\nexport { RenderType_EntriesAccessTableComponent as RenderType_EntriesAccessTableComponent };\nfunction View_EntriesAccessTableComponent_2(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 2, \"span\", [[\"class\", \"owner-label\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(1, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), (_l()(), i1.ɵted(2, null, [\"\\n                \", \"\\n            \"]))], null, function (_ck, _v) { var currVal_0 = (_v.parent.context.$implicit.owns_entry ? \"Owner\" : \"You\"); _ck(_v, 2, 0, currVal_0); }); }\nfunction View_EntriesAccessTableComponent_3(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(1, 0, null, null, 1, \"sharing-permissions-button\", [], [[2, \"compact\", null]], [[null, \"change\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"change\" === en)) {\n        var pd_0 = (_co.updateUserPermissions(_v.parent.context.$implicit, $event) !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i5.View_SharingPermissionsButtonComponent_0, i5.RenderType_SharingPermissionsButtonComponent)), i1.ɵdid(2, 49152, null, 0, i6.SharingPermissionsButtonComponent, [], { permissions: [0, \"permissions\"] }, { change: \"change\" }), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(4, 0, null, null, 6, \"button\", [[\"mat-icon-button\", \"\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.removeUser(_v.parent.context.$implicit) !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i7.View_MatButton_0, i7.RenderType_MatButton)), i1.ɵdid(5, 180224, null, 0, i8.MatButton, [i1.ElementRef, i9.Platform, i10.FocusMonitor, [2, i11.ANIMATION_MODULE_TYPE]], { disabled: [0, \"disabled\"] }, null), i1.ɵpid(131072, i12.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, 0, [\"\\n                    \"])), (_l()(), i1.ɵeld(8, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"close\"]], [[2, \"mat-icon-inline\", null]], null, null, i13.View_MatIcon_0, i13.RenderType_MatIcon)), i1.ɵdid(9, 638976, null, 0, i14.MatIcon, [i1.ElementRef, i14.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n                \"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"]))], function (_ck, _v) { var _co = _v.component; var currVal_1 = _v.parent.context.$implicit.entry_permissions; _ck(_v, 2, 0, currVal_1); var currVal_4 = i1.ɵunv(_v, 5, 0, i1.ɵnov(_v, 6).transform(_co.loading$)); _ck(_v, 5, 0, currVal_4); var currVal_6 = \"close\"; _ck(_v, 9, 0, currVal_6); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 2).compact; _ck(_v, 1, 0, currVal_0); var currVal_2 = (i1.ɵnov(_v, 5).disabled || null); var currVal_3 = (i1.ɵnov(_v, 5)._animationMode === \"NoopAnimations\"); _ck(_v, 4, 0, currVal_2, currVal_3); var currVal_5 = i1.ɵnov(_v, 9).inline; _ck(_v, 8, 0, currVal_5); }); }\nfunction View_EntriesAccessTableComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 20, \"div\", [[\"class\", \"list-item\"]], [[2, \"removed\", null], [24, \"@flyInOut\", 0]], null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(2, 0, null, null, 0, \"img\", [], [[8, \"src\", 4]], null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(4, 0, null, null, 7, \"div\", [[\"class\", \"text\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(6, 0, null, null, 1, \"div\", [[\"class\", \"display_name\"]], null, null, null, null, null)), (_l()(), i1.ɵted(7, null, [\"\", \"\"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(9, 0, null, null, 1, \"div\", [[\"class\", \"email\"]], null, null, null, null, null)), (_l()(), i1.ɵted(10, null, [\"\", \"\"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(13, 0, null, null, 6, \"div\", [[\"class\", \"actions\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_EntriesAccessTableComponent_2)), i1.ɵdid(16, 16384, null, 0, i12.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"], ngIfElse: [1, \"ngIfElse\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n\\n            \"])), (_l()(), i1.ɵand(0, [[\"permissionSelector\", 2]], null, 0, null, View_EntriesAccessTableComponent_3)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"]))], function (_ck, _v) { var _co = _v.component; var currVal_5 = (_v.context.$implicit.owns_entry || (_co.currentUser.getModel().id === _v.context.$implicit.id)); var currVal_6 = i1.ɵnov(_v, 18); _ck(_v, 16, 0, currVal_5, currVal_6); }, function (_ck, _v) { var currVal_0 = _v.context.$implicit.removed; var currVal_1 = \"in\"; _ck(_v, 0, 0, currVal_0, currVal_1); var currVal_2 = _v.context.$implicit.avatar; _ck(_v, 2, 0, currVal_2); var currVal_3 = _v.context.$implicit.display_name; _ck(_v, 7, 0, currVal_3); var currVal_4 = _v.context.$implicit.email; _ck(_v, 10, 0, currVal_4); }); }\nexport function View_EntriesAccessTableComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 0, null, null, 2, \"div\", [[\"class\", \"header\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(1, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Who has access\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵeld(4, 0, null, null, 5, \"div\", [[\"class\", \"users-list\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(16777216, null, null, 2, null, View_EntriesAccessTableComponent_1)), i1.ɵdid(7, 278528, null, 0, i12.NgForOf, [i1.ViewContainerRef, i1.TemplateRef, i1.IterableDiffers], { ngForOf: [0, \"ngForOf\"], ngForTrackBy: [1, \"ngForTrackBy\"] }, null), i1.ɵpid(131072, i12.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵeld(11, 0, null, null, 8, \"div\", [[\"class\", \"actions\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(13, 0, null, null, 5, \"button\", [[\"color\", \"primary\"], [\"mat-flat-button\", \"\"], [\"trans\", \"\"]], [[2, \"visually-hidden\", null], [8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.saveChanges() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i7.View_MatButton_0, i7.RenderType_MatButton)), i1.ɵdid(14, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), i1.ɵdid(15, 180224, null, 0, i8.MatButton, [i1.ElementRef, i9.Platform, i10.FocusMonitor, [2, i11.ANIMATION_MODULE_TYPE]], { disabled: [0, \"disabled\"], color: [1, \"color\"] }, null), i1.ɵpid(131072, i12.AsyncPipe, [i1.ChangeDetectorRef]), i1.ɵpid(131072, i12.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, 0, [\"Save Changes\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵunv(_v, 7, 0, i1.ɵnov(_v, 8).transform(_co.users)); var currVal_1 = _co.trackByUser; _ck(_v, 7, 0, currVal_0, currVal_1); var currVal_5 = i1.ɵunv(_v, 15, 0, i1.ɵnov(_v, 16).transform(_co.loading$)); var currVal_6 = \"primary\"; _ck(_v, 15, 0, currVal_5, currVal_6); }, function (_ck, _v) { var _co = _v.component; var currVal_2 = !i1.ɵunv(_v, 13, 0, i1.ɵnov(_v, 17).transform(_co.dirty)); var currVal_3 = (i1.ɵnov(_v, 15).disabled || null); var currVal_4 = (i1.ɵnov(_v, 15)._animationMode === \"NoopAnimations\"); _ck(_v, 13, 0, currVal_2, currVal_3, currVal_4); }); }\nexport function View_EntriesAccessTableComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"entries-access-table\", [], null, null, null, View_EntriesAccessTableComponent_0, RenderType_EntriesAccessTableComponent)), i1.ɵdid(1, 49152, null, 0, i15.EntriesAccessTableComponent, [i16.Store, i17.CurrentUser], null, null)], null, null); }\nvar EntriesAccessTableComponentNgFactory = i1.ɵccf(\"entries-access-table\", i15.EntriesAccessTableComponent, View_EntriesAccessTableComponent_Host_0, {}, {}, []);\nexport { EntriesAccessTableComponentNgFactory as EntriesAccessTableComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"entries-access-table{display:block;margin-top:25px}entries-access-table .users-list{overflow-x:hidden}entries-access-table .users-list .list-item{display:flex;align-items:center;padding:12px 0;border-bottom:1px solid #e0e0e0;transition:opacity .3s}entries-access-table .users-list .list-item.removed{opacity:.3;pointer-events:none}entries-access-table .users-list img{width:30px;height:30px;flex:0 0 30px;margin-right:15px}entries-access-table .users-list .display_name{text-transform:capitalize}entries-access-table .users-list .email{color:rgba(0,0,0,.54)}entries-access-table .users-list .actions{margin-left:auto;padding-right:5px}entries-access-table .users-list .actions button{color:rgba(0,0,0,.5)}entries-access-table .actions{margin-top:10px;text-align:right}\"];\nexport { styles as styles };\n","<div class=\"header\" trans>Who has access</div>\n<div class=\"users-list\">\n    <div class=\"list-item\" *ngFor=\"let user of users | async; trackBy: trackByUser\" [class.removed]=\"user.removed\" [@flyInOut]=\"'in'\">\n        <img [src]=\"user.avatar\">\n        <div class=\"text\">\n            <div class=\"display_name\">{{user.display_name}}</div>\n            <div class=\"email\">{{user.email}}</div>\n        </div>\n        <div class=\"actions\">\n            <span class=\"owner-label\" *ngIf=\"user.owns_entry || (currentUser.getModel().id === user.id); else permissionSelector\" trans>\n                {{ user.owns_entry ? 'Owner' : 'You' }}\n            </span>\n\n            <ng-template #permissionSelector>\n                <sharing-permissions-button [permissions]=\"user.entry_permissions\" (change)=\"updateUserPermissions(user, $event)\"></sharing-permissions-button>\n                <button mat-icon-button [disabled]=\"loading$ | async\" (click)=\"removeUser(user)\">\n                    <mat-icon svgIcon=\"close\"></mat-icon>\n                </button>\n            </ng-template>\n        </div>\n    </div>\n</div>\n<div class=\"actions\">\n    <button mat-flat-button color=\"primary\" (click)=\"saveChanges()\" [disabled]=\"loading$ | async\" [class.visually-hidden]=\"!(dirty | async)\" trans>Save Changes</button>\n</div>","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./share-dialog.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../../../../node_modules/@angular/material/button/typings/index.ngfactory\";\nimport * as i3 from \"../../../../common/core/translations/translate.directive\";\nimport * as i4 from \"../../../../common/core/translations/translations.service\";\nimport * as i5 from \"../../../../common/core/config/settings.service\";\nimport * as i6 from \"@angular/material/button\";\nimport * as i7 from \"@angular/cdk/platform\";\nimport * as i8 from \"@angular/cdk/a11y\";\nimport * as i9 from \"@angular/platform-browser/animations\";\nimport * as i10 from \"@angular/common\";\nimport * as i11 from \"@angular/material/dialog\";\nimport * as i12 from \"../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i13 from \"@angular/material/icon\";\nimport * as i14 from \"../../../../common/core/ui/chip-input/chip-input.component.ngfactory\";\nimport * as i15 from \"@angular/forms\";\nimport * as i16 from \"../../../../common/core/ui/chip-input/chip-input.component\";\nimport * as i17 from \"../sharing-permissions-button/sharing-permissions-button.component.ngfactory\";\nimport * as i18 from \"../sharing-permissions-button/sharing-permissions-button.component\";\nimport * as i19 from \"../entries-access-table/entries-access-table.component.ngfactory\";\nimport * as i20 from \"../entries-access-table/entries-access-table.component\";\nimport * as i21 from \"@ngxs/store\";\nimport * as i22 from \"../../../../common/auth/current-user\";\nimport * as i23 from \"./share-dialog.component\";\nvar styles_ShareDialogComponent = [i0.styles];\nvar RenderType_ShareDialogComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_ShareDialogComponent, data: {} });\nexport { RenderType_ShareDialogComponent as RenderType_ShareDialogComponent };\nfunction View_ShareDialogComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"div\", [[\"class\", \"error\"]], null, null, null, null, null)), (_l()(), i1.ɵted(1, null, [\"\", \"\"]))], null, function (_ck, _v) { var currVal_0 = _v.context.$implicit.value; _ck(_v, 1, 0, currVal_0); }); }\nfunction View_ShareDialogComponent_2(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 4, \"button\", [[\"color\", \"primary\"], [\"mat-raised-button\", \"\"], [\"trans\", \"\"], [\"type\", \"submit\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.share() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i2.View_MatButton_0, i2.RenderType_MatButton)), i1.ɵdid(1, 4341760, null, 0, i3.TranslateDirective, [i1.ElementRef, i4.Translations, i5.Settings], null, null), i1.ɵdid(2, 180224, null, 0, i6.MatButton, [i1.ElementRef, i7.Platform, i8.FocusMonitor, [2, i9.ANIMATION_MODULE_TYPE]], { disabled: [0, \"disabled\"], color: [1, \"color\"] }, null), i1.ɵpid(131072, i10.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, 0, [\"Share\"]))], function (_ck, _v) { var _co = _v.component; var currVal_2 = i1.ɵunv(_v, 2, 0, i1.ɵnov(_v, 3).transform(_co.loading$)); var currVal_3 = \"primary\"; _ck(_v, 2, 0, currVal_2, currVal_3); }, function (_ck, _v) { var currVal_0 = (i1.ɵnov(_v, 2).disabled || null); var currVal_1 = (i1.ɵnov(_v, 2)._animationMode === \"NoopAnimations\"); _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nexport function View_ShareDialogComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 0, null, null, 13, \"div\", [[\"class\", \"modal-header\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(2, 0, null, null, 3, \"h2\", [[\"class\", \"mat-dialog-title\"], [\"mat-dialog-title\", \"\"], [\"trans\", \"\"]], [[8, \"id\", 0]], null, null, null, null)), i1.ɵdid(3, 4341760, null, 0, i3.TranslateDirective, [i1.ElementRef, i4.Translations, i5.Settings], null, null), i1.ɵdid(4, 81920, null, 0, i11.MatDialogTitle, [[2, i11.MatDialogRef], i1.ElementRef, i11.MatDialog], null, null), (_l()(), i1.ɵted(-1, null, [\"Add people\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(7, 0, null, null, 5, \"button\", [[\"class\", \"close-button\"], [\"mat-icon-button\", \"\"], [\"tabindex\", \"-1\"], [\"type\", \"button\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.dialogRef.close() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i2.View_MatButton_0, i2.RenderType_MatButton)), i1.ɵdid(8, 180224, null, 0, i6.MatButton, [i1.ElementRef, i7.Platform, i8.FocusMonitor, [2, i9.ANIMATION_MODULE_TYPE]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(10, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"close\"]], [[2, \"mat-icon-inline\", null]], null, null, i12.View_MatIcon_0, i12.RenderType_MatIcon)), i1.ɵdid(11, 638976, null, 0, i13.MatIcon, [i1.ElementRef, i13.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵeld(15, 0, null, null, 29, \"mat-dialog-content\", [[\"class\", \"mat-dialog-content\"]], null, null, null, null, null)), i1.ɵdid(16, 16384, null, 0, i11.MatDialogContent, [], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(18, 0, null, null, 14, \"div\", [[\"class\", \"emails-container\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(20, 0, null, null, 8, \"chip-input\", [[\"email\", \"\"], [\"placeholder\", \"Enter email addresses...\"], [\"required\", \"\"]], [[1, \"required\", 0], [2, \"ng-untouched\", null], [2, \"ng-touched\", null], [2, \"ng-pristine\", null], [2, \"ng-dirty\", null], [2, \"ng-valid\", null], [2, \"ng-invalid\", null], [2, \"ng-pending\", null]], null, null, i14.View_ChipInputComponent_0, i14.RenderType_ChipInputComponent)), i1.ɵdid(21, 16384, null, 0, i15.RequiredValidator, [], { required: [0, \"required\"] }, null), i1.ɵdid(22, 16384, null, 0, i15.EmailValidator, [], { email: [0, \"email\"] }, null), i1.ɵprd(1024, null, i15.NG_VALIDATORS, function (p0_0, p1_0) { return [p0_0, p1_0]; }, [i15.RequiredValidator, i15.EmailValidator]), i1.ɵdid(24, 4243456, null, 0, i16.ChipInputComponent, [], { placeholder: [0, \"placeholder\"], email: [1, \"email\"], required: [2, \"required\"] }, null), i1.ɵprd(1024, null, i15.NG_VALUE_ACCESSOR, function (p0_0) { return [p0_0]; }, [i16.ChipInputComponent]), i1.ɵdid(26, 540672, null, 0, i15.FormControlDirective, [[6, i15.NG_VALIDATORS], [8, null], [6, i15.NG_VALUE_ACCESSOR], [2, i15.ɵangular_packages_forms_forms_j]], { form: [0, \"form\"] }, null), i1.ɵprd(2048, null, i15.NgControl, null, [i15.FormControlDirective]), i1.ɵdid(28, 16384, null, 0, i15.NgControlStatus, [[4, i15.NgControl]], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(30, 0, null, null, 1, \"sharing-permissions-button\", [], [[2, \"compact\", null]], [[null, \"change\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"change\" === en)) {\n        var pd_0 = ((_co.shareModel.permissions = $event) !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i17.View_SharingPermissionsButtonComponent_0, i17.RenderType_SharingPermissionsButtonComponent)), i1.ɵdid(31, 49152, null, 0, i18.SharingPermissionsButtonComponent, [], { compact: [0, \"compact\"] }, { change: \"change\" }), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n    \"])), (_l()(), i1.ɵeld(34, 0, null, null, 6, \"div\", [[\"class\", \"errors\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵand(16777216, null, null, 3, null, View_ShareDialogComponent_1)), i1.ɵdid(37, 278528, null, 0, i10.NgForOf, [i1.ViewContainerRef, i1.TemplateRef, i1.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null), i1.ɵpid(131072, i10.AsyncPipe, [i1.ChangeDetectorRef]), i1.ɵpid(0, i10.KeyValuePipe, [i1.KeyValueDiffers]), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n    \"])), (_l()(), i1.ɵeld(42, 0, null, null, 1, \"entries-access-table\", [], null, null, null, i19.View_EntriesAccessTableComponent_0, i19.RenderType_EntriesAccessTableComponent)), i1.ɵdid(43, 49152, null, 0, i20.EntriesAccessTableComponent, [i21.Store, i22.CurrentUser], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵeld(46, 0, null, null, 11, \"mat-dialog-actions\", [[\"class\", \"mat-dialog-actions\"]], null, null, null, null, null)), i1.ɵdid(47, 16384, null, 0, i11.MatDialogActions, [], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(49, 0, null, null, 4, \"button\", [[\"mat-button\", \"\"], [\"trans\", \"\"], [\"type\", \"button\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.dialogRef.close() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i2.View_MatButton_0, i2.RenderType_MatButton)), i1.ɵdid(50, 4341760, null, 0, i3.TranslateDirective, [i1.ElementRef, i4.Translations, i5.Settings], null, null), i1.ɵdid(51, 180224, null, 0, i6.MatButton, [i1.ElementRef, i7.Platform, i8.FocusMonitor, [2, i9.ANIMATION_MODULE_TYPE]], { disabled: [0, \"disabled\"] }, null), i1.ɵpid(131072, i10.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, 0, [\"Close\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_ShareDialogComponent_2)), i1.ɵdid(56, 16384, null, 0, i10.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"]))], function (_ck, _v) { var _co = _v.component; _ck(_v, 4, 0); var currVal_4 = \"close\"; _ck(_v, 11, 0, currVal_4); var currVal_13 = \"\"; _ck(_v, 21, 0, currVal_13); var currVal_14 = \"\"; _ck(_v, 22, 0, currVal_14); var currVal_15 = \"Enter email addresses...\"; var currVal_16 = \"\"; var currVal_17 = \"\"; _ck(_v, 24, 0, currVal_15, currVal_16, currVal_17); var currVal_18 = _co.shareModel.emails; _ck(_v, 26, 0, currVal_18); var currVal_20 = true; _ck(_v, 31, 0, currVal_20); var currVal_21 = i1.ɵunv(_v, 37, 0, i1.ɵnov(_v, 39).transform(i1.ɵunv(_v, 37, 0, i1.ɵnov(_v, 38).transform(_co.errors)))); _ck(_v, 37, 0, currVal_21); var currVal_24 = i1.ɵunv(_v, 51, 0, i1.ɵnov(_v, 52).transform(_co.loading$)); _ck(_v, 51, 0, currVal_24); var currVal_25 = ((_co.shareModel.emails.value == null) ? null : _co.shareModel.emails.value.length); _ck(_v, 56, 0, currVal_25); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 4).id; _ck(_v, 2, 0, currVal_0); var currVal_1 = (i1.ɵnov(_v, 8).disabled || null); var currVal_2 = (i1.ɵnov(_v, 8)._animationMode === \"NoopAnimations\"); _ck(_v, 7, 0, currVal_1, currVal_2); var currVal_3 = i1.ɵnov(_v, 11).inline; _ck(_v, 10, 0, currVal_3); var currVal_5 = (i1.ɵnov(_v, 21).required ? \"\" : null); var currVal_6 = i1.ɵnov(_v, 28).ngClassUntouched; var currVal_7 = i1.ɵnov(_v, 28).ngClassTouched; var currVal_8 = i1.ɵnov(_v, 28).ngClassPristine; var currVal_9 = i1.ɵnov(_v, 28).ngClassDirty; var currVal_10 = i1.ɵnov(_v, 28).ngClassValid; var currVal_11 = i1.ɵnov(_v, 28).ngClassInvalid; var currVal_12 = i1.ɵnov(_v, 28).ngClassPending; _ck(_v, 20, 0, currVal_5, currVal_6, currVal_7, currVal_8, currVal_9, currVal_10, currVal_11, currVal_12); var currVal_19 = i1.ɵnov(_v, 31).compact; _ck(_v, 30, 0, currVal_19); var currVal_22 = (i1.ɵnov(_v, 51).disabled || null); var currVal_23 = (i1.ɵnov(_v, 51)._animationMode === \"NoopAnimations\"); _ck(_v, 49, 0, currVal_22, currVal_23); }); }\nexport function View_ShareDialogComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"share-dialog\", [], null, null, null, View_ShareDialogComponent_0, RenderType_ShareDialogComponent)), i1.ɵdid(1, 180224, null, 0, i23.ShareDialogComponent, [i11.MatDialogRef, i21.Store, i21.Actions], null, null)], null, null); }\nvar ShareDialogComponentNgFactory = i1.ɵccf(\"share-dialog\", i23.ShareDialogComponent, View_ShareDialogComponent_Host_0, {}, {}, []);\nexport { ShareDialogComponentNgFactory as ShareDialogComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"share-dialog .emails-container{display:flex;min-height:54px}share-dialog .emails-container chip-input{flex:1 1 auto}share-dialog .emails-container .mat-flat-button{height:54px;border:1px solid #e0e0e0;border-left:none}share-dialog .mat-tab-body{padding:15px 0}\"];\nexport { styles as styles };\n","<div class=\"modal-header\">\r\n    <h2 mat-dialog-title trans>Add people</h2>\r\n    <button type=\"button\" mat-icon-button (click)=\"dialogRef.close()\" class=\"close-button\" tabindex=\"-1\">\r\n        <mat-icon svgIcon=\"close\"></mat-icon>\r\n    </button>\r\n</div>\r\n\r\n<mat-dialog-content>\r\n    <div class=\"emails-container\">\r\n        <chip-input [formControl]=\"shareModel.emails\" placeholder=\"Enter email addresses...\" email required></chip-input>\r\n        <sharing-permissions-button [compact]=\"true\" (change)=\"shareModel.permissions = $event\"></sharing-permissions-button>\r\n    </div>\r\n\r\n    <div class=\"errors\">\r\n        <div class=\"error\" *ngFor=\"let error of errors | async | keyvalue\">{{error.value}}</div>\r\n    </div>\r\n\r\n    <entries-access-table></entries-access-table>\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n    <button type=\"button\" mat-button (click)=\"dialogRef.close()\" [disabled]=\"loading$ | async\" trans>Close</button>\r\n    <button type=\"submit\" mat-raised-button color=\"primary\" (click)=\"share()\" [disabled]=\"(loading$ | async)\" *ngIf=\"shareModel.emails.value?.length\" trans>Share</button>\r\n</mat-dialog-actions>\r\n\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, OnInit } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { Select, Store } from '@ngxs/store';\nimport { CreateShareableLink, ShareLinkState, ToggleOptionsPanel, UpdateShareableLink } from '../share-link.state';\nimport { Observable } from 'rxjs';\nimport { ShareableLink } from '../models/shareable-link';\nimport { filter } from 'rxjs/operators';\nimport { ShareableLinkOptions } from '../models/shareable-link-options';\nimport { BackendErrorMessages } from 'common/core/types/backend-error-response';\n\n@Component({\n    selector: 'link-options',\n    templateUrl: './link-options.component.html',\n    styleUrls: ['./link-options.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LinkOptionsComponent implements OnInit {\n    @Select(ShareLinkState.link) link$: Observable<ShareableLink>;\n    @Select(ShareLinkState.loading) loading$: Observable<boolean>;\n    @Select(ShareLinkState.backendErrors) backendErrors$: Observable<BackendErrorMessages>;\n\n    public form = new FormGroup({\n        password: new FormControl(),\n        expiresAt: new FormGroup({\n            date: new FormControl(),\n            time: new FormControl(),\n        }),\n        allowEdit: new FormControl(false),\n        allowDownload: new FormControl(true)\n    });\n\n    public passwordVisible = new FormControl(false);\n    public expirationVisible = new FormControl(false);\n\n    constructor(private store: Store) {}\n\n    ngOnInit() {\n        this.bindToLinkChange();\n    }\n\n    public toggleOptionsPanel() {\n        this.store.dispatch(new ToggleOptionsPanel());\n    }\n\n    public saveChanges() {\n        if (this.store.selectSnapshot(ShareLinkState.link)) {\n            this.store.dispatch(new UpdateShareableLink(this.getPayload()));\n        } else {\n            this.store.dispatch(new CreateShareableLink(this.getPayload()));\n        }\n    }\n\n    private getPayload() {\n        const payload = {\n            allowEdit: this.form.get('allowEdit').value,\n            allowDownload: this.form.get('allowDownload').value,\n        } as ShareableLinkOptions;\n\n        if (this.expirationVisible.value) {\n            payload.expiresAt = this.form.get('expiresAt.date').value;\n            if (this.form.get('expiresAt.time').value) {\n                payload.expiresAt += ' ' + this.form.get('expiresAt.time').value;\n            }\n        }\n\n        // not sending \"password\" with request will remove it from link\n        if (this.passwordVisible.value) {\n            payload.password = this.form.get('password').value;\n        }\n\n        return payload;\n    }\n\n    private bindToLinkChange() {\n        this.link$.pipe(filter(link => !!link))\n            .subscribe(link => {\n                this.hydrateExpirationForm(link);\n\n                // show or hide password form field\n                this.passwordVisible.setValue(!!link.password);\n                this.expirationVisible.setValue(!!link.expires_at);\n\n                this.form.patchValue({\n                    allowEdit: link.allow_edit,\n                    allowDownload: link.allow_download\n                });\n            });\n    }\n\n    private hydrateExpirationForm(link: ShareableLink) {\n        if ( ! link || ! link.expires_at) return;\n\n        const parts = link.expires_at.split(' ');\n\n        this.form.get('expiresAt').setValue({\n            date: parts[0],\n            time: parts[1]\n        });\n    }\n\n    public getMinDate(): string {\n        return new Date().toJSON().split('T')[0];\n    }\n}\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { OnInit } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { Select, Store } from '@ngxs/store';\nimport { CreateShareableLink, ShareLinkState, ToggleOptionsPanel, UpdateShareableLink } from '../share-link.state';\nimport { Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nvar LinkOptionsComponent = /** @class */ (function () {\n    function LinkOptionsComponent(store) {\n        this.store = store;\n        this.form = new FormGroup({\n            password: new FormControl(),\n            expiresAt: new FormGroup({\n                date: new FormControl(),\n                time: new FormControl(),\n            }),\n            allowEdit: new FormControl(false),\n            allowDownload: new FormControl(true)\n        });\n        this.passwordVisible = new FormControl(false);\n        this.expirationVisible = new FormControl(false);\n    }\n    LinkOptionsComponent.prototype.ngOnInit = function () {\n        this.bindToLinkChange();\n    };\n    LinkOptionsComponent.prototype.toggleOptionsPanel = function () {\n        this.store.dispatch(new ToggleOptionsPanel());\n    };\n    LinkOptionsComponent.prototype.saveChanges = function () {\n        if (this.store.selectSnapshot(ShareLinkState.link)) {\n            this.store.dispatch(new UpdateShareableLink(this.getPayload()));\n        }\n        else {\n            this.store.dispatch(new CreateShareableLink(this.getPayload()));\n        }\n    };\n    LinkOptionsComponent.prototype.getPayload = function () {\n        var payload = {\n            allowEdit: this.form.get('allowEdit').value,\n            allowDownload: this.form.get('allowDownload').value,\n        };\n        if (this.expirationVisible.value) {\n            payload.expiresAt = this.form.get('expiresAt.date').value;\n            if (this.form.get('expiresAt.time').value) {\n                payload.expiresAt += ' ' + this.form.get('expiresAt.time').value;\n            }\n        }\n        // not sending \"password\" with request will remove it from link\n        if (this.passwordVisible.value) {\n            payload.password = this.form.get('password').value;\n        }\n        return payload;\n    };\n    LinkOptionsComponent.prototype.bindToLinkChange = function () {\n        var _this = this;\n        this.link$.pipe(filter(function (link) { return !!link; }))\n            .subscribe(function (link) {\n            _this.hydrateExpirationForm(link);\n            // show or hide password form field\n            _this.passwordVisible.setValue(!!link.password);\n            _this.expirationVisible.setValue(!!link.expires_at);\n            _this.form.patchValue({\n                allowEdit: link.allow_edit,\n                allowDownload: link.allow_download\n            });\n        });\n    };\n    LinkOptionsComponent.prototype.hydrateExpirationForm = function (link) {\n        if (!link || !link.expires_at)\n            return;\n        var parts = link.expires_at.split(' ');\n        this.form.get('expiresAt').setValue({\n            date: parts[0],\n            time: parts[1]\n        });\n    };\n    LinkOptionsComponent.prototype.getMinDate = function () {\n        return new Date().toJSON().split('T')[0];\n    };\n    __decorate([\n        Select(ShareLinkState.link),\n        __metadata(\"design:type\", Observable)\n    ], LinkOptionsComponent.prototype, \"link$\", void 0);\n    __decorate([\n        Select(ShareLinkState.loading),\n        __metadata(\"design:type\", Observable)\n    ], LinkOptionsComponent.prototype, \"loading$\", void 0);\n    __decorate([\n        Select(ShareLinkState.backendErrors),\n        __metadata(\"design:type\", Observable)\n    ], LinkOptionsComponent.prototype, \"backendErrors$\", void 0);\n    return LinkOptionsComponent;\n}());\nexport { LinkOptionsComponent };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./link-options.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"../../../../../common/core/translations/translate.directive\";\nimport * as i4 from \"../../../../../common/core/translations/translations.service\";\nimport * as i5 from \"../../../../../common/core/config/settings.service\";\nimport * as i6 from \"../../../../../../node_modules/@angular/material/checkbox/typings/index.ngfactory\";\nimport * as i7 from \"@angular/material/checkbox\";\nimport * as i8 from \"@angular/cdk/a11y\";\nimport * as i9 from \"@angular/platform-browser/animations\";\nimport * as i10 from \"@angular/common\";\nimport * as i11 from \"../../../../../../node_modules/@angular/material/button/typings/index.ngfactory\";\nimport * as i12 from \"@angular/material/button\";\nimport * as i13 from \"@angular/cdk/platform\";\nimport * as i14 from \"./link-options.component\";\nimport * as i15 from \"@ngxs/store\";\nvar styles_LinkOptionsComponent = [i0.styles];\nvar RenderType_LinkOptionsComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_LinkOptionsComponent, data: {} });\nexport { RenderType_LinkOptionsComponent as RenderType_LinkOptionsComponent };\nfunction View_LinkOptionsComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"div\", [[\"class\", \"error\"]], null, null, null, null, null)), (_l()(), i1.ɵted(1, null, [\"\", \"\"]))], null, function (_ck, _v) { var currVal_0 = _v.context.ngIf; _ck(_v, 1, 0, currVal_0); }); }\nfunction View_LinkOptionsComponent_2(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 12, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                    \"])), (_l()(), i1.ɵeld(2, 0, null, null, 9, \"div\", [[\"class\", \"input-container password-input-container\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                        \"])), (_l()(), i1.ɵeld(4, 0, null, null, 6, \"input\", [[\"formControlName\", \"password\"], [\"placeholder\", \"Enter new password...\"], [\"trans-placeholder\", \"\"], [\"type\", \"password\"]], [[2, \"ng-untouched\", null], [2, \"ng-touched\", null], [2, \"ng-pristine\", null], [2, \"ng-dirty\", null], [2, \"ng-valid\", null], [2, \"ng-invalid\", null], [2, \"ng-pending\", null]], [[null, \"input\"], [null, \"blur\"], [null, \"compositionstart\"], [null, \"compositionend\"]], function (_v, en, $event) { var ad = true; if ((\"input\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 5)._handleInput($event.target.value) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"blur\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 5).onTouched() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"compositionstart\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 5)._compositionStart() !== false);\n        ad = (pd_2 && ad);\n    } if ((\"compositionend\" === en)) {\n        var pd_3 = (i1.ɵnov(_v, 5)._compositionEnd($event.target.value) !== false);\n        ad = (pd_3 && ad);\n    } return ad; }, null, null)), i1.ɵdid(5, 16384, null, 0, i2.DefaultValueAccessor, [i1.Renderer2, i1.ElementRef, [2, i2.COMPOSITION_BUFFER_MODE]], null, null), i1.ɵprd(1024, null, i2.NG_VALUE_ACCESSOR, function (p0_0) { return [p0_0]; }, [i2.DefaultValueAccessor]), i1.ɵdid(7, 671744, null, 0, i2.FormControlName, [[3, i2.ControlContainer], [8, null], [8, null], [6, i2.NG_VALUE_ACCESSOR], [2, i2.ɵangular_packages_forms_forms_j]], { name: [0, \"name\"] }, null), i1.ɵprd(2048, null, i2.NgControl, null, [i2.FormControlName]), i1.ɵdid(9, 16384, null, 0, i2.NgControlStatus, [[4, i2.NgControl]], null, null), i1.ɵdid(10, 4341760, null, 0, i3.TranslateDirective, [i1.ElementRef, i4.Translations, i5.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n                    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n                \"]))], function (_ck, _v) { var currVal_7 = \"password\"; _ck(_v, 7, 0, currVal_7); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 9).ngClassUntouched; var currVal_1 = i1.ɵnov(_v, 9).ngClassTouched; var currVal_2 = i1.ɵnov(_v, 9).ngClassPristine; var currVal_3 = i1.ɵnov(_v, 9).ngClassDirty; var currVal_4 = i1.ɵnov(_v, 9).ngClassValid; var currVal_5 = i1.ɵnov(_v, 9).ngClassInvalid; var currVal_6 = i1.ɵnov(_v, 9).ngClassPending; _ck(_v, 4, 0, currVal_0, currVal_1, currVal_2, currVal_3, currVal_4, currVal_5, currVal_6); }); }\nexport function View_LinkOptionsComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 0, null, null, 118, \"form\", [[\"class\", \"update-link-panel\"], [\"novalidate\", \"\"]], [[2, \"ng-untouched\", null], [2, \"ng-touched\", null], [2, \"ng-pristine\", null], [2, \"ng-dirty\", null], [2, \"ng-valid\", null], [2, \"ng-invalid\", null], [2, \"ng-pending\", null]], [[null, \"ngSubmit\"], [null, \"submit\"], [null, \"reset\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"submit\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 2).onSubmit($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"reset\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 2).onReset() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"ngSubmit\" === en)) {\n        var pd_2 = (_co.saveChanges() !== false);\n        ad = (pd_2 && ad);\n    } return ad; }, null, null)), i1.ɵdid(1, 16384, null, 0, i2.ɵangular_packages_forms_forms_bg, [], null, null), i1.ɵdid(2, 540672, null, 0, i2.FormGroupDirective, [[8, null], [8, null]], { form: [0, \"form\"] }, { ngSubmit: \"ngSubmit\" }), i1.ɵprd(2048, null, i2.ControlContainer, null, [i2.FormGroupDirective]), i1.ɵdid(4, 16384, null, 0, i2.NgControlStatusGroup, [[4, i2.ControlContainer]], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(6, 0, null, null, 99, \"div\", [[\"class\", \"link-options\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(8, 0, null, null, 45, \"div\", [[\"class\", \"link-option\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(10, 0, null, null, 1, \"div\", [[\"class\", \"label\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"Link expiration\"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(13, 0, null, null, 39, \"div\", [[\"class\", \"content\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(15, 0, null, null, 7, \"mat-checkbox\", [[\"class\", \"mat-checkbox\"], [\"color\", \"primary\"], [\"trans\", \"\"]], [[8, \"id\", 0], [2, \"mat-checkbox-indeterminate\", null], [2, \"mat-checkbox-checked\", null], [2, \"mat-checkbox-disabled\", null], [2, \"mat-checkbox-label-before\", null], [2, \"_mat-animation-noopable\", null], [2, \"ng-untouched\", null], [2, \"ng-touched\", null], [2, \"ng-pristine\", null], [2, \"ng-dirty\", null], [2, \"ng-valid\", null], [2, \"ng-invalid\", null], [2, \"ng-pending\", null]], null, null, i6.View_MatCheckbox_0, i6.RenderType_MatCheckbox)), i1.ɵdid(16, 4374528, null, 0, i7.MatCheckbox, [i1.ElementRef, i1.ChangeDetectorRef, i8.FocusMonitor, i1.NgZone, [8, null], [2, i7.MAT_CHECKBOX_CLICK_ACTION], [2, i9.ANIMATION_MODULE_TYPE]], { color: [0, \"color\"] }, null), i1.ɵprd(1024, null, i2.NG_VALUE_ACCESSOR, function (p0_0) { return [p0_0]; }, [i7.MatCheckbox]), i1.ɵdid(18, 540672, null, 0, i2.FormControlDirective, [[8, null], [8, null], [6, i2.NG_VALUE_ACCESSOR], [2, i2.ɵangular_packages_forms_forms_j]], { form: [0, \"form\"] }, null), i1.ɵprd(2048, null, i2.NgControl, null, [i2.FormControlDirective]), i1.ɵdid(20, 16384, null, 0, i2.NgControlStatus, [[4, i2.NgControl]], null, null), i1.ɵdid(21, 4341760, null, 0, i3.TranslateDirective, [i1.ElementRef, i4.Translations, i5.Settings], null, null), (_l()(), i1.ɵted(-1, 0, [\"Link is valid until:\"])), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(24, 0, null, null, 23, \"div\", [[\"class\", \"input-container expiration-input-container\"], [\"formGroupName\", \"expiresAt\"]], [[2, \"hidden\", null], [2, \"ng-untouched\", null], [2, \"ng-touched\", null], [2, \"ng-pristine\", null], [2, \"ng-dirty\", null], [2, \"ng-valid\", null], [2, \"ng-invalid\", null], [2, \"ng-pending\", null]], null, null, null, null)), i1.ɵdid(25, 212992, null, 0, i2.FormGroupName, [[3, i2.ControlContainer], [8, null], [8, null]], { name: [0, \"name\"] }, null), i1.ɵprd(2048, null, i2.ControlContainer, null, [i2.FormGroupName]), i1.ɵdid(27, 16384, null, 0, i2.NgControlStatusGroup, [[4, i2.ControlContainer]], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n                    \"])), (_l()(), i1.ɵeld(29, 0, null, null, 9, \"div\", [[\"class\", \"date-input-container\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                        \"])), (_l()(), i1.ɵeld(31, 0, null, null, 6, \"input\", [[\"class\", \"date-input\"], [\"formControlName\", \"date\"], [\"placeholder\", \"Expiration date...\"], [\"trans-placeholder\", \"\"], [\"type\", \"date\"]], [[8, \"min\", 0], [2, \"ng-untouched\", null], [2, \"ng-touched\", null], [2, \"ng-pristine\", null], [2, \"ng-dirty\", null], [2, \"ng-valid\", null], [2, \"ng-invalid\", null], [2, \"ng-pending\", null]], [[null, \"input\"], [null, \"blur\"], [null, \"compositionstart\"], [null, \"compositionend\"]], function (_v, en, $event) { var ad = true; if ((\"input\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 32)._handleInput($event.target.value) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"blur\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 32).onTouched() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"compositionstart\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 32)._compositionStart() !== false);\n        ad = (pd_2 && ad);\n    } if ((\"compositionend\" === en)) {\n        var pd_3 = (i1.ɵnov(_v, 32)._compositionEnd($event.target.value) !== false);\n        ad = (pd_3 && ad);\n    } return ad; }, null, null)), i1.ɵdid(32, 16384, null, 0, i2.DefaultValueAccessor, [i1.Renderer2, i1.ElementRef, [2, i2.COMPOSITION_BUFFER_MODE]], null, null), i1.ɵprd(1024, null, i2.NG_VALUE_ACCESSOR, function (p0_0) { return [p0_0]; }, [i2.DefaultValueAccessor]), i1.ɵdid(34, 671744, null, 0, i2.FormControlName, [[3, i2.ControlContainer], [8, null], [8, null], [6, i2.NG_VALUE_ACCESSOR], [2, i2.ɵangular_packages_forms_forms_j]], { name: [0, \"name\"] }, null), i1.ɵprd(2048, null, i2.NgControl, null, [i2.FormControlName]), i1.ɵdid(36, 16384, null, 0, i2.NgControlStatus, [[4, i2.NgControl]], null, null), i1.ɵdid(37, 4341760, null, 0, i3.TranslateDirective, [i1.ElementRef, i4.Translations, i5.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n                    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n                    \"])), (_l()(), i1.ɵeld(40, 0, null, null, 6, \"input\", [[\"class\", \"time-input\"], [\"formControlName\", \"time\"], [\"placeholder\", \"Expiration time...\"], [\"trans-placeholder\", \"\"], [\"type\", \"time\"]], [[2, \"ng-untouched\", null], [2, \"ng-touched\", null], [2, \"ng-pristine\", null], [2, \"ng-dirty\", null], [2, \"ng-valid\", null], [2, \"ng-invalid\", null], [2, \"ng-pending\", null]], [[null, \"input\"], [null, \"blur\"], [null, \"compositionstart\"], [null, \"compositionend\"]], function (_v, en, $event) { var ad = true; if ((\"input\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 41)._handleInput($event.target.value) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"blur\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 41).onTouched() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"compositionstart\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 41)._compositionStart() !== false);\n        ad = (pd_2 && ad);\n    } if ((\"compositionend\" === en)) {\n        var pd_3 = (i1.ɵnov(_v, 41)._compositionEnd($event.target.value) !== false);\n        ad = (pd_3 && ad);\n    } return ad; }, null, null)), i1.ɵdid(41, 16384, null, 0, i2.DefaultValueAccessor, [i1.Renderer2, i1.ElementRef, [2, i2.COMPOSITION_BUFFER_MODE]], null, null), i1.ɵprd(1024, null, i2.NG_VALUE_ACCESSOR, function (p0_0) { return [p0_0]; }, [i2.DefaultValueAccessor]), i1.ɵdid(43, 671744, null, 0, i2.FormControlName, [[3, i2.ControlContainer], [8, null], [8, null], [6, i2.NG_VALUE_ACCESSOR], [2, i2.ɵangular_packages_forms_forms_j]], { name: [0, \"name\"] }, null), i1.ɵprd(2048, null, i2.NgControl, null, [i2.FormControlName]), i1.ɵdid(45, 16384, null, 0, i2.NgControlStatus, [[4, i2.NgControl]], null, null), i1.ɵdid(46, 4341760, null, 0, i3.TranslateDirective, [i1.ElementRef, i4.Translations, i5.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵand(16777216, null, null, 2, null, View_LinkOptionsComponent_1)), i1.ɵdid(50, 16384, null, 0, i10.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), i1.ɵpid(131072, i10.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(55, 0, null, null, 19, \"div\", [[\"class\", \"link-option\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(57, 0, null, null, 1, \"div\", [[\"class\", \"label\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"Password Protect\"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(60, 0, null, null, 13, \"div\", [[\"class\", \"content\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(62, 0, null, null, 7, \"mat-checkbox\", [[\"class\", \"mat-checkbox\"], [\"color\", \"primary\"], [\"trans\", \"\"]], [[8, \"id\", 0], [2, \"mat-checkbox-indeterminate\", null], [2, \"mat-checkbox-checked\", null], [2, \"mat-checkbox-disabled\", null], [2, \"mat-checkbox-label-before\", null], [2, \"_mat-animation-noopable\", null], [2, \"ng-untouched\", null], [2, \"ng-touched\", null], [2, \"ng-pristine\", null], [2, \"ng-dirty\", null], [2, \"ng-valid\", null], [2, \"ng-invalid\", null], [2, \"ng-pending\", null]], null, null, i6.View_MatCheckbox_0, i6.RenderType_MatCheckbox)), i1.ɵdid(63, 4374528, null, 0, i7.MatCheckbox, [i1.ElementRef, i1.ChangeDetectorRef, i8.FocusMonitor, i1.NgZone, [8, null], [2, i7.MAT_CHECKBOX_CLICK_ACTION], [2, i9.ANIMATION_MODULE_TYPE]], { color: [0, \"color\"] }, null), i1.ɵprd(1024, null, i2.NG_VALUE_ACCESSOR, function (p0_0) { return [p0_0]; }, [i7.MatCheckbox]), i1.ɵdid(65, 540672, null, 0, i2.FormControlDirective, [[8, null], [8, null], [6, i2.NG_VALUE_ACCESSOR], [2, i2.ɵangular_packages_forms_forms_j]], { form: [0, \"form\"] }, null), i1.ɵprd(2048, null, i2.NgControl, null, [i2.FormControlDirective]), i1.ɵdid(67, 16384, null, 0, i2.NgControlStatus, [[4, i2.NgControl]], null, null), i1.ɵdid(68, 4341760, null, 0, i3.TranslateDirective, [i1.ElementRef, i4.Translations, i5.Settings], null, null), (_l()(), i1.ɵted(-1, 0, [\"Require password:\"])), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_LinkOptionsComponent_2)), i1.ɵdid(72, 16384, null, 0, i10.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(76, 0, null, null, 13, \"div\", [[\"class\", \"link-option\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(78, 0, null, null, 1, \"div\", [[\"class\", \"label\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"Allow editing\"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(81, 0, null, null, 7, \"mat-checkbox\", [[\"class\", \"mat-checkbox\"], [\"color\", \"primary\"], [\"formControlName\", \"allowEdit\"], [\"trans\", \"\"]], [[8, \"id\", 0], [2, \"mat-checkbox-indeterminate\", null], [2, \"mat-checkbox-checked\", null], [2, \"mat-checkbox-disabled\", null], [2, \"mat-checkbox-label-before\", null], [2, \"_mat-animation-noopable\", null], [2, \"ng-untouched\", null], [2, \"ng-touched\", null], [2, \"ng-pristine\", null], [2, \"ng-dirty\", null], [2, \"ng-valid\", null], [2, \"ng-invalid\", null], [2, \"ng-pending\", null]], null, null, i6.View_MatCheckbox_0, i6.RenderType_MatCheckbox)), i1.ɵdid(82, 4374528, null, 0, i7.MatCheckbox, [i1.ElementRef, i1.ChangeDetectorRef, i8.FocusMonitor, i1.NgZone, [8, null], [2, i7.MAT_CHECKBOX_CLICK_ACTION], [2, i9.ANIMATION_MODULE_TYPE]], { color: [0, \"color\"] }, null), i1.ɵprd(1024, null, i2.NG_VALUE_ACCESSOR, function (p0_0) { return [p0_0]; }, [i7.MatCheckbox]), i1.ɵdid(84, 671744, null, 0, i2.FormControlName, [[3, i2.ControlContainer], [8, null], [8, null], [6, i2.NG_VALUE_ACCESSOR], [2, i2.ɵangular_packages_forms_forms_j]], { name: [0, \"name\"] }, null), i1.ɵprd(2048, null, i2.NgControl, null, [i2.FormControlName]), i1.ɵdid(86, 16384, null, 0, i2.NgControlStatus, [[4, i2.NgControl]], null, null), i1.ɵdid(87, 4341760, null, 0, i3.TranslateDirective, [i1.ElementRef, i4.Translations, i5.Settings], null, null), (_l()(), i1.ɵted(-1, 0, [\"Users with link can modify this item.\"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(91, 0, null, null, 13, \"div\", [[\"class\", \"link-option\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(93, 0, null, null, 1, \"div\", [[\"class\", \"label\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"Allow download\"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(96, 0, null, null, 7, \"mat-checkbox\", [[\"class\", \"mat-checkbox\"], [\"color\", \"primary\"], [\"formControlName\", \"allowDownload\"], [\"trans\", \"\"]], [[8, \"id\", 0], [2, \"mat-checkbox-indeterminate\", null], [2, \"mat-checkbox-checked\", null], [2, \"mat-checkbox-disabled\", null], [2, \"mat-checkbox-label-before\", null], [2, \"_mat-animation-noopable\", null], [2, \"ng-untouched\", null], [2, \"ng-touched\", null], [2, \"ng-pristine\", null], [2, \"ng-dirty\", null], [2, \"ng-valid\", null], [2, \"ng-invalid\", null], [2, \"ng-pending\", null]], null, null, i6.View_MatCheckbox_0, i6.RenderType_MatCheckbox)), i1.ɵdid(97, 4374528, null, 0, i7.MatCheckbox, [i1.ElementRef, i1.ChangeDetectorRef, i8.FocusMonitor, i1.NgZone, [8, null], [2, i7.MAT_CHECKBOX_CLICK_ACTION], [2, i9.ANIMATION_MODULE_TYPE]], { color: [0, \"color\"] }, null), i1.ɵprd(1024, null, i2.NG_VALUE_ACCESSOR, function (p0_0) { return [p0_0]; }, [i7.MatCheckbox]), i1.ɵdid(99, 671744, null, 0, i2.FormControlName, [[3, i2.ControlContainer], [8, null], [8, null], [6, i2.NG_VALUE_ACCESSOR], [2, i2.ɵangular_packages_forms_forms_j]], { name: [0, \"name\"] }, null), i1.ɵprd(2048, null, i2.NgControl, null, [i2.FormControlName]), i1.ɵdid(101, 16384, null, 0, i2.NgControlStatus, [[4, i2.NgControl]], null, null), i1.ɵdid(102, 4341760, null, 0, i3.TranslateDirective, [i1.ElementRef, i4.Translations, i5.Settings], null, null), (_l()(), i1.ɵted(-1, 0, [\"Users with link can download this item.\"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n    \"])), (_l()(), i1.ɵeld(107, 0, null, null, 3, \"button\", [[\"mat-button\", \"\"], [\"trans\", \"\"], [\"type\", \"button\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.toggleOptionsPanel() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i11.View_MatButton_0, i11.RenderType_MatButton)), i1.ɵdid(108, 4341760, null, 0, i3.TranslateDirective, [i1.ElementRef, i4.Translations, i5.Settings], null, null), i1.ɵdid(109, 180224, null, 0, i12.MatButton, [i1.ElementRef, i13.Platform, i8.FocusMonitor, [2, i9.ANIMATION_MODULE_TYPE]], null, null), (_l()(), i1.ɵted(-1, 0, [\"Cancel\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n    \"])), (_l()(), i1.ɵeld(112, 0, null, null, 5, \"button\", [[\"class\", \"update-button\"], [\"color\", \"primary\"], [\"mat-raised-button\", \"\"], [\"trans\", \"\"], [\"type\", \"submit\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], null, null, i11.View_MatButton_0, i11.RenderType_MatButton)), i1.ɵdid(113, 4341760, null, 0, i3.TranslateDirective, [i1.ElementRef, i4.Translations, i5.Settings], null, null), i1.ɵdid(114, 180224, null, 0, i12.MatButton, [i1.ElementRef, i13.Platform, i8.FocusMonitor, [2, i9.ANIMATION_MODULE_TYPE]], { disabled: [0, \"disabled\"], color: [1, \"color\"] }, null), i1.ɵpid(131072, i10.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(116, 0, [\"\\n        \", \"\\n    \"])), i1.ɵpid(131072, i10.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; var currVal_7 = _co.form; _ck(_v, 2, 0, currVal_7); var currVal_21 = \"primary\"; _ck(_v, 16, 0, currVal_21); var currVal_22 = _co.expirationVisible; _ck(_v, 18, 0, currVal_22); var currVal_31 = \"expiresAt\"; _ck(_v, 25, 0, currVal_31); var currVal_40 = \"date\"; _ck(_v, 34, 0, currVal_40); var currVal_48 = \"time\"; _ck(_v, 43, 0, currVal_48); var tmp_49_0 = null; var currVal_49 = (((tmp_49_0 = i1.ɵunv(_v, 50, 0, i1.ɵnov(_v, 51).transform(_co.backendErrors$))) == null) ? null : tmp_49_0.expiresAt); _ck(_v, 50, 0, currVal_49); var currVal_63 = \"primary\"; _ck(_v, 63, 0, currVal_63); var currVal_64 = _co.passwordVisible; _ck(_v, 65, 0, currVal_64); var currVal_65 = _co.passwordVisible.value; _ck(_v, 72, 0, currVal_65); var currVal_79 = \"primary\"; _ck(_v, 82, 0, currVal_79); var currVal_80 = \"allowEdit\"; _ck(_v, 84, 0, currVal_80); var currVal_94 = \"primary\"; _ck(_v, 97, 0, currVal_94); var currVal_95 = \"allowDownload\"; _ck(_v, 99, 0, currVal_95); var currVal_100 = i1.ɵunv(_v, 114, 0, i1.ɵnov(_v, 115).transform(_co.loading$)); var currVal_101 = \"primary\"; _ck(_v, 114, 0, currVal_100, currVal_101); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵnov(_v, 4).ngClassUntouched; var currVal_1 = i1.ɵnov(_v, 4).ngClassTouched; var currVal_2 = i1.ɵnov(_v, 4).ngClassPristine; var currVal_3 = i1.ɵnov(_v, 4).ngClassDirty; var currVal_4 = i1.ɵnov(_v, 4).ngClassValid; var currVal_5 = i1.ɵnov(_v, 4).ngClassInvalid; var currVal_6 = i1.ɵnov(_v, 4).ngClassPending; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3, currVal_4, currVal_5, currVal_6); var currVal_8 = i1.ɵnov(_v, 16).id; var currVal_9 = i1.ɵnov(_v, 16).indeterminate; var currVal_10 = i1.ɵnov(_v, 16).checked; var currVal_11 = i1.ɵnov(_v, 16).disabled; var currVal_12 = (i1.ɵnov(_v, 16).labelPosition == \"before\"); var currVal_13 = (i1.ɵnov(_v, 16)._animationMode === \"NoopAnimations\"); var currVal_14 = i1.ɵnov(_v, 20).ngClassUntouched; var currVal_15 = i1.ɵnov(_v, 20).ngClassTouched; var currVal_16 = i1.ɵnov(_v, 20).ngClassPristine; var currVal_17 = i1.ɵnov(_v, 20).ngClassDirty; var currVal_18 = i1.ɵnov(_v, 20).ngClassValid; var currVal_19 = i1.ɵnov(_v, 20).ngClassInvalid; var currVal_20 = i1.ɵnov(_v, 20).ngClassPending; _ck(_v, 15, 1, [currVal_8, currVal_9, currVal_10, currVal_11, currVal_12, currVal_13, currVal_14, currVal_15, currVal_16, currVal_17, currVal_18, currVal_19, currVal_20]); var currVal_23 = !_co.expirationVisible.value; var currVal_24 = i1.ɵnov(_v, 27).ngClassUntouched; var currVal_25 = i1.ɵnov(_v, 27).ngClassTouched; var currVal_26 = i1.ɵnov(_v, 27).ngClassPristine; var currVal_27 = i1.ɵnov(_v, 27).ngClassDirty; var currVal_28 = i1.ɵnov(_v, 27).ngClassValid; var currVal_29 = i1.ɵnov(_v, 27).ngClassInvalid; var currVal_30 = i1.ɵnov(_v, 27).ngClassPending; _ck(_v, 24, 0, currVal_23, currVal_24, currVal_25, currVal_26, currVal_27, currVal_28, currVal_29, currVal_30); var currVal_32 = _co.getMinDate(); var currVal_33 = i1.ɵnov(_v, 36).ngClassUntouched; var currVal_34 = i1.ɵnov(_v, 36).ngClassTouched; var currVal_35 = i1.ɵnov(_v, 36).ngClassPristine; var currVal_36 = i1.ɵnov(_v, 36).ngClassDirty; var currVal_37 = i1.ɵnov(_v, 36).ngClassValid; var currVal_38 = i1.ɵnov(_v, 36).ngClassInvalid; var currVal_39 = i1.ɵnov(_v, 36).ngClassPending; _ck(_v, 31, 0, currVal_32, currVal_33, currVal_34, currVal_35, currVal_36, currVal_37, currVal_38, currVal_39); var currVal_41 = i1.ɵnov(_v, 45).ngClassUntouched; var currVal_42 = i1.ɵnov(_v, 45).ngClassTouched; var currVal_43 = i1.ɵnov(_v, 45).ngClassPristine; var currVal_44 = i1.ɵnov(_v, 45).ngClassDirty; var currVal_45 = i1.ɵnov(_v, 45).ngClassValid; var currVal_46 = i1.ɵnov(_v, 45).ngClassInvalid; var currVal_47 = i1.ɵnov(_v, 45).ngClassPending; _ck(_v, 40, 0, currVal_41, currVal_42, currVal_43, currVal_44, currVal_45, currVal_46, currVal_47); var currVal_50 = i1.ɵnov(_v, 63).id; var currVal_51 = i1.ɵnov(_v, 63).indeterminate; var currVal_52 = i1.ɵnov(_v, 63).checked; var currVal_53 = i1.ɵnov(_v, 63).disabled; var currVal_54 = (i1.ɵnov(_v, 63).labelPosition == \"before\"); var currVal_55 = (i1.ɵnov(_v, 63)._animationMode === \"NoopAnimations\"); var currVal_56 = i1.ɵnov(_v, 67).ngClassUntouched; var currVal_57 = i1.ɵnov(_v, 67).ngClassTouched; var currVal_58 = i1.ɵnov(_v, 67).ngClassPristine; var currVal_59 = i1.ɵnov(_v, 67).ngClassDirty; var currVal_60 = i1.ɵnov(_v, 67).ngClassValid; var currVal_61 = i1.ɵnov(_v, 67).ngClassInvalid; var currVal_62 = i1.ɵnov(_v, 67).ngClassPending; _ck(_v, 62, 1, [currVal_50, currVal_51, currVal_52, currVal_53, currVal_54, currVal_55, currVal_56, currVal_57, currVal_58, currVal_59, currVal_60, currVal_61, currVal_62]); var currVal_66 = i1.ɵnov(_v, 82).id; var currVal_67 = i1.ɵnov(_v, 82).indeterminate; var currVal_68 = i1.ɵnov(_v, 82).checked; var currVal_69 = i1.ɵnov(_v, 82).disabled; var currVal_70 = (i1.ɵnov(_v, 82).labelPosition == \"before\"); var currVal_71 = (i1.ɵnov(_v, 82)._animationMode === \"NoopAnimations\"); var currVal_72 = i1.ɵnov(_v, 86).ngClassUntouched; var currVal_73 = i1.ɵnov(_v, 86).ngClassTouched; var currVal_74 = i1.ɵnov(_v, 86).ngClassPristine; var currVal_75 = i1.ɵnov(_v, 86).ngClassDirty; var currVal_76 = i1.ɵnov(_v, 86).ngClassValid; var currVal_77 = i1.ɵnov(_v, 86).ngClassInvalid; var currVal_78 = i1.ɵnov(_v, 86).ngClassPending; _ck(_v, 81, 1, [currVal_66, currVal_67, currVal_68, currVal_69, currVal_70, currVal_71, currVal_72, currVal_73, currVal_74, currVal_75, currVal_76, currVal_77, currVal_78]); var currVal_81 = i1.ɵnov(_v, 97).id; var currVal_82 = i1.ɵnov(_v, 97).indeterminate; var currVal_83 = i1.ɵnov(_v, 97).checked; var currVal_84 = i1.ɵnov(_v, 97).disabled; var currVal_85 = (i1.ɵnov(_v, 97).labelPosition == \"before\"); var currVal_86 = (i1.ɵnov(_v, 97)._animationMode === \"NoopAnimations\"); var currVal_87 = i1.ɵnov(_v, 101).ngClassUntouched; var currVal_88 = i1.ɵnov(_v, 101).ngClassTouched; var currVal_89 = i1.ɵnov(_v, 101).ngClassPristine; var currVal_90 = i1.ɵnov(_v, 101).ngClassDirty; var currVal_91 = i1.ɵnov(_v, 101).ngClassValid; var currVal_92 = i1.ɵnov(_v, 101).ngClassInvalid; var currVal_93 = i1.ɵnov(_v, 101).ngClassPending; _ck(_v, 96, 1, [currVal_81, currVal_82, currVal_83, currVal_84, currVal_85, currVal_86, currVal_87, currVal_88, currVal_89, currVal_90, currVal_91, currVal_92, currVal_93]); var currVal_96 = (i1.ɵnov(_v, 109).disabled || null); var currVal_97 = (i1.ɵnov(_v, 109)._animationMode === \"NoopAnimations\"); _ck(_v, 107, 0, currVal_96, currVal_97); var currVal_98 = (i1.ɵnov(_v, 114).disabled || null); var currVal_99 = (i1.ɵnov(_v, 114)._animationMode === \"NoopAnimations\"); _ck(_v, 112, 0, currVal_98, currVal_99); var currVal_102 = (i1.ɵunv(_v, 116, 0, i1.ɵnov(_v, 117).transform(_co.link$)) ? \"Update Link\" : \"Create Link\"); _ck(_v, 116, 0, currVal_102); }); }\nexport function View_LinkOptionsComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"link-options\", [], null, null, null, View_LinkOptionsComponent_0, RenderType_LinkOptionsComponent)), i1.ɵdid(1, 114688, null, 0, i14.LinkOptionsComponent, [i15.Store], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nvar LinkOptionsComponentNgFactory = i1.ɵccf(\"link-options\", i14.LinkOptionsComponent, View_LinkOptionsComponent_Host_0, {}, {}, []);\nexport { LinkOptionsComponentNgFactory as LinkOptionsComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"link-options{display:block;padding:15px;border:1px solid #e0e0e0;border-radius:4px}link-options .link-option{padding-bottom:25px;margin-bottom:25px;border-bottom:1px solid #e0e0e0}link-options .link-option .label{font-weight:500;margin-bottom:8px}link-options .link-option .expiration-input-container,link-options .link-option .password-input-container{margin-top:15px}link-options .link-option .content>.error{margin-top:10px}link-options .expiration-input-container{display:flex}link-options .expiration-input-container .date-input-container{flex:1 1 auto;margin-right:10px;position:relative}link-options .expiration-input-container .time-input{max-width:150px;margin-right:20px}link-options .update-button{margin-top:15px}\"];\nexport { styles as styles };\n","<form class=\"update-link-panel\" [formGroup]=\"form\" (ngSubmit)=\"saveChanges()\">\n    <div class=\"link-options\">\n        <div class=\"link-option\">\n            <div class=\"label\">Link expiration</div>\n            <div class=\"content\">\n                <mat-checkbox color=\"primary\" [formControl]=\"expirationVisible\" trans>Link is valid until:</mat-checkbox>\n                <div class=\"input-container expiration-input-container\" formGroupName=\"expiresAt\"  [class.hidden]=\"!expirationVisible.value\">\n                    <div class=\"date-input-container\">\n                        <input type=\"date\" formControlName=\"date\" class=\"date-input\" placeholder=\"Expiration date...\" trans-placeholder [min]=\"getMinDate()\">\n                    </div>\n                    <input type=\"time\" class=\"time-input\" formControlName=\"time\" placeholder=\"Expiration time...\" trans-placeholder>\n                </div>\n                <div class=\"error\" *ngIf=\"(backendErrors$ | async)?.expiresAt as error\">{{error}}</div>\n            </div>\n        </div>\n        <div class=\"link-option\">\n            <div class=\"label\">Password Protect</div>\n            <div class=\"content\">\n                <mat-checkbox color=\"primary\" [formControl]=\"passwordVisible\" trans>Require password:</mat-checkbox>\n                <ng-container *ngIf=\"passwordVisible.value\">\n                    <div class=\"input-container password-input-container\">\n                        <input type=\"password\" formControlName=\"password\" placeholder=\"Enter new password...\" trans-placeholder>\n                    </div>\n                </ng-container>\n            </div>\n        </div>\n        <div class=\"link-option\">\n            <div class=\"label\">Allow editing</div>\n            <mat-checkbox color=\"primary\" formControlName=\"allowEdit\" trans>Users with link can modify this item.</mat-checkbox>\n        </div>\n        <div class=\"link-option\">\n            <div class=\"label\">Allow download</div>\n            <mat-checkbox color=\"primary\" formControlName=\"allowDownload\" trans>Users with link can download this item.</mat-checkbox>\n        </div>\n    </div>\n\n    <button type=\"button\" (click)=\"toggleOptionsPanel()\" mat-button trans>Cancel</button>\n\n    <button type=\"submit\" class=\"update-button\" mat-raised-button color=\"primary\" [disabled]=\"loading$ | async\" trans>\n        {{ (link$ | async) ? 'Update Link' : 'Create Link' }}\n    </button>\n</form>","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./share-link-dialog.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../../../common/core/translations/translate.directive\";\nimport * as i3 from \"../../../../common/core/translations/translations.service\";\nimport * as i4 from \"../../../../common/core/config/settings.service\";\nimport * as i5 from \"../../../../../node_modules/@angular/material/button/typings/index.ngfactory\";\nimport * as i6 from \"@angular/material/button\";\nimport * as i7 from \"@angular/cdk/platform\";\nimport * as i8 from \"@angular/cdk/a11y\";\nimport * as i9 from \"@angular/platform-browser/animations\";\nimport * as i10 from \"../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i11 from \"@angular/material/icon\";\nimport * as i12 from \"@angular/common\";\nimport * as i13 from \"@angular/material/dialog\";\nimport * as i14 from \"../links/link-options/link-options.component.ngfactory\";\nimport * as i15 from \"../links/link-options/link-options.component\";\nimport * as i16 from \"@ngxs/store\";\nimport * as i17 from \"../../../../common/core/ui/loading-indicator/loading-indicator.component.ngfactory\";\nimport * as i18 from \"../../../../common/core/ui/loading-indicator/loading-indicator.component\";\nimport * as i19 from \"./share-link-dialog.component\";\nimport * as i20 from \"../../../../common/core/ui/toast.service\";\nvar styles_ShareLinkDialogComponent = [i0.styles];\nvar RenderType_ShareLinkDialogComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_ShareLinkDialogComponent, data: { \"animation\": [{ type: 7, name: \"visibility\", definitions: [{ type: 0, name: \"true\", styles: { type: 6, styles: { height: \"*\", padding: \"*\", display: \"block\", overflow: \"*\" }, offset: null }, options: undefined }, { type: 0, name: \"false\", styles: { type: 6, styles: { height: \"0\", padding: \"0\", display: \"none\", overflow: \"hidden\" }, offset: null }, options: undefined }, { type: 1, expr: \"true <=> false\", animation: { type: 4, styles: null, timings: \"225ms cubic-bezier(.4,0,.2,1)\" }, options: null }], options: {} }] } });\nexport { RenderType_ShareLinkDialogComponent as RenderType_ShareLinkDialogComponent };\nfunction View_ShareLinkDialogComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 72, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(2, 0, null, null, 31, \"div\", [[\"class\", \"title\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(4, 0, null, null, 11, \"div\", [[\"class\", \"left\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(6, 0, null, null, 1, \"span\", [], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"Link sharing is\"])), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(9, 0, null, null, 5, \"span\", [[\"class\", \"state on\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(11, 0, null, null, 2, \"button\", [[\"class\", \"on-text text no-style\"], [\"trans\", \"\"]], null, [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.deleteLink() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, null, null)), i1.ɵdid(12, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"on\"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(17, 0, null, null, 15, \"div\", [[\"class\", \"right\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(19, 0, null, null, 5, \"button\", [[\"mat-icon-button\", \"\"], [\"type\", \"button\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.deleteLink() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i5.View_MatButton_0, i5.RenderType_MatButton)), i1.ɵdid(20, 180224, null, 0, i6.MatButton, [i1.ElementRef, i7.Platform, i8.FocusMonitor, [2, i9.ANIMATION_MODULE_TYPE]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n                    \"])), (_l()(), i1.ɵeld(22, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"delete\"]], [[2, \"mat-icon-inline\", null]], null, null, i10.View_MatIcon_0, i10.RenderType_MatIcon)), i1.ɵdid(23, 638976, null, 0, i11.MatIcon, [i1.ElementRef, i11.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n                \"])), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(26, 0, null, null, 5, \"button\", [[\"mat-icon-button\", \"\"], [\"type\", \"button\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.toggleOptionsPanel() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i5.View_MatButton_0, i5.RenderType_MatButton)), i1.ɵdid(27, 180224, null, 0, i6.MatButton, [i1.ElementRef, i7.Platform, i8.FocusMonitor, [2, i9.ANIMATION_MODULE_TYPE]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n                    \"])), (_l()(), i1.ɵeld(29, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"settings\"]], [[2, \"mat-icon-inline\", null]], null, null, i10.View_MatIcon_0, i10.RenderType_MatIcon)), i1.ɵdid(30, 638976, null, 0, i11.MatIcon, [i1.ElementRef, i11.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n                \"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n        \"])), (_l()(), i1.ɵeld(35, 0, null, null, 36, \"div\", [[\"class\", \"link-container\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(37, 0, null, null, 9, \"div\", [[\"class\", \"link-input-container input-container\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(39, 0, null, null, 1, \"input\", [[\"id\", \"link-input\"], [\"readonly\", \"\"], [\"tabindex\", \"1\"], [\"type\", \"text\"]], [[8, \"value\", 0]], [[null, \"click\"], [null, \"change\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.focusInput() !== false);\n        ad = (pd_0 && ad);\n    } if ((\"change\" === en)) {\n        var pd_1 = (_co.focusInput() !== false);\n        ad = (pd_1 && ad);\n    } return ad; }, null, null)), i1.ɵpid(131072, i12.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(42, 0, null, null, 3, \"button\", [[\"color\", \"primary\"], [\"mat-flat-button\", \"\"], [\"trans\", \"\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.copyLinkToClipboard() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i5.View_MatButton_0, i5.RenderType_MatButton)), i1.ɵdid(43, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), i1.ɵdid(44, 180224, null, 0, i6.MatButton, [i1.ElementRef, i7.Platform, i8.FocusMonitor, [2, i9.ANIMATION_MODULE_TYPE]], { color: [0, \"color\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"Copy\"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(48, 0, null, null, 22, \"div\", [[\"class\", \"social-icons\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(50, 0, null, null, 5, \"button\", [[\"class\", \"social-icon no-style facebook\"], [\"mat-icon-button\", \"\"], [\"type\", \"button\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.shareLink(\"facebook\") !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i5.View_MatButton_0, i5.RenderType_MatButton)), i1.ɵdid(51, 180224, null, 0, i6.MatButton, [i1.ElementRef, i7.Platform, i8.FocusMonitor, [2, i9.ANIMATION_MODULE_TYPE]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n                    \"])), (_l()(), i1.ɵeld(53, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"facebook-custom\"]], [[2, \"mat-icon-inline\", null]], null, null, i10.View_MatIcon_0, i10.RenderType_MatIcon)), i1.ɵdid(54, 638976, null, 0, i11.MatIcon, [i1.ElementRef, i11.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n                \"])), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(57, 0, null, null, 5, \"button\", [[\"class\", \"social-icon no-style google\"], [\"mat-icon-button\", \"\"], [\"type\", \"button\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.shareLink(\"google-plus\") !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i5.View_MatButton_0, i5.RenderType_MatButton)), i1.ɵdid(58, 180224, null, 0, i6.MatButton, [i1.ElementRef, i7.Platform, i8.FocusMonitor, [2, i9.ANIMATION_MODULE_TYPE]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n                    \"])), (_l()(), i1.ɵeld(60, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"google-custom\"]], [[2, \"mat-icon-inline\", null]], null, null, i10.View_MatIcon_0, i10.RenderType_MatIcon)), i1.ɵdid(61, 638976, null, 0, i11.MatIcon, [i1.ElementRef, i11.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n                \"])), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(64, 0, null, null, 5, \"button\", [[\"class\", \"social-icon no-style twitter\"], [\"mat-icon-button\", \"\"], [\"type\", \"button\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.shareLink(\"twitter\") !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i5.View_MatButton_0, i5.RenderType_MatButton)), i1.ɵdid(65, 180224, null, 0, i6.MatButton, [i1.ElementRef, i7.Platform, i8.FocusMonitor, [2, i9.ANIMATION_MODULE_TYPE]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n                    \"])), (_l()(), i1.ɵeld(67, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"twitter-custom\"]], [[2, \"mat-icon-inline\", null]], null, null, i10.View_MatIcon_0, i10.RenderType_MatIcon)), i1.ɵdid(68, 638976, null, 0, i11.MatIcon, [i1.ElementRef, i11.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n                \"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"]))], function (_ck, _v) { var currVal_3 = \"delete\"; _ck(_v, 23, 0, currVal_3); var currVal_7 = \"settings\"; _ck(_v, 30, 0, currVal_7); var currVal_11 = \"primary\"; _ck(_v, 44, 0, currVal_11); var currVal_15 = \"facebook-custom\"; _ck(_v, 54, 0, currVal_15); var currVal_19 = \"google-custom\"; _ck(_v, 61, 0, currVal_19); var currVal_23 = \"twitter-custom\"; _ck(_v, 68, 0, currVal_23); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = (i1.ɵnov(_v, 20).disabled || null); var currVal_1 = (i1.ɵnov(_v, 20)._animationMode === \"NoopAnimations\"); _ck(_v, 19, 0, currVal_0, currVal_1); var currVal_2 = i1.ɵnov(_v, 23).inline; _ck(_v, 22, 0, currVal_2); var currVal_4 = (i1.ɵnov(_v, 27).disabled || null); var currVal_5 = (i1.ɵnov(_v, 27)._animationMode === \"NoopAnimations\"); _ck(_v, 26, 0, currVal_4, currVal_5); var currVal_6 = i1.ɵnov(_v, 30).inline; _ck(_v, 29, 0, currVal_6); var currVal_8 = i1.ɵunv(_v, 39, 0, i1.ɵnov(_v, 40).transform(_co.shareableLink$)); _ck(_v, 39, 0, currVal_8); var currVal_9 = (i1.ɵnov(_v, 44).disabled || null); var currVal_10 = (i1.ɵnov(_v, 44)._animationMode === \"NoopAnimations\"); _ck(_v, 42, 0, currVal_9, currVal_10); var currVal_12 = (i1.ɵnov(_v, 51).disabled || null); var currVal_13 = (i1.ɵnov(_v, 51)._animationMode === \"NoopAnimations\"); _ck(_v, 50, 0, currVal_12, currVal_13); var currVal_14 = i1.ɵnov(_v, 54).inline; _ck(_v, 53, 0, currVal_14); var currVal_16 = (i1.ɵnov(_v, 58).disabled || null); var currVal_17 = (i1.ɵnov(_v, 58)._animationMode === \"NoopAnimations\"); _ck(_v, 57, 0, currVal_16, currVal_17); var currVal_18 = i1.ɵnov(_v, 61).inline; _ck(_v, 60, 0, currVal_18); var currVal_20 = (i1.ɵnov(_v, 65).disabled || null); var currVal_21 = (i1.ɵnov(_v, 65)._animationMode === \"NoopAnimations\"); _ck(_v, 64, 0, currVal_20, currVal_21); var currVal_22 = i1.ɵnov(_v, 68).inline; _ck(_v, 67, 0, currVal_22); }); }\nexport function View_ShareLinkDialogComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 0, null, null, 13, \"div\", [[\"class\", \"modal-header\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(2, 0, null, null, 3, \"h2\", [[\"class\", \"mat-dialog-title\"], [\"mat-dialog-title\", \"\"], [\"trans\", \"\"]], [[8, \"id\", 0]], null, null, null, null)), i1.ɵdid(3, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), i1.ɵdid(4, 81920, null, 0, i13.MatDialogTitle, [[2, i13.MatDialogRef], i1.ElementRef, i13.MatDialog], null, null), (_l()(), i1.ɵted(-1, null, [\"Shareable link\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(7, 0, null, null, 5, \"button\", [[\"class\", \"close-button\"], [\"mat-icon-button\", \"\"], [\"tabindex\", \"-1\"], [\"type\", \"button\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.close() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i5.View_MatButton_0, i5.RenderType_MatButton)), i1.ɵdid(8, 180224, null, 0, i6.MatButton, [i1.ElementRef, i7.Platform, i8.FocusMonitor, [2, i9.ANIMATION_MODULE_TYPE]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(10, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"close\"]], [[2, \"mat-icon-inline\", null]], null, null, i10.View_MatIcon_0, i10.RenderType_MatIcon)), i1.ɵdid(11, 638976, null, 0, i11.MatIcon, [i1.ElementRef, i11.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵeld(15, 0, null, null, 14, \"mat-dialog-content\", [[\"class\", \"mat-dialog-content\"]], null, null, null, null, null)), i1.ɵdid(16, 16384, null, 0, i13.MatDialogContent, [], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(16777216, null, null, 2, null, View_ShareLinkDialogComponent_1)), i1.ɵdid(19, 16384, null, 0, i12.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), i1.ɵpid(131072, i12.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n\\n    \"])), (_l()(), i1.ɵeld(22, 0, null, null, 2, \"link-options\", [], [[24, \"@visibility\", 0]], null, null, i14.View_LinkOptionsComponent_0, i14.RenderType_LinkOptionsComponent)), i1.ɵdid(23, 114688, null, 0, i15.LinkOptionsComponent, [i16.Store], null, null), i1.ɵpid(131072, i12.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(26, 0, null, null, 2, \"loading-indicator\", [[\"class\", \"overlay overlay-transparent\"]], [[40, \"@visibility\", 0]], null, null, i17.View_LoadingIndicatorComponent_0, i17.RenderType_LoadingIndicatorComponent)), i1.ɵdid(27, 49152, null, 0, i18.LoadingIndicatorComponent, [], { isVisible: [0, \"isVisible\"] }, null), i1.ɵpid(131072, i12.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵeld(31, 0, null, null, 8, \"mat-dialog-actions\", [[\"class\", \"mat-dialog-actions\"]], null, null, null, null, null)), i1.ɵdid(32, 16384, null, 0, i13.MatDialogActions, [], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(34, 0, null, null, 4, \"button\", [[\"class\", \"submit-button\"], [\"mat-button\", \"\"], [\"trans\", \"\"], [\"type\", \"button\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.close() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i5.View_MatButton_0, i5.RenderType_MatButton)), i1.ɵdid(35, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), i1.ɵdid(36, 180224, null, 0, i6.MatButton, [i1.ElementRef, i7.Platform, i8.FocusMonitor, [2, i9.ANIMATION_MODULE_TYPE]], { disabled: [0, \"disabled\"] }, null), i1.ɵpid(131072, i12.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, 0, [\"Close\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; _ck(_v, 4, 0); var currVal_4 = \"close\"; _ck(_v, 11, 0, currVal_4); var currVal_5 = i1.ɵunv(_v, 19, 0, i1.ɵnov(_v, 20).transform(_co.link$)); _ck(_v, 19, 0, currVal_5); _ck(_v, 23, 0); var currVal_8 = i1.ɵunv(_v, 27, 0, i1.ɵnov(_v, 28).transform(_co.loading$)); _ck(_v, 27, 0, currVal_8); var currVal_11 = i1.ɵunv(_v, 36, 0, i1.ɵnov(_v, 37).transform(_co.loading$)); _ck(_v, 36, 0, currVal_11); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵnov(_v, 4).id; _ck(_v, 2, 0, currVal_0); var currVal_1 = (i1.ɵnov(_v, 8).disabled || null); var currVal_2 = (i1.ɵnov(_v, 8)._animationMode === \"NoopAnimations\"); _ck(_v, 7, 0, currVal_1, currVal_2); var currVal_3 = i1.ɵnov(_v, 11).inline; _ck(_v, 10, 0, currVal_3); var currVal_6 = i1.ɵunv(_v, 22, 0, i1.ɵnov(_v, 24).transform(_co.optionsVisible$)); _ck(_v, 22, 0, currVal_6); var currVal_7 = i1.ɵnov(_v, 27).isVisible; _ck(_v, 26, 0, currVal_7); var currVal_9 = (i1.ɵnov(_v, 36).disabled || null); var currVal_10 = (i1.ɵnov(_v, 36)._animationMode === \"NoopAnimations\"); _ck(_v, 34, 0, currVal_9, currVal_10); }); }\nexport function View_ShareLinkDialogComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"share-link-dialog\", [], null, null, null, View_ShareLinkDialogComponent_0, RenderType_ShareLinkDialogComponent)), i1.ɵdid(1, 4440064, null, 0, i19.ShareLinkDialogComponent, [i16.Store, i20.Toast, i16.Actions, i4.Settings, i13.MatDialogRef], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nvar ShareLinkDialogComponentNgFactory = i1.ɵccf(\"share-link-dialog\", i19.ShareLinkDialogComponent, View_ShareLinkDialogComponent_Host_0, {}, {}, []);\nexport { ShareLinkDialogComponentNgFactory as ShareLinkDialogComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"share-link-dialog{display:block;min-height:273px}share-link-dialog .title{display:flex;align-items:center;margin-bottom:5px}share-link-dialog .title .right{margin-left:auto;color:rgba(0,0,0,.5)}share-link-dialog .link-input-container{display:flex;margin-bottom:10px}share-link-dialog .link-input-container input{flex:1 1 auto;border-top-right-radius:0;border-bottom-right-radius:0}share-link-dialog .link-input-container button{width:88px;flex:0 0 88px}share-link-dialog .mat-dialog-content{min-height:144px}share-link-dialog .social-icons{margin-bottom:10px}\"];\nexport { styles as styles };\n","<div class=\"modal-header\">\n    <h2 mat-dialog-title trans>Shareable link</h2>\n    <button type=\"button\" mat-icon-button (click)=\"close()\" class=\"close-button\" tabindex=\"-1\">\n        <mat-icon svgIcon=\"close\"></mat-icon>\n    </button>\n</div>\n\n<mat-dialog-content>\n    <ng-container *ngIf=\"link$ | async\">\n        <div class=\"title\">\n            <div class=\"left\">\n                <span>Link sharing is</span>\n                <span class=\"state on\">\n                <button class=\"on-text text no-style\" (click)=\"deleteLink()\" trans>on</button>\n            </span>\n            </div>\n            <div class=\"right\">\n                <button type=\"button\" mat-icon-button (click)=\"deleteLink()\">\n                    <mat-icon svgIcon=\"delete\"></mat-icon>\n                </button>\n                <button type=\"button\" mat-icon-button (click)=\"toggleOptionsPanel()\">\n                    <mat-icon svgIcon=\"settings\"></mat-icon>\n                </button>\n            </div>\n        </div>\n\n        <div class=\"link-container\">\n            <div class=\"link-input-container input-container\">\n                <input type=\"text\" id=\"link-input\" readonly (click)=\"focusInput()\" (change)=\"focusInput()\" [value]=\"shareableLink$ | async\" tabindex=\"1\">\n                <button mat-flat-button color=\"primary\" (click)=\"copyLinkToClipboard()\" trans>Copy</button>\n            </div>\n            <div class=\"social-icons\">\n                <button type=\"button\" mat-icon-button class=\"social-icon no-style facebook\" (click)=\"shareLink('facebook')\">\n                    <mat-icon svgIcon=\"facebook-custom\"></mat-icon>\n                </button>\n                <button type=\"button\" mat-icon-button class=\"social-icon no-style google\" (click)=\"shareLink('google-plus')\">\n                    <mat-icon svgIcon=\"google-custom\"></mat-icon>\n                </button>\n                <button type=\"button\" mat-icon-button class=\"social-icon no-style twitter\" (click)=\"shareLink('twitter')\">\n                    <mat-icon svgIcon=\"twitter-custom\"></mat-icon>\n                </button>\n            </div>\n        </div>\n    </ng-container>\n\n    <link-options [@visibility]=\"optionsVisible$ | async\"></link-options>\n    <loading-indicator [isVisible]=\"loading$ | async\" class=\"overlay overlay-transparent\"></loading-indicator>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n    <button type=\"button\" mat-button class=\"submit-button\" (click)=\"close()\" [disabled]=\"loading$ | async\" trans>Close</button>\n</mat-dialog-actions>","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../context-actions-container/context-actions-container.component.ngfactory\";\nimport * as i2 from \"../context-actions-container/context-actions-container.component\";\nimport * as i3 from \"@ngxs/store\";\nimport * as i4 from \"../../../../../common/core/ui/context-menu/context-menu.service\";\nimport * as i5 from \"./drive-context-menu.component\";\nimport * as i6 from \"../../../../../common/core/ui/context-menu/context-menu-data\";\nimport * as i7 from \"../../../../../common/auth/current-user\";\nvar styles_DriveContextMenuComponent = [];\nvar RenderType_DriveContextMenuComponent = i0.ɵcrt({ encapsulation: 2, styles: styles_DriveContextMenuComponent, data: {} });\nexport { RenderType_DriveContextMenuComponent as RenderType_DriveContextMenuComponent };\nexport function View_DriveContextMenuComponent_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"context-actions-container\", [], [[2, \"compact\", null]], null, null, i1.View_ContextActionsContainerComponent_0, i1.RenderType_ContextActionsContainerComponent)), i0.ɵdid(1, 180224, null, 0, i2.ContextActionsContainerComponent, [i3.Store, i0.Injector, i4.ContextMenu], null, null)], null, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1).compact; _ck(_v, 0, 0, currVal_0); }); }\nexport function View_DriveContextMenuComponent_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"drive-context-menu\", [], [[2, \"context-menu\", null]], null, null, View_DriveContextMenuComponent_0, RenderType_DriveContextMenuComponent)), i0.ɵdid(1, 49152, null, 0, i5.DriveContextMenuComponent, [[2, i6.CONTEXT_MENU_DATA], i3.Store, i7.CurrentUser], null, null)], null, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1).contextMenu; _ck(_v, 0, 0, currVal_0); }); }\nvar DriveContextMenuComponentNgFactory = i0.ɵccf(\"drive-context-menu\", i5.DriveContextMenuComponent, View_DriveContextMenuComponent_Host_0, {}, {}, []);\nexport { DriveContextMenuComponentNgFactory as DriveContextMenuComponentNgFactory };\n","<context-actions-container></context-actions-container>","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./crupdate-folder-dialog.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../../../../common/core/translations/translate.directive\";\nimport * as i3 from \"../../../../../common/core/translations/translations.service\";\nimport * as i4 from \"../../../../../common/core/config/settings.service\";\nimport * as i5 from \"@angular/material/dialog\";\nimport * as i6 from \"../../../../../../node_modules/@angular/material/button/typings/index.ngfactory\";\nimport * as i7 from \"@angular/material/button\";\nimport * as i8 from \"@angular/cdk/platform\";\nimport * as i9 from \"@angular/cdk/a11y\";\nimport * as i10 from \"@angular/platform-browser/animations\";\nimport * as i11 from \"../../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i12 from \"@angular/material/icon\";\nimport * as i13 from \"@angular/forms\";\nimport * as i14 from \"@angular/common\";\nimport * as i15 from \"./crupdate-folder-dialog.component\";\nimport * as i16 from \"@ngxs/store\";\nimport * as i17 from \"../../api/folders-api.service\";\nvar styles_CrupdateFolderDialogComponent = [i0.styles];\nvar RenderType_CrupdateFolderDialogComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_CrupdateFolderDialogComponent, data: {} });\nexport { RenderType_CrupdateFolderDialogComponent as RenderType_CrupdateFolderDialogComponent };\nfunction View_CrupdateFolderDialogComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"div\", [[\"class\", \"error\"]], null, null, null, null, null)), (_l()(), i1.ɵted(1, null, [\"\", \"\"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.errors.name; _ck(_v, 1, 0, currVal_0); }); }\nexport function View_CrupdateFolderDialogComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 0, null, null, 13, \"div\", [[\"class\", \"modal-header\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(2, 0, null, null, 3, \"h2\", [[\"class\", \"mat-dialog-title\"], [\"mat-dialog-title\", \"\"], [\"trans\", \"\"]], [[8, \"id\", 0]], null, null, null, null)), i1.ɵdid(3, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), i1.ɵdid(4, 81920, null, 0, i5.MatDialogTitle, [[2, i5.MatDialogRef], i1.ElementRef, i5.MatDialog], null, null), (_l()(), i1.ɵted(-1, null, [\"New Folder\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(7, 0, null, null, 5, \"button\", [[\"class\", \"close-button\"], [\"mat-icon-button\", \"\"], [\"tabindex\", \"-1\"], [\"type\", \"button\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.close() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i6.View_MatButton_0, i6.RenderType_MatButton)), i1.ɵdid(8, 180224, null, 0, i7.MatButton, [i1.ElementRef, i8.Platform, i9.FocusMonitor, [2, i10.ANIMATION_MODULE_TYPE]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(10, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"close\"]], [[2, \"mat-icon-inline\", null]], null, null, i11.View_MatIcon_0, i11.RenderType_MatIcon)), i1.ɵdid(11, 638976, null, 0, i12.MatIcon, [i1.ElementRef, i12.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵeld(15, 0, null, null, 39, \"form\", [[\"ngNativeValidate\", \"\"]], [[2, \"ng-untouched\", null], [2, \"ng-touched\", null], [2, \"ng-pristine\", null], [2, \"ng-dirty\", null], [2, \"ng-valid\", null], [2, \"ng-invalid\", null], [2, \"ng-pending\", null]], [[null, \"ngSubmit\"], [null, \"submit\"], [null, \"reset\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"submit\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 16).onSubmit($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"reset\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 16).onReset() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"ngSubmit\" === en)) {\n        var pd_2 = (_co.confirm() !== false);\n        ad = (pd_2 && ad);\n    } return ad; }, null, null)), i1.ɵdid(16, 4210688, null, 0, i13.NgForm, [[8, null], [8, null]], null, { ngSubmit: \"ngSubmit\" }), i1.ɵprd(2048, null, i13.ControlContainer, null, [i13.NgForm]), i1.ɵdid(18, 16384, null, 0, i13.NgControlStatusGroup, [[4, i13.ControlContainer]], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(20, 0, null, null, 18, \"mat-dialog-content\", [[\"class\", \"many-inputs mat-dialog-content\"]], null, null, null, null, null)), i1.ɵdid(21, 16384, null, 0, i5.MatDialogContent, [], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(23, 0, null, null, 14, \"div\", [[\"class\", \"input-container\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(25, 0, null, null, 8, \"input\", [[\"min\", \"3\"], [\"placeholder\", \"Folder name...\"], [\"required\", \"\"], [\"trans-placeholder\", \"\"], [\"type\", \"text\"]], [[1, \"required\", 0], [2, \"ng-untouched\", null], [2, \"ng-touched\", null], [2, \"ng-pristine\", null], [2, \"ng-dirty\", null], [2, \"ng-valid\", null], [2, \"ng-invalid\", null], [2, \"ng-pending\", null]], [[null, \"input\"], [null, \"blur\"], [null, \"compositionstart\"], [null, \"compositionend\"]], function (_v, en, $event) { var ad = true; if ((\"input\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 26)._handleInput($event.target.value) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"blur\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 26).onTouched() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"compositionstart\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 26)._compositionStart() !== false);\n        ad = (pd_2 && ad);\n    } if ((\"compositionend\" === en)) {\n        var pd_3 = (i1.ɵnov(_v, 26)._compositionEnd($event.target.value) !== false);\n        ad = (pd_3 && ad);\n    } return ad; }, null, null)), i1.ɵdid(26, 16384, null, 0, i13.DefaultValueAccessor, [i1.Renderer2, i1.ElementRef, [2, i13.COMPOSITION_BUFFER_MODE]], null, null), i1.ɵdid(27, 16384, null, 0, i13.RequiredValidator, [], { required: [0, \"required\"] }, null), i1.ɵprd(1024, null, i13.NG_VALIDATORS, function (p0_0) { return [p0_0]; }, [i13.RequiredValidator]), i1.ɵprd(1024, null, i13.NG_VALUE_ACCESSOR, function (p0_0) { return [p0_0]; }, [i13.DefaultValueAccessor]), i1.ɵdid(30, 540672, null, 0, i13.FormControlDirective, [[6, i13.NG_VALIDATORS], [8, null], [6, i13.NG_VALUE_ACCESSOR], [2, i13.ɵangular_packages_forms_forms_j]], { form: [0, \"form\"] }, null), i1.ɵprd(2048, null, i13.NgControl, null, [i13.FormControlDirective]), i1.ɵdid(32, 16384, null, 0, i13.NgControlStatus, [[4, i13.NgControl]], null, null), i1.ɵdid(33, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_CrupdateFolderDialogComponent_1)), i1.ɵdid(36, 16384, null, 0, i14.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n    \"])), (_l()(), i1.ɵeld(40, 0, null, null, 13, \"mat-dialog-actions\", [[\"class\", \"mat-dialog-actions\"]], null, null, null, null, null)), i1.ɵdid(41, 16384, null, 0, i5.MatDialogActions, [], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(43, 0, null, null, 3, \"button\", [[\"class\", \"cancel-button\"], [\"mat-button\", \"\"], [\"trans\", \"\"], [\"type\", \"button\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.close() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i6.View_MatButton_0, i6.RenderType_MatButton)), i1.ɵdid(44, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), i1.ɵdid(45, 180224, null, 0, i7.MatButton, [i1.ElementRef, i8.Platform, i9.FocusMonitor, [2, i10.ANIMATION_MODULE_TYPE]], null, null), (_l()(), i1.ɵted(-1, 0, [\"Cancel\"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(48, 0, null, null, 4, \"button\", [[\"class\", \"submit-button\"], [\"color\", \"primary\"], [\"mat-raised-button\", \"\"], [\"trans\", \"\"], [\"type\", \"submit\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], null, null, i6.View_MatButton_0, i6.RenderType_MatButton)), i1.ɵdid(49, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), i1.ɵdid(50, 180224, null, 0, i7.MatButton, [i1.ElementRef, i8.Platform, i9.FocusMonitor, [2, i10.ANIMATION_MODULE_TYPE]], { disabled: [0, \"disabled\"], color: [1, \"color\"] }, null), i1.ɵpid(131072, i14.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, 0, [\"Create\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; _ck(_v, 4, 0); var currVal_4 = \"close\"; _ck(_v, 11, 0, currVal_4); var currVal_20 = \"\"; _ck(_v, 27, 0, currVal_20); var currVal_21 = _co.folderName; _ck(_v, 30, 0, currVal_21); var currVal_22 = _co.errors.name; _ck(_v, 36, 0, currVal_22); var currVal_27 = i1.ɵunv(_v, 50, 0, i1.ɵnov(_v, 51).transform(_co.loading)); var currVal_28 = \"primary\"; _ck(_v, 50, 0, currVal_27, currVal_28); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 4).id; _ck(_v, 2, 0, currVal_0); var currVal_1 = (i1.ɵnov(_v, 8).disabled || null); var currVal_2 = (i1.ɵnov(_v, 8)._animationMode === \"NoopAnimations\"); _ck(_v, 7, 0, currVal_1, currVal_2); var currVal_3 = i1.ɵnov(_v, 11).inline; _ck(_v, 10, 0, currVal_3); var currVal_5 = i1.ɵnov(_v, 18).ngClassUntouched; var currVal_6 = i1.ɵnov(_v, 18).ngClassTouched; var currVal_7 = i1.ɵnov(_v, 18).ngClassPristine; var currVal_8 = i1.ɵnov(_v, 18).ngClassDirty; var currVal_9 = i1.ɵnov(_v, 18).ngClassValid; var currVal_10 = i1.ɵnov(_v, 18).ngClassInvalid; var currVal_11 = i1.ɵnov(_v, 18).ngClassPending; _ck(_v, 15, 0, currVal_5, currVal_6, currVal_7, currVal_8, currVal_9, currVal_10, currVal_11); var currVal_12 = (i1.ɵnov(_v, 27).required ? \"\" : null); var currVal_13 = i1.ɵnov(_v, 32).ngClassUntouched; var currVal_14 = i1.ɵnov(_v, 32).ngClassTouched; var currVal_15 = i1.ɵnov(_v, 32).ngClassPristine; var currVal_16 = i1.ɵnov(_v, 32).ngClassDirty; var currVal_17 = i1.ɵnov(_v, 32).ngClassValid; var currVal_18 = i1.ɵnov(_v, 32).ngClassInvalid; var currVal_19 = i1.ɵnov(_v, 32).ngClassPending; _ck(_v, 25, 0, currVal_12, currVal_13, currVal_14, currVal_15, currVal_16, currVal_17, currVal_18, currVal_19); var currVal_23 = (i1.ɵnov(_v, 45).disabled || null); var currVal_24 = (i1.ɵnov(_v, 45)._animationMode === \"NoopAnimations\"); _ck(_v, 43, 0, currVal_23, currVal_24); var currVal_25 = (i1.ɵnov(_v, 50).disabled || null); var currVal_26 = (i1.ɵnov(_v, 50)._animationMode === \"NoopAnimations\"); _ck(_v, 48, 0, currVal_25, currVal_26); }); }\nexport function View_CrupdateFolderDialogComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"crupdate-folder-dialog\", [], null, null, null, View_CrupdateFolderDialogComponent_0, RenderType_CrupdateFolderDialogComponent)), i1.ɵdid(1, 49152, null, 0, i15.CrupdateFolderDialogComponent, [i5.MatDialogRef, i5.MAT_DIALOG_DATA, i16.Store, i17.FoldersApiService, i1.ChangeDetectorRef], null, null)], null, null); }\nvar CrupdateFolderDialogComponentNgFactory = i1.ɵccf(\"crupdate-folder-dialog\", i15.CrupdateFolderDialogComponent, View_CrupdateFolderDialogComponent_Host_0, {}, {}, []);\nexport { CrupdateFolderDialogComponentNgFactory as CrupdateFolderDialogComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"\"];\nexport { styles as styles };\n","<div class=\"modal-header\">\n    <h2 mat-dialog-title trans>New Folder</h2>\n    <button type=\"button\" mat-icon-button (click)=\"close()\" class=\"close-button\" tabindex=\"-1\">\n        <mat-icon svgIcon=\"close\"></mat-icon>\n    </button>\n</div>\n\n<form ngNativeValidate (ngSubmit)=\"confirm()\">\n    <mat-dialog-content class=\"many-inputs\">\n        <div class=\"input-container\">\n            <input type=\"text\" [formControl]=\"folderName\" placeholder=\"Folder name...\" trans-placeholder required min=\"3\">\n            <div class=\"error\" *ngIf=\"errors.name\">{{errors.name}}</div>\n        </div>\n    </mat-dialog-content>\n\n    <mat-dialog-actions>\n        <button (click)=\"close()\" type=\"button\" mat-button class=\"cancel-button\" trans>Cancel</button>\n        <button type=\"submit\" mat-raised-button color=\"primary\" class=\"submit-button\" [disabled]=\"loading | async\" trans>Create</button>\n    </mat-dialog-actions>\n</form>","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./rename-entry-dialog.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../../../common/core/translations/translate.directive\";\nimport * as i3 from \"../../../../common/core/translations/translations.service\";\nimport * as i4 from \"../../../../common/core/config/settings.service\";\nimport * as i5 from \"@angular/material/dialog\";\nimport * as i6 from \"../../../../../node_modules/@angular/material/button/typings/index.ngfactory\";\nimport * as i7 from \"@angular/material/button\";\nimport * as i8 from \"@angular/cdk/platform\";\nimport * as i9 from \"@angular/cdk/a11y\";\nimport * as i10 from \"@angular/platform-browser/animations\";\nimport * as i11 from \"../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i12 from \"@angular/material/icon\";\nimport * as i13 from \"@angular/forms\";\nimport * as i14 from \"@angular/common\";\nimport * as i15 from \"./rename-entry-dialog.component\";\nimport * as i16 from \"@ngxs/store\";\nimport * as i17 from \"../../../../common/core/ui/toast.service\";\nimport * as i18 from \"../../drive-entry-api.service\";\nvar styles_RenameEntryDialogComponent = [i0.styles];\nvar RenderType_RenameEntryDialogComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_RenameEntryDialogComponent, data: {} });\nexport { RenderType_RenameEntryDialogComponent as RenderType_RenameEntryDialogComponent };\nfunction View_RenameEntryDialogComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"div\", [[\"class\", \"error\"]], null, null, null, null, null)), (_l()(), i1.ɵted(1, null, [\"\", \"\"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.errors.name; _ck(_v, 1, 0, currVal_0); }); }\nexport function View_RenameEntryDialogComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 0, null, null, 13, \"div\", [[\"class\", \"modal-header\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(2, 0, null, null, 3, \"h2\", [[\"class\", \"mat-dialog-title\"], [\"mat-dialog-title\", \"\"], [\"trans\", \"\"]], [[8, \"id\", 0]], null, null, null, null)), i1.ɵdid(3, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), i1.ɵdid(4, 81920, null, 0, i5.MatDialogTitle, [[2, i5.MatDialogRef], i1.ElementRef, i5.MatDialog], null, null), (_l()(), i1.ɵted(-1, null, [\"Rename\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(7, 0, null, null, 5, \"button\", [[\"class\", \"close-button\"], [\"mat-icon-button\", \"\"], [\"tabindex\", \"-1\"], [\"type\", \"button\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.close() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i6.View_MatButton_0, i6.RenderType_MatButton)), i1.ɵdid(8, 180224, null, 0, i7.MatButton, [i1.ElementRef, i8.Platform, i9.FocusMonitor, [2, i10.ANIMATION_MODULE_TYPE]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(10, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"close\"]], [[2, \"mat-icon-inline\", null]], null, null, i11.View_MatIcon_0, i11.RenderType_MatIcon)), i1.ɵdid(11, 638976, null, 0, i12.MatIcon, [i1.ElementRef, i12.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵeld(15, 0, null, null, 39, \"form\", [[\"ngNativeValidate\", \"\"]], [[2, \"ng-untouched\", null], [2, \"ng-touched\", null], [2, \"ng-pristine\", null], [2, \"ng-dirty\", null], [2, \"ng-valid\", null], [2, \"ng-invalid\", null], [2, \"ng-pending\", null]], [[null, \"ngSubmit\"], [null, \"submit\"], [null, \"reset\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"submit\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 16).onSubmit($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"reset\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 16).onReset() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"ngSubmit\" === en)) {\n        var pd_2 = (_co.confirm() !== false);\n        ad = (pd_2 && ad);\n    } return ad; }, null, null)), i1.ɵdid(16, 4210688, null, 0, i13.NgForm, [[8, null], [8, null]], null, { ngSubmit: \"ngSubmit\" }), i1.ɵprd(2048, null, i13.ControlContainer, null, [i13.NgForm]), i1.ɵdid(18, 16384, null, 0, i13.NgControlStatusGroup, [[4, i13.ControlContainer]], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(20, 0, null, null, 18, \"mat-dialog-content\", [[\"class\", \"many-inputs mat-dialog-content\"]], null, null, null, null, null)), i1.ɵdid(21, 16384, null, 0, i5.MatDialogContent, [], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(23, 0, null, null, 14, \"div\", [[\"class\", \"input-container\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(25, 0, null, null, 8, \"input\", [[\"min\", \"3\"], [\"placeholder\", \"Enter a name...\"], [\"required\", \"\"], [\"trans-placeholder\", \"\"], [\"type\", \"text\"]], [[1, \"required\", 0], [2, \"ng-untouched\", null], [2, \"ng-touched\", null], [2, \"ng-pristine\", null], [2, \"ng-dirty\", null], [2, \"ng-valid\", null], [2, \"ng-invalid\", null], [2, \"ng-pending\", null]], [[null, \"input\"], [null, \"blur\"], [null, \"compositionstart\"], [null, \"compositionend\"]], function (_v, en, $event) { var ad = true; if ((\"input\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 26)._handleInput($event.target.value) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"blur\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 26).onTouched() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"compositionstart\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 26)._compositionStart() !== false);\n        ad = (pd_2 && ad);\n    } if ((\"compositionend\" === en)) {\n        var pd_3 = (i1.ɵnov(_v, 26)._compositionEnd($event.target.value) !== false);\n        ad = (pd_3 && ad);\n    } return ad; }, null, null)), i1.ɵdid(26, 16384, null, 0, i13.DefaultValueAccessor, [i1.Renderer2, i1.ElementRef, [2, i13.COMPOSITION_BUFFER_MODE]], null, null), i1.ɵdid(27, 16384, null, 0, i13.RequiredValidator, [], { required: [0, \"required\"] }, null), i1.ɵprd(1024, null, i13.NG_VALIDATORS, function (p0_0) { return [p0_0]; }, [i13.RequiredValidator]), i1.ɵprd(1024, null, i13.NG_VALUE_ACCESSOR, function (p0_0) { return [p0_0]; }, [i13.DefaultValueAccessor]), i1.ɵdid(30, 540672, null, 0, i13.FormControlDirective, [[6, i13.NG_VALIDATORS], [8, null], [6, i13.NG_VALUE_ACCESSOR], [2, i13.ɵangular_packages_forms_forms_j]], { form: [0, \"form\"] }, null), i1.ɵprd(2048, null, i13.NgControl, null, [i13.FormControlDirective]), i1.ɵdid(32, 16384, null, 0, i13.NgControlStatus, [[4, i13.NgControl]], null, null), i1.ɵdid(33, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_RenameEntryDialogComponent_1)), i1.ɵdid(36, 16384, null, 0, i14.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n    \"])), (_l()(), i1.ɵeld(40, 0, null, null, 13, \"mat-dialog-actions\", [[\"class\", \"mat-dialog-actions\"]], null, null, null, null, null)), i1.ɵdid(41, 16384, null, 0, i5.MatDialogActions, [], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(43, 0, null, null, 3, \"button\", [[\"class\", \"cancel-button\"], [\"mat-button\", \"\"], [\"trans\", \"\"], [\"type\", \"button\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.close() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i6.View_MatButton_0, i6.RenderType_MatButton)), i1.ɵdid(44, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), i1.ɵdid(45, 180224, null, 0, i7.MatButton, [i1.ElementRef, i8.Platform, i9.FocusMonitor, [2, i10.ANIMATION_MODULE_TYPE]], null, null), (_l()(), i1.ɵted(-1, 0, [\"Cancel\"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(48, 0, null, null, 4, \"button\", [[\"class\", \"submit-button\"], [\"color\", \"accent\"], [\"mat-raised-button\", \"\"], [\"trans\", \"\"], [\"type\", \"submit\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], null, null, i6.View_MatButton_0, i6.RenderType_MatButton)), i1.ɵdid(49, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), i1.ɵdid(50, 180224, null, 0, i7.MatButton, [i1.ElementRef, i8.Platform, i9.FocusMonitor, [2, i10.ANIMATION_MODULE_TYPE]], { disabled: [0, \"disabled\"], color: [1, \"color\"] }, null), i1.ɵpid(131072, i14.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, 0, [\"Rename\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; _ck(_v, 4, 0); var currVal_4 = \"close\"; _ck(_v, 11, 0, currVal_4); var currVal_20 = \"\"; _ck(_v, 27, 0, currVal_20); var currVal_21 = _co.entryName; _ck(_v, 30, 0, currVal_21); var currVal_22 = _co.errors.name; _ck(_v, 36, 0, currVal_22); var currVal_27 = i1.ɵunv(_v, 50, 0, i1.ɵnov(_v, 51).transform(_co.loading)); var currVal_28 = \"accent\"; _ck(_v, 50, 0, currVal_27, currVal_28); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 4).id; _ck(_v, 2, 0, currVal_0); var currVal_1 = (i1.ɵnov(_v, 8).disabled || null); var currVal_2 = (i1.ɵnov(_v, 8)._animationMode === \"NoopAnimations\"); _ck(_v, 7, 0, currVal_1, currVal_2); var currVal_3 = i1.ɵnov(_v, 11).inline; _ck(_v, 10, 0, currVal_3); var currVal_5 = i1.ɵnov(_v, 18).ngClassUntouched; var currVal_6 = i1.ɵnov(_v, 18).ngClassTouched; var currVal_7 = i1.ɵnov(_v, 18).ngClassPristine; var currVal_8 = i1.ɵnov(_v, 18).ngClassDirty; var currVal_9 = i1.ɵnov(_v, 18).ngClassValid; var currVal_10 = i1.ɵnov(_v, 18).ngClassInvalid; var currVal_11 = i1.ɵnov(_v, 18).ngClassPending; _ck(_v, 15, 0, currVal_5, currVal_6, currVal_7, currVal_8, currVal_9, currVal_10, currVal_11); var currVal_12 = (i1.ɵnov(_v, 27).required ? \"\" : null); var currVal_13 = i1.ɵnov(_v, 32).ngClassUntouched; var currVal_14 = i1.ɵnov(_v, 32).ngClassTouched; var currVal_15 = i1.ɵnov(_v, 32).ngClassPristine; var currVal_16 = i1.ɵnov(_v, 32).ngClassDirty; var currVal_17 = i1.ɵnov(_v, 32).ngClassValid; var currVal_18 = i1.ɵnov(_v, 32).ngClassInvalid; var currVal_19 = i1.ɵnov(_v, 32).ngClassPending; _ck(_v, 25, 0, currVal_12, currVal_13, currVal_14, currVal_15, currVal_16, currVal_17, currVal_18, currVal_19); var currVal_23 = (i1.ɵnov(_v, 45).disabled || null); var currVal_24 = (i1.ɵnov(_v, 45)._animationMode === \"NoopAnimations\"); _ck(_v, 43, 0, currVal_23, currVal_24); var currVal_25 = (i1.ɵnov(_v, 50).disabled || null); var currVal_26 = (i1.ɵnov(_v, 50)._animationMode === \"NoopAnimations\"); _ck(_v, 48, 0, currVal_25, currVal_26); }); }\nexport function View_RenameEntryDialogComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"rename-entry-dialog\", [], null, null, null, View_RenameEntryDialogComponent_0, RenderType_RenameEntryDialogComponent)), i1.ɵdid(1, 114688, null, 0, i15.RenameEntryDialogComponent, [i5.MatDialogRef, i16.Store, i17.Toast, i18.DriveEntryApiService, i1.ChangeDetectorRef], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nvar RenameEntryDialogComponentNgFactory = i1.ɵccf(\"rename-entry-dialog\", i15.RenameEntryDialogComponent, View_RenameEntryDialogComponent_Host_0, {}, {}, []);\nexport { RenameEntryDialogComponentNgFactory as RenameEntryDialogComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"\"];\nexport { styles as styles };\n","<div class=\"modal-header\">\n    <h2 mat-dialog-title trans>Rename</h2>\n    <button type=\"button\" mat-icon-button (click)=\"close()\" class=\"close-button\" tabindex=\"-1\">\n        <mat-icon svgIcon=\"close\"></mat-icon>\n    </button>\n</div>\n\n<form ngNativeValidate (ngSubmit)=\"confirm()\">\n    <mat-dialog-content class=\"many-inputs\">\n        <div class=\"input-container\">\n            <input type=\"text\" [formControl]=\"entryName\" placeholder=\"Enter a name...\" trans-placeholder required min=\"3\">\n            <div class=\"error\" *ngIf=\"errors.name\">{{errors.name}}</div>\n        </div>\n    </mat-dialog-content>\n\n    <mat-dialog-actions>\n        <button (click)=\"close()\" type=\"button\" mat-button class=\"cancel-button\" trans>Cancel</button>\n        <button type=\"submit\" mat-raised-button color=\"accent\" class=\"submit-button\" [disabled]=\"loading | async\" trans>Rename</button>\n    </mat-dialog-actions>\n</form>","import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { UploadQueueItem } from 'common/uploads/upload-queue/upload-queue-item';\n\n@Component({\n    selector: 'uploads-panel-item',\n    templateUrl: './uploads-panel-item.component.html',\n    styleUrls: ['./uploads-panel-item.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UploadsPanelItemComponent {\n    @Input() upload: UploadQueueItem;\n}\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./uploads-panel-item.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../../../../common/core/translations/translate.directive\";\nimport * as i3 from \"../../../../../common/core/translations/translations.service\";\nimport * as i4 from \"../../../../../common/core/config/settings.service\";\nimport * as i5 from \"../../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i6 from \"@angular/material/tooltip\";\nimport * as i7 from \"@angular/cdk/overlay\";\nimport * as i8 from \"@angular/cdk/scrolling\";\nimport * as i9 from \"@angular/cdk/platform\";\nimport * as i10 from \"@angular/cdk/a11y\";\nimport * as i11 from \"@angular/cdk/bidi\";\nimport * as i12 from \"@angular/material/icon\";\nimport * as i13 from \"@angular/common\";\nimport * as i14 from \"../../../files/components/file-icon/file-icon.component.ngfactory\";\nimport * as i15 from \"../../../files/components/file-icon/file-icon.component\";\nimport * as i16 from \"../../../../../../node_modules/@angular/material/progress-bar/typings/index.ngfactory\";\nimport * as i17 from \"@angular/material/progress-bar\";\nimport * as i18 from \"@angular/platform-browser/animations\";\nimport * as i19 from \"../../../../../common/core/translations/translate.pipe\";\nimport * as i20 from \"./uploads-panel-item.component\";\nvar styles_UploadsPanelItemComponent = [i0.styles];\nvar RenderType_UploadsPanelItemComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_UploadsPanelItemComponent, data: {} });\nexport { RenderType_UploadsPanelItemComponent as RenderType_UploadsPanelItemComponent };\nfunction View_UploadsPanelItemComponent_2(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 5, \"div\", [[\"class\", \"time-left\"]], null, null, null, null, null)), (_l()(), i1.ɵted(1, null, [\"\\n                \", \"\\n                \"])), (_l()(), i1.ɵeld(2, 0, null, null, 2, \"span\", [[\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(3, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"left\"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"]))], null, function (_ck, _v) { var currVal_0 = _v.parent.context.ngIf.eta; _ck(_v, 1, 0, currVal_0); }); }\nfunction View_UploadsPanelItemComponent_3(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 16777216, null, null, 3, \"mat-icon\", [[\"class\", \"error-icon mat-icon\"], [\"matTooltipPosition\", \"left\"], [\"role\", \"img\"], [\"svgIcon\", \"error\"]], [[2, \"mat-icon-inline\", null]], [[null, \"longpress\"], [null, \"keydown\"], [null, \"touchend\"]], function (_v, en, $event) { var ad = true; if ((\"longpress\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 1).show() !== false);\n        ad = (pd_0 && ad);\n    } if ((\"keydown\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 1)._handleKeydown($event) !== false);\n        ad = (pd_1 && ad);\n    } if ((\"touchend\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 1)._handleTouchend() !== false);\n        ad = (pd_2 && ad);\n    } return ad; }, i5.View_MatIcon_0, i5.RenderType_MatIcon)), i1.ɵdid(1, 147456, null, 0, i6.MatTooltip, [i7.Overlay, i1.ElementRef, i8.ScrollDispatcher, i1.ViewContainerRef, i1.NgZone, i9.Platform, i10.AriaDescriber, i10.FocusMonitor, i6.MAT_TOOLTIP_SCROLL_STRATEGY, [2, i11.Directionality], [2, i6.MAT_TOOLTIP_DEFAULT_OPTIONS]], { position: [0, \"position\"], disabled: [1, \"disabled\"], message: [2, \"message\"] }, null), i1.ɵppd(2, 1), i1.ɵdid(3, 638976, null, 0, i12.MatIcon, [i1.ElementRef, i12.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵand(0, null, null, 0))], function (_ck, _v) { var currVal_1 = \"left\"; var currVal_2 = !_v.parent.context.ngIf.error; var currVal_3 = i1.ɵunv(_v, 1, 2, _ck(_v, 2, 0, i1.ɵnov(_v.parent.parent, 0), _v.parent.context.ngIf.error)); _ck(_v, 1, 0, currVal_1, currVal_2, currVal_3); var currVal_4 = \"error\"; _ck(_v, 3, 0, currVal_4); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 3).inline; _ck(_v, 0, 0, currVal_0); }); }\nfunction View_UploadsPanelItemComponent_5(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"mat-icon\", [[\"class\", \"completed-icon mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"check-circle\"]], [[2, \"mat-icon-inline\", null]], null, null, i5.View_MatIcon_0, i5.RenderType_MatIcon)), i1.ɵdid(1, 638976, null, 0, i12.MatIcon, [i1.ElementRef, i12.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null)], function (_ck, _v) { var currVal_1 = \"check-circle\"; _ck(_v, 1, 0, currVal_1); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 1).inline; _ck(_v, 0, 0, currVal_0); }); }\nfunction View_UploadsPanelItemComponent_6(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"span\", [[\"class\", \"cancel-button\"]], null, [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.upload.cancel() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, null, null)), (_l()(), i1.ɵted(-1, null, [\"Cancel\"]))], null, null); }\nfunction View_UploadsPanelItemComponent_4(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵted(-1, null, [\"\\n                    \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_UploadsPanelItemComponent_5)), i1.ɵdid(2, 16384, null, 0, i13.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n                    \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_UploadsPanelItemComponent_6)), i1.ɵdid(5, 16384, null, 0, i13.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n                \"]))], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.upload.completed; _ck(_v, 2, 0, currVal_0); var currVal_1 = !_co.upload.completed; _ck(_v, 5, 0, currVal_1); }, null); }\nfunction View_UploadsPanelItemComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 27, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(2, 0, null, null, 1, \"file-icon\", [], null, null, null, i14.View_FileIconComponent_0, i14.RenderType_FileIconComponent)), i1.ɵdid(3, 573440, null, 0, i15.FileIconComponent, [], { type: [0, \"type\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(5, 0, null, null, 21, \"div\", [[\"class\", \"content\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(7, 0, null, null, 15, \"div\", [[\"class\", \"meta\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(9, 0, null, null, 1, \"div\", [[\"class\", \"name\"]], null, null, null, null, null)), (_l()(), i1.ɵted(10, null, [\"\", \"\"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_UploadsPanelItemComponent_2)), i1.ɵdid(13, 16384, null, 0, i13.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(15, 0, null, null, 6, \"div\", [[\"class\", \"actions\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_UploadsPanelItemComponent_3)), i1.ɵdid(18, 16384, null, 0, i13.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"], ngIfElse: [1, \"ngIfElse\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵand(0, [[\"noError\", 2]], null, 0, null, View_UploadsPanelItemComponent_4)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(24, 0, null, null, 1, \"mat-progress-bar\", [[\"aria-valuemax\", \"100\"], [\"aria-valuemin\", \"0\"], [\"class\", \"mat-progress-bar\"], [\"mode\", \"determinate\"], [\"role\", \"progressbar\"]], [[1, \"aria-valuenow\", 0], [1, \"mode\", 0], [2, \"_mat-animation-noopable\", null]], null, null, i16.View_MatProgressBar_0, i16.RenderType_MatProgressBar)), i1.ɵdid(25, 49152, null, 0, i17.MatProgressBar, [i1.ElementRef, [2, i18.ANIMATION_MODULE_TYPE], [2, i17.MAT_PROGRESS_BAR_LOCATION]], { value: [0, \"value\"], mode: [1, \"mode\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.upload.mime; _ck(_v, 3, 0, currVal_0); var currVal_2 = (!_co.upload.completed && !_co.upload.pending); _ck(_v, 13, 0, currVal_2); var currVal_3 = _co.upload.hasError; var currVal_4 = i1.ɵnov(_v, 20); _ck(_v, 18, 0, currVal_3, currVal_4); var currVal_8 = _v.context.ngIf.progress; var currVal_9 = \"determinate\"; _ck(_v, 25, 0, currVal_8, currVal_9); }, function (_ck, _v) { var _co = _v.component; var currVal_1 = _co.upload.filename; _ck(_v, 10, 0, currVal_1); var currVal_5 = i1.ɵnov(_v, 25).value; var currVal_6 = i1.ɵnov(_v, 25).mode; var currVal_7 = (i1.ɵnov(_v, 25)._animationMode === \"NoopAnimations\"); _ck(_v, 24, 0, currVal_5, currVal_6, currVal_7); }); }\nexport function View_UploadsPanelItemComponent_0(_l) { return i1.ɵvid(2, [i1.ɵpid(0, i19.TransPipe, [i3.Translations]), (_l()(), i1.ɵand(16777216, null, null, 2, null, View_UploadsPanelItemComponent_1)), i1.ɵdid(2, 16384, null, 0, i13.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), i1.ɵpid(131072, i13.AsyncPipe, [i1.ChangeDetectorRef])], function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵunv(_v, 2, 0, i1.ɵnov(_v, 3).transform(_co.upload.meta$)); _ck(_v, 2, 0, currVal_0); }, null); }\nexport function View_UploadsPanelItemComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"uploads-panel-item\", [], null, null, null, View_UploadsPanelItemComponent_0, RenderType_UploadsPanelItemComponent)), i1.ɵdid(1, 49152, null, 0, i20.UploadsPanelItemComponent, [], null, null)], null, null); }\nvar UploadsPanelItemComponentNgFactory = i1.ɵccf(\"uploads-panel-item\", i20.UploadsPanelItemComponent, View_UploadsPanelItemComponent_Host_0, { upload: \"upload\" }, {}, []);\nexport { UploadsPanelItemComponentNgFactory as UploadsPanelItemComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"uploads-panel-item{display:flex;align-items:center;padding:15px;border-bottom:1px solid #e0e0e0}uploads-panel-item file-icon{width:35px;height:35px;flex:0 0 35px;margin-right:10px}uploads-panel-item .content{flex:1 1 auto;margin-bottom:5px;min-width:0}uploads-panel-item .content .meta{display:flex;align-items:center;padding-bottom:4px}uploads-panel-item .name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}uploads-panel-item .time-left{color:rgba(0,0,0,.54);font-size:1.3rem;padding-left:20px;white-space:nowrap}uploads-panel-item .actions{margin-left:auto;padding-left:20px}uploads-panel-item .actions .mat-icon{vertical-align:middle;width:22px;height:22px;margin-bottom:4px}uploads-panel-item .completed-icon{color:#689f38}uploads-panel-item .error-icon{color:#f44336}uploads-panel-item .cancel-button{color:#1565c0;cursor:pointer;font-size:1.2rem;text-transform:uppercase;line-height:22px}uploads-panel-item .cancel-button:hover{text-decoration:underline}uploads-panel-item .mat-progress-bar{height:3px;border-radius:3px}uploads-panel-item .mat-progress-bar .mat-progress-bar-buffer{background-color:#f1f1f1}uploads-panel-item .mat-progress-bar .mat-progress-bar-fill:after{background-color:#689f38}\"];\nexport { styles as styles };\n","<ng-container *ngIf=\"upload.meta$ | async as meta\">\n    <file-icon [type]=\"upload.mime\"></file-icon>\n    <div class=\"content\">\n        <div class=\"meta\">\n            <div class=\"name\">{{upload.filename}}</div>\n            <div class=\"time-left\" *ngIf=\"!upload.completed && !upload.pending\">\n                {{meta.eta}}\n                <span trans>left</span>\n            </div>\n            <div class=\"actions\">\n                <mat-icon\n                        svgIcon=\"error\"\n                        *ngIf=\"upload.hasError; else noError\"\n                        class=\"error-icon\"\n                        [matTooltip]=\"meta.error | trans\"\n                        [matTooltipDisabled]=\"!meta.error\"\n                        matTooltipPosition=\"left\"\n                ></mat-icon>\n                <ng-template #noError>\n                    <mat-icon svgIcon=\"check-circle\" *ngIf=\"upload.completed\" class=\"completed-icon\"></mat-icon>\n                    <span class=\"cancel-button\" *ngIf=\"!upload.completed\" (click)=\"upload.cancel()\">Cancel</span>\n                </ng-template>\n            </div>\n        </div>\n        <mat-progress-bar mode=\"determinate\" [value]=\"meta.progress\"></mat-progress-bar>\n    </div>\n</ng-container>","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./uploads-panel.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../../../common/core/translations/translate.directive\";\nimport * as i3 from \"../../../../common/core/translations/translations.service\";\nimport * as i4 from \"../../../../common/core/config/settings.service\";\nimport * as i5 from \"@angular/common\";\nimport * as i6 from \"../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i7 from \"@angular/material/icon\";\nimport * as i8 from \"./uploads-panel-item/uploads-panel-item.component.ngfactory\";\nimport * as i9 from \"./uploads-panel-item/uploads-panel-item.component\";\nimport * as i10 from \"../../../../../node_modules/@angular/material/button/typings/index.ngfactory\";\nimport * as i11 from \"@angular/material/button\";\nimport * as i12 from \"@angular/cdk/platform\";\nimport * as i13 from \"@angular/cdk/a11y\";\nimport * as i14 from \"@angular/platform-browser/animations\";\nimport * as i15 from \"./uploads-panel.component\";\nimport * as i16 from \"@ngxs/store\";\nimport * as i17 from \"../../../../common/uploads/upload-queue/upload-queue.service\";\nvar styles_UploadsPanelComponent = [i0.styles];\nvar RenderType_UploadsPanelComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_UploadsPanelComponent, data: {} });\nexport { RenderType_UploadsPanelComponent as RenderType_UploadsPanelComponent };\nfunction View_UploadsPanelComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 12, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(2, 0, null, null, 2, \"span\", [[\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(3, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Uploading\"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(6, 0, null, null, 1, \"span\", [[\"class\", \"count\"]], null, null, null, null, null)), (_l()(), i1.ɵted(7, null, [\"\", \"\"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(9, 0, null, null, 2, \"span\", [[\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(10, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), (_l()(), i1.ɵted(11, null, [\"\", \"\"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"]))], null, function (_ck, _v) { var currVal_0 = _v.context.ngIf; _ck(_v, 7, 0, currVal_0); var currVal_1 = ((_v.context.ngIf > 1) ? \"Items\" : \"Item\"); _ck(_v, 11, 0, currVal_1); }); }\nfunction View_UploadsPanelComponent_2(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(1, 0, null, null, 2, \"span\", [[\"class\", \"count\"]], null, null, null, null, null)), (_l()(), i1.ɵted(2, null, [\"\", \"\"])), i1.ɵpid(131072, i5.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(5, 0, null, null, 2, \"span\", [[\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(6, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"items uploaded\"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵunv(_v, 2, 0, i1.ɵnov(_v, 3).transform(_co.activeUploads.getCompletedCount())); _ck(_v, 2, 0, currVal_0); }); }\nfunction View_UploadsPanelComponent_3(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"mat-icon\", [[\"class\", \"minimize-icon mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"keyboard-arrow-up\"]], [[2, \"mat-icon-inline\", null]], null, null, i6.View_MatIcon_0, i6.RenderType_MatIcon)), i1.ɵdid(1, 638976, null, 0, i7.MatIcon, [i1.ElementRef, i7.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null)], function (_ck, _v) { var currVal_1 = \"keyboard-arrow-up\"; _ck(_v, 1, 0, currVal_1); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 1).inline; _ck(_v, 0, 0, currVal_0); }); }\nfunction View_UploadsPanelComponent_4(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(1, 0, null, null, 1, \"mat-icon\", [[\"class\", \"minimize-icon mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"keyboard-arrow-down\"]], [[2, \"mat-icon-inline\", null]], null, null, i6.View_MatIcon_0, i6.RenderType_MatIcon)), i1.ɵdid(2, 638976, null, 0, i7.MatIcon, [i1.ElementRef, i7.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n            \"]))], function (_ck, _v) { var currVal_1 = \"keyboard-arrow-down\"; _ck(_v, 2, 0, currVal_1); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 2).inline; _ck(_v, 1, 0, currVal_0); }); }\nfunction View_UploadsPanelComponent_5(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"uploads-panel-item\", [], null, null, null, i8.View_UploadsPanelItemComponent_0, i8.RenderType_UploadsPanelItemComponent)), i1.ɵdid(1, 49152, null, 0, i9.UploadsPanelItemComponent, [], { upload: [0, \"upload\"] }, null)], function (_ck, _v) { var currVal_0 = _v.context.$implicit; _ck(_v, 1, 0, currVal_0); }, null); }\nexport function View_UploadsPanelComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 0, null, null, 30, \"div\", [[\"class\", \"header\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(2, 0, null, null, 7, \"div\", [[\"class\", \"info\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵand(16777216, null, null, 2, null, View_UploadsPanelComponent_1)), i1.ɵdid(5, 16384, null, 0, i5.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"], ngIfElse: [1, \"ngIfElse\"] }, null), i1.ɵpid(131072, i5.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵand(0, [[\"allCompleted\", 2]], null, 0, null, View_UploadsPanelComponent_2)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(11, 0, null, null, 18, \"div\", [[\"class\", \"actions\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(13, 0, null, null, 8, \"button\", [[\"mat-icon-button\", \"\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.toggleMinimized() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i10.View_MatButton_0, i10.RenderType_MatButton)), i1.ɵdid(14, 180224, null, 0, i11.MatButton, [i1.ElementRef, i12.Platform, i13.FocusMonitor, [2, i14.ANIMATION_MODULE_TYPE]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵand(16777216, null, 0, 2, null, View_UploadsPanelComponent_3)), i1.ɵdid(17, 16384, null, 0, i5.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"], ngIfElse: [1, \"ngIfElse\"] }, null), i1.ɵpid(131072, i5.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵand(0, [[\"notMinimized\", 2]], 0, 0, null, View_UploadsPanelComponent_4)), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(23, 0, null, null, 5, \"button\", [[\"mat-icon-button\", \"\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.close() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i10.View_MatButton_0, i10.RenderType_MatButton)), i1.ɵdid(24, 180224, null, 0, i11.MatButton, [i1.ElementRef, i12.Platform, i13.FocusMonitor, [2, i14.ANIMATION_MODULE_TYPE]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵeld(26, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"close\"]], [[2, \"mat-icon-inline\", null]], null, null, i6.View_MatIcon_0, i6.RenderType_MatIcon)), i1.ɵdid(27, 638976, null, 0, i7.MatIcon, [i1.ElementRef, i7.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵeld(32, 0, null, null, 6, \"div\", [[\"class\", \"uploads-list\"]], [[2, \"hidden\", null]], null, null, null, null)), i1.ɵpid(131072, i5.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(16777216, null, null, 2, null, View_UploadsPanelComponent_5)), i1.ɵdid(36, 278528, null, 0, i5.NgForOf, [i1.ViewContainerRef, i1.TemplateRef, i1.IterableDiffers], { ngForOf: [0, \"ngForOf\"], ngForTrackBy: [1, \"ngForTrackBy\"] }, null), i1.ɵpid(131072, i5.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵunv(_v, 5, 0, i1.ɵnov(_v, 6).transform(_co.activeUploads.getPendingCount())); var currVal_1 = i1.ɵnov(_v, 8); _ck(_v, 5, 0, currVal_0, currVal_1); var currVal_4 = i1.ɵunv(_v, 17, 0, i1.ɵnov(_v, 18).transform(_co.minimized$)); var currVal_5 = i1.ɵnov(_v, 20); _ck(_v, 17, 0, currVal_4, currVal_5); var currVal_9 = \"close\"; _ck(_v, 27, 0, currVal_9); var currVal_11 = i1.ɵunv(_v, 36, 0, i1.ɵnov(_v, 37).transform(_co.activeUploads.getAll())); var currVal_12 = _co.trackById; _ck(_v, 36, 0, currVal_11, currVal_12); }, function (_ck, _v) { var _co = _v.component; var currVal_2 = (i1.ɵnov(_v, 14).disabled || null); var currVal_3 = (i1.ɵnov(_v, 14)._animationMode === \"NoopAnimations\"); _ck(_v, 13, 0, currVal_2, currVal_3); var currVal_6 = (i1.ɵnov(_v, 24).disabled || null); var currVal_7 = (i1.ɵnov(_v, 24)._animationMode === \"NoopAnimations\"); _ck(_v, 23, 0, currVal_6, currVal_7); var currVal_8 = i1.ɵnov(_v, 27).inline; _ck(_v, 26, 0, currVal_8); var currVal_10 = i1.ɵunv(_v, 32, 0, i1.ɵnov(_v, 33).transform(_co.minimized$)); _ck(_v, 32, 0, currVal_10); }); }\nexport function View_UploadsPanelComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"uploads-panel\", [], null, null, null, View_UploadsPanelComponent_0, RenderType_UploadsPanelComponent)), i1.ɵdid(1, 180224, null, 0, i15.UploadsPanelComponent, [i16.Store, i17.UploadQueueService, i1.NgZone], null, null)], null, null); }\nvar UploadsPanelComponentNgFactory = i1.ɵccf(\"uploads-panel\", i15.UploadsPanelComponent, View_UploadsPanelComponent_Host_0, {}, {}, []);\nexport { UploadsPanelComponentNgFactory as UploadsPanelComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"uploads-panel{width:380px;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12);background-color:#fff;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}uploads-panel .header{display:flex;align-items:center;background-color:#1565c0;color:#fff;padding:8px}uploads-panel .header .info{padding-left:10px}uploads-panel .header .actions{margin-left:auto}uploads-panel .header .minimize-icon{width:30px;height:30px}uploads-panel .uploads-list{max-height:350px;overflow:auto}\"];\nexport { styles as styles };\n","<div class=\"header\">\n    <div class=\"info\">\n        <ng-container *ngIf=\"activeUploads.getPendingCount() | async as pendingCount; else allCompleted\">\n            <span trans>Uploading</span>\n            <span class=\"count\">{{pendingCount}}</span>\n            <span trans>{{ pendingCount > 1 ? 'Items' : 'Item'}}</span>\n        </ng-container>\n        <ng-template #allCompleted>\n            <span class=\"count\">{{activeUploads.getCompletedCount() | async}}</span>\n            <span trans>items uploaded</span>\n        </ng-template>\n    </div>\n    <div class=\"actions\">\n        <button mat-icon-button (click)=\"toggleMinimized()\">\n            <mat-icon svgIcon=\"keyboard-arrow-up\" *ngIf=\"minimized$ | async; else notMinimized\" class=\"minimize-icon\"></mat-icon>\n            <ng-template #notMinimized>\n                <mat-icon svgIcon=\"keyboard-arrow-down\" class=\"minimize-icon\"></mat-icon>\n            </ng-template>\n        </button>\n        <button mat-icon-button (click)=\"close()\">\n            <mat-icon svgIcon=\"close\"></mat-icon>\n        </button>\n    </div>\n</div>\n\n<div class=\"uploads-list\" [class.hidden]=\"minimized$ | async\">\n    <uploads-panel-item *ngFor=\"let upload of activeUploads.getAll() | async; trackBy: trackById\" [upload]=\"upload\"></uploads-panel-item>\n</div>","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./move-entries-dialog.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../../../common/core/translations/translate.directive\";\nimport * as i3 from \"../../../../common/core/translations/translations.service\";\nimport * as i4 from \"../../../../common/core/config/settings.service\";\nimport * as i5 from \"@angular/material/dialog\";\nimport * as i6 from \"../../../../../node_modules/@angular/material/button/typings/index.ngfactory\";\nimport * as i7 from \"@angular/material/button\";\nimport * as i8 from \"@angular/cdk/platform\";\nimport * as i9 from \"@angular/cdk/a11y\";\nimport * as i10 from \"@angular/platform-browser/animations\";\nimport * as i11 from \"../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i12 from \"@angular/material/icon\";\nimport * as i13 from \"@angular/forms\";\nimport * as i14 from \"../../sidebar/folders-tree/folders-tree.component.ngfactory\";\nimport * as i15 from \"../../sidebar/folders-tree/folders-tree.component\";\nimport * as i16 from \"../../sidebar/folders-tree/folders-tree.service\";\nimport * as i17 from \"@angular/common\";\nimport * as i18 from \"./move-entries-dialog.component\";\nimport * as i19 from \"@ngxs/store\";\nvar styles_MoveEntriesDialogComponent = [i0.styles];\nvar RenderType_MoveEntriesDialogComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_MoveEntriesDialogComponent, data: {} });\nexport { RenderType_MoveEntriesDialogComponent as RenderType_MoveEntriesDialogComponent };\nexport function View_MoveEntriesDialogComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 0, null, null, 13, \"div\", [[\"class\", \"modal-header\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(2, 0, null, null, 3, \"h2\", [[\"class\", \"mat-dialog-title\"], [\"mat-dialog-title\", \"\"], [\"trans\", \"\"]], [[8, \"id\", 0]], null, null, null, null)), i1.ɵdid(3, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), i1.ɵdid(4, 81920, null, 0, i5.MatDialogTitle, [[2, i5.MatDialogRef], i1.ElementRef, i5.MatDialog], null, null), (_l()(), i1.ɵted(-1, null, [\"Move items\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(7, 0, null, null, 5, \"button\", [[\"class\", \"close-button\"], [\"mat-icon-button\", \"\"], [\"tabindex\", \"-1\"], [\"type\", \"button\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.close() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i6.View_MatButton_0, i6.RenderType_MatButton)), i1.ɵdid(8, 180224, null, 0, i7.MatButton, [i1.ElementRef, i8.Platform, i9.FocusMonitor, [2, i10.ANIMATION_MODULE_TYPE]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(10, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"close\"]], [[2, \"mat-icon-inline\", null]], null, null, i11.View_MatIcon_0, i11.RenderType_MatIcon)), i1.ɵdid(11, 638976, null, 0, i12.MatIcon, [i1.ElementRef, i12.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵeld(15, 0, null, null, 27, \"form\", [[\"ngNativeValidate\", \"\"]], [[2, \"ng-untouched\", null], [2, \"ng-touched\", null], [2, \"ng-pristine\", null], [2, \"ng-dirty\", null], [2, \"ng-valid\", null], [2, \"ng-invalid\", null], [2, \"ng-pending\", null]], [[null, \"ngSubmit\"], [null, \"submit\"], [null, \"reset\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"submit\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 16).onSubmit($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"reset\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 16).onReset() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"ngSubmit\" === en)) {\n        var pd_2 = (_co.confirm() !== false);\n        ad = (pd_2 && ad);\n    } return ad; }, null, null)), i1.ɵdid(16, 4210688, null, 0, i13.NgForm, [[8, null], [8, null]], null, { ngSubmit: \"ngSubmit\" }), i1.ɵprd(2048, null, i13.ControlContainer, null, [i13.NgForm]), i1.ɵdid(18, 16384, null, 0, i13.NgControlStatusGroup, [[4, i13.ControlContainer]], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(20, 0, null, null, 6, \"mat-dialog-content\", [[\"class\", \"mat-dialog-content\"]], null, null, null, null, null)), i1.ɵdid(21, 16384, null, 0, i5.MatDialogContent, [], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(23, 0, null, null, 2, \"folders-tree\", [], [[2, \"expanded\", null]], [[null, \"folderSelected\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"folderSelected\" === en)) {\n        var pd_0 = ((_co.selectedFolder = $event) !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i14.View_FoldersTreeComponent_0, i14.RenderType_FoldersTreeComponent)), i1.ɵdid(24, 49152, null, 0, i15.FoldersTreeComponent, [i16.FoldersTreeService], { expanded: [0, \"expanded\"], movingEntries: [1, \"movingEntries\"], disableContextMenu: [2, \"disableContextMenu\"] }, { folderSelected: \"folderSelected\" }), i1.ɵpid(131072, i17.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n    \"])), (_l()(), i1.ɵeld(28, 0, null, null, 13, \"mat-dialog-actions\", [[\"class\", \"mat-dialog-actions\"]], null, null, null, null, null)), i1.ɵdid(29, 16384, null, 0, i5.MatDialogActions, [], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(31, 0, null, null, 3, \"button\", [[\"class\", \"cancel-button\"], [\"mat-button\", \"\"], [\"trans\", \"\"], [\"type\", \"button\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.close() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i6.View_MatButton_0, i6.RenderType_MatButton)), i1.ɵdid(32, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), i1.ɵdid(33, 180224, null, 0, i7.MatButton, [i1.ElementRef, i8.Platform, i9.FocusMonitor, [2, i10.ANIMATION_MODULE_TYPE]], null, null), (_l()(), i1.ɵted(-1, 0, [\"Cancel\"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(36, 0, null, null, 4, \"button\", [[\"class\", \"submit-button\"], [\"color\", \"primary\"], [\"mat-raised-button\", \"\"], [\"trans\", \"\"], [\"type\", \"submit\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], null, null, i6.View_MatButton_0, i6.RenderType_MatButton)), i1.ɵdid(37, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), i1.ɵdid(38, 180224, null, 0, i7.MatButton, [i1.ElementRef, i8.Platform, i9.FocusMonitor, [2, i10.ANIMATION_MODULE_TYPE]], { disabled: [0, \"disabled\"], color: [1, \"color\"] }, null), i1.ɵpid(131072, i17.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, 0, [\"Move\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; _ck(_v, 4, 0); var currVal_4 = \"close\"; _ck(_v, 11, 0, currVal_4); var currVal_13 = true; var currVal_14 = i1.ɵunv(_v, 24, 1, i1.ɵnov(_v, 25).transform(_co.selectedEntries$)); var currVal_15 = true; _ck(_v, 24, 0, currVal_13, currVal_14, currVal_15); var currVal_20 = (!_co.selectedFolder || i1.ɵunv(_v, 38, 0, i1.ɵnov(_v, 39).transform(_co.loading))); var currVal_21 = \"primary\"; _ck(_v, 38, 0, currVal_20, currVal_21); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 4).id; _ck(_v, 2, 0, currVal_0); var currVal_1 = (i1.ɵnov(_v, 8).disabled || null); var currVal_2 = (i1.ɵnov(_v, 8)._animationMode === \"NoopAnimations\"); _ck(_v, 7, 0, currVal_1, currVal_2); var currVal_3 = i1.ɵnov(_v, 11).inline; _ck(_v, 10, 0, currVal_3); var currVal_5 = i1.ɵnov(_v, 18).ngClassUntouched; var currVal_6 = i1.ɵnov(_v, 18).ngClassTouched; var currVal_7 = i1.ɵnov(_v, 18).ngClassPristine; var currVal_8 = i1.ɵnov(_v, 18).ngClassDirty; var currVal_9 = i1.ɵnov(_v, 18).ngClassValid; var currVal_10 = i1.ɵnov(_v, 18).ngClassInvalid; var currVal_11 = i1.ɵnov(_v, 18).ngClassPending; _ck(_v, 15, 0, currVal_5, currVal_6, currVal_7, currVal_8, currVal_9, currVal_10, currVal_11); var currVal_12 = i1.ɵnov(_v, 24).expanded; _ck(_v, 23, 0, currVal_12); var currVal_16 = (i1.ɵnov(_v, 33).disabled || null); var currVal_17 = (i1.ɵnov(_v, 33)._animationMode === \"NoopAnimations\"); _ck(_v, 31, 0, currVal_16, currVal_17); var currVal_18 = (i1.ɵnov(_v, 38).disabled || null); var currVal_19 = (i1.ɵnov(_v, 38)._animationMode === \"NoopAnimations\"); _ck(_v, 36, 0, currVal_18, currVal_19); }); }\nexport function View_MoveEntriesDialogComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 2, \"move-entries-dialog\", [], null, null, null, View_MoveEntriesDialogComponent_0, RenderType_MoveEntriesDialogComponent)), i1.ɵprd(4608, null, i16.FoldersTreeService, i16.FoldersTreeService, []), i1.ɵdid(2, 245760, null, 0, i18.MoveEntriesDialogComponent, [i5.MatDialogRef, i19.Store, i19.Actions], null, null)], function (_ck, _v) { _ck(_v, 2, 0); }, null); }\nvar MoveEntriesDialogComponentNgFactory = i1.ɵccf(\"move-entries-dialog\", i18.MoveEntriesDialogComponent, View_MoveEntriesDialogComponent_Host_0, {}, {}, []);\nexport { MoveEntriesDialogComponentNgFactory as MoveEntriesDialogComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\".move-entries-dialog-container{width:350px}move-entries-dialog folders-tree{border:1px solid #eff1f2;border-radius:3px}move-entries-dialog .mat-dialog-actions{margin-top:15px}\"];\nexport { styles as styles };\n","<div class=\"modal-header\">\n    <h2 mat-dialog-title trans>Move items</h2>\n    <button type=\"button\" mat-icon-button (click)=\"close()\" class=\"close-button\" tabindex=\"-1\">\n        <mat-icon svgIcon=\"close\"></mat-icon>\n    </button>\n</div>\n\n<form ngNativeValidate (ngSubmit)=\"confirm()\">\n    <mat-dialog-content>\n        <folders-tree\n                [expanded]=\"true\"\n                [movingEntries]=\"selectedEntries$ | async\"\n                [disableContextMenu]=\"true\"\n                (folderSelected)=\"selectedFolder = $event\"\n        ></folders-tree>\n    </mat-dialog-content>\n\n    <mat-dialog-actions>\n        <button (click)=\"close()\" type=\"button\" mat-button class=\"cancel-button\" trans>Cancel</button>\n        <button type=\"submit\" mat-raised-button color=\"primary\" class=\"submit-button\" [disabled]=\"!selectedFolder || (loading | async)\" trans>Move</button>\n    </mat-dialog-actions>\n</form>","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./file-preview-overlay.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"./file-preview-toolbar/file-preview-toolbar.component.ngfactory\";\nimport * as i3 from \"./file-preview-toolbar/file-preview-toolbar.component\";\nimport * as i4 from \"../../../../common/file-preview/preview-files.service\";\nimport * as i5 from \"../../../../common/core/config/settings.service\";\nimport * as i6 from \"../../../../../node_modules/@angular/material/button/typings/index.ngfactory\";\nimport * as i7 from \"@angular/material/button\";\nimport * as i8 from \"@angular/cdk/platform\";\nimport * as i9 from \"@angular/cdk/a11y\";\nimport * as i10 from \"@angular/platform-browser/animations\";\nimport * as i11 from \"../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i12 from \"@angular/material/icon\";\nimport * as i13 from \"../../../../common/file-preview/preview-container/preview-container.component.ngfactory\";\nimport * as i14 from \"../../../../common/file-preview/preview-container/preview-container.component\";\nimport * as i15 from \"./file-preview-overlay.component\";\nimport * as i16 from \"@ngxs/store\";\nimport * as i17 from \"../../../../common/core/ui/context-menu/context-menu.service\";\nimport * as i18 from \"../../../../common/core/ui/overlay-panel/overlay-panel-ref\";\nimport * as i19 from \"../../../../common/core/ui/overlay-panel/overlay-panel-data\";\nvar styles_FilePreviewOverlayComponent = [i0.styles];\nvar RenderType_FilePreviewOverlayComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_FilePreviewOverlayComponent, data: {} });\nexport { RenderType_FilePreviewOverlayComponent as RenderType_FilePreviewOverlayComponent };\nexport function View_FilePreviewOverlayComponent_0(_l) { return i1.ɵvid(2, [i1.ɵqud(402653184, 1, { previewContainer: 0 }), i1.ɵqud(402653184, 2, { optionsButton: 0 }), (_l()(), i1.ɵeld(2, 0, null, null, 9, \"file-preview-toolbar\", [], null, [[null, \"closed\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"closed\" === en)) {\n        var pd_0 = (_co.closeOverlay() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i2.View_FilePreviewToolbarComponent_0, i2.RenderType_FilePreviewToolbarComponent)), i1.ɵdid(3, 49152, null, 0, i3.FilePreviewToolbarComponent, [i4.PreviewFilesService, i5.Settings], { showCloseButton: [0, \"showCloseButton\"] }, { closed: \"closed\" }), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵeld(5, 0, [[2, 0]], 0, 5, \"button\", [[\"mat-icon-button\", \"\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.openContextMenu() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i6.View_MatButton_0, i6.RenderType_MatButton)), i1.ɵdid(6, 180224, [[\"moreOptionsButton\", 4]], 0, i7.MatButton, [i1.ElementRef, i8.Platform, i9.FocusMonitor, [2, i10.ANIMATION_MODULE_TYPE]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(8, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon\"], [\"role\", \"img\"], [\"svgIcon\", \"more-vert\"]], [[2, \"mat-icon-inline\", null]], null, null, i11.View_MatIcon_0, i11.RenderType_MatIcon)), i1.ɵdid(9, 638976, null, 0, i12.MatIcon, [i1.ElementRef, i12.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵted(-1, 0, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵeld(13, 0, [[1, 0]], null, 1, \"preview-container\", [], null, null, null, i13.View_PreviewContainerComponent_0, i13.RenderType_PreviewContainerComponent)), i1.ɵdid(14, 704512, [[\"previewContainer\", 4]], 0, i14.PreviewContainerComponent, [i4.PreviewFilesService], { files: [0, \"files\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = true; _ck(_v, 3, 0, currVal_0); var currVal_4 = \"more-vert\"; _ck(_v, 9, 0, currVal_4); var currVal_5 = _co.entries; _ck(_v, 14, 0, currVal_5); }, function (_ck, _v) { var currVal_1 = (i1.ɵnov(_v, 6).disabled || null); var currVal_2 = (i1.ɵnov(_v, 6)._animationMode === \"NoopAnimations\"); _ck(_v, 5, 0, currVal_1, currVal_2); var currVal_3 = i1.ɵnov(_v, 9).inline; _ck(_v, 8, 0, currVal_3); }); }\nexport function View_FilePreviewOverlayComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"file-preview-overlay\", [], null, null, null, View_FilePreviewOverlayComponent_0, RenderType_FilePreviewOverlayComponent)), i1.ɵdid(1, 4374528, null, 0, i15.FilePreviewOverlayComponent, [i16.Store, i1.ElementRef, i17.ContextMenu, i18.OverlayPanelRef, i4.PreviewFilesService, i19.OVERLAY_PANEL_DATA], null, null)], null, null); }\nvar FilePreviewOverlayComponentNgFactory = i1.ɵccf(\"file-preview-overlay\", i15.FilePreviewOverlayComponent, View_FilePreviewOverlayComponent_Host_0, {}, {}, []);\nexport { FilePreviewOverlayComponentNgFactory as FilePreviewOverlayComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\".file-preview-overlay-container{width:100%;height:100%}file-preview-overlay{display:block;width:100%;height:100%;background-color:rgba(0,0,0,.9);color:#fff;overflow:auto;position:relative}file-preview-overlay preview-container{margin:60px 0;min-height:calc(100% - 120px)}\"];\nexport { styles as styles };\n","<file-preview-toolbar [showCloseButton]=\"true\" (closed)=\"closeOverlay()\">\r\n    <button mat-icon-button (click)=\"openContextMenu()\" #moreOptionsButton>\r\n        <mat-icon svgIcon=\"more-vert\"></mat-icon>\r\n    </button>\r\n</file-preview-toolbar>\r\n<preview-container [files]=\"entries\" #previewContainer></preview-container>","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { __extends } from 'tslib';\nimport { Component, ChangeDetectionStrategy, Inject, Input, ElementRef, ViewEncapsulation, Optional, InjectionToken, NgModule } from '@angular/core';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { mixinColor, MatCommonModule } from '@angular/material/core';\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Base reference size of the spinner.\n * \\@docs-private\n */\nvar /** @type {?} */ BASE_SIZE = 100;\n/**\n * Base reference stroke width of the spinner.\n * \\@docs-private\n */\nvar /** @type {?} */ BASE_STROKE_WIDTH = 10;\n/**\n * \\@docs-private\n */\nvar  /**\n * \\@docs-private\n */\nMatProgressSpinnerBase = /** @class */ (function () {\n    function MatProgressSpinnerBase(_elementRef) {\n        this._elementRef = _elementRef;\n    }\n    return MatProgressSpinnerBase;\n}());\nvar /** @type {?} */ _MatProgressSpinnerMixinBase = mixinColor(MatProgressSpinnerBase, 'primary');\n/**\n * Injection token to be used to override the default options for `mat-progress-spinner`.\n */\nvar /** @type {?} */ MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS = new InjectionToken('mat-progress-spinner-default-options', {\n    providedIn: 'root',\n    factory: MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY,\n});\n/**\n * \\@docs-private\n * @return {?}\n */\nfunction MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY() {\n    return { diameter: BASE_SIZE };\n}\n// .0001 percentage difference is necessary in order to avoid unwanted animation frames\n// for example because the animation duration is 4 seconds, .1% accounts to 4ms\n// which are enough to see the flicker described in\n// https://github.com/angular/material2/issues/8984\nvar /** @type {?} */ INDETERMINATE_ANIMATION_TEMPLATE = \"\\n @keyframes mat-progress-spinner-stroke-rotate-DIAMETER {\\n    0%      { stroke-dashoffset: START_VALUE;  transform: rotate(0); }\\n    12.5%   { stroke-dashoffset: END_VALUE;    transform: rotate(0); }\\n    12.5001%  { stroke-dashoffset: END_VALUE;    transform: rotateX(180deg) rotate(72.5deg); }\\n    25%     { stroke-dashoffset: START_VALUE;  transform: rotateX(180deg) rotate(72.5deg); }\\n\\n    25.0001%   { stroke-dashoffset: START_VALUE;  transform: rotate(270deg); }\\n    37.5%   { stroke-dashoffset: END_VALUE;    transform: rotate(270deg); }\\n    37.5001%  { stroke-dashoffset: END_VALUE;    transform: rotateX(180deg) rotate(161.5deg); }\\n    50%     { stroke-dashoffset: START_VALUE;  transform: rotateX(180deg) rotate(161.5deg); }\\n\\n    50.0001%  { stroke-dashoffset: START_VALUE;  transform: rotate(180deg); }\\n    62.5%   { stroke-dashoffset: END_VALUE;    transform: rotate(180deg); }\\n    62.5001%  { stroke-dashoffset: END_VALUE;    transform: rotateX(180deg) rotate(251.5deg); }\\n    75%     { stroke-dashoffset: START_VALUE;  transform: rotateX(180deg) rotate(251.5deg); }\\n\\n    75.0001%  { stroke-dashoffset: START_VALUE;  transform: rotate(90deg); }\\n    87.5%   { stroke-dashoffset: END_VALUE;    transform: rotate(90deg); }\\n    87.5001%  { stroke-dashoffset: END_VALUE;    transform: rotateX(180deg) rotate(341.5deg); }\\n    100%    { stroke-dashoffset: START_VALUE;  transform: rotateX(180deg) rotate(341.5deg); }\\n  }\\n\";\n/**\n * `<mat-progress-spinner>` component.\n */\nvar MatProgressSpinner = /** @class */ (function (_super) {\n    __extends(MatProgressSpinner, _super);\n    function MatProgressSpinner(_elementRef, platform, _document, \n    // @breaking-change 7.0.0 animationMode and defaults parameters to be made required.\n    animationMode, defaults) {\n        var _this = _super.call(this, _elementRef) || this;\n        _this._elementRef = _elementRef;\n        _this._document = _document;\n        _this.animationMode = animationMode;\n        _this.defaults = defaults;\n        _this._value = 0;\n        _this._fallbackAnimation = false;\n        /**\n         * Whether the _mat-animation-noopable class should be applied, disabling animations.\n         */\n        _this._noopAnimations = _this.animationMode === 'NoopAnimations' && (!!_this.defaults && !_this.defaults._forceAnimations);\n        _this._diameter = BASE_SIZE;\n        /**\n         * Mode of the progress circle\n         */\n        _this.mode = 'determinate';\n        _this._fallbackAnimation = platform.EDGE || platform.TRIDENT;\n        if (defaults) {\n            if (defaults.diameter) {\n                _this.diameter = defaults.diameter;\n            }\n            if (defaults.strokeWidth) {\n                _this.strokeWidth = defaults.strokeWidth;\n            }\n        }\n        // On IE and Edge, we can't animate the `stroke-dashoffset`\n        // reliably so we fall back to a non-spec animation.\n        var /** @type {?} */ animationClass = \"mat-progress-spinner-indeterminate\" + (_this._fallbackAnimation ? '-fallback' : '') + \"-animation\";\n        _elementRef.nativeElement.classList.add(animationClass);\n        return _this;\n    }\n    Object.defineProperty(MatProgressSpinner.prototype, \"diameter\", {\n        get: /**\n         * The diameter of the progress spinner (will set width and height of svg).\n         * @return {?}\n         */\n        function () { return this._diameter; },\n        set: /**\n         * @param {?} size\n         * @return {?}\n         */\n        function (size) {\n            this._diameter = coerceNumberProperty(size);\n            if (!this._fallbackAnimation && !MatProgressSpinner.diameters.has(this._diameter)) {\n                this._attachStyleNode();\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatProgressSpinner.prototype, \"strokeWidth\", {\n        get: /**\n         * Stroke width of the progress spinner.\n         * @return {?}\n         */\n        function () {\n            return this._strokeWidth || this.diameter / 10;\n        },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._strokeWidth = coerceNumberProperty(value);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatProgressSpinner.prototype, \"value\", {\n        get: /**\n         * Value of the progress circle.\n         * @return {?}\n         */\n        function () {\n            return this.mode === 'determinate' ? this._value : 0;\n        },\n        set: /**\n         * @param {?} newValue\n         * @return {?}\n         */\n        function (newValue) {\n            this._value = Math.max(0, Math.min(100, coerceNumberProperty(newValue)));\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatProgressSpinner.prototype, \"_circleRadius\", {\n        /** The radius of the spinner, adjusted for stroke width. */\n        get: /**\n         * The radius of the spinner, adjusted for stroke width.\n         * @return {?}\n         */\n        function () {\n            return (this.diameter - BASE_STROKE_WIDTH) / 2;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatProgressSpinner.prototype, \"_viewBox\", {\n        /** The view box of the spinner's svg element. */\n        get: /**\n         * The view box of the spinner's svg element.\n         * @return {?}\n         */\n        function () {\n            var /** @type {?} */ viewBox = this._circleRadius * 2 + this.strokeWidth;\n            return \"0 0 \" + viewBox + \" \" + viewBox;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatProgressSpinner.prototype, \"_strokeCircumference\", {\n        /** The stroke circumference of the svg circle. */\n        get: /**\n         * The stroke circumference of the svg circle.\n         * @return {?}\n         */\n        function () {\n            return 2 * Math.PI * this._circleRadius;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatProgressSpinner.prototype, \"_strokeDashOffset\", {\n        /** The dash offset of the svg circle. */\n        get: /**\n         * The dash offset of the svg circle.\n         * @return {?}\n         */\n        function () {\n            if (this.mode === 'determinate') {\n                return this._strokeCircumference * (100 - this._value) / 100;\n            }\n            // In fallback mode set the circle to 80% and rotate it with CSS.\n            if (this._fallbackAnimation && this.mode === 'indeterminate') {\n                return this._strokeCircumference * 0.2;\n            }\n            return null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatProgressSpinner.prototype, \"_circleStrokeWidth\", {\n        /** Stroke width of the circle in percent. */\n        get: /**\n         * Stroke width of the circle in percent.\n         * @return {?}\n         */\n        function () {\n            return this.strokeWidth / this.diameter * 100;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * Dynamically generates a style tag containing the correct animation for this diameter.\n     * @return {?}\n     */\n    MatProgressSpinner.prototype._attachStyleNode = /**\n     * Dynamically generates a style tag containing the correct animation for this diameter.\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ styleTag = MatProgressSpinner.styleTag;\n        if (!styleTag) {\n            styleTag = this._document.createElement('style');\n            this._document.head.appendChild(styleTag);\n            MatProgressSpinner.styleTag = styleTag;\n        }\n        if (styleTag && styleTag.sheet) {\n            (/** @type {?} */ (styleTag.sheet)).insertRule(this._getAnimationText(), 0);\n        }\n        MatProgressSpinner.diameters.add(this.diameter);\n    };\n    /**\n     * Generates animation styles adjusted for the spinner's diameter.\n     * @return {?}\n     */\n    MatProgressSpinner.prototype._getAnimationText = /**\n     * Generates animation styles adjusted for the spinner's diameter.\n     * @return {?}\n     */\n    function () {\n        return INDETERMINATE_ANIMATION_TEMPLATE\n            .replace(/START_VALUE/g, \"\" + 0.95 * this._strokeCircumference)\n            .replace(/END_VALUE/g, \"\" + 0.2 * this._strokeCircumference)\n            .replace(/DIAMETER/g, \"\" + this.diameter);\n    };\n    /**\n     * Tracks diameters of existing instances to de-dupe generated styles (default d = 100)\n     */\n    MatProgressSpinner.diameters = new Set([BASE_SIZE]);\n    /**\n     * Used for storing all of the generated keyframe animations.\n     * \\@dynamic\n     */\n    MatProgressSpinner.styleTag = null;\n    MatProgressSpinner.decorators = [\n        { type: Component, args: [{selector: 'mat-progress-spinner',\n                    exportAs: 'matProgressSpinner',\n                    host: {\n                        'role': 'progressbar',\n                        'class': 'mat-progress-spinner',\n                        '[class._mat-animation-noopable]': \"_noopAnimations\",\n                        '[style.width.px]': 'diameter',\n                        '[style.height.px]': 'diameter',\n                        '[attr.aria-valuemin]': 'mode === \"determinate\" ? 0 : null',\n                        '[attr.aria-valuemax]': 'mode === \"determinate\" ? 100 : null',\n                        '[attr.aria-valuenow]': 'value',\n                        '[attr.mode]': 'mode',\n                    },\n                    inputs: ['color'],\n                    template: \"<svg [style.width.px]=\\\"diameter\\\" [style.height.px]=\\\"diameter\\\" [attr.viewBox]=\\\"_viewBox\\\" preserveAspectRatio=\\\"xMidYMid meet\\\" focusable=\\\"false\\\" [ngSwitch]=\\\"mode === 'indeterminate'\\\"><circle *ngSwitchCase=\\\"true\\\" cx=\\\"50%\\\" cy=\\\"50%\\\" [attr.r]=\\\"_circleRadius\\\" [style.animation-name]=\\\"'mat-progress-spinner-stroke-rotate-' + diameter\\\" [style.stroke-dashoffset.px]=\\\"_strokeDashOffset\\\" [style.stroke-dasharray.px]=\\\"_strokeCircumference\\\" [style.stroke-width.%]=\\\"_circleStrokeWidth\\\"></circle><circle *ngSwitchCase=\\\"false\\\" cx=\\\"50%\\\" cy=\\\"50%\\\" [attr.r]=\\\"_circleRadius\\\" [style.stroke-dashoffset.px]=\\\"_strokeDashOffset\\\" [style.stroke-dasharray.px]=\\\"_strokeCircumference\\\" [style.stroke-width.%]=\\\"_circleStrokeWidth\\\"></circle></svg>\",\n                    styles: [\".mat-progress-spinner{display:block;position:relative}.mat-progress-spinner svg{position:absolute;transform:rotate(-90deg);top:0;left:0;transform-origin:center;overflow:visible}.mat-progress-spinner circle{fill:transparent;transform-origin:center;transition:stroke-dashoffset 225ms linear}._mat-animation-noopable.mat-progress-spinner circle{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate]{animation:mat-progress-spinner-linear-rotate 2s linear infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate]{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition-property:stroke;animation-duration:4s;animation-timing-function:cubic-bezier(.35,0,.25,1);animation-iteration-count:infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate]{animation:mat-progress-spinner-stroke-rotate-fallback 10s cubic-bezier(.87,.03,.33,1) infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate]{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition-property:stroke}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition:none;animation:none}@keyframes mat-progress-spinner-linear-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes mat-progress-spinner-stroke-rotate-100{0%{stroke-dashoffset:268.60617px;transform:rotate(0)}12.5%{stroke-dashoffset:56.54867px;transform:rotate(0)}12.5001%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(72.5deg)}25%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(72.5deg)}25.0001%{stroke-dashoffset:268.60617px;transform:rotate(270deg)}37.5%{stroke-dashoffset:56.54867px;transform:rotate(270deg)}37.5001%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(161.5deg)}50%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(161.5deg)}50.0001%{stroke-dashoffset:268.60617px;transform:rotate(180deg)}62.5%{stroke-dashoffset:56.54867px;transform:rotate(180deg)}62.5001%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(251.5deg)}75%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(251.5deg)}75.0001%{stroke-dashoffset:268.60617px;transform:rotate(90deg)}87.5%{stroke-dashoffset:56.54867px;transform:rotate(90deg)}87.5001%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(341.5deg)}100%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(341.5deg)}}@keyframes mat-progress-spinner-stroke-rotate-fallback{0%{transform:rotate(0)}25%{transform:rotate(1170deg)}50%{transform:rotate(2340deg)}75%{transform:rotate(3510deg)}100%{transform:rotate(4680deg)}}\"],\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    encapsulation: ViewEncapsulation.None,\n                },] },\n    ];\n    /** @nocollapse */\n    MatProgressSpinner.ctorParameters = function () { return [\n        { type: ElementRef, },\n        { type: Platform, },\n        { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] },] },\n        { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] },] },\n        { type: undefined, decorators: [{ type: Inject, args: [MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS,] },] },\n    ]; };\n    MatProgressSpinner.propDecorators = {\n        \"diameter\": [{ type: Input },],\n        \"strokeWidth\": [{ type: Input },],\n        \"mode\": [{ type: Input },],\n        \"value\": [{ type: Input },],\n    };\n    return MatProgressSpinner;\n}(_MatProgressSpinnerMixinBase));\n/**\n * `<mat-spinner>` component.\n *\n * This is a component definition to be used as a convenience reference to create an\n * indeterminate `<mat-progress-spinner>` instance.\n */\nvar MatSpinner = /** @class */ (function (_super) {\n    __extends(MatSpinner, _super);\n    function MatSpinner(elementRef, platform, document, \n    // @breaking-changes 7.0.0 animationMode and defaults parameters to be made required.\n    animationMode, defaults) {\n        var _this = _super.call(this, elementRef, platform, document, animationMode, defaults) || this;\n        _this.mode = 'indeterminate';\n        return _this;\n    }\n    MatSpinner.decorators = [\n        { type: Component, args: [{selector: 'mat-spinner',\n                    host: {\n                        'role': 'progressbar',\n                        'mode': 'indeterminate',\n                        'class': 'mat-spinner mat-progress-spinner',\n                        '[class._mat-animation-noopable]': \"_noopAnimations\",\n                        '[style.width.px]': 'diameter',\n                        '[style.height.px]': 'diameter',\n                    },\n                    inputs: ['color'],\n                    template: \"<svg [style.width.px]=\\\"diameter\\\" [style.height.px]=\\\"diameter\\\" [attr.viewBox]=\\\"_viewBox\\\" preserveAspectRatio=\\\"xMidYMid meet\\\" focusable=\\\"false\\\" [ngSwitch]=\\\"mode === 'indeterminate'\\\"><circle *ngSwitchCase=\\\"true\\\" cx=\\\"50%\\\" cy=\\\"50%\\\" [attr.r]=\\\"_circleRadius\\\" [style.animation-name]=\\\"'mat-progress-spinner-stroke-rotate-' + diameter\\\" [style.stroke-dashoffset.px]=\\\"_strokeDashOffset\\\" [style.stroke-dasharray.px]=\\\"_strokeCircumference\\\" [style.stroke-width.%]=\\\"_circleStrokeWidth\\\"></circle><circle *ngSwitchCase=\\\"false\\\" cx=\\\"50%\\\" cy=\\\"50%\\\" [attr.r]=\\\"_circleRadius\\\" [style.stroke-dashoffset.px]=\\\"_strokeDashOffset\\\" [style.stroke-dasharray.px]=\\\"_strokeCircumference\\\" [style.stroke-width.%]=\\\"_circleStrokeWidth\\\"></circle></svg>\",\n                    styles: [\".mat-progress-spinner{display:block;position:relative}.mat-progress-spinner svg{position:absolute;transform:rotate(-90deg);top:0;left:0;transform-origin:center;overflow:visible}.mat-progress-spinner circle{fill:transparent;transform-origin:center;transition:stroke-dashoffset 225ms linear}._mat-animation-noopable.mat-progress-spinner circle{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate]{animation:mat-progress-spinner-linear-rotate 2s linear infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate]{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition-property:stroke;animation-duration:4s;animation-timing-function:cubic-bezier(.35,0,.25,1);animation-iteration-count:infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate]{animation:mat-progress-spinner-stroke-rotate-fallback 10s cubic-bezier(.87,.03,.33,1) infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate]{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition-property:stroke}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition:none;animation:none}@keyframes mat-progress-spinner-linear-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes mat-progress-spinner-stroke-rotate-100{0%{stroke-dashoffset:268.60617px;transform:rotate(0)}12.5%{stroke-dashoffset:56.54867px;transform:rotate(0)}12.5001%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(72.5deg)}25%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(72.5deg)}25.0001%{stroke-dashoffset:268.60617px;transform:rotate(270deg)}37.5%{stroke-dashoffset:56.54867px;transform:rotate(270deg)}37.5001%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(161.5deg)}50%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(161.5deg)}50.0001%{stroke-dashoffset:268.60617px;transform:rotate(180deg)}62.5%{stroke-dashoffset:56.54867px;transform:rotate(180deg)}62.5001%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(251.5deg)}75%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(251.5deg)}75.0001%{stroke-dashoffset:268.60617px;transform:rotate(90deg)}87.5%{stroke-dashoffset:56.54867px;transform:rotate(90deg)}87.5001%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(341.5deg)}100%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(341.5deg)}}@keyframes mat-progress-spinner-stroke-rotate-fallback{0%{transform:rotate(0)}25%{transform:rotate(1170deg)}50%{transform:rotate(2340deg)}75%{transform:rotate(3510deg)}100%{transform:rotate(4680deg)}}\"],\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    encapsulation: ViewEncapsulation.None,\n                },] },\n    ];\n    /** @nocollapse */\n    MatSpinner.ctorParameters = function () { return [\n        { type: ElementRef, },\n        { type: Platform, },\n        { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] },] },\n        { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] },] },\n        { type: undefined, decorators: [{ type: Inject, args: [MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS,] },] },\n    ]; };\n    return MatSpinner;\n}(MatProgressSpinner));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nvar MatProgressSpinnerModule = /** @class */ (function () {\n    function MatProgressSpinnerModule() {\n    }\n    MatProgressSpinnerModule.decorators = [\n        { type: NgModule, args: [{\n                    imports: [MatCommonModule, CommonModule],\n                    exports: [\n                        MatProgressSpinner,\n                        MatSpinner,\n                        MatCommonModule\n                    ],\n                    declarations: [\n                        MatProgressSpinner,\n                        MatSpinner\n                    ],\n                },] },\n    ];\n    return MatProgressSpinnerModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\nexport { MatProgressSpinnerModule, MatProgressSpinnerBase, _MatProgressSpinnerMixinBase, MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS, MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY, MatProgressSpinner, MatSpinner };\n//# sourceMappingURL=progress-spinner.es5.js.map\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/progress-spinner\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@angular/cdk/bidi\";\nimport * as i4 from \"@angular/material/core\";\nimport * as i5 from \"@angular/cdk/platform\";\nimport * as i6 from \"@angular/platform-browser/animations\";\nvar MatProgressSpinnerModuleNgFactory = i0.ɵcmf(i1.MatProgressSpinnerModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i2.NgLocalization, i2.NgLocaleLocalization, [i0.LOCALE_ID, [2, i2.ɵangular_packages_common_common_a]]), i0.ɵmpd(1073742336, i3.BidiModule, i3.BidiModule, []), i0.ɵmpd(1073742336, i4.MatCommonModule, i4.MatCommonModule, [[2, i4.MATERIAL_SANITY_CHECKS]]), i0.ɵmpd(1073742336, i2.CommonModule, i2.CommonModule, []), i0.ɵmpd(1073742336, i1.MatProgressSpinnerModule, i1.MatProgressSpinnerModule, [])]); });\nexport { MatProgressSpinnerModuleNgFactory as MatProgressSpinnerModuleNgFactory };\nvar styles_MatProgressSpinner = [\".mat-progress-spinner{display:block;position:relative}.mat-progress-spinner svg{position:absolute;transform:rotate(-90deg);top:0;left:0;transform-origin:center;overflow:visible}.mat-progress-spinner circle{fill:transparent;transform-origin:center;transition:stroke-dashoffset 225ms linear}._mat-animation-noopable.mat-progress-spinner circle{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate]{animation:mat-progress-spinner-linear-rotate 2s linear infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate]{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition-property:stroke;animation-duration:4s;animation-timing-function:cubic-bezier(.35,0,.25,1);animation-iteration-count:infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate]{animation:mat-progress-spinner-stroke-rotate-fallback 10s cubic-bezier(.87,.03,.33,1) infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate]{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition-property:stroke}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition:none;animation:none}@keyframes mat-progress-spinner-linear-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes mat-progress-spinner-stroke-rotate-100{0%{stroke-dashoffset:268.60617px;transform:rotate(0)}12.5%{stroke-dashoffset:56.54867px;transform:rotate(0)}12.5001%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(72.5deg)}25%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(72.5deg)}25.0001%{stroke-dashoffset:268.60617px;transform:rotate(270deg)}37.5%{stroke-dashoffset:56.54867px;transform:rotate(270deg)}37.5001%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(161.5deg)}50%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(161.5deg)}50.0001%{stroke-dashoffset:268.60617px;transform:rotate(180deg)}62.5%{stroke-dashoffset:56.54867px;transform:rotate(180deg)}62.5001%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(251.5deg)}75%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(251.5deg)}75.0001%{stroke-dashoffset:268.60617px;transform:rotate(90deg)}87.5%{stroke-dashoffset:56.54867px;transform:rotate(90deg)}87.5001%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(341.5deg)}100%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(341.5deg)}}@keyframes mat-progress-spinner-stroke-rotate-fallback{0%{transform:rotate(0)}25%{transform:rotate(1170deg)}50%{transform:rotate(2340deg)}75%{transform:rotate(3510deg)}100%{transform:rotate(4680deg)}}\"];\nvar RenderType_MatProgressSpinner = i0.ɵcrt({ encapsulation: 2, styles: styles_MatProgressSpinner, data: {} });\nexport { RenderType_MatProgressSpinner as RenderType_MatProgressSpinner };\nfunction View_MatProgressSpinner_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 0, \":svg:circle\", [[\"cx\", \"50%\"], [\"cy\", \"50%\"]], [[1, \"r\", 0], [4, \"animation-name\", null], [4, \"stroke-dashoffset\", \"px\"], [4, \"stroke-dasharray\", \"px\"], [4, \"stroke-width\", \"%\"]], null, null, null, null))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co._circleRadius; var currVal_1 = (\"mat-progress-spinner-stroke-rotate-\" + _co.diameter); var currVal_2 = _co._strokeDashOffset; var currVal_3 = _co._strokeCircumference; var currVal_4 = _co._circleStrokeWidth; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3, currVal_4); }); }\nfunction View_MatProgressSpinner_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 0, \":svg:circle\", [[\"cx\", \"50%\"], [\"cy\", \"50%\"]], [[1, \"r\", 0], [4, \"stroke-dashoffset\", \"px\"], [4, \"stroke-dasharray\", \"px\"], [4, \"stroke-width\", \"%\"]], null, null, null, null))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co._circleRadius; var currVal_1 = _co._strokeDashOffset; var currVal_2 = _co._strokeCircumference; var currVal_3 = _co._circleStrokeWidth; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3); }); }\nexport function View_MatProgressSpinner_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵeld(0, 0, null, null, 5, \":svg:svg\", [[\"focusable\", \"false\"], [\"preserveAspectRatio\", \"xMidYMid meet\"]], [[4, \"width\", \"px\"], [4, \"height\", \"px\"], [1, \"viewBox\", 0]], null, null, null, null)), i0.ɵdid(1, 16384, null, 0, i2.NgSwitch, [], { ngSwitch: [0, \"ngSwitch\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_MatProgressSpinner_1)), i0.ɵdid(3, 278528, null, 0, i2.NgSwitchCase, [i0.ViewContainerRef, i0.TemplateRef, i2.NgSwitch], { ngSwitchCase: [0, \"ngSwitchCase\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_MatProgressSpinner_2)), i0.ɵdid(5, 278528, null, 0, i2.NgSwitchCase, [i0.ViewContainerRef, i0.TemplateRef, i2.NgSwitch], { ngSwitchCase: [0, \"ngSwitchCase\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_3 = (_co.mode === \"indeterminate\"); _ck(_v, 1, 0, currVal_3); var currVal_4 = true; _ck(_v, 3, 0, currVal_4); var currVal_5 = false; _ck(_v, 5, 0, currVal_5); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.diameter; var currVal_1 = _co.diameter; var currVal_2 = _co._viewBox; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2); }); }\nexport function View_MatProgressSpinner_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"mat-progress-spinner\", [[\"class\", \"mat-progress-spinner\"], [\"role\", \"progressbar\"]], [[2, \"_mat-animation-noopable\", null], [4, \"width\", \"px\"], [4, \"height\", \"px\"], [1, \"aria-valuemin\", 0], [1, \"aria-valuemax\", 0], [1, \"aria-valuenow\", 0], [1, \"mode\", 0]], null, null, View_MatProgressSpinner_0, RenderType_MatProgressSpinner)), i0.ɵdid(1, 49152, null, 0, i1.MatProgressSpinner, [i0.ElementRef, i5.Platform, [2, i2.DOCUMENT], [2, i6.ANIMATION_MODULE_TYPE], i1.MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS], null, null)], null, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1)._noopAnimations; var currVal_1 = i0.ɵnov(_v, 1).diameter; var currVal_2 = i0.ɵnov(_v, 1).diameter; var currVal_3 = ((i0.ɵnov(_v, 1).mode === \"determinate\") ? 0 : null); var currVal_4 = ((i0.ɵnov(_v, 1).mode === \"determinate\") ? 100 : null); var currVal_5 = i0.ɵnov(_v, 1).value; var currVal_6 = i0.ɵnov(_v, 1).mode; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3, currVal_4, currVal_5, currVal_6); }); }\nvar MatProgressSpinnerNgFactory = i0.ɵccf(\"mat-progress-spinner\", i1.MatProgressSpinner, View_MatProgressSpinner_Host_0, { color: \"color\", diameter: \"diameter\", strokeWidth: \"strokeWidth\", mode: \"mode\", value: \"value\" }, {}, []);\nexport { MatProgressSpinnerNgFactory as MatProgressSpinnerNgFactory };\nvar styles_MatSpinner = [\".mat-progress-spinner{display:block;position:relative}.mat-progress-spinner svg{position:absolute;transform:rotate(-90deg);top:0;left:0;transform-origin:center;overflow:visible}.mat-progress-spinner circle{fill:transparent;transform-origin:center;transition:stroke-dashoffset 225ms linear}._mat-animation-noopable.mat-progress-spinner circle{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate]{animation:mat-progress-spinner-linear-rotate 2s linear infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate]{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition-property:stroke;animation-duration:4s;animation-timing-function:cubic-bezier(.35,0,.25,1);animation-iteration-count:infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate]{animation:mat-progress-spinner-stroke-rotate-fallback 10s cubic-bezier(.87,.03,.33,1) infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate]{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition-property:stroke}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition:none;animation:none}@keyframes mat-progress-spinner-linear-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes mat-progress-spinner-stroke-rotate-100{0%{stroke-dashoffset:268.60617px;transform:rotate(0)}12.5%{stroke-dashoffset:56.54867px;transform:rotate(0)}12.5001%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(72.5deg)}25%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(72.5deg)}25.0001%{stroke-dashoffset:268.60617px;transform:rotate(270deg)}37.5%{stroke-dashoffset:56.54867px;transform:rotate(270deg)}37.5001%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(161.5deg)}50%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(161.5deg)}50.0001%{stroke-dashoffset:268.60617px;transform:rotate(180deg)}62.5%{stroke-dashoffset:56.54867px;transform:rotate(180deg)}62.5001%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(251.5deg)}75%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(251.5deg)}75.0001%{stroke-dashoffset:268.60617px;transform:rotate(90deg)}87.5%{stroke-dashoffset:56.54867px;transform:rotate(90deg)}87.5001%{stroke-dashoffset:56.54867px;transform:rotateX(180deg) rotate(341.5deg)}100%{stroke-dashoffset:268.60617px;transform:rotateX(180deg) rotate(341.5deg)}}@keyframes mat-progress-spinner-stroke-rotate-fallback{0%{transform:rotate(0)}25%{transform:rotate(1170deg)}50%{transform:rotate(2340deg)}75%{transform:rotate(3510deg)}100%{transform:rotate(4680deg)}}\"];\nvar RenderType_MatSpinner = i0.ɵcrt({ encapsulation: 2, styles: styles_MatSpinner, data: {} });\nexport { RenderType_MatSpinner as RenderType_MatSpinner };\nfunction View_MatSpinner_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 0, \":svg:circle\", [[\"cx\", \"50%\"], [\"cy\", \"50%\"]], [[1, \"r\", 0], [4, \"animation-name\", null], [4, \"stroke-dashoffset\", \"px\"], [4, \"stroke-dasharray\", \"px\"], [4, \"stroke-width\", \"%\"]], null, null, null, null))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co._circleRadius; var currVal_1 = (\"mat-progress-spinner-stroke-rotate-\" + _co.diameter); var currVal_2 = _co._strokeDashOffset; var currVal_3 = _co._strokeCircumference; var currVal_4 = _co._circleStrokeWidth; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3, currVal_4); }); }\nfunction View_MatSpinner_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 0, \":svg:circle\", [[\"cx\", \"50%\"], [\"cy\", \"50%\"]], [[1, \"r\", 0], [4, \"stroke-dashoffset\", \"px\"], [4, \"stroke-dasharray\", \"px\"], [4, \"stroke-width\", \"%\"]], null, null, null, null))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co._circleRadius; var currVal_1 = _co._strokeDashOffset; var currVal_2 = _co._strokeCircumference; var currVal_3 = _co._circleStrokeWidth; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3); }); }\nexport function View_MatSpinner_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵeld(0, 0, null, null, 5, \":svg:svg\", [[\"focusable\", \"false\"], [\"preserveAspectRatio\", \"xMidYMid meet\"]], [[4, \"width\", \"px\"], [4, \"height\", \"px\"], [1, \"viewBox\", 0]], null, null, null, null)), i0.ɵdid(1, 16384, null, 0, i2.NgSwitch, [], { ngSwitch: [0, \"ngSwitch\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_MatSpinner_1)), i0.ɵdid(3, 278528, null, 0, i2.NgSwitchCase, [i0.ViewContainerRef, i0.TemplateRef, i2.NgSwitch], { ngSwitchCase: [0, \"ngSwitchCase\"] }, null), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_MatSpinner_2)), i0.ɵdid(5, 278528, null, 0, i2.NgSwitchCase, [i0.ViewContainerRef, i0.TemplateRef, i2.NgSwitch], { ngSwitchCase: [0, \"ngSwitchCase\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_3 = (_co.mode === \"indeterminate\"); _ck(_v, 1, 0, currVal_3); var currVal_4 = true; _ck(_v, 3, 0, currVal_4); var currVal_5 = false; _ck(_v, 5, 0, currVal_5); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.diameter; var currVal_1 = _co.diameter; var currVal_2 = _co._viewBox; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2); }); }\nexport function View_MatSpinner_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"mat-spinner\", [[\"class\", \"mat-spinner mat-progress-spinner\"], [\"mode\", \"indeterminate\"], [\"role\", \"progressbar\"]], [[2, \"_mat-animation-noopable\", null], [4, \"width\", \"px\"], [4, \"height\", \"px\"]], null, null, View_MatSpinner_0, RenderType_MatSpinner)), i0.ɵdid(1, 49152, null, 0, i1.MatSpinner, [i0.ElementRef, i5.Platform, [2, i2.DOCUMENT], [2, i6.ANIMATION_MODULE_TYPE], i1.MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS], null, null)], null, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1)._noopAnimations; var currVal_1 = i0.ɵnov(_v, 1).diameter; var currVal_2 = i0.ɵnov(_v, 1).diameter; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2); }); }\nvar MatSpinnerNgFactory = i0.ɵccf(\"mat-spinner\", i1.MatSpinner, View_MatSpinner_Host_0, { color: \"color\", diameter: \"diameter\", strokeWidth: \"strokeWidth\", mode: \"mode\", value: \"value\" }, {}, []);\nexport { MatSpinnerNgFactory as MatSpinnerNgFactory };\n","<svg [style.width.px]=\"diameter\" [style.height.px]=\"diameter\" [attr.viewBox]=\"_viewBox\" preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\" [ngSwitch]=\"mode === 'indeterminate'\"><circle *ngSwitchCase=\"true\" cx=\"50%\" cy=\"50%\" [attr.r]=\"_circleRadius\" [style.animation-name]=\"'mat-progress-spinner-stroke-rotate-' + diameter\" [style.stroke-dashoffset.px]=\"_strokeDashOffset\" [style.stroke-dasharray.px]=\"_strokeCircumference\" [style.stroke-width.%]=\"_circleStrokeWidth\"></circle><circle *ngSwitchCase=\"false\" cx=\"50%\" cy=\"50%\" [attr.r]=\"_circleRadius\" [style.stroke-dashoffset.px]=\"_strokeDashOffset\" [style.stroke-dasharray.px]=\"_strokeCircumference\" [style.stroke-width.%]=\"_circleStrokeWidth\"></circle></svg>","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./loading-toast.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../../../../node_modules/@angular/material/progress-spinner/typings/index.ngfactory\";\nimport * as i3 from \"@angular/material/progress-spinner\";\nimport * as i4 from \"@angular/cdk/platform\";\nimport * as i5 from \"@angular/common\";\nimport * as i6 from \"@angular/platform-browser/animations\";\nimport * as i7 from \"../../../../common/core/translations/translate.directive\";\nimport * as i8 from \"../../../../common/core/translations/translations.service\";\nimport * as i9 from \"../../../../common/core/config/settings.service\";\nimport * as i10 from \"./loading-toast.component\";\nimport * as i11 from \"@angular/material/snack-bar\";\nvar styles_LoadingToastComponent = [i0.styles];\nvar RenderType_LoadingToastComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_LoadingToastComponent, data: {} });\nexport { RenderType_LoadingToastComponent as RenderType_LoadingToastComponent };\nexport function View_LoadingToastComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"mat-spinner\", [[\"class\", \"mat-spinner mat-progress-spinner\"], [\"mode\", \"indeterminate\"], [\"role\", \"progressbar\"]], [[2, \"_mat-animation-noopable\", null], [4, \"width\", \"px\"], [4, \"height\", \"px\"]], null, null, i2.View_MatSpinner_0, i2.RenderType_MatSpinner)), i1.ɵdid(1, 49152, null, 0, i3.MatSpinner, [i1.ElementRef, i4.Platform, [2, i5.DOCUMENT], [2, i6.ANIMATION_MODULE_TYPE], i3.MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS], { diameter: [0, \"diameter\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵeld(3, 0, null, null, 2, \"span\", [[\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(4, 4341760, null, 0, i7.TranslateDirective, [i1.ElementRef, i8.Translations, i9.Settings], null, null), (_l()(), i1.ɵted(5, null, [\"\", \"\"]))], function (_ck, _v) { var currVal_3 = 30; _ck(_v, 1, 0, currVal_3); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵnov(_v, 1)._noopAnimations; var currVal_1 = i1.ɵnov(_v, 1).diameter; var currVal_2 = i1.ɵnov(_v, 1).diameter; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2); var currVal_4 = _co.data.message; _ck(_v, 5, 0, currVal_4); }); }\nexport function View_LoadingToastComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"loading-toast\", [], null, null, null, View_LoadingToastComponent_0, RenderType_LoadingToastComponent)), i1.ɵdid(1, 49152, null, 0, i10.LoadingToastComponent, [i11.MAT_SNACK_BAR_DATA], null, null)], null, null); }\nvar LoadingToastComponentNgFactory = i1.ɵccf(\"loading-toast\", i10.LoadingToastComponent, View_LoadingToastComponent_Host_0, {}, {}, []);\nexport { LoadingToastComponentNgFactory as LoadingToastComponentNgFactory };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"loading-toast{display:flex;align-items:center}loading-toast .mat-spinner{margin-right:20px}loading-toast .mat-spinner circle{stroke:#fff}\"];\nexport { styles as styles };\n","<mat-spinner [diameter]=\"30\"></mat-spinner>\r\n<span trans>{{ data.message }}</span>","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport { MatButtonModule, MatDialogModule, MatIconModule, MatProgressBarModule } from '@angular/material';\r\nimport { UploadButtonDirective } from './directives/upload-button.directive';\r\nimport { UploadDropzoneDirective } from './directives/upload-dropzone.directive';\r\nimport {UploadProgressBarComponent} from './upload-progress-bar/upload-progress-bar.component';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n\r\n        // material\r\n        MatDialogModule,\r\n        MatButtonModule,\r\n        MatProgressBarModule,\r\n        MatIconModule,\r\n    ],\r\n    declarations: [\r\n        UploadDropzoneDirective,\r\n        UploadButtonDirective,\r\n        UploadProgressBarComponent,\r\n    ],\r\n    exports: [\r\n        UploadDropzoneDirective,\r\n        UploadButtonDirective,\r\n        UploadProgressBarComponent,\r\n    ],\r\n})\r\nexport class UploadsModule {\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule, Routes } from '@angular/router';\nimport { DriveComponent } from './drive.component';\nimport { EntriesContainerComponent } from './entries/entries-container/entries-container.component';\nimport { LinkPreviewContainerComponent } from './preview/link-preview-container/link-preview-container.component';\nimport { AuthGuard } from 'common/guards/auth-guard.service';\n\nconst dashboardRoutes: Routes = [\n    // shareable links can be accessed by guests\n    {\n        path: 's/:hash',\n        component: LinkPreviewContainerComponent,\n    },\n\n    // main drive routes can only be accessed by logged in users\n    {\n        path: '',\n        component: DriveComponent,\n        canActivate: [AuthGuard],\n        children: [\n            { path: '', component: EntriesContainerComponent},\n            { path: 'shares', component: EntriesContainerComponent},\n            { path: 'search', component: EntriesContainerComponent},\n            { path: 'recent', component: EntriesContainerComponent},\n            { path: 'starred', component: EntriesContainerComponent},\n            { path: 'trash', component: EntriesContainerComponent},\n            { path: 'folders/:hash', component: EntriesContainerComponent},\n        ]\n    }\n];\n\n@NgModule({\n    imports: [\n        CommonModule,\n        RouterModule.forChild(dashboardRoutes)\n    ],\n    exports: [\n        RouterModule\n    ],\n})\nexport class DriveRoutingModule {}\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TextPreviewComponent } from './text-preview/text-preview.component';\r\nimport { AVAILABLE_PREVIEWS, DefaultPreviews } from './available-previews';\r\nimport { PreviewContainerComponent } from './preview-container/preview-container.component';\r\nimport { PortalModule } from '@angular/cdk/portal';\r\nimport { VideoPreviewComponent } from './video-preview/video-preview.component';\r\nimport { ImagePreviewComponent } from './image-preview/image-preview.component';\r\nimport { PdfPreviewComponent } from './pdf-preview/pdf-preview.component';\r\nimport { DefaultPreviewComponent } from './default-preview/default-preview.component';\r\nimport { MatButtonModule } from '@angular/material';\r\nimport { AudioPreviewComponent } from './audio-preview/audio-preview.component';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n\r\n        // material\r\n        PortalModule,\r\n        MatButtonModule,\r\n    ],\r\n    exports: [\r\n        PreviewContainerComponent,\r\n    ],\r\n    declarations: [\r\n        PreviewContainerComponent,\r\n        TextPreviewComponent,\r\n        VideoPreviewComponent,\r\n        ImagePreviewComponent,\r\n        PdfPreviewComponent,\r\n        DefaultPreviewComponent,\r\n        AudioPreviewComponent\r\n    ],\r\n    entryComponents: [\r\n        TextPreviewComponent,\r\n        VideoPreviewComponent,\r\n        ImagePreviewComponent,\r\n        PdfPreviewComponent,\r\n        DefaultPreviewComponent,\r\n        AudioPreviewComponent,\r\n    ],\r\n    providers: [\r\n        {provide: AVAILABLE_PREVIEWS, useClass: DefaultPreviews},\r\n    ]\r\n})\r\nexport class FilePreviewModule {\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SharingPermissionsButtonComponent } from './sharing-permissions-button/sharing-permissions-button.component';\nimport { ShareDialogComponent } from './share-dialog/share-dialog.component';\nimport { EntriesAccessTableComponent } from './entries-access-table/entries-access-table.component';\nimport {\n    MatButtonModule, MatCheckboxModule, MatDialogModule, MatIconModule, MatMenuModule, MatSlideToggleModule, MatTabsModule, MatTooltipModule\n} from '@angular/material';\nimport { ChipInputModule } from 'common/core/ui/chip-input/chip-input.module';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { LinkOptionsComponent } from './links/link-options/link-options.component';\nimport { UiModule } from 'common/core/ui/ui.module';\nimport { ShareLinkDialogComponent } from './share-link-dialog/share-link-dialog.component';\nimport { NoSharedEntriesComponent } from './no-shared-entries/no-shared-entries.component';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        ReactiveFormsModule,\n        UiModule,\n\n        // material\n        MatSlideToggleModule,\n        MatTabsModule,\n        MatDialogModule,\n        ChipInputModule,\n        MatIconModule,\n        MatMenuModule,\n        MatButtonModule,\n        MatTooltipModule,\n        MatCheckboxModule,\n    ],\n    declarations: [\n        ShareDialogComponent,\n        EntriesAccessTableComponent,\n        SharingPermissionsButtonComponent,\n        LinkOptionsComponent,\n        ShareLinkDialogComponent,\n        NoSharedEntriesComponent,\n    ],\n    entryComponents: [\n        ShareDialogComponent,\n        ShareLinkDialogComponent,\n    ],\n    exports: [\n        NoSharedEntriesComponent,\n    ]\n})\nexport class SharingModule {\n}\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./drive.module\";\nimport * as i2 from \"../../../node_modules/@angular/router/router.ngfactory\";\nimport * as i3 from \"../../../node_modules/@angular/material/dialog/typings/index.ngfactory\";\nimport * as i4 from \"../../common/core/ui/confirm-modal/confirm-modal.component.ngfactory\";\nimport * as i5 from \"../../../node_modules/@angular/material/snack-bar/typings/index.ngfactory\";\nimport * as i6 from \"../../../node_modules/@angular/material/tooltip/typings/index.ngfactory\";\nimport * as i7 from \"./preview/link-preview-container/link-preview-container.component.ngfactory\";\nimport * as i8 from \"./drive.component.ngfactory\";\nimport * as i9 from \"./entries/entries-container/entries-container.component.ngfactory\";\nimport * as i10 from \"../../common/file-preview/text-preview/text-preview.component.ngfactory\";\nimport * as i11 from \"../../common/file-preview/video-preview/video-preview.component.ngfactory\";\nimport * as i12 from \"../../common/file-preview/image-preview/image-preview.component.ngfactory\";\nimport * as i13 from \"../../common/file-preview/pdf-preview/pdf-preview.component.ngfactory\";\nimport * as i14 from \"../../common/file-preview/default-preview/default-preview.component.ngfactory\";\nimport * as i15 from \"../../common/file-preview/audio-preview/audio-preview.component.ngfactory\";\nimport * as i16 from \"./sharing/share-dialog/share-dialog.component.ngfactory\";\nimport * as i17 from \"./sharing/share-link-dialog/share-link-dialog.component.ngfactory\";\nimport * as i18 from \"./context-actions/components/drive-context-menu/drive-context-menu.component.ngfactory\";\nimport * as i19 from \"./folders/components/crupdate-folder-dialog/crupdate-folder-dialog.component.ngfactory\";\nimport * as i20 from \"./entries/rename-entry-dialog/rename-entry-dialog.component.ngfactory\";\nimport * as i21 from \"./uploads/uploads-panel/uploads-panel.component.ngfactory\";\nimport * as i22 from \"./entries/move-entries-dialog/move-entries-dialog.component.ngfactory\";\nimport * as i23 from \"./preview/file-preview-overlay/file-preview-overlay.component.ngfactory\";\nimport * as i24 from \"./messages/loading-toast/loading-toast.component.ngfactory\";\nimport * as i25 from \"@angular/common\";\nimport * as i26 from \"@angular/forms\";\nimport * as i27 from \"@angular/common/http\";\nimport * as i28 from \"@angular/cdk/overlay\";\nimport * as i29 from \"@angular/cdk/bidi\";\nimport * as i30 from \"@angular/material/dialog\";\nimport * as i31 from \"../../common/core/ui/dialogs/modal.service\";\nimport * as i32 from \"@angular/material/menu\";\nimport * as i33 from \"@angular/cdk/observers\";\nimport * as i34 from \"@angular/material/tooltip\";\nimport * as i35 from \"../../common/core/ui/breakpoints.service\";\nimport * as i36 from \"@angular/cdk/layout\";\nimport * as i37 from \"../../common/file-preview/available-previews\";\nimport * as i38 from \"@angular/platform-browser\";\nimport * as i39 from \"@angular/material/core\";\nimport * as i40 from \"@angular/cdk/a11y\";\nimport * as i41 from \"@angular/cdk/platform\";\nimport * as i42 from \"@angular/cdk/tree\";\nimport * as i43 from \"@angular/material/autocomplete\";\nimport * as i44 from \"@angular/material/select\";\nimport * as i45 from \"@angular/material/sort\";\nimport * as i46 from \"@ngxs/store\";\nimport * as i47 from \"./upload-input-config\";\nimport * as i48 from \"../../common/core/config/settings.service\";\nimport * as i49 from \"./state/drive-state\";\nimport * as i50 from \"./folders/api/folders-api.service\";\nimport * as i51 from \"./drive-entry-api.service\";\nimport * as i52 from \"@angular/router\";\nimport * as i53 from \"./drive-urls.service\";\nimport * as i54 from \"../../common/uploads/upload-queue/upload-queue.service\";\nimport * as i55 from \"../../common/core/services/local-storage.service\";\nimport * as i56 from \"./uploads/drive-upload-validator\";\nimport * as i57 from \"./sharing/state/share-dialog.state\";\nimport * as i58 from \"./sharing/shares-api.service\";\nimport * as i59 from \"./sharing/links/share-link.state\";\nimport * as i60 from \"./sharing/links/shareable-links-api.service\";\nimport * as i61 from \"../../common/core/ui/context-menu/context-menu.service\";\nimport * as i62 from \"../../common/core/ui/overlay-panel/overlay-panel.service\";\nimport * as i63 from \"../../common/file-preview/preview-files.service\";\nimport * as i64 from \"../../common/core/ui/toast.service\";\nimport * as i65 from \"../../common/core/translations/translations.service\";\nimport * as i66 from \"@angular/material/snack-bar\";\nimport * as i67 from \"./state/handlers/overlay-handler\";\nimport * as i68 from \"./state/handlers/donwlod-handler\";\nimport * as i69 from \"./state/handlers/toast-handler\";\nimport * as i70 from \"./state/handlers/upload-panel-handler\";\nimport * as i71 from \"../../common/auth/current-user\";\nimport * as i72 from \"./state/handlers/dialog-handler\";\nimport * as i73 from \"./state/handlers/reset-scroll-handler\";\nimport * as i74 from \"./interactions/drive-dom-cache.service\";\nimport * as i75 from \"./state/handlers/page-change-handler\";\nimport * as i76 from \"./state/handlers/page-load-handler\";\nimport * as i77 from \"./state/handlers/remove-star-handler\";\nimport * as i78 from \"../../common/core/ui/custom-scrollbar/custom-scrollbar.module\";\nimport * as i79 from \"@angular/cdk/portal\";\nimport * as i80 from \"@angular/cdk/scrolling\";\nimport * as i81 from \"@angular/material/button\";\nimport * as i82 from \"@angular/material/icon\";\nimport * as i83 from \"../../common/core/ui/confirm-modal/confirm-modal.module\";\nimport * as i84 from \"../../common/core/translations/translations.module\";\nimport * as i85 from \"@angular/material/checkbox\";\nimport * as i86 from \"../../common/core/ui/ui.module\";\nimport * as i87 from \"@angular/material/progress-bar\";\nimport * as i88 from \"../../common/uploads/uploads.module\";\nimport * as i89 from \"./drive-routing.module\";\nimport * as i90 from \"../../common/file-preview/file-preview.module\";\nimport * as i91 from \"@angular/material/slide-toggle\";\nimport * as i92 from \"@angular/material/tabs\";\nimport * as i93 from \"@angular/material/chips\";\nimport * as i94 from \"../../common/core/ui/chip-input/chip-input.module\";\nimport * as i95 from \"./sharing/sharing.module\";\nimport * as i96 from \"@angular/material/sidenav\";\nimport * as i97 from \"@angular/material/tree\";\nimport * as i98 from \"@angular/material/form-field\";\nimport * as i99 from \"@angular/cdk/table\";\nimport * as i100 from \"@angular/material/table\";\nimport * as i101 from \"@angular/material/progress-spinner\";\nimport * as i102 from \"./preview/link-preview-container/link-preview-container.component\";\nimport * as i103 from \"./drive.component\";\nimport * as i104 from \"../../common/guards/auth-guard.service\";\nimport * as i105 from \"./entries/entries-container/entries-container.component\";\nimport * as i106 from \"@angular/cdk/keycodes\";\nimport * as i107 from \"../../common/core/ui/context-menu/available-context-menus\";\nvar DriveModuleNgFactory = i0.ɵcmf(i1.DriveModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, [i2.ɵEmptyOutletComponentNgFactory, i3.MatDialogContainerNgFactory, i4.ConfirmModalComponentNgFactory, i5.MatSnackBarContainerNgFactory, i5.SimpleSnackBarNgFactory, i6.TooltipComponentNgFactory, i7.LinkPreviewContainerComponentNgFactory, i8.DriveComponentNgFactory, i9.EntriesContainerComponentNgFactory, i10.TextPreviewComponentNgFactory, i11.VideoPreviewComponentNgFactory, i12.ImagePreviewComponentNgFactory, i13.PdfPreviewComponentNgFactory, i14.DefaultPreviewComponentNgFactory, i15.AudioPreviewComponentNgFactory, i16.ShareDialogComponentNgFactory, i17.ShareLinkDialogComponentNgFactory, i18.DriveContextMenuComponentNgFactory, i19.CrupdateFolderDialogComponentNgFactory, i20.RenameEntryDialogComponentNgFactory, i21.UploadsPanelComponentNgFactory, i22.MoveEntriesDialogComponentNgFactory, i23.FilePreviewOverlayComponentNgFactory, i24.LoadingToastComponentNgFactory]], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i25.NgLocalization, i25.NgLocaleLocalization, [i0.LOCALE_ID, [2, i25.ɵangular_packages_common_common_a]]), i0.ɵmpd(4608, i26.ɵangular_packages_forms_forms_i, i26.ɵangular_packages_forms_forms_i, []), i0.ɵmpd(4608, i26.FormBuilder, i26.FormBuilder, []), i0.ɵmpd(4608, i27.HttpXsrfTokenExtractor, i27.ɵangular_packages_common_http_http_g, [i25.DOCUMENT, i0.PLATFORM_ID, i27.ɵangular_packages_common_http_http_e]), i0.ɵmpd(4608, i27.ɵangular_packages_common_http_http_h, i27.ɵangular_packages_common_http_http_h, [i27.HttpXsrfTokenExtractor, i27.ɵangular_packages_common_http_http_f]), i0.ɵmpd(5120, i27.HTTP_INTERCEPTORS, function (p0_0) { return [p0_0]; }, [i27.ɵangular_packages_common_http_http_h]), i0.ɵmpd(4608, i27.ɵangular_packages_common_http_http_d, i27.ɵangular_packages_common_http_http_d, []), i0.ɵmpd(6144, i27.XhrFactory, null, [i27.ɵangular_packages_common_http_http_d]), i0.ɵmpd(4608, i27.HttpXhrBackend, i27.HttpXhrBackend, [i27.XhrFactory]), i0.ɵmpd(6144, i27.HttpBackend, null, [i27.HttpXhrBackend]), i0.ɵmpd(4608, i27.HttpHandler, i27.ɵHttpInterceptingHandler, [i27.HttpBackend, i0.Injector]), i0.ɵmpd(4608, i27.HttpClient, i27.HttpClient, [i27.HttpHandler]), i0.ɵmpd(4608, i28.Overlay, i28.Overlay, [i28.ScrollStrategyOptions, i28.OverlayContainer, i0.ComponentFactoryResolver, i28.OverlayPositionBuilder, i28.OverlayKeyboardDispatcher, i0.Injector, i0.NgZone, i25.DOCUMENT, i29.Directionality]), i0.ɵmpd(5120, i28.ɵc, i28.ɵd, [i28.Overlay]), i0.ɵmpd(5120, i30.MAT_DIALOG_SCROLL_STRATEGY, i30.MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY, [i28.Overlay]), i0.ɵmpd(4608, i30.MatDialog, i30.MatDialog, [i28.Overlay, i0.Injector, [2, i25.Location], [2, i30.MAT_DIALOG_DEFAULT_OPTIONS], i30.MAT_DIALOG_SCROLL_STRATEGY, [3, i30.MatDialog], i28.OverlayContainer]), i0.ɵmpd(4608, i31.Modal, i31.Modal, [i30.MatDialog]), i0.ɵmpd(5120, i32.MAT_MENU_SCROLL_STRATEGY, i32.ɵd23, [i28.Overlay]), i0.ɵmpd(4608, i33.MutationObserverFactory, i33.MutationObserverFactory, []), i0.ɵmpd(5120, i34.MAT_TOOLTIP_SCROLL_STRATEGY, i34.MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY, [i28.Overlay]), i0.ɵmpd(4608, i35.BreakpointsService, i35.BreakpointsService, [i36.BreakpointObserver]), i0.ɵmpd(4608, i37.AVAILABLE_PREVIEWS, i37.DefaultPreviews, []), i0.ɵmpd(4608, i38.HAMMER_GESTURE_CONFIG, i39.GestureConfig, [[2, i39.MAT_HAMMER_OPTIONS], [2, i39.MatCommonModule]]), i0.ɵmpd(4608, i39.ErrorStateMatcher, i39.ErrorStateMatcher, []), i0.ɵmpd(135680, i40.FocusMonitor, i40.FocusMonitor, [i0.NgZone, i41.Platform]), i0.ɵmpd(4608, i42.CdkTreeNodeDef, i42.CdkTreeNodeDef, [i0.TemplateRef]), i0.ɵmpd(5120, i43.MAT_AUTOCOMPLETE_SCROLL_STRATEGY, i43.MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY, [i28.Overlay]), i0.ɵmpd(5120, i44.MAT_SELECT_SCROLL_STRATEGY, i44.MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY, [i28.Overlay]), i0.ɵmpd(5120, i45.MatSortHeaderIntl, i45.MAT_SORT_HEADER_INTL_PROVIDER_FACTORY, [[3, i45.MatSortHeaderIntl]]), i0.ɵmpd(4608, i46.ɵp, i46.ɵp, [[3, i46.ɵp], [2, i46.NGXS_PLUGINS]]), i0.ɵmpd(5120, i47.DRIVE_UPLOAD_INPUT_CONFIG, i1.ɵ1, [i48.Settings]), i0.ɵmpd(4608, i49.DriveState, i49.DriveState, [i50.FoldersApiService, i51.DriveEntryApiService, i52.Router, i53.DriveUrlsService, i54.UploadQueueService, i46.Store, i55.LocalStorage, i56.DriveUploadValidator, i47.DRIVE_UPLOAD_INPUT_CONFIG]), i0.ɵmpd(4608, i57.ShareDialogState, i57.ShareDialogState, [i46.Store, i58.SharesApiService]), i0.ɵmpd(4608, i59.ShareLinkState, i59.ShareLinkState, [i46.Store, i48.Settings, i60.ShareableLinksApiService]), i0.ɵmpd(4608, i61.ContextMenu, i61.ContextMenu, [i52.Router, i0.NgZone, i0.Injector, i0.ComponentFactoryResolver, i28.Overlay]), i0.ɵmpd(4608, i62.OverlayPanel, i62.OverlayPanel, [i28.Overlay, i35.BreakpointsService, i0.Injector]), i0.ɵmpd(4608, i63.PreviewFilesService, i63.PreviewFilesService, [i37.AVAILABLE_PREVIEWS, i0.Injector]), i0.ɵmpd(4608, i64.Toast, i64.Toast, [i48.Settings, i65.Translations, i66.MatSnackBar]), i0.ɵmpd(4608, i67.OverlayHandler, i67.OverlayHandler, [i46.Store, i46.Actions, i62.OverlayPanel]), i0.ɵmpd(4608, i68.DownloadHandler, i68.DownloadHandler, [i46.Actions, i46.Store, i48.Settings]), i0.ɵmpd(4608, i69.ToastHandler, i69.ToastHandler, [i46.Actions, i64.Toast, i46.Store, i52.Router]), i0.ɵmpd(4608, i70.UploadPanelHandler, i70.UploadPanelHandler, [i46.Actions, i71.CurrentUser, i62.OverlayPanel]), i0.ɵmpd(4608, i72.DialogHandler, i72.DialogHandler, [i46.Actions, i31.Modal, i0.NgZone, i46.Store]), i0.ɵmpd(4608, i73.ResetScrollHandler, i73.ResetScrollHandler, [i46.Actions, i74.DriveDomCacheService]), i0.ɵmpd(4608, i75.PageChangeHandler, i75.PageChangeHandler, [i46.Store]), i0.ɵmpd(4608, i76.PageLoadHandler, i76.PageLoadHandler, [i46.Store, i46.Actions, i71.CurrentUser]), i0.ɵmpd(4608, i77.RemoveStarHandler, i77.RemoveStarHandler, [i46.Actions, i46.Store]), i0.ɵmpd(1073742336, i25.CommonModule, i25.CommonModule, []), i0.ɵmpd(1073742336, i26.ɵangular_packages_forms_forms_bb, i26.ɵangular_packages_forms_forms_bb, []), i0.ɵmpd(1073742336, i26.FormsModule, i26.FormsModule, []), i0.ɵmpd(1073742336, i26.ReactiveFormsModule, i26.ReactiveFormsModule, []), i0.ɵmpd(1073742336, i52.RouterModule, i52.RouterModule, [[2, i52.ɵangular_packages_router_router_a], [2, i52.Router]]), i0.ɵmpd(1073742336, i27.HttpClientXsrfModule, i27.HttpClientXsrfModule, []), i0.ɵmpd(1073742336, i27.HttpClientModule, i27.HttpClientModule, []), i0.ɵmpd(1073742336, i78.CustomScrollbarModule, i78.CustomScrollbarModule, []), i0.ɵmpd(1073742336, i29.BidiModule, i29.BidiModule, []), i0.ɵmpd(1073742336, i79.PortalModule, i79.PortalModule, []), i0.ɵmpd(1073742336, i41.PlatformModule, i41.PlatformModule, []), i0.ɵmpd(1073742336, i80.ScrollDispatchModule, i80.ScrollDispatchModule, []), i0.ɵmpd(1073742336, i28.OverlayModule, i28.OverlayModule, []), i0.ɵmpd(1073742336, i39.MatCommonModule, i39.MatCommonModule, [[2, i39.MATERIAL_SANITY_CHECKS]]), i0.ɵmpd(1073742336, i30.MatDialogModule, i30.MatDialogModule, []), i0.ɵmpd(1073742336, i39.MatRippleModule, i39.MatRippleModule, []), i0.ɵmpd(1073742336, i81.MatButtonModule, i81.MatButtonModule, []), i0.ɵmpd(1073742336, i82.MatIconModule, i82.MatIconModule, []), i0.ɵmpd(1073742336, i83.ConfirmModalModule, i83.ConfirmModalModule, []), i0.ɵmpd(1073742336, i84.TranslationsModule, i84.TranslationsModule, []), i0.ɵmpd(1073742336, i66.MatSnackBarModule, i66.MatSnackBarModule, []), i0.ɵmpd(1073742336, i32.MatMenuModule, i32.MatMenuModule, []), i0.ɵmpd(1073742336, i33.ObserversModule, i33.ObserversModule, []), i0.ɵmpd(1073742336, i85.MatCheckboxModule, i85.MatCheckboxModule, []), i0.ɵmpd(1073742336, i40.A11yModule, i40.A11yModule, []), i0.ɵmpd(1073742336, i34.MatTooltipModule, i34.MatTooltipModule, []), i0.ɵmpd(1073742336, i86.UiModule, i86.UiModule, [i82.MatIconRegistry, i38.DomSanitizer, i48.Settings]), i0.ɵmpd(1073742336, i87.MatProgressBarModule, i87.MatProgressBarModule, []), i0.ɵmpd(1073742336, i88.UploadsModule, i88.UploadsModule, []), i0.ɵmpd(1073742336, i89.DriveRoutingModule, i89.DriveRoutingModule, []), i0.ɵmpd(1073742336, i90.FilePreviewModule, i90.FilePreviewModule, []), i0.ɵmpd(1073742336, i91.MatSlideToggleModule, i91.MatSlideToggleModule, []), i0.ɵmpd(1073742336, i92.MatTabsModule, i92.MatTabsModule, []), i0.ɵmpd(1073742336, i93.MatChipsModule, i93.MatChipsModule, []), i0.ɵmpd(1073742336, i94.ChipInputModule, i94.ChipInputModule, []), i0.ɵmpd(1073742336, i95.SharingModule, i95.SharingModule, []), i0.ɵmpd(1073742336, i96.MatSidenavModule, i96.MatSidenavModule, []), i0.ɵmpd(1073742336, i42.CdkTreeModule, i42.CdkTreeModule, []), i0.ɵmpd(1073742336, i97.MatTreeModule, i97.MatTreeModule, []), i0.ɵmpd(1073742336, i39.MatPseudoCheckboxModule, i39.MatPseudoCheckboxModule, []), i0.ɵmpd(1073742336, i39.MatOptionModule, i39.MatOptionModule, []), i0.ɵmpd(1073742336, i43.MatAutocompleteModule, i43.MatAutocompleteModule, []), i0.ɵmpd(1073742336, i98.MatFormFieldModule, i98.MatFormFieldModule, []), i0.ɵmpd(1073742336, i44.MatSelectModule, i44.MatSelectModule, []), i0.ɵmpd(1073742336, i99.CdkTableModule, i99.CdkTableModule, []), i0.ɵmpd(1073742336, i100.MatTableModule, i100.MatTableModule, []), i0.ɵmpd(1073742336, i45.MatSortModule, i45.MatSortModule, []), i0.ɵmpd(1073742336, i101.MatProgressSpinnerModule, i101.MatProgressSpinnerModule, []), i0.ɵmpd(512, i46.ɵk, i46.ɵk, [i0.Injector, [3, i46.ɵk], i46.ɵg, i46.ɵl, i46.ɵn]), i0.ɵmpd(1024, i46.ɵi, function () { return [[i49.DriveState, i57.ShareDialogState, i59.ShareLinkState]]; }, []), i0.ɵmpd(1073742336, i46.ɵb, i46.ɵb, [i46.Store, i46.ɵo, i46.ɵk, [2, i46.ɵi]]), i0.ɵmpd(1073742336, i1.DriveModule, i1.DriveModule, [i0.Injector]), i0.ɵmpd(256, i27.ɵangular_packages_common_http_http_e, \"XSRF-TOKEN\", []), i0.ɵmpd(256, i27.ɵangular_packages_common_http_http_f, \"X-XSRF-TOKEN\", []), i0.ɵmpd(1024, i52.ROUTES, function () { return [[{ path: \"s/:hash\", component: i102.LinkPreviewContainerComponent }, { path: \"\", component: i103.DriveComponent, canActivate: [i104.AuthGuard], children: [{ path: \"\", component: i105.EntriesContainerComponent }, { path: \"shares\", component: i105.EntriesContainerComponent }, { path: \"search\", component: i105.EntriesContainerComponent }, { path: \"recent\", component: i105.EntriesContainerComponent }, { path: \"starred\", component: i105.EntriesContainerComponent }, { path: \"trash\", component: i105.EntriesContainerComponent }, { path: \"folders/:hash\", component: i105.EntriesContainerComponent }] }]]; }, []), i0.ɵmpd(256, i93.MAT_CHIPS_DEFAULT_OPTIONS, { separatorKeyCodes: [i106.ENTER] }, []), i0.ɵmpd(1024, i107.AVAILABLE_CONTEXT_MENUS, function () { return [i1.ɵ0]; }, [])]); });\nexport { DriveModuleNgFactory as DriveModuleNgFactory };\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nmodule.exports = baseTimes;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var copyObject = require('./_copyObject'),\n    getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ChipInputComponent } from './chip-input.component';\r\nimport { MatChipsModule, MatIconModule } from '@angular/material';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        MatChipsModule,\r\n        MatIconModule,\r\n        ReactiveFormsModule,\r\n    ],\r\n    declarations: [\r\n        ChipInputComponent\r\n    ],\r\n    exports: [\r\n        ChipInputComponent\r\n    ]\r\n})\r\nexport class ChipInputModule {\r\n}\r\n","var copyObject = require('./_copyObject'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","var listCacheClear = require('./_listCacheClear'),\n    listCacheDelete = require('./_listCacheDelete'),\n    listCacheGet = require('./_listCacheGet'),\n    listCacheHas = require('./_listCacheHas'),\n    listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (comparator(value, array[index])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n  return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { __extends } from 'tslib';\nimport { Observable, of, Subject } from 'rxjs';\nimport { Injectable, defineInjectable } from '@angular/core';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * @abstract\n * @template T\n */\nvar  /**\n * @abstract\n * @template T\n */\nDataSource = /** @class */ (function () {\n    function DataSource() {\n    }\n    return DataSource;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * DataSource wrapper for a native array.\n * @template T\n */\nvar  /**\n * DataSource wrapper for a native array.\n * @template T\n */\nArrayDataSource = /** @class */ (function (_super) {\n    __extends(ArrayDataSource, _super);\n    function ArrayDataSource(_data) {\n        var _this = _super.call(this) || this;\n        _this._data = _data;\n        return _this;\n    }\n    /**\n     * @return {?}\n     */\n    ArrayDataSource.prototype.connect = /**\n     * @return {?}\n     */\n    function () {\n        return this._data instanceof Observable ? this._data : of(this._data);\n    };\n    /**\n     * @return {?}\n     */\n    ArrayDataSource.prototype.disconnect = /**\n     * @return {?}\n     */\n    function () { };\n    return ArrayDataSource;\n}(DataSource));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Class to be used to power selecting one or more options from a list.\n * @template T\n */\nvar  /**\n * Class to be used to power selecting one or more options from a list.\n * @template T\n */\nSelectionModel = /** @class */ (function () {\n    function SelectionModel(_multiple, initiallySelectedValues, _emitChanges) {\n        if (_multiple === void 0) { _multiple = false; }\n        if (_emitChanges === void 0) { _emitChanges = true; }\n        var _this = this;\n        this._multiple = _multiple;\n        this._emitChanges = _emitChanges;\n        /**\n         * Currently-selected values.\n         */\n        this._selection = new Set();\n        /**\n         * Keeps track of the deselected options that haven't been emitted by the change event.\n         */\n        this._deselectedToEmit = [];\n        /**\n         * Keeps track of the selected options that haven't been emitted by the change event.\n         */\n        this._selectedToEmit = [];\n        /**\n         * Event emitted when the value has changed.\n         */\n        this.changed = this._emitChanges ? new Subject() : null;\n        /**\n         * Event emitted when the value has changed.\n         * @deprecated Use `changed` instead.\n         * \\@breaking-change 8.0.0 To be changed to `changed`\n         */\n        this.onChange = this.changed;\n        if (initiallySelectedValues && initiallySelectedValues.length) {\n            if (_multiple) {\n                initiallySelectedValues.forEach(function (value) { return _this._markSelected(value); });\n            }\n            else {\n                this._markSelected(initiallySelectedValues[0]);\n            }\n            // Clear the array in order to avoid firing the change event for preselected values.\n            this._selectedToEmit.length = 0;\n        }\n    }\n    Object.defineProperty(SelectionModel.prototype, \"selected\", {\n        /** Selected values. */\n        get: /**\n         * Selected values.\n         * @return {?}\n         */\n        function () {\n            if (!this._selected) {\n                this._selected = Array.from(this._selection.values());\n            }\n            return this._selected;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * Selects a value or an array of values.\n     */\n    /**\n     * Selects a value or an array of values.\n     * @param {...?} values\n     * @return {?}\n     */\n    SelectionModel.prototype.select = /**\n     * Selects a value or an array of values.\n     * @param {...?} values\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        var values = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            values[_i] = arguments[_i];\n        }\n        this._verifyValueAssignment(values);\n        values.forEach(function (value) { return _this._markSelected(value); });\n        this._emitChangeEvent();\n    };\n    /**\n     * Deselects a value or an array of values.\n     */\n    /**\n     * Deselects a value or an array of values.\n     * @param {...?} values\n     * @return {?}\n     */\n    SelectionModel.prototype.deselect = /**\n     * Deselects a value or an array of values.\n     * @param {...?} values\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        var values = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            values[_i] = arguments[_i];\n        }\n        this._verifyValueAssignment(values);\n        values.forEach(function (value) { return _this._unmarkSelected(value); });\n        this._emitChangeEvent();\n    };\n    /**\n     * Toggles a value between selected and deselected.\n     */\n    /**\n     * Toggles a value between selected and deselected.\n     * @param {?} value\n     * @return {?}\n     */\n    SelectionModel.prototype.toggle = /**\n     * Toggles a value between selected and deselected.\n     * @param {?} value\n     * @return {?}\n     */\n    function (value) {\n        this.isSelected(value) ? this.deselect(value) : this.select(value);\n    };\n    /**\n     * Clears all of the selected values.\n     */\n    /**\n     * Clears all of the selected values.\n     * @return {?}\n     */\n    SelectionModel.prototype.clear = /**\n     * Clears all of the selected values.\n     * @return {?}\n     */\n    function () {\n        this._unmarkAll();\n        this._emitChangeEvent();\n    };\n    /**\n     * Determines whether a value is selected.\n     */\n    /**\n     * Determines whether a value is selected.\n     * @param {?} value\n     * @return {?}\n     */\n    SelectionModel.prototype.isSelected = /**\n     * Determines whether a value is selected.\n     * @param {?} value\n     * @return {?}\n     */\n    function (value) {\n        return this._selection.has(value);\n    };\n    /**\n     * Determines whether the model does not have a value.\n     */\n    /**\n     * Determines whether the model does not have a value.\n     * @return {?}\n     */\n    SelectionModel.prototype.isEmpty = /**\n     * Determines whether the model does not have a value.\n     * @return {?}\n     */\n    function () {\n        return this._selection.size === 0;\n    };\n    /**\n     * Determines whether the model has a value.\n     */\n    /**\n     * Determines whether the model has a value.\n     * @return {?}\n     */\n    SelectionModel.prototype.hasValue = /**\n     * Determines whether the model has a value.\n     * @return {?}\n     */\n    function () {\n        return !this.isEmpty();\n    };\n    /**\n     * Sorts the selected values based on a predicate function.\n     */\n    /**\n     * Sorts the selected values based on a predicate function.\n     * @param {?=} predicate\n     * @return {?}\n     */\n    SelectionModel.prototype.sort = /**\n     * Sorts the selected values based on a predicate function.\n     * @param {?=} predicate\n     * @return {?}\n     */\n    function (predicate) {\n        if (this._multiple && this.selected) {\n            /** @type {?} */ ((this._selected)).sort(predicate);\n        }\n    };\n    /**\n     * Gets whether multiple values can be selected.\n     */\n    /**\n     * Gets whether multiple values can be selected.\n     * @return {?}\n     */\n    SelectionModel.prototype.isMultipleSelection = /**\n     * Gets whether multiple values can be selected.\n     * @return {?}\n     */\n    function () {\n        return this._multiple;\n    };\n    /**\n     * Emits a change event and clears the records of selected and deselected values.\n     * @return {?}\n     */\n    SelectionModel.prototype._emitChangeEvent = /**\n     * Emits a change event and clears the records of selected and deselected values.\n     * @return {?}\n     */\n    function () {\n        // Clear the selected values so they can be re-cached.\n        this._selected = null;\n        if (this._selectedToEmit.length || this._deselectedToEmit.length) {\n            if (this.changed) {\n                this.changed.next({\n                    source: this,\n                    added: this._selectedToEmit,\n                    removed: this._deselectedToEmit\n                });\n            }\n            this._deselectedToEmit = [];\n            this._selectedToEmit = [];\n        }\n    };\n    /**\n     * Selects a value.\n     * @param {?} value\n     * @return {?}\n     */\n    SelectionModel.prototype._markSelected = /**\n     * Selects a value.\n     * @param {?} value\n     * @return {?}\n     */\n    function (value) {\n        if (!this.isSelected(value)) {\n            if (!this._multiple) {\n                this._unmarkAll();\n            }\n            this._selection.add(value);\n            if (this._emitChanges) {\n                this._selectedToEmit.push(value);\n            }\n        }\n    };\n    /**\n     * Deselects a value.\n     * @param {?} value\n     * @return {?}\n     */\n    SelectionModel.prototype._unmarkSelected = /**\n     * Deselects a value.\n     * @param {?} value\n     * @return {?}\n     */\n    function (value) {\n        if (this.isSelected(value)) {\n            this._selection.delete(value);\n            if (this._emitChanges) {\n                this._deselectedToEmit.push(value);\n            }\n        }\n    };\n    /**\n     * Clears out the selected values.\n     * @return {?}\n     */\n    SelectionModel.prototype._unmarkAll = /**\n     * Clears out the selected values.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        if (!this.isEmpty()) {\n            this._selection.forEach(function (value) { return _this._unmarkSelected(value); });\n        }\n    };\n    /**\n     * Verifies the value assignment and throws an error if the specified value array is\n     * including multiple values while the selection model is not supporting multiple values.\n     * @param {?} values\n     * @return {?}\n     */\n    SelectionModel.prototype._verifyValueAssignment = /**\n     * Verifies the value assignment and throws an error if the specified value array is\n     * including multiple values while the selection model is not supporting multiple values.\n     * @param {?} values\n     * @return {?}\n     */\n    function (values) {\n        if (values.length > 1 && !this._multiple) {\n            throw getMultipleValuesInSingleSelectionError();\n        }\n    };\n    return SelectionModel;\n}());\n/**\n * Returns an error that reports that multiple values are passed into a selection model\n * with a single value.\n * @return {?}\n */\nfunction getMultipleValuesInSingleSelectionError() {\n    return Error('Cannot pass multiple values into SelectionModel with single-value mode.');\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Class to coordinate unique selection based on name.\n * Intended to be consumed as an Angular service.\n * This service is needed because native radio change events are only fired on the item currently\n * being selected, and we still need to uncheck the previous selection.\n *\n * This service does not *store* any IDs and names because they may change at any time, so it is\n * less error-prone if they are simply passed through when the events occur.\n */\nvar UniqueSelectionDispatcher = /** @class */ (function () {\n    function UniqueSelectionDispatcher() {\n        this._listeners = [];\n    }\n    /**\n     * Notify other items that selection for the given name has been set.\n     * @param id ID of the item.\n     * @param name Name of the item.\n     */\n    /**\n     * Notify other items that selection for the given name has been set.\n     * @param {?} id ID of the item.\n     * @param {?} name Name of the item.\n     * @return {?}\n     */\n    UniqueSelectionDispatcher.prototype.notify = /**\n     * Notify other items that selection for the given name has been set.\n     * @param {?} id ID of the item.\n     * @param {?} name Name of the item.\n     * @return {?}\n     */\n    function (id, name) {\n        for (var _i = 0, _a = this._listeners; _i < _a.length; _i++) {\n            var listener = _a[_i];\n            listener(id, name);\n        }\n    };\n    /**\n     * Listen for future changes to item selection.\n     * @return Function used to deregister listener\n     */\n    /**\n     * Listen for future changes to item selection.\n     * @param {?} listener\n     * @return {?} Function used to deregister listener\n     */\n    UniqueSelectionDispatcher.prototype.listen = /**\n     * Listen for future changes to item selection.\n     * @param {?} listener\n     * @return {?} Function used to deregister listener\n     */\n    function (listener) {\n        var _this = this;\n        this._listeners.push(listener);\n        return function () {\n            _this._listeners = _this._listeners.filter(function (registered) {\n                return listener !== registered;\n            });\n        };\n    };\n    /**\n     * @return {?}\n     */\n    UniqueSelectionDispatcher.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        this._listeners = [];\n    };\n    UniqueSelectionDispatcher.decorators = [\n        { type: Injectable, args: [{ providedIn: 'root' },] },\n    ];\n    /** @nocollapse */ UniqueSelectionDispatcher.ngInjectableDef = defineInjectable({ factory: function UniqueSelectionDispatcher_Factory() { return new UniqueSelectionDispatcher(); }, token: UniqueSelectionDispatcher, providedIn: \"root\" });\n    return UniqueSelectionDispatcher;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\nexport { UniqueSelectionDispatcher, ArrayDataSource, DataSource, SelectionModel, getMultipleValuesInSingleSelectionError };\n//# sourceMappingURL=collections.es5.js.map\n","module.exports = function(module) {\r\n\tif (!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif (!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { __extends } from 'tslib';\nimport { Component, ChangeDetectionStrategy, ElementRef, Inject, Input, Optional, ViewEncapsulation, InjectionToken, inject, NgModule } from '@angular/core';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { mixinColor, MatCommonModule } from '@angular/material/core';\nimport { DOCUMENT, CommonModule } from '@angular/common';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * \\@docs-private\n */\nvar  /**\n * \\@docs-private\n */\nMatProgressBarBase = /** @class */ (function () {\n    function MatProgressBarBase(_elementRef) {\n        this._elementRef = _elementRef;\n    }\n    return MatProgressBarBase;\n}());\nvar /** @type {?} */ _MatProgressBarMixinBase = mixinColor(MatProgressBarBase, 'primary');\n/**\n * Injection token used to provide the current location to `MatProgressBar`.\n * Used to handle server-side rendering and to stub out during unit tests.\n * \\@docs-private\n */\nvar /** @type {?} */ MAT_PROGRESS_BAR_LOCATION = new InjectionToken('mat-progress-bar-location', { providedIn: 'root', factory: MAT_PROGRESS_BAR_LOCATION_FACTORY });\n/**\n * \\@docs-private\n * @return {?}\n */\nfunction MAT_PROGRESS_BAR_LOCATION_FACTORY() {\n    var /** @type {?} */ _document = inject(DOCUMENT);\n    var /** @type {?} */ pathname = (_document && _document.location && _document.location.pathname) || '';\n    return { pathname: pathname };\n}\n/**\n * Counter used to generate unique IDs for progress bars.\n */\nvar /** @type {?} */ progressbarId = 0;\n/**\n * `<mat-progress-bar>` component.\n */\nvar MatProgressBar = /** @class */ (function (_super) {\n    __extends(MatProgressBar, _super);\n    function MatProgressBar(_elementRef, _animationMode, /**\n                   * @deprecated `location` parameter to be made required.\n                   * @breaking-change 8.0.0\n                   */\n    location) {\n        var _this = _super.call(this, _elementRef) || this;\n        _this._elementRef = _elementRef;\n        _this._animationMode = _animationMode;\n        _this._value = 0;\n        _this._bufferValue = 0;\n        /**\n         * Mode of the progress bar.\n         *\n         * Input must be one of these values: determinate, indeterminate, buffer, query, defaults to\n         * 'determinate'.\n         * Mirrored to mode attribute.\n         */\n        _this.mode = 'determinate';\n        /**\n         * ID of the progress bar.\n         */\n        _this.progressbarId = \"mat-progress-bar-\" + progressbarId++;\n        // We need to prefix the SVG reference with the current path, otherwise they won't work\n        // in Safari if the page has a `<base>` tag. Note that we need quotes inside the `url()`,\n        // because named route URLs can contain parentheses (see #12338). Also we don't use\n        // `Location` from `@angular/common` since we can't tell the difference between whether\n        // the consumer is using the hash location strategy or not, because `Location` normalizes\n        // both `/#/foo/bar` and `/foo/bar` to the same thing.\n        var /** @type {?} */ path = location && location.pathname ? location.pathname.split('#')[0] : '';\n        _this._rectangleFillValue = \"url('\" + path + \"#\" + _this.progressbarId + \"')\";\n        return _this;\n    }\n    Object.defineProperty(MatProgressBar.prototype, \"value\", {\n        get: /**\n         * Value of the progress bar. Defaults to zero. Mirrored to aria-valuenow.\n         * @return {?}\n         */\n        function () { return this._value; },\n        set: /**\n         * @param {?} v\n         * @return {?}\n         */\n        function (v) { this._value = clamp(v || 0); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatProgressBar.prototype, \"bufferValue\", {\n        get: /**\n         * Buffer value of the progress bar. Defaults to zero.\n         * @return {?}\n         */\n        function () { return this._bufferValue; },\n        set: /**\n         * @param {?} v\n         * @return {?}\n         */\n        function (v) { this._bufferValue = clamp(v || 0); },\n        enumerable: true,\n        configurable: true\n    });\n    /** Gets the current transform value for the progress bar's primary indicator. */\n    /**\n     * Gets the current transform value for the progress bar's primary indicator.\n     * @return {?}\n     */\n    MatProgressBar.prototype._primaryTransform = /**\n     * Gets the current transform value for the progress bar's primary indicator.\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ scale = this.value / 100;\n        return { transform: \"scaleX(\" + scale + \")\" };\n    };\n    /**\n     * Gets the current transform value for the progress bar's buffer indicator. Only used if the\n     * progress mode is set to buffer, otherwise returns an undefined, causing no transformation.\n     */\n    /**\n     * Gets the current transform value for the progress bar's buffer indicator. Only used if the\n     * progress mode is set to buffer, otherwise returns an undefined, causing no transformation.\n     * @return {?}\n     */\n    MatProgressBar.prototype._bufferTransform = /**\n     * Gets the current transform value for the progress bar's buffer indicator. Only used if the\n     * progress mode is set to buffer, otherwise returns an undefined, causing no transformation.\n     * @return {?}\n     */\n    function () {\n        if (this.mode === 'buffer') {\n            var /** @type {?} */ scale = this.bufferValue / 100;\n            return { transform: \"scaleX(\" + scale + \")\" };\n        }\n    };\n    MatProgressBar.decorators = [\n        { type: Component, args: [{selector: 'mat-progress-bar',\n                    exportAs: 'matProgressBar',\n                    host: {\n                        'role': 'progressbar',\n                        'aria-valuemin': '0',\n                        'aria-valuemax': '100',\n                        '[attr.aria-valuenow]': 'value',\n                        '[attr.mode]': 'mode',\n                        'class': 'mat-progress-bar',\n                        '[class._mat-animation-noopable]': \"_animationMode === 'NoopAnimations'\",\n                    },\n                    inputs: ['color'],\n                    template: \"<svg width=\\\"100%\\\" height=\\\"5\\\" focusable=\\\"false\\\" class=\\\"mat-progress-bar-background mat-progress-bar-element\\\"><defs><pattern [id]=\\\"progressbarId\\\" x=\\\"5\\\" y=\\\"0\\\" width=\\\"10\\\" height=\\\"5\\\" patternUnits=\\\"userSpaceOnUse\\\"><circle cx=\\\"2.5\\\" cy=\\\"2.5\\\" r=\\\"2.5\\\"/></pattern></defs><rect [attr.fill]=\\\"_rectangleFillValue\\\" width=\\\"100%\\\" height=\\\"100%\\\"/></svg><div class=\\\"mat-progress-bar-buffer mat-progress-bar-element\\\" [ngStyle]=\\\"_bufferTransform()\\\"></div><div class=\\\"mat-progress-bar-primary mat-progress-bar-fill mat-progress-bar-element\\\" [ngStyle]=\\\"_primaryTransform()\\\"></div><div class=\\\"mat-progress-bar-secondary mat-progress-bar-fill mat-progress-bar-element\\\"></div>\",\n                    styles: [\".mat-progress-bar{display:block;height:5px;overflow:hidden;position:relative;transition:opacity 250ms linear;width:100%}._mat-animation-noopable.mat-progress-bar{transition:none;animation:none}.mat-progress-bar .mat-progress-bar-element,.mat-progress-bar .mat-progress-bar-fill::after{height:100%;position:absolute;width:100%}.mat-progress-bar .mat-progress-bar-background{width:calc(100% + 10px)}@media screen and (-ms-high-contrast:active){.mat-progress-bar .mat-progress-bar-background{display:none}}.mat-progress-bar .mat-progress-bar-buffer{transform-origin:top left;transition:transform 250ms ease}@media screen and (-ms-high-contrast:active){.mat-progress-bar .mat-progress-bar-buffer{border-top:solid 5px;opacity:.5}}.mat-progress-bar .mat-progress-bar-secondary{display:none}.mat-progress-bar .mat-progress-bar-fill{animation:none;transform-origin:top left;transition:transform 250ms ease}@media screen and (-ms-high-contrast:active){.mat-progress-bar .mat-progress-bar-fill{border-top:solid 5px}}.mat-progress-bar .mat-progress-bar-fill::after{animation:none;content:'';display:inline-block;left:0}.mat-progress-bar[dir=rtl],[dir=rtl] .mat-progress-bar{transform:rotateY(180deg)}.mat-progress-bar[mode=query]{transform:rotateZ(180deg)}.mat-progress-bar[mode=query][dir=rtl],[dir=rtl] .mat-progress-bar[mode=query]{transform:rotateZ(180deg) rotateY(180deg)}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-fill,.mat-progress-bar[mode=query] .mat-progress-bar-fill{transition:none}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-primary,.mat-progress-bar[mode=query] .mat-progress-bar-primary{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-primary-indeterminate-translate 2s infinite linear;left:-145.166611%}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-primary.mat-progress-bar-fill::after,.mat-progress-bar[mode=query] .mat-progress-bar-primary.mat-progress-bar-fill::after{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-primary-indeterminate-scale 2s infinite linear}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-secondary,.mat-progress-bar[mode=query] .mat-progress-bar-secondary{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-secondary-indeterminate-translate 2s infinite linear;left:-54.888891%;display:block}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-secondary.mat-progress-bar-fill::after,.mat-progress-bar[mode=query] .mat-progress-bar-secondary.mat-progress-bar-fill::after{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-secondary-indeterminate-scale 2s infinite linear}.mat-progress-bar[mode=buffer] .mat-progress-bar-background{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-background-scroll 250ms infinite linear;display:block}.mat-progress-bar._mat-animation-noopable .mat-progress-bar-background,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-buffer,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-fill,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-fill::after,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-primary,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-primary.mat-progress-bar-fill::after,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-secondary,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-secondary.mat-progress-bar-fill::after{animation:none;transition:none}@keyframes mat-progress-bar-primary-indeterminate-translate{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(.5,0,.70173,.49582);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(.30244,.38135,.55,.95635);transform:translateX(83.67142%)}100%{transform:translateX(200.61106%)}}@keyframes mat-progress-bar-primary-indeterminate-scale{0%{transform:scaleX(.08)}36.65%{animation-timing-function:cubic-bezier(.33473,.12482,.78584,1);transform:scaleX(.08)}69.15%{animation-timing-function:cubic-bezier(.06,.11,.6,1);transform:scaleX(.66148)}100%{transform:scaleX(.08)}}@keyframes mat-progress-bar-secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(.15,0,.51506,.40969);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(.31033,.28406,.8,.73371);transform:translateX(37.65191%)}48.35%{animation-timing-function:cubic-bezier(.4,.62704,.6,.90203);transform:translateX(84.38617%)}100%{transform:translateX(160.27778%)}}@keyframes mat-progress-bar-secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(.15,0,.51506,.40969);transform:scaleX(.08)}19.15%{animation-timing-function:cubic-bezier(.31033,.28406,.8,.73371);transform:scaleX(.4571)}44.15%{animation-timing-function:cubic-bezier(.4,.62704,.6,.90203);transform:scaleX(.72796)}100%{transform:scaleX(.08)}}@keyframes mat-progress-bar-background-scroll{to{transform:translateX(-10px)}}\"],\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    encapsulation: ViewEncapsulation.None,\n                },] },\n    ];\n    /** @nocollapse */\n    MatProgressBar.ctorParameters = function () { return [\n        { type: ElementRef, },\n        { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] },] },\n        { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_PROGRESS_BAR_LOCATION,] },] },\n    ]; };\n    MatProgressBar.propDecorators = {\n        \"value\": [{ type: Input },],\n        \"bufferValue\": [{ type: Input },],\n        \"mode\": [{ type: Input },],\n    };\n    return MatProgressBar;\n}(_MatProgressBarMixinBase));\n/**\n * Clamps a value to be between two numbers, by default 0 and 100.\n * @param {?} v\n * @param {?=} min\n * @param {?=} max\n * @return {?}\n */\nfunction clamp(v, min, max) {\n    if (min === void 0) { min = 0; }\n    if (max === void 0) { max = 100; }\n    return Math.max(min, Math.min(max, v));\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nvar MatProgressBarModule = /** @class */ (function () {\n    function MatProgressBarModule() {\n    }\n    MatProgressBarModule.decorators = [\n        { type: NgModule, args: [{\n                    imports: [CommonModule, MatCommonModule],\n                    exports: [MatProgressBar, MatCommonModule],\n                    declarations: [MatProgressBar],\n                },] },\n    ];\n    return MatProgressBarModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\nexport { MatProgressBarModule, MatProgressBarBase, _MatProgressBarMixinBase, MAT_PROGRESS_BAR_LOCATION, MAT_PROGRESS_BAR_LOCATION_FACTORY, MatProgressBar };\n//# sourceMappingURL=progress-bar.es5.js.map\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nmodule.exports = listCacheSet;\n","var baseIsMatch = require('./_baseIsMatch'),\n    getMatchData = require('./_getMatchData'),\n    matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\nmodule.exports = baseMatches;\n","var castPath = require('./_castPath'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","import {OverlayRef} from '@angular/cdk/overlay';\r\nimport {Observable, Subject} from 'rxjs';\r\n\r\nexport class OverlayPanelRef {\r\n\r\n    private value = new Subject<any>();\r\n\r\n    constructor(private overlayRef: OverlayRef) {}\r\n\r\n    public isOpen(): boolean {\r\n        return this.overlayRef && this.overlayRef.hasAttached();\r\n    }\r\n\r\n    public close() {\r\n        this.overlayRef && this.overlayRef.dispose();\r\n    }\r\n\r\n    public emitValue(value: any) {\r\n        this.value.next(value);\r\n    }\r\n\r\n    public valueChanged(): Observable<any> {\r\n        return this.value.asObservable();\r\n    }\r\n\r\n    public getPanelEl() {\r\n        return this.overlayRef.overlayElement;\r\n    }\r\n\r\n    public updatePosition() {\r\n        return this.overlayRef.updatePosition();\r\n    }\r\n}\r\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\nmodule.exports = cloneRegExp;\n","var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/sidenav\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@angular/cdk/bidi\";\nimport * as i4 from \"@angular/material/core\";\nimport * as i5 from \"@angular/cdk/platform\";\nimport * as i6 from \"@angular/cdk/scrolling\";\nimport * as i7 from \"@angular/cdk/a11y\";\nimport * as i8 from \"@angular/platform-browser/animations\";\nvar MatSidenavModuleNgFactory = i0.ɵcmf(i1.MatSidenavModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i2.NgLocalization, i2.NgLocaleLocalization, [i0.LOCALE_ID, [2, i2.ɵangular_packages_common_common_a]]), i0.ɵmpd(1073742336, i2.CommonModule, i2.CommonModule, []), i0.ɵmpd(1073742336, i3.BidiModule, i3.BidiModule, []), i0.ɵmpd(1073742336, i4.MatCommonModule, i4.MatCommonModule, [[2, i4.MATERIAL_SANITY_CHECKS]]), i0.ɵmpd(1073742336, i5.PlatformModule, i5.PlatformModule, []), i0.ɵmpd(1073742336, i6.ScrollDispatchModule, i6.ScrollDispatchModule, []), i0.ɵmpd(1073742336, i1.MatSidenavModule, i1.MatSidenavModule, [])]); });\nexport { MatSidenavModuleNgFactory as MatSidenavModuleNgFactory };\nvar styles_MatDrawerContent = [];\nvar RenderType_MatDrawerContent = i0.ɵcrt({ encapsulation: 2, styles: styles_MatDrawerContent, data: {} });\nexport { RenderType_MatDrawerContent as RenderType_MatDrawerContent };\nexport function View_MatDrawerContent_0(_l) { return i0.ɵvid(2, [i0.ɵncd(null, 0)], null, null); }\nexport function View_MatDrawerContent_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"mat-drawer-content\", [[\"class\", \"mat-drawer-content\"]], [[4, \"margin-left\", \"px\"], [4, \"margin-right\", \"px\"]], null, null, View_MatDrawerContent_0, RenderType_MatDrawerContent)), i0.ɵdid(1, 1097728, null, 0, i1.MatDrawerContent, [i0.ChangeDetectorRef, i1.MatDrawerContainer], null, null)], null, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1)._container._contentMargins.left; var currVal_1 = i0.ɵnov(_v, 1)._container._contentMargins.right; _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nvar MatDrawerContentNgFactory = i0.ɵccf(\"mat-drawer-content\", i1.MatDrawerContent, View_MatDrawerContent_Host_0, {}, {}, [\"*\"]);\nexport { MatDrawerContentNgFactory as MatDrawerContentNgFactory };\nvar styles_MatDrawer = [];\nvar RenderType_MatDrawer = i0.ɵcrt({ encapsulation: 2, styles: styles_MatDrawer, data: { \"animation\": [{ type: 7, name: \"transform\", definitions: [{ type: 0, name: \"open, open-instant\", styles: { type: 6, styles: { transform: \"none\", visibility: \"visible\" }, offset: null }, options: undefined }, { type: 0, name: \"void\", styles: { type: 6, styles: { \"box-shadow\": \"none\", visibility: \"hidden\" }, offset: null }, options: undefined }, { type: 1, expr: \"void => open-instant\", animation: { type: 4, styles: null, timings: \"0ms\" }, options: null }, { type: 1, expr: \"void <=> open, open-instant => void\", animation: { type: 4, styles: null, timings: \"400ms cubic-bezier(0.25, 0.8, 0.25, 1)\" }, options: null }], options: {} }] } });\nexport { RenderType_MatDrawer as RenderType_MatDrawer };\nexport function View_MatDrawer_0(_l) { return i0.ɵvid(2, [i0.ɵncd(null, 0)], null, null); }\nexport function View_MatDrawer_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"mat-drawer\", [[\"class\", \"mat-drawer\"], [\"tabIndex\", \"-1\"]], [[40, \"@transform\", 0], [1, \"align\", 0], [2, \"mat-drawer-end\", null], [2, \"mat-drawer-over\", null], [2, \"mat-drawer-push\", null], [2, \"mat-drawer-side\", null]], [[\"component\", \"@transform.start\"], [\"component\", \"@transform.done\"]], function (_v, en, $event) { var ad = true; if ((\"component:@transform.start\" === en)) {\n        var pd_0 = (i0.ɵnov(_v, 1)._onAnimationStart($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"component:@transform.done\" === en)) {\n        var pd_1 = (i0.ɵnov(_v, 1)._onAnimationEnd($event) !== false);\n        ad = (pd_1 && ad);\n    } return ad; }, View_MatDrawer_0, RenderType_MatDrawer)), i0.ɵdid(1, 3325952, null, 0, i1.MatDrawer, [i0.ElementRef, i7.FocusTrapFactory, i7.FocusMonitor, i5.Platform, i0.NgZone, [2, i2.DOCUMENT]], null, null)], null, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1)._animationState; var currVal_1 = null; var currVal_2 = (i0.ɵnov(_v, 1).position === \"end\"); var currVal_3 = (i0.ɵnov(_v, 1).mode === \"over\"); var currVal_4 = (i0.ɵnov(_v, 1).mode === \"push\"); var currVal_5 = (i0.ɵnov(_v, 1).mode === \"side\"); _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3, currVal_4, currVal_5); }); }\nvar MatDrawerNgFactory = i0.ɵccf(\"mat-drawer\", i1.MatDrawer, View_MatDrawer_Host_0, { position: \"position\", mode: \"mode\", disableClose: \"disableClose\", autoFocus: \"autoFocus\", opened: \"opened\" }, { openedChange: \"openedChange\", _openedStream: \"opened\", openedStart: \"openedStart\", _closedStream: \"closed\", closedStart: \"closedStart\", onPositionChanged: \"positionChanged\" }, [\"*\"]);\nexport { MatDrawerNgFactory as MatDrawerNgFactory };\nvar styles_MatDrawerContainer = [\".mat-drawer-container{position:relative;z-index:1;box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-opened{overflow:hidden}.mat-drawer-container.mat-drawer-container-explicit-backdrop .mat-drawer-side{z-index:3}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:background-color,visibility}@media screen and (-ms-high-contrast:active){.mat-drawer-backdrop{opacity:.5}}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;display:block;position:absolute;top:0;bottom:0;z-index:3;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%,0,0)}@media screen and (-ms-high-contrast:active){.mat-drawer,[dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}}@media screen and (-ms-high-contrast:active){.mat-drawer.mat-drawer-end,[dir=rtl] .mat-drawer{border-left:solid 1px currentColor;border-right:none}}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer{transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer.mat-drawer-end{left:0;right:auto;transform:translate3d(-100%,0,0)}.mat-drawer:not(.mat-drawer-side){box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.mat-sidenav-fixed{position:fixed}\"];\nvar RenderType_MatDrawerContainer = i0.ɵcrt({ encapsulation: 2, styles: styles_MatDrawerContainer, data: {} });\nexport { RenderType_MatDrawerContainer as RenderType_MatDrawerContainer };\nfunction View_MatDrawerContainer_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 0, \"div\", [[\"class\", \"mat-drawer-backdrop\"]], [[2, \"mat-drawer-shown\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co._onBackdropClicked() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, null, null))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co._isShowingBackdrop(); _ck(_v, 0, 0, currVal_0); }); }\nfunction View_MatDrawerContainer_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"mat-drawer-content\", [[\"cdkScrollable\", \"\"], [\"class\", \"mat-drawer-content\"]], [[4, \"margin-left\", \"px\"], [4, \"margin-right\", \"px\"]], null, null, View_MatDrawerContent_0, RenderType_MatDrawerContent)), i0.ɵdid(1, 212992, [[1, 4]], 0, i6.CdkScrollable, [i0.ElementRef, i6.ScrollDispatcher, i0.NgZone], null, null), i0.ɵdid(2, 1097728, null, 0, i1.MatDrawerContent, [i0.ChangeDetectorRef, i1.MatDrawerContainer], null, null), i0.ɵncd(0, 2)], function (_ck, _v) { _ck(_v, 1, 0); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 2)._container._contentMargins.left; var currVal_1 = i0.ɵnov(_v, 2)._container._contentMargins.right; _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nexport function View_MatDrawerContainer_0(_l) { return i0.ɵvid(2, [i0.ɵqud(671088640, 1, { scrollable: 0 }), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_MatDrawerContainer_1)), i0.ɵdid(2, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), i0.ɵncd(null, 0), i0.ɵncd(null, 1), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_MatDrawerContainer_2)), i0.ɵdid(6, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.hasBackdrop; _ck(_v, 2, 0, currVal_0); var currVal_1 = !_co._content; _ck(_v, 6, 0, currVal_1); }, null); }\nexport function View_MatDrawerContainer_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"mat-drawer-container\", [[\"class\", \"mat-drawer-container\"]], [[2, \"mat-drawer-container-explicit-backdrop\", null]], null, null, View_MatDrawerContainer_0, RenderType_MatDrawerContainer)), i0.ɵdid(1, 1490944, null, 2, i1.MatDrawerContainer, [[2, i3.Directionality], i0.ElementRef, i0.NgZone, i0.ChangeDetectorRef, i1.MAT_DRAWER_DEFAULT_AUTOSIZE, [2, i8.ANIMATION_MODULE_TYPE]], null, null), i0.ɵqud(603979776, 1, { _drawers: 1 }), i0.ɵqud(335544320, 2, { _content: 0 })], function (_ck, _v) { _ck(_v, 1, 0); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1)._backdropOverride; _ck(_v, 0, 0, currVal_0); }); }\nvar MatDrawerContainerNgFactory = i0.ɵccf(\"mat-drawer-container\", i1.MatDrawerContainer, View_MatDrawerContainer_Host_0, { autosize: \"autosize\", hasBackdrop: \"hasBackdrop\" }, { backdropClick: \"backdropClick\" }, [\"mat-drawer\", \"mat-drawer-content\", \"*\"]);\nexport { MatDrawerContainerNgFactory as MatDrawerContainerNgFactory };\nvar styles_MatSidenavContent = [];\nvar RenderType_MatSidenavContent = i0.ɵcrt({ encapsulation: 2, styles: styles_MatSidenavContent, data: {} });\nexport { RenderType_MatSidenavContent as RenderType_MatSidenavContent };\nexport function View_MatSidenavContent_0(_l) { return i0.ɵvid(2, [i0.ɵncd(null, 0)], null, null); }\nexport function View_MatSidenavContent_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"mat-sidenav-content\", [[\"class\", \"mat-drawer-content mat-sidenav-content\"]], [[4, \"margin-left\", \"px\"], [4, \"margin-right\", \"px\"]], null, null, View_MatSidenavContent_0, RenderType_MatSidenavContent)), i0.ɵdid(1, 1097728, null, 0, i1.MatSidenavContent, [i0.ChangeDetectorRef, i1.MatSidenavContainer], null, null)], null, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1)._container._contentMargins.left; var currVal_1 = i0.ɵnov(_v, 1)._container._contentMargins.right; _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nvar MatSidenavContentNgFactory = i0.ɵccf(\"mat-sidenav-content\", i1.MatSidenavContent, View_MatSidenavContent_Host_0, {}, {}, [\"*\"]);\nexport { MatSidenavContentNgFactory as MatSidenavContentNgFactory };\nvar styles_MatSidenav = [];\nvar RenderType_MatSidenav = i0.ɵcrt({ encapsulation: 2, styles: styles_MatSidenav, data: { \"animation\": [{ type: 7, name: \"transform\", definitions: [{ type: 0, name: \"open, open-instant\", styles: { type: 6, styles: { transform: \"none\", visibility: \"visible\" }, offset: null }, options: undefined }, { type: 0, name: \"void\", styles: { type: 6, styles: { \"box-shadow\": \"none\", visibility: \"hidden\" }, offset: null }, options: undefined }, { type: 1, expr: \"void => open-instant\", animation: { type: 4, styles: null, timings: \"0ms\" }, options: null }, { type: 1, expr: \"void <=> open, open-instant => void\", animation: { type: 4, styles: null, timings: \"400ms cubic-bezier(0.25, 0.8, 0.25, 1)\" }, options: null }], options: {} }] } });\nexport { RenderType_MatSidenav as RenderType_MatSidenav };\nexport function View_MatSidenav_0(_l) { return i0.ɵvid(2, [i0.ɵncd(null, 0)], null, null); }\nexport function View_MatSidenav_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"mat-sidenav\", [[\"class\", \"mat-drawer mat-sidenav\"], [\"tabIndex\", \"-1\"]], [[40, \"@transform\", 0], [1, \"align\", 0], [2, \"mat-drawer-end\", null], [2, \"mat-drawer-over\", null], [2, \"mat-drawer-push\", null], [2, \"mat-drawer-side\", null], [2, \"mat-sidenav-fixed\", null], [4, \"top\", \"px\"], [4, \"bottom\", \"px\"]], [[\"component\", \"@transform.start\"], [\"component\", \"@transform.done\"]], function (_v, en, $event) { var ad = true; if ((\"component:@transform.start\" === en)) {\n        var pd_0 = (i0.ɵnov(_v, 1)._onAnimationStart($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"component:@transform.done\" === en)) {\n        var pd_1 = (i0.ɵnov(_v, 1)._onAnimationEnd($event) !== false);\n        ad = (pd_1 && ad);\n    } return ad; }, View_MatSidenav_0, RenderType_MatSidenav)), i0.ɵdid(1, 3325952, null, 0, i1.MatSidenav, [i0.ElementRef, i7.FocusTrapFactory, i7.FocusMonitor, i5.Platform, i0.NgZone, [2, i2.DOCUMENT]], null, null)], null, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1)._animationState; var currVal_1 = null; var currVal_2 = (i0.ɵnov(_v, 1).position === \"end\"); var currVal_3 = (i0.ɵnov(_v, 1).mode === \"over\"); var currVal_4 = (i0.ɵnov(_v, 1).mode === \"push\"); var currVal_5 = (i0.ɵnov(_v, 1).mode === \"side\"); var currVal_6 = i0.ɵnov(_v, 1).fixedInViewport; var currVal_7 = (i0.ɵnov(_v, 1).fixedInViewport ? i0.ɵnov(_v, 1).fixedTopGap : null); var currVal_8 = (i0.ɵnov(_v, 1).fixedInViewport ? i0.ɵnov(_v, 1).fixedBottomGap : null); _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3, currVal_4, currVal_5, currVal_6, currVal_7, currVal_8); }); }\nvar MatSidenavNgFactory = i0.ɵccf(\"mat-sidenav\", i1.MatSidenav, View_MatSidenav_Host_0, { position: \"position\", mode: \"mode\", disableClose: \"disableClose\", autoFocus: \"autoFocus\", opened: \"opened\", fixedInViewport: \"fixedInViewport\", fixedTopGap: \"fixedTopGap\", fixedBottomGap: \"fixedBottomGap\" }, { openedChange: \"openedChange\", _openedStream: \"opened\", openedStart: \"openedStart\", _closedStream: \"closed\", closedStart: \"closedStart\", onPositionChanged: \"positionChanged\" }, [\"*\"]);\nexport { MatSidenavNgFactory as MatSidenavNgFactory };\nvar styles_MatSidenavContainer = [\".mat-drawer-container{position:relative;z-index:1;box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-opened{overflow:hidden}.mat-drawer-container.mat-drawer-container-explicit-backdrop .mat-drawer-side{z-index:3}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:background-color,visibility}@media screen and (-ms-high-contrast:active){.mat-drawer-backdrop{opacity:.5}}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;display:block;position:absolute;top:0;bottom:0;z-index:3;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%,0,0)}@media screen and (-ms-high-contrast:active){.mat-drawer,[dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}}@media screen and (-ms-high-contrast:active){.mat-drawer.mat-drawer-end,[dir=rtl] .mat-drawer{border-left:solid 1px currentColor;border-right:none}}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer{transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer.mat-drawer-end{left:0;right:auto;transform:translate3d(-100%,0,0)}.mat-drawer:not(.mat-drawer-side){box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.mat-sidenav-fixed{position:fixed}\"];\nvar RenderType_MatSidenavContainer = i0.ɵcrt({ encapsulation: 2, styles: styles_MatSidenavContainer, data: {} });\nexport { RenderType_MatSidenavContainer as RenderType_MatSidenavContainer };\nfunction View_MatSidenavContainer_1(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 0, \"div\", [[\"class\", \"mat-drawer-backdrop\"]], [[2, \"mat-drawer-shown\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co._onBackdropClicked() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, null, null))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co._isShowingBackdrop(); _ck(_v, 0, 0, currVal_0); }); }\nfunction View_MatSidenavContainer_2(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"mat-sidenav-content\", [[\"cdkScrollable\", \"\"], [\"class\", \"mat-drawer-content mat-sidenav-content\"]], [[4, \"margin-left\", \"px\"], [4, \"margin-right\", \"px\"]], null, null, View_MatSidenavContent_0, RenderType_MatSidenavContent)), i0.ɵdid(1, 212992, [[1, 4]], 0, i6.CdkScrollable, [i0.ElementRef, i6.ScrollDispatcher, i0.NgZone], null, null), i0.ɵdid(2, 1097728, null, 0, i1.MatSidenavContent, [i0.ChangeDetectorRef, i1.MatSidenavContainer], null, null), i0.ɵncd(0, 2)], function (_ck, _v) { _ck(_v, 1, 0); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 2)._container._contentMargins.left; var currVal_1 = i0.ɵnov(_v, 2)._container._contentMargins.right; _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nexport function View_MatSidenavContainer_0(_l) { return i0.ɵvid(2, [i0.ɵqud(671088640, 1, { scrollable: 0 }), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_MatSidenavContainer_1)), i0.ɵdid(2, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), i0.ɵncd(null, 0), i0.ɵncd(null, 1), (_l()(), i0.ɵand(16777216, null, null, 1, null, View_MatSidenavContainer_2)), i0.ɵdid(6, 16384, null, 0, i2.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.hasBackdrop; _ck(_v, 2, 0, currVal_0); var currVal_1 = !_co._content; _ck(_v, 6, 0, currVal_1); }, null); }\nexport function View_MatSidenavContainer_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"mat-sidenav-container\", [[\"class\", \"mat-drawer-container mat-sidenav-container\"]], [[2, \"mat-drawer-container-explicit-backdrop\", null]], null, null, View_MatSidenavContainer_0, RenderType_MatSidenavContainer)), i0.ɵdid(1, 1490944, null, 2, i1.MatSidenavContainer, [[2, i3.Directionality], i0.ElementRef, i0.NgZone, i0.ChangeDetectorRef, i1.MAT_DRAWER_DEFAULT_AUTOSIZE, [2, i8.ANIMATION_MODULE_TYPE]], null, null), i0.ɵqud(603979776, 1, { _drawers: 1 }), i0.ɵqud(335544320, 2, { _content: 0 })], function (_ck, _v) { _ck(_v, 1, 0); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1)._backdropOverride; _ck(_v, 0, 0, currVal_0); }); }\nvar MatSidenavContainerNgFactory = i0.ɵccf(\"mat-sidenav-container\", i1.MatSidenavContainer, View_MatSidenavContainer_Host_0, { autosize: \"autosize\", hasBackdrop: \"hasBackdrop\" }, { backdropClick: \"backdropClick\" }, [\"mat-sidenav\", \"mat-sidenav-content\", \"*\"]);\nexport { MatSidenavContainerNgFactory as MatSidenavContainerNgFactory };\n","<ng-content></ng-content>","<ng-content></ng-content>","<div class=\"mat-drawer-backdrop\" (click)=\"_onBackdropClicked()\" *ngIf=\"hasBackdrop\" [class.mat-drawer-shown]=\"_isShowingBackdrop()\"></div><ng-content select=\"mat-sidenav\"></ng-content><ng-content select=\"mat-sidenav-content\"></ng-content><mat-sidenav-content *ngIf=\"!_content\" cdkScrollable><ng-content></ng-content></mat-sidenav-content>","var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var Set = require('./_Set'),\n    noop = require('./noop'),\n    setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n  return new Set(values);\n};\n\nmodule.exports = createSet;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\nmodule.exports = baseCreate;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","import {ElementRef, Injectable, Injector} from '@angular/core';\r\nimport { ConnectedPosition, Overlay, PositionStrategy } from '@angular/cdk/overlay';\r\nimport {ComponentPortal, ComponentType, PortalInjector} from '@angular/cdk/portal';\r\nimport {BreakpointsService} from '../breakpoints.service';\r\nimport {OverlayPanelRef} from './overlay-panel-ref';\r\nimport { OVERLAY_PANEL_DATA } from './overlay-panel-data';\r\nimport { OverlayPanelConfig } from './overlay-panel-config';\r\n\r\nconst DEFAULT_CONFIG = {\r\n    hasBackdrop: true,\r\n    closeOnBackdropClick: true,\r\n    panelClass: 'overlay-panel',\r\n};\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class OverlayPanel {\r\n    constructor(\r\n        public overlay: Overlay,\r\n        private breakpoints: BreakpointsService,\r\n        private injector: Injector,\r\n    ) {}\r\n\r\n    public open(component: ComponentType<any>, userConfig: OverlayPanelConfig) {\r\n        const config = Object.assign({}, DEFAULT_CONFIG, userConfig);\r\n\r\n        const overlayRef = this.overlay.create({\r\n            positionStrategy: this.getPositionStrategy(config),\r\n            hasBackdrop: config.hasBackdrop,\r\n            panelClass: config.panelClass,\r\n        });\r\n\r\n        const overlayPanelRef = new OverlayPanelRef(overlayRef);\r\n        const portal = new ComponentPortal(component, null, this.createInjector(config, overlayPanelRef));\r\n        overlayRef.attach(portal);\r\n\r\n        if (config.closeOnBackdropClick) {\r\n            overlayRef.backdropClick().subscribe(() => overlayPanelRef.close());\r\n        }\r\n\r\n        return overlayPanelRef;\r\n    }\r\n\r\n    private createInjector(config: OverlayPanelConfig, dialogRef: OverlayPanelRef): PortalInjector {\r\n        const injectionTokens = new WeakMap();\r\n        injectionTokens.set(OverlayPanelRef, dialogRef);\r\n        injectionTokens.set(OVERLAY_PANEL_DATA, config.data || null);\r\n        return new PortalInjector(this.injector, injectionTokens);\r\n    }\r\n\r\n    private getPositionStrategy(config: OverlayPanelConfig) {\r\n        if (config.positionStrategy) {\r\n            return config.positionStrategy;\r\n        } else if (config.origin === 'global') {\r\n            return this.getGlobalPositionStrategy(config);\r\n        } else {\r\n            return this.getConnectedPositionStrategy(config);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Get position strategy for overlay positioned globally.\r\n     */\r\n    private getGlobalPositionStrategy(config: OverlayPanelConfig): PositionStrategy {\r\n        const position = this.getPositionOption(config);\r\n\r\n        if (position === 'center') {\r\n            return this.overlay.position().global().centerHorizontally().centerVertically();\r\n        } else {\r\n            const global = this.overlay.position().global();\r\n            Object.keys(position).forEach(key => {\r\n                global[key](position[key]);\r\n            });\r\n            return global;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Get position strategy for overlay connected to origin element.\r\n     */\r\n    private getConnectedPositionStrategy(config: OverlayPanelConfig) {\r\n        return this.overlay.position()\r\n            .flexibleConnectedTo(config.origin as ElementRef)\r\n            .withPositions(this.getPositionOption(config) as ConnectedPosition[]);\r\n    }\r\n\r\n    /**\r\n     * Select position strategy based on current device.\r\n     */\r\n    private getPositionOption(config: OverlayPanelConfig) {\r\n        if (config.mobilePosition && this.breakpoints.isMobile) {\r\n            return config.mobilePosition;\r\n        } else {\r\n            return config.position;\r\n        }\r\n    }\r\n}\r\n","import { ElementRef, Injector } from '@angular/core';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ComponentPortal, PortalInjector } from '@angular/cdk/portal';\nimport { BreakpointsService } from '../breakpoints.service';\nimport { OverlayPanelRef } from './overlay-panel-ref';\nimport { OVERLAY_PANEL_DATA } from './overlay-panel-data';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/cdk/overlay\";\nimport * as i2 from \"../breakpoints.service\";\nvar DEFAULT_CONFIG = {\n    hasBackdrop: true,\n    closeOnBackdropClick: true,\n    panelClass: 'overlay-panel',\n};\nvar OverlayPanel = /** @class */ (function () {\n    function OverlayPanel(overlay, breakpoints, injector) {\n        this.overlay = overlay;\n        this.breakpoints = breakpoints;\n        this.injector = injector;\n    }\n    OverlayPanel.prototype.open = function (component, userConfig) {\n        var config = Object.assign({}, DEFAULT_CONFIG, userConfig);\n        var overlayRef = this.overlay.create({\n            positionStrategy: this.getPositionStrategy(config),\n            hasBackdrop: config.hasBackdrop,\n            panelClass: config.panelClass,\n        });\n        var overlayPanelRef = new OverlayPanelRef(overlayRef);\n        var portal = new ComponentPortal(component, null, this.createInjector(config, overlayPanelRef));\n        overlayRef.attach(portal);\n        if (config.closeOnBackdropClick) {\n            overlayRef.backdropClick().subscribe(function () { return overlayPanelRef.close(); });\n        }\n        return overlayPanelRef;\n    };\n    OverlayPanel.prototype.createInjector = function (config, dialogRef) {\n        var injectionTokens = new WeakMap();\n        injectionTokens.set(OverlayPanelRef, dialogRef);\n        injectionTokens.set(OVERLAY_PANEL_DATA, config.data || null);\n        return new PortalInjector(this.injector, injectionTokens);\n    };\n    OverlayPanel.prototype.getPositionStrategy = function (config) {\n        if (config.positionStrategy) {\n            return config.positionStrategy;\n        }\n        else if (config.origin === 'global') {\n            return this.getGlobalPositionStrategy(config);\n        }\n        else {\n            return this.getConnectedPositionStrategy(config);\n        }\n    };\n    /**\n     * Get position strategy for overlay positioned globally.\n     */\n    OverlayPanel.prototype.getGlobalPositionStrategy = function (config) {\n        var position = this.getPositionOption(config);\n        if (position === 'center') {\n            return this.overlay.position().global().centerHorizontally().centerVertically();\n        }\n        else {\n            var global_1 = this.overlay.position().global();\n            Object.keys(position).forEach(function (key) {\n                global_1[key](position[key]);\n            });\n            return global_1;\n        }\n    };\n    /**\n     * Get position strategy for overlay connected to origin element.\n     */\n    OverlayPanel.prototype.getConnectedPositionStrategy = function (config) {\n        return this.overlay.position()\n            .flexibleConnectedTo(config.origin)\n            .withPositions(this.getPositionOption(config));\n    };\n    /**\n     * Select position strategy based on current device.\n     */\n    OverlayPanel.prototype.getPositionOption = function (config) {\n        if (config.mobilePosition && this.breakpoints.isMobile) {\n            return config.mobilePosition;\n        }\n        else {\n            return config.position;\n        }\n    };\n    OverlayPanel.ngInjectableDef = i0.defineInjectable({ factory: function OverlayPanel_Factory() { return new OverlayPanel(i0.inject(i1.Overlay), i0.inject(i2.BreakpointsService), i0.inject(i0.INJECTOR)); }, token: OverlayPanel, providedIn: \"root\" });\n    return OverlayPanel;\n}());\nexport { OverlayPanel };\n","var mapCacheClear = require('./_mapCacheClear'),\n    mapCacheDelete = require('./_mapCacheDelete'),\n    mapCacheGet = require('./_mapCacheGet'),\n    mapCacheHas = require('./_mapCacheHas'),\n    mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var Stack = require('./_Stack'),\n    equalArrays = require('./_equalArrays'),\n    equalByTag = require('./_equalByTag'),\n    equalObjects = require('./_equalObjects'),\n    getTag = require('./_getTag'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var Hash = require('./_Hash'),\n    ListCache = require('./_ListCache'),\n    Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nmodule.exports = mapCacheClear;\n","var arrayPush = require('./_arrayPush'),\n    isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var ListCache = require('./_ListCache'),\n    stackClear = require('./_stackClear'),\n    stackDelete = require('./_stackDelete'),\n    stackGet = require('./_stackGet'),\n    stackHas = require('./_stackHas'),\n    stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\nmodule.exports = arrayEach;\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nimport { UploadValidator } from './upload-validator';\nimport { FileSizeValidation } from './validations/file-size-validation';\nimport { AllowedExtensionsValidation } from './validations/allowed-extensions-validation';\nimport { BlockedExtensionsValidation } from './validations/blocked-extensions-validation';\nimport { convertToBytes } from '../../core/utils/convertToBytes';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../../core/config/settings.service\";\nimport * as i2 from \"../../core/ui/toast.service\";\nimport * as i3 from \"../../core/translations/translations.service\";\nvar DefaultUploadValidator = /** @class */ (function (_super) {\n    __extends(DefaultUploadValidator, _super);\n    function DefaultUploadValidator() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.DEFAULT_MAX_FILE_SIZE_MB = 8;\n        return _this;\n    }\n    DefaultUploadValidator.prototype.initValidations = function () {\n        this.validations.push(new FileSizeValidation({ maxSize: this.getMaxFileSize() }, this.i18n));\n        var allowedExtensions = this.getAllowedExtensions(), blockedExtensions = this.getBlockedExtensions();\n        if (allowedExtensions && allowedExtensions.length) {\n            this.validations.push(new AllowedExtensionsValidation({ extensions: allowedExtensions }, this.i18n));\n        }\n        if (blockedExtensions && blockedExtensions.length) {\n            this.validations.push(new BlockedExtensionsValidation({ extensions: blockedExtensions }, this.i18n));\n        }\n    };\n    DefaultUploadValidator.prototype.getMaxFileSize = function () {\n        return this.settings.get('uploads.max_size', convertToBytes(this.DEFAULT_MAX_FILE_SIZE_MB, 'MB'));\n    };\n    DefaultUploadValidator.prototype.getAllowedExtensions = function () {\n        return this.settings.getJson('uploads.allowed_extensions');\n    };\n    DefaultUploadValidator.prototype.getBlockedExtensions = function () {\n        return this.settings.getJson('uploads.blocked_extensions');\n    };\n    DefaultUploadValidator.ngInjectableDef = i0.defineInjectable({ factory: function DefaultUploadValidator_Factory() { return new DefaultUploadValidator(i0.inject(i1.Settings), i0.inject(i2.Toast), i0.inject(i3.Translations)); }, token: DefaultUploadValidator, providedIn: \"root\" });\n    return DefaultUploadValidator;\n}(UploadValidator));\nexport { DefaultUploadValidator };\n","var __assign = (this && this.__assign) || Object.assign || function(t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n        s = arguments[i];\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n            t[p] = s[p];\n    }\n    return t;\n};\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { randomString } from '../../core/utils/random-string';\nvar UploadQueueItem = /** @class */ (function () {\n    function UploadQueueItem(file) {\n        this.id = randomString();\n        this.canceled$ = new Subject();\n        // meta information (will change)\n        this.meta$ = new BehaviorSubject({});\n        this.filename = file.name;\n        this.size = file.size;\n        this.mime = file.mime;\n    }\n    Object.defineProperty(UploadQueueItem.prototype, \"completed\", {\n        get: function () {\n            return this.meta$.value.progress === 100;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(UploadQueueItem.prototype, \"pending\", {\n        get: function () {\n            return this.meta$.value.progress == null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(UploadQueueItem.prototype, \"hasError\", {\n        get: function () {\n            return this.meta$.value.error != null;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    UploadQueueItem.prototype.update = function (data) {\n        this.meta$.next(__assign({}, this.meta$.value, data));\n    };\n    UploadQueueItem.prototype.cancel = function () {\n        this.canceled$.next(true);\n        this.canceled$.complete();\n    };\n    UploadQueueItem.prototype.complete = function () {\n        this.update({ progress: 100 });\n    };\n    UploadQueueItem.prototype.addError = function (message) {\n        if (message === void 0) { message = ''; }\n        this.update({ error: message });\n    };\n    return UploadQueueItem;\n}());\nexport { UploadQueueItem };\n","import { BehaviorSubject, Subject } from 'rxjs';\r\nimport { randomString } from '../../core/utils/random-string';\r\nimport { UploadedFile } from '../uploaded-file';\r\nimport {FileEntry} from '../file-entry';\r\n\r\nexport interface UploadQueueItemMeta {\r\n    progress: number;\r\n    speed: string;\r\n    eta: string;\r\n    totalBytes: number;\r\n    completedBytes: number;\r\n    error: string|false;\r\n}\r\n\r\nexport class UploadQueueItem {\r\n    id: string = randomString();\r\n    canceled$: Subject<boolean> = new Subject();\r\n\r\n    // file info (static)\r\n    filename: string;\r\n    size: number;\r\n    mime: string;\r\n\r\n    // only available on completed uploads\r\n    fileEntry?: FileEntry;\r\n\r\n    // meta information (will change)\r\n    meta$: BehaviorSubject<Partial<UploadQueueItemMeta>> = new BehaviorSubject({});\r\n\r\n    get completed(): boolean {\r\n        return this.meta$.value.progress === 100;\r\n    }\r\n\r\n    get pending(): boolean {\r\n        return this.meta$.value.progress == null;\r\n    }\r\n\r\n    get hasError(): boolean {\r\n        return this.meta$.value.error != null;\r\n    }\r\n\r\n    constructor(file: UploadedFile) {\r\n        this.filename = file.name;\r\n        this.size = file.size;\r\n        this.mime = file.mime;\r\n    }\r\n\r\n    public update(data: Partial<UploadQueueItemMeta>) {\r\n        this.meta$.next({\r\n            ...this.meta$.value,\r\n            ...data,\r\n        });\r\n    }\r\n\r\n    public cancel() {\r\n        this.canceled$.next(true);\r\n        this.canceled$.complete();\r\n    }\r\n\r\n    public complete() {\r\n        this.update({progress: 100});\r\n    }\r\n\r\n    public addError(message: string = '') {\r\n        this.update({error: message});\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {UploadValidator} from './upload-validator';\r\nimport {FileSizeValidation} from './validations/file-size-validation';\r\nimport {AllowedExtensionsValidation} from './validations/allowed-extensions-validation';\r\nimport {BlockedExtensionsValidation} from './validations/blocked-extensions-validation';\r\nimport {convertToBytes} from '../../core/utils/convertToBytes';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class DefaultUploadValidator extends UploadValidator {\r\n    protected readonly DEFAULT_MAX_FILE_SIZE_MB = 8;\r\n\r\n    protected initValidations() {\r\n        this.validations.push(\r\n            new FileSizeValidation(\r\n                {maxSize: this.getMaxFileSize()},\r\n                this.i18n\r\n            )\r\n        );\r\n\r\n        const allowedExtensions = this.getAllowedExtensions(),\r\n            blockedExtensions = this.getBlockedExtensions();\r\n\r\n        if (allowedExtensions && allowedExtensions.length) {\r\n            this.validations.push(new AllowedExtensionsValidation(\r\n                {extensions: allowedExtensions}, this.i18n\r\n            ));\r\n        }\r\n\r\n        if (blockedExtensions && blockedExtensions.length) {\r\n            this.validations.push(new BlockedExtensionsValidation(\r\n                {extensions: blockedExtensions}, this.i18n\r\n            ));\r\n        }\r\n    }\r\n\r\n    protected getMaxFileSize(): number {\r\n        return this.settings.get(\r\n            'uploads.max_size',\r\n            convertToBytes(this.DEFAULT_MAX_FILE_SIZE_MB, 'MB')\r\n        );\r\n    }\r\n\r\n    protected getAllowedExtensions() {\r\n        return this.settings.getJson('uploads.allowed_extensions');\r\n    }\r\n\r\n    protected getBlockedExtensions() {\r\n        return this.settings.getJson('uploads.blocked_extensions');\r\n    }\r\n}\r\n","import { Injectable, NgZone } from '@angular/core';\r\nimport { UploadQueueItem } from './upload-queue-item';\r\nimport {BehaviorSubject, concat, Observable} from 'rxjs';\r\nimport {filter, map, takeUntil, tap} from 'rxjs/operators';\r\nimport { UploadedFile } from '../uploaded-file';\r\nimport { UploadCompletedEvent, UploadEvent, UploadEventTypes, UploadProgressEvent } from '../utils/upload-progress-event';\r\nimport { UploadApiConfig, UploadsApiService } from '../uploads-api.service';\r\nimport { FileEntry } from '../file-entry';\r\nimport { UploadValidator } from '../validation/upload-validator';\r\nimport { BackendErrorResponse } from '../../core/types/backend-error-response';\r\nimport {DefaultUploadValidator} from '../validation/default-upload-validator';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class UploadQueueService {\r\n    private uploads$: BehaviorSubject<UploadQueueItem[]> = new BehaviorSubject([]);\r\n    private totalProgress$: BehaviorSubject<number> = new BehaviorSubject(0);\r\n\r\n    constructor(\r\n        private api: UploadsApiService,\r\n        private zone: NgZone,\r\n        private defaultValidator: DefaultUploadValidator,\r\n    ) {}\r\n\r\n    public getAll(): Observable<UploadQueueItem[]> {\r\n        return this.uploads$.asObservable();\r\n    }\r\n\r\n    public getAllCompleted(): FileEntry[] {\r\n        return this.uploads$.value\r\n            .filter(queueItem => queueItem.completed)\r\n            .map(queueItem => queueItem.fileEntry);\r\n    }\r\n\r\n    public getPendingCount(): Observable<number> {\r\n        return this.uploads$.pipe(map(uploads => {\r\n            return uploads.filter(upload => !upload.completed).length;\r\n        }));\r\n    }\r\n\r\n    public getCompletedCount(): Observable<number> {\r\n        return this.uploads$.pipe(map(uploads => {\r\n            return uploads.filter(upload => upload.completed).length;\r\n        }));\r\n    }\r\n\r\n    public updateTotalProgress() {\r\n        const progress = this.uploads$.value.map(upload => upload.meta$.value.progress || 0);\r\n        this.totalProgress$.next(progress.reduce((p, c) => p + c, 0) / progress.length);\r\n    }\r\n\r\n    public totalProgress() {\r\n        return this.totalProgress$.asObservable();\r\n    }\r\n\r\n    public start(files: UploadedFile[], config: UploadApiConfig = {}): Observable<FileEntry> {\r\n        const uploads = this.transformUploads(files, config.validator || this.defaultValidator);\r\n        this.uploads$.next(this.uploads$.value.concat(uploads));\r\n\r\n        const requests = uploads\r\n            .filter(upload => !upload.hasError)\r\n            .map((upload, key) => {\r\n                return this.api.upload(files[key], config).pipe(\r\n                    takeUntil(upload.canceled$),\r\n                    tap(\r\n                        response => this.handleUploadEvent(response, upload),\r\n                        response => this.handleUploadFailure(response, upload),\r\n                    ),\r\n                );\r\n            });\r\n\r\n        return concat(...requests)\r\n            .pipe(\r\n                filter(e => e.name === UploadEventTypes.COMPLETED),\r\n                map((e: UploadCompletedEvent) => e.fileEntry)\r\n            );\r\n    }\r\n\r\n    public updateProgress(id: string, e: UploadProgressEvent) {\r\n        const queueItem = this.find(id);\r\n        if ( ! queueItem) return;\r\n\r\n        queueItem.update({\r\n            eta: e.eta,\r\n            speed: e.speed,\r\n            progress: e.progress,\r\n            totalBytes: e.totalBytes,\r\n            completedBytes: e.completedBytes,\r\n        });\r\n\r\n        this.updateTotalProgress();\r\n    }\r\n\r\n    public completeUpload(id: string, fileEntry: FileEntry) {\r\n        const queueItem = this.find(id);\r\n        if ( ! queueItem) return;\r\n\r\n        queueItem.fileEntry = fileEntry;\r\n        queueItem.complete();\r\n    }\r\n\r\n    public errorUpload(id: string, message: string = '') {\r\n        this.find(id).addError(message);\r\n    }\r\n\r\n    public reset() {\r\n        this.uploads$.next([]);\r\n    }\r\n\r\n    public remove(id: string) {\r\n        const i = this.uploads$.value.findIndex(u => u.id === id);\r\n        this.uploads$.value.splice(i, 1);\r\n        this.uploads$.next(this.uploads$.value);\r\n    }\r\n\r\n    protected find(id: string): UploadQueueItem {\r\n        return this.uploads$.value.find(u => u.id === id);\r\n    }\r\n\r\n    /**\r\n     * Transform specified files into upload queue items.\r\n     */\r\n    protected transformUploads(files: UploadedFile[], validator: UploadValidator) {\r\n        return files.map(file => {\r\n            const activeUpload = new UploadQueueItem(file);\r\n\r\n            // validate upload\r\n            if (validator) {\r\n                const result = validator.validate(file);\r\n                if (result.failed) activeUpload.addError(result.errorMessage);\r\n            }\r\n\r\n            // remove upload, if it is canceled by user\r\n            activeUpload.canceled$.subscribe(() => {\r\n                this.remove(activeUpload.id);\r\n            });\r\n\r\n            return activeUpload;\r\n        });\r\n    }\r\n\r\n    protected handleUploadEvent(event: UploadEvent, upload: UploadQueueItem) {\r\n        if (event.name === UploadEventTypes.PROGRESS) {\r\n            this.zone.run(() => {\r\n                this.updateProgress(upload.id, event);\r\n            });\r\n        } else if (event.name === UploadEventTypes.COMPLETED) {\r\n            this.zone.run(() => {\r\n                this.completeUpload(upload.id, event.fileEntry);\r\n            });\r\n        }\r\n    }\r\n\r\n    protected handleUploadFailure(response: BackendErrorResponse, upload: UploadQueueItem) {\r\n        const msg = response.messages ? response.messages.file : '';\r\n        this.errorUpload(upload.id, msg);\r\n    }\r\n}\r\n","import { NgZone } from '@angular/core';\nimport { UploadQueueItem } from './upload-queue-item';\nimport { BehaviorSubject, concat } from 'rxjs';\nimport { filter, map, takeUntil, tap } from 'rxjs/operators';\nimport { UploadEventTypes } from '../utils/upload-progress-event';\nimport { UploadsApiService } from '../uploads-api.service';\nimport { DefaultUploadValidator } from '../validation/default-upload-validator';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../uploads-api.service\";\nimport * as i2 from \"../validation/default-upload-validator\";\nvar UploadQueueService = /** @class */ (function () {\n    function UploadQueueService(api, zone, defaultValidator) {\n        this.api = api;\n        this.zone = zone;\n        this.defaultValidator = defaultValidator;\n        this.uploads$ = new BehaviorSubject([]);\n        this.totalProgress$ = new BehaviorSubject(0);\n    }\n    UploadQueueService.prototype.getAll = function () {\n        return this.uploads$.asObservable();\n    };\n    UploadQueueService.prototype.getAllCompleted = function () {\n        return this.uploads$.value\n            .filter(function (queueItem) { return queueItem.completed; })\n            .map(function (queueItem) { return queueItem.fileEntry; });\n    };\n    UploadQueueService.prototype.getPendingCount = function () {\n        return this.uploads$.pipe(map(function (uploads) {\n            return uploads.filter(function (upload) { return !upload.completed; }).length;\n        }));\n    };\n    UploadQueueService.prototype.getCompletedCount = function () {\n        return this.uploads$.pipe(map(function (uploads) {\n            return uploads.filter(function (upload) { return upload.completed; }).length;\n        }));\n    };\n    UploadQueueService.prototype.updateTotalProgress = function () {\n        var progress = this.uploads$.value.map(function (upload) { return upload.meta$.value.progress || 0; });\n        this.totalProgress$.next(progress.reduce(function (p, c) { return p + c; }, 0) / progress.length);\n    };\n    UploadQueueService.prototype.totalProgress = function () {\n        return this.totalProgress$.asObservable();\n    };\n    UploadQueueService.prototype.start = function (files, config) {\n        var _this = this;\n        if (config === void 0) { config = {}; }\n        var uploads = this.transformUploads(files, config.validator || this.defaultValidator);\n        this.uploads$.next(this.uploads$.value.concat(uploads));\n        var requests = uploads\n            .filter(function (upload) { return !upload.hasError; })\n            .map(function (upload, key) {\n            return _this.api.upload(files[key], config).pipe(takeUntil(upload.canceled$), tap(function (response) { return _this.handleUploadEvent(response, upload); }, function (response) { return _this.handleUploadFailure(response, upload); }));\n        });\n        return concat.apply(void 0, requests).pipe(filter(function (e) { return e.name === UploadEventTypes.COMPLETED; }), map(function (e) { return e.fileEntry; }));\n    };\n    UploadQueueService.prototype.updateProgress = function (id, e) {\n        var queueItem = this.find(id);\n        if (!queueItem)\n            return;\n        queueItem.update({\n            eta: e.eta,\n            speed: e.speed,\n            progress: e.progress,\n            totalBytes: e.totalBytes,\n            completedBytes: e.completedBytes,\n        });\n        this.updateTotalProgress();\n    };\n    UploadQueueService.prototype.completeUpload = function (id, fileEntry) {\n        var queueItem = this.find(id);\n        if (!queueItem)\n            return;\n        queueItem.fileEntry = fileEntry;\n        queueItem.complete();\n    };\n    UploadQueueService.prototype.errorUpload = function (id, message) {\n        if (message === void 0) { message = ''; }\n        this.find(id).addError(message);\n    };\n    UploadQueueService.prototype.reset = function () {\n        this.uploads$.next([]);\n    };\n    UploadQueueService.prototype.remove = function (id) {\n        var i = this.uploads$.value.findIndex(function (u) { return u.id === id; });\n        this.uploads$.value.splice(i, 1);\n        this.uploads$.next(this.uploads$.value);\n    };\n    UploadQueueService.prototype.find = function (id) {\n        return this.uploads$.value.find(function (u) { return u.id === id; });\n    };\n    /**\n     * Transform specified files into upload queue items.\n     */\n    UploadQueueService.prototype.transformUploads = function (files, validator) {\n        var _this = this;\n        return files.map(function (file) {\n            var activeUpload = new UploadQueueItem(file);\n            // validate upload\n            if (validator) {\n                var result = validator.validate(file);\n                if (result.failed)\n                    activeUpload.addError(result.errorMessage);\n            }\n            // remove upload, if it is canceled by user\n            activeUpload.canceled$.subscribe(function () {\n                _this.remove(activeUpload.id);\n            });\n            return activeUpload;\n        });\n    };\n    UploadQueueService.prototype.handleUploadEvent = function (event, upload) {\n        var _this = this;\n        if (event.name === UploadEventTypes.PROGRESS) {\n            this.zone.run(function () {\n                _this.updateProgress(upload.id, event);\n            });\n        }\n        else if (event.name === UploadEventTypes.COMPLETED) {\n            this.zone.run(function () {\n                _this.completeUpload(upload.id, event.fileEntry);\n            });\n        }\n    };\n    UploadQueueService.prototype.handleUploadFailure = function (response, upload) {\n        var msg = response.messages ? response.messages.file : '';\n        this.errorUpload(upload.id, msg);\n    };\n    UploadQueueService.ngInjectableDef = i0.defineInjectable({ factory: function UploadQueueService_Factory() { return new UploadQueueService(i0.inject(i1.UploadsApiService), i0.inject(i0.NgZone), i0.inject(i2.DefaultUploadValidator)); }, token: UploadQueueService, providedIn: \"root\" });\n    return UploadQueueService;\n}());\nexport { UploadQueueService };\n","var baseHasIn = require('./_baseHasIn'),\n    hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array == null ? 0 : array.length;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","var assignValue = require('./_assignValue'),\n    baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nmodule.exports = copyObject;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { InjectionToken, Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Input, Output, ViewChild, ViewEncapsulation, NgZone, Optional, Inject, NgModule } from '@angular/core';\nimport { __extends } from 'tslib';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Platform } from '@angular/cdk/platform';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatRipple, mixinColor, mixinDisabled, mixinDisableRipple, mixinTabIndex, GestureConfig, MatCommonModule, MatRippleModule } from '@angular/material/core';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Injection token to be used to override the default options for `mat-slide-toggle`.\n */\nvar /** @type {?} */ MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS = new InjectionToken('mat-slide-toggle-default-options', {\n    providedIn: 'root',\n    factory: function () { return ({ disableToggleValue: false, disableDragValue: false }); }\n});\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n// Increasing integer for generating unique ids for slide-toggle components.\nvar /** @type {?} */ nextUniqueId = 0;\nvar /** @type {?} */ MAT_SLIDE_TOGGLE_VALUE_ACCESSOR = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(function () { return MatSlideToggle; }),\n    multi: true\n};\n/**\n * Change event object emitted by a MatSlideToggle.\n */\nvar  /**\n * Change event object emitted by a MatSlideToggle.\n */\nMatSlideToggleChange = /** @class */ (function () {\n    function MatSlideToggleChange(source, checked) {\n        this.source = source;\n        this.checked = checked;\n    }\n    return MatSlideToggleChange;\n}());\n/**\n * \\@docs-private\n */\nvar  /**\n * \\@docs-private\n */\nMatSlideToggleBase = /** @class */ (function () {\n    function MatSlideToggleBase(_elementRef) {\n        this._elementRef = _elementRef;\n    }\n    return MatSlideToggleBase;\n}());\nvar /** @type {?} */ _MatSlideToggleMixinBase = mixinTabIndex(mixinColor(mixinDisableRipple(mixinDisabled(MatSlideToggleBase)), 'accent'));\n/**\n * Represents a slidable \"switch\" toggle that can be moved between on and off.\n */\nvar MatSlideToggle = /** @class */ (function (_super) {\n    __extends(MatSlideToggle, _super);\n    function MatSlideToggle(elementRef, /**\n                   * @deprecated The `_platform` parameter to be removed.\n                   * @breaking-change 7.0.0\n                   */\n    /**\n     * @deprecated The `_platform` parameter to be removed.\n     * @breaking-change 7.0.0\n     */\n    _platform, _focusMonitor, _changeDetectorRef, tabIndex, _ngZone, defaults, _animationMode, _dir) {\n        var _this = _super.call(this, elementRef) || this;\n        _this._focusMonitor = _focusMonitor;\n        _this._changeDetectorRef = _changeDetectorRef;\n        _this._ngZone = _ngZone;\n        _this.defaults = defaults;\n        _this._animationMode = _animationMode;\n        _this._dir = _dir;\n        _this.onChange = function (_) { };\n        _this.onTouched = function () { };\n        _this._uniqueId = \"mat-slide-toggle-\" + ++nextUniqueId;\n        _this._required = false;\n        _this._checked = false;\n        /**\n         * Whether the thumb is currently being dragged.\n         */\n        _this._dragging = false;\n        /**\n         * Name value will be applied to the input element if present\n         */\n        _this.name = null;\n        /**\n         * A unique id for the slide-toggle input. If none is supplied, it will be auto-generated.\n         */\n        _this.id = _this._uniqueId;\n        /**\n         * Whether the label should appear after or before the slide-toggle. Defaults to 'after'\n         */\n        _this.labelPosition = 'after';\n        /**\n         * Used to set the aria-label attribute on the underlying input element.\n         */\n        _this.ariaLabel = null;\n        /**\n         * Used to set the aria-labelledby attribute on the underlying input element.\n         */\n        _this.ariaLabelledby = null;\n        /**\n         * An event will be dispatched each time the slide-toggle changes its value.\n         */\n        _this.change = new EventEmitter();\n        /**\n         * An event will be dispatched each time the slide-toggle input is toggled.\n         * This event always fire when user toggle the slide toggle, but does not mean the slide toggle's\n         * value is changed. The event does not fire when user drag to change the slide toggle value.\n         */\n        _this.toggleChange = new EventEmitter();\n        /**\n         * An event will be dispatched each time the slide-toggle is dragged.\n         * This event always fire when user drag the slide toggle to make a change that greater than 50%.\n         * It does not mean the slide toggle's value is changed. The event does not fire when user toggle\n         * the slide toggle to change the slide toggle's value.\n         */\n        _this.dragChange = new EventEmitter();\n        _this.tabIndex = parseInt(tabIndex) || 0;\n        return _this;\n    }\n    Object.defineProperty(MatSlideToggle.prototype, \"required\", {\n        get: /**\n         * Whether the slide-toggle is required.\n         * @return {?}\n         */\n        function () { return this._required; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) { this._required = coerceBooleanProperty(value); },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatSlideToggle.prototype, \"checked\", {\n        get: /**\n         * Whether the slide-toggle element is checked or not\n         * @return {?}\n         */\n        function () { return this._checked; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._checked = coerceBooleanProperty(value);\n            this._changeDetectorRef.markForCheck();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatSlideToggle.prototype, \"inputId\", {\n        /** Returns the unique id for the visual hidden input. */\n        get: /**\n         * Returns the unique id for the visual hidden input.\n         * @return {?}\n         */\n        function () { return (this.id || this._uniqueId) + \"-input\"; },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @return {?}\n     */\n    MatSlideToggle.prototype.ngAfterContentInit = /**\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        this._focusMonitor\n            .monitor(this._inputElement.nativeElement)\n            .subscribe(function (focusOrigin) { return _this._onInputFocusChange(focusOrigin); });\n    };\n    /**\n     * @return {?}\n     */\n    MatSlideToggle.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        this._focusMonitor.stopMonitoring(this._inputElement.nativeElement);\n    };\n    /** Method being called whenever the underlying input emits a change event. */\n    /**\n     * Method being called whenever the underlying input emits a change event.\n     * @param {?} event\n     * @return {?}\n     */\n    MatSlideToggle.prototype._onChangeEvent = /**\n     * Method being called whenever the underlying input emits a change event.\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        // We always have to stop propagation on the change event.\n        // Otherwise the change event, from the input element, will bubble up and\n        // emit its event object to the component's `change` output.\n        event.stopPropagation();\n        if (!this._dragging) {\n            this.toggleChange.emit();\n        }\n        // Releasing the pointer over the `<label>` element while dragging triggers another\n        // click event on the `<label>` element. This means that the checked state of the underlying\n        // input changed unintentionally and needs to be changed back. Or when the slide toggle's config\n        // disabled toggle change event by setting `disableToggleValue: true`, the slide toggle's value\n        // does not change, and the checked state of the underlying input needs to be changed back.\n        if (this._dragging || this.defaults.disableToggleValue) {\n            this._inputElement.nativeElement.checked = this.checked;\n            return;\n        }\n        // Sync the value from the underlying input element with the component instance.\n        this.checked = this._inputElement.nativeElement.checked;\n        // Emit our custom change event only if the underlying input emitted one. This ensures that\n        // there is no change event, when the checked state changes programmatically.\n        this._emitChangeEvent();\n    };\n    /** Method being called whenever the slide-toggle has been clicked. */\n    /**\n     * Method being called whenever the slide-toggle has been clicked.\n     * @param {?} event\n     * @return {?}\n     */\n    MatSlideToggle.prototype._onInputClick = /**\n     * Method being called whenever the slide-toggle has been clicked.\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        // We have to stop propagation for click events on the visual hidden input element.\n        // By default, when a user clicks on a label element, a generated click event will be\n        // dispatched on the associated input element. Since we are using a label element as our\n        // root container, the click event on the `slide-toggle` will be executed twice.\n        // The real click event will bubble up, and the generated click event also tries to bubble up.\n        // This will lead to multiple click events.\n        // Preventing bubbling for the second event will solve that issue.\n        event.stopPropagation();\n    };\n    /** Implemented as part of ControlValueAccessor. */\n    /**\n     * Implemented as part of ControlValueAccessor.\n     * @param {?} value\n     * @return {?}\n     */\n    MatSlideToggle.prototype.writeValue = /**\n     * Implemented as part of ControlValueAccessor.\n     * @param {?} value\n     * @return {?}\n     */\n    function (value) {\n        this.checked = !!value;\n    };\n    /** Implemented as part of ControlValueAccessor. */\n    /**\n     * Implemented as part of ControlValueAccessor.\n     * @param {?} fn\n     * @return {?}\n     */\n    MatSlideToggle.prototype.registerOnChange = /**\n     * Implemented as part of ControlValueAccessor.\n     * @param {?} fn\n     * @return {?}\n     */\n    function (fn) {\n        this.onChange = fn;\n    };\n    /** Implemented as part of ControlValueAccessor. */\n    /**\n     * Implemented as part of ControlValueAccessor.\n     * @param {?} fn\n     * @return {?}\n     */\n    MatSlideToggle.prototype.registerOnTouched = /**\n     * Implemented as part of ControlValueAccessor.\n     * @param {?} fn\n     * @return {?}\n     */\n    function (fn) {\n        this.onTouched = fn;\n    };\n    /** Implemented as a part of ControlValueAccessor. */\n    /**\n     * Implemented as a part of ControlValueAccessor.\n     * @param {?} isDisabled\n     * @return {?}\n     */\n    MatSlideToggle.prototype.setDisabledState = /**\n     * Implemented as a part of ControlValueAccessor.\n     * @param {?} isDisabled\n     * @return {?}\n     */\n    function (isDisabled) {\n        this.disabled = isDisabled;\n        this._changeDetectorRef.markForCheck();\n    };\n    /** Focuses the slide-toggle. */\n    /**\n     * Focuses the slide-toggle.\n     * @return {?}\n     */\n    MatSlideToggle.prototype.focus = /**\n     * Focuses the slide-toggle.\n     * @return {?}\n     */\n    function () {\n        this._focusMonitor.focusVia(this._inputElement.nativeElement, 'keyboard');\n    };\n    /** Toggles the checked state of the slide-toggle. */\n    /**\n     * Toggles the checked state of the slide-toggle.\n     * @return {?}\n     */\n    MatSlideToggle.prototype.toggle = /**\n     * Toggles the checked state of the slide-toggle.\n     * @return {?}\n     */\n    function () {\n        this.checked = !this.checked;\n        this.onChange(this.checked);\n    };\n    /**\n     * Function is called whenever the focus changes for the input element.\n     * @param {?} focusOrigin\n     * @return {?}\n     */\n    MatSlideToggle.prototype._onInputFocusChange = /**\n     * Function is called whenever the focus changes for the input element.\n     * @param {?} focusOrigin\n     * @return {?}\n     */\n    function (focusOrigin) {\n        var _this = this;\n        // TODO(paul): support `program`. See https://github.com/angular/material2/issues/9889\n        if (!this._focusRipple && focusOrigin === 'keyboard') {\n            // For keyboard focus show a persistent ripple as focus indicator.\n            this._focusRipple = this._ripple.launch(0, 0, { persistent: true });\n        }\n        else if (!focusOrigin) {\n            // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n            // Angular does not expect events to be raised during change detection, so any state change\n            // (such as a form control's 'ng-touched') will cause a changed-after-checked error.\n            // See https://github.com/angular/angular/issues/17793. To work around this, we defer telling\n            // the form control it has been touched until the next tick.\n            Promise.resolve().then(function () { return _this.onTouched(); });\n            // Fade out and clear the focus ripple if one is currently present.\n            if (this._focusRipple) {\n                this._focusRipple.fadeOut();\n                this._focusRipple = null;\n            }\n        }\n    };\n    /**\n     * Emits a change event on the `change` output. Also notifies the FormControl about the change.\n     * @return {?}\n     */\n    MatSlideToggle.prototype._emitChangeEvent = /**\n     * Emits a change event on the `change` output. Also notifies the FormControl about the change.\n     * @return {?}\n     */\n    function () {\n        this.onChange(this.checked);\n        this.change.emit(new MatSlideToggleChange(this, this.checked));\n    };\n    /**\n     * Retrieves the percentage of thumb from the moved distance. Percentage as fraction of 100.\n     * @param {?} distance\n     * @return {?}\n     */\n    MatSlideToggle.prototype._getDragPercentage = /**\n     * Retrieves the percentage of thumb from the moved distance. Percentage as fraction of 100.\n     * @param {?} distance\n     * @return {?}\n     */\n    function (distance) {\n        var /** @type {?} */ percentage = (distance / this._thumbBarWidth) * 100;\n        // When the toggle was initially checked, then we have to start the drag at the end.\n        if (this._previousChecked) {\n            percentage += 100;\n        }\n        return Math.max(0, Math.min(percentage, 100));\n    };\n    /**\n     * @return {?}\n     */\n    MatSlideToggle.prototype._onDragStart = /**\n     * @return {?}\n     */\n    function () {\n        if (!this.disabled && !this._dragging) {\n            var /** @type {?} */ thumbEl = this._thumbEl.nativeElement;\n            this._thumbBarWidth = this._thumbBarEl.nativeElement.clientWidth - thumbEl.clientWidth;\n            thumbEl.classList.add('mat-dragging');\n            this._previousChecked = this.checked;\n            this._dragging = true;\n        }\n    };\n    /**\n     * @param {?} event\n     * @return {?}\n     */\n    MatSlideToggle.prototype._onDrag = /**\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        if (this._dragging) {\n            var /** @type {?} */ direction = this._dir && this._dir.value === 'rtl' ? -1 : 1;\n            this._dragPercentage = this._getDragPercentage(event.deltaX * direction);\n            // Calculate the moved distance based on the thumb bar width.\n            var /** @type {?} */ dragX = (this._dragPercentage / 100) * this._thumbBarWidth * direction;\n            this._thumbEl.nativeElement.style.transform = \"translate3d(\" + dragX + \"px, 0, 0)\";\n        }\n    };\n    /**\n     * @return {?}\n     */\n    MatSlideToggle.prototype._onDragEnd = /**\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        if (this._dragging) {\n            var /** @type {?} */ newCheckedValue = this._dragPercentage > 50;\n            if (newCheckedValue !== this.checked) {\n                this.dragChange.emit();\n                if (!this.defaults.disableDragValue) {\n                    this.checked = newCheckedValue;\n                    this._emitChangeEvent();\n                }\n            }\n            // The drag should be stopped outside of the current event handler, otherwise the\n            // click event will be fired before it and will revert the drag change.\n            this._ngZone.runOutsideAngular(function () {\n                return setTimeout(function () {\n                    if (_this._dragging) {\n                        _this._dragging = false;\n                        _this._thumbEl.nativeElement.classList.remove('mat-dragging');\n                        // Reset the transform because the component will take care\n                        // of the thumb position after drag.\n                        // Reset the transform because the component will take care\n                        // of the thumb position after drag.\n                        _this._thumbEl.nativeElement.style.transform = '';\n                    }\n                });\n            });\n        }\n    };\n    /** Method being called whenever the label text changes. */\n    /**\n     * Method being called whenever the label text changes.\n     * @return {?}\n     */\n    MatSlideToggle.prototype._onLabelTextChange = /**\n     * Method being called whenever the label text changes.\n     * @return {?}\n     */\n    function () {\n        // This method is getting called whenever the label of the slide-toggle changes.\n        // Since the slide-toggle uses the OnPush strategy we need to notify it about the change\n        // that has been recognized by the cdkObserveContent directive.\n        this._changeDetectorRef.markForCheck();\n    };\n    MatSlideToggle.decorators = [\n        { type: Component, args: [{selector: 'mat-slide-toggle',\n                    exportAs: 'matSlideToggle',\n                    host: {\n                        'class': 'mat-slide-toggle',\n                        '[id]': 'id',\n                        '[class.mat-checked]': 'checked',\n                        '[class.mat-disabled]': 'disabled',\n                        '[class.mat-slide-toggle-label-before]': 'labelPosition == \"before\"',\n                        '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n                    },\n                    template: \"<label class=\\\"mat-slide-toggle-label\\\" #label><div #toggleBar class=\\\"mat-slide-toggle-bar\\\" [class.mat-slide-toggle-bar-no-side-margin]=\\\"!labelContent.textContent || !labelContent.textContent.trim()\\\"><input #input class=\\\"mat-slide-toggle-input cdk-visually-hidden\\\" type=\\\"checkbox\\\" [id]=\\\"inputId\\\" [required]=\\\"required\\\" [tabIndex]=\\\"tabIndex\\\" [checked]=\\\"checked\\\" [disabled]=\\\"disabled\\\" [attr.name]=\\\"name\\\" [attr.aria-label]=\\\"ariaLabel\\\" [attr.aria-labelledby]=\\\"ariaLabelledby\\\" (change)=\\\"_onChangeEvent($event)\\\" (click)=\\\"_onInputClick($event)\\\"><div class=\\\"mat-slide-toggle-thumb-container\\\" #thumbContainer (slidestart)=\\\"_onDragStart()\\\" (slide)=\\\"_onDrag($event)\\\" (slideend)=\\\"_onDragEnd()\\\"><div class=\\\"mat-slide-toggle-thumb\\\"></div><div class=\\\"mat-slide-toggle-ripple\\\" mat-ripple [matRippleTrigger]=\\\"label\\\" [matRippleDisabled]=\\\"disableRipple || disabled\\\" [matRippleCentered]=\\\"true\\\" [matRippleRadius]=\\\"23\\\" [matRippleAnimation]=\\\"{enterDuration: 150}\\\"></div></div></div><span class=\\\"mat-slide-toggle-content\\\" #labelContent (cdkObserveContent)=\\\"_onLabelTextChange()\\\"><ng-content></ng-content></span></label>\",\n                    styles: [\".mat-slide-toggle{display:inline-block;height:24px;max-width:100%;line-height:24px;white-space:nowrap;outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{transform:translate3d(16px,0,0)}[dir=rtl] .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{transform:translate3d(-16px,0,0)}.mat-slide-toggle.mat-disabled .mat-slide-toggle-label,.mat-slide-toggle.mat-disabled .mat-slide-toggle-thumb-container{cursor:default}.mat-slide-toggle-label{display:flex;flex:1;flex-direction:row;align-items:center;height:inherit;cursor:pointer}.mat-slide-toggle-content{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-slide-toggle-label-before .mat-slide-toggle-label{order:1}.mat-slide-toggle-label-before .mat-slide-toggle-bar{order:2}.mat-slide-toggle-bar,[dir=rtl] .mat-slide-toggle-label-before .mat-slide-toggle-bar{margin-right:8px;margin-left:0}.mat-slide-toggle-label-before .mat-slide-toggle-bar,[dir=rtl] .mat-slide-toggle-bar{margin-left:8px;margin-right:0}.mat-slide-toggle-bar-no-side-margin{margin-left:0;margin-right:0}.mat-slide-toggle-thumb-container{position:absolute;z-index:1;width:20px;height:20px;top:-3px;left:0;transform:translate3d(0,0,0);transition:all 80ms linear;transition-property:transform;cursor:-webkit-grab;cursor:grab}.mat-slide-toggle-thumb-container.mat-dragging,.mat-slide-toggle-thumb-container:active{cursor:-webkit-grabbing;cursor:grabbing;transition-duration:0s}._mat-animation-noopable .mat-slide-toggle-thumb-container{transition:none}[dir=rtl] .mat-slide-toggle-thumb-container{left:auto;right:0}.mat-slide-toggle-thumb{height:20px;width:20px;border-radius:50%;box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12)}.mat-slide-toggle-bar{position:relative;width:36px;height:14px;flex-shrink:0;border-radius:8px}.mat-slide-toggle-input{bottom:0;left:10px}[dir=rtl] .mat-slide-toggle-input{left:auto;right:10px}.mat-slide-toggle-bar,.mat-slide-toggle-thumb{transition:all 80ms linear;transition-property:background-color;transition-delay:50ms}._mat-animation-noopable .mat-slide-toggle-bar,._mat-animation-noopable .mat-slide-toggle-thumb{transition:none}.mat-slide-toggle-ripple{position:absolute;top:calc(50% - 23px);left:calc(50% - 23px);height:46px;width:46px;z-index:1;pointer-events:none}@media screen and (-ms-high-contrast:active){.mat-slide-toggle-thumb{background:#fff;border:1px solid #000}.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb{background:#000;border:1px solid #fff}.mat-slide-toggle-bar{background:#fff}}@media screen and (-ms-high-contrast:black-on-white){.mat-slide-toggle-bar{border:1px solid #000}}\"],\n                    providers: [MAT_SLIDE_TOGGLE_VALUE_ACCESSOR],\n                    inputs: ['disabled', 'disableRipple', 'color', 'tabIndex'],\n                    encapsulation: ViewEncapsulation.None,\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                },] },\n    ];\n    /** @nocollapse */\n    MatSlideToggle.ctorParameters = function () { return [\n        { type: ElementRef, },\n        { type: Platform, },\n        { type: FocusMonitor, },\n        { type: ChangeDetectorRef, },\n        { type: undefined, decorators: [{ type: Attribute, args: ['tabindex',] },] },\n        { type: NgZone, },\n        { type: undefined, decorators: [{ type: Inject, args: [MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS,] },] },\n        { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] },] },\n        { type: Directionality, decorators: [{ type: Optional },] },\n    ]; };\n    MatSlideToggle.propDecorators = {\n        \"_thumbEl\": [{ type: ViewChild, args: ['thumbContainer',] },],\n        \"_thumbBarEl\": [{ type: ViewChild, args: ['toggleBar',] },],\n        \"name\": [{ type: Input },],\n        \"id\": [{ type: Input },],\n        \"labelPosition\": [{ type: Input },],\n        \"ariaLabel\": [{ type: Input, args: ['aria-label',] },],\n        \"ariaLabelledby\": [{ type: Input, args: ['aria-labelledby',] },],\n        \"required\": [{ type: Input },],\n        \"checked\": [{ type: Input },],\n        \"change\": [{ type: Output },],\n        \"toggleChange\": [{ type: Output },],\n        \"dragChange\": [{ type: Output },],\n        \"_inputElement\": [{ type: ViewChild, args: ['input',] },],\n        \"_ripple\": [{ type: ViewChild, args: [MatRipple,] },],\n    };\n    return MatSlideToggle;\n}(_MatSlideToggleMixinBase));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nvar MatSlideToggleModule = /** @class */ (function () {\n    function MatSlideToggleModule() {\n    }\n    MatSlideToggleModule.decorators = [\n        { type: NgModule, args: [{\n                    imports: [MatRippleModule, MatCommonModule, ObserversModule],\n                    exports: [MatSlideToggle, MatCommonModule],\n                    declarations: [MatSlideToggle],\n                    providers: [\n                        { provide: HAMMER_GESTURE_CONFIG, useClass: GestureConfig }\n                    ],\n                },] },\n    ];\n    return MatSlideToggleModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\nexport { MatSlideToggleModule, MAT_SLIDE_TOGGLE_VALUE_ACCESSOR, MatSlideToggleChange, MatSlideToggleBase, _MatSlideToggleMixinBase, MatSlideToggle, MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS };\n//# sourceMappingURL=slide-toggle.es5.js.map\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n","var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var Stack = require('./_Stack'),\n    baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/sort\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@angular/cdk/table\";\nvar MatSortModuleNgFactory = i0.ɵcmf(i1.MatSortModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i2.NgLocalization, i2.NgLocaleLocalization, [i0.LOCALE_ID, [2, i2.ɵangular_packages_common_common_a]]), i0.ɵmpd(5120, i1.MatSortHeaderIntl, i1.MAT_SORT_HEADER_INTL_PROVIDER_FACTORY, [[3, i1.MatSortHeaderIntl]]), i0.ɵmpd(1073742336, i2.CommonModule, i2.CommonModule, []), i0.ɵmpd(1073742336, i1.MatSortModule, i1.MatSortModule, [])]); });\nexport { MatSortModuleNgFactory as MatSortModuleNgFactory };\nvar styles_MatSortHeader = [\".mat-sort-header-container{display:flex;cursor:pointer;align-items:center}.mat-sort-header-disabled .mat-sort-header-container{cursor:default}.mat-sort-header-position-before{flex-direction:row-reverse}.mat-sort-header-button{border:none;background:0 0;display:flex;align-items:center;padding:0;cursor:inherit;outline:0;font:inherit;color:currentColor}.mat-sort-header-arrow{height:12px;width:12px;min-width:12px;position:relative;display:flex;opacity:0}.mat-sort-header-arrow,[dir=rtl] .mat-sort-header-position-before .mat-sort-header-arrow{margin:0 0 0 6px}.mat-sort-header-position-before .mat-sort-header-arrow,[dir=rtl] .mat-sort-header-arrow{margin:0 6px 0 0}.mat-sort-header-stem{background:currentColor;height:10px;width:2px;margin:auto;display:flex;align-items:center}@media screen and (-ms-high-contrast:active){.mat-sort-header-stem{width:0;border-left:solid 2px}}.mat-sort-header-indicator{width:100%;height:2px;display:flex;align-items:center;position:absolute;top:0;left:0}.mat-sort-header-pointer-middle{margin:auto;height:2px;width:2px;background:currentColor;transform:rotate(45deg)}@media screen and (-ms-high-contrast:active){.mat-sort-header-pointer-middle{width:0;height:0;border-top:solid 2px;border-left:solid 2px}}.mat-sort-header-pointer-left,.mat-sort-header-pointer-right{background:currentColor;width:6px;height:2px;position:absolute;top:0}@media screen and (-ms-high-contrast:active){.mat-sort-header-pointer-left,.mat-sort-header-pointer-right{width:0;height:0;border-left:solid 6px;border-top:solid 2px}}.mat-sort-header-pointer-left{transform-origin:right;left:0}.mat-sort-header-pointer-right{transform-origin:left;right:0}\"];\nvar RenderType_MatSortHeader = i0.ɵcrt({ encapsulation: 2, styles: styles_MatSortHeader, data: { \"animation\": [{ type: 7, name: \"indicator\", definitions: [{ type: 0, name: \"active-asc, asc\", styles: { type: 6, styles: { transform: \"translateY(0px)\" }, offset: null }, options: undefined }, { type: 0, name: \"active-desc, desc\", styles: { type: 6, styles: { transform: \"translateY(10px)\" }, offset: null }, options: undefined }, { type: 1, expr: \"active-asc <=> active-desc\", animation: { type: 4, styles: null, timings: \"225ms cubic-bezier(0.4,0.0,0.2,1)\" }, options: null }], options: {} }, { type: 7, name: \"leftPointer\", definitions: [{ type: 0, name: \"active-asc, asc\", styles: { type: 6, styles: { transform: \"rotate(-45deg)\" }, offset: null }, options: undefined }, { type: 0, name: \"active-desc, desc\", styles: { type: 6, styles: { transform: \"rotate(45deg)\" }, offset: null }, options: undefined }, { type: 1, expr: \"active-asc <=> active-desc\", animation: { type: 4, styles: null, timings: \"225ms cubic-bezier(0.4,0.0,0.2,1)\" }, options: null }], options: {} }, { type: 7, name: \"rightPointer\", definitions: [{ type: 0, name: \"active-asc, asc\", styles: { type: 6, styles: { transform: \"rotate(45deg)\" }, offset: null }, options: undefined }, { type: 0, name: \"active-desc, desc\", styles: { type: 6, styles: { transform: \"rotate(-45deg)\" }, offset: null }, options: undefined }, { type: 1, expr: \"active-asc <=> active-desc\", animation: { type: 4, styles: null, timings: \"225ms cubic-bezier(0.4,0.0,0.2,1)\" }, options: null }], options: {} }, { type: 7, name: \"arrowOpacity\", definitions: [{ type: 0, name: \"desc-to-active, asc-to-active, active\", styles: { type: 6, styles: { opacity: 1 }, offset: null }, options: undefined }, { type: 0, name: \"desc-to-hint, asc-to-hint, hint\", styles: { type: 6, styles: { opacity: 0.54 }, offset: null }, options: undefined }, { type: 0, name: \"hint-to-desc, active-to-desc, desc, hint-to-asc, active-to-asc, asc, void\", styles: { type: 6, styles: { opacity: 0 }, offset: null }, options: undefined }, { type: 1, expr: \"* => asc, * => desc, * => active, * => hint, * => void\", animation: { type: 4, styles: null, timings: \"0ms\" }, options: null }, { type: 1, expr: \"* <=> *\", animation: { type: 4, styles: null, timings: \"225ms cubic-bezier(0.4,0.0,0.2,1)\" }, options: null }], options: {} }, { type: 7, name: \"arrowPosition\", definitions: [{ type: 1, expr: \"* => desc-to-hint, * => desc-to-active\", animation: { type: 4, styles: { type: 5, steps: [{ type: 6, styles: { transform: \"translateY(-25%)\" }, offset: null }, { type: 6, styles: { transform: \"translateY(0)\" }, offset: null }] }, timings: \"225ms cubic-bezier(0.4,0.0,0.2,1)\" }, options: null }, { type: 1, expr: \"* => hint-to-desc, * => active-to-desc\", animation: { type: 4, styles: { type: 5, steps: [{ type: 6, styles: { transform: \"translateY(0)\" }, offset: null }, { type: 6, styles: { transform: \"translateY(25%)\" }, offset: null }] }, timings: \"225ms cubic-bezier(0.4,0.0,0.2,1)\" }, options: null }, { type: 1, expr: \"* => asc-to-hint, * => asc-to-active\", animation: { type: 4, styles: { type: 5, steps: [{ type: 6, styles: { transform: \"translateY(25%)\" }, offset: null }, { type: 6, styles: { transform: \"translateY(0)\" }, offset: null }] }, timings: \"225ms cubic-bezier(0.4,0.0,0.2,1)\" }, options: null }, { type: 1, expr: \"* => hint-to-asc, * => active-to-asc\", animation: { type: 4, styles: { type: 5, steps: [{ type: 6, styles: { transform: \"translateY(0)\" }, offset: null }, { type: 6, styles: { transform: \"translateY(-25%)\" }, offset: null }] }, timings: \"225ms cubic-bezier(0.4,0.0,0.2,1)\" }, options: null }, { type: 0, name: \"desc-to-hint, asc-to-hint, hint, desc-to-active, asc-to-active, active\", styles: { type: 6, styles: { transform: \"translateY(0)\" }, offset: null }, options: undefined }, { type: 0, name: \"hint-to-desc, active-to-desc, desc\", styles: { type: 6, styles: { transform: \"translateY(-25%)\" }, offset: null }, options: undefined }, { type: 0, name: \"hint-to-asc, active-to-asc, asc\", styles: { type: 6, styles: { transform: \"translateY(25%)\" }, offset: null }, options: undefined }], options: {} }, { type: 7, name: \"allowChildren\", definitions: [{ type: 1, expr: \"* <=> *\", animation: [{ type: 11, selector: \"@*\", animation: { type: 9, options: null }, options: { optional: true } }], options: null }], options: {} }] } });\nexport { RenderType_MatSortHeader as RenderType_MatSortHeader };\nexport function View_MatSortHeader_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵeld(0, 0, null, null, 8, \"div\", [[\"class\", \"mat-sort-header-container\"]], [[2, \"mat-sort-header-sorted\", null], [2, \"mat-sort-header-position-before\", null]], null, null, null, null)), (_l()(), i0.ɵeld(1, 0, null, null, 1, \"button\", [[\"class\", \"mat-sort-header-button\"], [\"type\", \"button\"]], [[1, \"disabled\", 0], [1, \"aria-label\", 0]], [[null, \"focus\"], [null, \"blur\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"focus\" === en)) {\n        var pd_0 = (_co._setIndicatorHintVisible(true) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"blur\" === en)) {\n        var pd_1 = (_co._setIndicatorHintVisible(false) !== false);\n        ad = (pd_1 && ad);\n    } return ad; }, null, null)), i0.ɵncd(null, 0), (_l()(), i0.ɵeld(3, 0, null, null, 5, \"div\", [[\"class\", \"mat-sort-header-arrow\"]], [[24, \"@arrowOpacity\", 0], [24, \"@arrowPosition\", 0], [24, \"@allowChildren\", 0]], [[null, \"@arrowPosition.start\"], [null, \"@arrowPosition.done\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"@arrowPosition.start\" === en)) {\n        var pd_0 = ((_co._disableViewStateAnimation = true) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"@arrowPosition.done\" === en)) {\n        var pd_1 = ((_co._disableViewStateAnimation = false) !== false);\n        ad = (pd_1 && ad);\n    } return ad; }, null, null)), (_l()(), i0.ɵeld(4, 0, null, null, 0, \"div\", [[\"class\", \"mat-sort-header-stem\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(5, 0, null, null, 3, \"div\", [[\"class\", \"mat-sort-header-indicator\"]], [[24, \"@indicator\", 0]], null, null, null, null)), (_l()(), i0.ɵeld(6, 0, null, null, 0, \"div\", [[\"class\", \"mat-sort-header-pointer-left\"]], [[24, \"@leftPointer\", 0]], null, null, null, null)), (_l()(), i0.ɵeld(7, 0, null, null, 0, \"div\", [[\"class\", \"mat-sort-header-pointer-right\"]], [[24, \"@rightPointer\", 0]], null, null, null, null)), (_l()(), i0.ɵeld(8, 0, null, null, 0, \"div\", [[\"class\", \"mat-sort-header-pointer-middle\"]], null, null, null, null, null))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co._isSorted(); var currVal_1 = (_co.arrowPosition == \"before\"); _ck(_v, 0, 0, currVal_0, currVal_1); var currVal_2 = (_co._isDisabled() || null); var currVal_3 = _co._intl.sortButtonLabel(_co.id); _ck(_v, 1, 0, currVal_2, currVal_3); var currVal_4 = _co._getArrowViewState(); var currVal_5 = _co._getArrowViewState(); var currVal_6 = _co._getArrowDirectionState(); _ck(_v, 3, 0, currVal_4, currVal_5, currVal_6); var currVal_7 = _co._getArrowDirectionState(); _ck(_v, 5, 0, currVal_7); var currVal_8 = _co._getArrowDirectionState(); _ck(_v, 6, 0, currVal_8); var currVal_9 = _co._getArrowDirectionState(); _ck(_v, 7, 0, currVal_9); }); }\nexport function View_MatSortHeader_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"div\", [[\"mat-sort-header\", \"\"]], [[1, \"aria-sort\", 0], [2, \"mat-sort-header-disabled\", null]], [[null, \"click\"], [null, \"mouseenter\"], [null, \"longpress\"], [null, \"mouseleave\"]], function (_v, en, $event) { var ad = true; if ((\"click\" === en)) {\n        var pd_0 = (i0.ɵnov(_v, 1)._handleClick() !== false);\n        ad = (pd_0 && ad);\n    } if ((\"mouseenter\" === en)) {\n        var pd_1 = (i0.ɵnov(_v, 1)._setIndicatorHintVisible(true) !== false);\n        ad = (pd_1 && ad);\n    } if ((\"longpress\" === en)) {\n        var pd_2 = (i0.ɵnov(_v, 1)._setIndicatorHintVisible(true) !== false);\n        ad = (pd_2 && ad);\n    } if ((\"mouseleave\" === en)) {\n        var pd_3 = (i0.ɵnov(_v, 1)._setIndicatorHintVisible(false) !== false);\n        ad = (pd_3 && ad);\n    } return ad; }, View_MatSortHeader_0, RenderType_MatSortHeader)), i0.ɵdid(1, 245760, null, 0, i1.MatSortHeader, [i1.MatSortHeaderIntl, i0.ChangeDetectorRef, [2, i1.MatSort], [2, i3.CdkColumnDef]], { id: [0, \"id\"] }, null)], function (_ck, _v) { var currVal_2 = \"\"; _ck(_v, 1, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 1)._getAriaSortAttribute(); var currVal_1 = i0.ɵnov(_v, 1)._isDisabled(); _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nvar MatSortHeaderNgFactory = i0.ɵccf(\"[mat-sort-header]\", i1.MatSortHeader, View_MatSortHeader_Host_0, { disabled: \"disabled\", id: \"mat-sort-header\", arrowPosition: \"arrowPosition\", start: \"start\", disableClear: \"disableClear\" }, {}, [\"*\"]);\nexport { MatSortHeaderNgFactory as MatSortHeaderNgFactory };\n","<div class=\"mat-sort-header-container\" [class.mat-sort-header-sorted]=\"_isSorted()\" [class.mat-sort-header-position-before]=\"arrowPosition == 'before'\"><button class=\"mat-sort-header-button\" type=\"button\" [attr.disabled]=\"_isDisabled() || null\" [attr.aria-label]=\"_intl.sortButtonLabel(id)\" (focus)=\"_setIndicatorHintVisible(true)\" (blur)=\"_setIndicatorHintVisible(false)\"><ng-content></ng-content></button><div class=\"mat-sort-header-arrow\" [@arrowOpacity]=\"_getArrowViewState()\" [@arrowPosition]=\"_getArrowViewState()\" [@allowChildren]=\"_getArrowDirectionState()\" (@arrowPosition.start)=\"_disableViewStateAnimation = true\" (@arrowPosition.done)=\"_disableViewStateAnimation = false\"><div class=\"mat-sort-header-stem\"></div><div class=\"mat-sort-header-indicator\" [@indicator]=\"_getArrowDirectionState()\"><div class=\"mat-sort-header-pointer-left\" [@leftPointer]=\"_getArrowDirectionState()\"></div><div class=\"mat-sort-header-pointer-right\" [@rightPointer]=\"_getArrowDirectionState()\"></div><div class=\"mat-sort-header-pointer-middle\"></div></div></div></div>","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeysIn = require('./_baseKeysIn'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const OVERLAY_PANEL_DATA = new InjectionToken<any>('OVERLAY_PANEL_DATA');\r\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var arrayPush = require('./_arrayPush'),\n    getPrototype = require('./_getPrototype'),\n    getSymbols = require('./_getSymbols'),\n    stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var SetCache = require('./_SetCache'),\n    arraySome = require('./_arraySome'),\n    cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(array);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/table\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@angular/cdk/table\";\nimport * as i4 from \"@angular/cdk/bidi\";\nimport * as i5 from \"@angular/material/core\";\nimport * as i6 from \"@angular/cdk/platform\";\nvar MatTableModuleNgFactory = i0.ɵcmf(i1.MatTableModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i2.NgLocalization, i2.NgLocaleLocalization, [i0.LOCALE_ID, [2, i2.ɵangular_packages_common_common_a]]), i0.ɵmpd(1073742336, i2.CommonModule, i2.CommonModule, []), i0.ɵmpd(1073742336, i3.CdkTableModule, i3.CdkTableModule, []), i0.ɵmpd(1073742336, i4.BidiModule, i4.BidiModule, []), i0.ɵmpd(1073742336, i5.MatCommonModule, i5.MatCommonModule, [[2, i5.MATERIAL_SANITY_CHECKS]]), i0.ɵmpd(1073742336, i1.MatTableModule, i1.MatTableModule, [])]); });\nexport { MatTableModuleNgFactory as MatTableModuleNgFactory };\nvar styles_MatTable = [\"mat-table{display:block}mat-header-row{min-height:56px}mat-footer-row,mat-row{min-height:48px}mat-footer-row,mat-header-row,mat-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-footer-row::after,mat-header-row::after,mat-row::after{display:inline-block;min-height:inherit;content:''}mat-cell:first-of-type,mat-footer-cell:first-of-type,mat-header-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type,[dir=rtl] mat-footer-cell:first-of-type,[dir=rtl] mat-header-cell:first-of-type{padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-footer-cell:last-of-type,mat-header-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type,[dir=rtl] mat-footer-cell:last-of-type,[dir=rtl] mat-header-cell:last-of-type{padding-right:0;padding-left:24px}mat-cell,mat-footer-cell,mat-header-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}table.mat-table{border-spacing:0}tr.mat-header-row{height:56px}tr.mat-footer-row,tr.mat-row{height:48px}th.mat-header-cell{text-align:left}td.mat-cell,td.mat-footer-cell,th.mat-header-cell{padding:0;border-bottom-width:1px;border-bottom-style:solid}td.mat-cell:first-of-type,td.mat-footer-cell:first-of-type,th.mat-header-cell:first-of-type{padding-left:24px}td.mat-cell:last-of-type,td.mat-footer-cell:last-of-type,th.mat-header-cell:last-of-type{padding-right:24px}\"];\nvar RenderType_MatTable = i0.ɵcrt({ encapsulation: 2, styles: styles_MatTable, data: {} });\nexport { RenderType_MatTable as RenderType_MatTable };\nexport function View_MatTable_0(_l) { return i0.ɵvid(2, [i0.ɵqud(402653184, 1, { _rowOutlet: 0 }), i0.ɵqud(402653184, 2, { _headerRowOutlet: 0 }), i0.ɵqud(402653184, 3, { _footerRowOutlet: 0 }), (_l()(), i0.ɵted(-1, null, [\"\\n  \"])), (_l()(), i0.ɵeld(4, 16777216, null, null, 1, null, null, null, null, null, null, null)), i0.ɵdid(5, 16384, [[2, 4]], 0, i3.HeaderRowOutlet, [i0.ViewContainerRef, i0.ElementRef], null, null), (_l()(), i0.ɵted(-1, null, [\"\\n  \"])), (_l()(), i0.ɵeld(7, 16777216, null, null, 1, null, null, null, null, null, null, null)), i0.ɵdid(8, 16384, [[1, 4]], 0, i3.DataRowOutlet, [i0.ViewContainerRef, i0.ElementRef], null, null), (_l()(), i0.ɵted(-1, null, [\"\\n  \"])), (_l()(), i0.ɵeld(10, 16777216, null, null, 1, null, null, null, null, null, null, null)), i0.ɵdid(11, 16384, [[3, 4]], 0, i3.FooterRowOutlet, [i0.ViewContainerRef, i0.ElementRef], null, null)], null, null); }\nexport function View_MatTable_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 5, \"mat-table\", [[\"class\", \"mat-table\"]], null, null, null, View_MatTable_0, RenderType_MatTable)), i0.ɵdid(1, 2342912, null, 4, i1.MatTable, [i0.IterableDiffers, i0.ChangeDetectorRef, i0.ElementRef, [8, null], [2, i4.Directionality], i2.DOCUMENT, i6.Platform], null, null), i0.ɵqud(603979776, 1, { _contentColumnDefs: 1 }), i0.ɵqud(603979776, 2, { _contentRowDefs: 1 }), i0.ɵqud(603979776, 3, { _contentHeaderRowDefs: 1 }), i0.ɵqud(603979776, 4, { _contentFooterRowDefs: 1 })], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nvar MatTableNgFactory = i0.ɵccf(\"mat-table, table[mat-table]\", i1.MatTable, View_MatTable_Host_0, { trackBy: \"trackBy\", dataSource: \"dataSource\", multiTemplateDataRows: \"multiTemplateDataRows\" }, {}, []);\nexport { MatTableNgFactory as MatTableNgFactory };\nvar styles_MatHeaderRow = [];\nvar RenderType_MatHeaderRow = i0.ɵcrt({ encapsulation: 2, styles: styles_MatHeaderRow, data: {} });\nexport { RenderType_MatHeaderRow as RenderType_MatHeaderRow };\nexport function View_MatHeaderRow_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵeld(0, 16777216, null, null, 1, null, null, null, null, null, null, null)), i0.ɵdid(1, 147456, null, 0, i3.CdkCellOutlet, [i0.ViewContainerRef], null, null)], null, null); }\nexport function View_MatHeaderRow_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 2, \"mat-header-row\", [[\"class\", \"mat-header-row\"], [\"role\", \"row\"]], null, null, null, View_MatHeaderRow_0, RenderType_MatHeaderRow)), i0.ɵprd(6144, null, i3.CdkHeaderRow, null, [i1.MatHeaderRow]), i0.ɵdid(2, 49152, null, 0, i1.MatHeaderRow, [], null, null)], null, null); }\nvar MatHeaderRowNgFactory = i0.ɵccf(\"mat-header-row, tr[mat-header-row]\", i1.MatHeaderRow, View_MatHeaderRow_Host_0, {}, {}, []);\nexport { MatHeaderRowNgFactory as MatHeaderRowNgFactory };\nvar styles_MatFooterRow = [];\nvar RenderType_MatFooterRow = i0.ɵcrt({ encapsulation: 2, styles: styles_MatFooterRow, data: {} });\nexport { RenderType_MatFooterRow as RenderType_MatFooterRow };\nexport function View_MatFooterRow_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵeld(0, 16777216, null, null, 1, null, null, null, null, null, null, null)), i0.ɵdid(1, 147456, null, 0, i3.CdkCellOutlet, [i0.ViewContainerRef], null, null)], null, null); }\nexport function View_MatFooterRow_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 2, \"mat-footer-row\", [[\"class\", \"mat-footer-row\"], [\"role\", \"row\"]], null, null, null, View_MatFooterRow_0, RenderType_MatFooterRow)), i0.ɵprd(6144, null, i3.CdkFooterRow, null, [i1.MatFooterRow]), i0.ɵdid(2, 49152, null, 0, i1.MatFooterRow, [], null, null)], null, null); }\nvar MatFooterRowNgFactory = i0.ɵccf(\"mat-footer-row, tr[mat-footer-row]\", i1.MatFooterRow, View_MatFooterRow_Host_0, {}, {}, []);\nexport { MatFooterRowNgFactory as MatFooterRowNgFactory };\nvar styles_MatRow = [];\nvar RenderType_MatRow = i0.ɵcrt({ encapsulation: 2, styles: styles_MatRow, data: {} });\nexport { RenderType_MatRow as RenderType_MatRow };\nexport function View_MatRow_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵeld(0, 16777216, null, null, 1, null, null, null, null, null, null, null)), i0.ɵdid(1, 147456, null, 0, i3.CdkCellOutlet, [i0.ViewContainerRef], null, null)], null, null); }\nexport function View_MatRow_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 2, \"mat-row\", [[\"class\", \"mat-row\"], [\"role\", \"row\"]], null, null, null, View_MatRow_0, RenderType_MatRow)), i0.ɵprd(6144, null, i3.CdkRow, null, [i1.MatRow]), i0.ɵdid(2, 49152, null, 0, i1.MatRow, [], null, null)], null, null); }\nvar MatRowNgFactory = i0.ɵccf(\"mat-row, tr[mat-row]\", i1.MatRow, View_MatRow_Host_0, {}, {}, []);\nexport { MatRowNgFactory as MatRowNgFactory };\n","\n  <ng-container headerRowOutlet></ng-container>\n  <ng-container rowOutlet></ng-container>\n  <ng-container footerRowOutlet></ng-container>","<ng-container cdkCellOutlet></ng-container>","<ng-container cdkCellOutlet></ng-container>","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nvar styles = [\"chip-input{display:block;min-height:46px}chip-input .mat-chip-list-wrapper{width:100%;height:100%;color:inherit;border:1px solid #e0e0e0;padding:6px;line-height:normal;font-size:1.4rem;font-family:inherit;background-color:inherit;box-sizing:border-box;border-radius:2px;margin:0}chip-input .mat-chip-input{min-height:24px;font:inherit;background:0 0;color:currentColor;border:none;outline:0;padding:0;margin:0;width:0;max-width:100%;vertical-align:bottom;text-align:inherit}chip-input .mat-chip.invalid:after{display:block;position:absolute;bottom:1px;left:0;right:0;margin:0 auto;content:\\\" \\\";width:100%;border-bottom:2px dotted #f44336}\"];\nexport { styles as styles };\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"./chip-input.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"@angular/material/chips\";\nimport * as i3 from \"@angular/cdk/platform\";\nimport * as i4 from \"@angular/material/core\";\nimport * as i5 from \"../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i6 from \"@angular/material/icon\";\nimport * as i7 from \"../../../../../node_modules/@angular/material/chips/typings/index.ngfactory\";\nimport * as i8 from \"@angular/material/form-field\";\nimport * as i9 from \"@angular/cdk/bidi\";\nimport * as i10 from \"@angular/forms\";\nimport * as i11 from \"@angular/common\";\nimport * as i12 from \"./chip-input.component\";\nvar styles_ChipInputComponent = [i0.styles];\nvar RenderType_ChipInputComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_ChipInputComponent, data: {} });\nexport { RenderType_ChipInputComponent as RenderType_ChipInputComponent };\nfunction View_ChipInputComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 9, \"mat-chip\", [[\"class\", \"mat-chip\"], [\"role\", \"option\"]], [[2, \"invalid\", null], [1, \"tabindex\", 0], [2, \"mat-chip-selected\", null], [2, \"mat-chip-with-avatar\", null], [2, \"mat-chip-with-trailing-icon\", null], [2, \"mat-chip-disabled\", null], [1, \"disabled\", 0], [1, \"aria-disabled\", 0], [1, \"aria-selected\", 0]], [[null, \"removed\"], [null, \"click\"], [null, \"keydown\"], [null, \"focus\"], [null, \"blur\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 1)._handleClick($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"keydown\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 1)._handleKeydown($event) !== false);\n        ad = (pd_1 && ad);\n    } if ((\"focus\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 1).focus() !== false);\n        ad = (pd_2 && ad);\n    } if ((\"blur\" === en)) {\n        var pd_3 = (i1.ɵnov(_v, 1)._blur() !== false);\n        ad = (pd_3 && ad);\n    } if ((\"removed\" === en)) {\n        var pd_4 = (_co.remove(_v.context.index) !== false);\n        ad = (pd_4 && ad);\n    } return ad; }, null, null)), i1.ɵdid(1, 147456, [[1, 4]], 3, i2.MatChip, [i1.ElementRef, i1.NgZone, i3.Platform, [2, i4.MAT_RIPPLE_GLOBAL_OPTIONS]], { selectable: [0, \"selectable\"], removable: [1, \"removable\"] }, { removed: \"removed\" }), i1.ɵqud(335544320, 2, { avatar: 0 }), i1.ɵqud(335544320, 3, { trailingIcon: 0 }), i1.ɵqud(335544320, 4, { removeIcon: 0 }), (_l()(), i1.ɵted(5, null, [\"\\n        \", \"\\n        \"])), (_l()(), i1.ɵeld(6, 0, null, null, 2, \"mat-icon\", [[\"class\", \"mat-chip-remove mat-chip-trailing-icon mat-icon\"], [\"matChipRemove\", \"\"], [\"role\", \"img\"], [\"svgIcon\", \"cancel\"]], [[2, \"mat-icon-inline\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; if ((\"click\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 7)._handleClick($event) !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i5.View_MatIcon_0, i5.RenderType_MatIcon)), i1.ɵdid(7, 16384, [[4, 4]], 0, i2.MatChipRemove, [i2.MatChip], null, null), i1.ɵdid(8, 638976, null, 0, i6.MatIcon, [i1.ElementRef, i6.MatIconRegistry, [8, null]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"]))], function (_ck, _v) { var currVal_9 = false; var currVal_10 = true; _ck(_v, 1, 0, currVal_9, currVal_10); var currVal_13 = \"cancel\"; _ck(_v, 8, 0, currVal_13); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.formArray.at(_v.context.index).invalid; var currVal_1 = (i1.ɵnov(_v, 1).disabled ? null : (0 - 1)); var currVal_2 = i1.ɵnov(_v, 1).selected; var currVal_3 = i1.ɵnov(_v, 1).avatar; var currVal_4 = (i1.ɵnov(_v, 1).trailingIcon || i1.ɵnov(_v, 1).removeIcon); var currVal_5 = i1.ɵnov(_v, 1).disabled; var currVal_6 = (i1.ɵnov(_v, 1).disabled || null); var currVal_7 = i1.ɵnov(_v, 1).disabled.toString(); var currVal_8 = i1.ɵnov(_v, 1).ariaSelected; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3, currVal_4, currVal_5, currVal_6, currVal_7, currVal_8); var currVal_11 = _v.context.$implicit; _ck(_v, 5, 0, currVal_11); var currVal_12 = i1.ɵnov(_v, 8).inline; _ck(_v, 6, 0, currVal_12); }); }\nexport function View_ChipInputComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 0, null, null, 11, \"mat-chip-list\", [[\"class\", \"mat-chip-list\"]], [[1, \"tabindex\", 0], [1, \"aria-describedby\", 0], [1, \"aria-required\", 0], [1, \"aria-disabled\", 0], [1, \"aria-invalid\", 0], [1, \"aria-multiselectable\", 0], [1, \"role\", 0], [2, \"mat-chip-list-disabled\", null], [2, \"mat-chip-list-invalid\", null], [2, \"mat-chip-list-required\", null], [1, \"aria-orientation\", 0], [8, \"id\", 0]], [[null, \"focus\"], [null, \"blur\"], [null, \"keydown\"]], function (_v, en, $event) { var ad = true; if ((\"focus\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 2).focus() !== false);\n        ad = (pd_0 && ad);\n    } if ((\"blur\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 2)._blur() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"keydown\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 2)._keydown($event) !== false);\n        ad = (pd_2 && ad);\n    } return ad; }, i7.View_MatChipList_0, i7.RenderType_MatChipList)), i1.ɵprd(6144, null, i8.MatFormFieldControl, null, [i2.MatChipList]), i1.ɵdid(2, 1556480, [[\"chipList\", 4]], 1, i2.MatChipList, [i1.ElementRef, i1.ChangeDetectorRef, [2, i9.Directionality], [2, i10.NgForm], [2, i10.FormGroupDirective], i4.ErrorStateMatcher, [8, null]], { selectable: [0, \"selectable\"] }, null), i1.ɵqud(603979776, 1, { chips: 1 }), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵand(16777216, null, 0, 2, null, View_ChipInputComponent_1)), i1.ɵdid(6, 278528, null, 0, i11.NgForOf, [i1.ViewContainerRef, i1.TemplateRef, i1.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null), i1.ɵpid(131072, i11.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵeld(9, 0, null, 0, 1, \"input\", [[\"class\", \"mat-chip-input mat-input-element mat-chip-input mat-input-element\"]], [[8, \"id\", 0], [1, \"disabled\", 0], [1, \"placeholder\", 0]], [[null, \"matChipInputTokenEnd\"], [null, \"keydown\"], [null, \"blur\"], [null, \"focus\"], [null, \"input\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"keydown\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 10)._keydown($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"blur\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 10)._blur() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"focus\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 10)._focus() !== false);\n        ad = (pd_2 && ad);\n    } if ((\"input\" === en)) {\n        var pd_3 = (i1.ɵnov(_v, 10)._onInput() !== false);\n        ad = (pd_3 && ad);\n    } if ((\"matChipInputTokenEnd\" === en)) {\n        var pd_4 = (_co.add($event) !== false);\n        ad = (pd_4 && ad);\n    } return ad; }, null, null)), i1.ɵdid(10, 540672, null, 0, i2.MatChipInput, [i1.ElementRef, i2.MAT_CHIPS_DEFAULT_OPTIONS], { chipList: [0, \"chipList\"], addOnBlur: [1, \"addOnBlur\"], placeholder: [2, \"placeholder\"] }, { chipEnd: \"matChipInputTokenEnd\" }), (_l()(), i1.ɵted(-1, 0, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; var currVal_12 = false; _ck(_v, 2, 0, currVal_12); var currVal_13 = i1.ɵunv(_v, 6, 0, i1.ɵnov(_v, 7).transform(_co.formArray.valueChanges)); _ck(_v, 6, 0, currVal_13); var currVal_17 = i1.ɵnov(_v, 2); var currVal_18 = true; var currVal_19 = _co.placeholder; _ck(_v, 10, 0, currVal_17, currVal_18, currVal_19); }, function (_ck, _v) { var currVal_0 = (i1.ɵnov(_v, 2).disabled ? null : i1.ɵnov(_v, 2)._tabIndex); var currVal_1 = (i1.ɵnov(_v, 2)._ariaDescribedby || null); var currVal_2 = i1.ɵnov(_v, 2).required.toString(); var currVal_3 = i1.ɵnov(_v, 2).disabled.toString(); var currVal_4 = i1.ɵnov(_v, 2).errorState; var currVal_5 = i1.ɵnov(_v, 2).multiple; var currVal_6 = i1.ɵnov(_v, 2).role; var currVal_7 = i1.ɵnov(_v, 2).disabled; var currVal_8 = i1.ɵnov(_v, 2).errorState; var currVal_9 = i1.ɵnov(_v, 2).required; var currVal_10 = i1.ɵnov(_v, 2).ariaOrientation; var currVal_11 = i1.ɵnov(_v, 2)._uid; _ck(_v, 0, 1, [currVal_0, currVal_1, currVal_2, currVal_3, currVal_4, currVal_5, currVal_6, currVal_7, currVal_8, currVal_9, currVal_10, currVal_11]); var currVal_14 = i1.ɵnov(_v, 10).id; var currVal_15 = (i1.ɵnov(_v, 10).disabled || null); var currVal_16 = (i1.ɵnov(_v, 10).placeholder || null); _ck(_v, 9, 0, currVal_14, currVal_15, currVal_16); }); }\nexport function View_ChipInputComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 2, \"chip-input\", [], null, null, null, View_ChipInputComponent_0, RenderType_ChipInputComponent)), i1.ɵprd(5120, null, i10.NG_VALUE_ACCESSOR, function (p0_0) { return [p0_0]; }, [i12.ChipInputComponent]), i1.ɵdid(2, 4243456, null, 0, i12.ChipInputComponent, [], null, null)], null, null); }\nvar ChipInputComponentNgFactory = i1.ɵccf(\"chip-input\", i12.ChipInputComponent, View_ChipInputComponent_Host_0, { placeholder: \"placeholder\", email: \"email\", required: \"required\" }, {}, []);\nexport { ChipInputComponentNgFactory as ChipInputComponentNgFactory };\n","<mat-chip-list #chipList [selectable]=\"false\">\r\n    <mat-chip\r\n        *ngFor=\"let item of formArray.valueChanges | async; index as i\"\r\n        [selectable]=\"false\"\r\n        [removable]=\"true\"\r\n        [class.invalid]=\"formArray.at(i).invalid\"\r\n        (removed)=\"remove(i)\"\r\n    >\r\n        {{item}}\r\n        <mat-icon matChipRemove svgIcon=\"cancel\"></mat-icon>\r\n    </mat-chip>\r\n    <input [placeholder]=\"placeholder\"\r\n           class=\"mat-chip-input mat-input-element\"\r\n           [matChipInputFor]=\"chipList\"\r\n           [matChipInputAddOnBlur]=\"true\"\r\n           (matChipInputTokenEnd)=\"add($event)\" />\r\n</mat-chip-list>","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var baseIteratee = require('./_baseIteratee'),\n    baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n  return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbols = require('./_getSymbols'),\n    keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nmodule.exports = setToArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Directive, Input, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, Inject, InjectionToken, NgZone, Optional, ViewChild, ViewEncapsulation, NgModule } from '@angular/core';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { __extends } from 'tslib';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { MAT_LABEL_GLOBAL_OPTIONS, mixinColor } from '@angular/material/core';\nimport { EMPTY, fromEvent, merge } from 'rxjs';\nimport { startWith, take } from 'rxjs/operators';\nimport { Platform } from '@angular/cdk/platform';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { CommonModule } from '@angular/common';\nimport { ObserversModule } from '@angular/cdk/observers';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nvar /** @type {?} */ nextUniqueId = 0;\n/**\n * Single error message to be shown underneath the form field.\n */\nvar MatError = /** @class */ (function () {\n    function MatError() {\n        this.id = \"mat-error-\" + nextUniqueId++;\n    }\n    MatError.decorators = [\n        { type: Directive, args: [{\n                    selector: 'mat-error',\n                    host: {\n                        'class': 'mat-error',\n                        'role': 'alert',\n                        '[attr.id]': 'id',\n                    }\n                },] },\n    ];\n    /** @nocollapse */\n    MatError.propDecorators = {\n        \"id\": [{ type: Input },],\n    };\n    return MatError;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Animations used by the MatFormField.\n */\nvar /** @type {?} */ matFormFieldAnimations = {\n    /** Animation that transitions the form field's error and hint messages. */\n    transitionMessages: trigger('transitionMessages', [\n        // TODO(mmalerba): Use angular animations for label animation as well.\n        state('enter', style({ opacity: 1, transform: 'translateY(0%)' })),\n        transition('void => enter', [\n            style({ opacity: 0, transform: 'translateY(-100%)' }),\n            animate('300ms cubic-bezier(0.55, 0, 0.55, 0.2)'),\n        ]),\n    ])\n};\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * An interface which allows a control to work inside of a `MatFormField`.\n * @abstract\n * @template T\n */\nvar  /**\n * An interface which allows a control to work inside of a `MatFormField`.\n * @abstract\n * @template T\n */\nMatFormFieldControl = /** @class */ (function () {\n    function MatFormFieldControl() {\n    }\n    return MatFormFieldControl;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * \\@docs-private\n * @return {?}\n */\nfunction getMatFormFieldPlaceholderConflictError() {\n    return Error('Placeholder attribute and child element were both specified.');\n}\n/**\n * \\@docs-private\n * @param {?} align\n * @return {?}\n */\nfunction getMatFormFieldDuplicatedHintError(align) {\n    return Error(\"A hint was already declared for 'align=\\\"\" + align + \"\\\"'.\");\n}\n/**\n * \\@docs-private\n * @return {?}\n */\nfunction getMatFormFieldMissingControlError() {\n    return Error('mat-form-field must contain a MatFormFieldControl.');\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nvar /** @type {?} */ nextUniqueId$1 = 0;\n/**\n * Hint text to be shown underneath the form field control.\n */\nvar MatHint = /** @class */ (function () {\n    function MatHint() {\n        /**\n         * Whether to align the hint label at the start or end of the line.\n         */\n        this.align = 'start';\n        /**\n         * Unique ID for the hint. Used for the aria-describedby on the form field control.\n         */\n        this.id = \"mat-hint-\" + nextUniqueId$1++;\n    }\n    MatHint.decorators = [\n        { type: Directive, args: [{\n                    selector: 'mat-hint',\n                    host: {\n                        'class': 'mat-hint',\n                        '[class.mat-right]': 'align == \"end\"',\n                        '[attr.id]': 'id',\n                        // Remove align attribute to prevent it from interfering with layout.\n                        '[attr.align]': 'null',\n                    }\n                },] },\n    ];\n    /** @nocollapse */\n    MatHint.propDecorators = {\n        \"align\": [{ type: Input },],\n        \"id\": [{ type: Input },],\n    };\n    return MatHint;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * The floating label for a `mat-form-field`.\n */\nvar MatLabel = /** @class */ (function () {\n    function MatLabel() {\n    }\n    MatLabel.decorators = [\n        { type: Directive, args: [{\n                    selector: 'mat-label'\n                },] },\n    ];\n    return MatLabel;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * The placeholder text for an `MatFormField`.\n * @deprecated Use `<mat-label>` to specify the label and the `placeholder` attribute to specify the\n *     placeholder.\n * \\@breaking-change 8.0.0\n */\nvar MatPlaceholder = /** @class */ (function () {\n    function MatPlaceholder() {\n    }\n    MatPlaceholder.decorators = [\n        { type: Directive, args: [{\n                    selector: 'mat-placeholder'\n                },] },\n    ];\n    return MatPlaceholder;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Prefix to be placed the the front of the form field.\n */\nvar MatPrefix = /** @class */ (function () {\n    function MatPrefix() {\n    }\n    MatPrefix.decorators = [\n        { type: Directive, args: [{\n                    selector: '[matPrefix]',\n                },] },\n    ];\n    return MatPrefix;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Suffix to be placed at the end of the form field.\n */\nvar MatSuffix = /** @class */ (function () {\n    function MatSuffix() {\n    }\n    MatSuffix.decorators = [\n        { type: Directive, args: [{\n                    selector: '[matSuffix]',\n                },] },\n    ];\n    return MatSuffix;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nvar /** @type {?} */ nextUniqueId$2 = 0;\nvar /** @type {?} */ floatingLabelScale = 0.75;\nvar /** @type {?} */ outlineGapPadding = 5;\n/**\n * Boilerplate for applying mixins to MatFormField.\n * \\@docs-private\n */\nvar  /**\n * Boilerplate for applying mixins to MatFormField.\n * \\@docs-private\n */\nMatFormFieldBase = /** @class */ (function () {\n    function MatFormFieldBase(_elementRef) {\n        this._elementRef = _elementRef;\n    }\n    return MatFormFieldBase;\n}());\n/**\n * Base class to which we're applying the form field mixins.\n * \\@docs-private\n */\nvar /** @type {?} */ _MatFormFieldMixinBase = mixinColor(MatFormFieldBase, 'primary');\n/**\n * Injection token that can be used to configure the\n * default options for all form field within an app.\n */\nvar /** @type {?} */ MAT_FORM_FIELD_DEFAULT_OPTIONS = new InjectionToken('MAT_FORM_FIELD_DEFAULT_OPTIONS');\n/**\n * Container for form controls that applies Material Design styling and behavior.\n */\nvar MatFormField = /** @class */ (function (_super) {\n    __extends(MatFormField, _super);\n    function MatFormField(_elementRef, _changeDetectorRef, labelOptions, _dir, _defaults, _platform, _ngZone, _animationMode) {\n        var _this = _super.call(this, _elementRef) || this;\n        _this._elementRef = _elementRef;\n        _this._changeDetectorRef = _changeDetectorRef;\n        _this._dir = _dir;\n        _this._defaults = _defaults;\n        _this._platform = _platform;\n        _this._ngZone = _ngZone;\n        _this._outlineGapCalculationNeeded = false;\n        /**\n         * Override for the logic that disables the label animation in certain cases.\n         */\n        _this._showAlwaysAnimate = false;\n        /**\n         * State of the mat-hint and mat-error animations.\n         */\n        _this._subscriptAnimationState = '';\n        _this._hintLabel = '';\n        // Unique id for the hint label.\n        _this._hintLabelId = \"mat-hint-\" + nextUniqueId$2++;\n        // Unique id for the internal form field label.\n        _this._labelId = \"mat-form-field-label-\" + nextUniqueId$2++;\n        _this._labelOptions = labelOptions ? labelOptions : {};\n        _this.floatLabel = _this._labelOptions.float || 'auto';\n        _this._animationsEnabled = _animationMode !== 'NoopAnimations';\n        // Set the default through here so we invoke the setter on the first run.\n        // Set the default through here so we invoke the setter on the first run.\n        _this.appearance = (_defaults && _defaults.appearance) ? _defaults.appearance : 'legacy';\n        return _this;\n    }\n    Object.defineProperty(MatFormField.prototype, \"appearance\", {\n        get: /**\n         * The form-field appearance style.\n         * @return {?}\n         */\n        function () { return this._appearance; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            var _this = this;\n            var /** @type {?} */ oldValue = this._appearance;\n            this._appearance = value || (this._defaults && this._defaults.appearance) || 'legacy';\n            if (this._appearance === 'outline' && oldValue !== value) {\n                // @breaking-change 7.0.0 Remove this check and else block once _ngZone is required.\n                if (this._ngZone) {\n                    /** @type {?} */ ((this._ngZone)).onStable.pipe(take(1)).subscribe(function () {\n                        /** @type {?} */ ((_this._ngZone)).runOutsideAngular(function () { return _this.updateOutlineGap(); });\n                    });\n                }\n                else {\n                    Promise.resolve().then(function () { return _this.updateOutlineGap(); });\n                }\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatFormField.prototype, \"hideRequiredMarker\", {\n        get: /**\n         * Whether the required marker should be hidden.\n         * @return {?}\n         */\n        function () { return this._hideRequiredMarker; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._hideRequiredMarker = coerceBooleanProperty(value);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatFormField.prototype, \"_shouldAlwaysFloat\", {\n        /** Whether the floating label should always float or not. */\n        get: /**\n         * Whether the floating label should always float or not.\n         * @return {?}\n         */\n        function () {\n            return this.floatLabel === 'always' && !this._showAlwaysAnimate;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatFormField.prototype, \"_canLabelFloat\", {\n        /** Whether the label can float or not. */\n        get: /**\n         * Whether the label can float or not.\n         * @return {?}\n         */\n        function () { return this.floatLabel !== 'never'; },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatFormField.prototype, \"hintLabel\", {\n        get: /**\n         * Text for the form field hint.\n         * @return {?}\n         */\n        function () { return this._hintLabel; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._hintLabel = value;\n            this._processHints();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatFormField.prototype, \"floatLabel\", {\n        get: /**\n         * Whether the label should always float, never float or float as the user types.\n         *\n         * Note: only the legacy appearance supports the `never` option. `never` was originally added as a\n         * way to make the floating label emulate the behavior of a standard input placeholder. However\n         * the form field now supports both floating labels and placeholders. Therefore in the non-legacy\n         * appearances the `never` option has been disabled in favor of just using the placeholder.\n         * @return {?}\n         */\n        function () {\n            return this.appearance !== 'legacy' && this._floatLabel === 'never' ? 'auto' : this._floatLabel;\n        },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            if (value !== this._floatLabel) {\n                this._floatLabel = value || this._labelOptions.float || 'auto';\n                this._changeDetectorRef.markForCheck();\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * Gets an ElementRef for the element that a overlay attached to the form-field should be\n     * positioned relative to.\n     */\n    /**\n     * Gets an ElementRef for the element that a overlay attached to the form-field should be\n     * positioned relative to.\n     * @return {?}\n     */\n    MatFormField.prototype.getConnectedOverlayOrigin = /**\n     * Gets an ElementRef for the element that a overlay attached to the form-field should be\n     * positioned relative to.\n     * @return {?}\n     */\n    function () {\n        return this._connectionContainerRef || this._elementRef;\n    };\n    /**\n     * @return {?}\n     */\n    MatFormField.prototype.ngAfterContentInit = /**\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        this._validateControlChild();\n        if (this._control.controlType) {\n            this._elementRef.nativeElement.classList\n                .add(\"mat-form-field-type-\" + this._control.controlType);\n        }\n        // Subscribe to changes in the child control state in order to update the form field UI.\n        this._control.stateChanges.pipe(startWith(/** @type {?} */ ((null)))).subscribe(function () {\n            _this._validatePlaceholders();\n            _this._syncDescribedByIds();\n            _this._changeDetectorRef.markForCheck();\n        });\n        // Run change detection if the value, prefix, or suffix changes.\n        var /** @type {?} */ valueChanges = this._control.ngControl && this._control.ngControl.valueChanges || EMPTY;\n        merge(valueChanges, this._prefixChildren.changes, this._suffixChildren.changes)\n            .subscribe(function () { return _this._changeDetectorRef.markForCheck(); });\n        // Re-validate when the number of hints changes.\n        this._hintChildren.changes.pipe(startWith(null)).subscribe(function () {\n            _this._processHints();\n            _this._changeDetectorRef.markForCheck();\n        });\n        // Update the aria-described by when the number of errors changes.\n        this._errorChildren.changes.pipe(startWith(null)).subscribe(function () {\n            _this._syncDescribedByIds();\n            _this._changeDetectorRef.markForCheck();\n        });\n    };\n    /**\n     * @return {?}\n     */\n    MatFormField.prototype.ngAfterContentChecked = /**\n     * @return {?}\n     */\n    function () {\n        this._validateControlChild();\n        if (this._outlineGapCalculationNeeded) {\n            this.updateOutlineGap();\n        }\n    };\n    /**\n     * @return {?}\n     */\n    MatFormField.prototype.ngAfterViewInit = /**\n     * @return {?}\n     */\n    function () {\n        // Avoid animations on load.\n        this._subscriptAnimationState = 'enter';\n        this._changeDetectorRef.detectChanges();\n    };\n    /** Determines whether a class from the NgControl should be forwarded to the host element. */\n    /**\n     * Determines whether a class from the NgControl should be forwarded to the host element.\n     * @param {?} prop\n     * @return {?}\n     */\n    MatFormField.prototype._shouldForward = /**\n     * Determines whether a class from the NgControl should be forwarded to the host element.\n     * @param {?} prop\n     * @return {?}\n     */\n    function (prop) {\n        var /** @type {?} */ ngControl = this._control ? this._control.ngControl : null;\n        return ngControl && ngControl[prop];\n    };\n    /**\n     * @return {?}\n     */\n    MatFormField.prototype._hasPlaceholder = /**\n     * @return {?}\n     */\n    function () {\n        return !!(this._control && this._control.placeholder || this._placeholderChild);\n    };\n    /**\n     * @return {?}\n     */\n    MatFormField.prototype._hasLabel = /**\n     * @return {?}\n     */\n    function () {\n        return !!this._labelChild;\n    };\n    /**\n     * @return {?}\n     */\n    MatFormField.prototype._shouldLabelFloat = /**\n     * @return {?}\n     */\n    function () {\n        return this._canLabelFloat && (this._control.shouldLabelFloat || this._shouldAlwaysFloat);\n    };\n    /**\n     * @return {?}\n     */\n    MatFormField.prototype._hideControlPlaceholder = /**\n     * @return {?}\n     */\n    function () {\n        // In the legacy appearance the placeholder is promoted to a label if no label is given.\n        return this.appearance === 'legacy' && !this._hasLabel() ||\n            this._hasLabel() && !this._shouldLabelFloat();\n    };\n    /**\n     * @return {?}\n     */\n    MatFormField.prototype._hasFloatingLabel = /**\n     * @return {?}\n     */\n    function () {\n        // In the legacy appearance the placeholder is promoted to a label if no label is given.\n        return this._hasLabel() || this.appearance === 'legacy' && this._hasPlaceholder();\n    };\n    /** Determines whether to display hints or errors. */\n    /**\n     * Determines whether to display hints or errors.\n     * @return {?}\n     */\n    MatFormField.prototype._getDisplayedMessages = /**\n     * Determines whether to display hints or errors.\n     * @return {?}\n     */\n    function () {\n        return (this._errorChildren && this._errorChildren.length > 0 &&\n            this._control.errorState) ? 'error' : 'hint';\n    };\n    /** Animates the placeholder up and locks it in position. */\n    /**\n     * Animates the placeholder up and locks it in position.\n     * @return {?}\n     */\n    MatFormField.prototype._animateAndLockLabel = /**\n     * Animates the placeholder up and locks it in position.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        if (this._hasFloatingLabel() && this._canLabelFloat) {\n            // If animations are disabled, we shouldn't go in here,\n            // because the `transitionend` will never fire.\n            if (this._animationsEnabled) {\n                this._showAlwaysAnimate = true;\n                fromEvent(this._label.nativeElement, 'transitionend').pipe(take(1)).subscribe(function () {\n                    _this._showAlwaysAnimate = false;\n                });\n            }\n            this.floatLabel = 'always';\n            this._changeDetectorRef.markForCheck();\n        }\n    };\n    /**\n     * Ensure that there is only one placeholder (either `placeholder` attribute on the child control\n     * or child element with the `mat-placeholder` directive).\n     * @return {?}\n     */\n    MatFormField.prototype._validatePlaceholders = /**\n     * Ensure that there is only one placeholder (either `placeholder` attribute on the child control\n     * or child element with the `mat-placeholder` directive).\n     * @return {?}\n     */\n    function () {\n        if (this._control.placeholder && this._placeholderChild) {\n            throw getMatFormFieldPlaceholderConflictError();\n        }\n    };\n    /**\n     * Does any extra processing that is required when handling the hints.\n     * @return {?}\n     */\n    MatFormField.prototype._processHints = /**\n     * Does any extra processing that is required when handling the hints.\n     * @return {?}\n     */\n    function () {\n        this._validateHints();\n        this._syncDescribedByIds();\n    };\n    /**\n     * Ensure that there is a maximum of one of each `<mat-hint>` alignment specified, with the\n     * attribute being considered as `align=\"start\"`.\n     * @return {?}\n     */\n    MatFormField.prototype._validateHints = /**\n     * Ensure that there is a maximum of one of each `<mat-hint>` alignment specified, with the\n     * attribute being considered as `align=\"start\"`.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        if (this._hintChildren) {\n            var /** @type {?} */ startHint_1;\n            var /** @type {?} */ endHint_1;\n            this._hintChildren.forEach(function (hint) {\n                if (hint.align === 'start') {\n                    if (startHint_1 || _this.hintLabel) {\n                        throw getMatFormFieldDuplicatedHintError('start');\n                    }\n                    startHint_1 = hint;\n                }\n                else if (hint.align === 'end') {\n                    if (endHint_1) {\n                        throw getMatFormFieldDuplicatedHintError('end');\n                    }\n                    endHint_1 = hint;\n                }\n            });\n        }\n    };\n    /**\n     * Sets the list of element IDs that describe the child control. This allows the control to update\n     * its `aria-describedby` attribute accordingly.\n     * @return {?}\n     */\n    MatFormField.prototype._syncDescribedByIds = /**\n     * Sets the list of element IDs that describe the child control. This allows the control to update\n     * its `aria-describedby` attribute accordingly.\n     * @return {?}\n     */\n    function () {\n        if (this._control) {\n            var /** @type {?} */ ids = [];\n            if (this._getDisplayedMessages() === 'hint') {\n                var /** @type {?} */ startHint = this._hintChildren ?\n                    this._hintChildren.find(function (hint) { return hint.align === 'start'; }) : null;\n                var /** @type {?} */ endHint = this._hintChildren ?\n                    this._hintChildren.find(function (hint) { return hint.align === 'end'; }) : null;\n                if (startHint) {\n                    ids.push(startHint.id);\n                }\n                else if (this._hintLabel) {\n                    ids.push(this._hintLabelId);\n                }\n                if (endHint) {\n                    ids.push(endHint.id);\n                }\n            }\n            else if (this._errorChildren) {\n                ids = this._errorChildren.map(function (error) { return error.id; });\n            }\n            this._control.setDescribedByIds(ids);\n        }\n    };\n    /** Throws an error if the form field's control is missing. */\n    /**\n     * Throws an error if the form field's control is missing.\n     * @return {?}\n     */\n    MatFormField.prototype._validateControlChild = /**\n     * Throws an error if the form field's control is missing.\n     * @return {?}\n     */\n    function () {\n        if (!this._control) {\n            throw getMatFormFieldMissingControlError();\n        }\n    };\n    /**\n     * Updates the width and position of the gap in the outline. Only relevant for the outline\n     * appearance.\n     */\n    /**\n     * Updates the width and position of the gap in the outline. Only relevant for the outline\n     * appearance.\n     * @return {?}\n     */\n    MatFormField.prototype.updateOutlineGap = /**\n     * Updates the width and position of the gap in the outline. Only relevant for the outline\n     * appearance.\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ labelEl = this._label ? this._label.nativeElement : null;\n        if (this.appearance !== 'outline' || !labelEl || !labelEl.children.length ||\n            !labelEl.textContent.trim()) {\n            return;\n        }\n        if (this._platform && !this._platform.isBrowser) {\n            // getBoundingClientRect isn't available on the server.\n            return;\n        }\n        // If the element is not present in the DOM, the outline gap will need to be calculated\n        // the next time it is checked and in the DOM.\n        if (!document.documentElement.contains(this._elementRef.nativeElement)) {\n            this._outlineGapCalculationNeeded = true;\n            return;\n        }\n        var /** @type {?} */ startWidth = 0;\n        var /** @type {?} */ gapWidth = 0;\n        var /** @type {?} */ startEls = this._connectionContainerRef.nativeElement.querySelectorAll('.mat-form-field-outline-start');\n        var /** @type {?} */ gapEls = this._connectionContainerRef.nativeElement.querySelectorAll('.mat-form-field-outline-gap');\n        if (this._label && this._label.nativeElement.children.length) {\n            var /** @type {?} */ containerStart = this._getStartEnd(this._connectionContainerRef.nativeElement.getBoundingClientRect());\n            var /** @type {?} */ labelStart = this._getStartEnd(labelEl.children[0].getBoundingClientRect());\n            var /** @type {?} */ labelWidth = 0;\n            for (var _i = 0, _a = labelEl.children; _i < _a.length; _i++) {\n                var child = _a[_i];\n                labelWidth += child.offsetWidth;\n            }\n            startWidth = labelStart - containerStart - outlineGapPadding;\n            gapWidth = labelWidth > 0 ? labelWidth * floatingLabelScale + outlineGapPadding * 2 : 0;\n        }\n        for (var /** @type {?} */ i = 0; i < startEls.length; i++) {\n            startEls.item(i).style.width = startWidth + \"px\";\n        }\n        for (var /** @type {?} */ i = 0; i < gapEls.length; i++) {\n            gapEls.item(i).style.width = gapWidth + \"px\";\n        }\n        this._outlineGapCalculationNeeded = false;\n    };\n    /**\n     * Gets the start end of the rect considering the current directionality.\n     * @param {?} rect\n     * @return {?}\n     */\n    MatFormField.prototype._getStartEnd = /**\n     * Gets the start end of the rect considering the current directionality.\n     * @param {?} rect\n     * @return {?}\n     */\n    function (rect) {\n        return this._dir && this._dir.value === 'rtl' ? rect.right : rect.left;\n    };\n    MatFormField.decorators = [\n        { type: Component, args: [{selector: 'mat-form-field',\n                    exportAs: 'matFormField',\n                    template: \"<div class=\\\"mat-form-field-wrapper\\\"><div class=\\\"mat-form-field-flex\\\" #connectionContainer (click)=\\\"_control.onContainerClick && _control.onContainerClick($event)\\\"><ng-container *ngIf=\\\"appearance == 'outline'\\\"><div class=\\\"mat-form-field-outline\\\"><div class=\\\"mat-form-field-outline-start\\\"></div><div class=\\\"mat-form-field-outline-gap\\\"></div><div class=\\\"mat-form-field-outline-end\\\"></div></div><div class=\\\"mat-form-field-outline mat-form-field-outline-thick\\\"><div class=\\\"mat-form-field-outline-start\\\"></div><div class=\\\"mat-form-field-outline-gap\\\"></div><div class=\\\"mat-form-field-outline-end\\\"></div></div></ng-container><div class=\\\"mat-form-field-prefix\\\" *ngIf=\\\"_prefixChildren.length\\\"><ng-content select=\\\"[matPrefix]\\\"></ng-content></div><div class=\\\"mat-form-field-infix\\\" #inputContainer><ng-content></ng-content><span class=\\\"mat-form-field-label-wrapper\\\"><label class=\\\"mat-form-field-label\\\" (cdkObserveContent)=\\\"updateOutlineGap()\\\" [id]=\\\"_labelId\\\" [attr.for]=\\\"_control.id\\\" [attr.aria-owns]=\\\"_control.id\\\" [class.mat-empty]=\\\"_control.empty && !_shouldAlwaysFloat\\\" [class.mat-form-field-empty]=\\\"_control.empty && !_shouldAlwaysFloat\\\" [class.mat-accent]=\\\"color == 'accent'\\\" [class.mat-warn]=\\\"color == 'warn'\\\" #label *ngIf=\\\"_hasFloatingLabel()\\\" [ngSwitch]=\\\"_hasLabel()\\\"><ng-container *ngSwitchCase=\\\"false\\\"><ng-content select=\\\"mat-placeholder\\\"></ng-content>{{_control.placeholder}}</ng-container><ng-content select=\\\"mat-label\\\" *ngSwitchCase=\\\"true\\\"></ng-content><span class=\\\"mat-placeholder-required mat-form-field-required-marker\\\" aria-hidden=\\\"true\\\" *ngIf=\\\"!hideRequiredMarker && _control.required && !_control.disabled\\\">&nbsp;*</span></label></span></div><div class=\\\"mat-form-field-suffix\\\" *ngIf=\\\"_suffixChildren.length\\\"><ng-content select=\\\"[matSuffix]\\\"></ng-content></div></div><div class=\\\"mat-form-field-underline\\\" #underline *ngIf=\\\"appearance != 'outline'\\\"><span class=\\\"mat-form-field-ripple\\\" [class.mat-accent]=\\\"color == 'accent'\\\" [class.mat-warn]=\\\"color == 'warn'\\\"></span></div><div class=\\\"mat-form-field-subscript-wrapper\\\" [ngSwitch]=\\\"_getDisplayedMessages()\\\"><div *ngSwitchCase=\\\"'error'\\\" [@transitionMessages]=\\\"_subscriptAnimationState\\\"><ng-content select=\\\"mat-error\\\"></ng-content></div><div class=\\\"mat-form-field-hint-wrapper\\\" *ngSwitchCase=\\\"'hint'\\\" [@transitionMessages]=\\\"_subscriptAnimationState\\\"><div *ngIf=\\\"hintLabel\\\" [id]=\\\"_hintLabelId\\\" class=\\\"mat-hint\\\">{{hintLabel}}</div><ng-content select=\\\"mat-hint:not([align='end'])\\\"></ng-content><div class=\\\"mat-form-field-hint-spacer\\\"></div><ng-content select=\\\"mat-hint[align='end']\\\"></ng-content></div></div></div>\",\n                    // MatInput is a directive and can't have styles, so we need to include its styles here.\n                    // The MatInput styles are fairly minimal so it shouldn't be a big deal for people who\n                    // aren't using MatInput.\n                    styles: [\".mat-form-field{display:inline-block;position:relative;text-align:left}[dir=rtl] .mat-form-field{text-align:right}.mat-form-field-wrapper{position:relative}.mat-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-form-field-prefix,.mat-form-field-suffix{white-space:nowrap;flex:none;position:relative}.mat-form-field-infix{display:block;position:relative;flex:auto;min-width:0;width:180px}@media screen and (-ms-high-contrast:active){.mat-form-field-infix{border-image:linear-gradient(transparent,transparent)}}.mat-form-field-label-wrapper{position:absolute;left:0;box-sizing:content-box;width:100%;height:100%;overflow:hidden;pointer-events:none}.mat-form-field-label{position:absolute;left:0;font:inherit;pointer-events:none;width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;transform-origin:0 0;transition:transform .4s cubic-bezier(.25,.8,.25,1),color .4s cubic-bezier(.25,.8,.25,1),width .4s cubic-bezier(.25,.8,.25,1);display:none}[dir=rtl] .mat-form-field-label{transform-origin:100% 0;left:auto;right:0}.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-empty.mat-form-field-label{display:block}.mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-label-wrapper .mat-form-field-label{display:none}.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-label-wrapper .mat-form-field-label{display:block;transition:none}.mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label,.mat-input-server[placeholder]:not(:placeholder-shown)+.mat-form-field-label-wrapper .mat-form-field-label{display:none}.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label,.mat-form-field-can-float .mat-input-server[placeholder]:not(:placeholder-shown)+.mat-form-field-label-wrapper .mat-form-field-label{display:block}.mat-form-field-label:not(.mat-form-field-empty){transition:none}.mat-form-field-underline{position:absolute;width:100%;pointer-events:none;transform:scaleY(1.0001)}.mat-form-field-ripple{position:absolute;left:0;width:100%;transform-origin:50%;transform:scaleX(.5);opacity:0;transition:background-color .3s cubic-bezier(.55,0,.55,.2)}.mat-form-field.mat-focused .mat-form-field-ripple,.mat-form-field.mat-form-field-invalid .mat-form-field-ripple{opacity:1;transform:scaleX(1);transition:transform .3s cubic-bezier(.25,.8,.25,1),opacity .1s cubic-bezier(.25,.8,.25,1),background-color .3s cubic-bezier(.25,.8,.25,1)}.mat-form-field-subscript-wrapper{position:absolute;box-sizing:border-box;width:100%;overflow:hidden}.mat-form-field-label-wrapper .mat-icon,.mat-form-field-subscript-wrapper .mat-icon{width:1em;height:1em;font-size:inherit;vertical-align:baseline}.mat-form-field-hint-wrapper{display:flex}.mat-form-field-hint-spacer{flex:1 0 1em}.mat-error{display:block}.mat-form-field._mat-animation-noopable .mat-form-field-label,.mat-form-field._mat-animation-noopable .mat-form-field-ripple{transition:none} .mat-form-field-appearance-fill .mat-form-field-flex{border-radius:4px 4px 0 0;padding:.75em .75em 0 .75em}@media screen and (-ms-high-contrast:active){.mat-form-field-appearance-fill .mat-form-field-flex{outline:solid 1px}}.mat-form-field-appearance-fill .mat-form-field-underline::before{content:'';display:block;position:absolute;bottom:0;height:1px;width:100%}.mat-form-field-appearance-fill .mat-form-field-ripple{bottom:0;height:2px}@media screen and (-ms-high-contrast:active){.mat-form-field-appearance-fill .mat-form-field-ripple{height:0;border-top:solid 2px}}.mat-form-field-appearance-fill:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-underline .mat-form-field-ripple{opacity:1;transform:none;transition:opacity .6s cubic-bezier(.25,.8,.25,1)}.mat-form-field-appearance-fill._mat-animation-noopable:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-underline .mat-form-field-ripple{transition:none}.mat-form-field-appearance-fill .mat-form-field-subscript-wrapper{padding:0 1em} .mat-form-field-appearance-legacy .mat-form-field-label{transform:perspective(100px);-ms-transform:none}.mat-form-field-appearance-legacy .mat-form-field-prefix .mat-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mat-icon{width:1em}.mat-form-field-appearance-legacy .mat-form-field-prefix .mat-icon-button,.mat-form-field-appearance-legacy .mat-form-field-suffix .mat-icon-button{font:inherit;vertical-align:baseline}.mat-form-field-appearance-legacy .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mat-icon-button .mat-icon{font-size:inherit}.mat-form-field-appearance-legacy .mat-form-field-underline{height:1px}@media screen and (-ms-high-contrast:active){.mat-form-field-appearance-legacy .mat-form-field-underline{height:0;border-top:solid 1px}}.mat-form-field-appearance-legacy .mat-form-field-ripple{top:0;height:2px;overflow:hidden}@media screen and (-ms-high-contrast:active){.mat-form-field-appearance-legacy .mat-form-field-ripple{height:0;border-top:solid 2px}}.mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline{background-position:0;background-color:transparent}@media screen and (-ms-high-contrast:active){.mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline{border-top-style:dotted;border-top-width:2px}}.mat-form-field-appearance-legacy.mat-form-field-invalid:not(.mat-focused) .mat-form-field-ripple{height:1px} .mat-form-field-appearance-outline .mat-form-field-wrapper{margin:.25em 0}.mat-form-field-appearance-outline .mat-form-field-flex{padding:0 .75em 0 .75em;margin-top:-.25em;position:relative}.mat-form-field-appearance-outline .mat-form-field-prefix,.mat-form-field-appearance-outline .mat-form-field-suffix{top:.25em}.mat-form-field-appearance-outline .mat-form-field-outline{display:flex;position:absolute;top:.25em;left:0;right:0;bottom:0;pointer-events:none}.mat-form-field-appearance-outline .mat-form-field-outline-end,.mat-form-field-appearance-outline .mat-form-field-outline-start{border:1px solid currentColor;min-width:5px}.mat-form-field-appearance-outline .mat-form-field-outline-start{border-radius:5px 0 0 5px;border-right-style:none}[dir=rtl] .mat-form-field-appearance-outline .mat-form-field-outline-start{border-right-style:solid;border-left-style:none;border-radius:0 5px 5px 0}.mat-form-field-appearance-outline .mat-form-field-outline-end{border-radius:0 5px 5px 0;border-left-style:none;flex-grow:1}[dir=rtl] .mat-form-field-appearance-outline .mat-form-field-outline-end{border-left-style:solid;border-right-style:none;border-radius:5px 0 0 5px}.mat-form-field-appearance-outline .mat-form-field-outline-gap{border-radius:.000001px;border:1px solid currentColor;border-left-style:none;border-right-style:none}.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-outline-gap{border-top-color:transparent}.mat-form-field-appearance-outline .mat-form-field-outline-thick{opacity:0}.mat-form-field-appearance-outline .mat-form-field-outline-thick .mat-form-field-outline-end,.mat-form-field-appearance-outline .mat-form-field-outline-thick .mat-form-field-outline-gap,.mat-form-field-appearance-outline .mat-form-field-outline-thick .mat-form-field-outline-start{border-width:2px;transition:border-color .3s cubic-bezier(.25,.8,.25,1)}.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline,.mat-form-field-appearance-outline.mat-form-field-invalid .mat-form-field-outline{opacity:0;transition:opacity .1s cubic-bezier(.25,.8,.25,1)}.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick,.mat-form-field-appearance-outline.mat-form-field-invalid .mat-form-field-outline-thick{opacity:1}.mat-form-field-appearance-outline:not(.mat-form-field-disabled) .mat-form-field-flex:hover .mat-form-field-outline{opacity:0;transition:opacity .6s cubic-bezier(.25,.8,.25,1)}.mat-form-field-appearance-outline:not(.mat-form-field-disabled) .mat-form-field-flex:hover .mat-form-field-outline-thick{opacity:1}.mat-form-field-appearance-outline .mat-form-field-subscript-wrapper{padding:0 1em}.mat-form-field-appearance-outline._mat-animation-noopable .mat-form-field-outline,.mat-form-field-appearance-outline._mat-animation-noopable .mat-form-field-outline-end,.mat-form-field-appearance-outline._mat-animation-noopable .mat-form-field-outline-gap,.mat-form-field-appearance-outline._mat-animation-noopable .mat-form-field-outline-start,.mat-form-field-appearance-outline._mat-animation-noopable:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-outline{transition:none} .mat-form-field-appearance-standard .mat-form-field-flex{padding-top:.75em}.mat-form-field-appearance-standard .mat-form-field-underline{height:1px}@media screen and (-ms-high-contrast:active){.mat-form-field-appearance-standard .mat-form-field-underline{height:0;border-top:solid 1px}}.mat-form-field-appearance-standard .mat-form-field-ripple{bottom:0;height:2px}@media screen and (-ms-high-contrast:active){.mat-form-field-appearance-standard .mat-form-field-ripple{height:0;border-top:2px}}.mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline{background-position:0;background-color:transparent}@media screen and (-ms-high-contrast:active){.mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline{border-top-style:dotted;border-top-width:2px}}.mat-form-field-appearance-standard:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-underline .mat-form-field-ripple{opacity:1;transform:none;transition:opacity .6s cubic-bezier(.25,.8,.25,1)}.mat-form-field-appearance-standard._mat-animation-noopable:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-underline .mat-form-field-ripple{transition:none} .mat-input-element{font:inherit;background:0 0;color:currentColor;border:none;outline:0;padding:0;margin:0;width:100%;max-width:100%;vertical-align:bottom;text-align:inherit}.mat-input-element:-moz-ui-invalid{box-shadow:none}.mat-input-element::-ms-clear,.mat-input-element::-ms-reveal{display:none}.mat-input-element,.mat-input-element::-webkit-search-cancel-button,.mat-input-element::-webkit-search-decoration,.mat-input-element::-webkit-search-results-button,.mat-input-element::-webkit-search-results-decoration{-webkit-appearance:none}.mat-input-element::-webkit-caps-lock-indicator,.mat-input-element::-webkit-contacts-auto-fill-button,.mat-input-element::-webkit-credentials-auto-fill-button{visibility:hidden}.mat-input-element[type=date]::after,.mat-input-element[type=datetime-local]::after,.mat-input-element[type=datetime]::after,.mat-input-element[type=month]::after,.mat-input-element[type=time]::after,.mat-input-element[type=week]::after{content:' ';white-space:pre;width:1px}.mat-input-element::placeholder{transition:color .4s .133s cubic-bezier(.25,.8,.25,1)}.mat-input-element::-moz-placeholder{transition:color .4s .133s cubic-bezier(.25,.8,.25,1)}.mat-input-element::-webkit-input-placeholder{transition:color .4s .133s cubic-bezier(.25,.8,.25,1)}.mat-input-element:-ms-input-placeholder{transition:color .4s .133s cubic-bezier(.25,.8,.25,1)}.mat-form-field-hide-placeholder .mat-input-element::placeholder{color:transparent!important;-webkit-text-fill-color:transparent;transition:none}.mat-form-field-hide-placeholder .mat-input-element::-moz-placeholder{color:transparent!important;-webkit-text-fill-color:transparent;transition:none}.mat-form-field-hide-placeholder .mat-input-element::-webkit-input-placeholder{color:transparent!important;-webkit-text-fill-color:transparent;transition:none}.mat-form-field-hide-placeholder .mat-input-element:-ms-input-placeholder{color:transparent!important;-webkit-text-fill-color:transparent;transition:none}textarea.mat-input-element{resize:vertical;overflow:auto}textarea.mat-input-element.cdk-textarea-autosize{resize:none}textarea.mat-input-element{padding:2px 0;margin:-2px 0}\"],\n                    animations: [matFormFieldAnimations.transitionMessages],\n                    host: {\n                        'class': 'mat-form-field',\n                        '[class.mat-form-field-appearance-standard]': 'appearance == \"standard\"',\n                        '[class.mat-form-field-appearance-fill]': 'appearance == \"fill\"',\n                        '[class.mat-form-field-appearance-outline]': 'appearance == \"outline\"',\n                        '[class.mat-form-field-appearance-legacy]': 'appearance == \"legacy\"',\n                        '[class.mat-form-field-invalid]': '_control.errorState',\n                        '[class.mat-form-field-can-float]': '_canLabelFloat',\n                        '[class.mat-form-field-should-float]': '_shouldLabelFloat()',\n                        '[class.mat-form-field-hide-placeholder]': '_hideControlPlaceholder()',\n                        '[class.mat-form-field-disabled]': '_control.disabled',\n                        '[class.mat-form-field-autofilled]': '_control.autofilled',\n                        '[class.mat-focused]': '_control.focused',\n                        '[class.mat-accent]': 'color == \"accent\"',\n                        '[class.mat-warn]': 'color == \"warn\"',\n                        '[class.ng-untouched]': '_shouldForward(\"untouched\")',\n                        '[class.ng-touched]': '_shouldForward(\"touched\")',\n                        '[class.ng-pristine]': '_shouldForward(\"pristine\")',\n                        '[class.ng-dirty]': '_shouldForward(\"dirty\")',\n                        '[class.ng-valid]': '_shouldForward(\"valid\")',\n                        '[class.ng-invalid]': '_shouldForward(\"invalid\")',\n                        '[class.ng-pending]': '_shouldForward(\"pending\")',\n                        '[class._mat-animation-noopable]': '!_animationsEnabled',\n                    },\n                    inputs: ['color'],\n                    encapsulation: ViewEncapsulation.None,\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                },] },\n    ];\n    /** @nocollapse */\n    MatFormField.ctorParameters = function () { return [\n        { type: ElementRef, },\n        { type: ChangeDetectorRef, },\n        { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_LABEL_GLOBAL_OPTIONS,] },] },\n        { type: Directionality, decorators: [{ type: Optional },] },\n        { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_FORM_FIELD_DEFAULT_OPTIONS,] },] },\n        { type: Platform, },\n        { type: NgZone, },\n        { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] },] },\n    ]; };\n    MatFormField.propDecorators = {\n        \"appearance\": [{ type: Input },],\n        \"hideRequiredMarker\": [{ type: Input },],\n        \"hintLabel\": [{ type: Input },],\n        \"floatLabel\": [{ type: Input },],\n        \"underlineRef\": [{ type: ViewChild, args: ['underline',] },],\n        \"_connectionContainerRef\": [{ type: ViewChild, args: ['connectionContainer',] },],\n        \"_inputContainerRef\": [{ type: ViewChild, args: ['inputContainer',] },],\n        \"_label\": [{ type: ViewChild, args: ['label',] },],\n        \"_control\": [{ type: ContentChild, args: [MatFormFieldControl,] },],\n        \"_placeholderChild\": [{ type: ContentChild, args: [MatPlaceholder,] },],\n        \"_labelChild\": [{ type: ContentChild, args: [MatLabel,] },],\n        \"_errorChildren\": [{ type: ContentChildren, args: [MatError,] },],\n        \"_hintChildren\": [{ type: ContentChildren, args: [MatHint,] },],\n        \"_prefixChildren\": [{ type: ContentChildren, args: [MatPrefix,] },],\n        \"_suffixChildren\": [{ type: ContentChildren, args: [MatSuffix,] },],\n    };\n    return MatFormField;\n}(_MatFormFieldMixinBase));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nvar MatFormFieldModule = /** @class */ (function () {\n    function MatFormFieldModule() {\n    }\n    MatFormFieldModule.decorators = [\n        { type: NgModule, args: [{\n                    declarations: [\n                        MatError,\n                        MatFormField,\n                        MatHint,\n                        MatLabel,\n                        MatPlaceholder,\n                        MatPrefix,\n                        MatSuffix,\n                    ],\n                    imports: [\n                        CommonModule,\n                        ObserversModule,\n                    ],\n                    exports: [\n                        MatError,\n                        MatFormField,\n                        MatHint,\n                        MatLabel,\n                        MatPlaceholder,\n                        MatPrefix,\n                        MatSuffix,\n                    ],\n                },] },\n    ];\n    return MatFormFieldModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\nexport { MatFormFieldModule, MatError, MatFormFieldBase, _MatFormFieldMixinBase, MAT_FORM_FIELD_DEFAULT_OPTIONS, MatFormField, MatFormFieldControl, getMatFormFieldPlaceholderConflictError, getMatFormFieldDuplicatedHintError, getMatFormFieldMissingControlError, MatHint, MatPlaceholder, MatPrefix, MatSuffix, MatLabel, matFormFieldAnimations };\n//# sourceMappingURL=form-field.es5.js.map\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(object);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalObjects;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","/**\n * @fileoverview This file was generated by the Angular template compiler. Do not edit.\n *\n * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride,checkTypes}\n * tslint:disable\n */ \nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/chips\";\nimport * as i2 from \"@angular/material/core\";\nimport * as i3 from \"@angular/cdk/keycodes\";\nimport * as i4 from \"@angular/material/form-field\";\nimport * as i5 from \"@angular/cdk/bidi\";\nimport * as i6 from \"@angular/forms\";\nvar MatChipsModuleNgFactory = i0.ɵcmf(i1.MatChipsModule, [], function (_l) { return i0.ɵmod([i0.ɵmpd(512, i0.ComponentFactoryResolver, i0.ɵCodegenComponentFactoryResolver, [[8, []], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i2.ErrorStateMatcher, i2.ErrorStateMatcher, []), i0.ɵmpd(1073742336, i1.MatChipsModule, i1.MatChipsModule, []), i0.ɵmpd(256, i1.MAT_CHIPS_DEFAULT_OPTIONS, { separatorKeyCodes: [i3.ENTER] }, [])]); });\nexport { MatChipsModuleNgFactory as MatChipsModuleNgFactory };\nvar styles_MatChipList = [\".mat-chip{position:relative;overflow:hidden;box-sizing:border-box;-webkit-tap-highlight-color:transparent}.mat-standard-chip{transition:box-shadow 280ms cubic-bezier(.4,0,.2,1);display:inline-flex;padding:7px 12px;border-radius:24px;align-items:center;cursor:default}.mat-standard-chip .mat-chip-remove.mat-icon{width:18px;height:18px}.mat-standard-chip:focus{box-shadow:0 3px 3px -2px rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12);outline:0}@media screen and (-ms-high-contrast:active){.mat-standard-chip{outline:solid 1px}.mat-standard-chip:focus{outline:dotted 2px}}.mat-standard-chip.mat-chip-with-avatar,.mat-standard-chip.mat-chip-with-trailing-icon.mat-chip-with-avatar{padding-top:0;padding-bottom:0}.mat-standard-chip.mat-chip-with-trailing-icon.mat-chip-with-avatar{padding-right:7px;padding-left:0}[dir=rtl] .mat-standard-chip.mat-chip-with-trailing-icon.mat-chip-with-avatar{padding-left:7px;padding-right:0}.mat-standard-chip.mat-chip-with-trailing-icon{padding-top:7px;padding-bottom:7px;padding-right:7px;padding-left:12px}[dir=rtl] .mat-standard-chip.mat-chip-with-trailing-icon{padding-left:7px;padding-right:12px}.mat-standard-chip.mat-chip-with-avatar{padding-left:0;padding-right:12px}[dir=rtl] .mat-standard-chip.mat-chip-with-avatar{padding-right:0;padding-left:12px}.mat-standard-chip .mat-chip-avatar{width:32px;height:32px;margin-right:8px;margin-left:0}[dir=rtl] .mat-standard-chip .mat-chip-avatar{margin-left:8px;margin-right:0}.mat-standard-chip .mat-chip-remove,.mat-standard-chip .mat-chip-trailing-icon{width:18px;height:18px;cursor:pointer}.mat-standard-chip .mat-chip-remove,.mat-standard-chip .mat-chip-trailing-icon{margin-left:7px;margin-right:0}[dir=rtl] .mat-standard-chip .mat-chip-remove,[dir=rtl] .mat-standard-chip .mat-chip-trailing-icon{margin-right:7px;margin-left:0}.mat-chip-list-wrapper{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;margin:-4px}.mat-chip-list-wrapper .mat-standard-chip,.mat-chip-list-wrapper input.mat-input-element{margin:4px}.mat-chip-list-stacked .mat-chip-list-wrapper{flex-direction:column;align-items:flex-start}.mat-chip-list-stacked .mat-chip-list-wrapper .mat-standard-chip{width:100%}.mat-chip-avatar{border-radius:50%;justify-content:center;align-items:center;display:flex;overflow:hidden;object-fit:cover}input.mat-chip-input{width:150px;margin:3px;flex:1 0 150px}\"];\nvar RenderType_MatChipList = i0.ɵcrt({ encapsulation: 2, styles: styles_MatChipList, data: {} });\nexport { RenderType_MatChipList as RenderType_MatChipList };\nexport function View_MatChipList_0(_l) { return i0.ɵvid(2, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"div\", [[\"class\", \"mat-chip-list-wrapper\"]], null, null, null, null, null)), i0.ɵncd(null, 0)], null, null); }\nexport function View_MatChipList_Host_0(_l) { return i0.ɵvid(0, [(_l()(), i0.ɵeld(0, 0, null, null, 3, \"mat-chip-list\", [[\"class\", \"mat-chip-list\"]], [[1, \"tabindex\", 0], [1, \"aria-describedby\", 0], [1, \"aria-required\", 0], [1, \"aria-disabled\", 0], [1, \"aria-invalid\", 0], [1, \"aria-multiselectable\", 0], [1, \"role\", 0], [2, \"mat-chip-list-disabled\", null], [2, \"mat-chip-list-invalid\", null], [2, \"mat-chip-list-required\", null], [1, \"aria-orientation\", 0], [8, \"id\", 0]], [[null, \"focus\"], [null, \"blur\"], [null, \"keydown\"]], function (_v, en, $event) { var ad = true; if ((\"focus\" === en)) {\n        var pd_0 = (i0.ɵnov(_v, 2).focus() !== false);\n        ad = (pd_0 && ad);\n    } if ((\"blur\" === en)) {\n        var pd_1 = (i0.ɵnov(_v, 2)._blur() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"keydown\" === en)) {\n        var pd_2 = (i0.ɵnov(_v, 2)._keydown($event) !== false);\n        ad = (pd_2 && ad);\n    } return ad; }, View_MatChipList_0, RenderType_MatChipList)), i0.ɵprd(6144, null, i4.MatFormFieldControl, null, [i1.MatChipList]), i0.ɵdid(2, 1556480, null, 1, i1.MatChipList, [i0.ElementRef, i0.ChangeDetectorRef, [2, i5.Directionality], [2, i6.NgForm], [2, i6.FormGroupDirective], i2.ErrorStateMatcher, [8, null]], null, null), i0.ɵqud(603979776, 1, { chips: 1 })], function (_ck, _v) { _ck(_v, 2, 0); }, function (_ck, _v) { var currVal_0 = (i0.ɵnov(_v, 2).disabled ? null : i0.ɵnov(_v, 2)._tabIndex); var currVal_1 = (i0.ɵnov(_v, 2)._ariaDescribedby || null); var currVal_2 = i0.ɵnov(_v, 2).required.toString(); var currVal_3 = i0.ɵnov(_v, 2).disabled.toString(); var currVal_4 = i0.ɵnov(_v, 2).errorState; var currVal_5 = i0.ɵnov(_v, 2).multiple; var currVal_6 = i0.ɵnov(_v, 2).role; var currVal_7 = i0.ɵnov(_v, 2).disabled; var currVal_8 = i0.ɵnov(_v, 2).errorState; var currVal_9 = i0.ɵnov(_v, 2).required; var currVal_10 = i0.ɵnov(_v, 2).ariaOrientation; var currVal_11 = i0.ɵnov(_v, 2)._uid; _ck(_v, 0, 1, [currVal_0, currVal_1, currVal_2, currVal_3, currVal_4, currVal_5, currVal_6, currVal_7, currVal_8, currVal_9, currVal_10, currVal_11]); }); }\nvar MatChipListNgFactory = i0.ɵccf(\"mat-chip-list\", i1.MatChipList, View_MatChipList_Host_0, { errorStateMatcher: \"errorStateMatcher\", multiple: \"multiple\", compareWith: \"compareWith\", value: \"value\", required: \"required\", placeholder: \"placeholder\", disabled: \"disabled\", ariaOrientation: \"aria-orientation\", selectable: \"selectable\", tabIndex: \"tabIndex\" }, { change: \"change\", valueChange: \"valueChange\" }, [\"*\"]);\nexport { MatChipListNgFactory as MatChipListNgFactory };\n","<div class=\"mat-chip-list-wrapper\"><ng-content></ng-content></div>","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { animate, state, style, transition, trigger, query, animateChild, group } from '@angular/animations';\nimport { __extends } from 'tslib';\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { DOWN_ARROW, END, ENTER, HOME, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW, A } from '@angular/cdk/keycodes';\nimport { CdkConnectedOverlay, Overlay, ViewportRuler, OverlayModule } from '@angular/cdk/overlay';\nimport { Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, Directive, ElementRef, EventEmitter, Inject, InjectionToken, Input, isDevMode, NgZone, Optional, Output, Self, ViewChild, ViewEncapsulation, NgModule } from '@angular/core';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { _countGroupLabelsBeforeOption, _getOptionScrollPosition, ErrorStateMatcher, MAT_OPTION_PARENT_COMPONENT, MatOptgroup, MatOption, mixinDisabled, mixinDisableRipple, mixinErrorState, mixinTabIndex, MatCommonModule, MatOptionModule } from '@angular/material/core';\nimport { MatFormField, MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';\nimport { defer, merge, Subject } from 'rxjs';\nimport { filter, map, startWith, switchMap, take, takeUntil, distinctUntilChanged } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * The following are all the animations for the mat-select component, with each\n * const containing the metadata for one animation.\n *\n * The values below match the implementation of the AngularJS Material mat-select animation.\n */\nvar /** @type {?} */ matSelectAnimations = {\n    /**\n       * This animation transforms the select's overlay panel on and off the page.\n       *\n       * When the panel is attached to the DOM, it expands its width by the amount of padding, scales it\n       * up to 100% on the Y axis, fades in its border, and translates slightly up and to the\n       * side to ensure the option text correctly overlaps the trigger text.\n       *\n       * When the panel is removed from the DOM, it simply fades out linearly.\n       */\n    transformPanel: trigger('transformPanel', [\n        state('void', style({\n            transform: 'scaleY(0)',\n            minWidth: '100%',\n            opacity: 0\n        })),\n        state('showing', style({\n            opacity: 1,\n            minWidth: 'calc(100% + 32px)',\n            // 32px = 2 * 16px padding\n            transform: 'scaleY(1)'\n        })),\n        state('showing-multiple', style({\n            opacity: 1,\n            minWidth: 'calc(100% + 64px)',\n            // 64px = 48px padding on the left + 16px padding on the right\n            transform: 'scaleY(1)'\n        })),\n        transition('void => *', group([\n            query('@fadeInContent', animateChild()),\n            animate('150ms cubic-bezier(0.25, 0.8, 0.25, 1)')\n        ])),\n        transition('* => void', [\n            animate('250ms 100ms linear', style({ opacity: 0 }))\n        ])\n    ]),\n    /**\n       * This animation fades in the background color and text content of the\n       * select's options. It is time delayed to occur 100ms after the overlay\n       * panel has transformed in.\n       */\n    fadeInContent: trigger('fadeInContent', [\n        state('showing', style({ opacity: 1 })),\n        transition('void => showing', [\n            style({ opacity: 0 }),\n            animate('150ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)')\n        ])\n    ])\n};\n/**\n * @deprecated\n * \\@breaking-change 7.0.0\n */\nvar /** @type {?} */ transformPanel = matSelectAnimations.transformPanel;\n/**\n * @deprecated\n * \\@breaking-change 7.0.0\n */\nvar /** @type {?} */ fadeInContent = matSelectAnimations.fadeInContent;\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * Returns an exception to be thrown when attempting to change a select's `multiple` option\n * after initialization.\n * \\@docs-private\n * @return {?}\n */\nfunction getMatSelectDynamicMultipleError() {\n    return Error('Cannot change `multiple` mode of select after initialization.');\n}\n/**\n * Returns an exception to be thrown when attempting to assign a non-array value to a select\n * in `multiple` mode. Note that `undefined` and `null` are still valid values to allow for\n * resetting the value.\n * \\@docs-private\n * @return {?}\n */\nfunction getMatSelectNonArrayValueError() {\n    return Error('Value must be an array in multiple-selection mode.');\n}\n/**\n * Returns an exception to be thrown when assigning a non-function value to the comparator\n * used to determine if a value corresponds to an option. Note that whether the function\n * actually takes two values and returns a boolean is not checked.\n * @return {?}\n */\nfunction getMatSelectNonFunctionValueError() {\n    return Error('`compareWith` must be a function.');\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nvar /** @type {?} */ nextUniqueId = 0;\n/**\n * The max height of the select's overlay panel\n */\nvar /** @type {?} */ SELECT_PANEL_MAX_HEIGHT = 256;\n/**\n * The panel's padding on the x-axis\n */\nvar /** @type {?} */ SELECT_PANEL_PADDING_X = 16;\n/**\n * The panel's x axis padding if it is indented (e.g. there is an option group).\n */\nvar /** @type {?} */ SELECT_PANEL_INDENT_PADDING_X = SELECT_PANEL_PADDING_X * 2;\n/**\n * The height of the select items in `em` units.\n */\nvar /** @type {?} */ SELECT_ITEM_HEIGHT_EM = 3;\n/**\n * Distance between the panel edge and the option text in\n * multi-selection mode.\n *\n * (SELECT_PANEL_PADDING_X * 1.5) + 20 = 44\n * The padding is multiplied by 1.5 because the checkbox's margin is half the padding.\n * The checkbox width is 20px.\n */\nvar /** @type {?} */ SELECT_MULTIPLE_PANEL_PADDING_X = SELECT_PANEL_PADDING_X * 1.5 + 20;\n/**\n * The select panel will only \"fit\" inside the viewport if it is positioned at\n * this value or more away from the viewport boundary.\n */\nvar /** @type {?} */ SELECT_PANEL_VIEWPORT_PADDING = 8;\n/**\n * Injection token that determines the scroll handling while a select is open.\n */\nvar /** @type {?} */ MAT_SELECT_SCROLL_STRATEGY = new InjectionToken('mat-select-scroll-strategy');\n/**\n * \\@docs-private\n * @param {?} overlay\n * @return {?}\n */\nfunction MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n    return function () { return overlay.scrollStrategies.reposition(); };\n}\n/**\n * \\@docs-private\n */\nvar /** @type {?} */ MAT_SELECT_SCROLL_STRATEGY_PROVIDER = {\n    provide: MAT_SELECT_SCROLL_STRATEGY,\n    deps: [Overlay],\n    useFactory: MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n/**\n * Change event object that is emitted when the select value has changed.\n */\nvar  /**\n * Change event object that is emitted when the select value has changed.\n */\nMatSelectChange = /** @class */ (function () {\n    function MatSelectChange(source, value) {\n        this.source = source;\n        this.value = value;\n    }\n    return MatSelectChange;\n}());\n/**\n * \\@docs-private\n */\nvar  /**\n * \\@docs-private\n */\nMatSelectBase = /** @class */ (function () {\n    function MatSelectBase(_elementRef, _defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl) {\n        this._elementRef = _elementRef;\n        this._defaultErrorStateMatcher = _defaultErrorStateMatcher;\n        this._parentForm = _parentForm;\n        this._parentFormGroup = _parentFormGroup;\n        this.ngControl = ngControl;\n    }\n    return MatSelectBase;\n}());\nvar /** @type {?} */ _MatSelectMixinBase = mixinDisableRipple(mixinTabIndex(mixinDisabled(mixinErrorState(MatSelectBase))));\n/**\n * Allows the user to customize the trigger that is displayed when the select has a value.\n */\nvar MatSelectTrigger = /** @class */ (function () {\n    function MatSelectTrigger() {\n    }\n    MatSelectTrigger.decorators = [\n        { type: Directive, args: [{\n                    selector: 'mat-select-trigger'\n                },] },\n    ];\n    return MatSelectTrigger;\n}());\nvar MatSelect = /** @class */ (function (_super) {\n    __extends(MatSelect, _super);\n    function MatSelect(_viewportRuler, _changeDetectorRef, _ngZone, _defaultErrorStateMatcher, elementRef, _dir, _parentForm, _parentFormGroup, _parentFormField, ngControl, tabIndex, _scrollStrategyFactory) {\n        var _this = _super.call(this, elementRef, _defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl) || this;\n        _this._viewportRuler = _viewportRuler;\n        _this._changeDetectorRef = _changeDetectorRef;\n        _this._ngZone = _ngZone;\n        _this._dir = _dir;\n        _this._parentFormField = _parentFormField;\n        _this.ngControl = ngControl;\n        _this._scrollStrategyFactory = _scrollStrategyFactory;\n        /**\n         * Whether or not the overlay panel is open.\n         */\n        _this._panelOpen = false;\n        /**\n         * Whether filling out the select is required in the form.\n         */\n        _this._required = false;\n        /**\n         * The scroll position of the overlay panel, calculated to center the selected option.\n         */\n        _this._scrollTop = 0;\n        /**\n         * Whether the component is in multiple selection mode.\n         */\n        _this._multiple = false;\n        /**\n         * Comparison function to specify which option is displayed. Defaults to object equality.\n         */\n        _this._compareWith = function (o1, o2) { return o1 === o2; };\n        /**\n         * Unique id for this input.\n         */\n        _this._uid = \"mat-select-\" + nextUniqueId++;\n        /**\n         * Emits whenever the component is destroyed.\n         */\n        _this._destroy = new Subject();\n        /**\n         * The cached font-size of the trigger element.\n         */\n        _this._triggerFontSize = 0;\n        /**\n         * `View -> model callback called when value changes`\n         */\n        _this._onChange = function () { };\n        /**\n         * `View -> model callback called when select has been touched`\n         */\n        _this._onTouched = function () { };\n        /**\n         * The IDs of child options to be passed to the aria-owns attribute.\n         */\n        _this._optionIds = '';\n        /**\n         * The value of the select panel's transform-origin property.\n         */\n        _this._transformOrigin = 'top';\n        /**\n         * Whether the panel's animation is done.\n         */\n        _this._panelDoneAnimating = false;\n        /**\n         * Emits when the panel element is finished transforming in.\n         */\n        _this._panelDoneAnimatingStream = new Subject();\n        /**\n         * Strategy that will be used to handle scrolling while the select panel is open.\n         */\n        _this._scrollStrategy = _this._scrollStrategyFactory();\n        /**\n         * The y-offset of the overlay panel in relation to the trigger's top start corner.\n         * This must be adjusted to align the selected option text over the trigger text.\n         * when the panel opens. Will change based on the y-position of the selected option.\n         */\n        _this._offsetY = 0;\n        /**\n         * This position config ensures that the top \"start\" corner of the overlay\n         * is aligned with with the top \"start\" of the origin by default (overlapping\n         * the trigger completely). If the panel cannot fit below the trigger, it\n         * will fall back to a position above the trigger.\n         */\n        _this._positions = [\n            {\n                originX: 'start',\n                originY: 'top',\n                overlayX: 'start',\n                overlayY: 'top',\n            },\n            {\n                originX: 'start',\n                originY: 'bottom',\n                overlayX: 'start',\n                overlayY: 'bottom',\n            },\n        ];\n        /**\n         * Whether the component is disabling centering of the active option over the trigger.\n         */\n        _this._disableOptionCentering = false;\n        _this._focused = false;\n        /**\n         * A name for this control that can be used by `mat-form-field`.\n         */\n        _this.controlType = 'mat-select';\n        /**\n         * Aria label of the select. If not specified, the placeholder will be used as label.\n         */\n        _this.ariaLabel = '';\n        /**\n         * Combined stream of all of the child options' change events.\n         */\n        _this.optionSelectionChanges = defer(function () {\n            if (_this.options) {\n                return merge.apply(void 0, _this.options.map(function (option) { return option.onSelectionChange; }));\n            }\n            return _this._ngZone.onStable\n                .asObservable()\n                .pipe(take(1), switchMap(function () { return _this.optionSelectionChanges; }));\n        });\n        /**\n         * Event emitted when the select panel has been toggled.\n         */\n        _this.openedChange = new EventEmitter();\n        /**\n         * Event emitted when the select has been opened.\n         */\n        _this._openedStream = _this.openedChange.pipe(filter(function (o) { return o; }), map(function () { }));\n        /**\n         * Event emitted when the select has been closed.\n         */\n        _this._closedStream = _this.openedChange.pipe(filter(function (o) { return !o; }), map(function () { }));\n        /**\n         * Event emitted when the selected value has been changed by the user.\n         */\n        _this.selectionChange = new EventEmitter();\n        /**\n         * Event that emits whenever the raw value of the select changes. This is here primarily\n         * to facilitate the two-way binding for the `value` input.\n         * \\@docs-private\n         */\n        _this.valueChange = new EventEmitter();\n        if (_this.ngControl) {\n            // Note: we provide the value accessor through here, instead of\n            // the `providers` to avoid running into a circular import.\n            // Note: we provide the value accessor through here, instead of\n            // the `providers` to avoid running into a circular import.\n            _this.ngControl.valueAccessor = _this;\n        }\n        _this.tabIndex = parseInt(tabIndex) || 0;\n        // Force setter to be called in case id was not specified.\n        // Force setter to be called in case id was not specified.\n        _this.id = _this.id;\n        return _this;\n    }\n    Object.defineProperty(MatSelect.prototype, \"focused\", {\n        /** Whether the select is focused. */\n        get: /**\n         * Whether the select is focused.\n         * @return {?}\n         */\n        function () {\n            return this._focused || this._panelOpen;\n        },\n        /**\n         * @deprecated Setter to be removed as this property is intended to be readonly.\n         * @breaking-change 8.0.0\n         */\n        set: /**\n         * @deprecated Setter to be removed as this property is intended to be readonly.\n         * \\@breaking-change 8.0.0\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._focused = value;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatSelect.prototype, \"placeholder\", {\n        get: /**\n         * Placeholder to be shown if no value has been selected.\n         * @return {?}\n         */\n        function () { return this._placeholder; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._placeholder = value;\n            this.stateChanges.next();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatSelect.prototype, \"required\", {\n        get: /**\n         * Whether the component is required.\n         * @return {?}\n         */\n        function () { return this._required; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._required = coerceBooleanProperty(value);\n            this.stateChanges.next();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatSelect.prototype, \"multiple\", {\n        get: /**\n         * Whether the user should be allowed to select multiple options.\n         * @return {?}\n         */\n        function () { return this._multiple; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            if (this._selectionModel) {\n                throw getMatSelectDynamicMultipleError();\n            }\n            this._multiple = coerceBooleanProperty(value);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatSelect.prototype, \"disableOptionCentering\", {\n        get: /**\n         * Whether to center the active option over the trigger.\n         * @return {?}\n         */\n        function () { return this._disableOptionCentering; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._disableOptionCentering = coerceBooleanProperty(value);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatSelect.prototype, \"compareWith\", {\n        get: /**\n         * A function to compare the option values with the selected values. The first argument\n         * is a value from an option. The second is a value from the selection. A boolean\n         * should be returned.\n         * @return {?}\n         */\n        function () { return this._compareWith; },\n        set: /**\n         * @param {?} fn\n         * @return {?}\n         */\n        function (fn) {\n            if (typeof fn !== 'function') {\n                throw getMatSelectNonFunctionValueError();\n            }\n            this._compareWith = fn;\n            if (this._selectionModel) {\n                // A different comparator means the selection could change.\n                this._initializeSelection();\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatSelect.prototype, \"value\", {\n        get: /**\n         * Value of the select control.\n         * @return {?}\n         */\n        function () { return this._value; },\n        set: /**\n         * @param {?} newValue\n         * @return {?}\n         */\n        function (newValue) {\n            if (newValue !== this._value) {\n                this.writeValue(newValue);\n                this._value = newValue;\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatSelect.prototype, \"id\", {\n        get: /**\n         * Unique id of the element.\n         * @return {?}\n         */\n        function () { return this._id; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._id = value || this._uid;\n            this.stateChanges.next();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @return {?}\n     */\n    MatSelect.prototype.ngOnInit = /**\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        this._selectionModel = new SelectionModel(this.multiple);\n        this.stateChanges.next();\n        // We need `distinctUntilChanged` here, because some browsers will\n        // fire the animation end event twice for the same animation. See:\n        // https://github.com/angular/angular/issues/24084\n        this._panelDoneAnimatingStream\n            .pipe(distinctUntilChanged(), takeUntil(this._destroy))\n            .subscribe(function () {\n            if (_this.panelOpen) {\n                _this._scrollTop = 0;\n                _this.openedChange.emit(true);\n            }\n            else {\n                _this.openedChange.emit(false);\n                _this._panelDoneAnimating = false;\n                _this.overlayDir.offsetX = 0;\n                _this._changeDetectorRef.markForCheck();\n            }\n        });\n    };\n    /**\n     * @return {?}\n     */\n    MatSelect.prototype.ngAfterContentInit = /**\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        this._initKeyManager(); /** @type {?} */\n        ((this._selectionModel.onChange)).pipe(takeUntil(this._destroy)).subscribe(function (event) {\n            event.added.forEach(function (option) { return option.select(); });\n            event.removed.forEach(function (option) { return option.deselect(); });\n        });\n        this.options.changes.pipe(startWith(null), takeUntil(this._destroy)).subscribe(function () {\n            _this._resetOptions();\n            _this._initializeSelection();\n        });\n    };\n    /**\n     * @return {?}\n     */\n    MatSelect.prototype.ngDoCheck = /**\n     * @return {?}\n     */\n    function () {\n        if (this.ngControl) {\n            this.updateErrorState();\n        }\n    };\n    /**\n     * @param {?} changes\n     * @return {?}\n     */\n    MatSelect.prototype.ngOnChanges = /**\n     * @param {?} changes\n     * @return {?}\n     */\n    function (changes) {\n        // Updating the disabled state is handled by `mixinDisabled`, but we need to additionally let\n        // the parent form field know to run change detection when the disabled state changes.\n        if (changes[\"disabled\"]) {\n            this.stateChanges.next();\n        }\n    };\n    /**\n     * @return {?}\n     */\n    MatSelect.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        this._destroy.next();\n        this._destroy.complete();\n        this.stateChanges.complete();\n    };\n    /** Toggles the overlay panel open or closed. */\n    /**\n     * Toggles the overlay panel open or closed.\n     * @return {?}\n     */\n    MatSelect.prototype.toggle = /**\n     * Toggles the overlay panel open or closed.\n     * @return {?}\n     */\n    function () {\n        this.panelOpen ? this.close() : this.open();\n    };\n    /** Opens the overlay panel. */\n    /**\n     * Opens the overlay panel.\n     * @return {?}\n     */\n    MatSelect.prototype.open = /**\n     * Opens the overlay panel.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        if (this.disabled || !this.options || !this.options.length || this._panelOpen) {\n            return;\n        }\n        this._triggerRect = this.trigger.nativeElement.getBoundingClientRect();\n        // Note: The computed font-size will be a string pixel value (e.g. \"16px\").\n        // `parseInt` ignores the trailing 'px' and converts this to a number.\n        this._triggerFontSize = parseInt(getComputedStyle(this.trigger.nativeElement)['font-size']);\n        this._panelOpen = true;\n        this._keyManager.withHorizontalOrientation(null);\n        this._calculateOverlayPosition();\n        this._highlightCorrectOption();\n        this._changeDetectorRef.markForCheck();\n        // Set the font size on the panel element once it exists.\n        this._ngZone.onStable.asObservable().pipe(take(1)).subscribe(function () {\n            if (_this._triggerFontSize && _this.overlayDir.overlayRef &&\n                _this.overlayDir.overlayRef.overlayElement) {\n                _this.overlayDir.overlayRef.overlayElement.style.fontSize = _this._triggerFontSize + \"px\";\n            }\n        });\n    };\n    /** Closes the overlay panel and focuses the host element. */\n    /**\n     * Closes the overlay panel and focuses the host element.\n     * @return {?}\n     */\n    MatSelect.prototype.close = /**\n     * Closes the overlay panel and focuses the host element.\n     * @return {?}\n     */\n    function () {\n        if (this._panelOpen) {\n            this._panelOpen = false;\n            this._keyManager.withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr');\n            this._changeDetectorRef.markForCheck();\n            this._onTouched();\n        }\n    };\n    /**\n     * Sets the select's value. Part of the ControlValueAccessor interface\n     * required to integrate with Angular's core forms API.\n     *\n     * @param value New value to be written to the model.\n     */\n    /**\n     * Sets the select's value. Part of the ControlValueAccessor interface\n     * required to integrate with Angular's core forms API.\n     *\n     * @param {?} value New value to be written to the model.\n     * @return {?}\n     */\n    MatSelect.prototype.writeValue = /**\n     * Sets the select's value. Part of the ControlValueAccessor interface\n     * required to integrate with Angular's core forms API.\n     *\n     * @param {?} value New value to be written to the model.\n     * @return {?}\n     */\n    function (value) {\n        if (this.options) {\n            this._setSelectionByValue(value);\n        }\n    };\n    /**\n     * Saves a callback function to be invoked when the select's value\n     * changes from user input. Part of the ControlValueAccessor interface\n     * required to integrate with Angular's core forms API.\n     *\n     * @param fn Callback to be triggered when the value changes.\n     */\n    /**\n     * Saves a callback function to be invoked when the select's value\n     * changes from user input. Part of the ControlValueAccessor interface\n     * required to integrate with Angular's core forms API.\n     *\n     * @param {?} fn Callback to be triggered when the value changes.\n     * @return {?}\n     */\n    MatSelect.prototype.registerOnChange = /**\n     * Saves a callback function to be invoked when the select's value\n     * changes from user input. Part of the ControlValueAccessor interface\n     * required to integrate with Angular's core forms API.\n     *\n     * @param {?} fn Callback to be triggered when the value changes.\n     * @return {?}\n     */\n    function (fn) {\n        this._onChange = fn;\n    };\n    /**\n     * Saves a callback function to be invoked when the select is blurred\n     * by the user. Part of the ControlValueAccessor interface required\n     * to integrate with Angular's core forms API.\n     *\n     * @param fn Callback to be triggered when the component has been touched.\n     */\n    /**\n     * Saves a callback function to be invoked when the select is blurred\n     * by the user. Part of the ControlValueAccessor interface required\n     * to integrate with Angular's core forms API.\n     *\n     * @param {?} fn Callback to be triggered when the component has been touched.\n     * @return {?}\n     */\n    MatSelect.prototype.registerOnTouched = /**\n     * Saves a callback function to be invoked when the select is blurred\n     * by the user. Part of the ControlValueAccessor interface required\n     * to integrate with Angular's core forms API.\n     *\n     * @param {?} fn Callback to be triggered when the component has been touched.\n     * @return {?}\n     */\n    function (fn) {\n        this._onTouched = fn;\n    };\n    /**\n     * Disables the select. Part of the ControlValueAccessor interface required\n     * to integrate with Angular's core forms API.\n     *\n     * @param isDisabled Sets whether the component is disabled.\n     */\n    /**\n     * Disables the select. Part of the ControlValueAccessor interface required\n     * to integrate with Angular's core forms API.\n     *\n     * @param {?} isDisabled Sets whether the component is disabled.\n     * @return {?}\n     */\n    MatSelect.prototype.setDisabledState = /**\n     * Disables the select. Part of the ControlValueAccessor interface required\n     * to integrate with Angular's core forms API.\n     *\n     * @param {?} isDisabled Sets whether the component is disabled.\n     * @return {?}\n     */\n    function (isDisabled) {\n        this.disabled = isDisabled;\n        this._changeDetectorRef.markForCheck();\n        this.stateChanges.next();\n    };\n    Object.defineProperty(MatSelect.prototype, \"panelOpen\", {\n        /** Whether or not the overlay panel is open. */\n        get: /**\n         * Whether or not the overlay panel is open.\n         * @return {?}\n         */\n        function () {\n            return this._panelOpen;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatSelect.prototype, \"selected\", {\n        /** The currently selected option. */\n        get: /**\n         * The currently selected option.\n         * @return {?}\n         */\n        function () {\n            return this.multiple ? this._selectionModel.selected : this._selectionModel.selected[0];\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatSelect.prototype, \"triggerValue\", {\n        /** The value displayed in the trigger. */\n        get: /**\n         * The value displayed in the trigger.\n         * @return {?}\n         */\n        function () {\n            if (this.empty) {\n                return '';\n            }\n            if (this._multiple) {\n                var /** @type {?} */ selectedOptions = this._selectionModel.selected.map(function (option) { return option.viewValue; });\n                if (this._isRtl()) {\n                    selectedOptions.reverse();\n                }\n                // TODO(crisbeto): delimiter should be configurable for proper localization.\n                return selectedOptions.join(', ');\n            }\n            return this._selectionModel.selected[0].viewValue;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /** Whether the element is in RTL mode. */\n    /**\n     * Whether the element is in RTL mode.\n     * @return {?}\n     */\n    MatSelect.prototype._isRtl = /**\n     * Whether the element is in RTL mode.\n     * @return {?}\n     */\n    function () {\n        return this._dir ? this._dir.value === 'rtl' : false;\n    };\n    /** Handles all keydown events on the select. */\n    /**\n     * Handles all keydown events on the select.\n     * @param {?} event\n     * @return {?}\n     */\n    MatSelect.prototype._handleKeydown = /**\n     * Handles all keydown events on the select.\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        if (!this.disabled) {\n            this.panelOpen ? this._handleOpenKeydown(event) : this._handleClosedKeydown(event);\n        }\n    };\n    /**\n     * Handles keyboard events while the select is closed.\n     * @param {?} event\n     * @return {?}\n     */\n    MatSelect.prototype._handleClosedKeydown = /**\n     * Handles keyboard events while the select is closed.\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        var /** @type {?} */ keyCode = event.keyCode;\n        var /** @type {?} */ isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW ||\n            keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;\n        var /** @type {?} */ isOpenKey = keyCode === ENTER || keyCode === SPACE;\n        // Open the select on ALT + arrow key to match the native <select>\n        if (isOpenKey || ((this.multiple || event.altKey) && isArrowKey)) {\n            event.preventDefault(); // prevents the page from scrolling down when pressing space\n            this.open();\n        }\n        else if (!this.multiple) {\n            this._keyManager.onKeydown(event);\n        }\n    };\n    /**\n     * Handles keyboard events when the selected is open.\n     * @param {?} event\n     * @return {?}\n     */\n    MatSelect.prototype._handleOpenKeydown = /**\n     * Handles keyboard events when the selected is open.\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        var /** @type {?} */ keyCode = event.keyCode;\n        var /** @type {?} */ isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\n        var /** @type {?} */ manager = this._keyManager;\n        if (keyCode === HOME || keyCode === END) {\n            event.preventDefault();\n            keyCode === HOME ? manager.setFirstItemActive() : manager.setLastItemActive();\n        }\n        else if (isArrowKey && event.altKey) {\n            // Close the select on ALT + arrow key to match the native <select>\n            event.preventDefault();\n            this.close();\n        }\n        else if ((keyCode === ENTER || keyCode === SPACE) && manager.activeItem) {\n            event.preventDefault();\n            manager.activeItem._selectViaInteraction();\n        }\n        else if (this._multiple && keyCode === A && event.ctrlKey) {\n            event.preventDefault();\n            var /** @type {?} */ hasDeselectedOptions_1 = this.options.some(function (opt) { return !opt.disabled && !opt.selected; });\n            this.options.forEach(function (option) {\n                if (!option.disabled) {\n                    hasDeselectedOptions_1 ? option.select() : option.deselect();\n                }\n            });\n        }\n        else {\n            var /** @type {?} */ previouslyFocusedIndex = manager.activeItemIndex;\n            manager.onKeydown(event);\n            if (this._multiple && isArrowKey && event.shiftKey && manager.activeItem &&\n                manager.activeItemIndex !== previouslyFocusedIndex) {\n                manager.activeItem._selectViaInteraction();\n            }\n        }\n    };\n    /**\n     * When the panel content is done fading in, the _panelDoneAnimating property is\n     * set so the proper class can be added to the panel.\n     */\n    /**\n     * When the panel content is done fading in, the _panelDoneAnimating property is\n     * set so the proper class can be added to the panel.\n     * @return {?}\n     */\n    MatSelect.prototype._onFadeInDone = /**\n     * When the panel content is done fading in, the _panelDoneAnimating property is\n     * set so the proper class can be added to the panel.\n     * @return {?}\n     */\n    function () {\n        this._panelDoneAnimating = this.panelOpen;\n        this._changeDetectorRef.markForCheck();\n    };\n    /**\n     * @return {?}\n     */\n    MatSelect.prototype._onFocus = /**\n     * @return {?}\n     */\n    function () {\n        if (!this.disabled) {\n            this._focused = true;\n            this.stateChanges.next();\n        }\n    };\n    /**\n     * Calls the touched callback only if the panel is closed. Otherwise, the trigger will\n     * \"blur\" to the panel when it opens, causing a false positive.\n     */\n    /**\n     * Calls the touched callback only if the panel is closed. Otherwise, the trigger will\n     * \"blur\" to the panel when it opens, causing a false positive.\n     * @return {?}\n     */\n    MatSelect.prototype._onBlur = /**\n     * Calls the touched callback only if the panel is closed. Otherwise, the trigger will\n     * \"blur\" to the panel when it opens, causing a false positive.\n     * @return {?}\n     */\n    function () {\n        this._focused = false;\n        if (!this.disabled && !this.panelOpen) {\n            this._onTouched();\n            this._changeDetectorRef.markForCheck();\n            this.stateChanges.next();\n        }\n    };\n    /**\n     * Callback that is invoked when the overlay panel has been attached.\n     */\n    /**\n     * Callback that is invoked when the overlay panel has been attached.\n     * @return {?}\n     */\n    MatSelect.prototype._onAttached = /**\n     * Callback that is invoked when the overlay panel has been attached.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        this.overlayDir.positionChange.pipe(take(1)).subscribe(function () {\n            _this._changeDetectorRef.detectChanges();\n            _this._calculateOverlayOffsetX();\n            _this.panel.nativeElement.scrollTop = _this._scrollTop;\n        });\n    };\n    /** Returns the theme to be used on the panel. */\n    /**\n     * Returns the theme to be used on the panel.\n     * @return {?}\n     */\n    MatSelect.prototype._getPanelTheme = /**\n     * Returns the theme to be used on the panel.\n     * @return {?}\n     */\n    function () {\n        return this._parentFormField ? \"mat-\" + this._parentFormField.color : '';\n    };\n    Object.defineProperty(MatSelect.prototype, \"empty\", {\n        /** Whether the select has a value. */\n        get: /**\n         * Whether the select has a value.\n         * @return {?}\n         */\n        function () {\n            return !this._selectionModel || this._selectionModel.isEmpty();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @return {?}\n     */\n    MatSelect.prototype._initializeSelection = /**\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        // Defer setting the value in order to avoid the \"Expression\n        // has changed after it was checked\" errors from Angular.\n        Promise.resolve().then(function () {\n            _this._setSelectionByValue(_this.ngControl ? _this.ngControl.value : _this._value);\n        });\n    };\n    /**\n     * Sets the selected option based on a value. If no option can be\n     * found with the designated value, the select trigger is cleared.\n     * @param {?} value\n     * @return {?}\n     */\n    MatSelect.prototype._setSelectionByValue = /**\n     * Sets the selected option based on a value. If no option can be\n     * found with the designated value, the select trigger is cleared.\n     * @param {?} value\n     * @return {?}\n     */\n    function (value) {\n        var _this = this;\n        if (this.multiple && value) {\n            if (!Array.isArray(value)) {\n                throw getMatSelectNonArrayValueError();\n            }\n            this._selectionModel.clear();\n            value.forEach(function (currentValue) { return _this._selectValue(currentValue); });\n            this._sortValues();\n        }\n        else {\n            this._selectionModel.clear();\n            var /** @type {?} */ correspondingOption = this._selectValue(value);\n            // Shift focus to the active item. Note that we shouldn't do this in multiple\n            // mode, because we don't know what option the user interacted with last.\n            if (correspondingOption) {\n                this._keyManager.setActiveItem(correspondingOption);\n            }\n        }\n        this._changeDetectorRef.markForCheck();\n    };\n    /**\n     * Finds and selects and option based on its value.\n     * @param {?} value\n     * @return {?} Option that has the corresponding value.\n     */\n    MatSelect.prototype._selectValue = /**\n     * Finds and selects and option based on its value.\n     * @param {?} value\n     * @return {?} Option that has the corresponding value.\n     */\n    function (value) {\n        var _this = this;\n        var /** @type {?} */ correspondingOption = this.options.find(function (option) {\n            try {\n                // Treat null as a special reset value.\n                return option.value != null && _this._compareWith(option.value, value);\n            }\n            catch (/** @type {?} */ error) {\n                if (isDevMode()) {\n                    // Notify developers of errors in their comparator.\n                    console.warn(error);\n                }\n                return false;\n            }\n        });\n        if (correspondingOption) {\n            this._selectionModel.select(correspondingOption);\n        }\n        return correspondingOption;\n    };\n    /**\n     * Sets up a key manager to listen to keyboard events on the overlay panel.\n     * @return {?}\n     */\n    MatSelect.prototype._initKeyManager = /**\n     * Sets up a key manager to listen to keyboard events on the overlay panel.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        this._keyManager = new ActiveDescendantKeyManager(this.options)\n            .withTypeAhead()\n            .withVerticalOrientation()\n            .withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr');\n        this._keyManager.tabOut.pipe(takeUntil(this._destroy)).subscribe(function () {\n            // Restore focus to the trigger before closing. Ensures that the focus\n            // position won't be lost if the user got focus into the overlay.\n            // Restore focus to the trigger before closing. Ensures that the focus\n            // position won't be lost if the user got focus into the overlay.\n            _this.focus();\n            _this.close();\n        });\n        this._keyManager.change.pipe(takeUntil(this._destroy)).subscribe(function () {\n            if (_this._panelOpen && _this.panel) {\n                _this._scrollActiveOptionIntoView();\n            }\n            else if (!_this._panelOpen && !_this.multiple && _this._keyManager.activeItem) {\n                _this._keyManager.activeItem._selectViaInteraction();\n            }\n        });\n    };\n    /**\n     * Drops current option subscriptions and IDs and resets from scratch.\n     * @return {?}\n     */\n    MatSelect.prototype._resetOptions = /**\n     * Drops current option subscriptions and IDs and resets from scratch.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        var /** @type {?} */ changedOrDestroyed = merge(this.options.changes, this._destroy);\n        this.optionSelectionChanges.pipe(takeUntil(changedOrDestroyed)).subscribe(function (event) {\n            _this._onSelect(event.source, event.isUserInput);\n            if (event.isUserInput && !_this.multiple && _this._panelOpen) {\n                _this.close();\n                _this.focus();\n            }\n        });\n        // Listen to changes in the internal state of the options and react accordingly.\n        // Handles cases like the labels of the selected options changing.\n        merge.apply(void 0, this.options.map(function (option) { return option._stateChanges; })).pipe(takeUntil(changedOrDestroyed))\n            .subscribe(function () {\n            _this._changeDetectorRef.markForCheck();\n            _this.stateChanges.next();\n        });\n        this._setOptionIds();\n    };\n    /**\n     * Invoked when an option is clicked.\n     * @param {?} option\n     * @param {?} isUserInput\n     * @return {?}\n     */\n    MatSelect.prototype._onSelect = /**\n     * Invoked when an option is clicked.\n     * @param {?} option\n     * @param {?} isUserInput\n     * @return {?}\n     */\n    function (option, isUserInput) {\n        var /** @type {?} */ wasSelected = this._selectionModel.isSelected(option);\n        if (option.value == null && !this._multiple) {\n            option.deselect();\n            this._selectionModel.clear();\n            this._propagateChanges(option.value);\n        }\n        else {\n            option.selected ? this._selectionModel.select(option) : this._selectionModel.deselect(option);\n            if (isUserInput) {\n                this._keyManager.setActiveItem(option);\n            }\n            if (this.multiple) {\n                this._sortValues();\n                if (isUserInput) {\n                    // In case the user selected the option with their mouse, we\n                    // want to restore focus back to the trigger, in order to\n                    // prevent the select keyboard controls from clashing with\n                    // the ones from `mat-option`.\n                    this.focus();\n                }\n            }\n        }\n        if (wasSelected !== this._selectionModel.isSelected(option)) {\n            this._propagateChanges();\n        }\n        this.stateChanges.next();\n    };\n    /**\n     * Sorts the selected values in the selected based on their order in the panel.\n     * @return {?}\n     */\n    MatSelect.prototype._sortValues = /**\n     * Sorts the selected values in the selected based on their order in the panel.\n     * @return {?}\n     */\n    function () {\n        if (this.multiple) {\n            var /** @type {?} */ options_1 = this.options.toArray();\n            this._selectionModel.sort(function (a, b) { return options_1.indexOf(a) - options_1.indexOf(b); });\n            this.stateChanges.next();\n        }\n    };\n    /**\n     * Emits change event to set the model value.\n     * @param {?=} fallbackValue\n     * @return {?}\n     */\n    MatSelect.prototype._propagateChanges = /**\n     * Emits change event to set the model value.\n     * @param {?=} fallbackValue\n     * @return {?}\n     */\n    function (fallbackValue) {\n        var /** @type {?} */ valueToEmit = null;\n        if (this.multiple) {\n            valueToEmit = (/** @type {?} */ (this.selected)).map(function (option) { return option.value; });\n        }\n        else {\n            valueToEmit = this.selected ? (/** @type {?} */ (this.selected)).value : fallbackValue;\n        }\n        this._value = valueToEmit;\n        this.valueChange.emit(valueToEmit);\n        this._onChange(valueToEmit);\n        this.selectionChange.emit(new MatSelectChange(this, valueToEmit));\n        this._changeDetectorRef.markForCheck();\n    };\n    /**\n     * Records option IDs to pass to the aria-owns property.\n     * @return {?}\n     */\n    MatSelect.prototype._setOptionIds = /**\n     * Records option IDs to pass to the aria-owns property.\n     * @return {?}\n     */\n    function () {\n        this._optionIds = this.options.map(function (option) { return option.id; }).join(' ');\n    };\n    /**\n     * Highlights the selected item. If no option is selected, it will highlight\n     * the first item instead.\n     * @return {?}\n     */\n    MatSelect.prototype._highlightCorrectOption = /**\n     * Highlights the selected item. If no option is selected, it will highlight\n     * the first item instead.\n     * @return {?}\n     */\n    function () {\n        if (this._keyManager) {\n            if (this.empty) {\n                this._keyManager.setFirstItemActive();\n            }\n            else {\n                this._keyManager.setActiveItem(this._selectionModel.selected[0]);\n            }\n        }\n    };\n    /**\n     * Scrolls the active option into view.\n     * @return {?}\n     */\n    MatSelect.prototype._scrollActiveOptionIntoView = /**\n     * Scrolls the active option into view.\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ activeOptionIndex = this._keyManager.activeItemIndex || 0;\n        var /** @type {?} */ labelCount = _countGroupLabelsBeforeOption(activeOptionIndex, this.options, this.optionGroups);\n        this.panel.nativeElement.scrollTop = _getOptionScrollPosition(activeOptionIndex + labelCount, this._getItemHeight(), this.panel.nativeElement.scrollTop, SELECT_PANEL_MAX_HEIGHT);\n    };\n    /** Focuses the select element. */\n    /**\n     * Focuses the select element.\n     * @return {?}\n     */\n    MatSelect.prototype.focus = /**\n     * Focuses the select element.\n     * @return {?}\n     */\n    function () {\n        this._elementRef.nativeElement.focus();\n    };\n    /**\n     * Gets the index of the provided option in the option list.\n     * @param {?} option\n     * @return {?}\n     */\n    MatSelect.prototype._getOptionIndex = /**\n     * Gets the index of the provided option in the option list.\n     * @param {?} option\n     * @return {?}\n     */\n    function (option) {\n        return this.options.reduce(function (result, current, index) {\n            return result === undefined ? (option === current ? index : undefined) : result;\n        }, undefined);\n    };\n    /**\n     * Calculates the scroll position and x- and y-offsets of the overlay panel.\n     * @return {?}\n     */\n    MatSelect.prototype._calculateOverlayPosition = /**\n     * Calculates the scroll position and x- and y-offsets of the overlay panel.\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ itemHeight = this._getItemHeight();\n        var /** @type {?} */ items = this._getItemCount();\n        var /** @type {?} */ panelHeight = Math.min(items * itemHeight, SELECT_PANEL_MAX_HEIGHT);\n        var /** @type {?} */ scrollContainerHeight = items * itemHeight;\n        // The farthest the panel can be scrolled before it hits the bottom\n        var /** @type {?} */ maxScroll = scrollContainerHeight - panelHeight;\n        // If no value is selected we open the popup to the first item.\n        var /** @type {?} */ selectedOptionOffset = this.empty ? 0 : /** @type {?} */ ((this._getOptionIndex(this._selectionModel.selected[0])));\n        selectedOptionOffset += _countGroupLabelsBeforeOption(selectedOptionOffset, this.options, this.optionGroups);\n        // We must maintain a scroll buffer so the selected option will be scrolled to the\n        // center of the overlay panel rather than the top.\n        var /** @type {?} */ scrollBuffer = panelHeight / 2;\n        this._scrollTop = this._calculateOverlayScroll(selectedOptionOffset, scrollBuffer, maxScroll);\n        this._offsetY = this._calculateOverlayOffsetY(selectedOptionOffset, scrollBuffer, maxScroll);\n        this._checkOverlayWithinViewport(maxScroll);\n    };\n    /**\n     * Calculates the scroll position of the select's overlay panel.\n     *\n     * Attempts to center the selected option in the panel. If the option is\n     * too high or too low in the panel to be scrolled to the center, it clamps the\n     * scroll position to the min or max scroll positions respectively.\n     */\n    /**\n     * Calculates the scroll position of the select's overlay panel.\n     *\n     * Attempts to center the selected option in the panel. If the option is\n     * too high or too low in the panel to be scrolled to the center, it clamps the\n     * scroll position to the min or max scroll positions respectively.\n     * @param {?} selectedIndex\n     * @param {?} scrollBuffer\n     * @param {?} maxScroll\n     * @return {?}\n     */\n    MatSelect.prototype._calculateOverlayScroll = /**\n     * Calculates the scroll position of the select's overlay panel.\n     *\n     * Attempts to center the selected option in the panel. If the option is\n     * too high or too low in the panel to be scrolled to the center, it clamps the\n     * scroll position to the min or max scroll positions respectively.\n     * @param {?} selectedIndex\n     * @param {?} scrollBuffer\n     * @param {?} maxScroll\n     * @return {?}\n     */\n    function (selectedIndex, scrollBuffer, maxScroll) {\n        var /** @type {?} */ itemHeight = this._getItemHeight();\n        var /** @type {?} */ optionOffsetFromScrollTop = itemHeight * selectedIndex;\n        var /** @type {?} */ halfOptionHeight = itemHeight / 2;\n        // Starts at the optionOffsetFromScrollTop, which scrolls the option to the top of the\n        // scroll container, then subtracts the scroll buffer to scroll the option down to\n        // the center of the overlay panel. Half the option height must be re-added to the\n        // scrollTop so the option is centered based on its middle, not its top edge.\n        var /** @type {?} */ optimalScrollPosition = optionOffsetFromScrollTop - scrollBuffer + halfOptionHeight;\n        return Math.min(Math.max(0, optimalScrollPosition), maxScroll);\n    };\n    /** Returns the aria-label of the select component. */\n    /**\n     * Returns the aria-label of the select component.\n     * @return {?}\n     */\n    MatSelect.prototype._getAriaLabel = /**\n     * Returns the aria-label of the select component.\n     * @return {?}\n     */\n    function () {\n        // If an ariaLabelledby value has been set by the consumer, the select should not overwrite the\n        // `aria-labelledby` value by setting the ariaLabel to the placeholder.\n        return this.ariaLabelledby ? null : this.ariaLabel || this.placeholder;\n    };\n    /** Returns the aria-labelledby of the select component. */\n    /**\n     * Returns the aria-labelledby of the select component.\n     * @return {?}\n     */\n    MatSelect.prototype._getAriaLabelledby = /**\n     * Returns the aria-labelledby of the select component.\n     * @return {?}\n     */\n    function () {\n        if (this.ariaLabelledby) {\n            return this.ariaLabelledby;\n        }\n        // Note: we use `_getAriaLabel` here, because we want to check whether there's a\n        // computed label. `this.ariaLabel` is only the user-specified label.\n        if (!this._parentFormField || !this._parentFormField._hasFloatingLabel() ||\n            this._getAriaLabel()) {\n            return null;\n        }\n        return this._parentFormField._labelId || null;\n    };\n    /** Determines the `aria-activedescendant` to be set on the host. */\n    /**\n     * Determines the `aria-activedescendant` to be set on the host.\n     * @return {?}\n     */\n    MatSelect.prototype._getAriaActiveDescendant = /**\n     * Determines the `aria-activedescendant` to be set on the host.\n     * @return {?}\n     */\n    function () {\n        if (this.panelOpen && this._keyManager && this._keyManager.activeItem) {\n            return this._keyManager.activeItem.id;\n        }\n        return null;\n    };\n    /**\n     * Sets the x-offset of the overlay panel in relation to the trigger's top start corner.\n     * This must be adjusted to align the selected option text over the trigger text when\n     * the panel opens. Will change based on LTR or RTL text direction. Note that the offset\n     * can't be calculated until the panel has been attached, because we need to know the\n     * content width in order to constrain the panel within the viewport.\n     * @return {?}\n     */\n    MatSelect.prototype._calculateOverlayOffsetX = /**\n     * Sets the x-offset of the overlay panel in relation to the trigger's top start corner.\n     * This must be adjusted to align the selected option text over the trigger text when\n     * the panel opens. Will change based on LTR or RTL text direction. Note that the offset\n     * can't be calculated until the panel has been attached, because we need to know the\n     * content width in order to constrain the panel within the viewport.\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ overlayRect = this.overlayDir.overlayRef.overlayElement.getBoundingClientRect();\n        var /** @type {?} */ viewportSize = this._viewportRuler.getViewportSize();\n        var /** @type {?} */ isRtl = this._isRtl();\n        var /** @type {?} */ paddingWidth = this.multiple ? SELECT_MULTIPLE_PANEL_PADDING_X + SELECT_PANEL_PADDING_X :\n            SELECT_PANEL_PADDING_X * 2;\n        var /** @type {?} */ offsetX;\n        // Adjust the offset, depending on the option padding.\n        if (this.multiple) {\n            offsetX = SELECT_MULTIPLE_PANEL_PADDING_X;\n        }\n        else {\n            var /** @type {?} */ selected = this._selectionModel.selected[0] || this.options.first;\n            offsetX = selected && selected.group ? SELECT_PANEL_INDENT_PADDING_X : SELECT_PANEL_PADDING_X;\n        }\n        // Invert the offset in LTR.\n        if (!isRtl) {\n            offsetX *= -1;\n        }\n        // Determine how much the select overflows on each side.\n        var /** @type {?} */ leftOverflow = 0 - (overlayRect.left + offsetX - (isRtl ? paddingWidth : 0));\n        var /** @type {?} */ rightOverflow = overlayRect.right + offsetX - viewportSize.width\n            + (isRtl ? 0 : paddingWidth);\n        // If the element overflows on either side, reduce the offset to allow it to fit.\n        if (leftOverflow > 0) {\n            offsetX += leftOverflow + SELECT_PANEL_VIEWPORT_PADDING;\n        }\n        else if (rightOverflow > 0) {\n            offsetX -= rightOverflow + SELECT_PANEL_VIEWPORT_PADDING;\n        }\n        // Set the offset directly in order to avoid having to go through change detection and\n        // potentially triggering \"changed after it was checked\" errors. Round the value to avoid\n        // blurry content in some browsers.\n        this.overlayDir.offsetX = Math.round(offsetX);\n        this.overlayDir.overlayRef.updatePosition();\n    };\n    /**\n     * Calculates the y-offset of the select's overlay panel in relation to the\n     * top start corner of the trigger. It has to be adjusted in order for the\n     * selected option to be aligned over the trigger when the panel opens.\n     * @param {?} selectedIndex\n     * @param {?} scrollBuffer\n     * @param {?} maxScroll\n     * @return {?}\n     */\n    MatSelect.prototype._calculateOverlayOffsetY = /**\n     * Calculates the y-offset of the select's overlay panel in relation to the\n     * top start corner of the trigger. It has to be adjusted in order for the\n     * selected option to be aligned over the trigger when the panel opens.\n     * @param {?} selectedIndex\n     * @param {?} scrollBuffer\n     * @param {?} maxScroll\n     * @return {?}\n     */\n    function (selectedIndex, scrollBuffer, maxScroll) {\n        var /** @type {?} */ itemHeight = this._getItemHeight();\n        var /** @type {?} */ optionHeightAdjustment = (itemHeight - this._triggerRect.height) / 2;\n        var /** @type {?} */ maxOptionsDisplayed = Math.floor(SELECT_PANEL_MAX_HEIGHT / itemHeight);\n        var /** @type {?} */ optionOffsetFromPanelTop;\n        // Disable offset if requested by user by returning 0 as value to offset\n        if (this._disableOptionCentering) {\n            return 0;\n        }\n        if (this._scrollTop === 0) {\n            optionOffsetFromPanelTop = selectedIndex * itemHeight;\n        }\n        else if (this._scrollTop === maxScroll) {\n            var /** @type {?} */ firstDisplayedIndex = this._getItemCount() - maxOptionsDisplayed;\n            var /** @type {?} */ selectedDisplayIndex = selectedIndex - firstDisplayedIndex;\n            // The first item is partially out of the viewport. Therefore we need to calculate what\n            // portion of it is shown in the viewport and account for it in our offset.\n            var /** @type {?} */ partialItemHeight = itemHeight - (this._getItemCount() * itemHeight - SELECT_PANEL_MAX_HEIGHT) % itemHeight;\n            // Because the panel height is longer than the height of the options alone,\n            // there is always extra padding at the top or bottom of the panel. When\n            // scrolled to the very bottom, this padding is at the top of the panel and\n            // must be added to the offset.\n            optionOffsetFromPanelTop = selectedDisplayIndex * itemHeight + partialItemHeight;\n        }\n        else {\n            // If the option was scrolled to the middle of the panel using a scroll buffer,\n            // its offset will be the scroll buffer minus the half height that was added to\n            // center it.\n            optionOffsetFromPanelTop = scrollBuffer - itemHeight / 2;\n        }\n        // The final offset is the option's offset from the top, adjusted for the height difference,\n        // multiplied by -1 to ensure that the overlay moves in the correct direction up the page.\n        // The value is rounded to prevent some browsers from blurring the content.\n        return Math.round(optionOffsetFromPanelTop * -1 - optionHeightAdjustment);\n    };\n    /**\n     * Checks that the attempted overlay position will fit within the viewport.\n     * If it will not fit, tries to adjust the scroll position and the associated\n     * y-offset so the panel can open fully on-screen. If it still won't fit,\n     * sets the offset back to 0 to allow the fallback position to take over.\n     * @param {?} maxScroll\n     * @return {?}\n     */\n    MatSelect.prototype._checkOverlayWithinViewport = /**\n     * Checks that the attempted overlay position will fit within the viewport.\n     * If it will not fit, tries to adjust the scroll position and the associated\n     * y-offset so the panel can open fully on-screen. If it still won't fit,\n     * sets the offset back to 0 to allow the fallback position to take over.\n     * @param {?} maxScroll\n     * @return {?}\n     */\n    function (maxScroll) {\n        var /** @type {?} */ itemHeight = this._getItemHeight();\n        var /** @type {?} */ viewportSize = this._viewportRuler.getViewportSize();\n        var /** @type {?} */ topSpaceAvailable = this._triggerRect.top - SELECT_PANEL_VIEWPORT_PADDING;\n        var /** @type {?} */ bottomSpaceAvailable = viewportSize.height - this._triggerRect.bottom - SELECT_PANEL_VIEWPORT_PADDING;\n        var /** @type {?} */ panelHeightTop = Math.abs(this._offsetY);\n        var /** @type {?} */ totalPanelHeight = Math.min(this._getItemCount() * itemHeight, SELECT_PANEL_MAX_HEIGHT);\n        var /** @type {?} */ panelHeightBottom = totalPanelHeight - panelHeightTop - this._triggerRect.height;\n        if (panelHeightBottom > bottomSpaceAvailable) {\n            this._adjustPanelUp(panelHeightBottom, bottomSpaceAvailable);\n        }\n        else if (panelHeightTop > topSpaceAvailable) {\n            this._adjustPanelDown(panelHeightTop, topSpaceAvailable, maxScroll);\n        }\n        else {\n            this._transformOrigin = this._getOriginBasedOnOption();\n        }\n    };\n    /**\n     * Adjusts the overlay panel up to fit in the viewport.\n     * @param {?} panelHeightBottom\n     * @param {?} bottomSpaceAvailable\n     * @return {?}\n     */\n    MatSelect.prototype._adjustPanelUp = /**\n     * Adjusts the overlay panel up to fit in the viewport.\n     * @param {?} panelHeightBottom\n     * @param {?} bottomSpaceAvailable\n     * @return {?}\n     */\n    function (panelHeightBottom, bottomSpaceAvailable) {\n        // Browsers ignore fractional scroll offsets, so we need to round.\n        var /** @type {?} */ distanceBelowViewport = Math.round(panelHeightBottom - bottomSpaceAvailable);\n        // Scrolls the panel up by the distance it was extending past the boundary, then\n        // adjusts the offset by that amount to move the panel up into the viewport.\n        this._scrollTop -= distanceBelowViewport;\n        this._offsetY -= distanceBelowViewport;\n        this._transformOrigin = this._getOriginBasedOnOption();\n        // If the panel is scrolled to the very top, it won't be able to fit the panel\n        // by scrolling, so set the offset to 0 to allow the fallback position to take\n        // effect.\n        if (this._scrollTop <= 0) {\n            this._scrollTop = 0;\n            this._offsetY = 0;\n            this._transformOrigin = \"50% bottom 0px\";\n        }\n    };\n    /**\n     * Adjusts the overlay panel down to fit in the viewport.\n     * @param {?} panelHeightTop\n     * @param {?} topSpaceAvailable\n     * @param {?} maxScroll\n     * @return {?}\n     */\n    MatSelect.prototype._adjustPanelDown = /**\n     * Adjusts the overlay panel down to fit in the viewport.\n     * @param {?} panelHeightTop\n     * @param {?} topSpaceAvailable\n     * @param {?} maxScroll\n     * @return {?}\n     */\n    function (panelHeightTop, topSpaceAvailable, maxScroll) {\n        // Browsers ignore fractional scroll offsets, so we need to round.\n        var /** @type {?} */ distanceAboveViewport = Math.round(panelHeightTop - topSpaceAvailable);\n        // Scrolls the panel down by the distance it was extending past the boundary, then\n        // adjusts the offset by that amount to move the panel down into the viewport.\n        this._scrollTop += distanceAboveViewport;\n        this._offsetY += distanceAboveViewport;\n        this._transformOrigin = this._getOriginBasedOnOption();\n        // If the panel is scrolled to the very bottom, it won't be able to fit the\n        // panel by scrolling, so set the offset to 0 to allow the fallback position\n        // to take effect.\n        if (this._scrollTop >= maxScroll) {\n            this._scrollTop = maxScroll;\n            this._offsetY = 0;\n            this._transformOrigin = \"50% top 0px\";\n            return;\n        }\n    };\n    /**\n     * Sets the transform origin point based on the selected option.\n     * @return {?}\n     */\n    MatSelect.prototype._getOriginBasedOnOption = /**\n     * Sets the transform origin point based on the selected option.\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ itemHeight = this._getItemHeight();\n        var /** @type {?} */ optionHeightAdjustment = (itemHeight - this._triggerRect.height) / 2;\n        var /** @type {?} */ originY = Math.abs(this._offsetY) - optionHeightAdjustment + itemHeight / 2;\n        return \"50% \" + originY + \"px 0px\";\n    };\n    /**\n     * Calculates the amount of items in the select. This includes options and group labels.\n     * @return {?}\n     */\n    MatSelect.prototype._getItemCount = /**\n     * Calculates the amount of items in the select. This includes options and group labels.\n     * @return {?}\n     */\n    function () {\n        return this.options.length + this.optionGroups.length;\n    };\n    /**\n     * Calculates the height of the select's options.\n     * @return {?}\n     */\n    MatSelect.prototype._getItemHeight = /**\n     * Calculates the height of the select's options.\n     * @return {?}\n     */\n    function () {\n        return this._triggerFontSize * SELECT_ITEM_HEIGHT_EM;\n    };\n    /**\n     * Implemented as part of MatFormFieldControl.\n     * @docs-private\n     */\n    /**\n     * Implemented as part of MatFormFieldControl.\n     * \\@docs-private\n     * @param {?} ids\n     * @return {?}\n     */\n    MatSelect.prototype.setDescribedByIds = /**\n     * Implemented as part of MatFormFieldControl.\n     * \\@docs-private\n     * @param {?} ids\n     * @return {?}\n     */\n    function (ids) {\n        this._ariaDescribedby = ids.join(' ');\n    };\n    /**\n     * Implemented as part of MatFormFieldControl.\n     * @docs-private\n     */\n    /**\n     * Implemented as part of MatFormFieldControl.\n     * \\@docs-private\n     * @return {?}\n     */\n    MatSelect.prototype.onContainerClick = /**\n     * Implemented as part of MatFormFieldControl.\n     * \\@docs-private\n     * @return {?}\n     */\n    function () {\n        this.focus();\n        this.open();\n    };\n    Object.defineProperty(MatSelect.prototype, \"shouldLabelFloat\", {\n        /**\n         * Implemented as part of MatFormFieldControl.\n         * @docs-private\n         */\n        get: /**\n         * Implemented as part of MatFormFieldControl.\n         * \\@docs-private\n         * @return {?}\n         */\n        function () {\n            return this._panelOpen || !this.empty;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    MatSelect.decorators = [\n        { type: Component, args: [{selector: 'mat-select',\n                    exportAs: 'matSelect',\n                    template: \"<div cdk-overlay-origin class=\\\"mat-select-trigger\\\" aria-hidden=\\\"true\\\" (click)=\\\"toggle()\\\" #origin=\\\"cdkOverlayOrigin\\\" #trigger><div class=\\\"mat-select-value\\\" [ngSwitch]=\\\"empty\\\"><span class=\\\"mat-select-placeholder\\\" *ngSwitchCase=\\\"true\\\">{{placeholder || '\\u00A0'}}</span> <span class=\\\"mat-select-value-text\\\" *ngSwitchCase=\\\"false\\\" [ngSwitch]=\\\"!!customTrigger\\\"><span *ngSwitchDefault>{{triggerValue || '\\u00A0'}}</span><ng-content select=\\\"mat-select-trigger\\\" *ngSwitchCase=\\\"true\\\"></ng-content></span></div><div class=\\\"mat-select-arrow-wrapper\\\"><div class=\\\"mat-select-arrow\\\"></div></div></div><ng-template cdk-connected-overlay cdkConnectedOverlayLockPosition cdkConnectedOverlayHasBackdrop cdkConnectedOverlayBackdropClass=\\\"cdk-overlay-transparent-backdrop\\\" [cdkConnectedOverlayScrollStrategy]=\\\"_scrollStrategy\\\" [cdkConnectedOverlayOrigin]=\\\"origin\\\" [cdkConnectedOverlayOpen]=\\\"panelOpen\\\" [cdkConnectedOverlayPositions]=\\\"_positions\\\" [cdkConnectedOverlayMinWidth]=\\\"_triggerRect?.width\\\" [cdkConnectedOverlayOffsetY]=\\\"_offsetY\\\" (backdropClick)=\\\"close()\\\" (attach)=\\\"_onAttached()\\\" (detach)=\\\"close()\\\"><div #panel class=\\\"mat-select-panel {{ _getPanelTheme() }}\\\" [ngClass]=\\\"panelClass\\\" [@transformPanel]=\\\"multiple ? 'showing-multiple' : 'showing'\\\" (@transformPanel.done)=\\\"_panelDoneAnimatingStream.next($event.toState)\\\" [style.transformOrigin]=\\\"_transformOrigin\\\" [class.mat-select-panel-done-animating]=\\\"_panelDoneAnimating\\\" [style.font-size.px]=\\\"_triggerFontSize\\\" (keydown)=\\\"_handleKeydown($event)\\\"><div class=\\\"mat-select-content\\\" [@fadeInContent]=\\\"'showing'\\\" (@fadeInContent.done)=\\\"_onFadeInDone()\\\"><ng-content></ng-content></div></div></ng-template>\",\n                    styles: [\".mat-select{display:inline-block;width:100%;outline:0}.mat-select-trigger{display:inline-table;cursor:pointer;position:relative;box-sizing:border-box}.mat-select-disabled .mat-select-trigger{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.mat-select-value{display:table-cell;max-width:0;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-select-arrow-wrapper{display:table-cell;vertical-align:middle}.mat-form-field-appearance-fill .mat-select-arrow-wrapper,.mat-form-field-appearance-standard .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-outline .mat-select-arrow-wrapper{transform:translateY(-25%)}.mat-select-arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px}.mat-select-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;padding-top:0;padding-bottom:0;max-height:256px;min-width:100%}.mat-select-panel:not([class*=mat-elevation-z]){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){.mat-select-panel{outline:solid 1px}}.mat-select-panel .mat-optgroup-label,.mat-select-panel .mat-option{font-size:inherit;line-height:3em;height:3em}.mat-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-form-field-flex{cursor:pointer}.mat-form-field-type-mat-select .mat-form-field-label{width:calc(100% - 18px)}.mat-select-placeholder{transition:color .4s .133s cubic-bezier(.25,.8,.25,1)}._mat-animation-noopable .mat-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-select-placeholder{color:transparent;-webkit-text-fill-color:transparent;transition:none;display:block}\"],\n                    inputs: ['disabled', 'disableRipple', 'tabIndex'],\n                    encapsulation: ViewEncapsulation.None,\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    host: {\n                        'role': 'listbox',\n                        '[attr.id]': 'id',\n                        '[attr.tabindex]': 'tabIndex',\n                        '[attr.aria-label]': '_getAriaLabel()',\n                        '[attr.aria-labelledby]': '_getAriaLabelledby()',\n                        '[attr.aria-required]': 'required.toString()',\n                        '[attr.aria-disabled]': 'disabled.toString()',\n                        '[attr.aria-invalid]': 'errorState',\n                        '[attr.aria-owns]': 'panelOpen ? _optionIds : null',\n                        '[attr.aria-multiselectable]': 'multiple',\n                        '[attr.aria-describedby]': '_ariaDescribedby || null',\n                        '[attr.aria-activedescendant]': '_getAriaActiveDescendant()',\n                        '[class.mat-select-disabled]': 'disabled',\n                        '[class.mat-select-invalid]': 'errorState',\n                        '[class.mat-select-required]': 'required',\n                        'class': 'mat-select',\n                        '(keydown)': '_handleKeydown($event)',\n                        '(focus)': '_onFocus()',\n                        '(blur)': '_onBlur()',\n                    },\n                    animations: [\n                        matSelectAnimations.transformPanel,\n                        matSelectAnimations.fadeInContent\n                    ],\n                    providers: [\n                        { provide: MatFormFieldControl, useExisting: MatSelect },\n                        { provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatSelect }\n                    ],\n                },] },\n    ];\n    /** @nocollapse */\n    MatSelect.ctorParameters = function () { return [\n        { type: ViewportRuler, },\n        { type: ChangeDetectorRef, },\n        { type: NgZone, },\n        { type: ErrorStateMatcher, },\n        { type: ElementRef, },\n        { type: Directionality, decorators: [{ type: Optional },] },\n        { type: NgForm, decorators: [{ type: Optional },] },\n        { type: FormGroupDirective, decorators: [{ type: Optional },] },\n        { type: MatFormField, decorators: [{ type: Optional },] },\n        { type: NgControl, decorators: [{ type: Self }, { type: Optional },] },\n        { type: undefined, decorators: [{ type: Attribute, args: ['tabindex',] },] },\n        { type: undefined, decorators: [{ type: Inject, args: [MAT_SELECT_SCROLL_STRATEGY,] },] },\n    ]; };\n    MatSelect.propDecorators = {\n        \"trigger\": [{ type: ViewChild, args: ['trigger',] },],\n        \"panel\": [{ type: ViewChild, args: ['panel',] },],\n        \"overlayDir\": [{ type: ViewChild, args: [CdkConnectedOverlay,] },],\n        \"options\": [{ type: ContentChildren, args: [MatOption, { descendants: true },] },],\n        \"optionGroups\": [{ type: ContentChildren, args: [MatOptgroup,] },],\n        \"panelClass\": [{ type: Input },],\n        \"customTrigger\": [{ type: ContentChild, args: [MatSelectTrigger,] },],\n        \"placeholder\": [{ type: Input },],\n        \"required\": [{ type: Input },],\n        \"multiple\": [{ type: Input },],\n        \"disableOptionCentering\": [{ type: Input },],\n        \"compareWith\": [{ type: Input },],\n        \"value\": [{ type: Input },],\n        \"ariaLabel\": [{ type: Input, args: ['aria-label',] },],\n        \"ariaLabelledby\": [{ type: Input, args: ['aria-labelledby',] },],\n        \"errorStateMatcher\": [{ type: Input },],\n        \"id\": [{ type: Input },],\n        \"openedChange\": [{ type: Output },],\n        \"_openedStream\": [{ type: Output, args: ['opened',] },],\n        \"_closedStream\": [{ type: Output, args: ['closed',] },],\n        \"selectionChange\": [{ type: Output },],\n        \"valueChange\": [{ type: Output },],\n    };\n    return MatSelect;\n}(_MatSelectMixinBase));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nvar MatSelectModule = /** @class */ (function () {\n    function MatSelectModule() {\n    }\n    MatSelectModule.decorators = [\n        { type: NgModule, args: [{\n                    imports: [\n                        CommonModule,\n                        OverlayModule,\n                        MatOptionModule,\n                        MatCommonModule,\n                    ],\n                    exports: [MatFormFieldModule, MatSelect, MatSelectTrigger, MatOptionModule, MatCommonModule],\n                    declarations: [MatSelect, MatSelectTrigger],\n                    providers: [MAT_SELECT_SCROLL_STRATEGY_PROVIDER]\n                },] },\n    ];\n    return MatSelectModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\nexport { MatSelectModule, SELECT_PANEL_MAX_HEIGHT, SELECT_PANEL_PADDING_X, SELECT_PANEL_INDENT_PADDING_X, SELECT_ITEM_HEIGHT_EM, SELECT_MULTIPLE_PANEL_PADDING_X, SELECT_PANEL_VIEWPORT_PADDING, MAT_SELECT_SCROLL_STRATEGY, MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_SELECT_SCROLL_STRATEGY_PROVIDER, MatSelectChange, MatSelectBase, _MatSelectMixinBase, MatSelectTrigger, MatSelect, matSelectAnimations, transformPanel, fadeInContent };\n//# sourceMappingURL=select.es5.js.map\n","var baseMatches = require('./_baseMatches'),\n    baseMatchesProperty = require('./_baseMatchesProperty'),\n    identity = require('./identity'),\n    isArray = require('./isArray'),\n    property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\nmodule.exports = baseIteratee;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n  // No operation performed.\n}\n\nmodule.exports = noop;\n","var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","import {Inject, LOCALE_ID, Pipe, PipeTransform} from '@angular/core';\r\nimport {DatePipe} from '@angular/common';\r\nimport {Settings} from '../config/settings.service';\r\n\r\n@Pipe({\r\n    name: 'formattedDate'\r\n})\r\nexport class FormattedDatePipe implements PipeTransform {\r\n    private readonly format: string;\r\n    private angularPipe: DatePipe;\r\n\r\n    /**\r\n     * FormattedDatePipe Constructor.\r\n     */\r\n    constructor(private settings: Settings, @Inject(LOCALE_ID) private _locale: string) {\r\n        this.format = this.settings.get('dates.format', 'yyyy-MM-dd');\r\n        this.angularPipe = new DatePipe(_locale);\r\n    }\r\n\r\n    transform(value: any, format?: string, timezone?: string, locale?: string): string | null {\r\n        // iOS does not support YYYY-MM-DD\r\n        value = (value && typeof value === 'string' ) ? value.replace(/-/g, '/') : value;\r\n        return this.angularPipe.transform(value, format || this.format, timezone, locale);\r\n    }\r\n}\r\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n    cloneDataView = require('./_cloneDataView'),\n    cloneRegExp = require('./_cloneRegExp'),\n    cloneSymbol = require('./_cloneSymbol'),\n    cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return new Ctor;\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return new Ctor;\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\nmodule.exports = initCloneByTag;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = assocIndexOf;\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { __extends } from 'tslib';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ContentChild, Directive, ElementRef, Input, TemplateRef, ChangeDetectionStrategy, Component, IterableDiffers, ViewContainerRef, ViewEncapsulation, Attribute, ChangeDetectorRef, ContentChildren, EmbeddedViewRef, isDevMode, Optional, ViewChild, Inject, NgModule } from '@angular/core';\nimport { DataSource } from '@angular/cdk/collections';\nexport { DataSource } from '@angular/cdk/collections';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { Platform } from '@angular/cdk/platform';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Mixin to provide a directive with a function that checks if the sticky input has been\n * changed since the last time the function was called. Essentially adds a dirty-check to the\n * sticky value.\n * @template T\n * @param {?} base\n * @return {?}\n */\nfunction mixinHasStickyInput(base) {\n    return /** @class */ (function (_super) {\n        __extends(class_1, _super);\n        function class_1() {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            var _this = _super.apply(this, args) || this;\n            _this._sticky = false;\n            /**\n             * Whether the sticky input has changed since it was last checked.\n             */\n            _this._hasStickyChanged = false;\n            return _this;\n        }\n        Object.defineProperty(class_1.prototype, \"sticky\", {\n            /** Whether sticky positioning should be applied. */\n            get: /**\n             * Whether sticky positioning should be applied.\n             * @return {?}\n             */\n            function () { return this._sticky; },\n            set: /**\n             * @param {?} v\n             * @return {?}\n             */\n            function (v) {\n                var /** @type {?} */ prevValue = this._sticky;\n                this._sticky = coerceBooleanProperty(v);\n                this._hasStickyChanged = prevValue !== this._sticky;\n            },\n            enumerable: true,\n            configurable: true\n        });\n        /** Whether the sticky value has changed since this was last called. */\n        /**\n         * Whether the sticky value has changed since this was last called.\n         * @return {?}\n         */\n        class_1.prototype.hasStickyChanged = /**\n         * Whether the sticky value has changed since this was last called.\n         * @return {?}\n         */\n        function () {\n            var /** @type {?} */ hasStickyChanged = this._hasStickyChanged;\n            this._hasStickyChanged = false;\n            return hasStickyChanged;\n        };\n        /** Resets the dirty check for cases where the sticky state has been used without checking. */\n        /**\n         * Resets the dirty check for cases where the sticky state has been used without checking.\n         * @return {?}\n         */\n        class_1.prototype.resetStickyChanged = /**\n         * Resets the dirty check for cases where the sticky state has been used without checking.\n         * @return {?}\n         */\n        function () {\n            this._hasStickyChanged = false;\n        };\n        return class_1;\n    }(base));\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Cell definition for a CDK table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\nvar CdkCellDef = /** @class */ (function () {\n    function CdkCellDef(template) {\n        this.template = template;\n    }\n    CdkCellDef.decorators = [\n        { type: Directive, args: [{ selector: '[cdkCellDef]' },] },\n    ];\n    /** @nocollapse */\n    CdkCellDef.ctorParameters = function () { return [\n        { type: TemplateRef, },\n    ]; };\n    return CdkCellDef;\n}());\n/**\n * Header cell definition for a CDK table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\nvar CdkHeaderCellDef = /** @class */ (function () {\n    function CdkHeaderCellDef(template) {\n        this.template = template;\n    }\n    CdkHeaderCellDef.decorators = [\n        { type: Directive, args: [{ selector: '[cdkHeaderCellDef]' },] },\n    ];\n    /** @nocollapse */\n    CdkHeaderCellDef.ctorParameters = function () { return [\n        { type: TemplateRef, },\n    ]; };\n    return CdkHeaderCellDef;\n}());\n/**\n * Footer cell definition for a CDK table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\nvar CdkFooterCellDef = /** @class */ (function () {\n    function CdkFooterCellDef(template) {\n        this.template = template;\n    }\n    CdkFooterCellDef.decorators = [\n        { type: Directive, args: [{ selector: '[cdkFooterCellDef]' },] },\n    ];\n    /** @nocollapse */\n    CdkFooterCellDef.ctorParameters = function () { return [\n        { type: TemplateRef, },\n    ]; };\n    return CdkFooterCellDef;\n}());\n/**\n * \\@docs-private\n */\nvar  /**\n * \\@docs-private\n */\nCdkColumnDefBase = /** @class */ (function () {\n    function CdkColumnDefBase() {\n    }\n    return CdkColumnDefBase;\n}());\nvar /** @type {?} */ _CdkColumnDefBase = mixinHasStickyInput(CdkColumnDefBase);\n/**\n * Column definition for the CDK table.\n * Defines a set of cells available for a table column.\n */\nvar CdkColumnDef = /** @class */ (function (_super) {\n    __extends(CdkColumnDef, _super);\n    function CdkColumnDef() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this._stickyEnd = false;\n        return _this;\n    }\n    Object.defineProperty(CdkColumnDef.prototype, \"name\", {\n        get: /**\n         * Unique name for this column.\n         * @return {?}\n         */\n        function () { return this._name; },\n        set: /**\n         * @param {?} name\n         * @return {?}\n         */\n        function (name) {\n            // If the directive is set without a name (updated programatically), then this setter will\n            // trigger with an empty string and should not overwrite the programatically set value.\n            if (!name) {\n                return;\n            }\n            this._name = name;\n            this.cssClassFriendlyName = name.replace(/[^a-z0-9_-]/ig, '-');\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(CdkColumnDef.prototype, \"stickyEnd\", {\n        get: /**\n         * Whether this column should be sticky positioned on the end of the row. Should make sure\n         * that it mimics the `CanStick` mixin such that `_hasStickyChanged` is set to true if the value\n         * has been changed.\n         * @return {?}\n         */\n        function () { return this._stickyEnd; },\n        set: /**\n         * @param {?} v\n         * @return {?}\n         */\n        function (v) {\n            var /** @type {?} */ prevValue = this._stickyEnd;\n            this._stickyEnd = coerceBooleanProperty(v);\n            this._hasStickyChanged = prevValue !== this._stickyEnd;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    CdkColumnDef.decorators = [\n        { type: Directive, args: [{\n                    selector: '[cdkColumnDef]',\n                    inputs: ['sticky']\n                },] },\n    ];\n    /** @nocollapse */\n    CdkColumnDef.propDecorators = {\n        \"name\": [{ type: Input, args: ['cdkColumnDef',] },],\n        \"stickyEnd\": [{ type: Input, args: ['stickyEnd',] },],\n        \"cell\": [{ type: ContentChild, args: [CdkCellDef,] },],\n        \"headerCell\": [{ type: ContentChild, args: [CdkHeaderCellDef,] },],\n        \"footerCell\": [{ type: ContentChild, args: [CdkFooterCellDef,] },],\n    };\n    return CdkColumnDef;\n}(_CdkColumnDefBase));\n/**\n * Base class for the cells. Adds a CSS classname that identifies the column it renders in.\n */\nvar  /**\n * Base class for the cells. Adds a CSS classname that identifies the column it renders in.\n */\nBaseCdkCell = /** @class */ (function () {\n    function BaseCdkCell(columnDef, elementRef) {\n        var /** @type {?} */ columnClassName = \"cdk-column-\" + columnDef.cssClassFriendlyName;\n        elementRef.nativeElement.classList.add(columnClassName);\n    }\n    return BaseCdkCell;\n}());\n/**\n * Header cell template container that adds the right classes and role.\n */\nvar CdkHeaderCell = /** @class */ (function (_super) {\n    __extends(CdkHeaderCell, _super);\n    function CdkHeaderCell(columnDef, elementRef) {\n        return _super.call(this, columnDef, elementRef) || this;\n    }\n    CdkHeaderCell.decorators = [\n        { type: Directive, args: [{\n                    selector: 'cdk-header-cell, th[cdk-header-cell]',\n                    host: {\n                        'class': 'cdk-header-cell',\n                        'role': 'columnheader',\n                    },\n                },] },\n    ];\n    /** @nocollapse */\n    CdkHeaderCell.ctorParameters = function () { return [\n        { type: CdkColumnDef, },\n        { type: ElementRef, },\n    ]; };\n    return CdkHeaderCell;\n}(BaseCdkCell));\n/**\n * Footer cell template container that adds the right classes and role.\n */\nvar CdkFooterCell = /** @class */ (function (_super) {\n    __extends(CdkFooterCell, _super);\n    function CdkFooterCell(columnDef, elementRef) {\n        return _super.call(this, columnDef, elementRef) || this;\n    }\n    CdkFooterCell.decorators = [\n        { type: Directive, args: [{\n                    selector: 'cdk-footer-cell, td[cdk-footer-cell]',\n                    host: {\n                        'class': 'cdk-footer-cell',\n                        'role': 'gridcell',\n                    },\n                },] },\n    ];\n    /** @nocollapse */\n    CdkFooterCell.ctorParameters = function () { return [\n        { type: CdkColumnDef, },\n        { type: ElementRef, },\n    ]; };\n    return CdkFooterCell;\n}(BaseCdkCell));\n/**\n * Cell template container that adds the right classes and role.\n */\nvar CdkCell = /** @class */ (function (_super) {\n    __extends(CdkCell, _super);\n    function CdkCell(columnDef, elementRef) {\n        return _super.call(this, columnDef, elementRef) || this;\n    }\n    CdkCell.decorators = [\n        { type: Directive, args: [{\n                    selector: 'cdk-cell, td[cdk-cell]',\n                    host: {\n                        'class': 'cdk-cell',\n                        'role': 'gridcell',\n                    },\n                },] },\n    ];\n    /** @nocollapse */\n    CdkCell.ctorParameters = function () { return [\n        { type: CdkColumnDef, },\n        { type: ElementRef, },\n    ]; };\n    return CdkCell;\n}(BaseCdkCell));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * The row template that can be used by the mat-table. Should not be used outside of the\n * material library.\n */\nvar /** @type {?} */ CDK_ROW_TEMPLATE = \"<ng-container cdkCellOutlet></ng-container>\";\n/**\n * Base class for the CdkHeaderRowDef and CdkRowDef that handles checking their columns inputs\n * for changes and notifying the table.\n * @abstract\n */\nvar  /**\n * Base class for the CdkHeaderRowDef and CdkRowDef that handles checking their columns inputs\n * for changes and notifying the table.\n * @abstract\n */\nBaseRowDef = /** @class */ (function () {\n    function BaseRowDef(template, _differs) {\n        this.template = template;\n        this._differs = _differs;\n    }\n    /**\n     * @param {?} changes\n     * @return {?}\n     */\n    BaseRowDef.prototype.ngOnChanges = /**\n     * @param {?} changes\n     * @return {?}\n     */\n    function (changes) {\n        // Create a new columns differ if one does not yet exist. Initialize it based on initial value\n        // of the columns property or an empty array if none is provided.\n        if (!this._columnsDiffer) {\n            var /** @type {?} */ columns = (changes['columns'] && changes['columns'].currentValue) || [];\n            this._columnsDiffer = this._differs.find(columns).create();\n            this._columnsDiffer.diff(columns);\n        }\n    };\n    /**\n     * Returns the difference between the current columns and the columns from the last diff, or null\n     * if there is no difference.\n     */\n    /**\n     * Returns the difference between the current columns and the columns from the last diff, or null\n     * if there is no difference.\n     * @return {?}\n     */\n    BaseRowDef.prototype.getColumnsDiff = /**\n     * Returns the difference between the current columns and the columns from the last diff, or null\n     * if there is no difference.\n     * @return {?}\n     */\n    function () {\n        return this._columnsDiffer.diff(this.columns);\n    };\n    /** Gets this row def's relevant cell template from the provided column def. */\n    /**\n     * Gets this row def's relevant cell template from the provided column def.\n     * @param {?} column\n     * @return {?}\n     */\n    BaseRowDef.prototype.extractCellTemplate = /**\n     * Gets this row def's relevant cell template from the provided column def.\n     * @param {?} column\n     * @return {?}\n     */\n    function (column) {\n        if (this instanceof CdkHeaderRowDef) {\n            return column.headerCell.template;\n        }\n        if (this instanceof CdkFooterRowDef) {\n            return column.footerCell.template;\n        }\n        else {\n            return column.cell.template;\n        }\n    };\n    return BaseRowDef;\n}());\n/**\n * \\@docs-private\n */\nvar  /**\n * \\@docs-private\n */\nCdkHeaderRowDefBase = /** @class */ (function (_super) {\n    __extends(CdkHeaderRowDefBase, _super);\n    function CdkHeaderRowDefBase() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    return CdkHeaderRowDefBase;\n}(BaseRowDef));\nvar /** @type {?} */ _CdkHeaderRowDefBase = mixinHasStickyInput(CdkHeaderRowDefBase);\n/**\n * Header row definition for the CDK table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\nvar CdkHeaderRowDef = /** @class */ (function (_super) {\n    __extends(CdkHeaderRowDef, _super);\n    function CdkHeaderRowDef(template, _differs) {\n        return _super.call(this, template, _differs) || this;\n    }\n    // Prerender fails to recognize that ngOnChanges in a part of this class through inheritance.\n    // Explicitly define it so that the method is called as part of the Angular lifecycle.\n    /**\n     * @param {?} changes\n     * @return {?}\n     */\n    CdkHeaderRowDef.prototype.ngOnChanges = /**\n     * @param {?} changes\n     * @return {?}\n     */\n    function (changes) {\n        _super.prototype.ngOnChanges.call(this, changes);\n    };\n    CdkHeaderRowDef.decorators = [\n        { type: Directive, args: [{\n                    selector: '[cdkHeaderRowDef]',\n                    inputs: ['columns: cdkHeaderRowDef', 'sticky: cdkHeaderRowDefSticky'],\n                },] },\n    ];\n    /** @nocollapse */\n    CdkHeaderRowDef.ctorParameters = function () { return [\n        { type: TemplateRef, },\n        { type: IterableDiffers, },\n    ]; };\n    return CdkHeaderRowDef;\n}(_CdkHeaderRowDefBase));\n/**\n * \\@docs-private\n */\nvar  /**\n * \\@docs-private\n */\nCdkFooterRowDefBase = /** @class */ (function (_super) {\n    __extends(CdkFooterRowDefBase, _super);\n    function CdkFooterRowDefBase() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    return CdkFooterRowDefBase;\n}(BaseRowDef));\nvar /** @type {?} */ _CdkFooterRowDefBase = mixinHasStickyInput(CdkFooterRowDefBase);\n/**\n * Footer row definition for the CDK table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\nvar CdkFooterRowDef = /** @class */ (function (_super) {\n    __extends(CdkFooterRowDef, _super);\n    function CdkFooterRowDef(template, _differs) {\n        return _super.call(this, template, _differs) || this;\n    }\n    // Prerender fails to recognize that ngOnChanges in a part of this class through inheritance.\n    // Explicitly define it so that the method is called as part of the Angular lifecycle.\n    /**\n     * @param {?} changes\n     * @return {?}\n     */\n    CdkFooterRowDef.prototype.ngOnChanges = /**\n     * @param {?} changes\n     * @return {?}\n     */\n    function (changes) {\n        _super.prototype.ngOnChanges.call(this, changes);\n    };\n    CdkFooterRowDef.decorators = [\n        { type: Directive, args: [{\n                    selector: '[cdkFooterRowDef]',\n                    inputs: ['columns: cdkFooterRowDef', 'sticky: cdkFooterRowDefSticky'],\n                },] },\n    ];\n    /** @nocollapse */\n    CdkFooterRowDef.ctorParameters = function () { return [\n        { type: TemplateRef, },\n        { type: IterableDiffers, },\n    ]; };\n    return CdkFooterRowDef;\n}(_CdkFooterRowDefBase));\n/**\n * Data row definition for the CDK table.\n * Captures the header row's template and other row properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n * @template T\n */\nvar CdkRowDef = /** @class */ (function (_super) {\n    __extends(CdkRowDef, _super);\n    // TODO(andrewseguin): Add an input for providing a switch function to determine\n    //   if this template should be used.\n    function CdkRowDef(template, _differs) {\n        return _super.call(this, template, _differs) || this;\n    }\n    CdkRowDef.decorators = [\n        { type: Directive, args: [{\n                    selector: '[cdkRowDef]',\n                    inputs: ['columns: cdkRowDefColumns', 'when: cdkRowDefWhen'],\n                },] },\n    ];\n    /** @nocollapse */\n    CdkRowDef.ctorParameters = function () { return [\n        { type: TemplateRef, },\n        { type: IterableDiffers, },\n    ]; };\n    return CdkRowDef;\n}(BaseRowDef));\n/**\n * Outlet for rendering cells inside of a row or header row.\n * \\@docs-private\n */\nvar CdkCellOutlet = /** @class */ (function () {\n    function CdkCellOutlet(_viewContainer) {\n        this._viewContainer = _viewContainer;\n        CdkCellOutlet.mostRecentCellOutlet = this;\n    }\n    /**\n     * @return {?}\n     */\n    CdkCellOutlet.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        // If this was the last outlet being rendered in the view, remove the reference\n        // from the static property after it has been destroyed to avoid leaking memory.\n        if (CdkCellOutlet.mostRecentCellOutlet === this) {\n            CdkCellOutlet.mostRecentCellOutlet = null;\n        }\n    };\n    /**\n     * Static property containing the latest constructed instance of this class.\n     * Used by the CDK table when each CdkHeaderRow and CdkRow component is created using\n     * createEmbeddedView. After one of these components are created, this property will provide\n     * a handle to provide that component's cells and context. After init, the CdkCellOutlet will\n     * construct the cells with the provided context.\n     */\n    CdkCellOutlet.mostRecentCellOutlet = null;\n    CdkCellOutlet.decorators = [\n        { type: Directive, args: [{ selector: '[cdkCellOutlet]' },] },\n    ];\n    /** @nocollapse */\n    CdkCellOutlet.ctorParameters = function () { return [\n        { type: ViewContainerRef, },\n    ]; };\n    return CdkCellOutlet;\n}());\n/**\n * Header template container that contains the cell outlet. Adds the right class and role.\n */\nvar CdkHeaderRow = /** @class */ (function () {\n    function CdkHeaderRow() {\n    }\n    CdkHeaderRow.decorators = [\n        { type: Component, args: [{selector: 'cdk-header-row, tr[cdk-header-row]',\n                    template: CDK_ROW_TEMPLATE,\n                    host: {\n                        'class': 'cdk-header-row',\n                        'role': 'row',\n                    },\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    encapsulation: ViewEncapsulation.None,\n                },] },\n    ];\n    return CdkHeaderRow;\n}());\n/**\n * Footer template container that contains the cell outlet. Adds the right class and role.\n */\nvar CdkFooterRow = /** @class */ (function () {\n    function CdkFooterRow() {\n    }\n    CdkFooterRow.decorators = [\n        { type: Component, args: [{selector: 'cdk-footer-row, tr[cdk-footer-row]',\n                    template: CDK_ROW_TEMPLATE,\n                    host: {\n                        'class': 'cdk-footer-row',\n                        'role': 'row',\n                    },\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    encapsulation: ViewEncapsulation.None,\n                },] },\n    ];\n    return CdkFooterRow;\n}());\n/**\n * Data row template container that contains the cell outlet. Adds the right class and role.\n */\nvar CdkRow = /** @class */ (function () {\n    function CdkRow() {\n    }\n    CdkRow.decorators = [\n        { type: Component, args: [{selector: 'cdk-row, tr[cdk-row]',\n                    template: CDK_ROW_TEMPLATE,\n                    host: {\n                        'class': 'cdk-row',\n                        'role': 'row',\n                    },\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    encapsulation: ViewEncapsulation.None,\n                },] },\n    ];\n    return CdkRow;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * Returns an error to be thrown when attempting to find an unexisting column.\n * \\@docs-private\n * @param {?} id Id whose lookup failed.\n * @return {?}\n */\nfunction getTableUnknownColumnError(id) {\n    return Error(\"Could not find column with id \\\"\" + id + \"\\\".\");\n}\n/**\n * Returns an error to be thrown when two column definitions have the same name.\n * \\@docs-private\n * @param {?} name\n * @return {?}\n */\nfunction getTableDuplicateColumnNameError(name) {\n    return Error(\"Duplicate column definition name provided: \\\"\" + name + \"\\\".\");\n}\n/**\n * Returns an error to be thrown when there are multiple rows that are missing a when function.\n * \\@docs-private\n * @return {?}\n */\nfunction getTableMultipleDefaultRowDefsError() {\n    return Error(\"There can only be one default row without a when predicate function.\");\n}\n/**\n * Returns an error to be thrown when there are no matching row defs for a particular set of data.\n * \\@docs-private\n * @param {?} data\n * @return {?}\n */\nfunction getTableMissingMatchingRowDefError(data) {\n    return Error(\"Could not find a matching row definition for the\" +\n        (\"provided row data: \" + JSON.stringify(data)));\n}\n/**\n * Returns an error to be thrown when there is no row definitions present in the content.\n * \\@docs-private\n * @return {?}\n */\nfunction getTableMissingRowDefsError() {\n    return Error('Missing definitions for header, footer, and row; ' +\n        'cannot determine which columns should be rendered.');\n}\n/**\n * Returns an error to be thrown when the data source does not match the compatible types.\n * \\@docs-private\n * @return {?}\n */\nfunction getTableUnknownDataSourceError() {\n    return Error(\"Provided data source did not match an array, Observable, or DataSource\");\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * List of all possible directions that can be used for sticky positioning.\n * \\@docs-private\n */\nvar /** @type {?} */ STICKY_DIRECTIONS = ['top', 'bottom', 'left', 'right'];\n/**\n * Applies and removes sticky positioning styles to the `CdkTable` rows and columns cells.\n * \\@docs-private\n */\nvar  /**\n * Applies and removes sticky positioning styles to the `CdkTable` rows and columns cells.\n * \\@docs-private\n */\nStickyStyler = /** @class */ (function () {\n    /**\n     * @param isNativeHtmlTable Whether the sticky logic should be based on a table\n     *     that uses the native `<table>` element.\n     * @param stickCellCss The CSS class that will be applied to every row/cell that has\n     *     sticky positioning applied.\n     * @param direction The directionality context of the table (ltr/rtl); affects column positioning\n     *     by reversing left/right positions.\n     * @param _isBrowser Whether the table is currently being rendered on the server or the client.\n     */\n    function StickyStyler(isNativeHtmlTable, stickCellCss, direction, _isBrowser) {\n        if (_isBrowser === void 0) { _isBrowser = true; }\n        this.isNativeHtmlTable = isNativeHtmlTable;\n        this.stickCellCss = stickCellCss;\n        this.direction = direction;\n        this._isBrowser = _isBrowser;\n    }\n    /**\n     * Clears the sticky positioning styles from the row and its cells by resetting the `position`\n     * style, setting the zIndex to 0, and unsetting each provided sticky direction.\n     * @param rows The list of rows that should be cleared from sticking in the provided directions\n     * @param stickyDirections The directions that should no longer be set as sticky on the rows.\n     */\n    /**\n     * Clears the sticky positioning styles from the row and its cells by resetting the `position`\n     * style, setting the zIndex to 0, and unsetting each provided sticky direction.\n     * @param {?} rows The list of rows that should be cleared from sticking in the provided directions\n     * @param {?} stickyDirections The directions that should no longer be set as sticky on the rows.\n     * @return {?}\n     */\n    StickyStyler.prototype.clearStickyPositioning = /**\n     * Clears the sticky positioning styles from the row and its cells by resetting the `position`\n     * style, setting the zIndex to 0, and unsetting each provided sticky direction.\n     * @param {?} rows The list of rows that should be cleared from sticking in the provided directions\n     * @param {?} stickyDirections The directions that should no longer be set as sticky on the rows.\n     * @return {?}\n     */\n    function (rows, stickyDirections) {\n        for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n            var row = rows_1[_i];\n            // If the row isn't an element (e.g. if it's an `ng-container`),\n            // it won't have inline styles or `children` so we skip it.\n            if (row.nodeType !== row.ELEMENT_NODE) {\n                continue;\n            }\n            this._removeStickyStyle(row, stickyDirections);\n            for (var /** @type {?} */ i = 0; i < row.children.length; i++) {\n                var /** @type {?} */ cell = /** @type {?} */ (row.children[i]);\n                this._removeStickyStyle(cell, stickyDirections);\n            }\n        }\n    };\n    /**\n     * Applies sticky left and right positions to the cells of each row according to the sticky\n     * states of the rendered column definitions.\n     * @param rows The rows that should have its set of cells stuck according to the sticky states.\n     * @param stickyStartStates A list of boolean states where each state represents whether the cell\n     *     in this index position should be stuck to the start of the row.\n     * @param stickyEndStates A list of boolean states where each state represents whether the cell\n     *     in this index position should be stuck to the end of the row.\n     */\n    /**\n     * Applies sticky left and right positions to the cells of each row according to the sticky\n     * states of the rendered column definitions.\n     * @param {?} rows The rows that should have its set of cells stuck according to the sticky states.\n     * @param {?} stickyStartStates A list of boolean states where each state represents whether the cell\n     *     in this index position should be stuck to the start of the row.\n     * @param {?} stickyEndStates A list of boolean states where each state represents whether the cell\n     *     in this index position should be stuck to the end of the row.\n     * @return {?}\n     */\n    StickyStyler.prototype.updateStickyColumns = /**\n     * Applies sticky left and right positions to the cells of each row according to the sticky\n     * states of the rendered column definitions.\n     * @param {?} rows The rows that should have its set of cells stuck according to the sticky states.\n     * @param {?} stickyStartStates A list of boolean states where each state represents whether the cell\n     *     in this index position should be stuck to the start of the row.\n     * @param {?} stickyEndStates A list of boolean states where each state represents whether the cell\n     *     in this index position should be stuck to the end of the row.\n     * @return {?}\n     */\n    function (rows, stickyStartStates, stickyEndStates) {\n        var /** @type {?} */ hasStickyColumns = stickyStartStates.some(function (state) { return state; }) || stickyEndStates.some(function (state) { return state; });\n        if (!rows.length || !hasStickyColumns || !this._isBrowser) {\n            return;\n        }\n        var /** @type {?} */ firstRow = rows[0];\n        var /** @type {?} */ numCells = firstRow.children.length;\n        var /** @type {?} */ cellWidths = this._getCellWidths(firstRow);\n        var /** @type {?} */ startPositions = this._getStickyStartColumnPositions(cellWidths, stickyStartStates);\n        var /** @type {?} */ endPositions = this._getStickyEndColumnPositions(cellWidths, stickyEndStates);\n        var /** @type {?} */ isRtl = this.direction === 'rtl';\n        for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n            var row = rows_2[_i];\n            for (var /** @type {?} */ i = 0; i < numCells; i++) {\n                var /** @type {?} */ cell = /** @type {?} */ (row.children[i]);\n                if (stickyStartStates[i]) {\n                    this._addStickyStyle(cell, isRtl ? 'right' : 'left', startPositions[i]);\n                }\n                if (stickyEndStates[i]) {\n                    this._addStickyStyle(cell, isRtl ? 'left' : 'right', endPositions[i]);\n                }\n            }\n        }\n    };\n    /**\n     * Applies sticky positioning to the row's cells if using the native table layout, and to the\n     * row itself otherwise.\n     * @param rowsToStick The list of rows that should be stuck according to their corresponding\n     *     sticky state and to the provided top or bottom position.\n     * @param stickyStates A list of boolean states where each state represents whether the row\n     *     should be stuck in the particular top or bottom position.\n     * @param position The position direction in which the row should be stuck if that row should be\n     *     sticky.\n     *\n     */\n    /**\n     * Applies sticky positioning to the row's cells if using the native table layout, and to the\n     * row itself otherwise.\n     * @param {?} rowsToStick The list of rows that should be stuck according to their corresponding\n     *     sticky state and to the provided top or bottom position.\n     * @param {?} stickyStates A list of boolean states where each state represents whether the row\n     *     should be stuck in the particular top or bottom position.\n     * @param {?} position The position direction in which the row should be stuck if that row should be\n     *     sticky.\n     *\n     * @return {?}\n     */\n    StickyStyler.prototype.stickRows = /**\n     * Applies sticky positioning to the row's cells if using the native table layout, and to the\n     * row itself otherwise.\n     * @param {?} rowsToStick The list of rows that should be stuck according to their corresponding\n     *     sticky state and to the provided top or bottom position.\n     * @param {?} stickyStates A list of boolean states where each state represents whether the row\n     *     should be stuck in the particular top or bottom position.\n     * @param {?} position The position direction in which the row should be stuck if that row should be\n     *     sticky.\n     *\n     * @return {?}\n     */\n    function (rowsToStick, stickyStates, position) {\n        // Since we can't measure the rows on the server, we can't stick the rows properly.\n        if (!this._isBrowser) {\n            return;\n        }\n        // If positioning the rows to the bottom, reverse their order when evaluating the sticky\n        // position such that the last row stuck will be \"bottom: 0px\" and so on.\n        var /** @type {?} */ rows = position === 'bottom' ? rowsToStick.reverse() : rowsToStick;\n        var /** @type {?} */ stickyHeight = 0;\n        for (var /** @type {?} */ rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n            if (!stickyStates[rowIndex]) {\n                continue;\n            }\n            var /** @type {?} */ row = rows[rowIndex];\n            if (this.isNativeHtmlTable) {\n                for (var /** @type {?} */ j = 0; j < row.children.length; j++) {\n                    var /** @type {?} */ cell = /** @type {?} */ (row.children[j]);\n                    this._addStickyStyle(cell, position, stickyHeight);\n                }\n            }\n            else {\n                // Flex does not respect the stick positioning on the cells, needs to be applied to the row.\n                // If this is applied on a native table, Safari causes the header to fly in wrong direction.\n                this._addStickyStyle(row, position, stickyHeight);\n            }\n            stickyHeight += row.getBoundingClientRect().height;\n        }\n    };\n    /**\n     * When using the native table in Safari, sticky footer cells do not stick. The only way to stick\n     * footer rows is to apply sticky styling to the tfoot container. This should only be done if\n     * all footer rows are sticky. If not all footer rows are sticky, remove sticky positioning from\n     * the tfoot element.\n     */\n    /**\n     * When using the native table in Safari, sticky footer cells do not stick. The only way to stick\n     * footer rows is to apply sticky styling to the tfoot container. This should only be done if\n     * all footer rows are sticky. If not all footer rows are sticky, remove sticky positioning from\n     * the tfoot element.\n     * @param {?} tableElement\n     * @param {?} stickyStates\n     * @return {?}\n     */\n    StickyStyler.prototype.updateStickyFooterContainer = /**\n     * When using the native table in Safari, sticky footer cells do not stick. The only way to stick\n     * footer rows is to apply sticky styling to the tfoot container. This should only be done if\n     * all footer rows are sticky. If not all footer rows are sticky, remove sticky positioning from\n     * the tfoot element.\n     * @param {?} tableElement\n     * @param {?} stickyStates\n     * @return {?}\n     */\n    function (tableElement, stickyStates) {\n        if (!this.isNativeHtmlTable) {\n            return;\n        }\n        var /** @type {?} */ tfoot = /** @type {?} */ ((tableElement.querySelector('tfoot')));\n        if (stickyStates.some(function (state) { return !state; })) {\n            this._removeStickyStyle(tfoot, ['bottom']);\n        }\n        else {\n            this._addStickyStyle(tfoot, 'bottom', 0);\n        }\n    };\n    /**\n     * Removes the sticky style on the element by removing the sticky cell CSS class, re-evaluating\n     * the zIndex, removing each of the provided sticky directions, and removing the\n     * sticky position if there are no more directions.\n     */\n    /**\n     * Removes the sticky style on the element by removing the sticky cell CSS class, re-evaluating\n     * the zIndex, removing each of the provided sticky directions, and removing the\n     * sticky position if there are no more directions.\n     * @param {?} element\n     * @param {?} stickyDirections\n     * @return {?}\n     */\n    StickyStyler.prototype._removeStickyStyle = /**\n     * Removes the sticky style on the element by removing the sticky cell CSS class, re-evaluating\n     * the zIndex, removing each of the provided sticky directions, and removing the\n     * sticky position if there are no more directions.\n     * @param {?} element\n     * @param {?} stickyDirections\n     * @return {?}\n     */\n    function (element, stickyDirections) {\n        for (var _i = 0, stickyDirections_1 = stickyDirections; _i < stickyDirections_1.length; _i++) {\n            var dir = stickyDirections_1[_i];\n            element.style[dir] = '';\n        }\n        element.style.zIndex = this._getCalculatedZIndex(element);\n        // If the element no longer has any more sticky directions, remove sticky positioning and\n        // the sticky CSS class.\n        var /** @type {?} */ hasDirection = STICKY_DIRECTIONS.some(function (dir) { return !!element.style[dir]; });\n        if (!hasDirection) {\n            element.style.position = '';\n            element.classList.remove(this.stickCellCss);\n        }\n    };\n    /**\n     * Adds the sticky styling to the element by adding the sticky style class, changing position\n     * to be sticky (and -webkit-sticky), setting the appropriate zIndex, and adding a sticky\n     * direction and value.\n     */\n    /**\n     * Adds the sticky styling to the element by adding the sticky style class, changing position\n     * to be sticky (and -webkit-sticky), setting the appropriate zIndex, and adding a sticky\n     * direction and value.\n     * @param {?} element\n     * @param {?} dir\n     * @param {?} dirValue\n     * @return {?}\n     */\n    StickyStyler.prototype._addStickyStyle = /**\n     * Adds the sticky styling to the element by adding the sticky style class, changing position\n     * to be sticky (and -webkit-sticky), setting the appropriate zIndex, and adding a sticky\n     * direction and value.\n     * @param {?} element\n     * @param {?} dir\n     * @param {?} dirValue\n     * @return {?}\n     */\n    function (element, dir, dirValue) {\n        element.classList.add(this.stickCellCss);\n        element.style[dir] = dirValue + \"px\";\n        element.style.cssText += 'position: -webkit-sticky; position: sticky; ';\n        element.style.zIndex = this._getCalculatedZIndex(element);\n    };\n    /**\n     * Calculate what the z-index should be for the element, depending on what directions (top,\n     * bottom, left, right) have been set. It should be true that elements with a top direction\n     * should have the highest index since these are elements like a table header. If any of those\n     * elements are also sticky in another direction, then they should appear above other elements\n     * that are only sticky top (e.g. a sticky column on a sticky header). Bottom-sticky elements\n     * (e.g. footer rows) should then be next in the ordering such that they are below the header\n     * but above any non-sticky elements. Finally, left/right sticky elements (e.g. sticky columns)\n     * should minimally increment so that they are above non-sticky elements but below top and bottom\n     * elements.\n     */\n    /**\n     * Calculate what the z-index should be for the element, depending on what directions (top,\n     * bottom, left, right) have been set. It should be true that elements with a top direction\n     * should have the highest index since these are elements like a table header. If any of those\n     * elements are also sticky in another direction, then they should appear above other elements\n     * that are only sticky top (e.g. a sticky column on a sticky header). Bottom-sticky elements\n     * (e.g. footer rows) should then be next in the ordering such that they are below the header\n     * but above any non-sticky elements. Finally, left/right sticky elements (e.g. sticky columns)\n     * should minimally increment so that they are above non-sticky elements but below top and bottom\n     * elements.\n     * @param {?} element\n     * @return {?}\n     */\n    StickyStyler.prototype._getCalculatedZIndex = /**\n     * Calculate what the z-index should be for the element, depending on what directions (top,\n     * bottom, left, right) have been set. It should be true that elements with a top direction\n     * should have the highest index since these are elements like a table header. If any of those\n     * elements are also sticky in another direction, then they should appear above other elements\n     * that are only sticky top (e.g. a sticky column on a sticky header). Bottom-sticky elements\n     * (e.g. footer rows) should then be next in the ordering such that they are below the header\n     * but above any non-sticky elements. Finally, left/right sticky elements (e.g. sticky columns)\n     * should minimally increment so that they are above non-sticky elements but below top and bottom\n     * elements.\n     * @param {?} element\n     * @return {?}\n     */\n    function (element) {\n        var /** @type {?} */ zIndexIncrements = {\n            top: 100,\n            bottom: 10,\n            left: 1,\n            right: 1,\n        };\n        var /** @type {?} */ zIndex = 0;\n        for (var _i = 0, STICKY_DIRECTIONS_1 = STICKY_DIRECTIONS; _i < STICKY_DIRECTIONS_1.length; _i++) {\n            var dir = STICKY_DIRECTIONS_1[_i];\n            if (element.style[dir]) {\n                zIndex += zIndexIncrements[dir];\n            }\n        }\n        return zIndex ? \"\" + zIndex : '';\n    };\n    /** Gets the widths for each cell in the provided row. */\n    /**\n     * Gets the widths for each cell in the provided row.\n     * @param {?} row\n     * @return {?}\n     */\n    StickyStyler.prototype._getCellWidths = /**\n     * Gets the widths for each cell in the provided row.\n     * @param {?} row\n     * @return {?}\n     */\n    function (row) {\n        var /** @type {?} */ cellWidths = [];\n        var /** @type {?} */ firstRowCells = row.children;\n        for (var /** @type {?} */ i = 0; i < firstRowCells.length; i++) {\n            var /** @type {?} */ cell = /** @type {?} */ (firstRowCells[i]);\n            cellWidths.push(cell.getBoundingClientRect().width);\n        }\n        return cellWidths;\n    };\n    /**\n     * Determines the left and right positions of each sticky column cell, which will be the\n     * accumulation of all sticky column cell widths to the left and right, respectively.\n     * Non-sticky cells do not need to have a value set since their positions will not be applied.\n     */\n    /**\n     * Determines the left and right positions of each sticky column cell, which will be the\n     * accumulation of all sticky column cell widths to the left and right, respectively.\n     * Non-sticky cells do not need to have a value set since their positions will not be applied.\n     * @param {?} widths\n     * @param {?} stickyStates\n     * @return {?}\n     */\n    StickyStyler.prototype._getStickyStartColumnPositions = /**\n     * Determines the left and right positions of each sticky column cell, which will be the\n     * accumulation of all sticky column cell widths to the left and right, respectively.\n     * Non-sticky cells do not need to have a value set since their positions will not be applied.\n     * @param {?} widths\n     * @param {?} stickyStates\n     * @return {?}\n     */\n    function (widths, stickyStates) {\n        var /** @type {?} */ positions = [];\n        var /** @type {?} */ nextPosition = 0;\n        for (var /** @type {?} */ i = 0; i < widths.length; i++) {\n            if (stickyStates[i]) {\n                positions[i] = nextPosition;\n                nextPosition += widths[i];\n            }\n        }\n        return positions;\n    };\n    /**\n     * Determines the left and right positions of each sticky column cell, which will be the\n     * accumulation of all sticky column cell widths to the left and right, respectively.\n     * Non-sticky cells do not need to have a value set since their positions will not be applied.\n     */\n    /**\n     * Determines the left and right positions of each sticky column cell, which will be the\n     * accumulation of all sticky column cell widths to the left and right, respectively.\n     * Non-sticky cells do not need to have a value set since their positions will not be applied.\n     * @param {?} widths\n     * @param {?} stickyStates\n     * @return {?}\n     */\n    StickyStyler.prototype._getStickyEndColumnPositions = /**\n     * Determines the left and right positions of each sticky column cell, which will be the\n     * accumulation of all sticky column cell widths to the left and right, respectively.\n     * Non-sticky cells do not need to have a value set since their positions will not be applied.\n     * @param {?} widths\n     * @param {?} stickyStates\n     * @return {?}\n     */\n    function (widths, stickyStates) {\n        var /** @type {?} */ positions = [];\n        var /** @type {?} */ nextPosition = 0;\n        for (var /** @type {?} */ i = widths.length; i > 0; i--) {\n            if (stickyStates[i]) {\n                positions[i] = nextPosition;\n                nextPosition += widths[i];\n            }\n        }\n        return positions;\n    };\n    return StickyStyler;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert data rows.\n * \\@docs-private\n */\nvar DataRowOutlet = /** @class */ (function () {\n    function DataRowOutlet(viewContainer, elementRef) {\n        this.viewContainer = viewContainer;\n        this.elementRef = elementRef;\n    }\n    DataRowOutlet.decorators = [\n        { type: Directive, args: [{ selector: '[rowOutlet]' },] },\n    ];\n    /** @nocollapse */\n    DataRowOutlet.ctorParameters = function () { return [\n        { type: ViewContainerRef, },\n        { type: ElementRef, },\n    ]; };\n    return DataRowOutlet;\n}());\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert the header.\n * \\@docs-private\n */\nvar HeaderRowOutlet = /** @class */ (function () {\n    function HeaderRowOutlet(viewContainer, elementRef) {\n        this.viewContainer = viewContainer;\n        this.elementRef = elementRef;\n    }\n    HeaderRowOutlet.decorators = [\n        { type: Directive, args: [{ selector: '[headerRowOutlet]' },] },\n    ];\n    /** @nocollapse */\n    HeaderRowOutlet.ctorParameters = function () { return [\n        { type: ViewContainerRef, },\n        { type: ElementRef, },\n    ]; };\n    return HeaderRowOutlet;\n}());\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert the footer.\n * \\@docs-private\n */\nvar FooterRowOutlet = /** @class */ (function () {\n    function FooterRowOutlet(viewContainer, elementRef) {\n        this.viewContainer = viewContainer;\n        this.elementRef = elementRef;\n    }\n    FooterRowOutlet.decorators = [\n        { type: Directive, args: [{ selector: '[footerRowOutlet]' },] },\n    ];\n    /** @nocollapse */\n    FooterRowOutlet.ctorParameters = function () { return [\n        { type: ViewContainerRef, },\n        { type: ElementRef, },\n    ]; };\n    return FooterRowOutlet;\n}());\n/**\n * The table template that can be used by the mat-table. Should not be used outside of the\n * material library.\n * \\@docs-private\n */\nvar /** @type {?} */ CDK_TABLE_TEMPLATE = \"\\n  <ng-container headerRowOutlet></ng-container>\\n  <ng-container rowOutlet></ng-container>\\n  <ng-container footerRowOutlet></ng-container>\";\n/**\n * Class used to conveniently type the embedded view ref for rows with a context.\n * \\@docs-private\n * @abstract\n * @template T\n */\nvar /**\n * Class used to conveniently type the embedded view ref for rows with a context.\n * \\@docs-private\n * @abstract\n * @template T\n */\nRowViewRef = /** @class */ (function (_super) {\n    __extends(RowViewRef, _super);\n    function RowViewRef() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    return RowViewRef;\n}(EmbeddedViewRef));\n/**\n * A data table that can render a header row, data rows, and a footer row.\n * Uses the dataSource input to determine the data to be rendered. The data can be provided either\n * as a data array, an Observable stream that emits the data array to render, or a DataSource with a\n * connect function that will return an Observable stream that emits the data array to render.\n * @template T\n */\nvar CdkTable = /** @class */ (function () {\n    function CdkTable(_differs, _changeDetectorRef, _elementRef, role, _dir, /**\n                   * @deprecated\n                   * @breaking-change 8.0.0 `_document` and `_platform` to\n                   *    be made into a required parameters.\n                   */\n    _document, _platform) {\n        this._differs = _differs;\n        this._changeDetectorRef = _changeDetectorRef;\n        this._elementRef = _elementRef;\n        this._dir = _dir;\n        this._platform = _platform;\n        /**\n         * Subject that emits when the component has been destroyed.\n         */\n        this._onDestroy = new Subject();\n        /**\n         * Map of all the user's defined columns (header, data, and footer cell template) identified by\n         * name. Collection populated by the column definitions gathered by `ContentChildren` as well as\n         * any custom column definitions added to `_customColumnDefs`.\n         */\n        this._columnDefsByName = new Map();\n        /**\n         * Column definitions that were defined outside of the direct content children of the table.\n         * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n         * column definitions as *it's* content child.\n         */\n        this._customColumnDefs = new Set();\n        /**\n         * Data row definitions that were defined outside of the direct content children of the table.\n         * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n         * built-in data rows as *it's* content child.\n         */\n        this._customRowDefs = new Set();\n        /**\n         * Header row definitions that were defined outside of the direct content children of the table.\n         * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n         * built-in header rows as *it's* content child.\n         */\n        this._customHeaderRowDefs = new Set();\n        /**\n         * Footer row definitions that were defined outside of the direct content children of the table.\n         * These will be defined when, e.g., creating a wrapper around the cdkTable that has a\n         * built-in footer row as *it's* content child.\n         */\n        this._customFooterRowDefs = new Set();\n        /**\n         * Whether the header row definition has been changed. Triggers an update to the header row after\n         * content is checked. Initialized as true so that the table renders the initial set of rows.\n         */\n        this._headerRowDefChanged = true;\n        /**\n         * Whether the footer row definition has been changed. Triggers an update to the footer row after\n         * content is checked. Initialized as true so that the table renders the initial set of rows.\n         */\n        this._footerRowDefChanged = true;\n        /**\n         * Cache of the latest rendered `RenderRow` objects as a map for easy retrieval when constructing\n         * a new list of `RenderRow` objects for rendering rows. Since the new list is constructed with\n         * the cached `RenderRow` objects when possible, the row identity is preserved when the data\n         * and row template matches, which allows the `IterableDiffer` to check rows by reference\n         * and understand which rows are added/moved/removed.\n         *\n         * Implemented as a map of maps where the first key is the `data: T` object and the second is the\n         * `CdkRowDef<T>` object. With the two keys, the cache points to a `RenderRow<T>` object that\n         * contains an array of created pairs. The array is necessary to handle cases where the data\n         * array contains multiple duplicate data objects and each instantiated `RenderRow` must be\n         * stored.\n         */\n        this._cachedRenderRowsMap = new Map();\n        /**\n         * CSS class added to any row or cell that has sticky positioning applied. May be overriden by\n         * table subclasses.\n         */\n        this.stickyCssClass = 'cdk-table-sticky';\n        this._multiTemplateDataRows = false;\n        /**\n         * Stream containing the latest information on what rows are being displayed on screen.\n         * Can be used by the data source to as a heuristic of what data should be provided.\n         */\n        this.viewChange = new BehaviorSubject({ start: 0, end: Number.MAX_VALUE });\n        if (!role) {\n            this._elementRef.nativeElement.setAttribute('role', 'grid');\n        }\n        this._document = _document;\n        this._isNativeHtmlTable = this._elementRef.nativeElement.nodeName === 'TABLE';\n    }\n    Object.defineProperty(CdkTable.prototype, \"trackBy\", {\n        get: /**\n         * Tracking function that will be used to check the differences in data changes. Used similarly\n         * to `ngFor` `trackBy` function. Optimize row operations by identifying a row based on its data\n         * relative to the function to know if a row should be added/removed/moved.\n         * Accepts a function that takes two parameters, `index` and `item`.\n         * @return {?}\n         */\n        function () { return this._trackByFn; },\n        set: /**\n         * @param {?} fn\n         * @return {?}\n         */\n        function (fn) {\n            if (isDevMode() &&\n                fn != null && typeof fn !== 'function' && /** @type {?} */ (console) && /** @type {?} */ (console.warn)) {\n                console.warn(\"trackBy must be a function, but received \" + JSON.stringify(fn) + \".\");\n            }\n            this._trackByFn = fn;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(CdkTable.prototype, \"dataSource\", {\n        get: /**\n         * The table's source of data, which can be provided in three ways (in order of complexity):\n         *   - Simple data array (each object represents one table row)\n         *   - Stream that emits a data array each time the array changes\n         *   - `DataSource` object that implements the connect/disconnect interface.\n         *\n         * If a data array is provided, the table must be notified when the array's objects are\n         * added, removed, or moved. This can be done by calling the `renderRows()` function which will\n         * render the diff since the last table render. If the data array reference is changed, the table\n         * will automatically trigger an update to the rows.\n         *\n         * When providing an Observable stream, the table will trigger an update automatically when the\n         * stream emits a new array of data.\n         *\n         * Finally, when providing a `DataSource` object, the table will use the Observable stream\n         * provided by the connect function and trigger updates when that stream emits new data array\n         * values. During the table's ngOnDestroy or when the data source is removed from the table, the\n         * table will call the DataSource's `disconnect` function (may be useful for cleaning up any\n         * subscriptions registered during the connect process).\n         * @return {?}\n         */\n        function () { return this._dataSource; },\n        set: /**\n         * @param {?} dataSource\n         * @return {?}\n         */\n        function (dataSource) {\n            if (this._dataSource !== dataSource) {\n                this._switchDataSource(dataSource);\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(CdkTable.prototype, \"multiTemplateDataRows\", {\n        get: /**\n         * Whether to allow multiple rows per data object by evaluating which rows evaluate their 'when'\n         * predicate to true. If `multiTemplateDataRows` is false, which is the default value, then each\n         * dataobject will render the first row that evaluates its when predicate to true, in the order\n         * defined in the table, or otherwise the default row which does not have a when predicate.\n         * @return {?}\n         */\n        function () { return this._multiTemplateDataRows; },\n        set: /**\n         * @param {?} v\n         * @return {?}\n         */\n        function (v) {\n            this._multiTemplateDataRows = coerceBooleanProperty(v);\n            if (this._rowOutlet.viewContainer.length) {\n                this._forceRenderDataRows();\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * @return {?}\n     */\n    CdkTable.prototype.ngOnInit = /**\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        this._setupStickyStyler();\n        if (this._isNativeHtmlTable) {\n            this._applyNativeTableSections();\n        }\n        // Set up the trackBy function so that it uses the `RenderRow` as its identity by default. If\n        // the user has provided a custom trackBy, return the result of that function as evaluated\n        // with the values of the `RenderRow`'s data and index.\n        this._dataDiffer = this._differs.find([]).create(function (_i, dataRow) {\n            return _this.trackBy ? _this.trackBy(dataRow.dataIndex, dataRow.data) : dataRow;\n        });\n    };\n    /**\n     * @return {?}\n     */\n    CdkTable.prototype.ngAfterContentChecked = /**\n     * @return {?}\n     */\n    function () {\n        // Cache the row and column definitions gathered by ContentChildren and programmatic injection.\n        this._cacheRowDefs();\n        this._cacheColumnDefs();\n        // Make sure that the user has at least added header, footer, or data row def.\n        if (!this._headerRowDefs.length && !this._footerRowDefs.length && !this._rowDefs.length) {\n            throw getTableMissingRowDefsError();\n        }\n        // Render updates if the list of columns have been changed for the header, row, or footer defs.\n        this._renderUpdatedColumns();\n        // If the header row definition has been changed, trigger a render to the header row.\n        if (this._headerRowDefChanged) {\n            this._forceRenderHeaderRows();\n            this._headerRowDefChanged = false;\n        }\n        // If the footer row definition has been changed, trigger a render to the footer row.\n        if (this._footerRowDefChanged) {\n            this._forceRenderFooterRows();\n            this._footerRowDefChanged = false;\n        }\n        // If there is a data source and row definitions, connect to the data source unless a\n        // connection has already been made.\n        if (this.dataSource && this._rowDefs.length > 0 && !this._renderChangeSubscription) {\n            this._observeRenderChanges();\n        }\n        this._checkStickyStates();\n    };\n    /**\n     * @return {?}\n     */\n    CdkTable.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        this._rowOutlet.viewContainer.clear();\n        this._headerRowOutlet.viewContainer.clear();\n        this._footerRowOutlet.viewContainer.clear();\n        this._cachedRenderRowsMap.clear();\n        this._onDestroy.next();\n        this._onDestroy.complete();\n        if (this.dataSource instanceof DataSource) {\n            this.dataSource.disconnect(this);\n        }\n    };\n    /**\n     * Renders rows based on the table's latest set of data, which was either provided directly as an\n     * input or retrieved through an Observable stream (directly or from a DataSource).\n     * Checks for differences in the data since the last diff to perform only the necessary\n     * changes (add/remove/move rows).\n     *\n     * If the table's data source is a DataSource or Observable, this will be invoked automatically\n     * each time the provided Observable stream emits a new data array. Otherwise if your data is\n     * an array, this function will need to be called to render any changes.\n     */\n    /**\n     * Renders rows based on the table's latest set of data, which was either provided directly as an\n     * input or retrieved through an Observable stream (directly or from a DataSource).\n     * Checks for differences in the data since the last diff to perform only the necessary\n     * changes (add/remove/move rows).\n     *\n     * If the table's data source is a DataSource or Observable, this will be invoked automatically\n     * each time the provided Observable stream emits a new data array. Otherwise if your data is\n     * an array, this function will need to be called to render any changes.\n     * @return {?}\n     */\n    CdkTable.prototype.renderRows = /**\n     * Renders rows based on the table's latest set of data, which was either provided directly as an\n     * input or retrieved through an Observable stream (directly or from a DataSource).\n     * Checks for differences in the data since the last diff to perform only the necessary\n     * changes (add/remove/move rows).\n     *\n     * If the table's data source is a DataSource or Observable, this will be invoked automatically\n     * each time the provided Observable stream emits a new data array. Otherwise if your data is\n     * an array, this function will need to be called to render any changes.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        this._renderRows = this._getAllRenderRows();\n        var /** @type {?} */ changes = this._dataDiffer.diff(this._renderRows);\n        if (!changes) {\n            return;\n        }\n        var /** @type {?} */ viewContainer = this._rowOutlet.viewContainer;\n        changes.forEachOperation(function (record, prevIndex, currentIndex) {\n            if (record.previousIndex == null) {\n                _this._insertRow(record.item, currentIndex);\n            }\n            else if (currentIndex == null) {\n                viewContainer.remove(prevIndex);\n            }\n            else {\n                var /** @type {?} */ view = /** @type {?} */ (viewContainer.get(prevIndex));\n                viewContainer.move(/** @type {?} */ ((view)), currentIndex);\n            }\n        });\n        // Update the meta context of a row's context data (index, count, first, last, ...)\n        this._updateRowIndexContext();\n        // Update rows that did not get added/removed/moved but may have had their identity changed,\n        // e.g. if trackBy matched data on some property but the actual data reference changed.\n        changes.forEachIdentityChange(function (record) {\n            var /** @type {?} */ rowView = /** @type {?} */ (viewContainer.get(/** @type {?} */ ((record.currentIndex))));\n            rowView.context.$implicit = record.item.data;\n        });\n        this.updateStickyColumnStyles();\n    };\n    /**\n     * Sets the header row definition to be used. Overrides the header row definition gathered by\n     * using `ContentChild`, if one exists. Sets a flag that will re-render the header row after the\n     * table's content is checked.\n     * @docs-private\n     * @deprecated Use `addHeaderRowDef` and `removeHeaderRowDef` instead\n     * @breaking-change 8.0.0\n     */\n    /**\n     * Sets the header row definition to be used. Overrides the header row definition gathered by\n     * using `ContentChild`, if one exists. Sets a flag that will re-render the header row after the\n     * table's content is checked.\n     * \\@docs-private\n     * @deprecated Use `addHeaderRowDef` and `removeHeaderRowDef` instead\n     * \\@breaking-change 8.0.0\n     * @param {?} headerRowDef\n     * @return {?}\n     */\n    CdkTable.prototype.setHeaderRowDef = /**\n     * Sets the header row definition to be used. Overrides the header row definition gathered by\n     * using `ContentChild`, if one exists. Sets a flag that will re-render the header row after the\n     * table's content is checked.\n     * \\@docs-private\n     * @deprecated Use `addHeaderRowDef` and `removeHeaderRowDef` instead\n     * \\@breaking-change 8.0.0\n     * @param {?} headerRowDef\n     * @return {?}\n     */\n    function (headerRowDef) {\n        this._customHeaderRowDefs = new Set([headerRowDef]);\n        this._headerRowDefChanged = true;\n    };\n    /**\n     * Sets the footer row definition to be used. Overrides the footer row definition gathered by\n     * using `ContentChild`, if one exists. Sets a flag that will re-render the footer row after the\n     * table's content is checked.\n     * @docs-private\n     * @deprecated Use `addFooterRowDef` and `removeFooterRowDef` instead\n     * @breaking-change 8.0.0\n     */\n    /**\n     * Sets the footer row definition to be used. Overrides the footer row definition gathered by\n     * using `ContentChild`, if one exists. Sets a flag that will re-render the footer row after the\n     * table's content is checked.\n     * \\@docs-private\n     * @deprecated Use `addFooterRowDef` and `removeFooterRowDef` instead\n     * \\@breaking-change 8.0.0\n     * @param {?} footerRowDef\n     * @return {?}\n     */\n    CdkTable.prototype.setFooterRowDef = /**\n     * Sets the footer row definition to be used. Overrides the footer row definition gathered by\n     * using `ContentChild`, if one exists. Sets a flag that will re-render the footer row after the\n     * table's content is checked.\n     * \\@docs-private\n     * @deprecated Use `addFooterRowDef` and `removeFooterRowDef` instead\n     * \\@breaking-change 8.0.0\n     * @param {?} footerRowDef\n     * @return {?}\n     */\n    function (footerRowDef) {\n        this._customFooterRowDefs = new Set([footerRowDef]);\n        this._footerRowDefChanged = true;\n    };\n    /** Adds a column definition that was not included as part of the content children. */\n    /**\n     * Adds a column definition that was not included as part of the content children.\n     * @param {?} columnDef\n     * @return {?}\n     */\n    CdkTable.prototype.addColumnDef = /**\n     * Adds a column definition that was not included as part of the content children.\n     * @param {?} columnDef\n     * @return {?}\n     */\n    function (columnDef) {\n        this._customColumnDefs.add(columnDef);\n    };\n    /** Removes a column definition that was not included as part of the content children. */\n    /**\n     * Removes a column definition that was not included as part of the content children.\n     * @param {?} columnDef\n     * @return {?}\n     */\n    CdkTable.prototype.removeColumnDef = /**\n     * Removes a column definition that was not included as part of the content children.\n     * @param {?} columnDef\n     * @return {?}\n     */\n    function (columnDef) {\n        this._customColumnDefs.delete(columnDef);\n    };\n    /** Adds a row definition that was not included as part of the content children. */\n    /**\n     * Adds a row definition that was not included as part of the content children.\n     * @param {?} rowDef\n     * @return {?}\n     */\n    CdkTable.prototype.addRowDef = /**\n     * Adds a row definition that was not included as part of the content children.\n     * @param {?} rowDef\n     * @return {?}\n     */\n    function (rowDef) {\n        this._customRowDefs.add(rowDef);\n    };\n    /** Removes a row definition that was not included as part of the content children. */\n    /**\n     * Removes a row definition that was not included as part of the content children.\n     * @param {?} rowDef\n     * @return {?}\n     */\n    CdkTable.prototype.removeRowDef = /**\n     * Removes a row definition that was not included as part of the content children.\n     * @param {?} rowDef\n     * @return {?}\n     */\n    function (rowDef) {\n        this._customRowDefs.delete(rowDef);\n    };\n    /** Adds a header row definition that was not included as part of the content children. */\n    /**\n     * Adds a header row definition that was not included as part of the content children.\n     * @param {?} headerRowDef\n     * @return {?}\n     */\n    CdkTable.prototype.addHeaderRowDef = /**\n     * Adds a header row definition that was not included as part of the content children.\n     * @param {?} headerRowDef\n     * @return {?}\n     */\n    function (headerRowDef) {\n        this._customHeaderRowDefs.add(headerRowDef);\n        this._headerRowDefChanged = true;\n    };\n    /** Removes a header row definition that was not included as part of the content children. */\n    /**\n     * Removes a header row definition that was not included as part of the content children.\n     * @param {?} headerRowDef\n     * @return {?}\n     */\n    CdkTable.prototype.removeHeaderRowDef = /**\n     * Removes a header row definition that was not included as part of the content children.\n     * @param {?} headerRowDef\n     * @return {?}\n     */\n    function (headerRowDef) {\n        this._customHeaderRowDefs.delete(headerRowDef);\n        this._headerRowDefChanged = true;\n    };\n    /** Adds a footer row definition that was not included as part of the content children. */\n    /**\n     * Adds a footer row definition that was not included as part of the content children.\n     * @param {?} footerRowDef\n     * @return {?}\n     */\n    CdkTable.prototype.addFooterRowDef = /**\n     * Adds a footer row definition that was not included as part of the content children.\n     * @param {?} footerRowDef\n     * @return {?}\n     */\n    function (footerRowDef) {\n        this._customFooterRowDefs.add(footerRowDef);\n        this._footerRowDefChanged = true;\n    };\n    /** Removes a footer row definition that was not included as part of the content children. */\n    /**\n     * Removes a footer row definition that was not included as part of the content children.\n     * @param {?} footerRowDef\n     * @return {?}\n     */\n    CdkTable.prototype.removeFooterRowDef = /**\n     * Removes a footer row definition that was not included as part of the content children.\n     * @param {?} footerRowDef\n     * @return {?}\n     */\n    function (footerRowDef) {\n        this._customFooterRowDefs.delete(footerRowDef);\n        this._footerRowDefChanged = true;\n    };\n    /**\n     * Updates the header sticky styles. First resets all applied styles with respect to the cells\n     * sticking to the top. Then, evaluating which cells need to be stuck to the top. This is\n     * automatically called when the header row changes its displayed set of columns, or if its\n     * sticky input changes. May be called manually for cases where the cell content changes outside\n     * of these events.\n     */\n    /**\n     * Updates the header sticky styles. First resets all applied styles with respect to the cells\n     * sticking to the top. Then, evaluating which cells need to be stuck to the top. This is\n     * automatically called when the header row changes its displayed set of columns, or if its\n     * sticky input changes. May be called manually for cases where the cell content changes outside\n     * of these events.\n     * @return {?}\n     */\n    CdkTable.prototype.updateStickyHeaderRowStyles = /**\n     * Updates the header sticky styles. First resets all applied styles with respect to the cells\n     * sticking to the top. Then, evaluating which cells need to be stuck to the top. This is\n     * automatically called when the header row changes its displayed set of columns, or if its\n     * sticky input changes. May be called manually for cases where the cell content changes outside\n     * of these events.\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ headerRows = this._getRenderedRows(this._headerRowOutlet);\n        this._stickyStyler.clearStickyPositioning(headerRows, ['top']);\n        var /** @type {?} */ stickyStates = this._headerRowDefs.map(function (def) { return def.sticky; });\n        this._stickyStyler.stickRows(headerRows, stickyStates, 'top');\n        // Reset the dirty state of the sticky input change since it has been used.\n        this._headerRowDefs.forEach(function (def) { return def.resetStickyChanged(); });\n    };\n    /**\n     * Updates the footer sticky styles. First resets all applied styles with respect to the cells\n     * sticking to the bottom. Then, evaluating which cells need to be stuck to the bottom. This is\n     * automatically called when the footer row changes its displayed set of columns, or if its\n     * sticky input changes. May be called manually for cases where the cell content changes outside\n     * of these events.\n     */\n    /**\n     * Updates the footer sticky styles. First resets all applied styles with respect to the cells\n     * sticking to the bottom. Then, evaluating which cells need to be stuck to the bottom. This is\n     * automatically called when the footer row changes its displayed set of columns, or if its\n     * sticky input changes. May be called manually for cases where the cell content changes outside\n     * of these events.\n     * @return {?}\n     */\n    CdkTable.prototype.updateStickyFooterRowStyles = /**\n     * Updates the footer sticky styles. First resets all applied styles with respect to the cells\n     * sticking to the bottom. Then, evaluating which cells need to be stuck to the bottom. This is\n     * automatically called when the footer row changes its displayed set of columns, or if its\n     * sticky input changes. May be called manually for cases where the cell content changes outside\n     * of these events.\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ footerRows = this._getRenderedRows(this._footerRowOutlet);\n        this._stickyStyler.clearStickyPositioning(footerRows, ['bottom']);\n        var /** @type {?} */ stickyStates = this._footerRowDefs.map(function (def) { return def.sticky; });\n        this._stickyStyler.stickRows(footerRows, stickyStates, 'bottom');\n        this._stickyStyler.updateStickyFooterContainer(this._elementRef.nativeElement, stickyStates);\n        // Reset the dirty state of the sticky input change since it has been used.\n        this._footerRowDefs.forEach(function (def) { return def.resetStickyChanged(); });\n    };\n    /**\n     * Updates the column sticky styles. First resets all applied styles with respect to the cells\n     * sticking to the left and right. Then sticky styles are added for the left and right according\n     * to the column definitions for each cell in each row. This is automatically called when\n     * the data source provides a new set of data or when a column definition changes its sticky\n     * input. May be called manually for cases where the cell content changes outside of these events.\n     */\n    /**\n     * Updates the column sticky styles. First resets all applied styles with respect to the cells\n     * sticking to the left and right. Then sticky styles are added for the left and right according\n     * to the column definitions for each cell in each row. This is automatically called when\n     * the data source provides a new set of data or when a column definition changes its sticky\n     * input. May be called manually for cases where the cell content changes outside of these events.\n     * @return {?}\n     */\n    CdkTable.prototype.updateStickyColumnStyles = /**\n     * Updates the column sticky styles. First resets all applied styles with respect to the cells\n     * sticking to the left and right. Then sticky styles are added for the left and right according\n     * to the column definitions for each cell in each row. This is automatically called when\n     * the data source provides a new set of data or when a column definition changes its sticky\n     * input. May be called manually for cases where the cell content changes outside of these events.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        var /** @type {?} */ headerRows = this._getRenderedRows(this._headerRowOutlet);\n        var /** @type {?} */ dataRows = this._getRenderedRows(this._rowOutlet);\n        var /** @type {?} */ footerRows = this._getRenderedRows(this._footerRowOutlet);\n        // Clear the left and right positioning from all columns in the table across all rows since\n        // sticky columns span across all table sections (header, data, footer)\n        this._stickyStyler.clearStickyPositioning(headerRows.concat(dataRows, footerRows), ['left', 'right']);\n        // Update the sticky styles for each header row depending on the def's sticky state\n        headerRows.forEach(function (headerRow, i) {\n            _this._addStickyColumnStyles([headerRow], _this._headerRowDefs[i]);\n        });\n        // Update the sticky styles for each data row depending on its def's sticky state\n        this._rowDefs.forEach(function (rowDef) {\n            // Collect all the rows rendered with this row definition.\n            var /** @type {?} */ rows = [];\n            for (var /** @type {?} */ i = 0; i < dataRows.length; i++) {\n                if (_this._renderRows[i].rowDef === rowDef) {\n                    rows.push(dataRows[i]);\n                }\n            }\n            _this._addStickyColumnStyles(rows, rowDef);\n        });\n        // Update the sticky styles for each footer row depending on the def's sticky state\n        footerRows.forEach(function (footerRow, i) {\n            _this._addStickyColumnStyles([footerRow], _this._footerRowDefs[i]);\n        });\n        // Reset the dirty state of the sticky input change since it has been used.\n        Array.from(this._columnDefsByName.values()).forEach(function (def) { return def.resetStickyChanged(); });\n    };\n    /**\n     * Get the list of RenderRow objects to render according to the current list of data and defined\n     * row definitions. If the previous list already contained a particular pair, it should be reused\n     * so that the differ equates their references.\n     * @return {?}\n     */\n    CdkTable.prototype._getAllRenderRows = /**\n     * Get the list of RenderRow objects to render according to the current list of data and defined\n     * row definitions. If the previous list already contained a particular pair, it should be reused\n     * so that the differ equates their references.\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ renderRows = [];\n        // Store the cache and create a new one. Any re-used RenderRow objects will be moved into the\n        // new cache while unused ones can be picked up by garbage collection.\n        var /** @type {?} */ prevCachedRenderRows = this._cachedRenderRowsMap;\n        this._cachedRenderRowsMap = new Map();\n        // For each data object, get the list of rows that should be rendered, represented by the\n        // respective `RenderRow` object which is the pair of `data` and `CdkRowDef`.\n        for (var /** @type {?} */ i = 0; i < this._data.length; i++) {\n            var /** @type {?} */ data = this._data[i];\n            var /** @type {?} */ renderRowsForData = this._getRenderRowsForData(data, i, prevCachedRenderRows.get(data));\n            if (!this._cachedRenderRowsMap.has(data)) {\n                this._cachedRenderRowsMap.set(data, new WeakMap());\n            }\n            for (var /** @type {?} */ j = 0; j < renderRowsForData.length; j++) {\n                var /** @type {?} */ renderRow = renderRowsForData[j];\n                var /** @type {?} */ cache = /** @type {?} */ ((this._cachedRenderRowsMap.get(renderRow.data)));\n                if (cache.has(renderRow.rowDef)) {\n                    /** @type {?} */ ((cache.get(renderRow.rowDef))).push(renderRow);\n                }\n                else {\n                    cache.set(renderRow.rowDef, [renderRow]);\n                }\n                renderRows.push(renderRow);\n            }\n        }\n        return renderRows;\n    };\n    /**\n     * Gets a list of `RenderRow<T>` for the provided data object and any `CdkRowDef` objects that\n     * should be rendered for this data. Reuses the cached RenderRow objects if they match the same\n     * `(T, CdkRowDef)` pair.\n     * @param {?} data\n     * @param {?} dataIndex\n     * @param {?=} cache\n     * @return {?}\n     */\n    CdkTable.prototype._getRenderRowsForData = /**\n     * Gets a list of `RenderRow<T>` for the provided data object and any `CdkRowDef` objects that\n     * should be rendered for this data. Reuses the cached RenderRow objects if they match the same\n     * `(T, CdkRowDef)` pair.\n     * @param {?} data\n     * @param {?} dataIndex\n     * @param {?=} cache\n     * @return {?}\n     */\n    function (data, dataIndex, cache) {\n        var /** @type {?} */ rowDefs = this._getRowDefs(data, dataIndex);\n        return rowDefs.map(function (rowDef) {\n            var /** @type {?} */ cachedRenderRows = (cache && cache.has(rowDef)) ? /** @type {?} */ ((cache.get(rowDef))) : [];\n            if (cachedRenderRows.length) {\n                var /** @type {?} */ dataRow = /** @type {?} */ ((cachedRenderRows.shift()));\n                dataRow.dataIndex = dataIndex;\n                return dataRow;\n            }\n            else {\n                return { data: data, rowDef: rowDef, dataIndex: dataIndex };\n            }\n        });\n    };\n    /**\n     * Update the map containing the content's column definitions.\n     * @return {?}\n     */\n    CdkTable.prototype._cacheColumnDefs = /**\n     * Update the map containing the content's column definitions.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        this._columnDefsByName.clear();\n        var /** @type {?} */ columnDefs = mergeQueryListAndSet(this._contentColumnDefs, this._customColumnDefs);\n        columnDefs.forEach(function (columnDef) {\n            if (_this._columnDefsByName.has(columnDef.name)) {\n                throw getTableDuplicateColumnNameError(columnDef.name);\n            }\n            _this._columnDefsByName.set(columnDef.name, columnDef);\n        });\n    };\n    /**\n     * Update the list of all available row definitions that can be used.\n     * @return {?}\n     */\n    CdkTable.prototype._cacheRowDefs = /**\n     * Update the list of all available row definitions that can be used.\n     * @return {?}\n     */\n    function () {\n        this._headerRowDefs =\n            mergeQueryListAndSet(this._contentHeaderRowDefs, this._customHeaderRowDefs);\n        this._footerRowDefs =\n            mergeQueryListAndSet(this._contentFooterRowDefs, this._customFooterRowDefs);\n        this._rowDefs =\n            mergeQueryListAndSet(this._contentRowDefs, this._customRowDefs);\n        // After all row definitions are determined, find the row definition to be considered default.\n        var /** @type {?} */ defaultRowDefs = this._rowDefs.filter(function (def) { return !def.when; });\n        if (!this.multiTemplateDataRows && defaultRowDefs.length > 1) {\n            throw getTableMultipleDefaultRowDefsError();\n        }\n        this._defaultRowDef = defaultRowDefs[0];\n    };\n    /**\n     * Check if the header, data, or footer rows have changed what columns they want to display or\n     * whether the sticky states have changed for the header or footer. If there is a diff, then\n     * re-render that section.\n     * @return {?}\n     */\n    CdkTable.prototype._renderUpdatedColumns = /**\n     * Check if the header, data, or footer rows have changed what columns they want to display or\n     * whether the sticky states have changed for the header or footer. If there is a diff, then\n     * re-render that section.\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ columnsDiffReducer = function (acc, def) { return acc || !!def.getColumnsDiff(); };\n        // Force re-render data rows if the list of column definitions have changed.\n        if (this._rowDefs.reduce(columnsDiffReducer, false)) {\n            this._forceRenderDataRows();\n        }\n        // Force re-render header/footer rows if the list of column definitions have changed..\n        if (this._headerRowDefs.reduce(columnsDiffReducer, false)) {\n            this._forceRenderHeaderRows();\n        }\n        if (this._footerRowDefs.reduce(columnsDiffReducer, false)) {\n            this._forceRenderFooterRows();\n        }\n    };\n    /**\n     * Switch to the provided data source by resetting the data and unsubscribing from the current\n     * render change subscription if one exists. If the data source is null, interpret this by\n     * clearing the row outlet. Otherwise start listening for new data.\n     * @param {?} dataSource\n     * @return {?}\n     */\n    CdkTable.prototype._switchDataSource = /**\n     * Switch to the provided data source by resetting the data and unsubscribing from the current\n     * render change subscription if one exists. If the data source is null, interpret this by\n     * clearing the row outlet. Otherwise start listening for new data.\n     * @param {?} dataSource\n     * @return {?}\n     */\n    function (dataSource) {\n        this._data = [];\n        if (this.dataSource instanceof DataSource) {\n            this.dataSource.disconnect(this);\n        }\n        // Stop listening for data from the previous data source.\n        if (this._renderChangeSubscription) {\n            this._renderChangeSubscription.unsubscribe();\n            this._renderChangeSubscription = null;\n        }\n        if (!dataSource) {\n            if (this._dataDiffer) {\n                this._dataDiffer.diff([]);\n            }\n            this._rowOutlet.viewContainer.clear();\n        }\n        this._dataSource = dataSource;\n    };\n    /**\n     * Set up a subscription for the data provided by the data source.\n     * @return {?}\n     */\n    CdkTable.prototype._observeRenderChanges = /**\n     * Set up a subscription for the data provided by the data source.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        // If no data source has been set, there is nothing to observe for changes.\n        if (!this.dataSource) {\n            return;\n        }\n        var /** @type {?} */ dataStream;\n        // Check if the datasource is a DataSource object by observing if it has a connect function.\n        // Cannot check this.dataSource['connect'] due to potential property renaming, nor can it\n        // checked as an instanceof DataSource<T> since the table should allow for data sources\n        // that did not explicitly extend DataSource<T>.\n        if ((/** @type {?} */ (this.dataSource)).connect instanceof Function) {\n            dataStream = (/** @type {?} */ (this.dataSource)).connect(this);\n        }\n        else if (this.dataSource instanceof Observable) {\n            dataStream = this.dataSource;\n        }\n        else if (Array.isArray(this.dataSource)) {\n            dataStream = of(this.dataSource);\n        }\n        if (dataStream === undefined) {\n            throw getTableUnknownDataSourceError();\n        }\n        this._renderChangeSubscription = dataStream\n            .pipe(takeUntil(this._onDestroy))\n            .subscribe(function (data) {\n            _this._data = data || [];\n            _this.renderRows();\n        });\n    };\n    /**\n     * Clears any existing content in the header row outlet and creates a new embedded view\n     * in the outlet using the header row definition.\n     * @return {?}\n     */\n    CdkTable.prototype._forceRenderHeaderRows = /**\n     * Clears any existing content in the header row outlet and creates a new embedded view\n     * in the outlet using the header row definition.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        // Clear the header row outlet if any content exists.\n        if (this._headerRowOutlet.viewContainer.length > 0) {\n            this._headerRowOutlet.viewContainer.clear();\n        }\n        this._headerRowDefs.forEach(function (def, i) { return _this._renderRow(_this._headerRowOutlet, def, i); });\n        this.updateStickyHeaderRowStyles();\n        this.updateStickyColumnStyles();\n    };\n    /**\n     * Clears any existing content in the footer row outlet and creates a new embedded view\n     * in the outlet using the footer row definition.\n     * @return {?}\n     */\n    CdkTable.prototype._forceRenderFooterRows = /**\n     * Clears any existing content in the footer row outlet and creates a new embedded view\n     * in the outlet using the footer row definition.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        // Clear the footer row outlet if any content exists.\n        if (this._footerRowOutlet.viewContainer.length > 0) {\n            this._footerRowOutlet.viewContainer.clear();\n        }\n        this._footerRowDefs.forEach(function (def, i) { return _this._renderRow(_this._footerRowOutlet, def, i); });\n        this.updateStickyFooterRowStyles();\n        this.updateStickyColumnStyles();\n    };\n    /**\n     * Adds the sticky column styles for the rows according to the columns' stick states.\n     * @param {?} rows\n     * @param {?} rowDef\n     * @return {?}\n     */\n    CdkTable.prototype._addStickyColumnStyles = /**\n     * Adds the sticky column styles for the rows according to the columns' stick states.\n     * @param {?} rows\n     * @param {?} rowDef\n     * @return {?}\n     */\n    function (rows, rowDef) {\n        var _this = this;\n        var /** @type {?} */ columnDefs = Array.from(rowDef.columns || []).map(function (c) { return ((_this._columnDefsByName.get(c))); });\n        var /** @type {?} */ stickyStartStates = columnDefs.map(function (columnDef) { return columnDef.sticky; });\n        var /** @type {?} */ stickyEndStates = columnDefs.map(function (columnDef) { return columnDef.stickyEnd; });\n        this._stickyStyler.updateStickyColumns(rows, stickyStartStates, stickyEndStates);\n    };\n    /** Gets the list of rows that have been rendered in the row outlet. */\n    /**\n     * Gets the list of rows that have been rendered in the row outlet.\n     * @param {?} rowOutlet\n     * @return {?}\n     */\n    CdkTable.prototype._getRenderedRows = /**\n     * Gets the list of rows that have been rendered in the row outlet.\n     * @param {?} rowOutlet\n     * @return {?}\n     */\n    function (rowOutlet) {\n        var /** @type {?} */ renderedRows = [];\n        for (var /** @type {?} */ i = 0; i < rowOutlet.viewContainer.length; i++) {\n            var /** @type {?} */ viewRef = (/** @type {?} */ (((rowOutlet.viewContainer.get(i)))));\n            renderedRows.push(viewRef.rootNodes[0]);\n        }\n        return renderedRows;\n    };\n    /**\n     * Get the matching row definitions that should be used for this row data. If there is only\n     * one row definition, it is returned. Otherwise, find the row definitions that has a when\n     * predicate that returns true with the data. If none return true, return the default row\n     * definition.\n     */\n    /**\n     * Get the matching row definitions that should be used for this row data. If there is only\n     * one row definition, it is returned. Otherwise, find the row definitions that has a when\n     * predicate that returns true with the data. If none return true, return the default row\n     * definition.\n     * @param {?} data\n     * @param {?} dataIndex\n     * @return {?}\n     */\n    CdkTable.prototype._getRowDefs = /**\n     * Get the matching row definitions that should be used for this row data. If there is only\n     * one row definition, it is returned. Otherwise, find the row definitions that has a when\n     * predicate that returns true with the data. If none return true, return the default row\n     * definition.\n     * @param {?} data\n     * @param {?} dataIndex\n     * @return {?}\n     */\n    function (data, dataIndex) {\n        if (this._rowDefs.length == 1) {\n            return [this._rowDefs[0]];\n        }\n        var /** @type {?} */ rowDefs = [];\n        if (this.multiTemplateDataRows) {\n            rowDefs = this._rowDefs.filter(function (def) { return !def.when || def.when(dataIndex, data); });\n        }\n        else {\n            var /** @type {?} */ rowDef = this._rowDefs.find(function (def) { return def.when && def.when(dataIndex, data); }) || this._defaultRowDef;\n            if (rowDef) {\n                rowDefs.push(rowDef);\n            }\n        }\n        if (!rowDefs.length) {\n            throw getTableMissingMatchingRowDefError(data);\n        }\n        return rowDefs;\n    };\n    /**\n     * Create the embedded view for the data row template and place it in the correct index location\n     * within the data row view container.\n     * @param {?} renderRow\n     * @param {?} renderIndex\n     * @return {?}\n     */\n    CdkTable.prototype._insertRow = /**\n     * Create the embedded view for the data row template and place it in the correct index location\n     * within the data row view container.\n     * @param {?} renderRow\n     * @param {?} renderIndex\n     * @return {?}\n     */\n    function (renderRow, renderIndex) {\n        var /** @type {?} */ rowDef = renderRow.rowDef;\n        var /** @type {?} */ context = { $implicit: renderRow.data };\n        this._renderRow(this._rowOutlet, rowDef, renderIndex, context);\n    };\n    /**\n     * Creates a new row template in the outlet and fills it with the set of cell templates.\n     * Optionally takes a context to provide to the row and cells, as well as an optional index\n     * of where to place the new row template in the outlet.\n     * @param {?} outlet\n     * @param {?} rowDef\n     * @param {?} index\n     * @param {?=} context\n     * @return {?}\n     */\n    CdkTable.prototype._renderRow = /**\n     * Creates a new row template in the outlet and fills it with the set of cell templates.\n     * Optionally takes a context to provide to the row and cells, as well as an optional index\n     * of where to place the new row template in the outlet.\n     * @param {?} outlet\n     * @param {?} rowDef\n     * @param {?} index\n     * @param {?=} context\n     * @return {?}\n     */\n    function (outlet, rowDef, index, context) {\n        if (context === void 0) { context = {}; }\n        // TODO(andrewseguin): enforce that one outlet was instantiated from createEmbeddedView\n        outlet.viewContainer.createEmbeddedView(rowDef.template, context, index);\n        for (var _a = 0, _b = this._getCellTemplates(rowDef); _a < _b.length; _a++) {\n            var cellTemplate = _b[_a];\n            if (CdkCellOutlet.mostRecentCellOutlet) {\n                CdkCellOutlet.mostRecentCellOutlet._viewContainer.createEmbeddedView(cellTemplate, context);\n            }\n        }\n        this._changeDetectorRef.markForCheck();\n    };\n    /**\n     * Updates the index-related context for each row to reflect any changes in the index of the rows,\n     * e.g. first/last/even/odd.\n     * @return {?}\n     */\n    CdkTable.prototype._updateRowIndexContext = /**\n     * Updates the index-related context for each row to reflect any changes in the index of the rows,\n     * e.g. first/last/even/odd.\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ viewContainer = this._rowOutlet.viewContainer;\n        for (var /** @type {?} */ renderIndex = 0, /** @type {?} */ count = viewContainer.length; renderIndex < count; renderIndex++) {\n            var /** @type {?} */ viewRef = /** @type {?} */ (viewContainer.get(renderIndex));\n            var /** @type {?} */ context = /** @type {?} */ (viewRef.context);\n            context.count = count;\n            context.first = renderIndex === 0;\n            context.last = renderIndex === count - 1;\n            context.even = renderIndex % 2 === 0;\n            context.odd = !context.even;\n            if (this.multiTemplateDataRows) {\n                context.dataIndex = this._renderRows[renderIndex].dataIndex;\n                context.renderIndex = renderIndex;\n            }\n            else {\n                context.index = this._renderRows[renderIndex].dataIndex;\n            }\n        }\n    };\n    /**\n     * Gets the column definitions for the provided row def.\n     * @param {?} rowDef\n     * @return {?}\n     */\n    CdkTable.prototype._getCellTemplates = /**\n     * Gets the column definitions for the provided row def.\n     * @param {?} rowDef\n     * @return {?}\n     */\n    function (rowDef) {\n        var _this = this;\n        if (!rowDef || !rowDef.columns) {\n            return [];\n        }\n        return Array.from(rowDef.columns, function (columnId) {\n            var /** @type {?} */ column = _this._columnDefsByName.get(columnId);\n            if (!column) {\n                throw getTableUnknownColumnError(columnId);\n            }\n            return rowDef.extractCellTemplate(column);\n        });\n    };\n    /**\n     * Adds native table sections (e.g. tbody) and moves the row outlets into them.\n     * @return {?}\n     */\n    CdkTable.prototype._applyNativeTableSections = /**\n     * Adds native table sections (e.g. tbody) and moves the row outlets into them.\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ sections = [\n            { tag: 'thead', outlet: this._headerRowOutlet },\n            { tag: 'tbody', outlet: this._rowOutlet },\n            { tag: 'tfoot', outlet: this._footerRowOutlet },\n        ];\n        for (var _a = 0, sections_1 = sections; _a < sections_1.length; _a++) {\n            var section = sections_1[_a];\n            // @breaking-change 8.0.0 remove the `|| document` once the `_document` is a required param.\n            var /** @type {?} */ documentRef = this._document || document;\n            var /** @type {?} */ element = documentRef.createElement(section.tag);\n            element.appendChild(section.outlet.elementRef.nativeElement);\n            this._elementRef.nativeElement.appendChild(element);\n        }\n    };\n    /**\n     * Forces a re-render of the data rows. Should be called in cases where there has been an input\n     * change that affects the evaluation of which rows should be rendered, e.g. toggling\n     * `multiTemplateDataRows` or adding/removing row definitions.\n     * @return {?}\n     */\n    CdkTable.prototype._forceRenderDataRows = /**\n     * Forces a re-render of the data rows. Should be called in cases where there has been an input\n     * change that affects the evaluation of which rows should be rendered, e.g. toggling\n     * `multiTemplateDataRows` or adding/removing row definitions.\n     * @return {?}\n     */\n    function () {\n        this._dataDiffer.diff([]);\n        this._rowOutlet.viewContainer.clear();\n        this.renderRows();\n        this.updateStickyColumnStyles();\n    };\n    /**\n     * Checks if there has been a change in sticky states since last check and applies the correct\n     * sticky styles. Since checking resets the \"dirty\" state, this should only be performed once\n     * during a change detection and after the inputs are settled (after content check).\n     * @return {?}\n     */\n    CdkTable.prototype._checkStickyStates = /**\n     * Checks if there has been a change in sticky states since last check and applies the correct\n     * sticky styles. Since checking resets the \"dirty\" state, this should only be performed once\n     * during a change detection and after the inputs are settled (after content check).\n     * @return {?}\n     */\n    function () {\n        var /** @type {?} */ stickyCheckReducer = function (acc, d) {\n            return acc || d.hasStickyChanged();\n        };\n        // Note that the check needs to occur for every definition since it notifies the definition\n        // that it can reset its dirty state. Using another operator like `some` may short-circuit\n        // remaining definitions and leave them in an unchecked state.\n        if (this._headerRowDefs.reduce(stickyCheckReducer, false)) {\n            this.updateStickyHeaderRowStyles();\n        }\n        if (this._footerRowDefs.reduce(stickyCheckReducer, false)) {\n            this.updateStickyFooterRowStyles();\n        }\n        if (Array.from(this._columnDefsByName.values()).reduce(stickyCheckReducer, false)) {\n            this.updateStickyColumnStyles();\n        }\n    };\n    /**\n     * Creates the sticky styler that will be used for sticky rows and columns. Listens\n     * for directionality changes and provides the latest direction to the styler. Re-applies column\n     * stickiness when directionality changes.\n     * @return {?}\n     */\n    CdkTable.prototype._setupStickyStyler = /**\n     * Creates the sticky styler that will be used for sticky rows and columns. Listens\n     * for directionality changes and provides the latest direction to the styler. Re-applies column\n     * stickiness when directionality changes.\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        var /** @type {?} */ direction = this._dir ? this._dir.value : 'ltr';\n        this._stickyStyler = new StickyStyler(this._isNativeHtmlTable, \n        // @breaking-change 8.0.0 remove the null check for `this._platform`.\n        this.stickyCssClass, direction, this._platform ? this._platform.isBrowser : true);\n        (this._dir ? this._dir.change : of())\n            .pipe(takeUntil(this._onDestroy))\n            .subscribe(function (value) {\n            _this._stickyStyler.direction = value;\n            _this.updateStickyColumnStyles();\n        });\n    };\n    CdkTable.decorators = [\n        { type: Component, args: [{selector: 'cdk-table, table[cdk-table]',\n                    exportAs: 'cdkTable',\n                    template: CDK_TABLE_TEMPLATE,\n                    host: {\n                        'class': 'cdk-table',\n                    },\n                    encapsulation: ViewEncapsulation.None,\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                },] },\n    ];\n    /** @nocollapse */\n    CdkTable.ctorParameters = function () { return [\n        { type: IterableDiffers, },\n        { type: ChangeDetectorRef, },\n        { type: ElementRef, },\n        { type: undefined, decorators: [{ type: Attribute, args: ['role',] },] },\n        { type: Directionality, decorators: [{ type: Optional },] },\n        { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] },] },\n        { type: Platform, },\n    ]; };\n    CdkTable.propDecorators = {\n        \"trackBy\": [{ type: Input },],\n        \"dataSource\": [{ type: Input },],\n        \"multiTemplateDataRows\": [{ type: Input },],\n        \"_rowOutlet\": [{ type: ViewChild, args: [DataRowOutlet,] },],\n        \"_headerRowOutlet\": [{ type: ViewChild, args: [HeaderRowOutlet,] },],\n        \"_footerRowOutlet\": [{ type: ViewChild, args: [FooterRowOutlet,] },],\n        \"_contentColumnDefs\": [{ type: ContentChildren, args: [CdkColumnDef,] },],\n        \"_contentRowDefs\": [{ type: ContentChildren, args: [CdkRowDef,] },],\n        \"_contentHeaderRowDefs\": [{ type: ContentChildren, args: [CdkHeaderRowDef,] },],\n        \"_contentFooterRowDefs\": [{ type: ContentChildren, args: [CdkFooterRowDef,] },],\n    };\n    return CdkTable;\n}());\n/**\n * Utility function that gets a merged list of the entries in a QueryList and values of a Set.\n * @template T\n * @param {?} queryList\n * @param {?} set\n * @return {?}\n */\nfunction mergeQueryListAndSet(queryList, set) {\n    return queryList.toArray().concat(Array.from(set));\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nvar /** @type {?} */ EXPORTED_DECLARATIONS = [\n    CdkTable,\n    CdkRowDef,\n    CdkCellDef,\n    CdkCellOutlet,\n    CdkHeaderCellDef,\n    CdkFooterCellDef,\n    CdkColumnDef,\n    CdkCell,\n    CdkRow,\n    CdkHeaderCell,\n    CdkFooterCell,\n    CdkHeaderRow,\n    CdkHeaderRowDef,\n    CdkFooterRow,\n    CdkFooterRowDef,\n    DataRowOutlet,\n    HeaderRowOutlet,\n    FooterRowOutlet,\n];\nvar CdkTableModule = /** @class */ (function () {\n    function CdkTableModule() {\n    }\n    CdkTableModule.decorators = [\n        { type: NgModule, args: [{\n                    imports: [CommonModule],\n                    exports: EXPORTED_DECLARATIONS,\n                    declarations: EXPORTED_DECLARATIONS\n                },] },\n    ];\n    return CdkTableModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\nexport { DataRowOutlet, HeaderRowOutlet, FooterRowOutlet, CDK_TABLE_TEMPLATE, CdkTable, CdkCellDef, CdkHeaderCellDef, CdkFooterCellDef, CdkColumnDefBase, _CdkColumnDefBase, CdkColumnDef, BaseCdkCell, CdkHeaderCell, CdkFooterCell, CdkCell, CDK_ROW_TEMPLATE, BaseRowDef, CdkHeaderRowDefBase, _CdkHeaderRowDefBase, CdkHeaderRowDef, CdkFooterRowDefBase, _CdkFooterRowDefBase, CdkFooterRowDef, CdkRowDef, CdkCellOutlet, CdkHeaderRow, CdkFooterRow, CdkRow, CdkTableModule, STICKY_DIRECTIONS, StickyStyler, mixinHasStickyInput };\n//# sourceMappingURL=table.es5.js.map\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var baseIsMap = require('./_baseIsMap'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var Symbol = require('./_Symbol'),\n    arrayMap = require('./_arrayMap'),\n    isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n"],"sourceRoot":""}

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists