{"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","webpack:///./src/common/uploads/validation/validations/allowed-extensions-validation.ts.pre-build-optimizer.js","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:///./src/common/core/ui/no-results-message/no-results-message.component.ts","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/@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:///./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","webpack:///./src/common/uploads/validation/validations/blocked-extensions-validation.ts.pre-build-optimizer.js","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/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/models/drive-page.ts.pre-build-optimizer.js","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","webpack:///./src/app/drive/uploads/drive-upload-validator.ts.pre-build-optimizer.js","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/common/core/utils/kebab-case.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/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/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/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:///./src/app/drive/interactions/drop-targets/folder-drop-target.directive.ts","webpack:///./src/app/drive/interactions/drop-targets/folder-drop-target.directive.ts.pre-build-optimizer.js","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/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/entries/available-sorts.ts","webpack:///./src/app/drive/header/entries-sort-button/entries-sort-button.component.ts.pre-build-optimizer.js","webpack:///./src/app/drive/header/entries-sort-button/entries-sort-button.component.ts","webpack:///./src/app/drive/header/entries-sort-button/entries-sort-button.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/header/entries-sort-button/entries-sort-button.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/header/entries-sort-button/entries-sort-button.component.html","webpack:///./src/common/core/ui/infinite-scroll/infinite.scroll.ts","webpack:///./src/app/drive/preview/folder-preview/folder-preview.component.ts","webpack:///./src/app/drive/preview/folder-preview/folder-preview.component.ts.pre-build-optimizer.js","webpack:///./src/app/drive/preview/folder-preview/folder-preview.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/preview/folder-preview/folder-preview.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/preview/folder-preview/folder-preview.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","webpack:///./src/common/file-preview/default-preview/default-preview.component.ts.pre-build-optimizer.js","webpack:///./src/common/file-preview/text-preview/text-preview.component.ts","webpack:///./src/common/file-preview/text-preview/text-preview.component.ts.pre-build-optimizer.js","webpack:///./src/common/file-preview/audio-preview/audio-preview.component.ts","webpack:///./src/common/file-preview/audio-preview/audio-preview.component.ts.pre-build-optimizer.js","webpack:///./src/common/file-preview/video-preview/video-preview.component.ts","webpack:///./src/common/file-preview/video-preview/video-preview.component.ts.pre-build-optimizer.js","webpack:///./src/common/file-preview/image-preview/image-preview.component.ts","webpack:///./src/common/file-preview/image-preview/image-preview.component.ts.pre-build-optimizer.js","webpack:///./src/common/file-preview/pdf-preview/pdf-preview.component.ts","webpack:///./src/common/file-preview/pdf-preview/pdf-preview.component.ts.pre-build-optimizer.js","webpack:///./src/common/file-preview/google-docs-viewer/google-docs-viewer.component.ts","webpack:///./src/common/file-preview/google-docs-viewer/google-docs-viewer.component.ts.pre-build-optimizer.js","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.pre-build-optimizer.js","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.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:///./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:///./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:///./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/common/core/ui/enter-keybind.directive.ts","webpack:///./src/app/drive/details-sidebar/details-panel/entry-description-panel/entry-description-panel.component.ts","webpack:///./src/app/drive/details-sidebar/details-panel/entry-description-panel/entry-description-panel.component.ts.pre-build-optimizer.js","webpack:///./src/app/drive/details-sidebar/details-panel/entry-description-panel/entry-description-panel.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/app/drive/details-sidebar/details-panel/entry-description-panel/entry-description-panel.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/app/drive/details-sidebar/details-panel/entry-description-panel/entry-description-panel.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","webpack:///./src/app/drive/context-actions/actions/trash-actions.ts.pre-build-optimizer.js","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/share-link-socially.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","webpack:///./src/app/drive/context-actions/actions/shares-actions.ts.pre-build-optimizer.js","webpack:///./src/app/drive/context-actions/actions/folder-actions.ts","webpack:///./src/app/drive/context-actions/actions/folder-actions.ts.pre-build-optimizer.js","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","webpack:///./src/app/drive/context-actions/actions/entry-actions.ts.pre-build-optimizer.js","webpack:///./src/app/drive/context-actions/actions/trash-page-actions.ts","webpack:///./src/app/drive/context-actions/actions/trash-page-actions.ts.pre-build-optimizer.js","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/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/app/drive/interactions/drive-infinite-scroll.directive.ts","webpack:///./src/app/drive/interactions/drive-infinite-scroll.directive.ts.pre-build-optimizer.js","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/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/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/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/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/common/file-preview/google-docs-viewer/google-docs-viewer.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/common/file-preview/google-docs-viewer/google-docs-viewer.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/common/file-preview/google-docs-viewer/google-docs-viewer.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:///./src/common/core/ui/no-results-message/no-results-message.component.scss.ngstyle.js.pre-build-optimizer.js","webpack:///./src/common/core/ui/no-results-message/no-results-message.component.ngfactory.js.pre-build-optimizer.js","webpack:///./src/common/core/ui/no-results-message/no-results-message.component.html","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:///(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/fullscreen-overlay-scroll-strategy.ts","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/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/validation/default-upload-validator.ts.pre-build-optimizer.js","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__","MatChipBase","_elementRef","CHIP_ATTRIBUTE_NAMES","_super","_ngZone","platform","globalRippleOptions","_this","call","_hasFocus","chipListSelectable","_selected","_selectable","_removable","_onFocus","_onBlur","selectionChange","destroyed","removed","_addHostClassName","_chipRipple","setupTriggerEvents","nativeElement","rippleConfig","Object","defineProperty","prototype","get","disabled","disableRipple","enumerable","configurable","coercedValue","_dispatchSelectionChange","undefined","_value","selectable","selected","toString","_i","CHIP_ATTRIBUTE_NAMES_1","length","attr","hasAttribute","tagName","toLowerCase","classList","add","ngOnDestroy","emit","chip","_removeTriggerEvents","select","deselect","selectViaInteraction","toggleSelected","isUserInput","focus","next","remove","removable","_handleClick","event","preventDefault","stopPropagation","_handleKeydown","keyCode","_blur","onStable","asObservable","pipe","subscribe","run","source","_parentChip","MatChipListBase","_defaultErrorStateMatcher","_parentForm","_parentFormGroup","ngControl","_MatChipListMixinBase","nextUniqueId","MatChipListChange","_changeDetectorRef","_dir","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","_hasFocusedChip","chips","_syncChipsDisabledState","forEach","apply","map","ngAfterContentInit","_keyManager","withWrap","withVerticalOrientation","withHorizontalOrientation","dir","tabOut","setTimeout","markForCheck","changes","Promise","resolve","then","_resetChips","_updateTabIndex","_updateFocusForDestroyedChips","ngOnInit","ngDoCheck","updateErrorState","complete","_dropSubscriptions","registerInput","inputElement","setDescribedByIds","ids","_ariaDescribedby","join","_setSelectionByValue","registerOnChange","registerOnTouched","setDisabledState","isDisabled","onContainerClick","_originatesFromChip","setFirstItemActive","_focusInput","_keydown","target","_isInputEmpty","setLastItemActive","contains","onKeydown","newChipIndex","Math","min","setActiveItem","_isValidIndex","index","element","nodeName","_clearSelection","Array","isArray","currentValue","_selectValue","_sortValues","correspondingChip","find","skip","clear","_propagateChanges","fallbackValue","valueToEmit","_markAsTouched","_listenToChipsFocus","_listenToChipsSelection","_listenToChipsRemoved","_chipFocusSubscription","unsubscribe","_chipBlurSubscription","_chipSelectionSubscription","_chipRemoveSubscription","chipSelectionChanges","isSelected","chipFocusChanges","chipIndex","toArray","indexOf","updateActiveItemIndex","chipBlurChanges","chipRemoveChanges","currentElement","parentElement","some","nextUniqueId$1","_defaultOptions","_addOnBlur","separatorKeyCodes","chipEnd","_inputElement","_chipList","ngOnChanges","_emitChipEnd","addOnBlur","_focus","_isSeparatorKey","input","_onInput","separators","has","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","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_FACTORY","MAT_AUTOCOMPLETE_SCROLL_STRATEGY","MatAutocompleteTrigger","_angular_cdk_a11y__WEBPACK_IMPORTED_MODULE_1__","_angular_cdk_coercion__WEBPACK_IMPORTED_MODULE_2__","_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","MatAutocompleteSelectedEvent","option","MatAutocompleteBase","_MatAutocompleteMixinBase","providedIn","factory","autoActiveFirstOption","defaults","showPanel","_isOpen","displayWith","optionSelected","opened","closed","_classList","_autoActiveFirstOption","split","className","trim","_setVisibility","_setScrollTop","scrollTop","panel","_getScrollTop","_emitSelectEvent","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","_scrollStrategy","removeEventListener","_destroyPanel","openPanel","_attachOverlay","_floatLabel","closePanel","_resetLabel","_overlayRef","hasAttached","detach","_closingActionsSubscription","detectChanges","updatePosition","_getOutsideClickStream","detachments","activeItem","clickTarget","formField","overlayElement","_setTriggerValue","activeOption","_selectViaInteraction","_resetActiveItem","prevActiveItem","isArrowKey","_canOpen","_scrollToOption","_handleInput","type","parseFloat","_previousValue","_handleFocus","shouldAnimate","floatLabel","_animateAndLockLabel","activeItemIndex","labelCount","optionGroups","newScrollPosition","_subscribeToClosingActions","firstStable","optionChanges","_positionStrategy","reapplyLastPosition","panelClosingActions","_setValueAndClose","dispose","toDisplay","inputValue","_control","_clearPreviousSelectedOption","overlayRef","getConfig","setOrigin","_getConnectedElement","updateSize","width","_getPanelWidth","_portal","template","create","_getOverlayConfig","keydownEvents","altKey","attach","wasOpen","positionStrategy","_getOverlayPosition","direction","flexibleConnectedTo","withFlexibleDimensions","withPush","withPositions","originX","originY","overlayX","overlayY","panelClass","connectedTo","elementRef","getConnectedOverlayOrigin","panelWidth","_getHostWidth","getBoundingClientRect","readOnly","stringToPath","freeExports","nodeType","freeModule","Buffer","allocUnsafe","buffer","isDeep","slice","copy","AllowedExtensionsValidation","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__","rxjs__WEBPACK_IMPORTED_MODULE_9__","stickyCssClass","columnDef","cssClassFriendlyName","MAX_SAFE_INTEGER","initialData","_renderData","_filter","_internalPageChanges","_renderChangesSubscription","sortingDataAccessor","sortHeaderId","numberValue","Number","sortData","sort","active","a","b","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","newPageIndex","connect","disconnect","baseClone","CLONE_DEEP_FLAG","array","offset","NoResultsMessageComponent","settings","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","memoizeCapped","rePropName","reEscapeChar","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","currentUser","lazyLoader","isSubscribed","randomId","adCode","slot","appendAdHtml","loadAdScripts","executeAdJavascript","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","MAT_TABS_CONFIG","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_14__","_angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_15__","_angular_cdk_a11y__WEBPACK_IMPORTED_MODULE_16__","_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_17__","left","offsetLeft","offsetWidth","_inkBarPositioner","alignToElement","show","requestAnimationFrame","_setStyles","visibility","hide","positions","inkBar","MatTabBase","textLabel","_contentPortal","_stateChanges","origin","isActive","_explicitContent","_implicitContent","componentFactoryResolver","viewContainerRef","_host","_centeringSub","_leavingSub","_beforeCentering","_isCenterPosition","_position","isCentering","_content","_afterLeavingCenter","changeDetectorRef","_dirChangeSubscription","_translateTabComplete","_onCentering","_onCentered","animationDuration","_computePositionAnimationState","x","y","fromState","toState","_positionIndex","_computePositionFromOrigin","_onTranslateTabStarted","clientHeight","_getLayoutDirection","MatTabLabelWrapperBase","getOffsetLeft","getOffsetWidth","passiveEventListenerOptions","passive","MatTabHeaderBase","_platform","_scrollDistance","_selectedIndexChanged","_showPaginationControls","_disableScrollAfter","_disableScrollBefore","_stopScrolling","_selectedIndex","selectFocusedIndex","indexFocused","bindEvent","_stopInterval","ngAfterContentChecked","_tabLabelCount","_labelWrappers","updatePagination","_scrollToLabel","_checkScrollingControls","_alignInkBarToSelectedTab","_scrollDistanceChanged","_updateTabScrollPosition","focusIndex","dirChange","resize","realign","updateActiveItem","newFocusIndex","_setTabFocus","_previousPaginator","_handlePaginatorPress","_nextPaginator","_onContentChanges","_currentTextContent","zoneCallback","_checkPaginationEnabled","tab","tabIndex","containerEl","_tabListContainer","scrollLeft","scrollWidth","scrollDistance","translateX","_tabList","round","TRIDENT","EDGE","_scrollTo","_scrollHeader","_handlePaginatorClick","labelIndex","selectedLabel","labelBeforePos","labelAfterPos","viewLength","beforeVisiblePos","afterVisiblePos","isEnabled","_getMaxScrollDistance","selectedLabelWrapper","selectedIndex","_inkBar","distance","maxScrollDistance","max","nextId","MatTabChangeEvent","MatTabGroupBase","defaultConfig","_indexToSelect","_tabBodyWrapperHeight","_tabsSubscription","_tabLabelSubscription","_dynamicHeight","headerPosition","selectedIndexChange","focusChange","animationDone","selectedTabChange","_groupId","_animationDuration","_backgroundColor","backgroundColor","indexToSelect","_clampTabIndex","isFirstRun_1","_createChangeEvent","_tabs","_subscribeToTabLabels","tabs","realignInkBar","_tabHeader","_focusChanged","_getTabLabelId","_getTabContentId","_setTabBodyWrapperHeight","tabHeight","wrapper","_tabBodyWrapper","height","offsetHeight","_removeTabBodyWrapperHeight","tabHeader","_getTabIndex","idx","MatTabNavBase","_onDestroy","updateActiveLink","_activeLinkChanged","_alignInkBar","activeTab","_tabLinks","_activeLinkElement","overArg","getPrototypeOf","RenderType_MatProgressBar","View_MatProgressBar_0","_angular_common__WEBPACK_IMPORTED_MODULE_2__","encapsulation","styles","_l","_primaryValueBar","ngStyle","_ck","_v","_co","component","_bufferTransform","_primaryTransform","progressbarId","_rectangleFillValue","isFunction","RenderType_MatOption","View_MatOption_0","RenderType_MatPseudoCheckbox","View_MatPseudoCheckbox_0","_angular_material_core__WEBPACK_IMPORTED_MODULE_1__","_angular_cdk_platform__WEBPACK_IMPORTED_MODULE_4__","_angular_common__WEBPACK_IMPORTED_MODULE_5__","_angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_6__","View_MatOption_1","state","_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","_angular_cdk_keycodes__WEBPACK_IMPORTED_MODULE_3__","_angular_cdk_scrolling__WEBPACK_IMPORTED_MODULE_4__","_angular_core__WEBPACK_IMPORTED_MODULE_5__","rxjs_operators__WEBPACK_IMPORTED_MODULE_14__","rxjs_operators__WEBPACK_IMPORTED_MODULE_15__","throwMatDuplicatedDrawerError","_container","scrollDispatcher","ngZone","_contentMarginChanges","_focusTrapFactory","_focusMonitor","_doc","_elementFocusedBeforeDrawerWasOpened","_enableAnimations","_mode","_disableClose","_autoFocus","_animationStarted","_animationEnd","_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","defaultAutosize","viewportRuler","backdropClick","_doCheckSubject","_contentMargins","right","_validateDrawers","_updateContentMargins","_autosize","_start","_end","_backdropOverride","_userContent","_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","MAT_SORT_HEADER_INTL_PROVIDER_FACTORY","MatSortHeaderIntl","MatSort","_angular_core__WEBPACK_IMPORTED_MODULE_2__","MatSortBase","sortables","start","_direction","getSortInvalidDirectionError","_disableClear","v","register","sortable","deregister","delete","getNextSortDirection","disableClear","sortOrder","sortDirectionCycle","reverse","nextDirectionIndex","_markInitialized","sortButtonLabel","ngInjectableDef","token","parentIntl","MatSortHeaderBase","_intl","_columnDef","_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","View_MatAutocomplete_1","klass","ngClass","FOLDERS_API_ROUTES","ROOT_FOLDER","hash","DRIVE_PAGE_NAMES","FOLDER","RECENT","TRASH","SHARES","STARRED","ROOT","SEARCH","DrivePage","viewName","folder","folderHash","hasActions","sortColumn","sortDirection","queryParams","drive_page_DriveFolderPage","DriveFolderPage","tslib_es6","RECENT_PAGE","disableSort","recentOnly","SEARCH_PAGE","SHARES_PAGE","sharedOnly","TRASH_PAGE","deletedOnly","STARRED_PAGE","starredOnly","ROOT_FOLDER_PAGE","FOLDER_PAGE","__assign","assign","s","n","p","events_RecentEntriesPageOpened","RecentEntriesPageOpened","orderBy","events_FolderPageOpened","FolderPageOpened","events_SharesFolderOpened","SharesFolderOpened","events_TrashPageOpened","TrashPageOpened","events_SearchPageOpened","SearchPageOpened","events_StarredPageOpened","StarredPageOpened","EntriesSelectedViaDrag","EntrySelectedViaContextMenu","EntryTapped","ctrlKey","EntryDoubleTapped","FileDeleteSuccess","deletedFiles","EntryContextMenuOpened","NewFolderCreated","EntryRenamed","newName","StartedDragging","StoppedDragging","MoveEntriesSuccess","destination","oldLocation","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","UpdateEntryDescription","description","drive_context_menu_component_DriveContextMenuComponent","store","contextMenu","dispatch","DRIVE_CONTEXT_MENUS","file_preview_overlay_component_FilePreviewOverlayComponent","FilePreviewOverlayComponent","previewFiles","bindToDownload","previewContainer","closest","downloadSub","openContextMenu","optionsButton","getCurrent","closeOverlay","canDownload","every","users","u","owns_entry","entry_permissions","download","getAllEntries","LoadingToastMessages","folders_api_service_FoldersApiService","FoldersApiService","http","getAll","GET_ALL","getAllForCurrentUser","parent_id","post","CREATE","getByHash","core","app_http_client_service","current_user","drive_entry_api_service_DriveEntryApiService","DriveEntryApiService","getEntriesForFolder","getCurrentUserEntries","userId","update","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_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","tags","onlyFoldersSelected","entriesEmpty","multipleEntriesSelected","activeFolder","selectedFolderId","detailsOpen","canLoadMoreEntries","userSpaceUsed","userSpaceAvailable","spaceUsedPercent","spaceUsed","spaceAvail","userHasPermission","permission","folderUser","userOwnsActiveFolder","userCanEditSelectedFolder","userCanEditSelectedEntries","edit","canUpload","userCanEditFolder","loadUserFolders","ctx","tap","response","buildFolderTree","action","hashTable","tree","len","getState","children","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","canMoveEntriesTo","minimal","finalize","moveEntriesSuccess","toggleViewMode","toggleDetailsSidebar","toggleSidebar","addEntries","currentEntries","newEntries","newSize","sum","file_size","uploadFiles","enoughSpaceLeftToUpload","parentId","httpParams","catchError","parent","newEntry","flatFolders_1","f","deleteTrashedEntriesForever","deleteForever","restoreTrashedEntries","restoredEntries","removeTag","removeSelectedEntries","copySelectedEntries","copyEntries","openUploadWindow","directory","open_upload_window","loadUserSpaceUsage","updateEntries","mainEntries","updatedEntry","mainIndex","updateEntryDescription","fileEntry","breakpointChanged","setCurrentUser","resetState","setState","folderId","movingEntries","startsWith","ngxs_store","cancelUncompleted","User","Boolean","overlay_handler_OverlayHandler","OverlayHandler","actions$","donwlod_handler_DownloadHandler","DownloadHandler","url","getDownloadUrl","href","click","hashes","getEntryHashes","base","getBaseUrl","shareable_links_api_service_ShareableLinksApiService","ShareableLinksApiService","findByEntryId","findByHash","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","replacements","count","onAction","oldName","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","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","getType","snake_case","RenderType_FileIconComponent","View_FileIconComponent_0","FileThumbnailComponent","urls","getPreviewUrl","thumbnail","getFolderIcon","RenderType_FileThumbnailComponent","View_FileThumbnailComponent_1","View_FileThumbnailComponent_2","View_FileThumbnailComponent_0","FilesGridItemComponent","driveEntry","RenderType_FilesGridItemComponent","View_FilesGridItemComponent_0","ContextMenuDirective","_availableMenus","disableContextMenu","availableMenus","getMenuComponent","getMenuData","ContextMenuRef","attachments","backdropElement","contextMenuElement","CONTEXT_MENU_DATA","context_menu_service_ContextMenu","ContextMenu","events","fesm5_router","createOverlay","portal_es5","portal","bindEventsToOverlay","removeLastOrigin","getMenuPositionStrategy","backdropClass","createOriginFromEvent","primary","lastOrigin","EventTarget","clientY","offsetY","clientX","offsetX","overlay_es5","AVAILABLE_CONTEXT_MENUS","folder_drop_target_directive_FolderDropTargetDirective","FolderDropTargetDirective","canDrop","executeAction","BaseDropTarget","subs","onDragStart","onDragEnd","enter","fromEvent","onDragEnter","leave","onDragLeave","classes","removeDragOverClass","sub","Observable","FilesGridComponent","disableInteractions","RenderType_FilesGridComponent","View_FilesGridComponent_1","currVal_2","context","$implicit","fileId","View_FilesGridComponent_0","ngForOf","ngForTrackBy","files_list_component_FilesListComponent","FilesListComponent","isStarred","RenderType_FilesListComponent","View_FilesListComponent_1","table_es5","esm5_table_es5","View_FilesListComponent_2","View_FilesListComponent_3","sort_typings_index_ngfactory","sort_es5","View_FilesListComponent_5","_handleTouchend","tooltip_es5","scrolling_es5","bidi_es5","platform_browser","View_FilesListComponent_4","View_FilesListComponent_6","View_FilesListComponent_7","currVal_0","updated_at","View_FilesListComponent_8","View_FilesListComponent_9","View_FilesListComponent_10","table_typings_index_ngfactory","View_FilesListComponent_11","currVal_1","View_FilesListComponent_0","translate_pipe","formatted_date_pipe","formatted_file_size_pipe","dataSource","_contentColumnDefs","_contentRowDefs","_contentHeaderRowDefs","_contentFooterRowDefs","cell","headerCell","footerCell","columns","currVal_6","currVal_7","AVAILABLE_SORTS","entries_sort_button_component_assign","DEFAULT_VALUE","column","entries_sort_button_component_EntriesSortButtonComponent","EntriesSortButtonComponent","btnDisabled","availableSorts","sort$","changeSort","changeDirection","getSortViewName","RenderType_EntriesSortButtonComponent","View_EntriesSortButtonComponent_2","_checkDisabled","_handleMouseEnter","menu_typings_index_ngfactory","menu_es5","role","_highlighted","_triggersSubmenu","View_EntriesSortButtonComponent_1","_handleMousedown","menu","items","lazyContent","menuOpen","currVal_3","View_EntriesSortButtonComponent_0","infinite_scroll_InfiniteScroll","InfiniteScroll","threshold","scrollSub","getScrollContainer","capture","debounceTime","onScroll","canLoadMore","isLoading","parseInt","scrollY","innerHeight","scrollHeight","documentElement","loadMoreItems","folder_preview_component_FolderPreviewComponent","FolderPreviewComponent","linkApi","loading$","viewMode$","breadcrumb$","pagination$","allFolders","sortFormControl","loadChildren","generateBreadcrumb","setPagination","folderChildren","openPreviewOverlay","ent","activeEntry","hideMoreOptionsBtn","getEntry","node","dataset","onTap","isSubFolder","makeLinkHash","subFolder","replaceChildren","order","withEntries","pagination","RenderType_FolderPreviewComponent","View_FolderPreviewComponent_1","View_FolderPreviewComponent_3","View_FolderPreviewComponent_2","last","View_FolderPreviewComponent_4","View_FolderPreviewComponent_5","View_FolderPreviewComponent_7","View_FolderPreviewComponent_8","View_FolderPreviewComponent_9","no_results_message_component_ngfactory","no_results_message_component","View_FolderPreviewComponent_6","ngIfElse","View_FolderPreviewComponent_0","filesContainer","material_navbar_component_ngfactory","material_navbar_component","breakpoints_service","loading_indicator_component_ngfactory","loading_indicator_component","isVisible","allow_download","transparent","View_FolderPreviewComponent_Host_0","overlay_panel_service","FolderPreviewComponentNgFactory","file_preview_toolbar_component_FilePreviewToolbarComponent","FilePreviewToolbarComponent","showLogo","disableDownload","showCloseButton","downloadFiles","CURRENT_PREVIEW_FILE","base_file_preview_BaseFilePreview","BaseFilePreview","sanitizer","getSrc","getSafeSrc","bypassSecurityTrustResourceUrl","getContents","responseType","default_preview_component_DefaultPreviewComponent","DefaultPreviewComponent","text_preview_component_TextPreviewComponent","TextPreviewComponent","content$","fileTooLarge$","loadFileContents","audio_preview_component_AudioPreviewComponent","AudioPreviewComponent","invalidMedia","canPlayVideo","player","src","play","canPlayType","mime","playerEl","video_preview_component_VideoPreviewComponent","VideoPreviewComponent","image_preview_component_ImagePreviewComponent","ImagePreviewComponent","pdf_preview_component_PdfPreviewComponent","PdfPreviewComponent","google_docs_viewer_component_GoogleDocsViewerComponent","GoogleDocsViewerComponent","showDefaultPreview$","showDefaultPreview","iframe","onload","clearTimeout","timeoutRef","stopLoading","getIframeSrc","catch","openInNewWindow","location","reject","previewUrl","getGoogleDocsUrl","preview_token","encodeURIComponent","AVAILABLE_PREVIEWS","available_previews_DefaultPreviews","video","audio","image","pdf","spreadsheet","powerPoint","word","preview_files_service_PreviewFilesService","PreviewFilesService","availablePreviews","Subject","getPortal","showNext","haveNext","updateMeta","updatePortal","showPrevious","havePrevious","newPointer","oldPointer","pointer","total","createInjector","activeFile","injectionTokens","RenderType_FilePreviewToolbarComponent","View_FilePreviewToolbarComponent_1","View_FilePreviewToolbarComponent_3","View_FilePreviewToolbarComponent_2","View_FilePreviewToolbarComponent_5","View_FilePreviewToolbarComponent_4","onClick","button","metaKey","shiftKey","routerLink","View_FilePreviewToolbarComponent_0","RenderType_AdHostComponent","View_AdHostComponent_0","PreviewContainerComponent","listenForDownloadClick","comp","instance","RenderType_PreviewContainerComponent","View_PreviewContainerComponent_2","View_PreviewContainerComponent_1","attached","View_PreviewContainerComponent_0","link_preview_container_component_assign","link_preview_container_component_LinkPreviewContainerComponent","LinkPreviewContainerComponent","route","data$","passwordPanelVisible$","setBackgroundClass","togglePasswordPanel","showPreview","import","setValidPassword","RenderType_LinkPreviewContainerComponent","View_LinkPreviewContainerComponent_2","View_LinkPreviewContainerComponent_5","View_LinkPreviewContainerComponent_4","entryAlreadyImported$","View_LinkPreviewContainerComponent_7","_haltDisabledEvents","View_LinkPreviewContainerComponent_8","View_LinkPreviewContainerComponent_6","ad_host_component","lazy_loader_service","View_LinkPreviewContainerComponent_3","View_LinkPreviewContainerComponent_1","View_LinkPreviewContainerComponent_0","View_LinkPreviewContainerComponent_Host_0","LinkPreviewContainerComponentNgFactory","SEARCH_FILE_TYPES","main_searchbar_component_MainSearchbarComponent","MainSearchbarComponent","driveApi","defaultResults","formControl","results","displayFn","lastQuery","setDefaultResults","distinctUntilChanged","q","switchMap","resetForm","of","per_page","entryType","RenderType_MainSearchbarComponent","View_MainSearchbarComponent_1","View_MainSearchbarComponent_3","display_name","View_MainSearchbarComponent_4","View_MainSearchbarComponent_2","core_typings_index_ngfactory","core_es5","currVal_10","View_MainSearchbarComponent_0","autocomplete_es5","p1_0","autocomplete_typings_index_ngfactory","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","DRIVE_UPLOAD_INPUT_CONFIG","RenderType_SidebarActionButtonsComponent","View_SidebarActionButtonsComponent_0","canUpload$","tree_es5_FlatTreeControl","FlatTreeControl","getLevel","isExpandable","getDescendants","dataNode","dataNodes","expandAll","expansionModel","BaseTreeControl","collections_es5","expand","collapse","isExpanded","toggleDescendants","collapseDescendants","expandDescendants","collapseAll","toBeProcessed","CdkTreeNodeOutletContext","CdkTreeNodeDef","tree_es5_CdkTree","CdkTree","_differs","_levels","viewChange","end","MAX_VALUE","_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","level","createEmbeddedView","tree_es5_CdkTreeNode","mostRecentTreeNode","CdkTreeNode","_tree","_setRoleFromData","getChildren","childrenNodes","_setRoleFromChildren","cssUnitPattern","tree_es5_CdkTreeNodePadding","CdkTreeNodePadding","_treeNode","_renderer","indentUnits","_indent","_setPadding","_level","coercion_es5","indent","units","_paddingIndent","nodeLevel","padding","paddingProp","resetProp","setStyle","tree_es5_CdkTreeNodeToggle","CdkTreeNodeToggle","_recursive","_toggle","recursive","CdkTreeModule","MatTreeNodeOutlet","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","onChange","RenderType_MatTree","View_MatTree_0","folders_tree_component_FoldersTreeComponent","FoldersTreeComponent","expanded","showRootNode","folderSelected","selectFolder","selectedFolder","folders_tree_service_FoldersTreeService","FoldersTreeService","createTreeFlattener","createTreeControl","createTreeDataSource","bindToStore","flattener","transformer","control","userFolders$","expandable","RenderType_FoldersTreeComponent","View_FoldersTreeComponent_1","View_FoldersTreeComponent_2","currVal_4","View_FoldersTreeComponent_0","available_space_indicator_component_AvailableSpaceIndicatorComponent","AvailableSpaceIndicatorComponent","billingEnabled","RenderType_AvailableSpaceIndicatorComponent","View_AvailableSpaceIndicatorComponent_2","View_AvailableSpaceIndicatorComponent_1","progress_bar_typings_index_ngfactory","progress_bar_es5","spaceUsedPercent$","_isNoopAnimation","currVal_5","spaceUsed$","spaceAvailable$","View_AvailableSpaceIndicatorComponent_0","sidebar_component_SidebarComponent","SidebarComponent","getRootFolder","RenderType_SidebarComponent","View_SidebarComponent_0","modal_service","routerLinkActiveOptions","routerLinkActive","linksWithHrefs","exact","custom_menu_component_ngfactory","custom_menu_component","itemClass","activePage$","shouldHide","enter_keybind_directive_EnterKeybindDirective","EnterKeybindDirective","enterKeybind","listen","entry_description_panel_component_EntryDescriptionPanelComponent","EntryDescriptionPanelComponent","editingDescription$","savingDescription$","textArea","queryList","editDescription","updateDescription","RenderType_EntryDescriptionPanelComponent","View_EntryDescriptionPanelComponent_2","View_EntryDescriptionPanelComponent_4","View_EntryDescriptionPanelComponent_5","View_EntryDescriptionPanelComponent_3","View_EntryDescriptionPanelComponent_1","View_EntryDescriptionPanelComponent_0","entry$","details_panel_component_DetailsPanelComponent","DetailsPanelComponent","openLocation","RenderType_DetailsPanelComponent","View_DetailsPanelComponent_3","View_DetailsPanelComponent_4","avatar","View_DetailsPanelComponent_5","View_DetailsPanelComponent_2","tmp_8_0","parent$","currVal_11","created_at","View_DetailsPanelComponent_1","View_DetailsPanelComponent_6","View_DetailsPanelComponent_0","details_sidebar_component_DetailsSidebarComponent","DetailsSidebarComponent","RenderType_DetailsSidebarComponent","View_DetailsSidebarComponent_2","View_DetailsSidebarComponent_1","View_DetailsSidebarComponent_3","tmp_1_0","View_DetailsSidebarComponent_0","drive_hammer_interactions_directive_DriveHammerInteractionsDirective","DriveHammerInteractionsDirective","dragSelect","dragEntry","subscriptions","bindToHammer","hammerManager","enable","removeSelectBox","createHammerManager","onPanStart","onPan","onPanEnd","onDoubleTap","Hammer","Manager","filesCont","Tap","pan","Pan","doubleTap","taps","recognizeWith","on","gridElement","getEntryEl","panService","entry_1","getEntryByEl","entryEl","srcEvent","drive_dom_cache_service_DriveDomCacheService","DriveDomCacheService","files_drag_select_service_assign","files_drag_select_service_FilesDragSelectService","FilesDragSelectService","initial","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","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","pathFolder","userOwnsFolder","RenderType_EntryBreadcrumbsComponent","View_EntryBreadcrumbsComponent_2","View_EntryBreadcrumbsComponent_3","View_EntryBreadcrumbsComponent_1","View_EntryBreadcrumbsComponent_0","DriveToolbarComponent","RenderType_DriveToolbarComponent","View_DriveToolbarComponent_0","drive_context_actions_DriveContextActions","DriveContextActions","getActions","updateStatus","getSelectedEntries","allStarred","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","link$","shareLink","network","mediaItem","generateShareUrl","innerWidth","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_noopTrue","shares_actions_SharesActions","SharesActions","shares","folder_actions_noopTrue","folder_actions_FolderActions","FolderActions","separatorAfter","move_entries_dialog_component_MoveEntriesDialogComponent","MoveEntriesDialogComponent","failure","canMove","entry_actions_noopTrue","entry_actions_EntryActions","EntryActions","folderIsSelected","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","file_list_header_component_FileListHeaderComponent","FileListHeaderComponent","emitEvent","RenderType_FileListHeaderComponent","View_FileListHeaderComponent_0","tmp_7_0","__awaiter","thisArg","_arguments","P","generator","fulfilled","step","rejected","done","__generator","g","_","label","sent","trys","ops","verb","throw","return","iterator","op","pop","readUploadedFolders","_b","_c","_d","_e","_f","_g","isDirectory","transformFileEntry","readDirRecursive","childEntry","createReader","readEntries","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","kind","webkitGetAsEntry","hasFiles","types","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","setViewMode","cacheDemoElements","observeBreakpointChanges","getModel","scrollContainer","observe","RenderType_DriveComponent","View_DriveComponent_0","menuPosition","showToggleButton","toggleButtonClick","sidenav_typings_index_ngfactory","sidenav_es5","gridItems","isMobile$","sidebarOpen$","activityOpen$","fixedInViewport","fixedTopGap","fixedBottomGap","View_DriveComponent_Host_0","layout_es5","DriveComponentNgFactory","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","entries$","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","noEntries","View_EntriesContainerComponent_Host_0","EntriesContainerComponentNgFactory","RenderType_DefaultPreviewComponent","View_DefaultPreviewComponent_0","View_DefaultPreviewComponent_Host_0","DefaultPreviewComponentNgFactory","RenderType_TextPreviewComponent","View_TextPreviewComponent_1","View_TextPreviewComponent_2","View_TextPreviewComponent_0","View_TextPreviewComponent_Host_0","TextPreviewComponentNgFactory","RenderType_VideoPreviewComponent","View_VideoPreviewComponent_1","View_VideoPreviewComponent_0","View_VideoPreviewComponent_Host_0","VideoPreviewComponentNgFactory","RenderType_ImagePreviewComponent","View_ImagePreviewComponent_0","View_ImagePreviewComponent_Host_0","ImagePreviewComponentNgFactory","RenderType_PdfPreviewComponent","View_PdfPreviewComponent_0","View_PdfPreviewComponent_Host_0","PdfPreviewComponentNgFactory","RenderType_AudioPreviewComponent","View_AudioPreviewComponent_1","View_AudioPreviewComponent_0","View_AudioPreviewComponent_Host_0","AudioPreviewComponentNgFactory","RenderType_GoogleDocsViewerComponent","View_GoogleDocsViewerComponent_1","View_GoogleDocsViewerComponent_2","View_GoogleDocsViewerComponent_0","View_GoogleDocsViewerComponent_Host_0","GoogleDocsViewerComponentNgFactory","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","animation","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","View_ShareDialogComponent_Host_0","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_50_0","backendErrors$","indeterminate","checked","labelPosition","currVal_106","RenderType_ShareLinkDialogComponent","opacity","overflow","View_ShareLinkDialogComponent_1","View_ShareLinkDialogComponent_0","optionsVisible$","View_ShareLinkDialogComponent_Host_0","ShareLinkDialogComponentNgFactory","RenderType_DriveContextMenuComponent","View_DriveContextMenuComponent_0","View_DriveContextMenuComponent_Host_0","DriveContextMenuComponentNgFactory","RenderType_CrupdateFolderDialogComponent","View_CrupdateFolderDialogComponent_1","View_CrupdateFolderDialogComponent_0","View_CrupdateFolderDialogComponent_Host_0","CrupdateFolderDialogComponentNgFactory","RenderType_RenameEntryDialogComponent","View_RenameEntryDialogComponent_1","View_RenameEntryDialogComponent_0","View_RenameEntryDialogComponent_Host_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","filename","pending","hasError","progress","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","View_UploadsPanelComponent_Host_0","upload_queue_service","UploadsPanelComponentNgFactory","RenderType_MoveEntriesDialogComponent","View_MoveEntriesDialogComponent_0","selectedEntries$","View_MoveEntriesDialogComponent_Host_0","MoveEntriesDialogComponentNgFactory","RenderType_FilePreviewOverlayComponent","View_FilePreviewOverlayComponent_1","View_FilePreviewOverlayComponent_0","View_FilePreviewOverlayComponent_Host_0","overlay_panel_ref","overlay_panel_data","FilePreviewOverlayComponentNgFactory","BASE_SIZE","MatProgressSpinnerBase","_MatProgressSpinnerMixinBase","MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS","diameter","progress_spinner_es5_MatSpinner","MatSpinner","animationMode","MatProgressSpinner","_fallbackAnimation","_noopAnimations","_forceAnimations","_diameter","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","View_LoadingToastComponent_Host_0","snack_bar_es5","LoadingToastComponentNgFactory","UploadsModule","DriveRoutingModule","FilePreviewModule","SharingModule","DriveModuleNgFactory","router_ngfactory","index_ngfactory","confirm_modal_component_ngfactory","typings_index_ngfactory","tooltip_typings_index_ngfactory","fesm5_http","observers_es5","select_es5","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","RenderType_NoResultsMessageComponent","View_NoResultsMessageComponent_0","getAssetUrl","getSymbols","global","ChipInputModule","cloneArrayBuffer","dataView","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","webpackPolyfill","deprecate","paths","l","MatProgressBarModule","MAT_PROGRESS_BAR_LOCATION","MatProgressBar","_angular_core__WEBPACK_IMPORTED_MODULE_1__","rxjs__WEBPACK_IMPORTED_MODULE_2__","rxjs__WEBPACK_IMPORTED_MODULE_3__","rxjs_operators__WEBPACK_IMPORTED_MODULE_4__","_angular_material_core__WEBPACK_IMPORTED_MODULE_5__","_angular_common__WEBPACK_IMPORTED_MODULE_6__","MatProgressBarBase","_MatProgressBarMixinBase","_location","getPathname","pathname","_bufferValue","animationEnd","_animationEndSubscription","clamp","emitAnimationEnd","bufferValue","baseIsMatch","getMatchData","matchData","OverlayPanelRef","rxjs__WEBPACK_IMPORTED_MODULE_0__","emitValue","valueChanged","getPanelEl","afterClosed","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_bidi__WEBPACK_IMPORTED_MODULE_3__","_angular_cdk_scrolling__WEBPACK_IMPORTED_MODULE_7__","box-shadow","View_MatSidenavContainer_1","View_MatSidenavContainer_2","baseIsTypedArray","nodeIsTypedArray","typedArrayTags","noop","objectCreate","proto","baseToString","FullscreenOverlayScrollStrategy","disable","overlay_panel_service_OverlayPanel","DEFAULT_CONFIG","closeOnBackdropClick","OverlayPanel","userConfig","getPositionStrategy","fullScreen","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","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","MatSlideToggleChange","MatSlideToggleBase","_uniqueId","_checked","_dragging","ariaLabel","ariaLabelledby","toggleChange","dragChange","monitor","focusOrigin","stopMonitoring","_onChangeEvent","_emitChangeEvent","_onInputClick","_getDragPercentage","percentage","_thumbBarWidth","_previousChecked","_onDragStart","thumbEl","_thumbEl","_thumbBarEl","clientWidth","_onDrag","_dragPercentage","deltaX","_onDragEnd","newCheckedValue","_onLabelTextChange","arg","noCustomizer","RenderType_MatSortHeader","View_MatSortHeader_0","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","MatFormFieldBase","_MatFormFieldMixinBase","labelOptions","_defaults","_outlineGapCalculationNeededImmediately","_outlineGapCalculationNeededOnStable","_showAlwaysAnimate","_subscriptAnimationState","_hintLabel","_hintLabelId","_labelId","_labelOptions","float","_animationsEnabled","appearance","_appearance","oldValue","_updateOutlineGapOnStable","_hideRequiredMarker","_processHints","_connectionContainerRef","_validateControlChild","_validatePlaceholders","_syncDescribedByIds","updateOutlineGap","_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","startWidth","gapWidth","startEls","gapEls","containerRect","containerStart","_getStartEnd","labelStart","labelWidth","outlineGapPadding","objProps","objLength","skipCtor","objCtor","othCtor","RenderType_MatChipList","View_MatChipList_0","MatSelectModule","MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY","MAT_SELECT_SCROLL_STRATEGY","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_10__","rxjs__WEBPACK_IMPORTED_MODULE_11__","rxjs_operators__WEBPACK_IMPORTED_MODULE_16__","rxjs_operators__WEBPACK_IMPORTED_MODULE_17__","rxjs_operators__WEBPACK_IMPORTED_MODULE_18__","SELECT_MULTIPLE_PANEL_PADDING_X","MatSelectChange","MatSelectBase","_parentFormField","scrollStrategyFactory","_liveAnnouncer","_panelOpen","_scrollTop","_destroy","_triggerFontSize","_optionIds","_transformOrigin","_panelDoneAnimatingStream","_offsetY","_positions","_disableOptionCentering","_focused","optionSelectionChanges","_openedStream","_closedStream","_scrollStrategyFactory","_id","overlayDir","_initKeyManager","added","_resetOptions","_triggerRect","getComputedStyle","fontSize","_calculateOverlayPosition","_highlightCorrectOption","_isRtl","selectedOptions","viewValue","_handleOpenKeydown","_handleClosedKeydown","manager","selectedOption","announce","hasDeselectedOptions_1","opt","previouslyFocusedIndex","_onAttached","positionChange","_setPseudoCheckboxPaddingSize","_calculateOverlayOffsetX","_getPanelTheme","pseudoCheckbox","querySelector","SELECT_PANEL_PADDING_X","isEmpty","correspondingOption","withTypeAhead","withAllowedModifierKeys","_scrollActiveOptionIntoView","changedOrDestroyed","_onSelect","_setOptionIds","wasSelected","options_1","sortComparator","activeOptionIndex","_getItemHeight","_getOptionIndex","itemHeight","_getItemCount","panelHeight","maxScroll","selectedOptionOffset","scrollBuffer","_calculateOverlayScroll","_calculateOverlayOffsetY","_checkOverlayWithinViewport","_getAriaLabel","_getAriaLabelledby","_getAriaActiveDescendant","overlayRect","viewportSize","getViewportSize","isRtl","paddingWidth","group","leftOverflow","rightOverflow","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_cdk_collections__WEBPACK_IMPORTED_MODULE_3__","mixinHasStickyInput","class_1","_sticky","_hasStickyChanged","prevValue","hasStickyChanged","resetStickyChanged","_stickyEnd","_name","BaseCdkCell","BaseRowDef","_columnsDiffer","getColumnsDiff","extractCellTemplate","CdkHeaderRowDefBase","CdkFooterRowDefBase","_viewContainer","mostRecentCellOutlet","getTableUnknownColumnError","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","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","thead","display","sticky","_stickyStyler","updateStickyFooterRowStyles","footerRows","dataRows","headerRow","_addStickyColumnStyles","footerRow","prevCachedRenderRows","renderRowsForData","_getRenderRowsForData","renderRow","_getRowDefs","cachedRenderRows","mergeQueryListAndSet","defaultRowDefs","multiTemplateDataRows","_defaultRowDef","columnsDiffReducer","acc","_renderRow","columnDefs","columnName","stickyEnd","rowOutlet","renderedRows","viewRef","rootNodes","rowDefs","getTableMissingMatchingRowDefError","renderIndex","outlet","_getCellTemplates","even","odd","columnId","documentRef","documentFragment","createDocumentFragment","sections_1","section","stickyCheckReducer","typedArray","baseIsMap","nodeIsMap","arrayMap","symbolToString"],"mappings":"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","file":"4.4d9cb953f4dd0949f854.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, END, HOME, hasModifierKey, 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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// Boilerplate for applying mixins to MatChip.\n/**\n * \\@docs-private\n */\nvar  \n// Boilerplate for applying mixins to MatChip.\n/**\n * \\@docs-private\n */\nMatChipBase = /** @class */ (function () {\n    function MatChipBase(_elementRef) {\n        this._elementRef = _elementRef;\n    }\n    return MatChipBase;\n}());\n/** @type {?} */\nvar _MatChipMixinBase = mixinColor(mixinDisableRipple(mixinDisabled(MatChipBase)), 'primary');\n/** @type {?} */\nvar 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, globalRippleOptions) {\n        var _this = _super.call(this, _elementRef) || this;\n        _this._elementRef = _elementRef;\n        _this._ngZone = _ngZone;\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        _this.rippleConfig = globalRippleOptions || {};\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.rippleConfig.disabled;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChip.prototype, \"selected\", {\n        /** Whether the chip is 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            /** @type {?} */\n            var coercedValue = coerceBooleanProperty(value);\n            if (coercedValue !== this._selected) {\n                this._selected = coercedValue;\n                this._dispatchSelectionChange();\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChip.prototype, \"value\", {\n        /** The value of the chip. Defaults to the content inside `<mat-chip>` tags. */\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        /**\n         * Whether or not the chip is selectable. When a chip is not selectable,\n         * changes to its selected state are always ignored. By default a chip is\n         * selectable, and it becomes non-selectable if its parent chip list is\n         * not selectable.\n         */\n        get: /**\n         * Whether or not the chip is selectable. When a chip is not selectable,\n         * changes to its selected state are always ignored. By default a chip is\n         * selectable, and it becomes non-selectable if its 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        /**\n         * Determines whether or not the chip displays the remove styling and emits (removed) events.\n         */\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        if (!this._selected) {\n            this._selected = true;\n            this._dispatchSelectionChange();\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        if (this._selected) {\n            this._selected = false;\n            this._dispatchSelectionChange();\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        if (!this._selected) {\n            this._selected = true;\n            this._dispatchSelectionChange(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._dispatchSelectionChange(isUserInput);\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    /** Handles click events on the chip. */\n    /**\n     * Handles click events on the chip.\n     * @param {?} event\n     * @return {?}\n     */\n    MatChip.prototype._handleClick = /**\n     * Handles click events on the chip.\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        if (this.disabled) {\n            event.preventDefault();\n        }\n        else {\n            event.stopPropagation();\n        }\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    /**\n     * @private\n     * @param {?=} isUserInput\n     * @return {?}\n     */\n    MatChip.prototype._dispatchSelectionChange = /**\n     * @private\n     * @param {?=} isUserInput\n     * @return {?}\n     */\n    function (isUserInput) {\n        if (isUserInput === void 0) { isUserInput = false; }\n        this.selectionChange.emit({\n            source: this,\n            isUserInput: isUserInput,\n            selected: this._selected\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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Injection token to be used to override the default options for the chips module.\n * @type {?}\n */\nvar MAT_CHIPS_DEFAULT_OPTIONS = new InjectionToken('mat-chips-default-options');\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n// Boilerplate for applying mixins to MatChipList.\n/**\n * \\@docs-private\n */\nvar  \n// Boilerplate for applying mixins to MatChipList.\n/**\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}());\n/** @type {?} */\nvar _MatChipListMixinBase = mixinErrorState(MatChipListBase);\n// Increasing integer for generating unique ids for chip-list components.\n/** @type {?} */\nvar 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 its similarity to the List component).\n */\nvar MatChipList = /** @class */ (function (_super) {\n    __extends(MatChipList, _super);\n    function MatChipList(_elementRef, _changeDetectorRef, _dir, _parentForm, _parentFormGroup, _defaultErrorStateMatcher, 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        /** Whether the user should be allowed to select multiple chips. */\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        /**\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         */\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        /**\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._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        /**\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._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        /**\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.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._hasFocusedChip();\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        /**\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.ngControl ? !!this.ngControl.disabled : this._disabled; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._disabled = coerceBooleanProperty(value);\n            this._syncChipsDisabledState();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatChipList.prototype, \"selectable\", {\n        /**\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         */\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        if (this._dir) {\n            this._dir.change\n                .pipe(takeUntil(this._destroyed))\n                .subscribe(function (dir) { return _this._keyManager.withHorizontalOrientation(dir); });\n        }\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 () {\n                _this._tabIndex = _this._userTabIndex || 0;\n                _this._changeDetectorRef.markForCheck();\n            });\n        });\n        // When the list changes, re-subscribe\n        this.chips.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(function () {\n            if (_this.disabled) {\n                // Since this happens after the content has been\n                // checked, we need to defer it to the next tick.\n                Promise.resolve().then(function () {\n                    _this._syncChipsDisabledState();\n                });\n            }\n            _this._resetChips();\n            // Reset chips selected/deselected status\n            _this._initializeSelection();\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            _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    // Implemented as part of ControlValueAccessor.\n    /**\n     * @param {?} value\n     * @return {?}\n     */\n    MatChipList.prototype.writeValue = \n    // Implemented as part of ControlValueAccessor.\n    /**\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    // Implemented as part of ControlValueAccessor.\n    /**\n     * @param {?} fn\n     * @return {?}\n     */\n    MatChipList.prototype.registerOnChange = \n    // Implemented as part of ControlValueAccessor.\n    /**\n     * @param {?} fn\n     * @return {?}\n     */\n    function (fn) {\n        this._onChange = fn;\n    };\n    // Implemented as part of ControlValueAccessor.\n    // Implemented as part of ControlValueAccessor.\n    /**\n     * @param {?} fn\n     * @return {?}\n     */\n    MatChipList.prototype.registerOnTouched = \n    // Implemented as part of ControlValueAccessor.\n    /**\n     * @param {?} fn\n     * @return {?}\n     */\n    function (fn) {\n        this._onTouched = fn;\n    };\n    // Implemented as part of ControlValueAccessor.\n    // Implemented as part of ControlValueAccessor.\n    /**\n     * @param {?} isDisabled\n     * @return {?}\n     */\n    MatChipList.prototype.setDisabledState = \n    // Implemented as part of ControlValueAccessor.\n    /**\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     * @param {?} event\n     * @return {?}\n     */\n    MatChipList.prototype.onContainerClick = /**\n     * Implemented as part of MatFormFieldControl.\n     * \\@docs-private\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        if (!this._originatesFromChip(event)) {\n            this.focus();\n        }\n    };\n    /**\n     * Focuses 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 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 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        /** @type {?} */\n        var 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     * @protected\n     * @return {?}\n     */\n    MatChipList.prototype._updateTabIndex = /**\n     * Check the tab index as you should not be allowed to focus an empty list.\n     * @protected\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     * @protected\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     * @protected\n     * @return {?}\n     */\n    function () {\n        if (this._lastDestroyedChipIndex != null && this.chips.length) {\n            /** @type {?} */\n            var 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     * @returns True if the index is valid for our list of chips.\n     */\n    /**\n     * Utility to ensure all indexes are valid.\n     *\n     * @private\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     * @private\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     * @private\n     * @param {?} element\n     * @return {?}\n     */\n    MatChipList.prototype._isInputEmpty = /**\n     * @private\n     * @param {?} element\n     * @return {?}\n     */\n    function (element) {\n        if (element && element.nodeName.toLowerCase() === 'input') {\n            /** @type {?} */\n            var 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            /** @type {?} */\n            var 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     * @returns Chip that has the corresponding value.\n     */\n    /**\n     * Finds and selects the chip based on its value.\n     * @private\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     * @private\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        /** @type {?} */\n        var 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     * @private\n     * @return {?}\n     */\n    MatChipList.prototype._initializeSelection = /**\n     * @private\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     */\n    /**\n     * Deselects every chip in the list.\n     * @private\n     * @param {?=} skip Chip that should not be deselected.\n     * @return {?}\n     */\n    MatChipList.prototype._clearSelection = /**\n     * Deselects every chip in the list.\n     * @private\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     */\n    /**\n     * Sorts the model values, ensuring that they keep the same\n     * order that they have in the panel.\n     * @private\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     * @private\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    /** Emits change event to set the model value. */\n    /**\n     * Emits change event to set the model value.\n     * @private\n     * @param {?=} fallbackValue\n     * @return {?}\n     */\n    MatChipList.prototype._propagateChanges = /**\n     * Emits change event to set the model value.\n     * @private\n     * @param {?=} fallbackValue\n     * @return {?}\n     */\n    function (fallbackValue) {\n        /** @type {?} */\n        var 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        if (!this._hasFocusedChip()) {\n            this._keyManager.setActiveItem(-1);\n        }\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     * @private\n     * @return {?}\n     */\n    MatChipList.prototype._resetChips = /**\n     * @private\n     * @return {?}\n     */\n    function () {\n        this._dropSubscriptions();\n        this._listenToChipsFocus();\n        this._listenToChipsSelection();\n        this._listenToChipsRemoved();\n    };\n    /**\n     * @private\n     * @return {?}\n     */\n    MatChipList.prototype._dropSubscriptions = /**\n     * @private\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    /** Listens to user-generated selection events on each chip. */\n    /**\n     * Listens to user-generated selection events on each chip.\n     * @private\n     * @return {?}\n     */\n    MatChipList.prototype._listenToChipsSelection = /**\n     * Listens to user-generated selection events on each chip.\n     * @private\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    /** Listens to user-generated selection events on each chip. */\n    /**\n     * Listens to user-generated selection events on each chip.\n     * @private\n     * @return {?}\n     */\n    MatChipList.prototype._listenToChipsFocus = /**\n     * Listens to user-generated selection events on each chip.\n     * @private\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        this._chipFocusSubscription = this.chipFocusChanges.subscribe(function (event) {\n            /** @type {?} */\n            var 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     * @private\n     * @return {?}\n     */\n    MatChipList.prototype._listenToChipsRemoved = /**\n     * @private\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        this._chipRemoveSubscription = this.chipRemoveChanges.subscribe(function (event) {\n            /** @type {?} */\n            var chip = event.chip;\n            /** @type {?} */\n            var 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    /** Checks whether an event comes from inside a chip element. */\n    /**\n     * Checks whether an event comes from inside a chip element.\n     * @private\n     * @param {?} event\n     * @return {?}\n     */\n    MatChipList.prototype._originatesFromChip = /**\n     * Checks whether an event comes from inside a chip element.\n     * @private\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        /** @type {?} */\n        var currentElement = (/** @type {?} */ (event.target));\n        while (currentElement && currentElement !== this._elementRef.nativeElement) {\n            if (currentElement.classList.contains('mat-chip')) {\n                return true;\n            }\n            currentElement = currentElement.parentElement;\n        }\n        return false;\n    };\n    /** Checks whether any of the chips is focused. */\n    /**\n     * Checks whether any of the chips is focused.\n     * @private\n     * @return {?}\n     */\n    MatChipList.prototype._hasFocusedChip = /**\n     * Checks whether any of the chips is focused.\n     * @private\n     * @return {?}\n     */\n    function () {\n        return this.chips.some(function (chip) { return chip._hasFocus; });\n    };\n    /** Syncs the list's disabled state with the individual chips. */\n    /**\n     * Syncs the list's disabled state with the individual chips.\n     * @private\n     * @return {?}\n     */\n    MatChipList.prototype._syncChipsDisabledState = /**\n     * Syncs the list's disabled state with the individual chips.\n     * @private\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        if (this.chips) {\n            this.chips.forEach(function (chip) {\n                chip.disabled = _this._disabled;\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;transform:translateZ(0)}.mat-standard-chip{transition:box-shadow 280ms cubic-bezier(.4,0,.2,1);display:inline-flex;padding:7px 12px;border-radius:16px;align-items:center;cursor:default;min-height:32px;height:1px}.mat-standard-chip .mat-chip-remove.mat-icon{width:18px;height:18px}.mat-standard-chip::after{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit;opacity:0;content:'';pointer-events:none;transition:opacity .2s cubic-bezier(.35,0,.25,1)}.mat-standard-chip:hover::after{opacity:.12}.mat-standard-chip:focus{outline:0}.mat-standard-chip:focus::after{opacity:.16}@media (-ms-high-contrast:active){.mat-standard-chip{outline:solid 1px}.mat-standard-chip:focus{outline:dotted 2px}}.mat-standard-chip.mat-chip-disabled::after{opacity:0}.mat-standard-chip.mat-chip-disabled .mat-chip-remove,.mat-standard-chip.mat-chip-disabled .mat-chip-trailing-icon{cursor:default}.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:8px;padding-left:0}[dir=rtl] .mat-standard-chip.mat-chip-with-trailing-icon.mat-chip-with-avatar{padding-left:8px;padding-right:0}.mat-standard-chip.mat-chip-with-trailing-icon{padding-top:7px;padding-bottom:7px;padding-right:8px;padding-left:12px}[dir=rtl] .mat-standard-chip.mat-chip-with-trailing-icon{padding-left:8px;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:24px;height:24px;margin-right:8px;margin-left:4px}[dir=rtl] .mat-standard-chip .mat-chip-avatar{margin-left:8px;margin-right:4px}.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:8px;margin-right:0}[dir=rtl] .mat-standard-chip .mat-chip-remove,[dir=rtl] .mat-standard-chip .mat-chip-trailing-icon{margin-right:8px;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:4px;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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n// Increasing integer for generating unique ids.\n/** @type {?} */\nvar 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        /** Register input for chip list */\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        /**\n         * Whether or not the chipEnd event will be emitted when the input is blurred.\n         */\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        /** Whether the input is 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._isSeparatorKey(event)) {\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 () {\n        this._inputElement.focus();\n    };\n    /** Checks whether a keycode is one of the configured separators. */\n    /**\n     * Checks whether a keycode is one of the configured separators.\n     * @private\n     * @param {?} event\n     * @return {?}\n     */\n    MatChipInput.prototype._isSeparatorKey = /**\n     * Checks whether a keycode is one of the configured separators.\n     * @private\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        if (hasModifierKey(event)) {\n            return false;\n        }\n        /** @type {?} */\n        var separators = this.separatorKeyCodes;\n        /** @type {?} */\n        var keyCode = event.keyCode;\n        return Array.isArray(separators) ? separators.indexOf(keyCode) > -1 : separators.has(keyCode);\n    };\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                        '[attr.aria-invalid]': '_chipList && _chipList.ngControl ? _chipList.ngControl.invalid : 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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 { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Inject, InjectionToken, Input, Output, TemplateRef, ViewChild, ViewEncapsulation, Directive, forwardRef, Host, NgZone, Optional, ViewContainerRef, NgModule } from '@angular/core';\nimport { MAT_OPTION_PARENT_COMPONENT, MatOptgroup, MatOption, mixinDisableRipple, _countGroupLabelsBeforeOption, _getOptionScrollPosition, MatOptionSelectionChange, MatOptionModule, MatCommonModule } from '@angular/material/core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { DOWN_ARROW, ENTER, ESCAPE, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport { Overlay, OverlayConfig, 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 { ViewportRuler } from '@angular/cdk/scrolling';\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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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 * @type {?}\n */\nvar _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// Boilerplate for applying mixins to MatAutocomplete.\n/**\n * \\@docs-private\n */\nvar  \n// Boilerplate for applying mixins to MatAutocomplete.\n/**\n * \\@docs-private\n */\nMatAutocompleteBase = /** @class */ (function () {\n    function MatAutocompleteBase() {\n    }\n    return MatAutocompleteBase;\n}());\n/** @type {?} */\nvar _MatAutocompleteMixinBase = mixinDisableRipple(MatAutocompleteBase);\n/**\n * Injection token to be used to override the default options for `mat-autocomplete`.\n * @type {?}\n */\nvar 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        /**\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         */\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        /**\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         */\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        /** @type {?} */\n        var 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%;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.mat-autocomplete-panel.mat-autocomplete-visible{visibility:visible}.mat-autocomplete-panel.mat-autocomplete-hidden{visibility:hidden}.mat-autocomplete-panel-above .mat-autocomplete-panel{border-radius:0;border-top-left-radius:4px;border-top-right-radius:4px}.mat-autocomplete-panel .mat-divider-horizontal{margin-top:-1px}@media (-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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * The height of each autocomplete option.\n * @type {?}\n */\nvar AUTOCOMPLETE_OPTION_HEIGHT = 48;\n/**\n * The total height of the autocomplete panel.\n * @type {?}\n */\nvar AUTOCOMPLETE_PANEL_HEIGHT = 256;\n/**\n * Injection token that determines the scroll handling while the autocomplete panel is open.\n * @type {?}\n */\nvar 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 * @type {?}\n */\nvar 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 * @type {?}\n */\nvar 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 * \\@docs-private\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._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            _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        this._scrollStrategy = scrollStrategy;\n    }\n    Object.defineProperty(MatAutocompleteTrigger.prototype, \"autocompleteDisabled\", {\n        /**\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         */\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    /**\n     * Updates the position of the autocomplete suggestion panel to ensure that it fits all options\n     * within the viewport.\n     */\n    /**\n     * Updates the position of the autocomplete suggestion panel to ensure that it fits all options\n     * within the viewport.\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype.updatePosition = /**\n     * Updates the position of the autocomplete suggestion panel to ensure that it fits all options\n     * within the viewport.\n     * @return {?}\n     */\n    function () {\n        if (this._overlayAttached) {\n            (/** @type {?} */ (this._overlayRef)).updatePosition();\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._getOutsideClickStream(), 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    /** Stream of clicks outside of the autocomplete panel. */\n    /**\n     * Stream of clicks outside of the autocomplete panel.\n     * @private\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._getOutsideClickStream = /**\n     * Stream of clicks outside of the autocomplete panel.\n     * @private\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            /** @type {?} */\n            var clickTarget = (/** @type {?} */ (event.target));\n            /** @type {?} */\n            var 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    // Implemented as part of ControlValueAccessor.\n    // Implemented as part of ControlValueAccessor.\n    /**\n     * @param {?} value\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype.writeValue = \n    // Implemented as part of ControlValueAccessor.\n    /**\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    // Implemented as part of ControlValueAccessor.\n    /**\n     * @param {?} fn\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype.registerOnChange = \n    // Implemented as part of ControlValueAccessor.\n    /**\n     * @param {?} fn\n     * @return {?}\n     */\n    function (fn) {\n        this._onChange = fn;\n    };\n    // Implemented as part of ControlValueAccessor.\n    // Implemented as part of ControlValueAccessor.\n    /**\n     * @param {?} fn\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype.registerOnTouched = \n    // Implemented as part of ControlValueAccessor.\n    /**\n     * @param {?} fn\n     * @return {?}\n     */\n    function (fn) {\n        this._onTouched = fn;\n    };\n    // Implemented as part of ControlValueAccessor.\n    // Implemented as part of ControlValueAccessor.\n    /**\n     * @param {?} isDisabled\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype.setDisabledState = \n    // Implemented as part of ControlValueAccessor.\n    /**\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        /** @type {?} */\n        var 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        if (this.activeOption && keyCode === ENTER && this.panelOpen) {\n            this.activeOption._selectViaInteraction();\n            this._resetActiveItem();\n            event.preventDefault();\n        }\n        else if (this.autocomplete) {\n            /** @type {?} */\n            var prevActiveItem = this.autocomplete._keyManager.activeItem;\n            /** @type {?} */\n            var 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        /** @type {?} */\n        var target = (/** @type {?} */ (event.target));\n        /** @type {?} */\n        var 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) {\n            this._previousValue = value;\n            this._onChange(value);\n            if (this._canOpen() && document.activeElement === event.target) {\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     */\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     * @private\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     * @private\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    /** If the label has been manually elevated, return it to its normal state. */\n    /**\n     * If the label has been manually elevated, return it to its normal state.\n     * @private\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._resetLabel = /**\n     * If the label has been manually elevated, return it to its normal state.\n     * @private\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     */\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     * @private\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     * @private\n     * @return {?}\n     */\n    function () {\n        /** @type {?} */\n        var index = this.autocomplete._keyManager.activeItemIndex || 0;\n        /** @type {?} */\n        var labelCount = _countGroupLabelsBeforeOption(index, this.autocomplete.options, this.autocomplete.optionGroups);\n        /** @type {?} */\n        var 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     */\n    /**\n     * This method listens to a stream of panel closing actions and resets the\n     * stream every time the option list changes.\n     * @private\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     * @private\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        /** @type {?} */\n        var firstStable = this._zone.onStable.asObservable().pipe(take(1));\n        /** @type {?} */\n        var 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            // set the value, close the panel, and complete.\n            .subscribe(function (event) { return _this._setValueAndClose(event); });\n    };\n    /** Destroys the autocomplete suggestion panel. */\n    /**\n     * Destroys the autocomplete suggestion panel.\n     * @private\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._destroyPanel = /**\n     * Destroys the autocomplete suggestion panel.\n     * @private\n     * @return {?}\n     */\n    function () {\n        if (this._overlayRef) {\n            this.closePanel();\n            this._overlayRef.dispose();\n            this._overlayRef = null;\n        }\n    };\n    /**\n     * @private\n     * @param {?} value\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._setTriggerValue = /**\n     * @private\n     * @param {?} value\n     * @return {?}\n     */\n    function (value) {\n        /** @type {?} */\n        var 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        /** @type {?} */\n        var 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        this._previousValue = inputValue;\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     */\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     * @private\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     * @private\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     */\n    /**\n     * Clear any previous selected option and emit a selection change event for this option\n     * @private\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     * @private\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     * @private\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._attachOverlay = /**\n     * @private\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        if (!this.autocomplete) {\n            throw getMatAutocompleteMissingPanelError();\n        }\n        /** @type {?} */\n        var overlayRef = this._overlayRef;\n        if (!overlayRef) {\n            this._portal = new TemplatePortal(this.autocomplete.template, this._viewContainerRef);\n            overlayRef = this._overlay.create(this._getOverlayConfig());\n            this._overlayRef = overlayRef;\n            // Use the `keydownEvents` in order to take advantage of\n            // the overlay event targeting provided by the CDK overlay.\n            overlayRef.keydownEvents().subscribe(function (event) {\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 (event.keyCode === ESCAPE || (event.keyCode === UP_ARROW && event.altKey)) {\n                    _this._resetActiveItem();\n                    _this._closeKeyEventStream.next();\n                }\n            });\n            if (this._viewportRuler) {\n                this._viewportSubscription = this._viewportRuler.change().subscribe(function () {\n                    if (_this.panelOpen && overlayRef) {\n                        overlayRef.updateSize({ width: _this._getPanelWidth() });\n                    }\n                });\n            }\n        }\n        else {\n            /** @type {?} */\n            var position = (/** @type {?} */ (overlayRef.getConfig().positionStrategy));\n            // Update the trigger, panel width and direction, in case anything has changed.\n            position.setOrigin(this._getConnectedElement());\n            overlayRef.updateSize({ width: this._getPanelWidth() });\n        }\n        if (overlayRef && !overlayRef.hasAttached()) {\n            overlayRef.attach(this._portal);\n            this._closingActionsSubscription = this._subscribeToClosingActions();\n        }\n        /** @type {?} */\n        var 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     * @private\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._getOverlayConfig = /**\n     * @private\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     * @private\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._getOverlayPosition = /**\n     * @private\n     * @return {?}\n     */\n    function () {\n        this._positionStrategy = this._overlay.position()\n            .flexibleConnectedTo(this._getConnectedElement())\n            .withFlexibleDimensions(false)\n            .withPush(false)\n            .withPositions([\n            {\n                originX: 'start',\n                originY: 'bottom',\n                overlayX: 'start',\n                overlayY: 'top'\n            },\n            {\n                originX: 'start',\n                originY: 'top',\n                overlayX: 'start',\n                overlayY: 'bottom',\n                // The overlay edge connected to the trigger should have squared corners, while\n                // the opposite end has rounded corners. We apply a CSS class to swap the\n                // border-radius based on the overlay position.\n                panelClass: 'mat-autocomplete-panel-above'\n            }\n        ]);\n        return this._positionStrategy;\n    };\n    /**\n     * @private\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._getConnectedElement = /**\n     * @private\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     * @private\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._getPanelWidth = /**\n     * @private\n     * @return {?}\n     */\n    function () {\n        return this.autocomplete.panelWidth || this._getHostWidth();\n    };\n    /** Returns the width of the input element, so the panel width can match it. */\n    /**\n     * Returns the width of the input element, so the panel width can match it.\n     * @private\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._getHostWidth = /**\n     * Returns the width of the input element, so the panel width can match it.\n     * @private\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     */\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     * @private\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     * @private\n     * @return {?}\n     */\n    function () {\n        this.autocomplete._keyManager.setActiveItem(this.autocomplete.autoActiveFirstOption ? 0 : -1);\n    };\n    /** Determines whether the panel can be opened. */\n    /**\n     * Determines whether the panel can be opened.\n     * @private\n     * @return {?}\n     */\n    MatAutocompleteTrigger.prototype._canOpen = /**\n     * Determines whether the panel can be opened.\n     * @private\n     * @return {?}\n     */\n    function () {\n        /** @type {?} */\n        var 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]': '(panelOpen && activeOption) ? activeOption.id : null',\n                        '[attr.aria-expanded]': 'autocompleteDisabled ? null : panelOpen.toString()',\n                        '[attr.aria-owns]': '(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id',\n                        '[attr.aria-haspopup]': '!autocompleteDisabled',\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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY, MatAutocompleteSelectedEvent, MatAutocompleteBase, _MatAutocompleteMixinBase, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, MatAutocomplete, MatAutocompleteModule, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY, getMatAutocompleteMissingPanelError, AUTOCOMPLETE_OPTION_HEIGHT, AUTOCOMPLETE_PANEL_HEIGHT, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER, MAT_AUTOCOMPLETE_VALUE_ACCESSOR, MatAutocompleteTrigger, MatAutocompleteOrigin };\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","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.toLowerCase() === file.extension.toLowerCase();\r\n        });\r\n    }\r\n}\r\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        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 extendStatics(d, b);\n    };\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.toLowerCase() === file.extension.toLowerCase();\n        });\n    };\n    return AllowedExtensionsValidation;\n}(UploadValidation));\nexport { AllowedExtensionsValidation };\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, Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\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}[dir=rtl] th.mat-header-cell{text-align:right}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}[dir=rtl] td.mat-cell:first-of-type,[dir=rtl] td.mat-footer-cell:first-of-type,[dir=rtl] th.mat-header-cell:first-of-type{padding-left:0;padding-right:24px}td.mat-cell:last-of-type,td.mat-footer-cell:last-of-type,th.mat-header-cell:last-of-type{padding-right:24px}[dir=rtl] td.mat-cell:last-of-type,[dir=rtl] td.mat-footer-cell:last-of-type,[dir=rtl] th.mat-header-cell:last-of-type{padding-right:0;padding-left: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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\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: [\n                        { provide: CdkColumnDef, useExisting: MatColumnDef },\n                        { provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: MatColumnDef }\n                    ],\n                },] },\n    ];\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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\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 data row's template and other 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar EXPORTED_DECLARATIONS = [\n    // Table\n    MatTable,\n    // Template defs\n    MatHeaderCellDef,\n    MatHeaderRowDef,\n    MatColumnDef,\n    MatCellDef,\n    MatRowDef,\n    MatFooterCellDef,\n    MatFooterRowDef,\n    // Cell directives\n    MatHeaderCell,\n    MatCell,\n    MatFooterCell,\n    // Row directives\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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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 * @type {?}\n */\nvar 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         * Used to react to internal changes of the paginator that are made by the data source itself.\n         */\n        _this._internalPageChanges = new Subject();\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            /** @type {?} */\n            var value = ((/** @type {?} */ (data)))[sortHeaderId];\n            if (_isNumberValue(value)) {\n                /** @type {?} */\n                var 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            /** @type {?} */\n            var active = sort.active;\n            /** @type {?} */\n            var direction = sort.direction;\n            if (!active || direction == '') {\n                return data;\n            }\n            return data.sort(function (a, b) {\n                /** @type {?} */\n                var valueA = _this.sortingDataAccessor(a, active);\n                /** @type {?} */\n                var 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                /** @type {?} */\n                var 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            /** @type {?} */\n            var dataStr = Object.keys(data).reduce(function (currentTerm, key) {\n                // Use an obscure Unicode character to delimit the words in the concatenated string.\n                // This avoids matches where the values of two columns combined will match the user's query\n                // (e.g. `Flute` and `Stop` will match `Test`). The character is intended to be something\n                // that has a very low chance of being typed in by somebody in a text field. This one in\n                // particular is \"White up-pointing triangle with dot\" from\n                // https://en.wikipedia.org/wiki/List_of_Unicode_characters\n                return currentTerm + ((/** @type {?} */ (data)))[key] + '◬';\n            }, '').toLowerCase();\n            // Transform the filter by converting it to lowercase and removing whitespace.\n            /** @type {?} */\n            var 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        /** @type {?} */\n        var sortChange = this._sort ?\n            merge(this._sort.sortChange, this._sort.initialized) :\n            of(null);\n        /** @type {?} */\n        var pageChange = this._paginator ?\n            merge(this._paginator.page, this._internalPageChanges, this._paginator.initialized) :\n            of(null);\n        /** @type {?} */\n        var dataStream = this._data;\n        // Watch for base data or filter changes to provide a filtered set of data.\n        /** @type {?} */\n        var 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        /** @type {?} */\n        var 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        /** @type {?} */\n        var 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        /** @type {?} */\n        var 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            /** @type {?} */\n            var paginator = _this.paginator;\n            if (!paginator) {\n                return;\n            }\n            paginator.length = filteredDataLength;\n            // If the page index is set beyond the page, reduce it to the last page.\n            if (paginator.pageIndex > 0) {\n                /** @type {?} */\n                var lastPageIndex = Math.ceil(paginator.length / paginator.pageSize) - 1 || 0;\n                /** @type {?} */\n                var newPageIndex = Math.min(paginator.pageIndex, lastPageIndex);\n                if (newPageIndex !== paginator.pageIndex) {\n                    paginator.pageIndex = newPageIndex;\n                    // Since the paginator only emits after user-generated changes,\n                    // we need our own stream so we know to should re-render the data.\n                    _this._internalPageChanges.next();\n                }\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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { MatTableModule, MatCellDef, MatHeaderCellDef, MatFooterCellDef, MatColumnDef, MatHeaderCell, MatFooterCell, MatCell, MatTable, 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","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\r\nimport {Settings} from '../../config/settings.service';\r\n\r\n@Component({\r\n    selector: 'no-results-message',\r\n    templateUrl: './no-results-message.component.html',\r\n    styleUrls: ['./no-results-message.component.scss'],\r\n    host: {class: 'no-results-message'},\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class NoResultsMessageComponent {\r\n    constructor(public settings: Settings) {}\r\n}\r\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, HostBinding, 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})\r\nexport class AdHostComponent implements OnInit {\r\n    @Input() public slot: string;\r\n\r\n    @HostBinding('id') public randomId: string;\r\n    private adCode: 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.adCode = this.settings.get(this.slot);\r\n        if ( ! this.adCode) return;\r\n\r\n        this.appendAdHtml();\r\n        this.loadAdScripts().then(() => {\r\n            this.executeAdJavascript();\r\n        });\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, timer, fromEvent } from 'rxjs';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { startWith, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { END, ENTER, HOME, SPACE, hasModifierKey } from '@angular/cdk/keycodes';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { FocusKeyManager, FocusMonitor, A11yModule } from '@angular/cdk/a11y';\nimport { Platform, normalizePassiveListenerOptions } 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Injection token for the MatInkBar's Positioner.\n * @type {?}\n */\nvar _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    /** @type {?} */\n    var method = function (element) { return ({\n        left: element ? (element.offsetLeft || 0) + 'px' : '0',\n        width: element ? (element.offsetWidth || 0) + 'px' : '0',\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     */\n    /**\n     * Sets the proper styles to the ink bar element.\n     * @private\n     * @param {?} element\n     * @return {?}\n     */\n    MatInkBar.prototype._setStyles = /**\n     * Sets the proper styles to the ink bar element.\n     * @private\n     * @param {?} element\n     * @return {?}\n     */\n    function (element) {\n        /** @type {?} */\n        var positions = this._inkBarPositioner(element);\n        /** @type {?} */\n        var 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n// Boilerplate for applying mixins to MatTab.\n/**\n * \\@docs-private\n */\nvar  \n// Boilerplate for applying mixins to MatTab.\n/**\n * \\@docs-private\n */\nMatTabBase = /** @class */ (function () {\n    function MatTabBase() {\n    }\n    return MatTabBase;\n}());\n/** @type {?} */\nvar _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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Animations used by the Material tabs.\n * \\@docs-private\n * @type {?}\n */\nvar matTabsAnimations = {\n    /**\n     * Animation translates a tab along the X axis.\n     */\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('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)')),\n        transition('void => left-origin-center', [\n            style({ transform: 'translate3d(-100%, 0, 0)' }),\n            animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)')\n        ]),\n        transition('void => right-origin-center', [\n            style({ transform: 'translate3d(100%, 0, 0)' }),\n            animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)')\n        ])\n    ])\n};\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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    /**\n     * @breaking-change 8.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         * Emits when an animation on the tab is complete.\n         */\n        this._translateTabComplete = new Subject();\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        // Note that the default value will always be overwritten by `MatTabBody`, but we need one\n        // anyway to prevent the animations module from throwing an error if the body is used on its own.\n        /**\n         * Duration for the tab's animation.\n         */\n        this.animationDuration = '500ms';\n        if (this._dir && changeDetectorRef) {\n            this._dirChangeSubscription = this._dir.change.subscribe(function (dir) {\n                _this._computePositionAnimationState(dir);\n                changeDetectorRef.markForCheck();\n            });\n        }\n        // Ensure that we get unique animation events, because the `.done` callback can get\n        // invoked twice in some browsers. See https://github.com/angular/angular/issues/24084.\n        this._translateTabComplete.pipe(distinctUntilChanged(function (x, y) {\n            return x.fromState === y.fromState && x.toState === y.toState;\n        })).subscribe(function (event) {\n            // If the transition to the center is complete, emit an event.\n            if (_this._isCenterPosition(event.toState) && _this._isCenterPosition(_this._position)) {\n                _this._onCentered.emit();\n            }\n            if (_this._isCenterPosition(event.fromState) && !_this._isCenterPosition(_this._position)) {\n                _this._afterLeavingCenter.emit();\n            }\n        });\n    }\n    Object.defineProperty(MatTabBody.prototype, \"position\", {\n        /** The shifted index position of the tab body, where zero represents the active center tab. */\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        this._translateTabComplete.complete();\n    };\n    /**\n     * @param {?} event\n     * @return {?}\n     */\n    MatTabBody.prototype._onTranslateTabStarted = /**\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        /** @type {?} */\n        var isCentering = this._isCenterPosition(event.toState);\n        this._beforeCentering.emit(isCentering);\n        if (isCentering) {\n            this._onCentering.emit(this._elementRef.nativeElement.clientHeight);\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    /** Computes the position state that will be used for the tab-body animation trigger. */\n    /**\n     * Computes the position state that will be used for the tab-body animation trigger.\n     * @private\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     * @private\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     */\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     * @private\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     * @private\n     * @return {?}\n     */\n    function () {\n        /** @type {?} */\n        var 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]=\\\"{ value: _position, params: {animationDuration: animationDuration} }\\\" (@translateTab.start)=\\\"_onTranslateTabStarted($event)\\\" (@translateTab.done)=\\\"_translateTabComplete.next($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        animationDuration: [{ type: Input }],\n        position: [{ type: Input }]\n    };\n    return MatTabBody;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n// Boilerplate for applying mixins to MatTabLabelWrapper.\n/**\n * \\@docs-private\n */\nvar  \n// Boilerplate for applying mixins to MatTabLabelWrapper.\n/**\n * \\@docs-private\n */\nMatTabLabelWrapperBase = /** @class */ (function () {\n    function MatTabLabelWrapperBase() {\n    }\n    return MatTabLabelWrapperBase;\n}());\n/** @type {?} */\nvar _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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Config used to bind passive event listeners\n * @type {?}\n */\nvar passiveEventListenerOptions = (/** @type {?} */ (normalizePassiveListenerOptions({ passive: true })));\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 * @type {?}\n */\nvar EXAGGERATED_OVERSCROLL = 60;\n/**\n * Amount of milliseconds to wait before starting to scroll the header automatically.\n * Set a little conservatively in order to handle fake events dispatched on touch devices.\n * @type {?}\n */\nvar HEADER_SCROLL_DELAY = 650;\n/**\n * Interval in milliseconds at which to scroll the header\n * while the user is holding their pointer.\n * @type {?}\n */\nvar HEADER_SCROLL_INTERVAL = 100;\n// Boilerplate for applying mixins to MatTabHeader.\n/**\n * \\@docs-private\n */\nvar  \n// Boilerplate for applying mixins to MatTabHeader.\n/**\n * \\@docs-private\n */\nMatTabHeaderBase = /** @class */ (function () {\n    function MatTabHeaderBase() {\n    }\n    return MatTabHeaderBase;\n}());\n/** @type {?} */\nvar _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, _ngZone, _platform) {\n        var _this = _super.call(this) || this;\n        _this._elementRef = _elementRef;\n        _this._changeDetectorRef = _changeDetectorRef;\n        _this._viewportRuler = _viewportRuler;\n        _this._dir = _dir;\n        _this._ngZone = _ngZone;\n        _this._platform = _platform;\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        /**\n         * Stream that will stop the automated scrolling.\n         */\n        _this._stopScrolling = new Subject();\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        /** @type {?} */\n        var element = _elementRef.nativeElement;\n        /** @type {?} */\n        var bindEvent = function () {\n            fromEvent(element, 'mouseleave')\n                .pipe(takeUntil(_this._destroyed))\n                .subscribe(function () {\n                _this._stopInterval();\n            });\n        };\n        // @breaking-change 8.0.0 remove null check once _ngZone is made into a required parameter.\n        if (_ngZone) {\n            // Bind the `mouseleave` event on the outside since it doesn't change anything in the view.\n            _ngZone.runOutsideAngular(bindEvent);\n        }\n        else {\n            bindEvent();\n        }\n        return _this;\n    }\n    Object.defineProperty(MatTabHeader.prototype, \"selectedIndex\", {\n        /** The index of the active tab. */\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    /** Handles keyboard events on the header. */\n    /**\n     * Handles keyboard events on the header.\n     * @param {?} event\n     * @return {?}\n     */\n    MatTabHeader.prototype._handleKeydown = /**\n     * Handles keyboard events on the header.\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        // We don't handle any key bindings with a modifier key.\n        if (hasModifierKey(event)) {\n            return;\n        }\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        /** @type {?} */\n        var dirChange = this._dir ? this._dir.change : of(null);\n        /** @type {?} */\n        var resize = this._viewportRuler.change(150);\n        /** @type {?} */\n        var 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.ngAfterViewInit = /**\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        // We need to handle these events manually, because we want to bind passive event listeners.\n        fromEvent(this._previousPaginator.nativeElement, 'touchstart', passiveEventListenerOptions)\n            .pipe(takeUntil(this._destroyed))\n            .subscribe(function () {\n            _this._handlePaginatorPress('before');\n        });\n        fromEvent(this._nextPaginator.nativeElement, 'touchstart', passiveEventListenerOptions)\n            .pipe(takeUntil(this._destroyed))\n            .subscribe(function () {\n            _this._handlePaginatorPress('after');\n        });\n    };\n    /**\n     * @return {?}\n     */\n    MatTabHeader.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        this._destroyed.next();\n        this._destroyed.complete();\n        this._stopScrolling.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        var _this = this;\n        /** @type {?} */\n        var textContent = this._elementRef.nativeElement.textContent;\n        // We need to diff the text content of the header, because the MutationObserver callback\n        // will fire even if the text content didn't change which is inefficient and is prone\n        // to infinite loops if a poorly constructed expression is passed in (see #14249).\n        if (textContent !== this._currentTextContent) {\n            this._currentTextContent = textContent;\n            /** @type {?} */\n            var zoneCallback = function () {\n                _this.updatePagination();\n                _this._alignInkBarToSelectedTab();\n                _this._changeDetectorRef.markForCheck();\n            };\n            // The content observer runs outside the `NgZone` by default, which\n            // means that we need to bring the callback back in ourselves.\n            // @breaking-change 8.0.0 Remove null check for `_ngZone` once it's a required parameter.\n            this._ngZone ? this._ngZone.run(zoneCallback) : zoneCallback();\n        }\n    };\n    /**\n     * Updates the view whether pagination should be enabled or not.\n     *\n     * WARNING: Calling this method can be very costly in terms of performance.  It should be called\n     * as infrequently as possible from outside of the Tabs component as it causes a reflow of the\n     * page.\n     */\n    /**\n     * Updates the view whether pagination should be enabled or not.\n     *\n     * WARNING: Calling this method can be very costly in terms of performance.  It should be called\n     * as infrequently as possible from outside of the Tabs component as it causes a reflow of the\n     * page.\n     * @return {?}\n     */\n    MatTabHeader.prototype.updatePagination = /**\n     * Updates the view whether pagination should be enabled or not.\n     *\n     * WARNING: Calling this method can be very costly in terms of performance.  It should be called\n     * as infrequently as possible from outside of the Tabs component as it causes a reflow of the\n     * page.\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        /** @type {?} */\n        var 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            /** @type {?} */\n            var containerEl = this._tabListContainer.nativeElement;\n            /** @type {?} */\n            var 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        /** @type {?} */\n        var scrollDistance = this.scrollDistance;\n        /** @type {?} */\n        var platform = this._platform;\n        /** @type {?} */\n        var 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        // We round the `transform` here, because transforms with sub-pixel precision cause some\n        // browsers to blur the content of the element.\n        this._tabList.nativeElement.style.transform = \"translateX(\" + Math.round(translateX) + \"px)\";\n        // Setting the `transform` on IE will change the scroll offset of the parent, causing the\n        // position to be thrown off in some cases. We have to reset it ourselves to ensure that\n        // it doesn't get thrown off. Note that we scope it only to IE and Edge, because messing\n        // with the scroll position throws off Chrome 71+ in RTL mode (see #14689).\n        // @breaking-change 8.0.0 Remove null check for `platform`.\n        if (platform && (platform.TRIDENT || platform.EDGE)) {\n            this._tabListContainer.nativeElement.scrollLeft = 0;\n        }\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 {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._scrollTo(value);\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 {?} direction\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 {?} direction\n     * @return {?}\n     */\n    function (direction) {\n        /** @type {?} */\n        var viewLength = this._tabListContainer.nativeElement.offsetWidth;\n        // Move the scroll distance one-third the length of the tab list's viewport.\n        /** @type {?} */\n        var scrollAmount = (direction == 'before' ? -1 : 1) * viewLength / 3;\n        return this._scrollTo(this._scrollDistance + scrollAmount);\n    };\n    /** Handles click events on the pagination arrows. */\n    /**\n     * Handles click events on the pagination arrows.\n     * @param {?} direction\n     * @return {?}\n     */\n    MatTabHeader.prototype._handlePaginatorClick = /**\n     * Handles click events on the pagination arrows.\n     * @param {?} direction\n     * @return {?}\n     */\n    function (direction) {\n        this._stopInterval();\n        this._scrollHeader(direction);\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        /** @type {?} */\n        var 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        /** @type {?} */\n        var viewLength = this._tabListContainer.nativeElement.offsetWidth;\n        /** @type {?} */\n        var labelBeforePos;\n        /** @type {?} */\n        var 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        /** @type {?} */\n        var beforeVisiblePos = this.scrollDistance;\n        /** @type {?} */\n        var 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        /** @type {?} */\n        var 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        /** @type {?} */\n        var lengthOfTabList = this._tabList.nativeElement.scrollWidth;\n        /** @type {?} */\n        var 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        /** @type {?} */\n        var selectedLabelWrapper = this._labelWrappers && this._labelWrappers.length ?\n            this._labelWrappers.toArray()[this.selectedIndex].elementRef.nativeElement :\n            null;\n        this._inkBar.alignToElement((/** @type {?} */ (selectedLabelWrapper)));\n    };\n    /** Stops the currently-running paginator interval.  */\n    /**\n     * Stops the currently-running paginator interval.\n     * @return {?}\n     */\n    MatTabHeader.prototype._stopInterval = /**\n     * Stops the currently-running paginator interval.\n     * @return {?}\n     */\n    function () {\n        this._stopScrolling.next();\n    };\n    /**\n     * Handles the user pressing down on one of the paginators.\n     * Starts scrolling the header after a certain amount of time.\n     * @param direction In which direction the paginator should be scrolled.\n     */\n    /**\n     * Handles the user pressing down on one of the paginators.\n     * Starts scrolling the header after a certain amount of time.\n     * @param {?} direction In which direction the paginator should be scrolled.\n     * @return {?}\n     */\n    MatTabHeader.prototype._handlePaginatorPress = /**\n     * Handles the user pressing down on one of the paginators.\n     * Starts scrolling the header after a certain amount of time.\n     * @param {?} direction In which direction the paginator should be scrolled.\n     * @return {?}\n     */\n    function (direction) {\n        var _this = this;\n        // Avoid overlapping timers.\n        this._stopInterval();\n        // Start a timer after the delay and keep firing based on the interval.\n        timer(HEADER_SCROLL_DELAY, HEADER_SCROLL_INTERVAL)\n            // Keep the timer going until something tells it to stop or the component is destroyed.\n            .pipe(takeUntil(merge(this._stopScrolling, this._destroyed)))\n            .subscribe(function () {\n            var _a = _this._scrollHeader(direction), maxScrollDistance = _a.maxScrollDistance, distance = _a.distance;\n            // Stop the timer if we've reached the start or the end.\n            if (distance === 0 || distance >= maxScrollDistance) {\n                _this._stopInterval();\n            }\n        });\n    };\n    /**\n     * Scrolls the header to a given position.\n     * @param position Position to which to scroll.\n     * @returns Information on the current scroll distance and the maximum.\n     */\n    /**\n     * Scrolls the header to a given position.\n     * @private\n     * @param {?} position Position to which to scroll.\n     * @return {?} Information on the current scroll distance and the maximum.\n     */\n    MatTabHeader.prototype._scrollTo = /**\n     * Scrolls the header to a given position.\n     * @private\n     * @param {?} position Position to which to scroll.\n     * @return {?} Information on the current scroll distance and the maximum.\n     */\n    function (position) {\n        /** @type {?} */\n        var maxScrollDistance = this._getMaxScrollDistance();\n        this._scrollDistance = Math.max(0, Math.min(maxScrollDistance, position));\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        return { maxScrollDistance: maxScrollDistance, distance: this._scrollDistance };\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\\\" #previousPaginator aria-hidden=\\\"true\\\" mat-ripple [matRippleDisabled]=\\\"_disableScrollBefore || disableRipple\\\" [class.mat-tab-header-pagination-disabled]=\\\"_disableScrollBefore\\\" (click)=\\\"_handlePaginatorClick('before')\\\" (mousedown)=\\\"_handlePaginatorPress('before')\\\" (touchend)=\\\"_stopInterval()\\\"><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\\\" #nextPaginator aria-hidden=\\\"true\\\" mat-ripple [matRippleDisabled]=\\\"_disableScrollAfter || disableRipple\\\" [class.mat-tab-header-pagination-disabled]=\\\"_disableScrollAfter\\\" (mousedown)=\\\"_handlePaginatorPress('after')\\\" (click)=\\\"_handlePaginatorClick('after')\\\" (touchend)=\\\"_stopInterval()\\\"><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 (-ms-high-contrast:active){.mat-tab-label:focus{outline:dotted 2px}}.mat-tab-label.mat-tab-disabled{cursor:default}@media (-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 (-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 (-ms-high-contrast:active){.mat-ink-bar{outline:solid 2px;height:0}}.mat-tab-header-pagination{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:transparent;touch-action:none}.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}[mat-align-tabs=center] .mat-tab-labels{justify-content:center}[mat-align-tabs=end] .mat-tab-labels{justify-content:flex-end}\"],\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        { type: NgZone },\n        { type: Platform }\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        _nextPaginator: [{ type: ViewChild, args: ['nextPaginator',] }],\n        _previousPaginator: [{ type: ViewChild, args: ['previousPaginator',] }],\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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Used to generate unique ID's for each tab component\n * @type {?}\n */\nvar 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 * Injection token that can be used to provide the default options the tabs module.\n * @type {?}\n */\nvar MAT_TABS_CONFIG = new InjectionToken('MAT_TABS_CONFIG');\n// Boilerplate for applying mixins to MatTabGroup.\n/**\n * \\@docs-private\n */\nvar  \n// Boilerplate for applying mixins to MatTabGroup.\n/**\n * \\@docs-private\n */\nMatTabGroupBase = /** @class */ (function () {\n    function MatTabGroupBase(_elementRef) {\n        this._elementRef = _elementRef;\n    }\n    return MatTabGroupBase;\n}());\n/** @type {?} */\nvar _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, defaultConfig) {\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        _this.animationDuration = defaultConfig && defaultConfig.animationDuration ?\n            defaultConfig.animationDuration : '500ms';\n        return _this;\n    }\n    Object.defineProperty(MatTabGroup.prototype, \"dynamicHeight\", {\n        /** Whether the tab group should grow to the size of the active tab. */\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        /** The index of the active tab. */\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, \"animationDuration\", {\n        /** Duration for the tab animation. Will be normalized to milliseconds if no units are set. */\n        get: /**\n         * Duration for the tab animation. Will be normalized to milliseconds if no units are set.\n         * @return {?}\n         */\n        function () { return this._animationDuration; },\n        set: /**\n         * @param {?} value\n         * @return {?}\n         */\n        function (value) {\n            this._animationDuration = /^\\d+$/.test(value) ? value + 'ms' : value;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatTabGroup.prototype, \"backgroundColor\", {\n        /** Background color of the tab group. */\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            /** @type {?} */\n            var 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        /** @type {?} */\n        var 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            /** @type {?} */\n            var 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            /** @type {?} */\n            var 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                /** @type {?} */\n                var tabs = _this._tabs.toArray();\n                for (var 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                        _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     * @private\n     * @param {?} index\n     * @return {?}\n     */\n    MatTabGroup.prototype._createChangeEvent = /**\n     * @private\n     * @param {?} index\n     * @return {?}\n     */\n    function (index) {\n        /** @type {?} */\n        var 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     */\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     * @private\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     * @private\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    /** Clamps the given index to the bounds of 0 and the tabs length. */\n    /**\n     * Clamps the given index to the bounds of 0 and the tabs length.\n     * @private\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     * @private\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        /** @type {?} */\n        var 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        /** @type {?} */\n        var wrapper = this._tabBodyWrapper.nativeElement;\n        this._tabBodyWrapperHeight = wrapper.clientHeight;\n        wrapper.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 {?} index\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 {?} index\n     * @return {?}\n     */\n    function (tab, tabHeader, index) {\n        if (!tab.disabled) {\n            this.selectedIndex = tabHeader.focusIndex = index;\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\\\" [animationDuration]=\\\"animationDuration\\\" (_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 (-ms-high-contrast:active){.mat-tab-label:focus{outline:dotted 2px}}.mat-tab-label.mat-tab-disabled{cursor:default}@media (-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 (-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        { type: undefined, decorators: [{ type: Inject, args: [MAT_TABS_CONFIG,] }, { type: Optional }] }\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        animationDuration: [{ 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n// Boilerplate for applying mixins to MatTabNav.\n/**\n * \\@docs-private\n */\nvar  \n// Boilerplate for applying mixins to MatTabNav.\n/**\n * \\@docs-private\n */\nMatTabNavBase = /** @class */ (function () {\n    function MatTabNavBase(_elementRef) {\n        this._elementRef = _elementRef;\n    }\n    return MatTabNavBase;\n}());\n/** @type {?} */\nvar _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        /** Background color of the tab nav. */\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            /** @type {?} */\n            var 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 8.0.0 `element` parameter to be removed.\n     */\n    /**\n     * Notifies the component that the active link has been changed.\n     * \\@breaking-change 8.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 8.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 8.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            /** @type {?} */\n            var 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            /** @type {?} */\n            var 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-align-tabs=center] .mat-tab-links{justify-content:center}[mat-align-tabs=end] .mat-tab-links{justify-content:flex-end}.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 (-ms-high-contrast:active){.mat-tab-link:focus{outline:dotted 2px}}.mat-tab-link.mat-tab-disabled{cursor:default}@media (-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 (-ms-high-contrast:active){.mat-tab-link{opacity:1}}[mat-stretch-tabs] .mat-tab-link{flex-basis:0;flex-grow:1}.mat-tab-link.mat-tab-disabled{pointer-events:none}@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 (-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));\n// Boilerplate for applying mixins to MatTabLink.\nvar  \n// Boilerplate for applying mixins to MatTabLink.\nMatTabLinkBase = /** @class */ (function () {\n    function MatTabLinkBase() {\n    }\n    return MatTabLinkBase;\n}());\n/** @type {?} */\nvar _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, globalRippleOptions, 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        _this._tabLinkRipple = new RippleRenderer(_this, ngZone, _elementRef, platform);\n        _this._tabLinkRipple.setupTriggerEvents(_elementRef.nativeElement);\n        _this.rippleConfig = globalRippleOptions || {};\n        _this.tabIndex = parseInt(tabIndex) || 0;\n        if (_focusMonitor) {\n            _focusMonitor.monitor(_elementRef);\n        }\n        return _this;\n    }\n    Object.defineProperty(MatTabLink.prototype, \"active\", {\n        /** Whether the link is 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.rippleConfig.disabled;\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);\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                    }\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: String, 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { MatInkBar, _MAT_INK_BAR_POSITIONER, MatTabBody, MatTabBodyPortal, MatTabHeader, MatTabLabelWrapper, MatTab, MatTabLabel, MatTabNav, MatTabLink, MatTabContent, MatTabsModule, MatTabChangeEvent, MAT_TABS_CONFIG, 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","/**\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\";\nimport * as i6 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], [2, i5.HAMMER_LOADER]]), i0.ɵmpd(1073742336, i1.MatProgressBarModule, i1.MatProgressBarModule, [])]); });\nexport { MatProgressBarModuleNgFactory as MatProgressBarModuleNgFactory };\nvar styles_MatProgressBar = [\".mat-progress-bar{display:block;height:4px;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 (-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 (-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 (-ms-high-contrast:active){.mat-progress-bar .mat-progress-bar-fill{border-top:solid 4px}}.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(-8px)}}\"];\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, [i0.ɵqud(402653184, 1, { _primaryValueBar: 0 }), (_l()(), i0.ɵeld(1, 0, null, null, 4, \":svg:svg\", [[\"class\", \"mat-progress-bar-background mat-progress-bar-element\"], [\"focusable\", \"false\"], [\"height\", \"4\"], [\"width\", \"100%\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(2, 0, null, null, 2, \":svg:defs\", [], null, null, null, null, null)), (_l()(), i0.ɵeld(3, 0, null, null, 1, \":svg:pattern\", [[\"height\", \"4\"], [\"patternUnits\", \"userSpaceOnUse\"], [\"width\", \"8\"], [\"x\", \"4\"], [\"y\", \"0\"]], [[8, \"id\", 0]], null, null, null, null)), (_l()(), i0.ɵeld(4, 0, null, null, 0, \":svg:circle\", [[\"cx\", \"2\"], [\"cy\", \"2\"], [\"r\", \"2\"]], null, null, null, null, null)), (_l()(), i0.ɵeld(5, 0, null, null, 0, \":svg:rect\", [[\"height\", \"100%\"], [\"width\", \"100%\"]], [[1, \"fill\", 0]], null, null, null, null)), (_l()(), i0.ɵeld(6, 0, null, null, 1, \"div\", [[\"class\", \"mat-progress-bar-buffer mat-progress-bar-element\"]], null, null, null, null, null)), i0.ɵdid(7, 278528, null, 0, i2.NgStyle, [i0.KeyValueDiffers, i0.ElementRef, i0.Renderer2], { ngStyle: [0, \"ngStyle\"] }, null), (_l()(), i0.ɵeld(8, 0, [[1, 0], [\"primaryValueBar\", 1]], null, 1, \"div\", [[\"class\", \"mat-progress-bar-primary mat-progress-bar-fill mat-progress-bar-element\"]], null, null, null, null, null)), i0.ɵdid(9, 278528, null, 0, i2.NgStyle, [i0.KeyValueDiffers, i0.ElementRef, i0.Renderer2], { ngStyle: [0, \"ngStyle\"] }, null), (_l()(), i0.ɵeld(10, 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, 7, 0, currVal_2); var currVal_3 = _co._primaryTransform(); _ck(_v, 9, 0, currVal_3); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.progressbarId; _ck(_v, 3, 0, currVal_0); var currVal_1 = _co._rectangleFillValue; _ck(_v, 5, 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, 4374528, null, 0, i1.MatProgressBar, [i0.ElementRef, i0.NgZone, [2, i6.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)._isNoopAnimation; _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\" }, { animationEnd: \"animationEnd\" }, []);\nexport { MatProgressBarNgFactory as MatProgressBarNgFactory };\n","<svg width=\"100%\" height=\"4\" focusable=\"false\" class=\"mat-progress-bar-background mat-progress-bar-element\"><defs><pattern [id]=\"progressbarId\" x=\"4\" y=\"0\" width=\"8\" height=\"4\" patternUnits=\"userSpaceOnUse\"><circle cx=\"2\" cy=\"2\" r=\"2\"/></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()\" #primaryValueBar></div><div class=\"mat-progress-bar-secondary mat-progress-bar-fill mat-progress-bar-element\"></div>","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/platform-browser\";\nimport * as i4 from \"@angular/cdk/platform\";\nimport * as i5 from \"@angular/common\";\nimport * as i6 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], [2, i3.HAMMER_LOADER]])]); });\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], i4.Platform]), i0.ɵmpd(1073742336, i4.PlatformModule, i4.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], i4.Platform]), i0.ɵmpd(1073742336, i4.PlatformModule, i4.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], [2, i3.HAMMER_LOADER]]), 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, i5.NgLocalization, i5.NgLocaleLocalization, [i0.LOCALE_ID, [2, i5.ɵangular_packages_common_common_a]]), i0.ɵmpd(1073742336, i2.BidiModule, i2.BidiModule, []), i0.ɵmpd(1073742336, i1.MatCommonModule, i1.MatCommonModule, [[2, i1.MATERIAL_SANITY_CHECKS], [2, i3.HAMMER_LOADER]]), i0.ɵmpd(1073742336, i4.PlatformModule, i4.PlatformModule, []), i0.ɵmpd(1073742336, i1.MatRippleModule, i1.MatRippleModule, []), i0.ɵmpd(1073742336, i5.CommonModule, i5.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], [2, i3.HAMMER_LOADER]]), i0.ɵmpd(1073742336, i4.PlatformModule, i4.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 (-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 .mat-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}@media (-ms-high-contrast:active){.mat-option .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, i6.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, i5.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, i4.Platform, [2, i1.MAT_RIPPLE_GLOBAL_OPTIONS], [2, i6.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, 2, \"label\", [[\"class\", \"mat-optgroup-label\"]], [[8, \"id\", 0]], null, null, null, null)), (_l()(), i0.ɵted(1, null, [\"\", \"\"])), i0.ɵncd(null, 0), i0.ɵncd(null, 1)], 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:16px;height:16px;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:5px;left:1px;width:10px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{top:2.4px;left:1px;width:8px;height:3px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}\"];\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, i6.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 { __extends } from 'tslib';\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, ScrollDispatcher, ViewportRuler, ScrollingModule } 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, distinctUntilChanged } from 'rxjs/operators';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { MatCommonModule } from '@angular/material/core';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Animations used by the Material drawers.\n * \\@docs-private\n * @type {?}\n */\nvar matDrawerAnimations = {\n    /**\n     * Animation that slides a drawer in and out.\n     */\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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Throws an exception when two MatDrawer are matching the same position.\n * \\@docs-private\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 * @type {?}\n */\nvar 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 (_super) {\n    __extends(MatDrawerContent, _super);\n    function MatDrawerContent(_changeDetectorRef, _container, elementRef, scrollDispatcher, ngZone) {\n        var _this = _super.call(this, elementRef, scrollDispatcher, ngZone) || this;\n        _this._changeDetectorRef = _changeDetectorRef;\n        _this._container = _container;\n        return _this;\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        { type: ElementRef },\n        { type: ScrollDispatcher },\n        { type: NgZone }\n    ]; };\n    return MatDrawerContent;\n}(CdkScrollable));\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 Subject();\n        /**\n         * Emits whenever the drawer is done animating.\n         */\n        this._animationEnd = new Subject();\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 */ true);\n        /**\n         * Emits when the component is destroyed.\n         */\n        this._destroyed = new Subject();\n        /**\n         * Event emitted when the drawer's position changes.\n         */\n        // tslint:disable-next-line:no-output-on-prefix\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; }), takeUntil(_this._destroyed)).subscribe(function (event) { return _this._ngZone.run(function () {\n                _this.close();\n                event.stopPropagation();\n            }); });\n        });\n        // We need a Subject with distinctUntilChanged, because the `done` event\n        // fires twice on some browsers. See https://github.com/angular/angular/issues/24084\n        this._animationEnd.pipe(distinctUntilChanged(function (x, y) {\n            return x.fromState === y.fromState && x.toState === y.toState;\n        })).subscribe(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    }\n    Object.defineProperty(MatDrawer.prototype, \"position\", {\n        /** The side that the drawer is attached to. */\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        /** Mode of the drawer; one of 'over', 'push' or 'side'. */\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        /** Whether the drawer can be closed with the escape key or by clicking on the backdrop. */\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        /** Whether the drawer should focus the first focusable element automatically when opened. */\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        /** Event emitted when the drawer has been opened. */\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        /** Event emitted when the drawer has started opening. */\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        /** Event emitted when the drawer has been closed. */\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        /** Event emitted when the drawer has started closing. */\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    /** Traps focus inside the drawer. */\n    /**\n     * Traps focus inside the drawer.\n     * @private\n     * @return {?}\n     */\n    MatDrawer.prototype._trapFocus = /**\n     * Traps focus inside the drawer.\n     * @private\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     */\n    /**\n     * If focus is currently inside the drawer, restores it to where it was before the drawer\n     * opened.\n     * @private\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     * @private\n     * @return {?}\n     */\n    function () {\n        if (!this.autoFocus) {\n            return;\n        }\n        /** @type {?} */\n        var 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        this._animationStarted.complete();\n        this._animationEnd.complete();\n        this._destroyed.next();\n        this._destroyed.complete();\n    };\n    Object.defineProperty(MatDrawer.prototype, \"opened\", {\n        /**\n         * Whether the drawer is opened. We overload this because we trigger an event when it\n         * starts or end.\n         */\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    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: \"<div class=\\\"mat-drawer-inner-container\\\"><ng-content></ng-content></div>\",\n                    animations: [matDrawerAnimations.transformDrawer],\n                    host: {\n                        'class': 'mat-drawer',\n                        '[@transform]': '_animationState',\n                        '(@transform.start)': '_animationStarted.next($event)',\n                        '(@transform.done)': '_animationEnd.next($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    /**\n     * @deprecated viewportRuler to become a required parameter.\n     * @breaking-change 8.0.0\n     */\n    viewportRuler) {\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        // Since the minimum width of the sidenav depends on the viewport width,\n        // we need to recompute the margins if the viewport changes.\n        if (viewportRuler) {\n            viewportRuler.change()\n                .pipe(takeUntil(this._destroyed))\n                .subscribe(function () { return _this._updateContentMargins(); });\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        /**\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         */\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        /**\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         */\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    Object.defineProperty(MatDrawerContainer.prototype, \"scrollable\", {\n        /** Reference to the CdkScrollable instance that wraps the scrollable content. */\n        get: /**\n         * Reference to the CdkScrollable instance that wraps the scrollable content.\n         * @return {?}\n         */\n        function () {\n            return this._userContent || this._content;\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        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     */\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     * @private\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     * @private\n     * @param {?} drawer\n     * @return {?}\n     */\n    function (drawer) {\n        var _this = this;\n        drawer._animationStarted.pipe(filter(function (event) { return event.fromState !== event.toState; }), takeUntil(this._drawers.changes))\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     */\n    /**\n     * Subscribes to drawer onPositionChanged event in order to\n     * re-validate drawers when the position changes.\n     * @private\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     * @private\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    /** Subscribes to changes in drawer mode so we can run change detection. */\n    /**\n     * Subscribes to changes in drawer mode so we can run change detection.\n     * @private\n     * @param {?} drawer\n     * @return {?}\n     */\n    MatDrawerContainer.prototype._watchDrawerMode = /**\n     * Subscribes to changes in drawer mode so we can run change detection.\n     * @private\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    /** Toggles the 'mat-drawer-opened' class on the main 'mat-drawer-container' element. */\n    /**\n     * Toggles the 'mat-drawer-opened' class on the main 'mat-drawer-container' element.\n     * @private\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     * @private\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    /** Validate the state of the drawer children components. */\n    /**\n     * Validate the state of the drawer children components.\n     * @private\n     * @return {?}\n     */\n    MatDrawerContainer.prototype._validateDrawers = /**\n     * Validate the state of the drawer children components.\n     * @private\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    /** Whether the container is being pushed to the side by one of the drawers. */\n    /**\n     * Whether the container is being pushed to the side by one of the drawers.\n     * @private\n     * @return {?}\n     */\n    MatDrawerContainer.prototype._isPushed = /**\n     * Whether the container is being pushed to the side by one of the drawers.\n     * @private\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 (/** @type {?} */ (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     * @private\n     * @param {?} drawer\n     * @return {?}\n     */\n    MatDrawerContainer.prototype._canHaveBackdrop = /**\n     * @private\n     * @param {?} drawer\n     * @return {?}\n     */\n    function (drawer) {\n        return drawer.mode !== 'side' || !!this._backdropOverride;\n    };\n    /**\n     * @private\n     * @param {?} drawer\n     * @return {?}\n     */\n    MatDrawerContainer.prototype._isDrawerOpen = /**\n     * @private\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     */\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     * @private\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     * @private\n     * @return {?}\n     */\n    function () {\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 _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        /** @type {?} */\n        var left = 0;\n        /** @type {?} */\n        var 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                /** @type {?} */\n                var 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                /** @type {?} */\n                var 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\\\"><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-container.ng-animate-disabled .mat-drawer-backdrop,.mat-drawer-container.ng-animate-disabled .mat-drawer-content,.ng-animate-disabled .mat-drawer-container .mat-drawer-backdrop,.ng-animate-disabled .mat-drawer-container .mat-drawer-content{transition:none}.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 (-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 (-ms-high-contrast:active){.mat-drawer,[dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}}@media (-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-inner-container{width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}.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: String, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] }] },\n        { type: ViewportRuler, decorators: [{ type: Optional }] }\n    ]; };\n    MatDrawerContainer.propDecorators = {\n        _drawers: [{ type: ContentChildren, args: [MatDrawer,] }],\n        _content: [{ type: ContentChild, args: [MatDrawerContent,] }],\n        _userContent: [{ type: ViewChild, args: [MatDrawerContent,] }],\n        autosize: [{ type: Input }],\n        hasBackdrop: [{ type: Input }],\n        backdropClick: [{ type: Output }]\n    };\n    return MatDrawerContainer;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar MatSidenavContent = /** @class */ (function (_super) {\n    __extends(MatSidenavContent, _super);\n    function MatSidenavContent(changeDetectorRef, container, elementRef, scrollDispatcher, ngZone) {\n        return _super.call(this, changeDetectorRef, container, elementRef, scrollDispatcher, ngZone) || 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        { type: ElementRef },\n        { type: ScrollDispatcher },\n        { type: NgZone }\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        /** Whether the sidenav is fixed in the viewport. */\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        /**\n         * The gap between the top of the sidenav and the top of the viewport when the sidenav is in fixed\n         * mode.\n         */\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        /**\n         * The gap between the bottom of the sidenav and the bottom of the viewport when the sidenav is in\n         * fixed mode.\n         */\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: \"<div class=\\\"mat-drawer-inner-container\\\"><ng-content></ng-content></div>\",\n                    animations: [matDrawerAnimations.transformDrawer],\n                    host: {\n                        'class': 'mat-drawer mat-sidenav',\n                        'tabIndex': '-1',\n                        '[@transform]': '_animationState',\n                        '(@transform.start)': '_animationStarted.next($event)',\n                        '(@transform.done)': '_animationEnd.next($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    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-container.ng-animate-disabled .mat-drawer-backdrop,.mat-drawer-container.ng-animate-disabled .mat-drawer-content,.ng-animate-disabled .mat-drawer-container .mat-drawer-backdrop,.ng-animate-disabled .mat-drawer-container .mat-drawer-content{transition:none}.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 (-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 (-ms-high-contrast:active){.mat-drawer,[dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}}@media (-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-inner-container{width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}.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    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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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                        ScrollingModule,\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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { MatSidenavModule, throwMatDuplicatedDrawerError, MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY, MAT_DRAWER_DEFAULT_AUTOSIZE, 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 { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directive, EventEmitter, Input, isDevMode, Output, Injectable, SkipSelf, Optional, NgModule, ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewEncapsulation, Inject, defineInjectable } from '@angular/core';\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 { CommonModule } from '@angular/common';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n// Boilerplate for applying mixins to MatSort.\n/**\n * \\@docs-private\n */\nvar  \n// Boilerplate for applying mixins to MatSort.\n/**\n * \\@docs-private\n */\nMatSortBase = /** @class */ (function () {\n    function MatSortBase() {\n    }\n    return MatSortBase;\n}());\n/** @type {?} */\nvar _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        /** The sort direction of the currently active MatSortable. */\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        /**\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         */\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        /** @type {?} */\n        var disableClear = sortable.disableClear != null ? sortable.disableClear : this.disableClear;\n        /** @type {?} */\n        var sortDirectionCycle = getSortDirectionCycle(sortable.start || this.start, disableClear);\n        // Get and return the next direction in the cycle\n        /** @type {?} */\n        var 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    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    /** @type {?} */\n    var 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar SORT_ANIMATION_TRANSITION = AnimationDurations.ENTERING + ' ' +\n    AnimationCurves.STANDARD_CURVE;\n/**\n * Animations used by MatSort.\n * \\@docs-private\n * @type {?}\n */\nvar matSortAnimations = {\n    /**\n     * Animation that moves the sort indicator.\n     */\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    /**\n     * Animation that rotates the left pointer of the indicator based on the sorting direction.\n     */\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    /**\n     * Animation that rotates the right pointer of the indicator based on the sorting direction.\n     */\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    /**\n     * Animation that controls the arrow opacity.\n     */\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    /**\n     * Necessary trigger that calls animate on children animations.\n     */\n    allowChildren: trigger('allowChildren', [\n        transition('* <=> *', [\n            query('@*', animateChild(), { optional: true })\n        ])\n    ]),\n};\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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 * @type {?}\n */\nvar 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n// Boilerplate for applying mixins to the sort header.\n/**\n * \\@docs-private\n */\nvar  \n// Boilerplate for applying mixins to the sort header.\n/**\n * \\@docs-private\n */\nMatSortHeaderBase = /** @class */ (function () {\n    function MatSortHeaderBase() {\n    }\n    return MatSortHeaderBase;\n}());\n/** @type {?} */\nvar _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, _columnDef) {\n        var _this = \n        // Note that we use a string token for the `_columnDef`, because the value is provided both by\n        // `material/table` and `cdk/table` and we can't have the CDK depending on Material,\n        // and we want to avoid having the sort header depending on the CDK table because\n        // of this single reference.\n        _super.call(this) || this;\n        _this._intl = _intl;\n        _this._sort = _sort;\n        _this._columnDef = _columnDef;\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        /** Overrides the disable clear value of the containing MatSort for this MatSortable. */\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._columnDef) {\n            this.id = this._columnDef.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        /** @type {?} */\n        var 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        /** @type {?} */\n        var 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-button::-moz-focus-inner{border:0}.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 (-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 (-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 (-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: undefined, decorators: [{ type: Inject, args: ['MAT_SORT_HEADER_COLUMN_DEF',] }, { 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { MatSortModule, MatSortHeaderBase, _MatSortHeaderMixinBase, MatSortHeader, MAT_SORT_HEADER_INTL_PROVIDER_FACTORY, MatSortHeaderIntl, MAT_SORT_HEADER_INTL_PROVIDER, MatSortBase, _MatSortMixinBase, MatSort, matSortAnimations };\n//# sourceMappingURL=sort.es5.js.map\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","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        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 extendStatics(d, b);\n    };\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","/**\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/platform-browser\";\nimport * as i7 from \"@angular/cdk/platform\";\nimport * as i8 from \"@angular/cdk/portal\";\nimport * as i9 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, [2, i2.Location]]), 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], [2, i6.HAMMER_LOADER]]), i0.ɵmpd(1073742336, i7.PlatformModule, i7.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, i8.PortalModule, i8.PortalModule, []), i0.ɵmpd(1073742336, i9.ScrollingModule, i9.ScrollingModule, []), 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%;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.mat-autocomplete-panel.mat-autocomplete-visible{visibility:visible}.mat-autocomplete-panel.mat-autocomplete-hidden{visibility:hidden}.mat-autocomplete-panel-above .mat-autocomplete-panel{border-radius:0;border-top-left-radius:4px;border-top-right-radius:4px}.mat-autocomplete-panel .mat-divider-horizontal{margin-top:-1px}@media (-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","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    hash: 'root';\r\n    path: '';\r\n}\r\n\r\nexport const ROOT_FOLDER: RootFolder = {\r\n    id: 'root',\r\n    hash: 'root',\r\n    path: '',\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    queryParams = {};\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    queryParams?: object;\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    queryParams: {\r\n        recentOnly: true,\r\n    }\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    queryParams: {\r\n        sharedOnly: true,\r\n    }\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    queryParams: {\r\n        deletedOnly: true,\r\n    }\r\n});\r\n\r\nexport const STARRED_PAGE = new DrivePage({\r\n    name: DRIVE_PAGE_NAMES.STARRED,\r\n    viewName: 'Starred',\r\n    queryParams: {\r\n        starredOnly: true,\r\n    }\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 __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        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 extendStatics(d, b);\n    };\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        this.queryParams = {};\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    queryParams: {\n        recentOnly: true,\n    }\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    queryParams: {\n        sharedOnly: true,\n    }\n});\nexport var TRASH_PAGE = new DrivePage({\n    name: DRIVE_PAGE_NAMES.TRASH,\n    viewName: 'Trash',\n    hasActions: true,\n    queryParams: {\n        deletedOnly: true,\n    }\n});\nexport var STARRED_PAGE = new DrivePage({\n    name: DRIVE_PAGE_NAMES.STARRED,\n    viewName: 'Starred',\n    queryParams: {\n        starredOnly: true,\n    }\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","var __assign = (this && this.__assign) || function () {\n    __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    };\n    return __assign.apply(this, arguments);\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, oldLocation, entries) {\n        this.destination = destination;\n        this.oldLocation = oldLocation;\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(\r\n        public destination: number | 'root',\r\n        public oldLocation: number | 'root',\r\n        public entries: DriveEntry[]\r\n    ) {}\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: DriveFolder|RootFolder, 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\nexport class UpdateEntryDescription {\r\n    static readonly type = '[Drive] Update Entry Description';\r\n    constructor(public entry: FileEntry, public description: string) {}\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';\nimport { CurrentUser } from '../../../../common/auth/current-user';\n\nexport interface FilePreviewOverlayData {\n    entries: DriveEntry[];\n    activeEntry?: number;\n    hideMoreOptionsBtn?: boolean;\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    @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        private currentUser: CurrentUser,\n        @Inject(OVERLAY_PANEL_DATA) public data: FilePreviewOverlayData\n    ) {}\n\n    ngAfterViewInit() {\n        this.bindToDownload();\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    public canDownload() {\n        return this.data.entries.every(entry => {\n            if ( ! entry.users) entry.users = [];\n            const user = entry.users && entry.users.find(u => u.id === this.currentUser.get('id'));\n            return user && (user.owns_entry || user.entry_permissions.download);\n        });\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 update(entryId: number, params: {name?: string, description?: string}): BackendResponse<{fileEntry: DriveEntry}> {\n        return this.http.put('uploads/' + entryId, 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.update = function (entryId, params) {\n        return this.http.put('uploads/' + entryId, 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","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 __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        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 extendStatics(d, b);\n    };\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","var __assign = (this && this.__assign) || function () {\n    __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    };\n    return __assign.apply(this, arguments);\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 { catchError, 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, UpdateEntryDescription, } 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';\nimport { EMPTY } from 'rxjs';\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 || oldState.meta.sortColumn || newState.activePage.sortColumn;\n        newState.meta.sortDirection = action.queryParams.orderDir || oldState.meta.sortDirection || 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(__assign({}, action.queryParams, newState.activePage.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.slice();\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] = __assign({}, 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 entries = action.entries || ctx.getState().selectedEntries;\n        if (!DriveState_1.canMoveEntriesTo(entries, action.destination))\n            return;\n        ctx.dispatch(new ShowLoadingToast(LoadingToastMessages.moveEntries));\n        var minimal = entries.map(function (entry) {\n            return { id: entry.id, type: entry.type === 'folder' ? 'folder' : 'file' };\n        });\n        var oldLocation = entries[0].parent_id;\n        return this.entriesApi.moveEntries({ entries: minimal, destination: action.destination.id }).pipe(finalize(function () { return ctx.dispatch(new HideLoadingToast()); }), tap(function (response) {\n            return ctx.dispatch(new MoveEntriesSuccess(action.destination.id, oldLocation, 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(catchError(function () { return EMPTY; }), 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.name === TRASH_PAGE.name) {\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 mainEntries = ctx.getState().entries.slice(), selectedEntries = ctx.getState().selectedEntries.slice();\n        action.entries.forEach(function (updatedEntry) {\n            // update main entries\n            var mainIndex = mainEntries.findIndex(function (entry) { return updatedEntry.id === entry.id; });\n            mainEntries[mainIndex] = __assign({}, mainEntries[mainIndex], updatedEntry);\n            // update selected entries\n            var selectedIndex = selectedEntries.findIndex(function (entry) { return updatedEntry.id === entry.id; });\n            if (selectedIndex > -1) {\n                selectedEntries[selectedIndex] = __assign({}, selectedEntries[selectedIndex], updatedEntry);\n            }\n        });\n        ctx.patchState({ entries: mainEntries, selectedEntries: selectedEntries });\n    };\n    DriveState.prototype.updateEntryDescription = function (ctx, _a) {\n        var entry = _a.entry, description = _a.description;\n        return this.entriesApi.update(entry.id, { description: description })\n            .pipe(tap(function (response) {\n            ctx.dispatch(new UpdateEntries([response.fileEntry]));\n        }));\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        entry.tags = entry.tags.filter(function (t) { return t.id !== tag.id; });\n        return entry;\n    };\n    DriveState.canMoveEntriesTo = function (movingEntries, folder) {\n        if (!folder)\n            return false;\n        // should not be able to move folder into it's\n        // own child or same folder it's already in\n        return movingEntries.every(function (entry) {\n            // trying to move file to root, but file is already in root\n            if (folder.id === 'root' && entry.parent_id === null)\n                return false;\n            // entry is already in this folder\n            if (folder.id === entry.parent_id)\n                return false;\n            // trying to move folder into it's own child\n            if (folder.path.startsWith(entry.path))\n                return false;\n            return true;\n        });\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(UpdateEntryDescription),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", [Object, UpdateEntryDescription]),\n        __metadata(\"design:returntype\", void 0)\n    ], DriveState.prototype, \"updateEntryDescription\", 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 { catchError, 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,\r\n    SetCurrentUser, UpdateEntryDescription,\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 { EMPTY, of } from 'rxjs';\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 || oldState.meta.sortColumn || newState.activePage.sortColumn;\r\n        newState.meta.sortDirection = action.queryParams.orderDir || oldState.meta.sortDirection || 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        const params = this.transformQueryParams({\r\n            ...action.queryParams,\r\n            ...newState.activePage.queryParams,\r\n        });\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.slice();\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] = {...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 entries = action.entries || ctx.getState().selectedEntries;\r\n\r\n        if ( ! DriveState.canMoveEntriesTo(entries, action.destination)) return;\r\n\r\n        ctx.dispatch(new ShowLoadingToast(LoadingToastMessages.moveEntries));\r\n\r\n        const minimal = entries.map(entry => {\r\n            return {id: entry.id, type: entry.type === 'folder' ? 'folder' : 'file'};\r\n        });\r\n\r\n        const oldLocation = entries[0].parent_id;\r\n\r\n        return this.entriesApi.moveEntries({entries: minimal, destination: action.destination.id}).pipe(\r\n            finalize(() => ctx.dispatch(new HideLoadingToast())),\r\n            tap(response => {\r\n                return ctx.dispatch(new MoveEntriesSuccess(action.destination.id, oldLocation, 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(\r\n            catchError(() => EMPTY),\r\n            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\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.name === TRASH_PAGE.name) {\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 mainEntries = ctx.getState().entries.slice(),\r\n            selectedEntries = ctx.getState().selectedEntries.slice();\r\n\r\n        action.entries.forEach(updatedEntry => {\r\n            // update main entries\r\n            const mainIndex = mainEntries.findIndex(entry => updatedEntry.id === entry.id);\r\n            mainEntries[mainIndex] = {...mainEntries[mainIndex], ...updatedEntry};\r\n\r\n            // update selected entries\r\n            const selectedIndex = selectedEntries.findIndex(entry => updatedEntry.id === entry.id);\r\n            if (selectedIndex > -1) {\r\n                selectedEntries[selectedIndex] = {...selectedEntries[selectedIndex], ...updatedEntry};\r\n            }\r\n        });\r\n\r\n        ctx.patchState({entries: mainEntries, selectedEntries});\r\n    }\r\n\r\n    @Action(UpdateEntryDescription)\r\n    updateEntryDescription(ctx: StateContext<DriveStateModel>, {entry, description}: UpdateEntryDescription) {\r\n        return this.entriesApi.update(entry.id, {description})\r\n            .pipe(tap(response => {\r\n                ctx.dispatch(new UpdateEntries([response.fileEntry]));\r\n            }));\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        entry.tags = entry.tags.filter(t => t.id !== tag.id);\r\n        return entry;\r\n    }\r\n\r\n    static canMoveEntriesTo(movingEntries: DriveEntry[], folder: DriveFolder|RootFolder) {\r\n        if ( ! folder) return false;\r\n\r\n        // should not be able to move folder into it's\r\n        // own child or same folder it's already in\r\n        return movingEntries.every(entry => {\r\n            // trying to move file to root, but file is already in root\r\n            if (folder.id === 'root' && entry.parent_id === null) return false;\r\n\r\n            // entry is already in this folder\r\n            if (folder.id === entry.parent_id) return false;\r\n\r\n            // trying to move folder into it's own child\r\n            if (folder.path.startsWith(entry.path)) return false;\r\n\r\n            return true;\r\n        });\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';\nimport { PaginationResponse } from '../../../../common/core/types/pagination-response';\nimport { FileEntry } from '../../../../common/uploads/file-entry';\n\nexport interface GetLinkData {\n    link: ShareableLink;\n    folderChildren: PaginationResponse<FileEntry>;\n}\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, page?: number, order?: string}): BackendResponse<GetLinkData> {\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) || function () {\n    __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    };\n    return __assign.apply(this, arguments);\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(function () { return 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(function () { return 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(function () { return 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                const msg = {message: `Deleted :count items.`, replacements: {count: action.deletedFiles.length}};\r\n                this.toast.open(msg, {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(\r\n                    {message: 'Moved :count items.', replacements: {count: action.entries.length}}\r\n                );\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({\r\n                    message: `Permanently deleted :count items.`,\r\n                    replacements: {count: action.entries.length}\r\n                });\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({\r\n                    message: `Restored :count items.`,\r\n                    replacements: {count: action.entries.length}\r\n                });\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({\r\n                    message: `:oldName renamed to :newName`,\r\n                    replacements: {oldName: action.entry.name, newName: action.newName}\r\n                });\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","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';\nimport { EntryDescriptionPanelComponent } from './details-sidebar/details-panel/entry-description-panel/entry-description-panel.component';\nimport { FolderPreviewComponent } from './preview/folder-preview/folder-preview.component';\nimport { EntriesSortButtonComponent } from './header/entries-sort-button/entries-sort-button.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        EntryDescriptionPanelComponent,\n        FolderPreviewComponent,\n        EntriesSortButtonComponent,\n    ],\n    entryComponents: [\n        DriveContextMenuComponent,\n        CrupdateFolderDialogComponent,\n        RenameEntryDialogComponent,\n        UploadsPanelComponent,\n        MoveEntriesDialogComponent,\n        FilePreviewOverlayComponent,\n        LoadingToastComponent,\n        FolderPreviewComponent,\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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"password-custom\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i5.View_MatIcon_0, i5.RenderType_MatIcon)), i1.ɵdid(1, 9158656, null, 0, i6.MatIcon, [i1.ElementRef, i6.MatIconRegistry, [8, null], [2, i6.MAT_ICON_LOCATION]], { 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_k]], { 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_2 = \"password-custom\"; _ck(_v, 1, 0, currVal_2); var currVal_18 = \"\"; _ck(_v, 20, 0, currVal_18); var currVal_19 = _co.passwordControl; _ck(_v, 23, 0, currVal_19); var currVal_20 = i1.ɵunv(_v, 32, 0, i1.ɵnov(_v, 33).transform(_co.passwordError$)); _ck(_v, 32, 0, currVal_20); var currVal_23 = \"primary\"; _ck(_v, 37, 0, currVal_23); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 1).inline; var currVal_1 = (((i1.ɵnov(_v, 1).color !== \"primary\") && (i1.ɵnov(_v, 1).color !== \"accent\")) && (i1.ɵnov(_v, 1).color !== \"warn\")); _ck(_v, 0, 0, currVal_0, currVal_1); var currVal_3 = i1.ɵnov(_v, 6).ngClassUntouched; var currVal_4 = i1.ɵnov(_v, 6).ngClassTouched; var currVal_5 = i1.ɵnov(_v, 6).ngClassPristine; var currVal_6 = i1.ɵnov(_v, 6).ngClassDirty; var currVal_7 = i1.ɵnov(_v, 6).ngClassValid; var currVal_8 = i1.ɵnov(_v, 6).ngClassInvalid; var currVal_9 = i1.ɵnov(_v, 6).ngClassPending; _ck(_v, 3, 0, currVal_3, currVal_4, currVal_5, currVal_6, currVal_7, currVal_8, currVal_9); var currVal_10 = (i1.ɵnov(_v, 20).required ? \"\" : null); var currVal_11 = i1.ɵnov(_v, 25).ngClassUntouched; var currVal_12 = i1.ɵnov(_v, 25).ngClassTouched; var currVal_13 = i1.ɵnov(_v, 25).ngClassPristine; var currVal_14 = i1.ɵnov(_v, 25).ngClassDirty; var currVal_15 = i1.ɵnov(_v, 25).ngClassValid; var currVal_16 = i1.ɵnov(_v, 25).ngClassInvalid; var currVal_17 = i1.ɵnov(_v, 25).ngClassPending; _ck(_v, 18, 0, currVal_10, currVal_11, currVal_12, currVal_13, currVal_14, currVal_15, currVal_16, currVal_17); var currVal_21 = (i1.ɵnov(_v, 37).disabled || null); var currVal_22 = (i1.ɵnov(_v, 37)._animationMode === \"NoopAnimations\"); _ck(_v, 35, 0, currVal_21, currVal_22); }); }\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);border:1px solid #e0e0e0;padding:25px;border-radius:4px;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    'powerPoint',\r\n    'word',\r\n    'spreadsheet',\r\n];\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, OnChanges } from '@angular/core';\nimport { SUPPORTED_ENTRY_TYPES } from '../../../entries/supported-entry-types';\nimport { kebabCase } from '../../../../../common/core/utils/kebab-case';\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    public getType() {\n        return kebabCase(this.type);\n    }\n}\n","import { snakeCase } from './snake-case';\r\n\r\nexport function kebabCase(text: string) {\r\n    return snakeCase(text).replace('_', '-');\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 \"./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 notranslate\"], [\"role\", \"img\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", 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, 9158656, null, 0, i4.MatIcon, [i1.ElementRef, i4.MatIconRegistry, [8, null], [2, i4.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_2 = \"file-color\"; var currVal_3 = (_co.getType() + \"-file\"); _ck(_v, 1, 0, currVal_2, currVal_3); var currVal_4 = (_co.getType() + \"-file-custom\"); _ck(_v, 2, 0, currVal_4); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 2).inline; var currVal_1 = (((i1.ɵnov(_v, 2).color !== \"primary\") && (i1.ɵnov(_v, 2).color !== \"accent\")) && (i1.ɵnov(_v, 2).color !== \"warn\")); _ck(_v, 0, 0, currVal_0, currVal_1); }); }\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]=\"getType() + '-file-custom'\"\n        class=\"file-color\"\n        [ngClass]=\"getType() + '-file'\"\n></mat-icon>","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        let url = this.settings.getBaseUrl(true) + this.file.url;\n        if (this.file.thumbnail) url += '?thumbnail=true';\n        return 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, 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:4px;overflow:hidden;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.drag-over .files-grid-item-footer{background-color:#e8f0fe}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 {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","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 { 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|RootFolder;\n\n        return DriveState.canMoveEntriesTo(entries, folder);\n    }\n\n    protected executeAction() {\n        return this.store.dispatch(new MoveEntries(this.folder));\n    }\n}\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        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 extendStatics(d, b);\n    };\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';\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        return DriveState.canMoveEntriesTo(entries, folder);\n    };\n    FolderDropTargetDirective.prototype.executeAction = function () {\n        return this.store.dispatch(new MoveEntries(this.folder));\n    };\n    return FolderDropTargetDirective;\n}(BaseDropTarget));\nexport { FolderDropTargetDirective };\n","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<HTMLElement>;\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        const canDrop = this.canDrop(),\n            classes = ['drag-over'];\n        if (canDrop) {\n            this.active = true;\n            classes.push('can-drop');\n        }\n        this.el.nativeElement.classList.add(...classes);\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', 'can-drop']);\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        var _a;\n        var canDrop = this.canDrop(), classes = ['drag-over'];\n        if (canDrop) {\n            this.active = true;\n            classes.push('can-drop');\n        }\n        (_a = this.el.nativeElement.classList).add.apply(_a, classes);\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        var _a;\n        (_a = this.el.nativeElement.classList).remove.apply(_a, ['drag-over', 'can-drop']);\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","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    @Input() disableInteractions = false;\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 \"../../../interactions/drop-targets/folder-drop-target.directive\";\nimport * as i8 from \"@ngxs/store\";\nimport * as i9 from \"@angular/common\";\nimport * as i10 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, 4, \"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\"], disableContextMenu: [1, \"disableContextMenu\"] }, null), i1.ɵpod(2, { type: 0, entry: 1 }), i1.ɵdid(3, 49152, null, 0, i6.FilesGridItemComponent, [], { entry: [0, \"entry\"] }, null), i1.ɵdid(4, 212992, null, 0, i7.FolderDropTargetDirective, [i1.ElementRef, i8.Store], { folder: [0, \"folder\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_2 = _ck(_v, 2, 0, \"entry\", _v.context.$implicit); var currVal_3 = _co.disableInteractions; _ck(_v, 1, 0, currVal_2, currVal_3); var currVal_4 = _v.context.$implicit; _ck(_v, 3, 0, currVal_4); var currVal_5 = _v.context.$implicit; _ck(_v, 4, 0, currVal_5); }, 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, i9.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, i10.FilesGridComponent, [], null, null)], null, null); }\nvar FilesGridComponentNgFactory = i1.ɵccf(\"files-grid\", i10.FilesGridComponent, View_FilesGridComponent_Host_0, { entries: \"entries\", disableInteractions: \"disableInteractions\" }, {}, []);\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\r\n        *ngFor=\"let entry of entries; trackBy: trackById\"\r\n        [entry]=\"entry\"\r\n        [contextMenu]=\"{type: 'entry', entry: entry}\"\r\n        [disableContextMenu]=\"disableInteractions\"\r\n        [folderDropTarget]=\"entry\"\r\n></files-grid-item>","import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input} 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 {\n    @Input() entries: DriveEntry[];\n    @Input() disableInteractions = false;\n\n    constructor(private store: Store) {}\n\n    public sortChange(e: Sort) {\n        const params = {\n            orderBy: e.active as SortColumn,\n            orderDir: e.direction as SortDirection\n        };\n\n        if ( ! this.disableInteractions) {\n            this.store.dispatch(new ReloadPageEntries(params));\n        }\n    }\n\n    public isStarred(entry: DriveEntry): boolean {\n        if ( ! entry.tags) return false;\n        return !!entry.tags.find(tag => tag.name === 'starred');\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/icon/typings/index.ngfactory\";\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/platform\";\nimport * as i15 from \"@angular/cdk/a11y\";\nimport * as i16 from \"@angular/cdk/bidi\";\nimport * as i17 from \"@angular/platform-browser\";\nimport * as i18 from \"@angular/material/icon\";\nimport * as i19 from \"@angular/common\";\nimport * as i20 from \"../../../../../../node_modules/@angular/material/table/typings/index.ngfactory\";\nimport * as i21 from \"../../../../../common/core/ui/context-menu/context-menu.directive\";\nimport * as i22 from \"../../../../../common/core/ui/context-menu/context-menu.service\";\nimport * as i23 from \"../../../../../common/core/ui/context-menu/available-context-menus\";\nimport * as i24 from \"../../../interactions/drop-targets/folder-drop-target.directive\";\nimport * as i25 from \"@ngxs/store\";\nimport * as i26 from \"../../../../../common/core/translations/translate.pipe\";\nimport * as i27 from \"../../../../../common/core/translations/translations.service\";\nimport * as i28 from \"../../../../../common/core/ui/formatted-date.pipe\";\nimport * as i29 from \"../../../../../common/uploads/formatted-file-size.pipe\";\nimport * as i30 from \"./files-list.component\";\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, \"MAT_SORT_HEADER_COLUMN_DEF\"]], { 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_5(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 16777216, null, null, 3, \"mat-icon\", [[\"class\", \"star-icon mat-icon notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"star\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", 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; }, i10.View_MatIcon_0, i10.RenderType_MatIcon)), i1.ɵdid(1, 147456, null, 0, i11.MatTooltip, [i12.Overlay, i1.ElementRef, i13.ScrollDispatcher, i1.ViewContainerRef, i1.NgZone, i14.Platform, i15.AriaDescriber, i15.FocusMonitor, i11.MAT_TOOLTIP_SCROLL_STRATEGY, [2, i16.Directionality], [2, i11.MAT_TOOLTIP_DEFAULT_OPTIONS], [2, i17.HAMMER_LOADER]], { message: [0, \"message\"] }, null), i1.ɵppd(2, 1), i1.ɵdid(3, 9158656, null, 0, i18.MatIcon, [i1.ElementRef, i18.MatIconRegistry, [8, null], [2, i18.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵand(0, null, null, 0))], function (_ck, _v) { var currVal_2 = i1.ɵunv(_v, 1, 0, _ck(_v, 2, 0, i1.ɵnov(_v.parent.parent, 0), \"Starred\")); _ck(_v, 1, 0, currVal_2); var currVal_3 = \"star\"; _ck(_v, 3, 0, currVal_3); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 3).inline; var currVal_1 = (((i1.ɵnov(_v, 3).color !== \"primary\") && (i1.ɵnov(_v, 3).color !== \"accent\")) && (i1.ɵnov(_v, 3).color !== \"warn\")); _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nfunction View_FilesListComponent_4(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 8, \"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, [\"\\n      \"])), (_l()(), i1.ɵeld(3, 0, null, null, 1, \"span\", [[\"class\", \"entry-name\"]], null, null, null, null, null)), (_l()(), i1.ɵted(4, null, [\"\", \"\"])), (_l()(), i1.ɵted(-1, null, [\"\\n      \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_FilesListComponent_5)), i1.ɵdid(7, 16384, null, 0, i19.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"]))], function (_ck, _v) { var _co = _v.component; var currVal_1 = _co.isStarred(_v.context.$implicit); _ck(_v, 7, 0, currVal_1); }, function (_ck, _v) { var currVal_0 = _v.context.$implicit.name; _ck(_v, 4, 0, currVal_0); }); }\nfunction View_FilesListComponent_6(_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, \"MAT_SORT_HEADER_COLUMN_DEF\"]], { 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_7(_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.updated_at)); _ck(_v, 2, 0, currVal_0); }); }\nfunction View_FilesListComponent_8(_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, \"MAT_SORT_HEADER_COLUMN_DEF\"]], { 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_9(_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, 2), _v.context.$implicit.file_size)); _ck(_v, 2, 0, currVal_0); }); }\nfunction View_FilesListComponent_10(_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, i20.View_MatHeaderRow_0, i20.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_11(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 5, \"tr\", [[\"class\", \"drive-entry mat-row\"], [\"mat-row\", \"\"], [\"role\", \"row\"]], [[1, \"data-id\", 0]], null, null, i20.View_MatRow_0, i20.RenderType_MatRow)), i1.ɵprd(6144, null, i3.CdkRow, null, [i2.MatRow]), i1.ɵdid(2, 81920, null, 0, i21.ContextMenuDirective, [i1.ElementRef, i22.ContextMenu, i23.AVAILABLE_CONTEXT_MENUS], { params: [0, \"params\"], disableContextMenu: [1, \"disableContextMenu\"] }, null), i1.ɵpod(3, { type: 0, entry: 1 }), i1.ɵdid(4, 49152, null, 0, i2.MatRow, [], null, null), i1.ɵdid(5, 212992, null, 0, i24.FolderDropTargetDirective, [i1.ElementRef, i25.Store], { folder: [0, \"folder\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_1 = _ck(_v, 3, 0, \"entry\", _v.context.$implicit); var currVal_2 = _co.disableInteractions; _ck(_v, 2, 0, currVal_1, currVal_2); var currVal_3 = _v.context.$implicit; _ck(_v, 5, 0, currVal_3); }, 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, i26.TransPipe, [i27.Translations]), i1.ɵpid(0, i28.FormattedDatePipe, [i7.Settings, i1.LOCALE_ID]), i1.ɵpid(0, i29.FormattedFileSizePipe, []), (_l()(), i1.ɵeld(3, 0, null, null, 90, \"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; }, i20.View_MatTable_0, i20.RenderType_MatTable)), i1.ɵdid(4, 2342912, null, 4, i2.MatTable, [i1.IterableDiffers, i1.ChangeDetectorRef, i1.ElementRef, [8, null], [2, i16.Directionality], i19.DOCUMENT, i14.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(9, 737280, null, 0, i9.MatSort, [], { disabled: [0, \"disabled\"] }, { sortChange: \"matSortChange\" }), (_l()(), i1.ɵted(-1, null, [\"\\n  \"])), (_l()(), i1.ɵted(-1, null, [\"\\n  \"])), (_l()(), i1.ɵeld(12, 0, null, null, 15, null, null, null, null, null, null, null)), i1.ɵprd(6144, null, \"MAT_SORT_HEADER_COLUMN_DEF\", null, [i2.MatColumnDef]), i1.ɵdid(14, 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(21, 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(25, 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(30, 0, null, null, 15, null, null, null, null, null, null, null)), i1.ɵprd(6144, null, \"MAT_SORT_HEADER_COLUMN_DEF\", null, [i2.MatColumnDef]), i1.ɵdid(32, 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(39, 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(43, 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(48, 0, null, null, 15, null, null, null, null, null, null, null)), i1.ɵprd(6144, null, \"MAT_SORT_HEADER_COLUMN_DEF\", null, [i2.MatColumnDef]), i1.ɵdid(50, 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_6)), i1.ɵdid(57, 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_7)), i1.ɵdid(61, 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(66, 0, null, null, 15, null, null, null, null, null, null, null)), i1.ɵprd(6144, null, \"MAT_SORT_HEADER_COLUMN_DEF\", null, [i2.MatColumnDef]), i1.ɵdid(68, 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_8)), i1.ɵdid(75, 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_9)), i1.ɵdid(79, 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(83, 0, null, null, 10, \"tbody\", [], null, null, null, null, null)), (_l()(), i1.ɵand(0, null, null, 3, null, View_FilesListComponent_10)), i1.ɵdid(85, 540672, null, 0, i2.MatHeaderRowDef, [i1.TemplateRef, i1.IterableDiffers], { columns: [0, \"columns\"] }, null), i1.ɵpad(86, 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_11)), i1.ɵdid(90, 540672, null, 0, i2.MatRowDef, [i1.TemplateRef, i1.IterableDiffers], { columns: [0, \"columns\"] }, null), i1.ɵpad(91, 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, 4, 0, currVal_0); var currVal_1 = _co.disableInteractions; _ck(_v, 9, 0, currVal_1); var currVal_2 = \"image\"; _ck(_v, 14, 0, currVal_2); var currVal_3 = \"name\"; _ck(_v, 32, 0, currVal_3); var currVal_4 = \"updated\"; _ck(_v, 50, 0, currVal_4); var currVal_5 = \"size\"; _ck(_v, 68, 0, currVal_5); var currVal_6 = _ck(_v, 86, 0, \"image\", \"name\", \"updated\", \"size\"); _ck(_v, 85, 0, currVal_6); var currVal_7 = _ck(_v, 91, 0, \"image\", \"name\", \"updated\", \"size\"); _ck(_v, 90, 0, currVal_7); }, 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, 49152, null, 0, i30.FilesListComponent, [i25.Store], null, null)], null, null); }\nvar FilesListComponentNgFactory = i1.ɵccf(\"files-list\", i30.FilesListComponent, View_FilesListComponent_Host_0, { entries: \"entries\", disableInteractions: \"disableInteractions\" }, {}, []);\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.drag-over,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}}files-list .star-icon{color:#ffc000;width:18px;height:18px;vertical-align:middle}files-list .entry-name{vertical-align:sub}\"];\nexport { styles as styles };\n","<table mat-table [dataSource]=\"entries\" matSort [matSortDisabled]=\"disableInteractions\" (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\">\n      <span class=\"entry-name\">{{entry.name}}</span>\n      <mat-icon class=\"star-icon\" svgIcon=\"star\" *ngIf=\"isStarred(entry)\" [matTooltip]=\"'Starred' | trans\"></mat-icon>\n    </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      [disableContextMenu]=\"disableInteractions\"\n      [attr.data-id]=\"row.id\"\n      [folderDropTarget]=\"row\"\n  ></tr>\n</table>","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\r\nexport interface SortValue {\r\n    column: SortColumn;\r\n    direction: SortDirection;\r\n}\r\n","var __assign = (this && this.__assign) || function () {\n    __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    };\n    return __assign.apply(this, arguments);\n};\nimport { AVAILABLE_SORTS } from '../../entries/available-sorts';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\nvar DEFAULT_VALUE = { column: 'updated_at', direction: 'desc' };\nvar EntriesSortButtonComponent = /** @class */ (function () {\n    function EntriesSortButtonComponent() {\n        this.btnDisabled = false;\n        this.availableSorts = AVAILABLE_SORTS;\n        this.sort$ = new BehaviorSubject(DEFAULT_VALUE);\n    }\n    EntriesSortButtonComponent.prototype.changeSort = function (column) {\n        this.sort$.next(__assign({}, this.sort$.value, { column: column.name }));\n        this.propagateChange(this.sort$.value);\n    };\n    EntriesSortButtonComponent.prototype.changeDirection = function (direction) {\n        this.sort$.next(__assign({}, this.sort$.value, { direction: direction }));\n        this.propagateChange(this.sort$.value);\n    };\n    EntriesSortButtonComponent.prototype.getSortViewName = function (column) {\n        return this.availableSorts.find(function (sort) { return sort.name === column; }).viewName;\n    };\n    EntriesSortButtonComponent.prototype.writeValue = function (value) {\n        this.sort$.next(value || DEFAULT_VALUE);\n    };\n    EntriesSortButtonComponent.prototype.registerOnChange = function (fn) {\n        this.propagateChange = fn;\n    };\n    EntriesSortButtonComponent.prototype.registerOnTouched = function () { };\n    return EntriesSortButtonComponent;\n}());\nexport { EntriesSortButtonComponent };\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { AVAILABLE_SORTS, DriveSortOption, SortColumn, SortDirection, SortValue } from '../../entries/available-sorts';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\n\nconst DEFAULT_VALUE: SortValue = {column: 'updated_at', direction: 'desc'};\n\n@Component({\n    selector: 'entries-sort-button',\n    templateUrl: './entries-sort-button.component.html',\n    styleUrls: ['./entries-sort-button.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [{\n        provide: NG_VALUE_ACCESSOR,\n        useExisting: EntriesSortButtonComponent,\n        multi: true,\n    }]\n})\nexport class EntriesSortButtonComponent implements ControlValueAccessor {\n    @Input() btnDisabled = false;\n    public availableSorts = AVAILABLE_SORTS;\n    public propagateChange: Function;\n\n    public sort$: BehaviorSubject<SortValue> = new BehaviorSubject(DEFAULT_VALUE);\n\n    public changeSort(column: DriveSortOption) {\n        this.sort$.next({...this.sort$.value, column: column.name});\n        this.propagateChange(this.sort$.value);\n    }\n\n    public changeDirection(direction: SortDirection) {\n        this.sort$.next({...this.sort$.value, direction});\n        this.propagateChange(this.sort$.value);\n    }\n\n    public getSortViewName(column: SortColumn): string {\n        return this.availableSorts.find(sort => sort.name === column).viewName;\n    }\n\n    public writeValue(value: SortValue) {\n        this.sort$.next(value || DEFAULT_VALUE);\n    }\n\n    public registerOnChange(fn: Function) {\n        this.propagateChange = fn;\n    }\n\n    public registerOnTouched() {}\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 \"./entries-sort-button.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 \"@angular/cdk/overlay\";\nimport * as i12 from \"@angular/cdk/bidi\";\nimport * as i13 from \"../../../../common/core/translations/translate.pipe\";\nimport * as i14 from \"@angular/forms\";\nimport * as i15 from \"./entries-sort-button.component\";\nvar styles_EntriesSortButtonComponent = [i0.styles];\nvar RenderType_EntriesSortButtonComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_EntriesSortButtonComponent, data: {} });\nexport { RenderType_EntriesSortButtonComponent as RenderType_EntriesSortButtonComponent };\nfunction View_EntriesSortButtonComponent_2(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 9, \"button\", [[\"class\", \"mat-menu-item\"], [\"mat-menu-item\", \"\"]], [[2, \"active\", null], [1, \"role\", 0], [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.ɵf21]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵeld(3, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"check\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i6.View_MatIcon_0, i6.RenderType_MatIcon)), i1.ɵdid(4, 9158656, null, 0, i7.MatIcon, [i1.ElementRef, i7.MatIconRegistry, [8, null], [2, i7.MAT_ICON_LOCATION]], { 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_9 = \"check\"; _ck(_v, 4, 0, currVal_9); }, function (_ck, _v) { var currVal_0 = (_v.parent.context.ngIf.column === _v.context.$implicit.name); var currVal_1 = i1.ɵnov(_v, 1).role; var currVal_2 = i1.ɵnov(_v, 1)._highlighted; var currVal_3 = i1.ɵnov(_v, 1)._triggersSubmenu; var currVal_4 = i1.ɵnov(_v, 1)._getTabIndex(); var currVal_5 = i1.ɵnov(_v, 1).disabled.toString(); var currVal_6 = (i1.ɵnov(_v, 1).disabled || null); _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3, currVal_4, currVal_5, currVal_6); var currVal_7 = i1.ɵnov(_v, 4).inline; var currVal_8 = (((i1.ɵnov(_v, 4).color !== \"primary\") && (i1.ɵnov(_v, 4).color !== \"accent\")) && (i1.ɵnov(_v, 4).color !== \"warn\")); _ck(_v, 3, 0, currVal_7, currVal_8); var currVal_10 = _v.context.$implicit.viewName; _ck(_v, 8, 0, currVal_10); }); }\nfunction View_EntriesSortButtonComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 64, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(2, 0, null, null, 2, \"span\", [[\"class\", \"label\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(3, 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(6, 16777216, null, null, 15, \"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, 7)._handleMousedown($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"keydown\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 7)._handleKeydown($event) !== false);\n        ad = (pd_1 && ad);\n    } if ((\"click\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 7)._handleClick($event) !== false);\n        ad = (pd_2 && ad);\n    } return ad; }, null, null)), i1.ɵdid(7, 1196032, null, 0, i3.MatMenuTrigger, [i11.Overlay, i1.ElementRef, i1.ViewContainerRef, i3.MAT_MENU_SCROLL_STRATEGY, [2, i3.MatMenu], [8, null], [2, i12.Directionality], i5.FocusMonitor], { menu: [0, \"menu\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(9, 0, null, null, 8, \"span\", [[\"class\", \"sort-button-content\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(11, 0, null, null, 2, \"span\", [], null, null, null, null, null)), (_l()(), i1.ɵted(12, null, [\"\", \"\"])), i1.ɵppd(13, 1), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(15, 0, null, null, 1, \"mat-icon\", [[\"class\", \"arrow-icon mat-icon notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"keyboard-arrow-down\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i6.View_MatIcon_0, i6.RenderType_MatIcon)), i1.ɵdid(16, 9158656, null, 0, i7.MatIcon, [i1.ElementRef, i7.MatIconRegistry, [8, null], [2, i7.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(19, 0, null, null, 1, \"mat-icon\", [[\"class\", \"mobile-sort-button-content mat-icon notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"sort\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i6.View_MatIcon_0, i6.RenderType_MatIcon)), i1.ɵdid(20, 9158656, null, 0, i7.MatIcon, [i1.ElementRef, i7.MatIconRegistry, [8, null], [2, i7.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(23, 0, null, null, 40, \"mat-menu\", [[\"class\", \"drive-sort-menu\"]], null, null, null, i2.View_MatMenu_0, i2.RenderType_MatMenu)), i1.ɵdid(24, 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.ɵf21, null, [i3.MatMenu]), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(29, 0, null, 0, 2, \"div\", [[\"class\", \"title\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(30, 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(33, 0, null, 0, 9, \"button\", [[\"class\", \"mat-menu-item\"], [\"mat-menu-item\", \"\"]], [[2, \"active\", null], [1, \"role\", 0], [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, 34)._checkDisabled($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"mouseenter\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 34)._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(34, 180224, [[1, 4]], 0, i3.MatMenuItem, [i1.ElementRef, i4.DOCUMENT, i5.FocusMonitor, [2, i3.ɵf21]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵeld(36, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"check\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i6.View_MatIcon_0, i6.RenderType_MatIcon)), i1.ɵdid(37, 9158656, null, 0, i7.MatIcon, [i1.ElementRef, i7.MatIconRegistry, [8, null], [2, i7.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵeld(39, 0, null, 0, 2, \"span\", [[\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(40, 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(44, 0, null, 0, 9, \"button\", [[\"class\", \"mat-menu-item\"], [\"mat-menu-item\", \"\"]], [[2, \"active\", null], [1, \"role\", 0], [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, 45)._checkDisabled($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"mouseenter\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 45)._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(45, 180224, [[1, 4]], 0, i3.MatMenuItem, [i1.ElementRef, i4.DOCUMENT, i5.FocusMonitor, [2, i3.ɵf21]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵeld(47, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"check\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i6.View_MatIcon_0, i6.RenderType_MatIcon)), i1.ɵdid(48, 9158656, null, 0, i7.MatIcon, [i1.ElementRef, i7.MatIconRegistry, [8, null], [2, i7.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵeld(50, 0, null, 0, 2, \"span\", [[\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(51, 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(55, 0, null, 0, 0, \"div\", [[\"class\", \"separator\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(57, 0, null, 0, 2, \"div\", [[\"class\", \"title\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(58, 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_EntriesSortButtonComponent_2)), i1.ɵdid(62, 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\"]))], function (_ck, _v) { var _co = _v.component; var currVal_2 = i1.ɵnov(_v, 24); _ck(_v, 7, 0, currVal_2); var currVal_6 = \"keyboard-arrow-down\"; _ck(_v, 16, 0, currVal_6); var currVal_9 = \"sort\"; _ck(_v, 20, 0, currVal_9); var currVal_10 = \"drive-sort-menu\"; _ck(_v, 24, 0, currVal_10); var currVal_20 = \"check\"; _ck(_v, 37, 0, currVal_20); var currVal_30 = \"check\"; _ck(_v, 48, 0, currVal_30); var currVal_31 = _co.availableSorts; _ck(_v, 62, 0, currVal_31); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.btnDisabled; var currVal_1 = (i1.ɵnov(_v, 7).menuOpen || null); _ck(_v, 6, 0, currVal_0, currVal_1); var currVal_3 = i1.ɵunv(_v, 12, 0, _ck(_v, 13, 0, i1.ɵnov(_v.parent, 0), _co.getSortViewName(_v.context.ngIf.column))); _ck(_v, 12, 0, currVal_3); var currVal_4 = i1.ɵnov(_v, 16).inline; var currVal_5 = (((i1.ɵnov(_v, 16).color !== \"primary\") && (i1.ɵnov(_v, 16).color !== \"accent\")) && (i1.ɵnov(_v, 16).color !== \"warn\")); _ck(_v, 15, 0, currVal_4, currVal_5); var currVal_7 = i1.ɵnov(_v, 20).inline; var currVal_8 = (((i1.ɵnov(_v, 20).color !== \"primary\") && (i1.ɵnov(_v, 20).color !== \"accent\")) && (i1.ɵnov(_v, 20).color !== \"warn\")); _ck(_v, 19, 0, currVal_7, currVal_8); var currVal_11 = (_v.context.ngIf.direction === \"asc\"); var currVal_12 = i1.ɵnov(_v, 34).role; var currVal_13 = i1.ɵnov(_v, 34)._highlighted; var currVal_14 = i1.ɵnov(_v, 34)._triggersSubmenu; var currVal_15 = i1.ɵnov(_v, 34)._getTabIndex(); var currVal_16 = i1.ɵnov(_v, 34).disabled.toString(); var currVal_17 = (i1.ɵnov(_v, 34).disabled || null); _ck(_v, 33, 0, currVal_11, currVal_12, currVal_13, currVal_14, currVal_15, currVal_16, currVal_17); var currVal_18 = i1.ɵnov(_v, 37).inline; var currVal_19 = (((i1.ɵnov(_v, 37).color !== \"primary\") && (i1.ɵnov(_v, 37).color !== \"accent\")) && (i1.ɵnov(_v, 37).color !== \"warn\")); _ck(_v, 36, 0, currVal_18, currVal_19); var currVal_21 = (_v.context.ngIf.direction === \"desc\"); var currVal_22 = i1.ɵnov(_v, 45).role; var currVal_23 = i1.ɵnov(_v, 45)._highlighted; var currVal_24 = i1.ɵnov(_v, 45)._triggersSubmenu; var currVal_25 = i1.ɵnov(_v, 45)._getTabIndex(); var currVal_26 = i1.ɵnov(_v, 45).disabled.toString(); var currVal_27 = (i1.ɵnov(_v, 45).disabled || null); _ck(_v, 44, 0, currVal_21, currVal_22, currVal_23, currVal_24, currVal_25, currVal_26, currVal_27); var currVal_28 = i1.ɵnov(_v, 48).inline; var currVal_29 = (((i1.ɵnov(_v, 48).color !== \"primary\") && (i1.ɵnov(_v, 48).color !== \"accent\")) && (i1.ɵnov(_v, 48).color !== \"warn\")); _ck(_v, 47, 0, currVal_28, currVal_29); }); }\nexport function View_EntriesSortButtonComponent_0(_l) { return i1.ɵvid(2, [i1.ɵpid(0, i13.TransPipe, [i9.Translations]), (_l()(), i1.ɵand(16777216, null, null, 2, null, View_EntriesSortButtonComponent_1)), i1.ɵdid(2, 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, 2, 0, i1.ɵnov(_v, 3).transform(_co.sort$)); _ck(_v, 2, 0, currVal_0); }, null); }\nexport function View_EntriesSortButtonComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 2, \"entries-sort-button\", [], null, null, null, View_EntriesSortButtonComponent_0, RenderType_EntriesSortButtonComponent)), i1.ɵprd(5120, null, i14.NG_VALUE_ACCESSOR, function (p0_0) { return [p0_0]; }, [i15.EntriesSortButtonComponent]), i1.ɵdid(2, 49152, null, 0, i15.EntriesSortButtonComponent, [], null, null)], null, null); }\nvar EntriesSortButtonComponentNgFactory = i1.ɵccf(\"entries-sort-button\", i15.EntriesSortButtonComponent, View_EntriesSortButtonComponent_Host_0, { btnDisabled: \"btnDisabled\" }, {}, []);\nexport { EntriesSortButtonComponentNgFactory as EntriesSortButtonComponentNgFactory };\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-sort-button{display:inline-block}entries-sort-button .label{color:rgba(0,0,0,.54);padding-right:3px}entries-sort-button .arrow-icon{width:14px;height:14px;vertical-align:middle}entries-sort-button button:disabled{color:rgba(0,0,0,.54);cursor:default}entries-sort-button .mobile-sort-button-content,entries-sort-button button:disabled .mat-icon{display:none}.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","<ng-container *ngIf=\"sort$ | async as sortValue\">\n    <span class=\"label\" trans>Sort by</span>\n    <button class=\"no-style\" [matMenuTriggerFor]=\"menu\" [disabled]=\"btnDisabled\">\n        <span class=\"sort-button-content\">\n            <span>{{getSortViewName(sortValue.column) | trans}}</span>\n            <mat-icon svgIcon=\"keyboard-arrow-down\" class=\"arrow-icon\"></mat-icon>\n        </span>\n        <mat-icon svgIcon=\"sort\" class=\"mobile-sort-button-content\"></mat-icon>\n    </button>\n    <mat-menu #menu=\"matMenu\" class=\"drive-sort-menu\">\n        <div class=\"title\" trans>Direction</div>\n        <button mat-menu-item (click)=\"changeDirection('asc')\" [class.active]=\"sortValue.direction === 'asc'\">\n            <mat-icon svgIcon=\"check\"></mat-icon>\n            <span trans>Ascending</span>\n        </button>\n        <button mat-menu-item (click)=\"changeDirection('desc')\" [class.active]=\"sortValue.direction === 'desc'\">\n            <mat-icon svgIcon=\"check\"></mat-icon>\n            <span trans>Descending</span>\n        </button>\n        <div class=\"separator\"></div>\n        <div class=\"title\" trans>Sort By</div>\n        <button mat-menu-item *ngFor=\"let sort of availableSorts\" (click)=\"changeSort(sort)\" [class.active]=\"sortValue.column === sort.name\">\n            <mat-icon svgIcon=\"check\"></mat-icon>\n            <span trans>{{sort.viewName}}</span>\n        </button>\n    </mat-menu>\n</ng-container>","import { Input, ElementRef, OnInit, OnDestroy } from '@angular/core';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\nexport abstract class InfiniteScroll implements OnInit, OnDestroy {\r\n    protected scrollSub: Subscription;\r\n    @Input() threshold: number | string = 50;\r\n\r\n    protected el: ElementRef;\r\n\r\n    ngOnInit() {\r\n        this.scrollSub = fromEvent(this.getScrollContainer(), '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    ngOnDestroy() {\r\n        this.scrollSub && this.scrollSub.unsubscribe();\r\n    }\r\n\r\n    protected getScrollContainer() {\r\n        return this.el ? this.el.nativeElement : document;\r\n    }\r\n\r\n    protected onScroll(target: HTMLElement) {\r\n        if ( ! target || ! this.canLoadMore() || this.isLoading()) return;\r\n\r\n        const offset = parseInt(this.threshold as string);\r\n\r\n        const currentScroll = this.el ?\r\n            target.scrollTop + target.offsetHeight :\r\n            window.scrollY + window.innerHeight;\r\n\r\n        const heightWithoutOffset = this.el ?\r\n            target.scrollHeight - offset :\r\n            document.documentElement.scrollHeight - offset;\r\n\r\n        if (currentScroll >= heightWithoutOffset) {\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","import {\n    Component, ViewEncapsulation, ChangeDetectionStrategy, Input, ViewChild, ElementRef, OnInit, OnChanges,\n} from '@angular/core';\nimport { FileEntry } from '../../../../common/uploads/file-entry';\nimport { Store } from '@ngxs/store';\nimport { DownloadEntries } from '../../state/actions/commands';\nimport { BehaviorSubject } from 'rxjs';\nimport { FilePreviewOverlayComponent } from '../file-preview-overlay/file-preview-overlay.component';\nimport { OverlayPanel } from '../../../../common/core/ui/overlay-panel/overlay-panel.service';\nimport { Router } from '@angular/router';\nimport { FormControl } from '@angular/forms';\nimport { GetLinkData, ShareableLinksApiService } from '../../sharing/links/shareable-links-api.service';\nimport { InfiniteScroll } from '../../../../common/core/ui/infinite-scroll/infinite.scroll';\nimport { PaginationResponse } from '../../../../common/core/types/pagination-response';\nimport { finalize } from 'rxjs/operators';\nimport { SortValue } from '../../entries/available-sorts';\n\n@Component({\n    selector: 'folder-preview',\n    templateUrl: './folder-preview.component.html',\n    styleUrls: ['./folder-preview.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FolderPreviewComponent extends InfiniteScroll implements OnChanges, OnInit {\n    @Input() data: GetLinkData;\n    @Input() password: string;\n    @ViewChild('filesContainer') filesContainer: ElementRef<HTMLDivElement>;\n\n    get folder() {\n        return this.data.link.entry;\n    }\n\n    get children() {\n        return this.pagination$.value.data;\n    }\n\n    public loading$ = new BehaviorSubject(false);\n    public viewMode$ = new BehaviorSubject('grid');\n    public breadcrumb$: BehaviorSubject<FileEntry[]> = new BehaviorSubject([]);\n    public pagination$: BehaviorSubject<PaginationResponse<FileEntry>> = new BehaviorSubject(null);\n    private allFolders = {};\n    public sortFormControl = new FormControl({\n        column: 'updated_at',\n        direction: 'desc',\n    });\n\n    constructor(\n        private store: Store,\n        private overlay: OverlayPanel,\n        private router: Router,\n        private linkApi: ShareableLinksApiService,\n    ) {\n        super();\n    }\n\n    ngOnInit() {\n        super.ngOnInit();\n        this.sortFormControl.valueChanges.subscribe((value: SortValue) => {\n            if (value) {\n                this.loadChildren({}, true);\n            }\n        });\n    }\n\n    ngOnChanges() {\n        this.allFolders[this.folder.id] = this.folder;\n        this.generateBreadcrumb(this.folder);\n        this.setPagination(this.data.folderChildren);\n        this.loading$.next(false);\n    }\n\n    public download() {\n        this.store.dispatch(new DownloadEntries([this.folder], this.data.link, this.password));\n    }\n\n    public toggleViewMode() {\n        this.viewMode$.next(this.viewMode$.value === 'grid' ? 'list' : 'grid');\n    }\n\n    private openPreviewOverlay(entry: FileEntry) {\n        const entries = this.children.filter(ent => ent.type !== 'folder'),\n            activeEntry = entries.findIndex(e => e.id === entry.id);\n\n        this.overlay.open(FilePreviewOverlayComponent, {\n            position: 'center',\n            origin: 'global',\n            panelClass: 'file-preview-overlay-container',\n            data: {\n                entries,\n                activeEntry,\n                hideMoreOptionsBtn: true,\n            }\n        });\n    }\n\n    private getEntry(e: HammerInput): FileEntry {\n        const node = e.target.closest('.drive-entry') as HTMLElement;\n        if (node) {\n            return this.children.find(entry => entry.id === +node.dataset.id);\n        }\n    }\n\n    public onTap(e: HammerInput) {\n        const entry = this.getEntry(e);\n        if ( ! entry) return;\n\n        if (entry.type === 'folder') {\n            this.openFolder(entry);\n        } else {\n            this.openPreviewOverlay(entry);\n        }\n    }\n\n    public isSubFolder() {\n        return this.router.url.indexOf(':') > -1;\n    }\n\n    public openFolder(folder?: FileEntry) {\n        if (folder && this.folder.id === folder.id) return;\n        this.loading$.next(true);\n        this.router.navigate(['/drive/s', this.makeLinkHash(folder)]).then(() => {\n            // reset sort to default, as there's no good way to\n            // pass current sort to parent link preview component\n            this.sortFormControl.reset();\n        });\n    }\n\n    private generateBreadcrumb(folder: FileEntry) {\n        this.breadcrumb$.next(folder.path.split('/').map(folderId => {\n            return this.allFolders[+folderId];\n        }).filter(subFolder => !!subFolder));\n    }\n\n    private loadChildren(params: {page?: number}, replaceChildren = false) {\n        this.loading$.next(true);\n        const order = `${this.sortFormControl.value.column}:${this.sortFormControl.value.direction}`;\n        const page = params.page || this.pagination$.value.current_page;\n        this.linkApi.findByHash(this.makeLinkHash(this.folder), {page, order, withEntries: true})\n            .pipe(finalize(() => this.loading$.next(false)))\n            .subscribe(response => {\n                const oldChildren = this.children;\n                const pagination = response.folderChildren;\n                if ( ! replaceChildren) {\n                    pagination.data = [...oldChildren, ...this.data.folderChildren.data];\n                }\n                this.setPagination(pagination);\n            });\n    }\n\n    private makeLinkHash(folder?: FileEntry) {\n        let hash = this.data.link.hash;\n        if (folder) hash += ':' + folder.hash;\n        return hash;\n    }\n\n    private setPagination(pagination: PaginationResponse<FileEntry>) {\n        // add shareable link hash to all entries url to avoid permission errors\n        pagination.data = pagination.data.map(entry => {\n            entry.url += `?shareable_link=${this.data.link.id}`;\n            if (this.password) {\n                entry.url += `&password=${this.password}`;\n            }\n            return entry;\n        });\n        this.pagination$.next(pagination);\n    }\n\n    protected loadMoreItems() {\n        const page = this.pagination$.value.current_page + 1;\n        this.loadChildren({page}, false);\n    }\n\n    protected canLoadMore() {\n        return this.pagination$.value.current_page < this.pagination$.value.last_page;\n    }\n\n    protected isLoading() {\n        return this.loading$.value;\n    }\n}\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        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 extendStatics(d, b);\n    };\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, OnChanges, } from '@angular/core';\nimport { Store } from '@ngxs/store';\nimport { DownloadEntries } from '../../state/actions/commands';\nimport { BehaviorSubject } from 'rxjs';\nimport { FilePreviewOverlayComponent } from '../file-preview-overlay/file-preview-overlay.component';\nimport { OverlayPanel } from '../../../../common/core/ui/overlay-panel/overlay-panel.service';\nimport { Router } from '@angular/router';\nimport { FormControl } from '@angular/forms';\nimport { ShareableLinksApiService } from '../../sharing/links/shareable-links-api.service';\nimport { InfiniteScroll } from '../../../../common/core/ui/infinite-scroll/infinite.scroll';\nimport { finalize } from 'rxjs/operators';\nvar FolderPreviewComponent = /** @class */ (function (_super) {\n    __extends(FolderPreviewComponent, _super);\n    function FolderPreviewComponent(store, overlay, router, linkApi) {\n        var _this = _super.call(this) || this;\n        _this.store = store;\n        _this.overlay = overlay;\n        _this.router = router;\n        _this.linkApi = linkApi;\n        _this.loading$ = new BehaviorSubject(false);\n        _this.viewMode$ = new BehaviorSubject('grid');\n        _this.breadcrumb$ = new BehaviorSubject([]);\n        _this.pagination$ = new BehaviorSubject(null);\n        _this.allFolders = {};\n        _this.sortFormControl = new FormControl({\n            column: 'updated_at',\n            direction: 'desc',\n        });\n        return _this;\n    }\n    Object.defineProperty(FolderPreviewComponent.prototype, \"folder\", {\n        get: function () {\n            return this.data.link.entry;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(FolderPreviewComponent.prototype, \"children\", {\n        get: function () {\n            return this.pagination$.value.data;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    FolderPreviewComponent.prototype.ngOnInit = function () {\n        var _this = this;\n        _super.prototype.ngOnInit.call(this);\n        this.sortFormControl.valueChanges.subscribe(function (value) {\n            if (value) {\n                _this.loadChildren({}, true);\n            }\n        });\n    };\n    FolderPreviewComponent.prototype.ngOnChanges = function () {\n        this.allFolders[this.folder.id] = this.folder;\n        this.generateBreadcrumb(this.folder);\n        this.setPagination(this.data.folderChildren);\n        this.loading$.next(false);\n    };\n    FolderPreviewComponent.prototype.download = function () {\n        this.store.dispatch(new DownloadEntries([this.folder], this.data.link, this.password));\n    };\n    FolderPreviewComponent.prototype.toggleViewMode = function () {\n        this.viewMode$.next(this.viewMode$.value === 'grid' ? 'list' : 'grid');\n    };\n    FolderPreviewComponent.prototype.openPreviewOverlay = function (entry) {\n        var entries = this.children.filter(function (ent) { return ent.type !== 'folder'; }), activeEntry = entries.findIndex(function (e) { return e.id === entry.id; });\n        this.overlay.open(FilePreviewOverlayComponent, {\n            position: 'center',\n            origin: 'global',\n            panelClass: 'file-preview-overlay-container',\n            data: {\n                entries: entries,\n                activeEntry: activeEntry,\n                hideMoreOptionsBtn: true,\n            }\n        });\n    };\n    FolderPreviewComponent.prototype.getEntry = function (e) {\n        var node = e.target.closest('.drive-entry');\n        if (node) {\n            return this.children.find(function (entry) { return entry.id === +node.dataset.id; });\n        }\n    };\n    FolderPreviewComponent.prototype.onTap = function (e) {\n        var entry = this.getEntry(e);\n        if (!entry)\n            return;\n        if (entry.type === 'folder') {\n            this.openFolder(entry);\n        }\n        else {\n            this.openPreviewOverlay(entry);\n        }\n    };\n    FolderPreviewComponent.prototype.isSubFolder = function () {\n        return this.router.url.indexOf(':') > -1;\n    };\n    FolderPreviewComponent.prototype.openFolder = function (folder) {\n        var _this = this;\n        if (folder && this.folder.id === folder.id)\n            return;\n        this.loading$.next(true);\n        this.router.navigate(['/drive/s', this.makeLinkHash(folder)]).then(function () {\n            // reset sort to default, as there's no good way to\n            // pass current sort to parent link preview component\n            _this.sortFormControl.reset();\n        });\n    };\n    FolderPreviewComponent.prototype.generateBreadcrumb = function (folder) {\n        var _this = this;\n        this.breadcrumb$.next(folder.path.split('/').map(function (folderId) {\n            return _this.allFolders[+folderId];\n        }).filter(function (subFolder) { return !!subFolder; }));\n    };\n    FolderPreviewComponent.prototype.loadChildren = function (params, replaceChildren) {\n        var _this = this;\n        if (replaceChildren === void 0) { replaceChildren = false; }\n        this.loading$.next(true);\n        var order = this.sortFormControl.value.column + \":\" + this.sortFormControl.value.direction;\n        var page = params.page || this.pagination$.value.current_page;\n        this.linkApi.findByHash(this.makeLinkHash(this.folder), { page: page, order: order, withEntries: true })\n            .pipe(finalize(function () { return _this.loading$.next(false); }))\n            .subscribe(function (response) {\n            var oldChildren = _this.children;\n            var pagination = response.folderChildren;\n            if (!replaceChildren) {\n                pagination.data = oldChildren.concat(_this.data.folderChildren.data);\n            }\n            _this.setPagination(pagination);\n        });\n    };\n    FolderPreviewComponent.prototype.makeLinkHash = function (folder) {\n        var hash = this.data.link.hash;\n        if (folder)\n            hash += ':' + folder.hash;\n        return hash;\n    };\n    FolderPreviewComponent.prototype.setPagination = function (pagination) {\n        var _this = this;\n        // add shareable link hash to all entries url to avoid permission errors\n        pagination.data = pagination.data.map(function (entry) {\n            entry.url += \"?shareable_link=\" + _this.data.link.id;\n            if (_this.password) {\n                entry.url += \"&password=\" + _this.password;\n            }\n            return entry;\n        });\n        this.pagination$.next(pagination);\n    };\n    FolderPreviewComponent.prototype.loadMoreItems = function () {\n        var page = this.pagination$.value.current_page + 1;\n        this.loadChildren({ page: page }, false);\n    };\n    FolderPreviewComponent.prototype.canLoadMore = function () {\n        return this.pagination$.value.current_page < this.pagination$.value.last_page;\n    };\n    FolderPreviewComponent.prototype.isLoading = function () {\n        return this.loading$.value;\n    };\n    return FolderPreviewComponent;\n}(InfiniteScroll));\nexport { FolderPreviewComponent };\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 \"./folder-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 \"../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i8 from \"@angular/material/icon\";\nimport * as i9 from \"@angular/common\";\nimport * as i10 from \"@angular/material/tooltip\";\nimport * as i11 from \"@angular/cdk/overlay\";\nimport * as i12 from \"@angular/cdk/scrolling\";\nimport * as i13 from \"@angular/cdk/bidi\";\nimport * as i14 from \"@angular/platform-browser\";\nimport * as i15 from \"../../files/components/files-grid/files-grid.component.ngfactory\";\nimport * as i16 from \"../../files/components/files-grid/files-grid.component\";\nimport * as i17 from \"../../files/components/files-list/files-list.component.ngfactory\";\nimport * as i18 from \"../../files/components/files-list/files-list.component\";\nimport * as i19 from \"@ngxs/store\";\nimport * as i20 from \"../../../../common/core/ui/no-results-message/no-results-message.component.ngfactory\";\nimport * as i21 from \"../../../../common/core/ui/no-results-message/no-results-message.component\";\nimport * as i22 from \"../../../../common/core/config/settings.service\";\nimport * as i23 from \"../../../../common/core/translations/translate.directive\";\nimport * as i24 from \"../../../../common/core/translations/translations.service\";\nimport * as i25 from \"../../../../common/core/translations/translate.pipe\";\nimport * as i26 from \"../../../../common/core/ui/material-navbar/material-navbar.component.ngfactory\";\nimport * as i27 from \"../../../../common/core/ui/material-navbar/material-navbar.component\";\nimport * as i28 from \"../../../../common/auth/current-user\";\nimport * as i29 from \"../../../../common/core/ui/breakpoints.service\";\nimport * as i30 from \"../../header/entries-sort-button/entries-sort-button.component.ngfactory\";\nimport * as i31 from \"../../header/entries-sort-button/entries-sort-button.component\";\nimport * as i32 from \"@angular/forms\";\nimport * as i33 from \"../../../../common/core/ui/loading-indicator/loading-indicator.component.ngfactory\";\nimport * as i34 from \"../../../../common/core/ui/loading-indicator/loading-indicator.component\";\nimport * as i35 from \"./folder-preview.component\";\nimport * as i36 from \"../../../../common/core/ui/overlay-panel/overlay-panel.service\";\nimport * as i37 from \"@angular/router\";\nimport * as i38 from \"../../sharing/links/shareable-links-api.service\";\nvar styles_FolderPreviewComponent = [i0.styles];\nvar RenderType_FolderPreviewComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_FolderPreviewComponent, data: {} });\nexport { RenderType_FolderPreviewComponent as RenderType_FolderPreviewComponent };\nfunction View_FolderPreviewComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 5, \"button\", [[\"class\", \"home-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.openFolder() !== 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\", \"action-icon mat-icon notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"home\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i7.View_MatIcon_0, i7.RenderType_MatIcon)), i1.ɵdid(4, 9158656, null, 0, i8.MatIcon, [i1.ElementRef, i8.MatIconRegistry, [8, null], [2, i8.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"]))], function (_ck, _v) { var currVal_4 = \"home\"; _ck(_v, 4, 0, currVal_4); }, 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; var currVal_3 = (((i1.ɵnov(_v, 4).color !== \"primary\") && (i1.ɵnov(_v, 4).color !== \"accent\")) && (i1.ɵnov(_v, 4).color !== \"warn\")); _ck(_v, 3, 0, currVal_2, currVal_3); }); }\nfunction View_FolderPreviewComponent_3(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"mat-icon\", [[\"class\", \"separator mat-icon notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"keyboard-arrow-right\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i7.View_MatIcon_0, i7.RenderType_MatIcon)), i1.ɵdid(1, 9158656, null, 0, i8.MatIcon, [i1.ElementRef, i8.MatIconRegistry, [8, null], [2, i8.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null)], function (_ck, _v) { var currVal_2 = \"keyboard-arrow-right\"; _ck(_v, 1, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 1).inline; var currVal_1 = (((i1.ɵnov(_v, 1).color !== \"primary\") && (i1.ɵnov(_v, 1).color !== \"accent\")) && (i1.ɵnov(_v, 1).color !== \"warn\")); _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nfunction View_FolderPreviewComponent_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, \"div\", [[\"class\", \"breadcrumb-item\"]], null, [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.openFolder(_v.context.$implicit) !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, null, null)), (_l()(), i1.ɵted(3, null, [\"\", \"\"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_FolderPreviewComponent_3)), i1.ɵdid(6, 16384, null, 0, i9.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"]))], function (_ck, _v) { var currVal_1 = !_v.context.last; _ck(_v, 6, 0, currVal_1); }, function (_ck, _v) { var currVal_0 = _v.context.$implicit.name; _ck(_v, 3, 0, currVal_0); }); }\nfunction View_FolderPreviewComponent_4(_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, 16777216, null, null, 7, \"button\", [[\"class\", \"view-toggle-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 = (i1.ɵnov(_v, 4).show() !== false);\n        ad = (pd_0 && ad);\n    } if ((\"keydown\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 4)._handleKeydown($event) !== false);\n        ad = (pd_1 && ad);\n    } if ((\"touchend\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 4)._handleTouchend() !== false);\n        ad = (pd_2 && ad);\n    } if ((\"click\" === en)) {\n        var pd_3 = (_co.toggleViewMode() !== false);\n        ad = (pd_3 && ad);\n    } return ad; }, i2.View_MatButton_0, i2.RenderType_MatButton)), i1.ɵdid(3, 180224, null, 0, i3.MatButton, [i1.ElementRef, i4.Platform, i5.FocusMonitor, [2, i6.ANIMATION_MODULE_TYPE]], null, null), i1.ɵdid(4, 147456, null, 0, i10.MatTooltip, [i11.Overlay, i1.ElementRef, i12.ScrollDispatcher, i1.ViewContainerRef, i1.NgZone, i4.Platform, i5.AriaDescriber, i5.FocusMonitor, i10.MAT_TOOLTIP_SCROLL_STRATEGY, [2, i13.Directionality], [2, i10.MAT_TOOLTIP_DEFAULT_OPTIONS], [2, i14.HAMMER_LOADER]], { message: [0, \"message\"] }, null), i1.ɵppd(5, 1), (_l()(), i1.ɵted(-1, 0, [\"\\n                \"])), (_l()(), i1.ɵeld(7, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"action-icon mat-icon notranslate\"], [\"role\", \"img\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i7.View_MatIcon_0, i7.RenderType_MatIcon)), i1.ɵdid(8, 9158656, null, 0, i8.MatIcon, [i1.ElementRef, i8.MatIconRegistry, [8, null], [2, i8.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"]))], function (_ck, _v) { var currVal_2 = i1.ɵunv(_v, 4, 0, _ck(_v, 5, 0, i1.ɵnov(_v.parent, 0), ((_v.context.ngIf === \"list\") ? \"Grid view\" : \"List view\"))); _ck(_v, 4, 0, currVal_2); var currVal_5 = ((_v.context.ngIf === \"list\") ? \"view-list\" : \"view-module\"); _ck(_v, 8, 0, currVal_5); }, function (_ck, _v) { var currVal_0 = (i1.ɵnov(_v, 3).disabled || null); var currVal_1 = (i1.ɵnov(_v, 3)._animationMode === \"NoopAnimations\"); _ck(_v, 2, 0, currVal_0, currVal_1); var currVal_3 = i1.ɵnov(_v, 8).inline; var currVal_4 = (((i1.ɵnov(_v, 8).color !== \"primary\") && (i1.ɵnov(_v, 8).color !== \"accent\")) && (i1.ɵnov(_v, 8).color !== \"warn\")); _ck(_v, 7, 0, currVal_3, currVal_4); }); }\nfunction View_FolderPreviewComponent_5(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵ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; var _co = _v.component; if ((\"longpress\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 2).show() !== 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 ((\"touchend\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 2)._handleTouchend() !== false);\n        ad = (pd_2 && ad);\n    } if ((\"click\" === en)) {\n        var pd_3 = (_co.download() !== false);\n        ad = (pd_3 && 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), i1.ɵdid(2, 147456, null, 0, i10.MatTooltip, [i11.Overlay, i1.ElementRef, i12.ScrollDispatcher, i1.ViewContainerRef, i1.NgZone, i4.Platform, i5.AriaDescriber, i5.FocusMonitor, i10.MAT_TOOLTIP_SCROLL_STRATEGY, [2, i13.Directionality], [2, i10.MAT_TOOLTIP_DEFAULT_OPTIONS], [2, i14.HAMMER_LOADER]], { message: [0, \"message\"] }, null), i1.ɵppd(3, 1), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵeld(5, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"action-icon mat-icon notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"file-download\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i7.View_MatIcon_0, i7.RenderType_MatIcon)), i1.ɵdid(6, 9158656, null, 0, i8.MatIcon, [i1.ElementRef, i8.MatIconRegistry, [8, null], [2, i8.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵand(0, null, null, 0))], function (_ck, _v) { var currVal_2 = i1.ɵunv(_v, 2, 0, _ck(_v, 3, 0, i1.ɵnov(_v.parent, 0), \"Download all\")); _ck(_v, 2, 0, currVal_2); var currVal_5 = \"file-download\"; _ck(_v, 6, 0, currVal_5); }, 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_3 = i1.ɵnov(_v, 6).inline; var currVal_4 = (((i1.ɵnov(_v, 6).color !== \"primary\") && (i1.ɵnov(_v, 6).color !== \"accent\")) && (i1.ɵnov(_v, 6).color !== \"warn\")); _ck(_v, 5, 0, currVal_3, currVal_4); }); }\nfunction View_FolderPreviewComponent_7(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"files-grid\", [], null, null, null, i15.View_FilesGridComponent_0, i15.RenderType_FilesGridComponent)), i1.ɵdid(1, 49152, null, 0, i16.FilesGridComponent, [], { entries: [0, \"entries\"], disableInteractions: [1, \"disableInteractions\"] }, null)], function (_ck, _v) { var currVal_0 = _v.parent.context.ngIf.data; var currVal_1 = true; _ck(_v, 1, 0, currVal_0, currVal_1); }, null); }\nfunction View_FolderPreviewComponent_8(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵted(-1, null, [\"\\n           \"])), (_l()(), i1.ɵeld(1, 0, null, null, 1, \"files-list\", [], null, null, null, i17.View_FilesListComponent_0, i17.RenderType_FilesListComponent)), i1.ɵdid(2, 49152, null, 0, i18.FilesListComponent, [i19.Store], { entries: [0, \"entries\"], disableInteractions: [1, \"disableInteractions\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n       \"]))], function (_ck, _v) { var currVal_0 = _v.parent.context.ngIf.data; var currVal_1 = true; _ck(_v, 2, 0, currVal_0, currVal_1); }, null); }\nfunction View_FolderPreviewComponent_9(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 10, \"no-results-message\", [[\"class\", \"no-results-message\"]], null, null, null, i20.View_NoResultsMessageComponent_0, i20.RenderType_NoResultsMessageComponent)), i1.ɵdid(1, 49152, null, 0, i21.NoResultsMessageComponent, [i22.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n           \"])), (_l()(), i1.ɵeld(3, 0, null, 0, 2, \"span\", [[\"primary-text\", \"\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(4, 4341760, null, 0, i23.TranslateDirective, [i1.ElementRef, i24.Translations, i22.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Folder Is Empty\"])), (_l()(), i1.ɵted(-1, null, [\"\\n           \"])), (_l()(), i1.ɵeld(7, 0, null, 1, 2, \"span\", [[\"secondary-text\", \"\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(8, 4341760, null, 0, i23.TranslateDirective, [i1.ElementRef, i24.Translations, i22.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"No files have been uploaded to this folder yet.\"])), (_l()(), i1.ɵted(-1, null, [\"\\n       \"]))], null, null); }\nfunction View_FolderPreviewComponent_6(_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.ɵand(16777216, null, null, 2, null, View_FolderPreviewComponent_7)), i1.ɵdid(3, 16384, null, 0, i9.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"], ngIfElse: [1, \"ngIfElse\"] }, null), i1.ɵpid(131072, i9.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n       \"])), (_l()(), i1.ɵand(0, [[\"filesList\", 2]], null, 0, null, View_FolderPreviewComponent_8)), (_l()(), i1.ɵted(-1, null, [\"\\n       \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_FolderPreviewComponent_9)), i1.ɵdid(9, 16384, null, 0, i9.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 = (i1.ɵunv(_v, 3, 0, i1.ɵnov(_v, 4).transform(_co.viewMode$)) === \"grid\"); var currVal_1 = i1.ɵnov(_v, 6); _ck(_v, 3, 0, currVal_0, currVal_1); var currVal_2 = !_v.context.ngIf.data.length; _ck(_v, 9, 0, currVal_2); }, null); }\nexport function View_FolderPreviewComponent_0(_l) { return i1.ɵvid(2, [i1.ɵpid(0, i25.TransPipe, [i24.Translations]), i1.ɵqud(402653184, 1, { filesContainer: 0 }), (_l()(), i1.ɵeld(2, 0, null, null, 1, \"material-navbar\", [], [[2, \"transparent\", null]], null, null, i26.View_MaterialNavbar_0, i26.RenderType_MaterialNavbar)), i1.ɵdid(3, 114688, null, 0, i27.MaterialNavbar, [i22.Settings, i28.CurrentUser, i1.ElementRef, i29.BreakpointsService], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵeld(5, 0, null, null, 32, \"div\", [[\"class\", \"toolbar\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(7, 0, null, null, 8, \"div\", [[\"class\", \"breadcrumb\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_FolderPreviewComponent_1)), i1.ɵdid(10, 16384, null, 0, i9.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵand(16777216, null, null, 2, null, View_FolderPreviewComponent_2)), i1.ɵdid(13, 278528, null, 0, i9.NgForOf, [i1.ViewContainerRef, i1.TemplateRef, i1.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null), i1.ɵpid(131072, i9.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n    \"])), (_l()(), i1.ɵeld(17, 0, null, null, 19, \"div\", [[\"class\", \"actions\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(19, 0, null, null, 5, \"entries-sort-button\", [], [[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, i30.View_EntriesSortButtonComponent_0, i30.RenderType_EntriesSortButtonComponent)), i1.ɵdid(20, 49152, null, 0, i31.EntriesSortButtonComponent, [], null, null), i1.ɵprd(1024, null, i32.NG_VALUE_ACCESSOR, function (p0_0) { return [p0_0]; }, [i31.EntriesSortButtonComponent]), i1.ɵdid(22, 540672, null, 0, i32.FormControlDirective, [[8, null], [8, null], [6, i32.NG_VALUE_ACCESSOR], [2, i32.ɵangular_packages_forms_forms_k]], { form: [0, \"form\"] }, null), i1.ɵprd(2048, null, i32.NgControl, null, [i32.FormControlDirective]), i1.ɵdid(24, 16384, null, 0, i32.NgControlStatus, [[4, i32.NgControl]], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n\\n        \"])), (_l()(), i1.ɵeld(26, 0, null, null, 0, \"span\", [[\"class\", \"action-separator\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n\\n        \"])), (_l()(), i1.ɵand(16777216, null, null, 2, null, View_FolderPreviewComponent_4)), i1.ɵdid(29, 16384, null, 0, i9.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), i1.ɵpid(131072, i9.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n\\n        \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_FolderPreviewComponent_5)), i1.ɵdid(33, 16384, null, 0, i9.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n\\n        \"])), i1.ɵncd(null, 0), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵeld(39, 0, [[1, 0], [\"filesContainer\", 1]], null, 5, \"div\", [[\"class\", \"files-container\"]], null, [[null, \"tap\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"tap\" === en)) {\n        var pd_0 = (_co.onTap($event) !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n   \"])), (_l()(), i1.ɵand(16777216, null, null, 2, null, View_FolderPreviewComponent_6)), i1.ɵdid(42, 16384, null, 0, i9.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), i1.ɵpid(131072, i9.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵeld(46, 0, null, null, 2, \"loading-indicator\", [[\"class\", \"overlay\"]], [[40, \"@visibility\", 0]], null, null, i33.View_LoadingIndicatorComponent_0, i33.RenderType_LoadingIndicatorComponent)), i1.ɵdid(47, 49152, null, 0, i34.LoadingIndicatorComponent, [], { isVisible: [0, \"isVisible\"] }, null), i1.ɵpid(131072, i9.AsyncPipe, [i1.ChangeDetectorRef])], function (_ck, _v) { var _co = _v.component; _ck(_v, 3, 0); var currVal_1 = _co.isSubFolder(); _ck(_v, 10, 0, currVal_1); var currVal_2 = i1.ɵunv(_v, 13, 0, i1.ɵnov(_v, 14).transform(_co.breadcrumb$)); _ck(_v, 13, 0, currVal_2); var currVal_10 = _co.sortFormControl; _ck(_v, 22, 0, currVal_10); var currVal_11 = i1.ɵunv(_v, 29, 0, i1.ɵnov(_v, 30).transform(_co.viewMode$)); _ck(_v, 29, 0, currVal_11); var currVal_12 = _co.data.link.allow_download; _ck(_v, 33, 0, currVal_12); var currVal_13 = i1.ɵunv(_v, 42, 0, i1.ɵnov(_v, 43).transform(_co.pagination$)); _ck(_v, 42, 0, currVal_13); var currVal_15 = i1.ɵunv(_v, 47, 0, i1.ɵnov(_v, 48).transform(_co.loading$)); _ck(_v, 47, 0, currVal_15); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 3).transparent; _ck(_v, 2, 0, currVal_0); var currVal_3 = i1.ɵnov(_v, 24).ngClassUntouched; var currVal_4 = i1.ɵnov(_v, 24).ngClassTouched; var currVal_5 = i1.ɵnov(_v, 24).ngClassPristine; var currVal_6 = i1.ɵnov(_v, 24).ngClassDirty; var currVal_7 = i1.ɵnov(_v, 24).ngClassValid; var currVal_8 = i1.ɵnov(_v, 24).ngClassInvalid; var currVal_9 = i1.ɵnov(_v, 24).ngClassPending; _ck(_v, 19, 0, currVal_3, currVal_4, currVal_5, currVal_6, currVal_7, currVal_8, currVal_9); var currVal_14 = i1.ɵnov(_v, 47).isVisible; _ck(_v, 46, 0, currVal_14); }); }\nexport function View_FolderPreviewComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"folder-preview\", [], null, null, null, View_FolderPreviewComponent_0, RenderType_FolderPreviewComponent)), i1.ɵdid(1, 770048, null, 0, i35.FolderPreviewComponent, [i19.Store, i36.OverlayPanel, i37.Router, i38.ShareableLinksApiService], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nvar FolderPreviewComponentNgFactory = i1.ɵccf(\"folder-preview\", i35.FolderPreviewComponent, View_FolderPreviewComponent_Host_0, { threshold: \"threshold\", data: \"data\", password: \"password\" }, {}, [\"*\"]);\nexport { FolderPreviewComponentNgFactory as FolderPreviewComponentNgFactory };\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 = [\"folder-preview{display:block;max-height:100vh;overflow:auto}folder-preview .files-container{max-width:1280px;margin-left:auto;margin-right:auto;padding:10px}folder-preview .toolbar{display:flex;padding:15px;margin-bottom:15px;border-bottom:1px solid #e0e0e0;color:rgba(0,0,0,.87)}@media only screen and (max-width:768px){folder-preview .toolbar{display:block}folder-preview .toolbar .breadcrumb{margin-bottom:10px}}folder-preview .toolbar .action-icon{color:rgba(0,0,0,.5)}folder-preview .toolbar .breadcrumb{flex:1 1 auto}folder-preview .toolbar .actions{margin-left:auto}folder-preview .toolbar .action-separator{display:inline-block;vertical-align:middle;background-color:#e0e0e0;width:1px;height:40px;margin:0 12px}folder-preview .drive-entry{cursor:pointer;transition-property:all}folder-preview .drive-entry:hover{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)}folder-preview .breadcrumb{display:flex;align-items:center;max-width:100%;overflow:hidden}folder-preview .breadcrumb .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}folder-preview .breadcrumb .breadcrumb-item:hover{background-color:#f1f1f1}folder-preview .breadcrumb .breadcrumb-item:first-of-type{text-transform:capitalize}folder-preview .breadcrumb .breadcrumb-item .mat-icon{vertical-align:middle;color:rgba(0,0,0,.54);margin-left:-5px}folder-preview .breadcrumb .separator{color:rgba(0,0,0,.54)}folder-preview no-results-message{margin-top:40px}@media only screen and (max-width:450px){folder-preview entries-sort-button .label{display:none}}\"];\nexport { styles as styles };\n","<material-navbar></material-navbar>\r\n\r\n<div class=\"toolbar\">\r\n    <div class=\"breadcrumb\">\r\n        <button mat-icon-button *ngIf=\"isSubFolder()\" (click)=\"openFolder()\" class=\"home-button\">\r\n            <mat-icon svgIcon=\"home\" class=\"action-icon\"></mat-icon>\r\n        </button>\r\n        <ng-container *ngFor=\"let folder of breadcrumb$ | async; last as last;\">\r\n            <div class=\"breadcrumb-item\" (click)=\"openFolder(folder)\">{{folder.name}}</div>\r\n            <mat-icon class=\"separator\" svgIcon=\"keyboard-arrow-right\" *ngIf=\"!last\"></mat-icon>\r\n        </ng-container>\r\n    </div>\r\n\r\n    <div class=\"actions\">\r\n        <entries-sort-button [formControl]=\"sortFormControl\"></entries-sort-button>\r\n\r\n        <span class=\"action-separator\"></span>\r\n\r\n        <ng-container *ngIf=\"viewMode$ | async as viewMode\">\r\n            <button mat-icon-button (click)=\"toggleViewMode()\" class=\"view-toggle-button\" [matTooltip]=\"(viewMode === 'list' ? 'Grid view' : 'List view') | trans\">\r\n                <mat-icon [svgIcon]=\"viewMode === 'list' ? 'view-list' : 'view-module'\" class=\"action-icon\"></mat-icon>\r\n            </button>\r\n        </ng-container>\r\n\r\n        <button mat-icon-button (click)=\"download()\" *ngIf=\"data.link.allow_download\" [matTooltip]=\"'Download all' | trans\">\r\n            <mat-icon svgIcon=\"file-download\" class=\"action-icon\"></mat-icon>\r\n        </button>\r\n\r\n        <ng-content></ng-content>\r\n    </div>\r\n</div>\r\n\r\n<div class=\"files-container\" #filesContainer (tap)=\"onTap($event)\">\r\n   <ng-container *ngIf=\"pagination$ | async as pagination\">\r\n       <files-grid [entries]=\"pagination.data\" [disableInteractions]=\"true\" *ngIf=\"(viewMode$ | async) === 'grid'; else filesList\"></files-grid>\r\n       <ng-template #filesList>\r\n           <files-list [entries]=\"pagination.data\" [disableInteractions]=\"true\"></files-list>\r\n       </ng-template>\r\n       <no-results-message *ngIf=\"!pagination.data.length\">\r\n           <span primary-text trans>Folder Is Empty</span>\r\n           <span secondary-text trans>No files have been uploaded to this folder yet.</span>\r\n       </no-results-message>\r\n   </ng-container>\r\n</div>\r\n\r\n<loading-indicator [isVisible]=\"loading$ | async\" class=\"overlay\"></loading-indicator>","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 { 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\nimport { CurrentUser } from '../auth/current-user';\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        protected settings: Settings,\r\n        protected http: AppHttpClient,\r\n        protected sanitizer: DomSanitizer,\r\n        protected currentUser: CurrentUser,\r\n    ) {}\r\n\r\n    public getSrc(): string {\r\n        return this.settings.getBaseUrl() + this.file.url;\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","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","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        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 extendStatics(d, b);\n    };\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, OnInit, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { BaseFilePreview } from '../base-file-preview';\r\n\r\nconst FIVE_MB = 5242880;\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    public content$ = new BehaviorSubject('');\r\n    public fileTooLarge$ = new BehaviorSubject(false);\r\n\r\n    ngOnInit() {\r\n        if (this.file.file_size > FIVE_MB) {\r\n            this.fileTooLarge$.next(true);\r\n        } else {\r\n            this.loadFileContents();\r\n        }\r\n    }\r\n\r\n    private loadFileContents() {\r\n        this.getContents()\r\n            .subscribe(content => {\r\n                this.content$.next(content);\r\n            });\r\n    }\r\n}\r\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        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 extendStatics(d, b);\n    };\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 FIVE_MB = 5242880;\nvar TextPreviewComponent = /** @class */ (function (_super) {\n    __extends(TextPreviewComponent, _super);\n    function TextPreviewComponent() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.content$ = new BehaviorSubject('');\n        _this.fileTooLarge$ = new BehaviorSubject(false);\n        return _this;\n    }\n    TextPreviewComponent.prototype.ngOnInit = function () {\n        if (this.file.file_size > FIVE_MB) {\n            this.fileTooLarge$.next(true);\n        }\n        else {\n            this.loadFileContents();\n        }\n    };\n    TextPreviewComponent.prototype.loadFileContents = function () {\n        var _this = this;\n        this.getContents()\n            .subscribe(function (content) {\n            _this.content$.next(content);\n        });\n    };\n    return TextPreviewComponent;\n}(BaseFilePreview));\nexport { TextPreviewComponent };\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, ElementRef, OnInit } from '@angular/core';\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 = function (d, b) {\n        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 extendStatics(d, b);\n    };\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 } 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 = function (d, b) {\n        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 extendStatics(d, b);\n    };\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 { 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 = function (d, b) {\n        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 extendStatics(d, b);\n    };\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, 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    public getSrc() {\r\n        return super.getSrc() + '#toolbar=0';\r\n    }\r\n}\r\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        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 extendStatics(d, b);\n    };\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    PdfPreviewComponent.prototype.getSrc = function () {\n        return _super.prototype.getSrc.call(this) + '#toolbar=0';\n    };\n    return PdfPreviewComponent;\n}(BaseFilePreview));\nexport { PdfPreviewComponent };\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, ElementRef, AfterViewInit } from '@angular/core';\nimport { BaseFilePreview } from '../base-file-preview';\nimport { BehaviorSubject } from 'rxjs';\n\n@Component({\n    selector: 'google-docs-viewer',\n    templateUrl: './google-docs-viewer.component.html',\n    styleUrls: ['./google-docs-viewer.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GoogleDocsViewerComponent extends BaseFilePreview implements AfterViewInit {\n    @ViewChild('iframe') iframe: ElementRef<HTMLIFrameElement>;\n    public loading$ = new BehaviorSubject(true);\n    public showDefaultPreview$ = new BehaviorSubject(false);\n    private timeoutRef: number;\n\n    ngAfterViewInit() {\n        // google docs viewer only supports file up to 25MB\n        if (this.file.file_size > 25000000) {\n            return this.showDefaultPreview();\n        }\n\n        this.iframe.nativeElement.onload = () => {\n            clearTimeout(this.timeoutRef);\n            this.stopLoading();\n        };\n\n        this.getIframeSrc().then(url => {\n            this.iframe.nativeElement.src = url;\n        }).catch(() => {\n            this.showDefaultPreview();\n        });\n\n        // if google docs preview iframe is not loaded\n        // after 6 seconds, bail and show default preview\n        this.timeoutRef = setTimeout(() => {\n            this.showDefaultPreview();\n        }, 5000);\n    }\n\n    public stopLoading() {\n        this.loading$.next(false);\n    }\n\n    public showDefaultPreview() {\n        this.stopLoading();\n        this.showDefaultPreview$.next(true);\n    }\n\n    public openInNewWindow() {\n        window.open(window.location.href, '_blank');\n    }\n\n    private getIframeSrc(): Promise<string> {\n        return new Promise((resolve, reject) => {\n            let previewUrl = this.getSrc();\n\n            // if we're not trying to preview shareable link we will need to generate\n            // preview token, otherwise google won't be able to access this file\n            if (previewUrl.indexOf('shareable_link') === -1) {\n                this.http.post(`uploads/${this.file.id}/add-preview-token`).subscribe(response => {\n                    previewUrl += `?preview_token=${response.preview_token}`;\n                    resolve(this.getGoogleDocsUrl(previewUrl));\n                }, () => reject);\n            } else {\n                resolve(this.getGoogleDocsUrl(previewUrl));\n            }\n        });\n    }\n\n    private getGoogleDocsUrl(previewUrl: string) {\n        return 'https://docs.google.com/gview?embedded=true&url=' + encodeURIComponent(previewUrl);\n    }\n}\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        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 extendStatics(d, b);\n    };\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, AfterViewInit } from '@angular/core';\nimport { BaseFilePreview } from '../base-file-preview';\nimport { BehaviorSubject } from 'rxjs';\nvar GoogleDocsViewerComponent = /** @class */ (function (_super) {\n    __extends(GoogleDocsViewerComponent, _super);\n    function GoogleDocsViewerComponent() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.loading$ = new BehaviorSubject(true);\n        _this.showDefaultPreview$ = new BehaviorSubject(false);\n        return _this;\n    }\n    GoogleDocsViewerComponent.prototype.ngAfterViewInit = function () {\n        var _this = this;\n        // google docs viewer only supports file up to 25MB\n        if (this.file.file_size > 25000000) {\n            return this.showDefaultPreview();\n        }\n        this.iframe.nativeElement.onload = function () {\n            clearTimeout(_this.timeoutRef);\n            _this.stopLoading();\n        };\n        this.getIframeSrc().then(function (url) {\n            _this.iframe.nativeElement.src = url;\n        }).catch(function () {\n            _this.showDefaultPreview();\n        });\n        // if google docs preview iframe is not loaded\n        // after 6 seconds, bail and show default preview\n        this.timeoutRef = setTimeout(function () {\n            _this.showDefaultPreview();\n        }, 5000);\n    };\n    GoogleDocsViewerComponent.prototype.stopLoading = function () {\n        this.loading$.next(false);\n    };\n    GoogleDocsViewerComponent.prototype.showDefaultPreview = function () {\n        this.stopLoading();\n        this.showDefaultPreview$.next(true);\n    };\n    GoogleDocsViewerComponent.prototype.openInNewWindow = function () {\n        window.open(window.location.href, '_blank');\n    };\n    GoogleDocsViewerComponent.prototype.getIframeSrc = function () {\n        var _this = this;\n        return new Promise(function (resolve, reject) {\n            var previewUrl = _this.getSrc();\n            // if we're not trying to preview shareable link we will need to generate\n            // preview token, otherwise google won't be able to access this file\n            if (previewUrl.indexOf('shareable_link') === -1) {\n                _this.http.post(\"uploads/\" + _this.file.id + \"/add-preview-token\").subscribe(function (response) {\n                    previewUrl += \"?preview_token=\" + response.preview_token;\n                    resolve(_this.getGoogleDocsUrl(previewUrl));\n                }, function () { return reject; });\n            }\n            else {\n                resolve(_this.getGoogleDocsUrl(previewUrl));\n            }\n        });\n    };\n    GoogleDocsViewerComponent.prototype.getGoogleDocsUrl = function (previewUrl) {\n        return 'https://docs.google.com/gview?embedded=true&url=' + encodeURIComponent(previewUrl);\n    };\n    return GoogleDocsViewerComponent;\n}(BaseFilePreview));\nexport { GoogleDocsViewerComponent };\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\nimport { GoogleDocsViewerComponent } from './google-docs-viewer/google-docs-viewer.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    spreadsheet = GoogleDocsViewerComponent;\r\n    powerPoint = GoogleDocsViewerComponent;\r\n    word = GoogleDocsViewerComponent;\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\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    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'|number) {\r\n        let newPointer = 0;\r\n\r\n        if (typeof dir === 'string') {\r\n            const oldPointer = this.meta.value.pointer;\r\n            newPointer = dir === 'next' ? oldPointer + 1 : oldPointer - 1;\r\n        } else if (typeof dir === 'number') {\r\n            newPointer = dir;\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[], activeFile?: number) {\r\n        if ( ! files || files.length === 0) return;\r\n        this.files = files.filter(entry => entry.type !== 'folder');\r\n        this.updateMeta(activeFile);\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        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","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 * 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.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 (typeof dir === 'string') {\n            var oldPointer = this.meta.value.pointer;\n            newPointer = dir === 'next' ? oldPointer + 1 : oldPointer - 1;\n        }\n        else if (typeof dir === 'number') {\n            newPointer = dir;\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, activeFile) {\n        if (!files || files.length === 0)\n            return;\n        this.files = files.filter(function (entry) { return entry.type !== 'folder'; });\n        this.updateMeta(activeFile);\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        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    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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"arrow-back\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i7.View_MatIcon_0, i7.RenderType_MatIcon)), i1.ɵdid(4, 9158656, null, 0, i8.MatIcon, [i1.ElementRef, i8.MatIconRegistry, [8, null], [2, i8.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n\"]))], function (_ck, _v) { var currVal_4 = \"arrow-back\"; _ck(_v, 4, 0, currVal_4); }, 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; var currVal_3 = (((i1.ɵnov(_v, 4).color !== \"primary\") && (i1.ɵnov(_v, 4).color !== \"accent\")) && (i1.ɵnov(_v, 4).color !== \"warn\")); _ck(_v, 3, 0, currVal_2, currVal_3); }); }\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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"keyboard-arrow-left\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i7.View_MatIcon_0, i7.RenderType_MatIcon)), i1.ɵdid(8, 9158656, null, 0, i8.MatIcon, [i1.ElementRef, i8.MatIconRegistry, [8, null], [2, i8.MAT_ICON_LOCATION]], { 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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"keyboard-arrow-right\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i7.View_MatIcon_0, i7.RenderType_MatIcon)), i1.ɵdid(18, 9158656, null, 0, i8.MatIcon, [i1.ElementRef, i8.MatIconRegistry, [8, null], [2, i8.MAT_ICON_LOCATION]], { 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_5 = \"keyboard-arrow-left\"; _ck(_v, 8, 0, currVal_5); var currVal_10 = !_v.context.ngIf.haveNext; _ck(_v, 15, 0, currVal_10); var currVal_13 = \"keyboard-arrow-right\"; _ck(_v, 18, 0, currVal_13); }, 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; var currVal_4 = (((i1.ɵnov(_v, 8).color !== \"primary\") && (i1.ɵnov(_v, 8).color !== \"accent\")) && (i1.ɵnov(_v, 8).color !== \"warn\")); _ck(_v, 7, 0, currVal_3, currVal_4); var currVal_6 = (_v.context.ngIf.pointer + 1); var currVal_7 = _v.context.ngIf.total; _ck(_v, 12, 0, currVal_6, currVal_7); var currVal_8 = (i1.ɵnov(_v, 15).disabled || null); var currVal_9 = (i1.ɵnov(_v, 15)._animationMode === \"NoopAnimations\"); _ck(_v, 14, 0, currVal_8, currVal_9); var currVal_11 = i1.ɵnov(_v, 18).inline; var currVal_12 = (((i1.ɵnov(_v, 18).color !== \"primary\") && (i1.ɵnov(_v, 18).color !== \"accent\")) && (i1.ɵnov(_v, 18).color !== \"warn\")); _ck(_v, 17, 0, currVal_11, currVal_12); }); }\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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"file-download\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i7.View_MatIcon_0, i7.RenderType_MatIcon)), i1.ɵdid(18, 9158656, null, 0, i8.MatIcon, [i1.ElementRef, i8.MatIconRegistry, [8, null], [2, i8.MAT_ICON_LOCATION]], { 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_8 = \"file-download\"; _ck(_v, 18, 0, currVal_8); }, 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; var currVal_7 = (((i1.ɵnov(_v, 18).color !== \"primary\") && (i1.ɵnov(_v, 18).color !== \"accent\")) && (i1.ɵnov(_v, 18).color !== \"warn\")); _ck(_v, 17, 0, currVal_6, currVal_7); }); }\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:flex;align-items:center;justify-content:center;max-width:100%;overflow:hidden;min-height:1px}ad-host:empty{display:none}ad-host.margin-bottom{margin-bottom:15px}ad-host.margin-top{margin-top:15px}ad-host>:not(img){width:100%;max-width:1200px}\"];\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    @Input() activeFile: number;\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, this.activeFile);\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 listenForDownloadClick(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.listenForDownloadClick($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\", activeFile: \"activeFile\" }, {}, []);\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)=\"listenForDownloadClick($event)\"></ng-template>\r\n</ng-container>","var __assign = (this && this.__assign) || function () {\n    __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    };\n    return __assign.apply(this, arguments);\n};\nimport { OnInit, OnDestroy, ElementRef } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ShareableLinksApiService } from '../../sharing/links/shareable-links-api.service';\nimport { BehaviorSubject, fromEvent } 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, el) {\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.el = el;\n        this.data$ = new BehaviorSubject(null);\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.data$.pipe(map(function (data) { return data.link; }), 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.disableContextMenu();\n        this.route.params.subscribe(function (params) {\n            _this.links.findByHash(params.hash, { withEntries: true }).subscribe(function (response) {\n                _this.data$.next(response);\n                _this.setBackgroundClass(response.link);\n                if (response.link.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.data$.value.link.id, this.password)\n            .subscribe(function (response) {\n            var link = _this.data$.value.link;\n            link.entry.users = response.users;\n            _this.data$.next(__assign({}, _this.data$.value, { link: link }));\n            _this.toast.open({\n                message: \"\\\":name\\\" imported into your drive.\",\n                replacements: { name: link.entry.name },\n            });\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.data$.value.link;\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 data = this.data$.value;\n        data.link.entry.url += \"?shareable_link=\" + data.link.id;\n        if (this.password) {\n            data.link.entry.url += \"&password=\" + this.password;\n        }\n        this.data$.next(__assign({}, data));\n    };\n    LinkPreviewContainerComponent.prototype.setValidPassword = function (password) {\n        this.password = password;\n        this.showPreview();\n        this.togglePasswordPanel(false);\n    };\n    LinkPreviewContainerComponent.prototype.setBackgroundClass = function (link) {\n        var className = link.entry.type === 'folder' ? 'folder-link' : 'file-link';\n        this.el.nativeElement.classList.add(className);\n    };\n    LinkPreviewContainerComponent.prototype.disableContextMenu = function () {\n        fromEvent(this.el.nativeElement, 'contextmenu')\n            .subscribe(function (e) {\n            e.preventDefault();\n        });\n    };\n    return LinkPreviewContainerComponent;\n}());\nexport { LinkPreviewContainerComponent };\n","import { Component, OnInit, ViewEncapsulation, ChangeDetectionStrategy, OnDestroy, ElementRef } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { GetLinkData, ShareableLinksApiService } from '../../sharing/links/shareable-links-api.service';\nimport { BehaviorSubject, fromEvent, Observable, Subscription } 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';\nimport { ShareableLink } from '../../sharing/links/models/shareable-link';\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 data$: BehaviorSubject<GetLinkData> = new BehaviorSubject(null);\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        return this.data$.pipe(\n            map(data => data.link),\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        private el: ElementRef<HTMLElement>,\n    ) {}\n\n    ngOnInit() {\n        this.bindToDownload();\n        this.disableContextMenu();\n        this.route.params.subscribe(params => {\n            this.links.findByHash(params.hash, {withEntries: true}).subscribe(response => {\n                this.data$.next(response);\n                this.setBackgroundClass(response.link);\n\n                if (response.link.password) {\n                    this.togglePasswordPanel(true);\n                } else {\n                    this.togglePasswordPanel(false);\n                    this.showPreview();\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.data$.value.link.id, this.password)\n            .subscribe(response => {\n                const link = this.data$.value.link;\n                link.entry.users = response.users;\n                this.data$.next({...this.data$.value, link});\n                this.toast.open({\n                    message: `\":name\" imported into your drive.`,\n                    replacements: {name: link.entry.name},\n                });\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.data$.value.link;\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 data = this.data$.value;\n        data.link.entry.url += `?shareable_link=${data.link.id}`;\n        if (this.password) {\n            data.link.entry.url += `&password=${this.password}`;\n        }\n        this.data$.next({...data});\n    }\n\n    public setValidPassword(password: string) {\n        this.password = password;\n        this.showPreview();\n        this.togglePasswordPanel(false);\n    }\n\n    private setBackgroundClass(link: ShareableLink) {\n        const className = link.entry.type === 'folder' ? 'folder-link' : 'file-link';\n        this.el.nativeElement.classList.add(className);\n    }\n\n    private disableContextMenu() {\n        fromEvent(this.el.nativeElement, 'contextmenu')\n            .subscribe(e => {\n                e.preventDefault();\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-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 \"../../../../../node_modules/@angular/material/button/typings/index.ngfactory\";\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/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 \"../folder-preview/folder-preview.component.ngfactory\";\nimport * as i14 from \"../folder-preview/folder-preview.component\";\nimport * as i15 from \"@ngxs/store\";\nimport * as i16 from \"../../../../common/core/ui/overlay-panel/overlay-panel.service\";\nimport * as i17 from \"@angular/router\";\nimport * as i18 from \"@angular/common\";\nimport * as i19 from \"../file-preview-overlay/file-preview-toolbar/file-preview-toolbar.component.ngfactory\";\nimport * as i20 from \"../file-preview-overlay/file-preview-toolbar/file-preview-toolbar.component\";\nimport * as i21 from \"../../../../common/file-preview/preview-files.service\";\nimport * as i22 from \"../../../../common/core/ui/ad-host/ad-host.component.ngfactory\";\nimport * as i23 from \"../../../../common/core/ui/ad-host/ad-host.component\";\nimport * as i24 from \"../../../../common/auth/current-user\";\nimport * as i25 from \"../../../../common/core/utils/lazy-loader.service\";\nimport * as i26 from \"../../../../common/file-preview/preview-container/preview-container.component.ngfactory\";\nimport * as i27 from \"../../../../common/file-preview/preview-container/preview-container.component\";\nimport * as i28 from \"../../../../common/file-preview/available-previews\";\nimport * as i29 from \"./link-preview-container.component\";\nimport * as i30 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_2(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"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\" })], function (_ck, _v) { var currVal_0 = _v.parent.context.ngIf.link; _ck(_v, 1, 0, currVal_0); }, null); }\nfunction View_LinkPreviewContainerComponent_5(_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, 0, \"span\", [[\"class\", \"action-separator\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                    \"])), (_l()(), i1.ɵeld(4, 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; }, i5.View_MatButton_0, i5.RenderType_MatButton)), i1.ɵdid(5, 4341760, null, 0, i6.TranslateDirective, [i1.ElementRef, i7.Translations, i8.Settings], null, null), i1.ɵdid(6, 180224, null, 0, i9.MatButton, [i1.ElementRef, i10.Platform, i11.FocusMonitor, [2, i12.ANIMATION_MODULE_TYPE]], { color: [0, \"color\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"Import\"])), (_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, 4, 0, currVal_0, currVal_1); }); }\nfunction View_LinkPreviewContainerComponent_4(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 9, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(2, 0, null, null, 6, \"folder-preview\", [], null, null, null, i13.View_FolderPreviewComponent_0, i13.RenderType_FolderPreviewComponent)), i1.ɵdid(3, 770048, null, 0, i14.FolderPreviewComponent, [i15.Store, i16.OverlayPanel, i17.Router, i4.ShareableLinksApiService], { data: [0, \"data\"], password: [1, \"password\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n                \"])), (_l()(), i1.ɵand(16777216, null, 0, 2, null, View_LinkPreviewContainerComponent_5)), i1.ɵdid(6, 16384, null, 0, i18.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), i1.ɵpid(131072, i18.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"]))], function (_ck, _v) { var _co = _v.component; var currVal_0 = _v.parent.parent.context.ngIf; var currVal_1 = _co.password; _ck(_v, 3, 0, currVal_0, currVal_1); var currVal_2 = (!i1.ɵunv(_v, 6, 0, i1.ɵnov(_v, 7).transform(_co.entryAlreadyImported$)) && _co.currentUser.isLoggedIn()); _ck(_v, 6, 0, currVal_2); }, null); }\nfunction View_LinkPreviewContainerComponent_7(_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; }, i5.View_MatAnchor_0, i5.RenderType_MatAnchor)), i1.ɵdid(1, 4341760, null, 0, i6.TranslateDirective, [i1.ElementRef, i7.Translations, i8.Settings], null, null), i1.ɵdid(2, 180224, null, 0, i9.MatAnchor, [i10.Platform, i11.FocusMonitor, i1.ElementRef, [2, i12.ANIMATION_MODULE_TYPE]], { color: [0, \"color\"] }, null), i1.ɵdid(3, 671744, null, 0, i17.RouterLinkWithHref, [i17.Router, i17.ActivatedRoute, i18.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_8(_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; }, i5.View_MatButton_0, i5.RenderType_MatButton)), i1.ɵdid(1, 4341760, null, 0, i6.TranslateDirective, [i1.ElementRef, i7.Translations, i8.Settings], null, null), i1.ɵdid(2, 180224, null, 0, i9.MatButton, [i1.ElementRef, i10.Platform, i11.FocusMonitor, [2, i12.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_6(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 19, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(2, 0, null, null, 9, \"file-preview-toolbar\", [], null, null, null, i19.View_FilePreviewToolbarComponent_0, i19.RenderType_FilePreviewToolbarComponent)), i1.ɵdid(3, 49152, null, 0, i20.FilePreviewToolbarComponent, [i21.PreviewFilesService, i8.Settings], { showLogo: [0, \"showLogo\"], disableDownload: [1, \"disableDownload\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n                \"])), (_l()(), i1.ɵand(16777216, null, 0, 1, null, View_LinkPreviewContainerComponent_7)), i1.ɵdid(6, 16384, null, 0, i18.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_8)), i1.ɵdid(9, 16384, null, 0, i18.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), i1.ɵpid(131072, i18.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, i22.View_AdHostComponent_0, i22.RenderType_AdHostComponent)), i1.ɵdid(14, 114688, null, 0, i23.AdHostComponent, [i1.ElementRef, i1.Renderer2, i8.Settings, i24.CurrentUser, i25.LazyLoaderService], { slot: [0, \"slot\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(16, 0, null, null, 2, \"preview-container\", [], [[2, \"has-rek\", null]], null, null, i26.View_PreviewContainerComponent_0, i26.RenderType_PreviewContainerComponent)), i1.ɵdid(17, 704512, null, 0, i27.PreviewContainerComponent, [i21.PreviewFilesService], { files: [0, \"files\"] }, null), i1.ɵpad(18, 1), (_l()(), i1.ɵted(-1, null, [\"\\n        \"]))], function (_ck, _v) { var _co = _v.component; var currVal_0 = true; var currVal_1 = !_v.parent.parent.context.ngIf.link.allow_download; _ck(_v, 3, 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 = _ck(_v, 18, 0, _v.parent.parent.context.ngIf.link.entry); _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); }); }\nfunction View_LinkPreviewContainerComponent_3(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_LinkPreviewContainerComponent_4)), i1.ɵdid(2, 16384, null, 0, i18.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_LinkPreviewContainerComponent_6)), i1.ɵdid(5, 16384, null, 0, i18.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.link.entry.type === \"folder\"); _ck(_v, 2, 0, currVal_0); var currVal_1 = (_v.parent.context.ngIf.link.entry.type !== \"folder\"); _ck(_v, 5, 0, currVal_1); }, null); }\nfunction View_LinkPreviewContainerComponent_1(_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.ɵand(16777216, null, null, 2, null, View_LinkPreviewContainerComponent_2)), i1.ɵdid(3, 16384, null, 0, i18.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"], ngIfElse: [1, \"ngIfElse\"] }, null), i1.ɵpid(131072, i18.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n\\n    \"])), (_l()(), i1.ɵand(0, [[\"filePreview\", 2]], null, 0, null, View_LinkPreviewContainerComponent_3)), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵunv(_v, 3, 0, i1.ɵnov(_v, 4).transform(_co.passwordPanelVisible$)); var currVal_1 = i1.ɵnov(_v, 6); _ck(_v, 3, 0, currVal_0, currVal_1); }, null); }\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, i18.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), i1.ɵpid(131072, i18.AsyncPipe, [i1.ChangeDetectorRef])], function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵunv(_v, 1, 0, i1.ɵnov(_v, 2).transform(_co.data$)); _ck(_v, 1, 0, currVal_0); }, 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, i21.PreviewFilesService, i21.PreviewFilesService, [i28.AVAILABLE_PREVIEWS, i1.Injector]), i1.ɵdid(2, 245760, null, 0, i29.LinkPreviewContainerComponent, [i15.Store, i17.ActivatedRoute, i4.ShareableLinksApiService, i21.PreviewFilesService, i8.Settings, i24.CurrentUser, i17.Router, i30.Toast, i1.ElementRef], null, null)], function (_ck, _v) { _ck(_v, 2, 0); }, null); }\nvar LinkPreviewContainerComponentNgFactory = i1.ɵccf(\"link-preview-container\", i29.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%;color:#fff;position:relative;overflow:hidden}link-preview-container.folder-link{background-color:#fff}link-preview-container.file-link{background-color:rgba(0,0,0,.9)}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","<ng-container *ngIf=\"data$ | async as data\">\n    <link-preview-password-panel *ngIf=\"passwordPanelVisible$ | async; else filePreview\" [link]=\"data.link\" (passwordValid)=\"setValidPassword($event)\"></link-preview-password-panel>\n\n    <ng-template #filePreview>\n        <ng-container *ngIf=\"data.link.entry.type === 'folder'\">\n            <folder-preview [data]=\"data\" [password]=\"this.password\">\n                <ng-container *ngIf=\"!(entryAlreadyImported$ | async) && currentUser.isLoggedIn()\">\n                    <span class=\"action-separator\"></span>\n                    <button\n                            mat-flat-button\n                            color=\"primary\"\n                            (click)=\"import()\"\n                            trans\n                    >Import</button>\n                </ng-container>\n            </folder-preview>\n        </ng-container>\n\n        <ng-container *ngIf=\"data.link.entry.type !== 'folder'\">\n            <file-preview-toolbar [showLogo]=\"true\" [disableDownload]=\"!data.link.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]=\"[data.link.entry]\" [class.has-rek]=\"settings.has('ads.filePreview')\"></preview-container>\n        </ng-container>\n    </ng-template>\n</ng-container>","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/translations/translate.pipe\";\nimport * as i15 from \"../../../../common/core/translations/translations.service\";\nimport * as i16 from \"../../../../common/core/ui/formatted-date.pipe\";\nimport * as i17 from \"../../../../common/core/config/settings.service\";\nimport * as i18 from \"@angular/forms\";\nimport * as i19 from \"@angular/material/autocomplete\";\nimport * as i20 from \"@angular/cdk/overlay\";\nimport * as i21 from \"@angular/cdk/bidi\";\nimport * as i22 from \"@angular/cdk/scrolling\";\nimport * as i23 from \"../../../../common/core/translations/translate.directive\";\nimport * as i24 from \"../../../../../node_modules/@angular/material/autocomplete/typings/index.ngfactory\";\nimport * as i25 from \"./main-searchbar.component\";\nimport * as i26 from \"@ngxs/store\";\nimport * as i27 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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"close\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i7.View_MatIcon_0, i7.RenderType_MatIcon)), i1.ɵdid(4, 9158656, null, 0, i8.MatIcon, [i1.ElementRef, i8.MatIconRegistry, [8, null], [2, i8.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"]))], function (_ck, _v) { var currVal_4 = \"close\"; _ck(_v, 4, 0, currVal_4); }, 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; var currVal_3 = (((i1.ɵnov(_v, 4).color !== \"primary\") && (i1.ɵnov(_v, 4).color !== \"accent\")) && (i1.ɵnov(_v, 4).color !== \"warn\")); _ck(_v, 3, 0, currVal_2, currVal_3); }); }\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, 1), _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, 21, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(2, 0, null, null, 18, \"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, 8, \"div\", [[\"class\", \"meta\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(10, 0, null, null, 2, \"div\", [[\"class\", \"name\"]], null, null, null, null, null)), (_l()(), i1.ɵted(11, null, [\"\", \"\"])), i1.ɵppd(12, 1), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_MainSearchbarComponent_3)), i1.ɵdid(15, 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(19, 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, 15, 0, currVal_11); var currVal_12 = _v.context.$implicit.content.updated_at; _ck(_v, 19, 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.type === \"entryType\") ? i1.ɵunv(_v, 11, 0, _ck(_v, 12, 0, i1.ɵnov(_v.parent, 0), _v.context.$implicit.content.name)) : _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.TransPipe, [i15.Translations]), i1.ɵpid(0, i16.FormattedDatePipe, [i17.Settings, i1.LOCALE_ID]), i1.ɵqud(402653184, 1, { trigger: 0 }), (_l()(), i1.ɵeld(3, 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, 5).onSubmit($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"reset\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 5).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(4, 16384, null, 0, i18.ɵangular_packages_forms_forms_bh, [], null, null), i1.ɵdid(5, 4210688, null, 0, i18.NgForm, [[8, null], [8, null]], null, { ngSubmit: \"ngSubmit\" }), i1.ɵprd(2048, null, i18.ControlContainer, null, [i18.NgForm]), i1.ɵdid(7, 16384, null, 0, i18.NgControlStatusGroup, [[4, i18.ControlContainer]], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(9, 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], [1, \"aria-haspopup\", 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, 10)._handleInput($event.target.value) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"blur\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 10).onTouched() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"compositionstart\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 10)._compositionStart() !== false);\n        ad = (pd_2 && ad);\n    } if ((\"compositionend\" === en)) {\n        var pd_3 = (i1.ɵnov(_v, 10)._compositionEnd($event.target.value) !== false);\n        ad = (pd_3 && ad);\n    } if ((\"focusin\" === en)) {\n        var pd_4 = (i1.ɵnov(_v, 11)._handleFocus() !== false);\n        ad = (pd_4 && ad);\n    } if ((\"blur\" === en)) {\n        var pd_5 = (i1.ɵnov(_v, 11)._onTouched() !== false);\n        ad = (pd_5 && ad);\n    } if ((\"input\" === en)) {\n        var pd_6 = (i1.ɵnov(_v, 11)._handleInput($event) !== false);\n        ad = (pd_6 && ad);\n    } if ((\"keydown\" === en)) {\n        var pd_7 = (i1.ɵnov(_v, 11)._handleKeydown($event) !== false);\n        ad = (pd_7 && ad);\n    } return ad; }, null, null)), i1.ɵdid(10, 16384, null, 0, i18.DefaultValueAccessor, [i1.Renderer2, i1.ElementRef, [2, i18.COMPOSITION_BUFFER_MODE]], null, null), i1.ɵdid(11, 147456, null, 0, i19.MatAutocompleteTrigger, [i1.ElementRef, i20.Overlay, i1.ViewContainerRef, i1.NgZone, i1.ChangeDetectorRef, i19.MAT_AUTOCOMPLETE_SCROLL_STRATEGY, [2, i21.Directionality], [8, null], [2, i13.DOCUMENT], i22.ViewportRuler], { autocomplete: [0, \"autocomplete\"] }, null), i1.ɵprd(1024, null, i18.NG_VALUE_ACCESSOR, function (p0_0, p1_0) { return [p0_0, p1_0]; }, [i18.DefaultValueAccessor, i19.MatAutocompleteTrigger]), i1.ɵdid(13, 540672, null, 0, i18.FormControlDirective, [[8, null], [8, null], [6, i18.NG_VALUE_ACCESSOR], [2, i18.ɵangular_packages_forms_forms_k]], { form: [0, \"form\"] }, null), i1.ɵprd(2048, null, i18.NgControl, null, [i18.FormControlDirective]), i1.ɵdid(15, 16384, null, 0, i18.NgControlStatus, [[4, i18.NgControl]], null, null), i1.ɵdid(16, 4341760, null, 0, i23.TranslateDirective, [i1.ElementRef, i15.Translations, i17.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(18, 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(19, 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(21, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"search\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i7.View_MatIcon_0, i7.RenderType_MatIcon)), i1.ɵdid(22, 9158656, null, 0, i8.MatIcon, [i1.ElementRef, i8.MatIconRegistry, [8, null], [2, i8.MAT_ICON_LOCATION]], { 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(26, 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(29, 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; }, i24.View_MatAutocomplete_0, i24.RenderType_MatAutocomplete)), i1.ɵprd(6144, null, i10.MAT_OPTION_PARENT_COMPONENT, null, [i19.MatAutocomplete]), i1.ɵdid(31, 1097728, [[\"auto\", 4]], 2, i19.MatAutocomplete, [i1.ChangeDetectorRef, i1.ElementRef, i19.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(36, 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_21 = i1.ɵnov(_v, 31); _ck(_v, 11, 0, currVal_21); var currVal_22 = _co.formControl; _ck(_v, 13, 0, currVal_22); var currVal_27 = \"search\"; _ck(_v, 22, 0, currVal_27); var currVal_28 = _co.formControl.value; _ck(_v, 26, 0, currVal_28); var currVal_29 = _co.displayFn; var currVal_30 = \"file-types-autocomplete mat-elevation-z1\"; _ck(_v, 31, 0, currVal_29, currVal_30); var currVal_31 = i1.ɵunv(_v, 36, 0, i1.ɵnov(_v, 37).transform(_co.results)); _ck(_v, 36, 0, currVal_31); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 7).ngClassUntouched; var currVal_1 = i1.ɵnov(_v, 7).ngClassTouched; var currVal_2 = i1.ɵnov(_v, 7).ngClassPristine; var currVal_3 = i1.ɵnov(_v, 7).ngClassDirty; var currVal_4 = i1.ɵnov(_v, 7).ngClassValid; var currVal_5 = i1.ɵnov(_v, 7).ngClassInvalid; var currVal_6 = i1.ɵnov(_v, 7).ngClassPending; _ck(_v, 3, 0, currVal_0, currVal_1, currVal_2, currVal_3, currVal_4, currVal_5, currVal_6); var currVal_7 = i1.ɵnov(_v, 11).autocompleteAttribute; var currVal_8 = (i1.ɵnov(_v, 11).autocompleteDisabled ? null : \"combobox\"); var currVal_9 = (i1.ɵnov(_v, 11).autocompleteDisabled ? null : \"list\"); var currVal_10 = ((i1.ɵnov(_v, 11).panelOpen && i1.ɵnov(_v, 11).activeOption) ? i1.ɵnov(_v, 11).activeOption.id : null); var currVal_11 = (i1.ɵnov(_v, 11).autocompleteDisabled ? null : i1.ɵnov(_v, 11).panelOpen.toString()); var currVal_12 = ((i1.ɵnov(_v, 11).autocompleteDisabled || !i1.ɵnov(_v, 11).panelOpen) ? null : ((i1.ɵnov(_v, 11).autocomplete == null) ? null : i1.ɵnov(_v, 11).autocomplete.id)); var currVal_13 = !i1.ɵnov(_v, 11).autocompleteDisabled; var currVal_14 = i1.ɵnov(_v, 15).ngClassUntouched; var currVal_15 = i1.ɵnov(_v, 15).ngClassTouched; var currVal_16 = i1.ɵnov(_v, 15).ngClassPristine; var currVal_17 = i1.ɵnov(_v, 15).ngClassDirty; var currVal_18 = i1.ɵnov(_v, 15).ngClassValid; var currVal_19 = i1.ɵnov(_v, 15).ngClassInvalid; var currVal_20 = i1.ɵnov(_v, 15).ngClassPending; _ck(_v, 9, 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, currVal_20]); var currVal_23 = (i1.ɵnov(_v, 19).disabled || null); var currVal_24 = (i1.ɵnov(_v, 19)._animationMode === \"NoopAnimations\"); _ck(_v, 18, 0, currVal_23, currVal_24); var currVal_25 = i1.ɵnov(_v, 22).inline; var currVal_26 = (((i1.ɵnov(_v, 22).color !== \"primary\") && (i1.ɵnov(_v, 22).color !== \"accent\")) && (i1.ɵnov(_v, 22).color !== \"warn\")); _ck(_v, 21, 0, currVal_25, currVal_26); }); }\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, i25.MainSearchbarComponent, [i26.Store, i27.DriveEntryApiService], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nvar MainSearchbarComponentNgFactory = i1.ɵccf(\"main-searchbar\", i25.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;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 ease-in .1s;background-color:#fff}main-searchbar .input-container input:focus{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;border-bottom:1px solid #eff1f2}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{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.type === 'entryType' ? (result.content.name | trans) : 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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"cloud-upload\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i9.View_MatIcon_0, i9.RenderType_MatIcon)), i1.ɵdid(6, 9158656, null, 0, i10.MatIcon, [i1.ElementRef, i10.MatIconRegistry, [8, null], [2, i10.MAT_ICON_LOCATION]], { 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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"create-new-folder\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i9.View_MatIcon_0, i9.RenderType_MatIcon)), i1.ɵdid(18, 9158656, null, 0, i10.MatIcon, [i1.ElementRef, i10.MatIconRegistry, [8, null], [2, i10.MAT_ICON_LOCATION]], { 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_7 = \"cloud-upload\"; _ck(_v, 6, 0, currVal_7); var currVal_10 = !i1.ɵunv(_v, 14, 0, i1.ɵnov(_v, 15).transform(_co.canUpload$)); var currVal_11 = \"primary\"; _ck(_v, 14, 0, currVal_10, currVal_11); var currVal_14 = \"create-new-folder\"; _ck(_v, 18, 0, currVal_14); }, 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; var currVal_6 = (((i1.ɵnov(_v, 6).color !== \"primary\") && (i1.ɵnov(_v, 6).color !== \"accent\")) && (i1.ɵnov(_v, 6).color !== \"warn\")); _ck(_v, 5, 0, currVal_5, currVal_6); var currVal_8 = (i1.ɵnov(_v, 14).disabled || null); var currVal_9 = (i1.ɵnov(_v, 14)._animationMode === \"NoopAnimations\"); _ck(_v, 13, 0, currVal_8, currVal_9); var currVal_12 = i1.ɵnov(_v, 18).inline; var currVal_13 = (((i1.ɵnov(_v, 18).color !== \"primary\") && (i1.ɵnov(_v, 18).color !== \"accent\")) && (i1.ɵnov(_v, 18).color !== \"warn\")); _ck(_v, 17, 0, currVal_12, currVal_13); }); }\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>","/**\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, isDataSource } from '@angular/cdk/collections';\nimport { __extends } from 'tslib';\nimport { Observable, BehaviorSubject, of, Subject } from 'rxjs';\nimport { take, filter, 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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 _a;\n        /** @type {?} */\n        var toBeProcessed = [dataNode];\n        toBeProcessed.push.apply(toBeProcessed, this.getDescendants(dataNode));\n        (_a = this.expansionModel).select.apply(_a, toBeProcessed);\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 _a;\n        /** @type {?} */\n        var toBeProcessed = [dataNode];\n        toBeProcessed.push.apply(toBeProcessed, this.getDescendants(dataNode));\n        (_a = this.expansionModel).deselect.apply(_a, toBeProcessed);\n    };\n    return BaseTreeControl;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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        /** @type {?} */\n        var startIndex = this.dataNodes.indexOf(dataNode);\n        /** @type {?} */\n        var 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 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        var _a;\n        (_a = this.expansionModel).select.apply(_a, this.dataNodes);\n    };\n    return FlatTreeControl;\n}(BaseTreeControl));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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        var _a;\n        this.expansionModel.clear();\n        /** @type {?} */\n        var 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    };\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        /** @type {?} */\n        var 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     * @protected\n     * @param {?} descendants\n     * @param {?} dataNode\n     * @return {?}\n     */\n    NestedTreeControl.prototype._getDescendants = /**\n     * A helper function to get descendants recursively.\n     * @protected\n     * @param {?} descendants\n     * @param {?} dataNode\n     * @return {?}\n     */\n    function (descendants, dataNode) {\n        var _this = this;\n        descendants.push(dataNode);\n        /** @type {?} */\n        var 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), filter(Boolean)).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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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        // TODO(tinayuangao): Setup a listener for scrolling, emit the calculated view to viewChange.\n        //     Remove the MAX_VALUE in viewChange\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        /**\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 data array to render.\n         */\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 data 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        /** @type {?} */\n        var 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    // TODO(tinayuangao): Work on keyboard traversal and actions, make sure it's working for RTL\n    //     and nested trees.\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     */\n    // TODO(tinayuangao): Work on keyboard traversal and actions, make sure it's working for RTL\n    //     and nested trees.\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     * @private\n     * @param {?} dataSource\n     * @return {?}\n     */\n    CdkTree.prototype._switchDataSource = \n    // TODO(tinayuangao): Work on keyboard traversal and actions, make sure it's working for RTL\n    //     and nested trees.\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     * @private\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    /** Set up a subscription for the data provided by the data source. */\n    /**\n     * Set up a subscription for the data provided by the data source.\n     * @private\n     * @return {?}\n     */\n    CdkTree.prototype._observeRenderChanges = /**\n     * Set up a subscription for the data provided by the data source.\n     * @private\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        /** @type {?} */\n        var dataStream;\n        if (isDataSource(this._dataSource)) {\n            dataStream = 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        /** @type {?} */\n        var 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[(/** @type {?} */ (currentIndex))], (/** @type {?} */ (currentIndex)), viewContainer, parentData);\n            }\n            else if (currentIndex == null) {\n                viewContainer.remove((/** @type {?} */ (adjustedPreviousIndex)));\n                _this._levels.delete(item.item);\n            }\n            else {\n                /** @type {?} */\n                var view = viewContainer.get((/** @type {?} */ (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        /** @type {?} */\n        var 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        /** @type {?} */\n        var node = this._getNodeDef(nodeData, index);\n        // Node context that will be provided to created embedded view\n        /** @type {?} */\n        var 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        /** @type {?} */\n        var 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     * @protected\n     * @return {?}\n     */\n    CdkTreeNode.prototype._setRoleFromData = /**\n     * @protected\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            /** @type {?} */\n            var 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     * @protected\n     * @param {?} children\n     * @return {?}\n     */\n    CdkTreeNode.prototype._setRoleFromChildren = /**\n     * @protected\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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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-nested-tree-node>\n *     {{node.name}}\n *     <ng-template cdkTreeNodeOutlet></ng-template>\n *   </cdk-nested-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-nested-tree-node>\n *      <cdk-nested-tree-node>{{child2.name}}</cdk-nested-tree-node>\n *   </cdk-nested-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        /** @type {?} */\n        var 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     * @protected\n     * @param {?=} children\n     * @return {?}\n     */\n    CdkNestedTreeNode.prototype.updateChildrenNodes = /**\n     * Add children dataNodes to the NodeOutlet\n     * @protected\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            /** @type {?} */\n            var 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     * @protected\n     * @return {?}\n     */\n    CdkNestedTreeNode.prototype._clear = /**\n     * Clear the children dataNodes.\n     * @protected\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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Regex used to split a string on its CSS units.\n * @type {?}\n */\nvar cssUnitPattern = /([A-Za-z%]+)$/;\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        /**\n         * CSS units used for the indentation value.\n         */\n        this.indentUnits = 'px';\n        this._indent = 40;\n        this._setPadding();\n        if (_dir) {\n            _dir.change.pipe(takeUntil(this._destroyed)).subscribe(function () { return _this._setPadding(); });\n        }\n    }\n    Object.defineProperty(CdkTreeNodePadding.prototype, \"level\", {\n        /** The level of depth of the tree node. The padding will be `level * indent` pixels. */\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        /**\n         * The indent for each level. Can be a number or a CSS string.\n         * Default number 40px from material design menu sub-menu spec.\n         */\n        get: /**\n         * The indent for each level. Can be a number or a CSS string.\n         * Default number 40px from material design menu sub-menu spec.\n         * @return {?}\n         */\n        function () { return this._indent; },\n        set: /**\n         * @param {?} indent\n         * @return {?}\n         */\n        function (indent) {\n            /** @type {?} */\n            var value = indent;\n            /** @type {?} */\n            var units = 'px';\n            if (typeof indent === 'string') {\n                /** @type {?} */\n                var parts = indent.split(cssUnitPattern);\n                value = parts[0];\n                units = parts[1] || units;\n            }\n            this.indentUnits = units;\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        /** @type {?} */\n        var nodeLevel = (this._treeNode.data && this._tree.treeControl.getLevel)\n            ? this._tree.treeControl.getLevel(this._treeNode.data)\n            : null;\n        /** @type {?} */\n        var level = this._level || nodeLevel;\n        return level ? \"\" + level * this._indent + this.indentUnits : null;\n    };\n    /**\n     * @return {?}\n     */\n    CdkTreeNodePadding.prototype._setPadding = /**\n     * @return {?}\n     */\n    function () {\n        /** @type {?} */\n        var element = this._element.nativeElement;\n        /** @type {?} */\n        var padding = this._paddingIndent();\n        /** @type {?} */\n        var paddingProp = this._dir && this._dir.value === 'rtl' ? 'paddingRight' : 'paddingLeft';\n        /** @type {?} */\n        var resetProp = paddingProp === 'paddingLeft' ? 'paddingRight' : 'paddingLeft';\n        this._renderer.setStyle(element, paddingProp, padding);\n        this._renderer.setStyle(element, resetProp, '');\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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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        /** Whether expand/collapse the node recursively. */\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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar _MatTreeNodeMixinBase = mixinTabIndex(mixinDisabled(CdkTreeNode));\n/** @type {?} */\nvar _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: String, 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    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    // 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    // 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    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: String, 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\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    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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\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    MatTree.propDecorators = {\n        _nodeOutlet: [{ type: ViewChild, args: [MatTreeNodeOutlet,] }]\n    };\n    return MatTree;\n}(CdkTree));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\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    MatTreeNodeToggle.propDecorators = {\n        recursive: [{ type: Input, args: ['matTreeNodeToggleRecursive',] }]\n    };\n    return MatTreeNodeToggle;\n}(CdkTreeNodeToggle));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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        /** @type {?} */\n        var flatNode = this.transformFunction(node, level);\n        resultNodes.push(flatNode);\n        if (this.isExpandable(flatNode)) {\n            /** @type {?} */\n            var childrenNodes = this.getChildren(node);\n            if (childrenNodes) {\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        }\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            /** @type {?} */\n            var 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        /** @type {?} */\n        var 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        /** @type {?} */\n        var results = [];\n        /** @type {?} */\n        var currentExpand = [];\n        currentExpand[0] = true;\n        nodes.forEach(function (node) {\n            /** @type {?} */\n            var expand = true;\n            for (var 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        /** @type {?} */\n        var changes = [\n            collectionViewer.viewChange,\n            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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { _MatTreeNodeMixinBase, _MatNestedTreeNodeMixinBase, MatTreeNode, MatTreeNodeDef, MatNestedTreeNode, MatTreeNodePadding, MatTree, MatTreeModule, MatTreeNodeToggle, MatTreeNodeOutlet, MatTreeFlattener, MatTreeFlatDataSource, MatTreeNestedDataSource };\n//# sourceMappingURL=tree.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/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\";\nimport * as i8 from \"@angular/platform-browser\";\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], [2, i8.HAMMER_LOADER]]), 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 {\n    ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation\n} from '@angular/core';\nimport { FoldersTreeService } from './folders-tree.service';\nimport { DriveFolder } from '../../folders/models/driveFolder';\nimport { DriveEntry } from '../../files/models/drive-entry';\nimport { ROOT_FOLDER, RootFolder } from '../../folders/root-folder';\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    @HostBinding('class.has-root-node') @Input() showRootNode = false;\n    @Output() folderSelected: EventEmitter<DriveFolder|RootFolder> = 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|RootFolder) {\n        folder = folder || ROOT_FOLDER;\n        this.selectedFolder = folder.hash;\n        this.folderSelected.emit(folder);\n    }\n\n    public toggle() {\n        this.expanded = !this.expanded;\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 \"../../../../../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 \"@angular/cdk/tree\";\nimport * as i8 from \"@angular/material/tree\";\nimport * as i9 from \"../../../../common/core/ui/context-menu/context-menu.directive\";\nimport * as i10 from \"../../../../common/core/ui/context-menu/context-menu.service\";\nimport * as i11 from \"../../../../common/core/ui/context-menu/available-context-menus\";\nimport * as i12 from \"@angular/cdk/bidi\";\nimport * as i13 from \"../../interactions/drop-targets/folder-drop-target.directive\";\nimport * as i14 from \"@ngxs/store\";\nimport * as i15 from \"@angular/common\";\nimport * as i16 from \"../../../../../node_modules/@angular/material/tree/typings/index.ngfactory\";\nimport * as i17 from \"./folders-tree.component\";\nimport * as i18 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, 8, \"div\", [[\"class\", \"mat-tree-node root-tree-node\"]], [[2, \"active\", null]], [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.selectFolder() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(2, 0, null, null, 1, \"mat-icon\", [[\"class\", \"mat-icon notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"network-drive-custom\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(3, 9158656, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null], [2, i3.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(5, 0, null, null, 2, \"span\", [[\"class\", \"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, [\"My Drive\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var currVal_3 = \"network-drive-custom\"; _ck(_v, 3, 0, currVal_3); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = (_co.selectedFolder === \"root\"); _ck(_v, 0, 0, currVal_0); var currVal_1 = i1.ɵnov(_v, 3).inline; var currVal_2 = (((i1.ɵnov(_v, 3).color !== \"primary\") && (i1.ɵnov(_v, 3).color !== \"accent\")) && (i1.ɵnov(_v, 3).color !== \"warn\")); _ck(_v, 2, 0, currVal_1, currVal_2); }); }\nfunction View_FoldersTreeComponent_2(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 22, \"mat-tree-node\", [[\"class\", \"tree-node mat-tree-node\"], [\"matTreeNodePadding\", \"\"]], [[2, \"active\", null], [1, \"aria-expanded\", 0], [1, \"aria-level\", 0], [1, \"role\", 0]], null, null, null, null)), i1.ɵprd(6144, null, i7.CdkTreeNodePadding, null, [i8.MatTreeNodePadding]), i1.ɵdid(2, 81920, null, 0, i9.ContextMenuDirective, [i1.ElementRef, i10.ContextMenu, i11.AVAILABLE_CONTEXT_MENUS], { params: [0, \"params\"], disableContextMenu: [1, \"disableContextMenu\"] }, null), i1.ɵpod(3, { type: 0, entry: 1 }), i1.ɵdid(4, 16384, null, 0, i8.MatTreeNode, [i1.ElementRef, i7.CdkTree, [8, null]], null, null), i1.ɵprd(2048, null, i7.CdkTreeNode, null, [i8.MatTreeNode]), i1.ɵdid(6, 147456, null, 0, i8.MatTreeNodePadding, [i7.CdkTreeNode, i7.CdkTree, i1.Renderer2, i1.ElementRef, [2, i12.Directionality]], { level: [0, \"level\"], indent: [1, \"indent\"] }, null), i1.ɵdid(7, 212992, null, 0, i13.FolderDropTargetDirective, [i1.ElementRef, i14.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 notranslate\"], [\"matTreeNodeToggle\", \"\"], [\"role\", \"img\"], [\"svgIcon\", \"arrow-drop-down\"]], [[2, \"expanded\", null], [2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", 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; }, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵprd(6144, null, i7.CdkTreeNodeToggle, null, [i8.MatTreeNodeToggle]), i1.ɵdid(11, 9158656, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null], [2, i3.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), i1.ɵdid(12, 16384, null, 0, i8.MatTreeNodeToggle, [i7.CdkTree, i7.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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"folder\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(17, 9158656, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null], [2, i3.MAT_ICON_LOCATION]], { 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_4 = _ck(_v, 3, 0, \"entry\", _v.context.$implicit); var currVal_5 = _co.disableContextMenu; _ck(_v, 2, 0, currVal_4, currVal_5); var currVal_6 = \"\"; var currVal_7 = (_co.showRootNode ? 40 : 24); _ck(_v, 6, 0, currVal_6, currVal_7); var currVal_8 = _v.context.$implicit; _ck(_v, 7, 0, currVal_8); var currVal_12 = \"arrow-drop-down\"; _ck(_v, 11, 0, currVal_12); var currVal_15 = \"folder\"; _ck(_v, 17, 0, currVal_15); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = (_co.selectedFolder === _v.context.$implicit.hash); var currVal_1 = i1.ɵnov(_v, 4).isExpanded; var currVal_2 = ((i1.ɵnov(_v, 4).role === \"treeitem\") ? i1.ɵnov(_v, 4).level : null); var currVal_3 = i1.ɵnov(_v, 4).role; _ck(_v, 0, 0, currVal_0, currVal_1, currVal_2, currVal_3); var currVal_9 = _co.tree.control.isExpanded(_v.context.$implicit); var currVal_10 = i1.ɵnov(_v, 11).inline; var currVal_11 = (((i1.ɵnov(_v, 11).color !== \"primary\") && (i1.ɵnov(_v, 11).color !== \"accent\")) && (i1.ɵnov(_v, 11).color !== \"warn\")); _ck(_v, 9, 0, currVal_9, currVal_10, currVal_11); var currVal_13 = i1.ɵnov(_v, 17).inline; var currVal_14 = (((i1.ɵnov(_v, 17).color !== \"primary\") && (i1.ɵnov(_v, 17).color !== \"accent\")) && (i1.ɵnov(_v, 17).color !== \"warn\")); _ck(_v, 16, 0, currVal_13, currVal_14); var currVal_16 = _v.context.$implicit.name; _ck(_v, 20, 0, currVal_16); }); }\nexport function View_FoldersTreeComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵand(16777216, null, null, 1, null, View_FoldersTreeComponent_1)), i1.ɵdid(1, 16384, null, 0, i15.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵeld(3, 0, null, null, 8, \"mat-tree\", [[\"class\", \"mat-tree\"], [\"role\", \"tree\"]], null, null, null, i16.View_MatTree_0, i16.RenderType_MatTree)), i1.ɵprd(6144, null, i7.CdkTree, null, [i8.MatTree]), i1.ɵdid(5, 2342912, null, 1, i8.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_2)), i1.ɵdid(9, 16384, null, 0, i8.MatTreeNodeDef, [i1.TemplateRef], null, null), i1.ɵprd(2048, [[1, 4]], i7.CdkTreeNodeDef, null, [i8.MatTreeNodeDef]), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.showRootNode; _ck(_v, 1, 0, currVal_0); var currVal_1 = _co.tree.dataSource; var currVal_2 = _co.tree.control; _ck(_v, 5, 0, currVal_1, currVal_2); }, 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], [2, \"has-root-node\", null]], null, null, View_FoldersTreeComponent_0, RenderType_FoldersTreeComponent)), i1.ɵdid(1, 49152, null, 0, i17.FoldersTreeComponent, [i18.FoldersTreeService], null, null)], null, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 1).expanded; var currVal_1 = i1.ɵnov(_v, 1).showRootNode; _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nvar FoldersTreeComponentNgFactory = i1.ɵccf(\"folders-tree\", i17.FoldersTreeComponent, View_FoldersTreeComponent_Host_0, { expanded: \"expanded\", selectedFolder: \"selectedFolder\", movingEntries: \"movingEntries\", disableContextMenu: \"disableContextMenu\", showRootNode: \"showRootNode\" }, { 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.has-root-node .mat-tree-node:not(.root-tree-node){padding-left:16px}folders-tree .mat-tree .folder-icon{margin-right:5px;color:rgba(0,0,0,.5)}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}folders-tree .mat-tree-node{padding-right:24px;white-space:nowrap;color:inherit;background-color:#fafafa}folders-tree .mat-tree-node.disabled{pointer-events:none;opacity:.5}folders-tree .mat-tree-node:not(.active):not(.drag-over):hover{background-color:#f1f1f1}folders-tree .mat-tree-node.active{color:#1976d2;background-color:#e8f0fe}folders-tree .mat-tree-node.active .folder-icon{color:inherit}folders-tree .mat-tree-node.active .text{font-weight:500}folders-tree .root-tree-node{padding-left:12px;cursor:pointer}folders-tree .root-tree-node .mat-icon{margin-right:6px}\"];\nexport { styles as styles };\n","<div class=\"mat-tree-node root-tree-node\" *ngIf=\"showRootNode\" (click)=\"selectFolder()\" [class.active]=\"selectedFolder === 'root'\">\n    <mat-icon svgIcon=\"network-drive-custom\"></mat-icon>\n    <span class=\"text\" trans>My Drive</span>\n</div>\n<mat-tree [dataSource]=\"tree.dataSource\" [treeControl]=\"tree.control\">\n    <mat-tree-node\n            *matTreeNodeDef=\"let node\"\n            matTreeNodePadding\n            [matTreeNodePaddingIndent]=\"showRootNode ? 40 : 24\"\n            [contextMenu]=\"{type: 'entry', entry: node}\"\n            [disableContextMenu]=\"disableContextMenu\"\n            [folderDropTarget]=\"node\"\n            [class.active]=\"selectedFolder === node.hash\"\n            class=\"tree-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>","import { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\nimport { Select } from '@ngxs/store';\nimport { DriveState } from '../../state/drive-state';\nimport { Observable } from 'rxjs';\nimport { Settings } from '../../../../common/core/config/settings.service';\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    constructor(public settings: Settings) {}\n\n    public billingEnabled() {\n        return this.settings.get('billing.enable');\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 } from 'rxjs';\nimport { Settings } from '../../../../common/core/config/settings.service';\nvar AvailableSpaceIndicatorComponent = /** @class */ (function () {\n    function AvailableSpaceIndicatorComponent(settings) {\n        this.settings = settings;\n    }\n    AvailableSpaceIndicatorComponent.prototype.billingEnabled = function () {\n        return this.settings.get('billing.enable');\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 \"../../../../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/router\";\nimport * as i6 from \"@angular/common\";\nimport * as i7 from \"../../../../../node_modules/@angular/material/progress-bar/typings/index.ngfactory\";\nimport * as i8 from \"@angular/material/progress-bar\";\nimport * as i9 from \"@angular/platform-browser/animations\";\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_2(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 6, \"div\", [[\"class\", \"upgrade-link-container\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(2, 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, 4).onClick($event.button, $event.ctrlKey, $event.metaKey, $event.shiftKey) !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, null, null)), i1.ɵdid(3, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), i1.ɵdid(4, 671744, null, 0, i5.RouterLinkWithHref, [i5.Router, i5.ActivatedRoute, i6.LocationStrategy], { target: [0, \"target\"], routerLink: [1, \"routerLink\"] }, null), (_l()(), i1.ɵted(-1, null, [\"Upgrade Storage\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"]))], function (_ck, _v) { var currVal_2 = \"_blank\"; var currVal_3 = \"/billing/upgrade\"; _ck(_v, 4, 0, currVal_2, currVal_3); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 4).target; var currVal_1 = i1.ɵnov(_v, 4).href; _ck(_v, 2, 0, currVal_0, currVal_1); }); }\nfunction View_AvailableSpaceIndicatorComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 29, 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, i7.View_MatProgressBar_0, i7.RenderType_MatProgressBar)), i1.ɵdid(3, 4374528, null, 0, i8.MatProgressBar, [i1.ElementRef, i1.NgZone, [2, i9.ANIMATION_MODULE_TYPE], [2, i8.MAT_PROGRESS_BAR_LOCATION]], { value: [0, \"value\"], mode: [1, \"mode\"] }, null), i1.ɵpid(131072, i6.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, i6.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, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.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, i6.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, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"used\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n    \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_AvailableSpaceIndicatorComponent_2)), i1.ɵdid(28, 16384, null, 0, i6.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_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_7 = _co.billingEnabled(); _ck(_v, 28, 0, currVal_7); }, 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)._isNoopAnimation; _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); }); }\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, i6.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), i1.ɵpid(131072, i6.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, [i4.Settings], 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\" *ngIf=\"billingEnabled()\">\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';\nimport { DrivePage } from '../state/models/drive-page';\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) activePage$: Observable<DrivePage>;\n\n    constructor(\n        public urls: DriveUrlsService,\n        private store: Store\n    ) {}\n\n    public openFolder(folder: DriveFolder|RootFolder) {\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, \"activePage$\", 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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"arrow-drop-down\"]], [[2, \"expanded\", null], [2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", 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, 9158656, null, 0, i10.MatIcon, [i1.ElementRef, i10.MatIconRegistry, [8, null], [2, i10.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(16, 0, null, null, 1, \"mat-icon\", [[\"class\", \"mat-icon notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"network-drive-custom\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i9.View_MatIcon_0, i9.RenderType_MatIcon)), i1.ɵdid(17, 9158656, null, 0, i10.MatIcon, [i1.ElementRef, i10.MatIconRegistry, [8, null], [2, i10.MAT_ICON_LOCATION]], { 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], [2, \"has-root-node\", 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, [i13.Settings], 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_7 = \"arrow-drop-down\"; _ck(_v, 14, 0, currVal_7); var currVal_10 = \"network-drive-custom\"; _ck(_v, 17, 0, currVal_10); var currVal_13 = i1.ɵunv(_v, 25, 0, i1.ɵnov(_v, 26).transform(_co.activePage$)).folderHash; _ck(_v, 25, 0, currVal_13); var currVal_15 = \"drive-sidebar\"; var currVal_16 = \"sidebar-menu-item\"; _ck(_v, 30, 0, currVal_15, currVal_16); }, function (_ck, _v) { var currVal_4 = i1.ɵnov(_v, 25).expanded; var currVal_5 = i1.ɵnov(_v, 14).inline; var currVal_6 = (((i1.ɵnov(_v, 14).color !== \"primary\") && (i1.ɵnov(_v, 14).color !== \"accent\")) && (i1.ɵnov(_v, 14).color !== \"warn\")); _ck(_v, 13, 0, currVal_4, currVal_5, currVal_6); var currVal_8 = i1.ɵnov(_v, 17).inline; var currVal_9 = (((i1.ɵnov(_v, 17).color !== \"primary\") && (i1.ɵnov(_v, 17).color !== \"accent\")) && (i1.ɵnov(_v, 17).color !== \"warn\")); _ck(_v, 16, 0, currVal_8, currVal_9); var currVal_11 = i1.ɵnov(_v, 25).expanded; var currVal_12 = i1.ɵnov(_v, 25).showRootNode; _ck(_v, 24, 0, currVal_11, currVal_12); var currVal_14 = i1.ɵnov(_v, 30).shouldHide; _ck(_v, 29, 0, currVal_14); }); }\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.can-drop{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]=\"(activePage$ | async).folderHash\" #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 {Directive, ElementRef, EventEmitter, OnInit, Output, Renderer2} from '@angular/core';\r\n\r\n@Directive({\r\n    selector: '[enterKeybind]'\r\n})\r\nexport class EnterKeybindDirective implements OnInit {\r\n\r\n    /**\r\n     * Fired when enter key is pressed on element.\r\n     */\r\n    @Output() enterKeybind = new EventEmitter();\r\n\r\n    /**\r\n     * EnterKeybindDirective Constructor.\r\n     */\r\n    constructor(private renderer: Renderer2, private el: ElementRef) {}\r\n\r\n    ngOnInit() {\r\n        this.renderer.listen(this.el.nativeElement, 'keydown', e => {\r\n            if (e.keyCode === 13) {\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n                this.el.nativeElement.blur();\r\n                this.enterKeybind.emit(e);\r\n            }\r\n        });\r\n    }\r\n}\r\n","import {\n    Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, ElementRef, ViewChildren, QueryList, OnInit, AfterViewInit\n} from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { FileEntry } from '../../../../../common/uploads/file-entry';\nimport { UpdateEntryDescription } from '../../../state/actions/commands';\nimport { Select, Store } from '@ngxs/store';\nimport { DriveState } from '../../../state/drive-state';\nimport { DriveEntry } from '../../../files/models/drive-entry';\n\n@Component({\n    selector: 'entry-description-panel',\n    templateUrl: './entry-description-panel.component.html',\n    styleUrls: ['./entry-description-panel.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EntryDescriptionPanelComponent implements AfterViewInit {\n    @Select(DriveState.selectedEntryOrActiveFolder) entry$: Observable<DriveEntry>;\n    @ViewChildren('textArea') textArea: QueryList<ElementRef<HTMLTextAreaElement>>;\n    public editingDescription$ = new BehaviorSubject(false);\n    public savingDescription$ = new BehaviorSubject(false);\n\n    constructor(private store: Store) {}\n\n    public ngAfterViewInit() {\n        this.textArea.changes.subscribe(queryList => {\n            queryList.length && queryList.first.nativeElement.focus();\n        });\n    }\n\n    public editDescription() {\n        this.editingDescription$.next(true);\n    }\n\n    public updateDescription(entry: FileEntry, value: string) {\n        this.editingDescription$.next(false);\n        if (entry.description === value) return;\n        this.savingDescription$.next(true);\n        this.store.dispatch(new UpdateEntryDescription(entry, value)).subscribe(() => {\n            this.savingDescription$.next(false);\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, QueryList, AfterViewInit } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { UpdateEntryDescription } from '../../../state/actions/commands';\nimport { Select, Store } from '@ngxs/store';\nimport { DriveState } from '../../../state/drive-state';\nvar EntryDescriptionPanelComponent = /** @class */ (function () {\n    function EntryDescriptionPanelComponent(store) {\n        this.store = store;\n        this.editingDescription$ = new BehaviorSubject(false);\n        this.savingDescription$ = new BehaviorSubject(false);\n    }\n    EntryDescriptionPanelComponent.prototype.ngAfterViewInit = function () {\n        this.textArea.changes.subscribe(function (queryList) {\n            queryList.length && queryList.first.nativeElement.focus();\n        });\n    };\n    EntryDescriptionPanelComponent.prototype.editDescription = function () {\n        this.editingDescription$.next(true);\n    };\n    EntryDescriptionPanelComponent.prototype.updateDescription = function (entry, value) {\n        var _this = this;\n        this.editingDescription$.next(false);\n        if (entry.description === value)\n            return;\n        this.savingDescription$.next(true);\n        this.store.dispatch(new UpdateEntryDescription(entry, value)).subscribe(function () {\n            _this.savingDescription$.next(false);\n        });\n    };\n    __decorate([\n        Select(DriveState.selectedEntryOrActiveFolder),\n        __metadata(\"design:type\", Observable)\n    ], EntryDescriptionPanelComponent.prototype, \"entry$\", void 0);\n    return EntryDescriptionPanelComponent;\n}());\nexport { EntryDescriptionPanelComponent };\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-description-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 \"../../../../../common/core/ui/enter-keybind.directive\";\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/platform-browser\";\nimport * as i16 from \"../../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i17 from \"@angular/material/icon\";\nimport * as i18 from \"@angular/common\";\nimport * as i19 from \"../../../../../common/core/translations/translate.pipe\";\nimport * as i20 from \"./entry-description-panel.component\";\nimport * as i21 from \"@ngxs/store\";\nvar styles_EntryDescriptionPanelComponent = [i0.styles];\nvar RenderType_EntryDescriptionPanelComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_EntryDescriptionPanelComponent, data: {} });\nexport { RenderType_EntryDescriptionPanelComponent as RenderType_EntryDescriptionPanelComponent };\nfunction View_EntryDescriptionPanelComponent_2(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 5, 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, [\"Saving...\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"]))], null, null); }\nfunction View_EntryDescriptionPanelComponent_4(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 8, \"div\", [[\"class\", \"input-container\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(2, 0, null, null, 2, \"label\", [[\"class\", \"hidden\"], [\"for\", \"description\"], [\"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, [\"Description\"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(6, 0, [[1, 0], [\"textArea\", 1]], null, 1, \"textarea\", [[\"id\", \"description\"], [\"rows\", \"4\"]], [[8, \"value\", 0]], [[null, \"enterKeybind\"], [null, \"blur\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"enterKeybind\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 6).blur() !== false);\n        ad = (pd_0 && ad);\n    } if ((\"blur\" === en)) {\n        var pd_1 = (_co.updateDescription(_v.parent.parent.context.ngIf, i1.ɵnov(_v, 6).value) !== false);\n        ad = (pd_1 && ad);\n    } return ad; }, null, null)), i1.ɵdid(7, 81920, null, 0, i5.EnterKeybindDirective, [i1.Renderer2, i1.ElementRef], null, { enterKeybind: \"enterKeybind\" }), (_l()(), i1.ɵted(-1, null, [\"\\n        \"]))], function (_ck, _v) { _ck(_v, 7, 0); }, function (_ck, _v) { var currVal_0 = _v.parent.parent.context.ngIf.description; _ck(_v, 6, 0, currVal_0); }); }\nfunction View_EntryDescriptionPanelComponent_5(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(1, 0, null, null, 2, \"div\", [[\"class\", \"description-text\"]], null, [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.editDescription() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, null, null)), (_l()(), i1.ɵted(2, null, [\"\", \"\"])), i1.ɵppd(3, 1), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(5, 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; var _co = _v.component; if ((\"longpress\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 7).show() !== false);\n        ad = (pd_0 && ad);\n    } if ((\"keydown\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 7)._handleKeydown($event) !== false);\n        ad = (pd_1 && ad);\n    } if ((\"touchend\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 7)._handleTouchend() !== false);\n        ad = (pd_2 && ad);\n    } if ((\"click\" === en)) {\n        var pd_3 = (_co.editDescription() !== false);\n        ad = (pd_3 && ad);\n    } return ad; }, i6.View_MatButton_0, i6.RenderType_MatButton)), i1.ɵdid(6, 180224, null, 0, i7.MatButton, [i1.ElementRef, i8.Platform, i9.FocusMonitor, [2, i10.ANIMATION_MODULE_TYPE]], null, null), i1.ɵdid(7, 147456, null, 0, i11.MatTooltip, [i12.Overlay, i1.ElementRef, i13.ScrollDispatcher, i1.ViewContainerRef, i1.NgZone, i8.Platform, i9.AriaDescriber, i9.FocusMonitor, i11.MAT_TOOLTIP_SCROLL_STRATEGY, [2, i14.Directionality], [2, i11.MAT_TOOLTIP_DEFAULT_OPTIONS], [2, i15.HAMMER_LOADER]], { message: [0, \"message\"] }, null), i1.ɵppd(8, 1), (_l()(), i1.ɵted(-1, 0, [\"\\n                \"])), (_l()(), i1.ɵeld(10, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"edit\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i16.View_MatIcon_0, i16.RenderType_MatIcon)), i1.ɵdid(11, 9158656, null, 0, i17.MatIcon, [i1.ElementRef, i17.MatIconRegistry, [8, null], [2, i17.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n            \"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"]))], function (_ck, _v) { var currVal_3 = i1.ɵunv(_v, 7, 0, _ck(_v, 8, 0, i1.ɵnov(_v.parent.parent.parent, 0), \"Edit description\")); _ck(_v, 7, 0, currVal_3); var currVal_6 = \"edit\"; _ck(_v, 11, 0, currVal_6); }, function (_ck, _v) { var currVal_0 = (_v.parent.parent.context.ngIf.description || i1.ɵunv(_v, 2, 0, _ck(_v, 3, 0, i1.ɵnov(_v.parent.parent.parent, 0), \"Add a description\"))); _ck(_v, 2, 0, currVal_0); 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_4 = i1.ɵnov(_v, 11).inline; var currVal_5 = (((i1.ɵnov(_v, 11).color !== \"primary\") && (i1.ɵnov(_v, 11).color !== \"accent\")) && (i1.ɵnov(_v, 11).color !== \"warn\")); _ck(_v, 10, 0, currVal_4, currVal_5); }); }\nfunction View_EntryDescriptionPanelComponent_3(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵand(16777216, null, null, 2, null, View_EntryDescriptionPanelComponent_4)), i1.ɵdid(2, 16384, null, 0, i18.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"], ngIfElse: [1, \"ngIfElse\"] }, null), i1.ɵpid(131072, i18.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵand(0, [[\"descriptionEl\", 2]], null, 0, null, View_EntryDescriptionPanelComponent_5)), (_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.editingDescription$)); var currVal_1 = i1.ɵnov(_v, 5); _ck(_v, 2, 0, currVal_0, currVal_1); }, null); }\nfunction View_EntryDescriptionPanelComponent_1(_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.ɵand(16777216, null, null, 2, null, View_EntryDescriptionPanelComponent_2)), i1.ɵdid(3, 16384, null, 0, i18.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"], ngIfElse: [1, \"ngIfElse\"] }, null), i1.ɵpid(131072, i18.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵand(0, [[\"descriptionSaved\", 2]], null, 0, null, View_EntryDescriptionPanelComponent_3)), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵunv(_v, 3, 0, i1.ɵnov(_v, 4).transform(_co.savingDescription$)); var currVal_1 = i1.ɵnov(_v, 6); _ck(_v, 3, 0, currVal_0, currVal_1); }, null); }\nexport function View_EntryDescriptionPanelComponent_0(_l) { return i1.ɵvid(2, [i1.ɵpid(0, i19.TransPipe, [i3.Translations]), i1.ɵqud(671088640, 1, { textArea: 1 }), (_l()(), i1.ɵand(16777216, null, null, 2, null, View_EntryDescriptionPanelComponent_1)), i1.ɵdid(3, 16384, null, 0, i18.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), i1.ɵpid(131072, i18.AsyncPipe, [i1.ChangeDetectorRef])], function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵunv(_v, 3, 0, i1.ɵnov(_v, 4).transform(_co.entry$)); _ck(_v, 3, 0, currVal_0); }, null); }\nexport function View_EntryDescriptionPanelComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"entry-description-panel\", [], null, null, null, View_EntryDescriptionPanelComponent_0, RenderType_EntryDescriptionPanelComponent)), i1.ɵdid(1, 4243456, null, 0, i20.EntryDescriptionPanelComponent, [i21.Store], null, null)], null, null); }\nvar EntryDescriptionPanelComponentNgFactory = i1.ɵccf(\"entry-description-panel\", i20.EntryDescriptionPanelComponent, View_EntryDescriptionPanelComponent_Host_0, {}, {}, []);\nexport { EntryDescriptionPanelComponentNgFactory as EntryDescriptionPanelComponentNgFactory };\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-description-panel{color:#656565;display:flex;align-items:center;max-width:215px}entry-description-panel .description-text{cursor:text;vertical-align:sub;flex:1 1 auto}\"];\nexport { styles as styles };\n","<ng-container *ngIf=\"entry$ | async as entry\">\n    <ng-container *ngIf=\"savingDescription$ | async; else descriptionSaved\">\n        <span trans>Saving...</span>\n    </ng-container>\n    <ng-template #descriptionSaved>\n        <div class=\"input-container\" *ngIf=\"editingDescription$ | async; else descriptionEl\">\n            <label for=\"description\" class=\"hidden\" trans>Description</label>\n            <textarea\n                    rows=\"4\"\n                    id=\"description\"\n                    #textArea\n                    [value]=\"entry.description\"\n                    (enterKeybind)=\"textArea.blur()\"\n                    (blur)=\"updateDescription(entry, textArea.value)\"\n            ></textarea>\n        </div>\n        <ng-template #descriptionEl>\n            <div class=\"description-text\" (click)=\"editDescription()\">{{entry.description || ('Add a description' | trans)}}</div>\n            <button mat-icon-button (click)=\"editDescription()\" [matTooltip]=\"'Edit description' | trans\">\n                <mat-icon svgIcon=\"edit\"></mat-icon>\n            </button>\n        </ng-template>\n    </ng-template>\n</ng-container>","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 \"@angular/platform-browser\";\nimport * as i13 from \"../../../../common/core/translations/translate.directive\";\nimport * as i14 from \"../../../../common/core/translations/translations.service\";\nimport * as i15 from \"@angular/common\";\nimport * as i16 from \"../../../../../node_modules/@angular/material/icon/typings/index.ngfactory\";\nimport * as i17 from \"@angular/material/icon\";\nimport * as i18 from \"./entry-description-panel/entry-description-panel.component.ngfactory\";\nimport * as i19 from \"./entry-description-panel/entry-description-panel.component\";\nimport * as i20 from \"@ngxs/store\";\nimport * as i21 from \"../../../../common/uploads/formatted-file-size.pipe\";\nimport * as i22 from \"../../../../common/core/ui/formatted-date.pipe\";\nimport * as i23 from \"./details-panel.component\";\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], [2, i12.HAMMER_LOADER]], { 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, i13.TranslateDirective, [i1.ElementRef, i14.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, 91, 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, i15.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, i15.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, 79, \"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, i13.TranslateDirective, [i1.ElementRef, i14.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, i13.TranslateDirective, [i1.ElementRef, i14.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, i13.TranslateDirective, [i1.ElementRef, i14.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, i13.TranslateDirective, [i1.ElementRef, i14.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, i13.TranslateDirective, [i1.ElementRef, i14.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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"folder\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i16.View_MatIcon_0, i16.RenderType_MatIcon)), i1.ɵdid(55, 9158656, null, 0, i17.MatIcon, [i1.ElementRef, i17.MatIconRegistry, [8, null], [2, i17.MAT_ICON_LOCATION]], { 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, i15.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, i15.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, i13.TranslateDirective, [i1.ElementRef, i14.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, i13.TranslateDirective, [i1.ElementRef, i14.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.ɵeld(88, 0, null, null, 1, \"entry-description-panel\", [], null, null, null, i18.View_EntryDescriptionPanelComponent_0, i18.RenderType_EntryDescriptionPanelComponent)), i1.ɵdid(89, 4243456, null, 0, i19.EntryDescriptionPanelComponent, [i20.Store], null, null), (_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_7 = \"folder\"; _ck(_v, 55, 0, currVal_7); var currVal_9 = (_v.parent.context.ngIf.users && _v.parent.context.ngIf.users.length); _ck(_v, 64, 0, currVal_9); }, 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; var currVal_6 = (((i1.ɵnov(_v, 55).color !== \"primary\") && (i1.ɵnov(_v, 55).color !== \"accent\")) && (i1.ɵnov(_v, 55).color !== \"warn\")); _ck(_v, 54, 0, currVal_5, currVal_6); var tmp_8_0 = null; var currVal_8 = ((((tmp_8_0 = i1.ɵunv(_v, 58, 0, i1.ɵnov(_v, 59).transform(_co.parent$))) == null) ? null : tmp_8_0.name) || \"My Drive\"); _ck(_v, 58, 0, currVal_8); var currVal_10 = 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_10); var currVal_11 = 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_11); }); }\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, i15.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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"selection-tool-custom\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i16.View_MatIcon_0, i16.RenderType_MatIcon)), i1.ɵdid(4, 9158656, null, 0, i17.MatIcon, [i1.ElementRef, i17.MatIconRegistry, [8, null], [2, i17.MAT_ICON_LOCATION]], { 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, i13.TranslateDirective, [i1.ElementRef, i14.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_2 = \"selection-tool-custom\"; _ck(_v, 4, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 4).inline; var currVal_1 = (((i1.ɵnov(_v, 4).color !== \"primary\") && (i1.ɵnov(_v, 4).color !== \"accent\")) && (i1.ɵnov(_v, 4).color !== \"warn\")); _ck(_v, 3, 0, currVal_0, currVal_1); }); }\nexport function View_DetailsPanelComponent_0(_l) { return i1.ɵvid(2, [i1.ɵpid(0, i21.FormattedFileSizePipe, []), i1.ɵpid(0, i22.FormattedDatePipe, [i5.Settings, i1.LOCALE_ID]), (_l()(), i1.ɵand(16777216, null, null, 2, null, View_DetailsPanelComponent_1)), i1.ɵdid(3, 16384, null, 0, i15.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"], ngIfElse: [1, \"ngIfElse\"] }, null), i1.ɵpid(131072, i15.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, i23.DetailsPanelComponent, [i20.Store], null, null)], null, null); }\nvar DetailsPanelComponentNgFactory = i1.ɵccf(\"details-panel\", i23.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-shrink:0;color:#656565}details-panel .details-list .item .value{flex-shrink:0}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            <entry-description-panel></entry-description-panel>\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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"close\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i13.View_MatIcon_0, i13.RenderType_MatIcon)), i1.ɵdid(14, 9158656, null, 0, i14.MatIcon, [i1.ElementRef, i14.MatIconRegistry, [8, null], [2, i14.MAT_ICON_LOCATION]], { 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_6 = \"close\"; _ck(_v, 14, 0, currVal_6); }, 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; var currVal_5 = (((i1.ɵnov(_v, 14).color !== \"primary\") && (i1.ɵnov(_v, 14).color !== \"accent\")) && (i1.ɵnov(_v, 14).color !== \"warn\")); _ck(_v, 13, 0, currVal_4, currVal_5); }); }\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';\nimport { Subscription } from 'rxjs';\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    private subscriptions: Subscription[] = [];\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        // disable \"pan\" on mobile as it will prevent scrolling\n        const sub = this.store.select(DriveState.isMobile).subscribe(isMobile => {\n            this.hammerManager.get('pan').set({\n                enable: !isMobile\n            });\n        });\n\n        this.subscriptions.push(sub);\n    }\n\n    ngOnDestroy() {\n        this.dragSelect.removeSelectBox();\n        this.subscriptions.forEach(sub => sub.unsubscribe());\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 tap = new Hammer.Tap(),\n                pan = new Hammer.Pan(),\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) || function () {\n    __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    };\n    return __assign.apply(this, arguments);\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) || function () {\n    __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    };\n    return __assign.apply(this, arguments);\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 pathFolder && 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            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 pathFolder && 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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"arrow-drop-down\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(1, 9158656, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null], [2, i3.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null)], function (_ck, _v) { var currVal_2 = \"arrow-drop-down\"; _ck(_v, 1, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 1).inline; var currVal_1 = (((i1.ɵnov(_v, 1).color !== \"primary\") && (i1.ɵnov(_v, 1).color !== \"accent\")) && (i1.ɵnov(_v, 1).color !== \"warn\")); _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nfunction View_EntryBreadcrumbsComponent_3(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"mat-icon\", [[\"class\", \"separator mat-icon notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"keyboard-arrow-right\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(1, 9158656, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null], [2, i3.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null)], function (_ck, _v) { var currVal_2 = \"keyboard-arrow-right\"; _ck(_v, 1, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 1).inline; var currVal_1 = (((i1.ɵnov(_v, 1).color !== \"primary\") && (i1.ɵnov(_v, 1).color !== \"accent\")) && (i1.ɵnov(_v, 1).color !== \"warn\")); _ck(_v, 0, 0, currVal_0, currVal_1); }); }\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","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","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        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 extendStatics(d, b);\n    };\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 { 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 { 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';\nimport { ShareableNetworks, shareLinkSocially } from '../../../../common/core/utils/share-link-socially';\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                opacity: '1',\n                overflow: '*',\n            })),\n            state('false', style({\n                height: '0',\n                padding: '0',\n                opacity: '0',\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: ShareableNetworks) {\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 = function (d, b) {\n        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 extendStatics(d, b);\n    };\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 copy from 'copy-to-clipboard';\nimport { BaseDialog } from 'common/core/ui/dialogs/base-dialog';\nimport { Toast } from 'common/core/ui/toast.service';\nimport { shareLinkSocially } from '../../../../common/core/utils/share-link-socially';\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 type ShareableNetworks = 'facebook'|'twitter'|'pinterest'|'tumblr'|'blogger';\r\n\r\nexport function shareLinkSocially(network: ShareableNetworks, link: string, name?: string, image?: string) {\r\n    const url = generateShareUrl(network, link, name, image);\r\n    openNewWindow(url);\r\n}\r\n\r\nfunction openNewWindow(url: 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        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 generateShareUrl(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=${name} - ${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) || function () {\n    __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    };\n    return __assign.apply(this, arguments);\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) || function () {\n    __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    };\n    return __assign.apply(this, arguments);\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.update(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","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\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            if ( ! entry.users) entry.users = [];\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 = function (d, b) {\n        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 extendStatics(d, b);\n    };\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            if (!entry.users)\n                entry.users = [];\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 { 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","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        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 extendStatics(d, b);\n    };\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 { 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';\nimport { ROOT_FOLDER, RootFolder } from '../../folders/root-folder';\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|RootFolder = ROOT_FOLDER;\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        this.store.dispatch(new MoveEntries(this.selectedFolder))\n            .subscribe(() => {\n                this.loading.next(false);\n            });\n    }\n\n    public getRootFolder() {\n        return ROOT_FOLDER;\n    }\n\n    public canMove(): boolean {\n        const folder = this.selectedFolder,\n            movingEntries = this.store.selectSnapshot(DriveState.selectedEntries);\n\n        return DriveState.canMoveEntriesTo(movingEntries, folder);\n\n        if ( ! folder) return false;\n\n        // should not be able to move folder into it's\n        // own child or same folder it's already in\n        return movingEntries.findIndex(entry => {\n            const movingEntryIntoOwnChild = folder.path.startsWith(entry.path),\n                movingEntryIntoSameFolder = entry.parent_id === (folder.id === 'root' ? null : folder.id);\n            return  movingEntryIntoOwnChild || movingEntryIntoSameFolder;\n        }) === -1;\n    }\n}\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        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 extendStatics(d, b);\n    };\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';\nimport { ROOT_FOLDER } from '../../folders/root-folder';\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        _this.selectedFolder = ROOT_FOLDER;\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))\n            .subscribe(function () {\n            _this.loading.next(false);\n        });\n    };\n    MoveEntriesDialogComponent.prototype.getRootFolder = function () {\n        return ROOT_FOLDER;\n    };\n    MoveEntriesDialogComponent.prototype.canMove = function () {\n        var folder = this.selectedFolder, movingEntries = this.store.selectSnapshot(DriveState.selectedEntries);\n        return DriveState.canMoveEntriesTo(movingEntries, folder);\n        if (!folder)\n            return false;\n        // should not be able to move folder into it's\n        // own child or same folder it's already in\n        return movingEntries.findIndex(function (entry) {\n            var movingEntryIntoOwnChild = folder.path.startsWith(entry.path), movingEntryIntoSameFolder = entry.parent_id === (folder.id === 'root' ? null : folder.id);\n            return movingEntryIntoOwnChild || movingEntryIntoSameFolder;\n        }) === -1;\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","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 = function (d, b) {\n        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 extendStatics(d, b);\n    };\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 { 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","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        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 extendStatics(d, b);\n    };\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 {\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/platform-browser\";\nimport * as i16 from \"@angular/common\";\nimport * as i17 from \"../../../../../common/core/translations/translate.pipe\";\nimport * as i18 from \"./context-actions-container.component\";\nimport * as i19 from \"@ngxs/store\";\nimport * as i20 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 notranslate\"], [\"role\", \"img\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i1.View_MatIcon_0, i1.RenderType_MatIcon)), i0.ɵdid(3, 9158656, null, 0, i2.MatIcon, [i0.ElementRef, i2.MatIconRegistry, [8, null], [2, i2.MAT_ICON_LOCATION]], { 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_2 = _v.parent.parent.context.$implicit.icon; _ck(_v, 3, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 3).inline; var currVal_1 = (((i0.ɵnov(_v, 3).color !== \"primary\") && (i0.ɵnov(_v, 3).color !== \"accent\")) && (i0.ɵnov(_v, 3).color !== \"warn\")); _ck(_v, 2, 0, currVal_0, currVal_1); var currVal_3 = _v.parent.parent.context.$implicit.viewName; _ck(_v, 7, 0, currVal_3); }); }\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], [2, i15.HAMMER_LOADER]], { 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 notranslate\"], [\"role\", \"img\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i1.View_MatIcon_0, i1.RenderType_MatIcon)), i0.ɵdid(6, 9158656, null, 0, i2.MatIcon, [i0.ElementRef, i2.MatIconRegistry, [8, null], [2, i2.MAT_ICON_LOCATION]], { 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_5 = _v.parent.parent.context.$implicit.icon; _ck(_v, 6, 0, currVal_5); }, 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; var currVal_4 = (((i0.ɵnov(_v, 6).color !== \"primary\") && (i0.ɵnov(_v, 6).color !== \"accent\")) && (i0.ɵnov(_v, 6).color !== \"warn\")); _ck(_v, 5, 0, currVal_3, currVal_4); }); }\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, i16.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, i16.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, i16.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, i16.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], [2, i15.HAMMER_LOADER]], { 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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"more-vert\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i1.View_MatIcon_0, i1.RenderType_MatIcon)), i0.ɵdid(6, 9158656, null, 0, i2.MatIcon, [i0.ElementRef, i2.MatIconRegistry, [8, null], [2, i2.MAT_ICON_LOCATION]], { 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_5 = \"more-vert\"; _ck(_v, 6, 0, currVal_5); }, 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; var currVal_4 = (((i0.ɵnov(_v, 6).color !== \"primary\") && (i0.ɵnov(_v, 6).color !== \"accent\")) && (i0.ɵnov(_v, 6).color !== \"warn\")); _ck(_v, 5, 0, currVal_3, currVal_4); }); }\nexport function View_ContextActionsContainerComponent_0(_l) { return i0.ɵvid(2, [i0.ɵpid(0, i17.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, i16.NgForOf, [i0.ViewContainerRef, i0.TemplateRef, i0.IterableDiffers], { ngForOf: [0, \"ngForOf\"] }, null), i0.ɵpid(131072, i16.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, i16.NgIf, [i0.ViewContainerRef, i0.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), i0.ɵpid(131072, i16.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, i18.ContextActionsContainerComponent, [i19.Store, i0.Injector, i20.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\", i18.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 notranslate\"], [\"role\", \"img\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i11.View_MatIcon_0, i11.RenderType_MatIcon)), i1.ɵdid(10, 9158656, null, 0, i12.MatIcon, [i1.ElementRef, i12.MatIconRegistry, [8, null], [2, i12.MAT_ICON_LOCATION]], { 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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"info\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i11.View_MatIcon_0, i11.RenderType_MatIcon)), i1.ɵdid(19, 9158656, null, 0, i12.MatIcon, [i1.ElementRef, i12.MatIconRegistry, [8, null], [2, i12.MAT_ICON_LOCATION]], { 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_6 = ((i1.ɵunv(_v, 10, 0, i1.ɵnov(_v, 11).transform(_co.viewMode)) === \"list\") ? \"view-list\" : \"view-module\"); _ck(_v, 10, 0, currVal_6); var currVal_12 = \"info\"; _ck(_v, 19, 0, currVal_12); }, 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; var currVal_5 = (((i1.ɵnov(_v, 10).color !== \"primary\") && (i1.ɵnov(_v, 10).color !== \"accent\")) && (i1.ɵnov(_v, 10).color !== \"warn\")); _ck(_v, 9, 0, currVal_4, currVal_5); var currVal_7 = i1.ɵunv(_v, 14, 0, i1.ɵnov(_v, 16).transform(_co.activityOpen)); var currVal_8 = (i1.ɵnov(_v, 15).disabled || null); var currVal_9 = (i1.ɵnov(_v, 15)._animationMode === \"NoopAnimations\"); _ck(_v, 14, 0, currVal_7, currVal_8, currVal_9); var currVal_10 = i1.ɵnov(_v, 19).inline; var currVal_11 = (((i1.ɵnov(_v, 19).color !== \"primary\") && (i1.ɵnov(_v, 19).color !== \"accent\")) && (i1.ɵnov(_v, 19).color !== \"warn\")); _ck(_v, 18, 0, currVal_10, currVal_11); }); }\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","import { Component, ViewEncapsulation, ChangeDetectionStrategy, OnInit } from '@angular/core';\nimport { Select, Store } from '@ngxs/store';\nimport { ReloadPageEntries } from '../../state/actions/commands';\nimport { DriveSortOption, SortValue } from '../../entries/available-sorts';\nimport { DriveState } from '../../state/drive-state';\nimport { Observable } from 'rxjs';\nimport { DrivePage } from '../../state/models/drive-page';\nimport { FormControl } from '@angular/forms';\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 implements OnInit {\n    @Select(DriveState.sortColumn) sortColumn$: Observable<DriveSortOption>;\n    @Select(DriveState.activePage) activePage$: Observable<DrivePage>;\n\n    public sortFormControl = new FormControl({\n        column: this.store.selectSnapshot(DriveState.sortColumn),\n        direction: this.store.selectSnapshot(DriveState.sortDirection),\n    });\n\n    constructor(private store: Store) {}\n\n    ngOnInit() {\n        this.activePage$.subscribe(activePage => {\n            this.sortFormControl.setValue({\n                column: activePage.sortColumn,\n                direction: activePage.sortDirection\n            }, {emitEvent: false});\n        });\n\n        this.sortFormControl.valueChanges.subscribe((sort: SortValue) => {\n            this.store.dispatch(new ReloadPageEntries(\n                {orderBy: sort.column, orderDir: sort.direction}\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 { OnInit } from '@angular/core';\nimport { Select, Store } from '@ngxs/store';\nimport { ReloadPageEntries } from '../../state/actions/commands';\nimport { DriveState } from '../../state/drive-state';\nimport { Observable } from 'rxjs';\nimport { FormControl } from '@angular/forms';\nvar FileListHeaderComponent = /** @class */ (function () {\n    function FileListHeaderComponent(store) {\n        this.store = store;\n        this.sortFormControl = new FormControl({\n            column: this.store.selectSnapshot(DriveState.sortColumn),\n            direction: this.store.selectSnapshot(DriveState.sortDirection),\n        });\n    }\n    FileListHeaderComponent.prototype.ngOnInit = function () {\n        var _this = this;\n        this.activePage$.subscribe(function (activePage) {\n            _this.sortFormControl.setValue({\n                column: activePage.sortColumn,\n                direction: activePage.sortDirection\n            }, { emitEvent: false });\n        });\n        this.sortFormControl.valueChanges.subscribe(function (sort) {\n            _this.store.dispatch(new ReloadPageEntries({ orderBy: sort.column, orderDir: sort.direction }));\n        });\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 \"../entries-sort-button/entries-sort-button.component.ngfactory\";\nimport * as i3 from \"../entries-sort-button/entries-sort-button.component\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"@angular/forms\";\nimport * as i6 from \"../../drive-toolbar/toolbar-actions/toolbar-actions.component.ngfactory\";\nimport * as i7 from \"../../drive-toolbar/toolbar-actions/toolbar-actions.component\";\nimport * as i8 from \"@ngxs/store\";\nimport * as i9 from \"../../../../common/core/ui/context-menu/context-menu.service\";\nimport * as i10 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 };\nexport function View_FileListHeaderComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 0, null, null, 9, \"div\", [[\"class\", \"sort-header\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n   \"])), (_l()(), i1.ɵeld(2, 0, null, null, 6, \"entries-sort-button\", [], [[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, i2.View_EntriesSortButtonComponent_0, i2.RenderType_EntriesSortButtonComponent)), i1.ɵdid(3, 49152, null, 0, i3.EntriesSortButtonComponent, [], { btnDisabled: [0, \"btnDisabled\"] }, null), i1.ɵpid(131072, i4.AsyncPipe, [i1.ChangeDetectorRef]), i1.ɵprd(1024, null, i5.NG_VALUE_ACCESSOR, function (p0_0) { return [p0_0]; }, [i3.EntriesSortButtonComponent]), i1.ɵdid(6, 540672, null, 0, i5.FormControlDirective, [[8, null], [8, null], [6, i5.NG_VALUE_ACCESSOR], [2, i5.ɵangular_packages_forms_forms_k]], { form: [0, \"form\"] }, null), i1.ɵprd(2048, null, i5.NgControl, null, [i5.FormControlDirective]), i1.ɵdid(8, 16384, null, 0, i5.NgControlStatus, [[4, i5.NgControl]], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵeld(11, 0, null, null, 1, \"toolbar-actions\", [], null, null, null, i6.View_ToolbarActionsComponent_0, i6.RenderType_ToolbarActionsComponent)), i1.ɵdid(12, 49152, null, 0, i7.ToolbarActionsComponent, [i8.Store, i9.ContextMenu], null, null)], function (_ck, _v) { var _co = _v.component; var tmp_7_0 = null; var currVal_7 = (((tmp_7_0 = i1.ɵunv(_v, 3, 0, i1.ɵnov(_v, 4).transform(_co.activePage$))) == null) ? null : tmp_7_0.disableSort); _ck(_v, 3, 0, currVal_7); var currVal_8 = _co.sortFormControl; _ck(_v, 6, 0, currVal_8); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 8).ngClassUntouched; var currVal_1 = i1.ɵnov(_v, 8).ngClassTouched; var currVal_2 = i1.ɵnov(_v, 8).ngClassPristine; var currVal_3 = i1.ɵnov(_v, 8).ngClassDirty; var currVal_4 = i1.ɵnov(_v, 8).ngClassValid; var currVal_5 = i1.ɵnov(_v, 8).ngClassInvalid; var currVal_6 = i1.ɵnov(_v, 8).ngClassPending; _ck(_v, 2, 0, currVal_0, currVal_1, currVal_2, currVal_3, currVal_4, currVal_5, currVal_6); }); }\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, 114688, null, 0, i10.FileListHeaderComponent, [i8.Store], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nvar FileListHeaderComponentNgFactory = i1.ɵccf(\"file-list-header\", i10.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);max-height:49px}file-list-header toolbar-actions{margin-left:auto}@media only screen and (max-width:450px){file-list-header entries-sort-button .label,file-list-header entries-sort-button .sort-button-content{display:none}file-list-header entries-sort-button .mobile-sort-button-content{display:inline-block}}\"];\nexport { styles as styles };\n","<div class=\"sort-header\">\r\n   <entries-sort-button [btnDisabled]=\"(activePage$ | async)?.disableSort\" [formControl]=\"sortFormControl\"></entries-sort-button>\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 { 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","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        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 extendStatics(d, b);\n    };\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 { 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 \"../../common/core/ui/breakpoints.service\";\nimport * as i7 from \"@angular/common\";\nimport * as i8 from \"./search/main-searchbar/main-searchbar.component.ngfactory\";\nimport * as i9 from \"./search/main-searchbar/main-searchbar.component\";\nimport * as i10 from \"@ngxs/store\";\nimport * as i11 from \"./drive-entry-api.service\";\nimport * as i12 from \"../../../node_modules/@angular/material/sidenav/typings/index.ngfactory\";\nimport * as i13 from \"@angular/material/sidenav\";\nimport * as i14 from \"@angular/cdk/bidi\";\nimport * as i15 from \"@angular/platform-browser/animations\";\nimport * as i16 from \"@angular/cdk/scrolling\";\nimport * as i17 from \"@angular/cdk/a11y\";\nimport * as i18 from \"@angular/cdk/platform\";\nimport * as i19 from \"./sidebar/sidebar.component.ngfactory\";\nimport * as i20 from \"./sidebar/sidebar.component\";\nimport * as i21 from \"./drive-urls.service\";\nimport * as i22 from \"./details-sidebar/details-sidebar.component.ngfactory\";\nimport * as i23 from \"./details-sidebar/details-sidebar.component\";\nimport * as i24 from \"./interactions/drive-hammer-interactions.directive\";\nimport * as i25 from \"./interactions/files-drag-select.service\";\nimport * as i26 from \"./interactions/drag-entry.service\";\nimport * as i27 from \"./interactions/drive-dom-cache.service\";\nimport * as i28 from \"../../common/core/ui/ad-host/ad-host.component.ngfactory\";\nimport * as i29 from \"../../common/core/ui/ad-host/ad-host.component\";\nimport * as i30 from \"../../common/core/utils/lazy-loader.service\";\nimport * as i31 from \"./drive-toolbar/drive-toolbar.component.ngfactory\";\nimport * as i32 from \"./drive-toolbar/drive-toolbar.component\";\nimport * as i33 from \"./header/file-list-header/file-list-header.component.ngfactory\";\nimport * as i34 from \"./header/file-list-header/file-list-header.component\";\nimport * as i35 from \"../../common/core/ui/context-menu/context-menu.directive\";\nimport * as i36 from \"../../common/core/ui/context-menu/context-menu.service\";\nimport * as i37 from \"../../common/core/ui/context-menu/available-context-menus\";\nimport * as i38 from \"../../common/uploads/directives/upload-dropzone.directive\";\nimport * as i39 from \"./interactions/drive-infinite-scroll.directive\";\nimport * as i40 from \"./interactions/toggle-selected-class.directive\";\nimport * as i41 from \"@angular/router\";\nimport * as i42 from \"../../common/core/ui/loading-indicator/loading-indicator.component.ngfactory\";\nimport * as i43 from \"../../common/core/ui/loading-indicator/loading-indicator.component\";\nimport * as i44 from \"./interactions/entry-drag-preview/entry-drag-preview.component.ngfactory\";\nimport * as i45 from \"./interactions/entry-drag-preview/entry-drag-preview.component\";\nimport * as i46 from \"./drive.component\";\nimport * as i47 from \"../../common/core/services/local-storage.service\";\nimport * as i48 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\"]], [[2, \"transparent\", 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, 114688, null, 0, i3.MaterialNavbar, [i4.Settings, i5.CurrentUser, i1.ElementRef, i6.BreakpointsService], { menuPosition: [0, \"menuPosition\"], showToggleButton: [1, \"showToggleButton\"] }, { toggleButtonClick: \"toggleButtonClick\" }), i1.ɵpid(131072, i7.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, i8.View_MainSearchbarComponent_0, i8.RenderType_MainSearchbarComponent)), i1.ɵdid(8, 114688, null, 0, i9.MainSearchbarComponent, [i10.Store, i11.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, i12.View_MatSidenavContainer_0, i12.RenderType_MatSidenavContainer)), i1.ɵdid(12, 1490944, null, 2, i13.MatSidenavContainer, [[2, i14.Directionality], i1.ElementRef, i1.NgZone, i1.ChangeDetectorRef, i13.MAT_DRAWER_DEFAULT_AUTOSIZE, [2, i15.ANIMATION_MODULE_TYPE], [2, i16.ViewportRuler]], 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)._animationStarted.next($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"component:@transform.done\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 17)._animationEnd.next($event) !== false);\n        ad = (pd_1 && ad);\n    } return ad; }, i12.View_MatSidenav_0, i12.RenderType_MatSidenav)), i1.ɵdid(17, 3325952, [[4, 4]], 0, i13.MatSidenav, [i1.ElementRef, i17.FocusTrapFactory, i17.FocusMonitor, i18.Platform, i1.NgZone, [2, i7.DOCUMENT]], { mode: [0, \"mode\"], opened: [1, \"opened\"] }, null), i1.ɵpid(131072, i7.AsyncPipe, [i1.ChangeDetectorRef]), i1.ɵpid(131072, i7.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(21, 0, null, 0, 1, \"sidebar\", [], null, null, null, i19.View_SidebarComponent_0, i19.RenderType_SidebarComponent)), i1.ɵdid(22, 49152, null, 0, i20.SidebarComponent, [i21.DriveUrlsService, i10.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)._animationStarted.next($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"component:@transform.done\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 26)._animationEnd.next($event) !== false);\n        ad = (pd_1 && ad);\n    } return ad; }, i12.View_MatSidenav_0, i12.RenderType_MatSidenav)), i1.ɵdid(26, 3325952, [[4, 4]], 0, i13.MatSidenav, [i1.ElementRef, i17.FocusTrapFactory, i17.FocusMonitor, i18.Platform, i1.NgZone, [2, i7.DOCUMENT]], { position: [0, \"position\"], mode: [1, \"mode\"], opened: [2, \"opened\"] }, null), i1.ɵpid(131072, i7.AsyncPipe, [i1.ChangeDetectorRef]), i1.ɵpid(131072, i7.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(30, 0, null, 0, 1, \"details-sidebar\", [], null, null, null, i22.View_DetailsSidebarComponent_0, i22.RenderType_DetailsSidebarComponent)), i1.ɵdid(31, 49152, null, 0, i23.DetailsSidebarComponent, [i10.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-rek\", null], [4, \"margin-left\", \"px\"], [4, \"margin-right\", \"px\"]], null, null, i12.View_MatSidenavContent_0, i12.RenderType_MatSidenavContent)), i1.ɵdid(35, 1294336, [[5, 4]], 0, i13.MatSidenavContent, [i1.ChangeDetectorRef, i13.MatSidenavContainer, i1.ElementRef, i16.ScrollDispatcher, i1.NgZone], null, null), i1.ɵdid(36, 212992, null, 1, i24.DriveHammerInteractionsDirective, [i1.NgZone, i1.ElementRef, i10.Store, i25.FilesDragSelectService, i26.DragEntryService, i27.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, i28.View_AdHostComponent_0, i28.RenderType_AdHostComponent)), i1.ɵdid(40, 114688, null, 0, i29.AdHostComponent, [i1.ElementRef, i1.Renderer2, i4.Settings, i5.CurrentUser, i30.LazyLoaderService], { slot: [0, \"slot\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(42, 0, null, 0, 1, \"drive-toolbar\", [], null, null, null, i31.View_DriveToolbarComponent_0, i31.RenderType_DriveToolbarComponent)), i1.ɵdid(43, 49152, null, 0, i32.DriveToolbarComponent, [], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(45, 0, null, 0, 1, \"file-list-header\", [], null, null, null, i33.View_FileListHeaderComponent_0, i33.RenderType_FileListHeaderComponent)), i1.ɵdid(46, 114688, null, 0, i34.FileListHeaderComponent, [i10.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, i35.ContextMenuDirective, [i1.ElementRef, i36.ContextMenu, i37.AVAILABLE_CONTEXT_MENUS], { params: [0, \"params\"], disableContextMenu: [1, \"disableContextMenu\"] }, null), i1.ɵpid(131072, i7.AsyncPipe, [i1.ChangeDetectorRef]), i1.ɵdid(53, 212992, null, 0, i38.UploadDropzoneDirective, [i1.ElementRef], { disableDropzoneClick: [0, \"disableDropzoneClick\"], disableDropzone: [1, \"disableDropzone\"] }, { filesDropped: \"filesDropped\" }), i1.ɵpid(131072, i7.AsyncPipe, [i1.ChangeDetectorRef]), i1.ɵdid(55, 212992, null, 0, i39.DriveInfiniteScrollDirective, [i1.ElementRef, i10.Store], null, null), i1.ɵdid(56, 4210688, null, 0, i40.ToggleSelectedClassDirective, [i1.ElementRef], null, null), i1.ɵpid(131072, i7.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, i41.RouterOutlet, [i41.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, i42.View_LoadingIndicatorComponent_0, i42.RenderType_LoadingIndicatorComponent)), i1.ɵdid(64, 49152, null, 0, i43.LoadingIndicatorComponent, [], { isVisible: [0, \"isVisible\"] }, null), i1.ɵpid(131072, i7.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, i44.View_EntryDragPreviewComponent_0, i44.RenderType_EntryDragPreviewComponent)), i1.ɵdid(71, 49152, null, 0, i45.EntryDragPreviewComponent, [i10.Store], null, null)], function (_ck, _v) { var _co = _v.component; var currVal_1 = \"drive-navbar\"; var currVal_2 = i1.ɵunv(_v, 4, 1, i1.ɵnov(_v, 5).transform(_co.isMobile$)); _ck(_v, 4, 0, currVal_1, currVal_2); _ck(_v, 8, 0); _ck(_v, 12, 0); var currVal_13 = (i1.ɵunv(_v, 17, 0, i1.ɵnov(_v, 18).transform(_co.isMobile$)) ? \"over\" : \"side\"); var currVal_14 = i1.ɵunv(_v, 17, 1, i1.ɵnov(_v, 19).transform(_co.sidebarOpen$)); _ck(_v, 17, 0, currVal_13, currVal_14); var currVal_24 = \"end\"; var currVal_25 = (i1.ɵunv(_v, 26, 1, i1.ɵnov(_v, 27).transform(_co.isMobile$)) ? \"over\" : \"side\"); var currVal_26 = i1.ɵunv(_v, 26, 2, i1.ɵnov(_v, 28).transform(_co.activityOpen$)); _ck(_v, 26, 0, currVal_24, currVal_25, currVal_26); _ck(_v, 35, 0); _ck(_v, 36, 0); var currVal_31 = \"ads.drive\"; _ck(_v, 40, 0, currVal_31); _ck(_v, 46, 0); var currVal_33 = \"entry\"; var currVal_34 = !i1.ɵunv(_v, 51, 1, i1.ɵnov(_v, 52).transform(_co.canUpload$)); _ck(_v, 51, 0, currVal_33, currVal_34); var currVal_35 = true; var currVal_36 = !i1.ɵunv(_v, 53, 1, i1.ɵnov(_v, 54).transform(_co.canUpload$)); _ck(_v, 53, 0, currVal_35, currVal_36); _ck(_v, 55, 0); _ck(_v, 60, 0); var currVal_38 = i1.ɵunv(_v, 64, 0, i1.ɵnov(_v, 65).transform(_co.loading$)); _ck(_v, 64, 0, currVal_38); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵnov(_v, 4).transparent; _ck(_v, 3, 0, currVal_0); var currVal_3 = i1.ɵnov(_v, 12)._backdropOverride; _ck(_v, 11, 0, currVal_3); var currVal_4 = i1.ɵnov(_v, 17)._animationState; var currVal_5 = null; var currVal_6 = (i1.ɵnov(_v, 17).position === \"end\"); var currVal_7 = (i1.ɵnov(_v, 17).mode === \"over\"); var currVal_8 = (i1.ɵnov(_v, 17).mode === \"push\"); var currVal_9 = (i1.ɵnov(_v, 17).mode === \"side\"); var currVal_10 = i1.ɵnov(_v, 17).fixedInViewport; var currVal_11 = (i1.ɵnov(_v, 17).fixedInViewport ? i1.ɵnov(_v, 17).fixedTopGap : null); var currVal_12 = (i1.ɵnov(_v, 17).fixedInViewport ? i1.ɵnov(_v, 17).fixedBottomGap : null); _ck(_v, 16, 0, currVal_4, currVal_5, currVal_6, currVal_7, currVal_8, currVal_9, currVal_10, currVal_11, currVal_12); var currVal_15 = i1.ɵnov(_v, 26)._animationState; var currVal_16 = null; var currVal_17 = (i1.ɵnov(_v, 26).position === \"end\"); var currVal_18 = (i1.ɵnov(_v, 26).mode === \"over\"); var currVal_19 = (i1.ɵnov(_v, 26).mode === \"push\"); var currVal_20 = (i1.ɵnov(_v, 26).mode === \"side\"); var currVal_21 = i1.ɵnov(_v, 26).fixedInViewport; var currVal_22 = (i1.ɵnov(_v, 26).fixedInViewport ? i1.ɵnov(_v, 26).fixedTopGap : null); var currVal_23 = (i1.ɵnov(_v, 26).fixedInViewport ? i1.ɵnov(_v, 26).fixedBottomGap : null); _ck(_v, 25, 0, currVal_15, currVal_16, currVal_17, currVal_18, currVal_19, currVal_20, currVal_21, currVal_22, currVal_23); var currVal_27 = _co.settings.has(\"ads.drive\"); var currVal_28 = i1.ɵnov(_v, 35)._container._contentMargins.left; var currVal_29 = i1.ɵnov(_v, 35)._container._contentMargins.right; _ck(_v, 34, 0, currVal_27, currVal_28, currVal_29); var currVal_30 = i1.ɵnov(_v, 40).randomId; _ck(_v, 39, 0, currVal_30); var currVal_32 = i1.ɵunv(_v, 50, 0, i1.ɵnov(_v, 57).transform(_co.dragging)); _ck(_v, 50, 0, currVal_32); var currVal_37 = i1.ɵnov(_v, 64).isVisible; _ck(_v, 63, 0, currVal_37); var currVal_39 = i1.ɵnov(_v, 71).className; var currVal_40 = i1.ɵnov(_v, 71).dragging; _ck(_v, 70, 0, currVal_39, currVal_40); }); }\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, i46.DriveComponent, [i10.Store, i41.ActivatedRoute, i5.CurrentUser, i47.LocalStorage, i27.DriveDomCacheService, i48.BreakpointObserver, i4.Settings], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nvar DriveComponentNgFactory = i1.ɵccf(\"drive\", i46.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-rek ad-host{margin-top:25px}drive .has-rek .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:calc(100% - 4px);border:2px solid transparent;overflow-x:hidden;overflow-y:auto;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-rek]=\"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 } 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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"recent-custom\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i4.View_MatIcon_0, i4.RenderType_MatIcon)), i0.ɵdid(11, 9158656, null, 0, i5.MatIcon, [i0.ElementRef, i5.MatIconRegistry, [8, null], [2, i5.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i0.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var currVal_2 = \"recent-custom\"; _ck(_v, 11, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 11).inline; var currVal_1 = (((i0.ɵnov(_v, 11).color !== \"primary\") && (i0.ɵnov(_v, 11).color !== \"accent\")) && (i0.ɵnov(_v, 11).color !== \"warn\")); _ck(_v, 10, 0, currVal_0, currVal_1); }); }\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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"trash-custom\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i4.View_MatIcon_0, i4.RenderType_MatIcon)), i0.ɵdid(11, 9158656, null, 0, i5.MatIcon, [i0.ElementRef, i5.MatIconRegistry, [8, null], [2, i5.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i0.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var currVal_2 = \"trash-custom\"; _ck(_v, 11, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 11).inline; var currVal_1 = (((i0.ɵnov(_v, 11).color !== \"primary\") && (i0.ɵnov(_v, 11).color !== \"accent\")) && (i0.ɵnov(_v, 11).color !== \"warn\")); _ck(_v, 10, 0, currVal_0, currVal_1); }); }\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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"add-star-custom\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i4.View_MatIcon_0, i4.RenderType_MatIcon)), i0.ɵdid(11, 9158656, null, 0, i5.MatIcon, [i0.ElementRef, i5.MatIconRegistry, [8, null], [2, i5.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i0.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var currVal_2 = \"add-star-custom\"; _ck(_v, 11, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 11).inline; var currVal_1 = (((i0.ɵnov(_v, 11).color !== \"primary\") && (i0.ɵnov(_v, 11).color !== \"accent\")) && (i0.ɵnov(_v, 11).color !== \"warn\")); _ck(_v, 10, 0, currVal_0, currVal_1); }); }\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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"share-custom\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i4.View_MatIcon_0, i4.RenderType_MatIcon)), i0.ɵdid(11, 9158656, null, 0, i5.MatIcon, [i0.ElementRef, i5.MatIconRegistry, [8, null], [2, i5.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i0.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var currVal_2 = \"share-custom\"; _ck(_v, 11, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 11).inline; var currVal_1 = (((i0.ɵnov(_v, 11).color !== \"primary\") && (i0.ɵnov(_v, 11).color !== \"accent\")) && (i0.ɵnov(_v, 11).color !== \"warn\")); _ck(_v, 10, 0, currVal_0, currVal_1); }); }\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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"search-custom\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i4.View_MatIcon_0, i4.RenderType_MatIcon)), i0.ɵdid(11, 9158656, null, 0, i5.MatIcon, [i0.ElementRef, i5.MatIconRegistry, [8, null], [2, i5.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i0.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var currVal_2 = \"search-custom\"; _ck(_v, 11, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = i0.ɵnov(_v, 11).inline; var currVal_1 = (((i0.ɵnov(_v, 11).color !== \"primary\") && (i0.ɵnov(_v, 11).color !== \"accent\")) && (i0.ɵnov(_v, 11).color !== \"warn\")); _ck(_v, 10, 0, currVal_0, currVal_1); }); }\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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"upload-custom\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(6, 9158656, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null], [2, i3.MAT_ICON_LOCATION]], { 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_2 = \"upload-custom\"; _ck(_v, 6, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 6).inline; var currVal_1 = (((i1.ɵnov(_v, 6).color !== \"primary\") && (i1.ɵnov(_v, 6).color !== \"accent\")) && (i1.ɵnov(_v, 6).color !== \"warn\")); _ck(_v, 5, 0, currVal_0, currVal_1); }); }\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: (e: KeyboardEvent) => void) {\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, 49152, 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 \"./default-preview.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"../../core/translations/translate.directive\";\nimport * as i3 from \"../../core/translations/translations.service\";\nimport * as i4 from \"../../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 \"./default-preview.component\";\nimport * as i11 from \"../current-preview-file\";\nimport * as i12 from \"../../core/http/app-http-client.service\";\nimport * as i13 from \"@angular/platform-browser\";\nimport * as i14 from \"../../auth/current-user\";\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, 10, \"div\", [[\"class\", \"panel preview-object\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(2, 0, null, null, 2, \"div\", [[\"class\", \"message\"], [\"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, [\"No file preview available.\"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(6, 0, null, null, 3, \"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; }, i5.View_MatButton_0, i5.RenderType_MatButton)), i1.ɵdid(7, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), i1.ɵdid(8, 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, [\"Download\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var currVal_2 = \"primary\"; _ck(_v, 8, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = (i1.ɵnov(_v, 8).disabled || null); var currVal_1 = (i1.ɵnov(_v, 8)._animationMode === \"NoopAnimations\"); _ck(_v, 6, 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, i10.DefaultPreviewComponent, [i11.CURRENT_PREVIEW_FILE, i4.Settings, i12.AppHttpClient, i13.DomSanitizer, i14.CurrentUser], null, null)], null, null); }\nvar DefaultPreviewComponentNgFactory = i1.ɵccf(\"default-preview\", i10.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 \"./text-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 \"../../core/config/settings.service\";\nimport * as i6 from \"../../core/http/app-http-client.service\";\nimport * as i7 from \"@angular/platform-browser\";\nimport * as i8 from \"../../auth/current-user\";\nimport * as i9 from \"@angular/common\";\nimport * as i10 from \"./text-preview.component\";\nvar styles_TextPreviewComponent = [i0.styles];\nvar RenderType_TextPreviewComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_TextPreviewComponent, data: {} });\nexport { RenderType_TextPreviewComponent as RenderType_TextPreviewComponent };\nfunction View_TextPreviewComponent_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.Settings, i6.AppHttpClient, i7.DomSanitizer, i8.CurrentUser], null, null)], null, null); }\nfunction View_TextPreviewComponent_2(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(1, 0, null, null, 5, \"div\", [[\"class\", \"text-wrapper preview-object\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(3, 0, null, null, 2, \"pre\", [], null, null, null, null, null)), (_l()(), i1.ɵted(4, null, [\"\", \"\"])), i1.ɵpid(131072, i9.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵunv(_v, 4, 0, i1.ɵnov(_v, 5).transform(_co.content$)); _ck(_v, 4, 0, currVal_0); }); }\nexport function View_TextPreviewComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵand(16777216, null, null, 2, null, View_TextPreviewComponent_1)), i1.ɵdid(1, 16384, null, 0, i9.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"], ngIfElse: [1, \"ngIfElse\"] }, null), i1.ɵpid(131072, i9.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵand(0, [[\"textPreview\", 2]], null, 0, null, View_TextPreviewComponent_2))], function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵunv(_v, 1, 0, i1.ɵnov(_v, 2).transform(_co.fileTooLarge$)); var currVal_1 = i1.ɵnov(_v, 4); _ck(_v, 1, 0, currVal_0, currVal_1); }, null); }\nexport function View_TextPreviewComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"text-preview\", [], null, null, null, View_TextPreviewComponent_0, RenderType_TextPreviewComponent)), i1.ɵdid(1, 114688, null, 0, i10.TextPreviewComponent, [i4.CURRENT_PREVIEW_FILE, i5.Settings, i6.AppHttpClient, i7.DomSanitizer, i8.CurrentUser], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nvar TextPreviewComponentNgFactory = i1.ɵccf(\"text-preview\", i10.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;width:80%;min-height:80%}@media only screen and (max-width:768px){text-preview{width:90%}}text-preview .text-wrapper{width:100%;height:100%;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);border-radius:4px;color:rgba(0,0,0,.87);word-wrap:break-word;padding:20px;overflow:auto}text-preview pre{display:block;white-space:pre-wrap;word-wrap:break-word;margin:0;font-size:1.4rem;font-family:inherit}text-preview default-preview{margin:auto;position:absolute;top:0;left:0;right:0;bottom:0}\"];\nexport { styles as styles };\n","<default-preview *ngIf=\"fileTooLarge$ | async; else textPreview\"></default-preview>\r\n<ng-template #textPreview>\r\n    <div class=\"text-wrapper preview-object\">\r\n        <pre>{{ content$ | async }}</pre>\r\n    </div>\r\n</ng-template>","/**\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 \"../../core/config/settings.service\";\nimport * as i6 from \"../../core/http/app-http-client.service\";\nimport * as i7 from \"@angular/platform-browser\";\nimport * as i8 from \"../../auth/current-user\";\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.Settings, i6.AppHttpClient, i7.DomSanitizer, i8.CurrentUser], 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\"], [\"controlsList\", \"nodownload noremoteplayback\"]], [[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.Settings, i6.AppHttpClient, i7.DomSanitizer, i8.CurrentUser], 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\" controlsList=\"nodownload noremoteplayback\"></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 \"../../core/config/settings.service\";\nimport * as i5 from \"../../core/http/app-http-client.service\";\nimport * as i6 from \"@angular/platform-browser\";\nimport * as i7 from \"../../auth/current-user\";\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.Settings, i5.AppHttpClient, i6.DomSanitizer, i7.CurrentUser], 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;background-color:#fff}\"];\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 \"../../core/config/settings.service\";\nimport * as i5 from \"../../core/http/app-http-client.service\";\nimport * as i6 from \"@angular/platform-browser\";\nimport * as i7 from \"../../auth/current-user\";\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, 0, \"iframe\", [], [[8, \"src\", 5]], 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_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.Settings, i5.AppHttpClient, i6.DomSanitizer, i7.CurrentUser], 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 iframe,pdf-preview object{width:100%;height:100%;border:none}\"];\nexport { styles as styles };\n","<iframe [src]=\"getSafeSrc()\"></iframe>","/**\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 \"../../core/config/settings.service\";\nimport * as i6 from \"../../core/http/app-http-client.service\";\nimport * as i7 from \"@angular/platform-browser\";\nimport * as i8 from \"../../auth/current-user\";\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.Settings, i6.AppHttpClient, i7.DomSanitizer, i8.CurrentUser], 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\"], [\"controlsList\", \"nodownload noremoteplayback\"]], [[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.Settings, i6.AppHttpClient, i7.DomSanitizer, i8.CurrentUser], 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%;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\" controlsList=\"nodownload noremoteplayback\"></audio>\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 \"./google-docs-viewer.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 \"../../core/config/settings.service\";\nimport * as i6 from \"../../core/http/app-http-client.service\";\nimport * as i7 from \"@angular/platform-browser\";\nimport * as i8 from \"../../auth/current-user\";\nimport * as i9 from \"@angular/common\";\nimport * as i10 from \"../../core/ui/loading-indicator/loading-indicator.component.ngfactory\";\nimport * as i11 from \"../../core/ui/loading-indicator/loading-indicator.component\";\nimport * as i12 from \"./google-docs-viewer.component\";\nvar styles_GoogleDocsViewerComponent = [i0.styles];\nvar RenderType_GoogleDocsViewerComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_GoogleDocsViewerComponent, data: {} });\nexport { RenderType_GoogleDocsViewerComponent as RenderType_GoogleDocsViewerComponent };\nfunction View_GoogleDocsViewerComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 5, null, null, null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(2, 0, [[1, 0], [\"iframe\", 1]], null, 0, \"iframe\", [[\"class\", \"preview-object\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(4, 0, null, null, 0, \"div\", [[\"class\", \"pop-out-block\"]], null, [[null, \"click\"]], function (_v, en, $event) { var ad = true; var _co = _v.component; if ((\"click\" === en)) {\n        var pd_0 = (_co.openInNewWindow() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], null, null); }\nfunction View_GoogleDocsViewerComponent_2(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(1, 0, null, null, 1, \"default-preview\", [], null, null, null, i2.View_DefaultPreviewComponent_0, i2.RenderType_DefaultPreviewComponent)), i1.ɵdid(2, 49152, null, 0, i3.DefaultPreviewComponent, [i4.CURRENT_PREVIEW_FILE, i5.Settings, i6.AppHttpClient, i7.DomSanitizer, i8.CurrentUser], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], null, null); }\nexport function View_GoogleDocsViewerComponent_0(_l) { return i1.ɵvid(2, [i1.ɵqud(671088640, 1, { iframe: 0 }), (_l()(), i1.ɵand(16777216, null, null, 2, null, View_GoogleDocsViewerComponent_1)), i1.ɵdid(2, 16384, null, 0, i9.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"], ngIfElse: [1, \"ngIfElse\"] }, null), i1.ɵpid(131072, i9.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵand(0, [[\"defaultPreview\", 2]], null, 0, null, View_GoogleDocsViewerComponent_2)), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵeld(7, 0, null, null, 2, \"loading-indicator\", [[\"class\", \"overlay\"]], [[40, \"@visibility\", 0]], null, null, i10.View_LoadingIndicatorComponent_0, i10.RenderType_LoadingIndicatorComponent)), i1.ɵdid(8, 49152, null, 0, i11.LoadingIndicatorComponent, [], { isVisible: [0, \"isVisible\"] }, null), i1.ɵpid(131072, i9.AsyncPipe, [i1.ChangeDetectorRef])], function (_ck, _v) { var _co = _v.component; var currVal_0 = !i1.ɵunv(_v, 2, 0, i1.ɵnov(_v, 3).transform(_co.showDefaultPreview$)); var currVal_1 = i1.ɵnov(_v, 5); _ck(_v, 2, 0, currVal_0, currVal_1); var currVal_3 = i1.ɵunv(_v, 8, 0, i1.ɵnov(_v, 9).transform(_co.loading$)); _ck(_v, 8, 0, currVal_3); }, function (_ck, _v) { var currVal_2 = i1.ɵnov(_v, 8).isVisible; _ck(_v, 7, 0, currVal_2); }); }\nexport function View_GoogleDocsViewerComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"google-docs-viewer\", [], null, null, null, View_GoogleDocsViewerComponent_0, RenderType_GoogleDocsViewerComponent)), i1.ɵdid(1, 4243456, null, 0, i12.GoogleDocsViewerComponent, [i4.CURRENT_PREVIEW_FILE, i5.Settings, i6.AppHttpClient, i7.DomSanitizer, i8.CurrentUser], null, null)], null, null); }\nvar GoogleDocsViewerComponentNgFactory = i1.ɵccf(\"google-docs-viewer\", i12.GoogleDocsViewerComponent, View_GoogleDocsViewerComponent_Host_0, {}, {}, []);\nexport { GoogleDocsViewerComponentNgFactory as GoogleDocsViewerComponentNgFactory };\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 = [\"google-docs-viewer{display:block;width:100%;height:100%;margin:auto;position:absolute;top:0;left:0;right:0;bottom:0}google-docs-viewer iframe{width:100%;height:100%;border:none}google-docs-viewer loading-indicator.overlay{position:absolute;width:100%;height:100%;background-color:transparent}google-docs-viewer default-preview{margin:auto;position:absolute;top:0;left:0;right:0;bottom:0}google-docs-viewer .pop-out-block{width:40px;height:40px;position:absolute;top:12px;right:12px;cursor:pointer}\"];\nexport { styles as styles };\n","<ng-container *ngIf=\"!(showDefaultPreview$ | async); else defaultPreview\">\r\n    <iframe class=\"preview-object\" #iframe></iframe>\r\n    <div class=\"pop-out-block\" (click)=\"openInNewWindow()\"></div>\r\n</ng-container>\r\n<ng-template #defaultPreview>\r\n    <default-preview></default-preview>\r\n</ng-template>\r\n<loading-indicator [isVisible]=\"loading$ | async\" class=\"overlay\"></loading-indicator>","var __assign = (this && this.__assign) || function () {\n    __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    };\n    return __assign.apply(this, arguments);\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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"priority-high\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(3, 9158656, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null], [2, i3.MAT_ICON_LOCATION]], { 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_2 = \"priority-high\"; _ck(_v, 3, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 3).inline; var currVal_1 = (((i1.ɵnov(_v, 3).color !== \"primary\") && (i1.ɵnov(_v, 3).color !== \"accent\")) && (i1.ɵnov(_v, 3).color !== \"warn\")); _ck(_v, 2, 0, currVal_0, currVal_1); }); }\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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"edit\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(3, 9158656, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null], [2, i3.MAT_ICON_LOCATION]], { 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_2 = \"edit\"; _ck(_v, 3, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 3).inline; var currVal_1 = (((i1.ɵnov(_v, 3).color !== \"primary\") && (i1.ɵnov(_v, 3).color !== \"accent\")) && (i1.ɵnov(_v, 3).color !== \"warn\")); _ck(_v, 2, 0, currVal_0, currVal_1); }); }\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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"remove-red-eye\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(3, 9158656, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null], [2, i3.MAT_ICON_LOCATION]], { 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_2 = \"remove-red-eye\"; _ck(_v, 3, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 3).inline; var currVal_1 = (((i1.ɵnov(_v, 3).color !== \"primary\") && (i1.ɵnov(_v, 3).color !== \"accent\")) && (i1.ɵnov(_v, 3).color !== \"warn\")); _ck(_v, 2, 0, currVal_0, currVal_1); }); }\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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"file-download\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(3, 9158656, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null], [2, i3.MAT_ICON_LOCATION]], { 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_2 = \"file-download\"; _ck(_v, 3, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 3).inline; var currVal_1 = (((i1.ɵnov(_v, 3).color !== \"primary\") && (i1.ɵnov(_v, 3).color !== \"accent\")) && (i1.ɵnov(_v, 3).color !== \"warn\")); _ck(_v, 2, 0, currVal_0, currVal_1); }); }\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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"arrow-drop-down\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(17, 9158656, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null], [2, i3.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n\"])), (_l()(), i1.ɵeld(20, 0, null, null, 59, \"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.ɵf21, null, [i12.MatMenu]), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵeld(26, 0, null, 0, 16, \"div\", [[\"class\", \"mat-menu-item\"], [\"mat-menu-item\", \"\"]], [[1, \"role\", 0], [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.ɵf21]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(29, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon mat-icon notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"check\"]], [[2, \"visually-hidden\", null], [2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(30, 9158656, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null], [2, i3.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(32, 0, null, 0, 9, \"div\", [], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(34, 0, null, null, 2, \"div\", [[\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(35, 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            \"])), (_l()(), i1.ɵeld(38, 0, null, null, 2, \"div\", [[\"class\", \"description\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(39, 4341760, null, 0, i4.TranslateDirective, [i1.ElementRef, i5.Translations, i6.Settings], 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(44, 0, null, 0, 16, \"div\", [[\"class\", \"mat-menu-item\"], [\"mat-menu-item\", \"\"]], [[1, \"role\", 0], [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, 45)._checkDisabled($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"mouseenter\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 45)._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(45, 180224, [[1, 4]], 0, i12.MatMenuItem, [i1.ElementRef, i15.DOCUMENT, i10.FocusMonitor, [2, i12.ɵf21]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(47, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon mat-icon notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"check\"]], [[2, \"visually-hidden\", null], [2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(48, 9158656, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null], [2, i3.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(50, 0, null, 0, 9, \"div\", [], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(52, 0, null, null, 2, \"div\", [[\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(53, 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(56, 0, null, null, 2, \"div\", [[\"class\", \"description\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(57, 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(62, 0, null, 0, 16, \"div\", [[\"class\", \"mat-menu-item\"], [\"mat-menu-item\", \"\"]], [[1, \"role\", 0], [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, 63)._checkDisabled($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"mouseenter\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 63)._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(63, 180224, [[1, 4]], 0, i12.MatMenuItem, [i1.ElementRef, i15.DOCUMENT, i10.FocusMonitor, [2, i12.ɵf21]], null, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(65, 0, null, 0, 1, \"mat-icon\", [[\"class\", \"mat-icon mat-icon notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"check\"]], [[2, \"visually-hidden\", null], [2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i2.View_MatIcon_0, i2.RenderType_MatIcon)), i1.ɵdid(66, 9158656, null, 0, i3.MatIcon, [i1.ElementRef, i3.MatIconRegistry, [8, null], [2, i3.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n        \"])), (_l()(), i1.ɵeld(68, 0, null, 0, 9, \"div\", [], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(70, 0, null, null, 2, \"div\", [[\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(71, 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(74, 0, null, null, 2, \"div\", [[\"class\", \"description\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(75, 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_11 = \"arrow-drop-down\"; _ck(_v, 17, 0, currVal_11); var currVal_12 = \"mat-menu-with-description\"; _ck(_v, 21, 0, currVal_12); var currVal_22 = \"check\"; _ck(_v, 30, 0, currVal_22); var currVal_32 = \"check\"; _ck(_v, 48, 0, currVal_32); var currVal_42 = \"check\"; _ck(_v, 66, 0, currVal_42); }, 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; var currVal_10 = (((i1.ɵnov(_v, 17).color !== \"primary\") && (i1.ɵnov(_v, 17).color !== \"accent\")) && (i1.ɵnov(_v, 17).color !== \"warn\")); _ck(_v, 16, 0, currVal_9, currVal_10); var currVal_13 = i1.ɵnov(_v, 27).role; var currVal_14 = i1.ɵnov(_v, 27)._highlighted; var currVal_15 = i1.ɵnov(_v, 27)._triggersSubmenu; var currVal_16 = i1.ɵnov(_v, 27)._getTabIndex(); var currVal_17 = i1.ɵnov(_v, 27).disabled.toString(); var currVal_18 = (i1.ɵnov(_v, 27).disabled || null); _ck(_v, 26, 0, currVal_13, currVal_14, currVal_15, currVal_16, currVal_17, currVal_18); var currVal_19 = (_co.overallPermission() !== \"edit\"); var currVal_20 = i1.ɵnov(_v, 30).inline; var currVal_21 = (((i1.ɵnov(_v, 30).color !== \"primary\") && (i1.ɵnov(_v, 30).color !== \"accent\")) && (i1.ɵnov(_v, 30).color !== \"warn\")); _ck(_v, 29, 0, currVal_19, currVal_20, currVal_21); var currVal_23 = i1.ɵnov(_v, 45).role; var currVal_24 = i1.ɵnov(_v, 45)._highlighted; var currVal_25 = i1.ɵnov(_v, 45)._triggersSubmenu; var currVal_26 = i1.ɵnov(_v, 45)._getTabIndex(); var currVal_27 = i1.ɵnov(_v, 45).disabled.toString(); var currVal_28 = (i1.ɵnov(_v, 45).disabled || null); _ck(_v, 44, 0, currVal_23, currVal_24, currVal_25, currVal_26, currVal_27, currVal_28); var currVal_29 = (_co.overallPermission() !== \"download\"); var currVal_30 = i1.ɵnov(_v, 48).inline; var currVal_31 = (((i1.ɵnov(_v, 48).color !== \"primary\") && (i1.ɵnov(_v, 48).color !== \"accent\")) && (i1.ɵnov(_v, 48).color !== \"warn\")); _ck(_v, 47, 0, currVal_29, currVal_30, currVal_31); var currVal_33 = i1.ɵnov(_v, 63).role; var currVal_34 = i1.ɵnov(_v, 63)._highlighted; var currVal_35 = i1.ɵnov(_v, 63)._triggersSubmenu; var currVal_36 = i1.ɵnov(_v, 63)._getTabIndex(); var currVal_37 = i1.ɵnov(_v, 63).disabled.toString(); var currVal_38 = (i1.ɵnov(_v, 63).disabled || null); _ck(_v, 62, 0, currVal_33, currVal_34, currVal_35, currVal_36, currVal_37, currVal_38); var currVal_39 = (_co.overallPermission() !== \"view\"); var currVal_40 = i1.ɵnov(_v, 66).inline; var currVal_41 = (((i1.ɵnov(_v, 66).color !== \"primary\") && (i1.ɵnov(_v, 66).color !== \"accent\")) && (i1.ɵnov(_v, 66).color !== \"warn\")); _ck(_v, 65, 0, currVal_39, currVal_40, currVal_41); }); }\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 trans>Can edit</div>\n            <div class=\"description\" trans>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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"close\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i13.View_MatIcon_0, i13.RenderType_MatIcon)), i1.ɵdid(9, 9158656, null, 0, i14.MatIcon, [i1.ElementRef, i14.MatIconRegistry, [8, null], [2, i14.MAT_ICON_LOCATION]], { 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_7 = \"close\"; _ck(_v, 9, 0, currVal_7); }, 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; var currVal_6 = (((i1.ɵnov(_v, 9).color !== \"primary\") && (i1.ɵnov(_v, 9).color !== \"accent\")) && (i1.ɵnov(_v, 9).color !== \"warn\")); _ck(_v, 8, 0, currVal_5, currVal_6); }); }\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 ease}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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"close\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i12.View_MatIcon_0, i12.RenderType_MatIcon)), i1.ɵdid(11, 9158656, null, 0, i13.MatIcon, [i1.ElementRef, i13.MatIconRegistry, [8, null], [2, i13.MAT_ICON_LOCATION]], { 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_k]], { 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_5 = \"close\"; _ck(_v, 11, 0, currVal_5); var currVal_14 = \"\"; _ck(_v, 21, 0, currVal_14); var currVal_15 = \"\"; _ck(_v, 22, 0, currVal_15); var currVal_16 = \"Enter email addresses...\"; var currVal_17 = \"\"; var currVal_18 = \"\"; _ck(_v, 24, 0, currVal_16, currVal_17, currVal_18); var currVal_19 = _co.shareModel.emails; _ck(_v, 26, 0, currVal_19); var currVal_21 = true; _ck(_v, 31, 0, currVal_21); var currVal_22 = 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_22); var currVal_25 = i1.ɵunv(_v, 51, 0, i1.ɵnov(_v, 52).transform(_co.loading$)); _ck(_v, 51, 0, currVal_25); var currVal_26 = ((_co.shareModel.emails.value == null) ? null : _co.shareModel.emails.value.length); _ck(_v, 56, 0, currVal_26); }, 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; var currVal_4 = (((i1.ɵnov(_v, 11).color !== \"primary\") && (i1.ɵnov(_v, 11).color !== \"accent\")) && (i1.ɵnov(_v, 11).color !== \"warn\")); _ck(_v, 10, 0, currVal_3, currVal_4); var currVal_6 = (i1.ɵnov(_v, 21).required ? \"\" : null); var currVal_7 = i1.ɵnov(_v, 28).ngClassUntouched; var currVal_8 = i1.ɵnov(_v, 28).ngClassTouched; var currVal_9 = i1.ɵnov(_v, 28).ngClassPristine; var currVal_10 = i1.ɵnov(_v, 28).ngClassDirty; var currVal_11 = i1.ɵnov(_v, 28).ngClassValid; var currVal_12 = i1.ɵnov(_v, 28).ngClassInvalid; var currVal_13 = i1.ɵnov(_v, 28).ngClassPending; _ck(_v, 20, 0, currVal_6, currVal_7, currVal_8, currVal_9, currVal_10, currVal_11, currVal_12, currVal_13); var currVal_20 = i1.ɵnov(_v, 31).compact; _ck(_v, 30, 0, currVal_20); var currVal_23 = (i1.ɵnov(_v, 51).disabled || null); var currVal_24 = (i1.ɵnov(_v, 51)._animationMode === \"NoopAnimations\"); _ck(_v, 49, 0, currVal_23, currVal_24); }); }\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;border-bottom-right-radius:0;border-top-right-radius:0}share-dialog .emails-container .mat-flat-button{height:54px;border:1px solid #e0e0e0;border-left:none;border-top-left-radius:0;border-bottom-left-radius:0}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 \"../../../../../common/core/translations/translate.pipe\";\nimport * as i7 from \"../../../../../../node_modules/@angular/material/checkbox/typings/index.ngfactory\";\nimport * as i8 from \"@angular/material/checkbox\";\nimport * as i9 from \"@angular/cdk/a11y\";\nimport * as i10 from \"@angular/platform-browser/animations\";\nimport * as i11 from \"@angular/common\";\nimport * as i12 from \"../../../../../../node_modules/@angular/material/button/typings/index.ngfactory\";\nimport * as i13 from \"@angular/material/button\";\nimport * as i14 from \"@angular/cdk/platform\";\nimport * as i15 from \"./link-options.component\";\nimport * as i16 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_k]], { 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, [i1.ɵpid(0, i6.TransPipe, [i4.Translations]), (_l()(), i1.ɵeld(1, 0, null, null, 122, \"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, 3).onSubmit($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"reset\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 3).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(2, 16384, null, 0, i2.ɵangular_packages_forms_forms_bh, [], null, null), i1.ɵdid(3, 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(5, 16384, null, 0, i2.NgControlStatusGroup, [[4, i2.ControlContainer]], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(7, 0, null, null, 103, \"div\", [[\"class\", \"link-options\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(9, 0, null, null, 46, \"div\", [[\"class\", \"link-option\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(11, 0, null, null, 2, \"div\", [[\"class\", \"label\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(12, 4341760, null, 0, i3.TranslateDirective, [i1.ElementRef, i4.Translations, i5.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Link expiration\"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(15, 0, null, null, 39, \"div\", [[\"class\", \"content\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(17, 0, null, null, 7, \"mat-checkbox\", [[\"class\", \"mat-checkbox\"], [\"color\", \"primary\"], [\"trans\", \"\"]], [[8, \"id\", 0], [1, \"tabindex\", 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, i7.View_MatCheckbox_0, i7.RenderType_MatCheckbox)), i1.ɵdid(18, 8568832, null, 0, i8.MatCheckbox, [i1.ElementRef, i1.ChangeDetectorRef, i9.FocusMonitor, i1.NgZone, [8, null], [2, i8.MAT_CHECKBOX_CLICK_ACTION], [2, i10.ANIMATION_MODULE_TYPE]], { color: [0, \"color\"] }, null), i1.ɵprd(1024, null, i2.NG_VALUE_ACCESSOR, function (p0_0) { return [p0_0]; }, [i8.MatCheckbox]), i1.ɵdid(20, 540672, null, 0, i2.FormControlDirective, [[8, null], [8, null], [6, i2.NG_VALUE_ACCESSOR], [2, i2.ɵangular_packages_forms_forms_k]], { form: [0, \"form\"] }, null), i1.ɵprd(2048, null, i2.NgControl, null, [i2.FormControlDirective]), i1.ɵdid(22, 16384, null, 0, i2.NgControlStatus, [[4, i2.NgControl]], null, null), i1.ɵdid(23, 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(26, 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(27, 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(29, 16384, null, 0, i2.NgControlStatusGroup, [[4, i2.ControlContainer]], null, null), (_l()(), i1.ɵted(-1, null, [\"\\n                    \"])), (_l()(), i1.ɵeld(31, 0, null, null, 9, \"div\", [[\"class\", \"date-input-container\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                        \"])), (_l()(), i1.ɵeld(33, 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, 34)._handleInput($event.target.value) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"blur\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 34).onTouched() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"compositionstart\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 34)._compositionStart() !== false);\n        ad = (pd_2 && ad);\n    } if ((\"compositionend\" === en)) {\n        var pd_3 = (i1.ɵnov(_v, 34)._compositionEnd($event.target.value) !== false);\n        ad = (pd_3 && ad);\n    } return ad; }, null, null)), i1.ɵdid(34, 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(36, 671744, null, 0, i2.FormControlName, [[3, i2.ControlContainer], [8, null], [8, null], [6, i2.NG_VALUE_ACCESSOR], [2, i2.ɵangular_packages_forms_forms_k]], { name: [0, \"name\"] }, null), i1.ɵprd(2048, null, i2.NgControl, null, [i2.FormControlName]), i1.ɵdid(38, 16384, null, 0, i2.NgControlStatus, [[4, i2.NgControl]], null, null), i1.ɵdid(39, 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(42, 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, 43)._handleInput($event.target.value) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"blur\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 43).onTouched() !== false);\n        ad = (pd_1 && ad);\n    } if ((\"compositionstart\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 43)._compositionStart() !== false);\n        ad = (pd_2 && ad);\n    } if ((\"compositionend\" === en)) {\n        var pd_3 = (i1.ɵnov(_v, 43)._compositionEnd($event.target.value) !== false);\n        ad = (pd_3 && ad);\n    } return ad; }, null, null)), i1.ɵdid(43, 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(45, 671744, null, 0, i2.FormControlName, [[3, i2.ControlContainer], [8, null], [8, null], [6, i2.NG_VALUE_ACCESSOR], [2, i2.ɵangular_packages_forms_forms_k]], { name: [0, \"name\"] }, null), i1.ɵprd(2048, null, i2.NgControl, null, [i2.FormControlName]), i1.ɵdid(47, 16384, null, 0, i2.NgControlStatus, [[4, i2.NgControl]], null, null), i1.ɵdid(48, 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(52, 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.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(57, 0, null, null, 20, \"div\", [[\"class\", \"link-option\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(59, 0, null, null, 2, \"div\", [[\"class\", \"label\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(60, 4341760, null, 0, i3.TranslateDirective, [i1.ElementRef, i4.Translations, i5.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Password Protect\"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(63, 0, null, null, 13, \"div\", [[\"class\", \"content\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(65, 0, null, null, 7, \"mat-checkbox\", [[\"class\", \"mat-checkbox\"], [\"color\", \"primary\"], [\"trans\", \"\"]], [[8, \"id\", 0], [1, \"tabindex\", 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, i7.View_MatCheckbox_0, i7.RenderType_MatCheckbox)), i1.ɵdid(66, 8568832, null, 0, i8.MatCheckbox, [i1.ElementRef, i1.ChangeDetectorRef, i9.FocusMonitor, i1.NgZone, [8, null], [2, i8.MAT_CHECKBOX_CLICK_ACTION], [2, i10.ANIMATION_MODULE_TYPE]], { color: [0, \"color\"] }, null), i1.ɵprd(1024, null, i2.NG_VALUE_ACCESSOR, function (p0_0) { return [p0_0]; }, [i8.MatCheckbox]), i1.ɵdid(68, 540672, null, 0, i2.FormControlDirective, [[8, null], [8, null], [6, i2.NG_VALUE_ACCESSOR], [2, i2.ɵangular_packages_forms_forms_k]], { form: [0, \"form\"] }, null), i1.ɵprd(2048, null, i2.NgControl, null, [i2.FormControlDirective]), i1.ɵdid(70, 16384, null, 0, i2.NgControlStatus, [[4, i2.NgControl]], null, null), i1.ɵdid(71, 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(75, 16384, null, 0, i11.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(79, 0, null, null, 14, \"div\", [[\"class\", \"link-option\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(81, 0, null, null, 2, \"div\", [[\"class\", \"label\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(82, 4341760, null, 0, i3.TranslateDirective, [i1.ElementRef, i4.Translations, i5.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Allow editing\"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(85, 0, null, null, 7, \"mat-checkbox\", [[\"class\", \"mat-checkbox\"], [\"color\", \"primary\"], [\"formControlName\", \"allowEdit\"], [\"trans\", \"\"]], [[8, \"id\", 0], [1, \"tabindex\", 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, i7.View_MatCheckbox_0, i7.RenderType_MatCheckbox)), i1.ɵdid(86, 8568832, null, 0, i8.MatCheckbox, [i1.ElementRef, i1.ChangeDetectorRef, i9.FocusMonitor, i1.NgZone, [8, null], [2, i8.MAT_CHECKBOX_CLICK_ACTION], [2, i10.ANIMATION_MODULE_TYPE]], { color: [0, \"color\"] }, null), i1.ɵprd(1024, null, i2.NG_VALUE_ACCESSOR, function (p0_0) { return [p0_0]; }, [i8.MatCheckbox]), i1.ɵdid(88, 671744, null, 0, i2.FormControlName, [[3, i2.ControlContainer], [8, null], [8, null], [6, i2.NG_VALUE_ACCESSOR], [2, i2.ɵangular_packages_forms_forms_k]], { name: [0, \"name\"] }, null), i1.ɵprd(2048, null, i2.NgControl, null, [i2.FormControlName]), i1.ɵdid(90, 16384, null, 0, i2.NgControlStatus, [[4, i2.NgControl]], null, null), i1.ɵdid(91, 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(95, 0, null, null, 14, \"div\", [[\"class\", \"link-option\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(97, 0, null, null, 2, \"div\", [[\"class\", \"label\"], [\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(98, 4341760, null, 0, i3.TranslateDirective, [i1.ElementRef, i4.Translations, i5.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Allow download\"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(101, 0, null, null, 7, \"mat-checkbox\", [[\"class\", \"mat-checkbox\"], [\"color\", \"primary\"], [\"formControlName\", \"allowDownload\"], [\"trans\", \"\"]], [[8, \"id\", 0], [1, \"tabindex\", 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, i7.View_MatCheckbox_0, i7.RenderType_MatCheckbox)), i1.ɵdid(102, 8568832, null, 0, i8.MatCheckbox, [i1.ElementRef, i1.ChangeDetectorRef, i9.FocusMonitor, i1.NgZone, [8, null], [2, i8.MAT_CHECKBOX_CLICK_ACTION], [2, i10.ANIMATION_MODULE_TYPE]], { color: [0, \"color\"] }, null), i1.ɵprd(1024, null, i2.NG_VALUE_ACCESSOR, function (p0_0) { return [p0_0]; }, [i8.MatCheckbox]), i1.ɵdid(104, 671744, null, 0, i2.FormControlName, [[3, i2.ControlContainer], [8, null], [8, null], [6, i2.NG_VALUE_ACCESSOR], [2, i2.ɵangular_packages_forms_forms_k]], { name: [0, \"name\"] }, null), i1.ɵprd(2048, null, i2.NgControl, null, [i2.FormControlName]), i1.ɵdid(106, 16384, null, 0, i2.NgControlStatus, [[4, i2.NgControl]], null, null), i1.ɵdid(107, 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(112, 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; }, i12.View_MatButton_0, i12.RenderType_MatButton)), i1.ɵdid(113, 4341760, null, 0, i3.TranslateDirective, [i1.ElementRef, i4.Translations, i5.Settings], null, null), i1.ɵdid(114, 180224, null, 0, i13.MatButton, [i1.ElementRef, i14.Platform, i9.FocusMonitor, [2, i10.ANIMATION_MODULE_TYPE]], null, null), (_l()(), i1.ɵted(-1, 0, [\"Cancel\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\\n    \"])), (_l()(), i1.ɵeld(117, 0, null, null, 5, \"button\", [[\"class\", \"update-button\"], [\"color\", \"primary\"], [\"mat-raised-button\", \"\"], [\"type\", \"submit\"]], [[8, \"disabled\", 0], [2, \"_mat-animation-noopable\", null]], null, null, i12.View_MatButton_0, i12.RenderType_MatButton)), i1.ɵdid(118, 180224, null, 0, i13.MatButton, [i1.ElementRef, i14.Platform, i9.FocusMonitor, [2, i10.ANIMATION_MODULE_TYPE]], { disabled: [0, \"disabled\"], color: [1, \"color\"] }, null), i1.ɵpid(131072, i11.AsyncPipe, [i1.ChangeDetectorRef]), (_l()(), i1.ɵted(120, 0, [\"\\n        \", \"\\n    \"])), i1.ɵpid(131072, i11.AsyncPipe, [i1.ChangeDetectorRef]), i1.ɵppd(122, 1), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], function (_ck, _v) { var _co = _v.component; var currVal_7 = _co.form; _ck(_v, 3, 0, currVal_7); var currVal_22 = \"primary\"; _ck(_v, 18, 0, currVal_22); var currVal_23 = _co.expirationVisible; _ck(_v, 20, 0, currVal_23); var currVal_32 = \"expiresAt\"; _ck(_v, 27, 0, currVal_32); var currVal_41 = \"date\"; _ck(_v, 36, 0, currVal_41); var currVal_49 = \"time\"; _ck(_v, 45, 0, currVal_49); var tmp_50_0 = null; var currVal_50 = (((tmp_50_0 = i1.ɵunv(_v, 52, 0, i1.ɵnov(_v, 53).transform(_co.backendErrors$))) == null) ? null : tmp_50_0.expiresAt); _ck(_v, 52, 0, currVal_50); var currVal_65 = \"primary\"; _ck(_v, 66, 0, currVal_65); var currVal_66 = _co.passwordVisible; _ck(_v, 68, 0, currVal_66); var currVal_67 = _co.passwordVisible.value; _ck(_v, 75, 0, currVal_67); var currVal_82 = \"primary\"; _ck(_v, 86, 0, currVal_82); var currVal_83 = \"allowEdit\"; _ck(_v, 88, 0, currVal_83); var currVal_98 = \"primary\"; _ck(_v, 102, 0, currVal_98); var currVal_99 = \"allowDownload\"; _ck(_v, 104, 0, currVal_99); var currVal_104 = i1.ɵunv(_v, 118, 0, i1.ɵnov(_v, 119).transform(_co.loading$)); var currVal_105 = \"primary\"; _ck(_v, 118, 0, currVal_104, currVal_105); }, function (_ck, _v) { var _co = _v.component; var currVal_0 = i1.ɵnov(_v, 5).ngClassUntouched; var currVal_1 = i1.ɵnov(_v, 5).ngClassTouched; var currVal_2 = i1.ɵnov(_v, 5).ngClassPristine; var currVal_3 = i1.ɵnov(_v, 5).ngClassDirty; var currVal_4 = i1.ɵnov(_v, 5).ngClassValid; var currVal_5 = i1.ɵnov(_v, 5).ngClassInvalid; var currVal_6 = i1.ɵnov(_v, 5).ngClassPending; _ck(_v, 1, 0, currVal_0, currVal_1, currVal_2, currVal_3, currVal_4, currVal_5, currVal_6); var currVal_8 = i1.ɵnov(_v, 18).id; var currVal_9 = null; var currVal_10 = i1.ɵnov(_v, 18).indeterminate; var currVal_11 = i1.ɵnov(_v, 18).checked; var currVal_12 = i1.ɵnov(_v, 18).disabled; var currVal_13 = (i1.ɵnov(_v, 18).labelPosition == \"before\"); var currVal_14 = (i1.ɵnov(_v, 18)._animationMode === \"NoopAnimations\"); var currVal_15 = i1.ɵnov(_v, 22).ngClassUntouched; var currVal_16 = i1.ɵnov(_v, 22).ngClassTouched; var currVal_17 = i1.ɵnov(_v, 22).ngClassPristine; var currVal_18 = i1.ɵnov(_v, 22).ngClassDirty; var currVal_19 = i1.ɵnov(_v, 22).ngClassValid; var currVal_20 = i1.ɵnov(_v, 22).ngClassInvalid; var currVal_21 = i1.ɵnov(_v, 22).ngClassPending; _ck(_v, 17, 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, currVal_21]); var currVal_24 = !_co.expirationVisible.value; var currVal_25 = i1.ɵnov(_v, 29).ngClassUntouched; var currVal_26 = i1.ɵnov(_v, 29).ngClassTouched; var currVal_27 = i1.ɵnov(_v, 29).ngClassPristine; var currVal_28 = i1.ɵnov(_v, 29).ngClassDirty; var currVal_29 = i1.ɵnov(_v, 29).ngClassValid; var currVal_30 = i1.ɵnov(_v, 29).ngClassInvalid; var currVal_31 = i1.ɵnov(_v, 29).ngClassPending; _ck(_v, 26, 0, currVal_24, currVal_25, currVal_26, currVal_27, currVal_28, currVal_29, currVal_30, currVal_31); var currVal_33 = _co.getMinDate(); var currVal_34 = i1.ɵnov(_v, 38).ngClassUntouched; var currVal_35 = i1.ɵnov(_v, 38).ngClassTouched; var currVal_36 = i1.ɵnov(_v, 38).ngClassPristine; var currVal_37 = i1.ɵnov(_v, 38).ngClassDirty; var currVal_38 = i1.ɵnov(_v, 38).ngClassValid; var currVal_39 = i1.ɵnov(_v, 38).ngClassInvalid; var currVal_40 = i1.ɵnov(_v, 38).ngClassPending; _ck(_v, 33, 0, currVal_33, currVal_34, currVal_35, currVal_36, currVal_37, currVal_38, currVal_39, currVal_40); var currVal_42 = i1.ɵnov(_v, 47).ngClassUntouched; var currVal_43 = i1.ɵnov(_v, 47).ngClassTouched; var currVal_44 = i1.ɵnov(_v, 47).ngClassPristine; var currVal_45 = i1.ɵnov(_v, 47).ngClassDirty; var currVal_46 = i1.ɵnov(_v, 47).ngClassValid; var currVal_47 = i1.ɵnov(_v, 47).ngClassInvalid; var currVal_48 = i1.ɵnov(_v, 47).ngClassPending; _ck(_v, 42, 0, currVal_42, currVal_43, currVal_44, currVal_45, currVal_46, currVal_47, currVal_48); var currVal_51 = i1.ɵnov(_v, 66).id; var currVal_52 = null; var currVal_53 = i1.ɵnov(_v, 66).indeterminate; var currVal_54 = i1.ɵnov(_v, 66).checked; var currVal_55 = i1.ɵnov(_v, 66).disabled; var currVal_56 = (i1.ɵnov(_v, 66).labelPosition == \"before\"); var currVal_57 = (i1.ɵnov(_v, 66)._animationMode === \"NoopAnimations\"); var currVal_58 = i1.ɵnov(_v, 70).ngClassUntouched; var currVal_59 = i1.ɵnov(_v, 70).ngClassTouched; var currVal_60 = i1.ɵnov(_v, 70).ngClassPristine; var currVal_61 = i1.ɵnov(_v, 70).ngClassDirty; var currVal_62 = i1.ɵnov(_v, 70).ngClassValid; var currVal_63 = i1.ɵnov(_v, 70).ngClassInvalid; var currVal_64 = i1.ɵnov(_v, 70).ngClassPending; _ck(_v, 65, 1, [currVal_51, currVal_52, currVal_53, currVal_54, currVal_55, currVal_56, currVal_57, currVal_58, currVal_59, currVal_60, currVal_61, currVal_62, currVal_63, currVal_64]); var currVal_68 = i1.ɵnov(_v, 86).id; var currVal_69 = null; var currVal_70 = i1.ɵnov(_v, 86).indeterminate; var currVal_71 = i1.ɵnov(_v, 86).checked; var currVal_72 = i1.ɵnov(_v, 86).disabled; var currVal_73 = (i1.ɵnov(_v, 86).labelPosition == \"before\"); var currVal_74 = (i1.ɵnov(_v, 86)._animationMode === \"NoopAnimations\"); var currVal_75 = i1.ɵnov(_v, 90).ngClassUntouched; var currVal_76 = i1.ɵnov(_v, 90).ngClassTouched; var currVal_77 = i1.ɵnov(_v, 90).ngClassPristine; var currVal_78 = i1.ɵnov(_v, 90).ngClassDirty; var currVal_79 = i1.ɵnov(_v, 90).ngClassValid; var currVal_80 = i1.ɵnov(_v, 90).ngClassInvalid; var currVal_81 = i1.ɵnov(_v, 90).ngClassPending; _ck(_v, 85, 1, [currVal_68, currVal_69, currVal_70, currVal_71, currVal_72, currVal_73, currVal_74, currVal_75, currVal_76, currVal_77, currVal_78, currVal_79, currVal_80, currVal_81]); var currVal_84 = i1.ɵnov(_v, 102).id; var currVal_85 = null; var currVal_86 = i1.ɵnov(_v, 102).indeterminate; var currVal_87 = i1.ɵnov(_v, 102).checked; var currVal_88 = i1.ɵnov(_v, 102).disabled; var currVal_89 = (i1.ɵnov(_v, 102).labelPosition == \"before\"); var currVal_90 = (i1.ɵnov(_v, 102)._animationMode === \"NoopAnimations\"); var currVal_91 = i1.ɵnov(_v, 106).ngClassUntouched; var currVal_92 = i1.ɵnov(_v, 106).ngClassTouched; var currVal_93 = i1.ɵnov(_v, 106).ngClassPristine; var currVal_94 = i1.ɵnov(_v, 106).ngClassDirty; var currVal_95 = i1.ɵnov(_v, 106).ngClassValid; var currVal_96 = i1.ɵnov(_v, 106).ngClassInvalid; var currVal_97 = i1.ɵnov(_v, 106).ngClassPending; _ck(_v, 101, 1, [currVal_84, currVal_85, currVal_86, currVal_87, currVal_88, currVal_89, currVal_90, currVal_91, currVal_92, currVal_93, currVal_94, currVal_95, currVal_96, currVal_97]); var currVal_100 = (i1.ɵnov(_v, 114).disabled || null); var currVal_101 = (i1.ɵnov(_v, 114)._animationMode === \"NoopAnimations\"); _ck(_v, 112, 0, currVal_100, currVal_101); var currVal_102 = (i1.ɵnov(_v, 118).disabled || null); var currVal_103 = (i1.ɵnov(_v, 118)._animationMode === \"NoopAnimations\"); _ck(_v, 117, 0, currVal_102, currVal_103); var currVal_106 = i1.ɵunv(_v, 120, 0, _ck(_v, 122, 0, i1.ɵnov(_v, 0), (i1.ɵunv(_v, 120, 0, i1.ɵnov(_v, 121).transform(_co.link$)) ? \"Update Link\" : \"Create Link\"))); _ck(_v, 120, 0, currVal_106); }); }\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, i15.LinkOptionsComponent, [i16.Store], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, null); }\nvar LinkOptionsComponentNgFactory = i1.ɵccf(\"link-options\", i15.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\" trans>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\" trans>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\" trans>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\" trans>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\">\n        {{ ((link$ | async) ? 'Update Link' : 'Create Link') | trans }}\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: \"*\", opacity: \"1\", overflow: \"*\" }, offset: null }, options: undefined }, { type: 0, name: \"false\", styles: { type: 6, styles: { height: \"0\", padding: \"0\", opacity: \"0\", 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, 2, \"span\", [[\"trans\", \"\"]], null, null, null, null, null)), i1.ɵdid(7, 4341760, null, 0, i2.TranslateDirective, [i1.ElementRef, i3.Translations, i4.Settings], null, null), (_l()(), i1.ɵted(-1, null, [\"Link sharing is\"])), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(10, 0, null, null, 4, \"span\", [[\"class\", \"state on\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n                \"])), (_l()(), i1.ɵeld(12, 0, null, null, 1, \"button\", [[\"class\", \"on-text text no-style\"]], 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)), (_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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"delete\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i10.View_MatIcon_0, i10.RenderType_MatIcon)), i1.ɵdid(23, 9158656, null, 0, i11.MatIcon, [i1.ElementRef, i11.MatIconRegistry, [8, null], [2, i11.MAT_ICON_LOCATION]], { 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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"settings\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i10.View_MatIcon_0, i10.RenderType_MatIcon)), i1.ɵdid(30, 9158656, null, 0, i11.MatIcon, [i1.ElementRef, i11.MatIconRegistry, [8, null], [2, i11.MAT_ICON_LOCATION]], { 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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"facebook-custom\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i10.View_MatIcon_0, i10.RenderType_MatIcon)), i1.ɵdid(54, 9158656, null, 0, i11.MatIcon, [i1.ElementRef, i11.MatIconRegistry, [8, null], [2, i11.MAT_ICON_LOCATION]], { 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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"google-custom\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i10.View_MatIcon_0, i10.RenderType_MatIcon)), i1.ɵdid(61, 9158656, null, 0, i11.MatIcon, [i1.ElementRef, i11.MatIconRegistry, [8, null], [2, i11.MAT_ICON_LOCATION]], { 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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"twitter-custom\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i10.View_MatIcon_0, i10.RenderType_MatIcon)), i1.ɵdid(68, 9158656, null, 0, i11.MatIcon, [i1.ElementRef, i11.MatIconRegistry, [8, null], [2, i11.MAT_ICON_LOCATION]], { 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_4 = \"delete\"; _ck(_v, 23, 0, currVal_4); var currVal_9 = \"settings\"; _ck(_v, 30, 0, currVal_9); var currVal_13 = \"primary\"; _ck(_v, 44, 0, currVal_13); var currVal_18 = \"facebook-custom\"; _ck(_v, 54, 0, currVal_18); var currVal_23 = \"google-custom\"; _ck(_v, 61, 0, currVal_23); var currVal_28 = \"twitter-custom\"; _ck(_v, 68, 0, currVal_28); }, 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; var currVal_3 = (((i1.ɵnov(_v, 23).color !== \"primary\") && (i1.ɵnov(_v, 23).color !== \"accent\")) && (i1.ɵnov(_v, 23).color !== \"warn\")); _ck(_v, 22, 0, currVal_2, currVal_3); var currVal_5 = (i1.ɵnov(_v, 27).disabled || null); var currVal_6 = (i1.ɵnov(_v, 27)._animationMode === \"NoopAnimations\"); _ck(_v, 26, 0, currVal_5, currVal_6); var currVal_7 = i1.ɵnov(_v, 30).inline; var currVal_8 = (((i1.ɵnov(_v, 30).color !== \"primary\") && (i1.ɵnov(_v, 30).color !== \"accent\")) && (i1.ɵnov(_v, 30).color !== \"warn\")); _ck(_v, 29, 0, currVal_7, currVal_8); var currVal_10 = i1.ɵunv(_v, 39, 0, i1.ɵnov(_v, 40).transform(_co.shareableLink$)); _ck(_v, 39, 0, currVal_10); var currVal_11 = (i1.ɵnov(_v, 44).disabled || null); var currVal_12 = (i1.ɵnov(_v, 44)._animationMode === \"NoopAnimations\"); _ck(_v, 42, 0, currVal_11, currVal_12); var currVal_14 = (i1.ɵnov(_v, 51).disabled || null); var currVal_15 = (i1.ɵnov(_v, 51)._animationMode === \"NoopAnimations\"); _ck(_v, 50, 0, currVal_14, currVal_15); var currVal_16 = i1.ɵnov(_v, 54).inline; var currVal_17 = (((i1.ɵnov(_v, 54).color !== \"primary\") && (i1.ɵnov(_v, 54).color !== \"accent\")) && (i1.ɵnov(_v, 54).color !== \"warn\")); _ck(_v, 53, 0, currVal_16, currVal_17); var currVal_19 = (i1.ɵnov(_v, 58).disabled || null); var currVal_20 = (i1.ɵnov(_v, 58)._animationMode === \"NoopAnimations\"); _ck(_v, 57, 0, currVal_19, currVal_20); var currVal_21 = i1.ɵnov(_v, 61).inline; var currVal_22 = (((i1.ɵnov(_v, 61).color !== \"primary\") && (i1.ɵnov(_v, 61).color !== \"accent\")) && (i1.ɵnov(_v, 61).color !== \"warn\")); _ck(_v, 60, 0, currVal_21, currVal_22); var currVal_24 = (i1.ɵnov(_v, 65).disabled || null); var currVal_25 = (i1.ɵnov(_v, 65)._animationMode === \"NoopAnimations\"); _ck(_v, 64, 0, currVal_24, currVal_25); var currVal_26 = i1.ɵnov(_v, 68).inline; var currVal_27 = (((i1.ɵnov(_v, 68).color !== \"primary\") && (i1.ɵnov(_v, 68).color !== \"accent\")) && (i1.ɵnov(_v, 68).color !== \"warn\")); _ck(_v, 67, 0, currVal_26, currVal_27); }); }\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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"close\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i10.View_MatIcon_0, i10.RenderType_MatIcon)), i1.ɵdid(11, 9158656, null, 0, i11.MatIcon, [i1.ElementRef, i11.MatIconRegistry, [8, null], [2, i11.MAT_ICON_LOCATION]], { 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-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_5 = \"close\"; _ck(_v, 11, 0, currVal_5); var currVal_6 = i1.ɵunv(_v, 19, 0, i1.ɵnov(_v, 20).transform(_co.link$)); _ck(_v, 19, 0, currVal_6); _ck(_v, 23, 0); var currVal_9 = i1.ɵunv(_v, 27, 0, i1.ɵnov(_v, 28).transform(_co.loading$)); _ck(_v, 27, 0, currVal_9); var currVal_12 = i1.ɵunv(_v, 36, 0, i1.ɵnov(_v, 37).transform(_co.loading$)); _ck(_v, 36, 0, currVal_12); }, 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; var currVal_4 = (((i1.ɵnov(_v, 11).color !== \"primary\") && (i1.ɵnov(_v, 11).color !== \"accent\")) && (i1.ɵnov(_v, 11).color !== \"warn\")); _ck(_v, 10, 0, currVal_3, currVal_4); var currVal_7 = i1.ɵunv(_v, 22, 0, i1.ɵnov(_v, 24).transform(_co.optionsVisible$)); _ck(_v, 22, 0, currVal_7); var currVal_8 = i1.ɵnov(_v, 27).isVisible; _ck(_v, 26, 0, currVal_8); var currVal_10 = (i1.ɵnov(_v, 36).disabled || null); var currVal_11 = (i1.ɵnov(_v, 36)._animationMode === \"NoopAnimations\"); _ck(_v, 34, 0, currVal_10, currVal_11); }); }\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;border-top-left-radius:0;border-bottom-left-radius:0}share-link-dialog .mat-dialog-content{min-height:144px}share-link-dialog .social-icons{margin-bottom:10px}share-link-dialog loading-indicator{top:0;left:0;bottom:0;right:0;margin:auto}\"];\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 trans>Link sharing is</span>\n                <span class=\"state on\">\n                <button class=\"on-text text no-style\" (click)=\"deleteLink()\">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-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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"close\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i11.View_MatIcon_0, i11.RenderType_MatIcon)), i1.ɵdid(11, 9158656, null, 0, i12.MatIcon, [i1.ElementRef, i12.MatIconRegistry, [8, null], [2, i12.MAT_ICON_LOCATION]], { 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_k]], { 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_5 = \"close\"; _ck(_v, 11, 0, currVal_5); var currVal_21 = \"\"; _ck(_v, 27, 0, currVal_21); var currVal_22 = _co.folderName; _ck(_v, 30, 0, currVal_22); var currVal_23 = _co.errors.name; _ck(_v, 36, 0, currVal_23); var currVal_28 = i1.ɵunv(_v, 50, 0, i1.ɵnov(_v, 51).transform(_co.loading)); var currVal_29 = \"primary\"; _ck(_v, 50, 0, currVal_28, currVal_29); }, 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; var currVal_4 = (((i1.ɵnov(_v, 11).color !== \"primary\") && (i1.ɵnov(_v, 11).color !== \"accent\")) && (i1.ɵnov(_v, 11).color !== \"warn\")); _ck(_v, 10, 0, currVal_3, currVal_4); var currVal_6 = i1.ɵnov(_v, 18).ngClassUntouched; var currVal_7 = i1.ɵnov(_v, 18).ngClassTouched; var currVal_8 = i1.ɵnov(_v, 18).ngClassPristine; var currVal_9 = i1.ɵnov(_v, 18).ngClassDirty; var currVal_10 = i1.ɵnov(_v, 18).ngClassValid; var currVal_11 = i1.ɵnov(_v, 18).ngClassInvalid; var currVal_12 = i1.ɵnov(_v, 18).ngClassPending; _ck(_v, 15, 0, currVal_6, currVal_7, currVal_8, currVal_9, currVal_10, currVal_11, currVal_12); var currVal_13 = (i1.ɵnov(_v, 27).required ? \"\" : null); var currVal_14 = i1.ɵnov(_v, 32).ngClassUntouched; var currVal_15 = i1.ɵnov(_v, 32).ngClassTouched; var currVal_16 = i1.ɵnov(_v, 32).ngClassPristine; var currVal_17 = i1.ɵnov(_v, 32).ngClassDirty; var currVal_18 = i1.ɵnov(_v, 32).ngClassValid; var currVal_19 = i1.ɵnov(_v, 32).ngClassInvalid; var currVal_20 = i1.ɵnov(_v, 32).ngClassPending; _ck(_v, 25, 0, currVal_13, currVal_14, currVal_15, currVal_16, currVal_17, currVal_18, currVal_19, currVal_20); var currVal_24 = (i1.ɵnov(_v, 45).disabled || null); var currVal_25 = (i1.ɵnov(_v, 45)._animationMode === \"NoopAnimations\"); _ck(_v, 43, 0, currVal_24, currVal_25); var currVal_26 = (i1.ɵnov(_v, 50).disabled || null); var currVal_27 = (i1.ɵnov(_v, 50)._animationMode === \"NoopAnimations\"); _ck(_v, 48, 0, currVal_26, currVal_27); }); }\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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"close\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i11.View_MatIcon_0, i11.RenderType_MatIcon)), i1.ɵdid(11, 9158656, null, 0, i12.MatIcon, [i1.ElementRef, i12.MatIconRegistry, [8, null], [2, i12.MAT_ICON_LOCATION]], { 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_k]], { 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_5 = \"close\"; _ck(_v, 11, 0, currVal_5); var currVal_21 = \"\"; _ck(_v, 27, 0, currVal_21); var currVal_22 = _co.entryName; _ck(_v, 30, 0, currVal_22); var currVal_23 = _co.errors.name; _ck(_v, 36, 0, currVal_23); var currVal_28 = i1.ɵunv(_v, 50, 0, i1.ɵnov(_v, 51).transform(_co.loading)); var currVal_29 = \"accent\"; _ck(_v, 50, 0, currVal_28, currVal_29); }, 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; var currVal_4 = (((i1.ɵnov(_v, 11).color !== \"primary\") && (i1.ɵnov(_v, 11).color !== \"accent\")) && (i1.ɵnov(_v, 11).color !== \"warn\")); _ck(_v, 10, 0, currVal_3, currVal_4); var currVal_6 = i1.ɵnov(_v, 18).ngClassUntouched; var currVal_7 = i1.ɵnov(_v, 18).ngClassTouched; var currVal_8 = i1.ɵnov(_v, 18).ngClassPristine; var currVal_9 = i1.ɵnov(_v, 18).ngClassDirty; var currVal_10 = i1.ɵnov(_v, 18).ngClassValid; var currVal_11 = i1.ɵnov(_v, 18).ngClassInvalid; var currVal_12 = i1.ɵnov(_v, 18).ngClassPending; _ck(_v, 15, 0, currVal_6, currVal_7, currVal_8, currVal_9, currVal_10, currVal_11, currVal_12); var currVal_13 = (i1.ɵnov(_v, 27).required ? \"\" : null); var currVal_14 = i1.ɵnov(_v, 32).ngClassUntouched; var currVal_15 = i1.ɵnov(_v, 32).ngClassTouched; var currVal_16 = i1.ɵnov(_v, 32).ngClassPristine; var currVal_17 = i1.ɵnov(_v, 32).ngClassDirty; var currVal_18 = i1.ɵnov(_v, 32).ngClassValid; var currVal_19 = i1.ɵnov(_v, 32).ngClassInvalid; var currVal_20 = i1.ɵnov(_v, 32).ngClassPending; _ck(_v, 25, 0, currVal_13, currVal_14, currVal_15, currVal_16, currVal_17, currVal_18, currVal_19, currVal_20); var currVal_24 = (i1.ɵnov(_v, 45).disabled || null); var currVal_25 = (i1.ɵnov(_v, 45)._animationMode === \"NoopAnimations\"); _ck(_v, 43, 0, currVal_24, currVal_25); var currVal_26 = (i1.ɵnov(_v, 50).disabled || null); var currVal_27 = (i1.ɵnov(_v, 50)._animationMode === \"NoopAnimations\"); _ck(_v, 48, 0, currVal_26, currVal_27); }); }\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/platform-browser\";\nimport * as i13 from \"@angular/material/icon\";\nimport * as i14 from \"@angular/common\";\nimport * as i15 from \"../../../files/components/file-icon/file-icon.component.ngfactory\";\nimport * as i16 from \"../../../files/components/file-icon/file-icon.component\";\nimport * as i17 from \"../../../../../../node_modules/@angular/material/progress-bar/typings/index.ngfactory\";\nimport * as i18 from \"@angular/material/progress-bar\";\nimport * as i19 from \"@angular/platform-browser/animations\";\nimport * as i20 from \"../../../../../common/core/translations/translate.pipe\";\nimport * as i21 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 notranslate\"], [\"matTooltipPosition\", \"left\"], [\"role\", \"img\"], [\"svgIcon\", \"error\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", 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], [2, i12.HAMMER_LOADER]], { position: [0, \"position\"], disabled: [1, \"disabled\"], message: [2, \"message\"] }, null), i1.ɵppd(2, 1), i1.ɵdid(3, 9158656, null, 0, i13.MatIcon, [i1.ElementRef, i13.MatIconRegistry, [8, null], [2, i13.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵand(0, null, null, 0))], function (_ck, _v) { var currVal_2 = \"left\"; var currVal_3 = !_v.parent.context.ngIf.error; var currVal_4 = 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_2, currVal_3, currVal_4); var currVal_5 = \"error\"; _ck(_v, 3, 0, currVal_5); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 3).inline; var currVal_1 = (((i1.ɵnov(_v, 3).color !== \"primary\") && (i1.ɵnov(_v, 3).color !== \"accent\")) && (i1.ɵnov(_v, 3).color !== \"warn\")); _ck(_v, 0, 0, currVal_0, currVal_1); }); }\nfunction View_UploadsPanelItemComponent_5(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"mat-icon\", [[\"class\", \"completed-icon mat-icon notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"check-circle\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i5.View_MatIcon_0, i5.RenderType_MatIcon)), i1.ɵdid(1, 9158656, null, 0, i13.MatIcon, [i1.ElementRef, i13.MatIconRegistry, [8, null], [2, i13.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null)], function (_ck, _v) { var currVal_2 = \"check-circle\"; _ck(_v, 1, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 1).inline; var currVal_1 = (((i1.ɵnov(_v, 1).color !== \"primary\") && (i1.ɵnov(_v, 1).color !== \"accent\")) && (i1.ɵnov(_v, 1).color !== \"warn\")); _ck(_v, 0, 0, currVal_0, currVal_1); }); }\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, i14.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, i14.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, 28, 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, i15.View_FileIconComponent_0, i15.RenderType_FileIconComponent)), i1.ɵdid(3, 573440, null, 0, i16.FileIconComponent, [], { type: [0, \"type\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(5, 0, null, null, 22, \"div\", [[\"class\", \"content\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), (_l()(), i1.ɵeld(7, 0, null, null, 16, \"div\", [[\"class\", \"meta\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(9, 16777216, null, null, 2, \"div\", [[\"class\", \"name\"]], null, [[null, \"longpress\"], [null, \"keydown\"], [null, \"touchend\"]], function (_v, en, $event) { var ad = true; if ((\"longpress\" === en)) {\n        var pd_0 = (i1.ɵnov(_v, 10).show() !== false);\n        ad = (pd_0 && ad);\n    } if ((\"keydown\" === en)) {\n        var pd_1 = (i1.ɵnov(_v, 10)._handleKeydown($event) !== false);\n        ad = (pd_1 && ad);\n    } if ((\"touchend\" === en)) {\n        var pd_2 = (i1.ɵnov(_v, 10)._handleTouchend() !== false);\n        ad = (pd_2 && ad);\n    } return ad; }, null, null)), i1.ɵdid(10, 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], [2, i12.HAMMER_LOADER]], { message: [0, \"message\"] }, null), (_l()(), i1.ɵted(11, null, [\"\", \"\"])), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵand(16777216, null, null, 1, null, View_UploadsPanelItemComponent_2)), i1.ɵdid(14, 16384, null, 0, i14.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n            \"])), (_l()(), i1.ɵeld(16, 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(19, 16384, null, 0, i14.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(25, 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, i17.View_MatProgressBar_0, i17.RenderType_MatProgressBar)), i1.ɵdid(26, 4374528, null, 0, i18.MatProgressBar, [i1.ElementRef, i1.NgZone, [2, i19.ANIMATION_MODULE_TYPE], [2, i18.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_1 = _co.upload.filename; _ck(_v, 10, 0, currVal_1); var currVal_3 = (!_co.upload.completed && !_co.upload.pending); _ck(_v, 14, 0, currVal_3); var currVal_4 = _co.upload.hasError; var currVal_5 = i1.ɵnov(_v, 21); _ck(_v, 19, 0, currVal_4, currVal_5); var currVal_9 = _v.context.ngIf.progress; var currVal_10 = \"determinate\"; _ck(_v, 26, 0, currVal_9, currVal_10); }, function (_ck, _v) { var _co = _v.component; var currVal_2 = _co.upload.filename; _ck(_v, 11, 0, currVal_2); var currVal_6 = i1.ɵnov(_v, 26).value; var currVal_7 = i1.ɵnov(_v, 26).mode; var currVal_8 = i1.ɵnov(_v, 26)._isNoopAnimation; _ck(_v, 25, 0, currVal_6, currVal_7, currVal_8); }); }\nexport function View_UploadsPanelItemComponent_0(_l) { return i1.ɵvid(2, [i1.ɵpid(0, i20.TransPipe, [i3.Translations]), (_l()(), i1.ɵand(16777216, null, null, 2, null, View_UploadsPanelItemComponent_1)), i1.ɵdid(2, 16384, null, 0, i14.NgIf, [i1.ViewContainerRef, i1.TemplateRef], { ngIf: [0, \"ngIf\"] }, null), i1.ɵpid(131072, i14.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, i21.UploadsPanelItemComponent, [], null, null)], null, null); }\nvar UploadsPanelItemComponentNgFactory = i1.ɵccf(\"uploads-panel-item\", i21.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 .mat-progress-bar .mat-progress-bar-fill{transition:-webkit-transform 130ms ease;transition:transform 130ms ease;transition:transform 130ms ease,-webkit-transform 130ms ease}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\" [matTooltip]=\"upload.filename\">{{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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"keyboard-arrow-up\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i6.View_MatIcon_0, i6.RenderType_MatIcon)), i1.ɵdid(1, 9158656, null, 0, i7.MatIcon, [i1.ElementRef, i7.MatIconRegistry, [8, null], [2, i7.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null)], function (_ck, _v) { var currVal_2 = \"keyboard-arrow-up\"; _ck(_v, 1, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 1).inline; var currVal_1 = (((i1.ɵnov(_v, 1).color !== \"primary\") && (i1.ɵnov(_v, 1).color !== \"accent\")) && (i1.ɵnov(_v, 1).color !== \"warn\")); _ck(_v, 0, 0, currVal_0, currVal_1); }); }\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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"keyboard-arrow-down\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i6.View_MatIcon_0, i6.RenderType_MatIcon)), i1.ɵdid(2, 9158656, null, 0, i7.MatIcon, [i1.ElementRef, i7.MatIconRegistry, [8, null], [2, i7.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, null, [\"\\n            \"]))], function (_ck, _v) { var currVal_2 = \"keyboard-arrow-down\"; _ck(_v, 2, 0, currVal_2); }, function (_ck, _v) { var currVal_0 = i1.ɵnov(_v, 2).inline; var currVal_1 = (((i1.ɵnov(_v, 2).color !== \"primary\") && (i1.ɵnov(_v, 2).color !== \"accent\")) && (i1.ɵnov(_v, 2).color !== \"warn\")); _ck(_v, 1, 0, currVal_0, currVal_1); }); }\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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"close\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i6.View_MatIcon_0, i6.RenderType_MatIcon)), i1.ɵdid(27, 9158656, null, 0, i7.MatIcon, [i1.ElementRef, i7.MatIconRegistry, [8, null], [2, i7.MAT_ICON_LOCATION]], { 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_10 = \"close\"; _ck(_v, 27, 0, currVal_10); var currVal_12 = i1.ɵunv(_v, 36, 0, i1.ɵnov(_v, 37).transform(_co.activeUploads.getAll())); var currVal_13 = _co.trackById; _ck(_v, 36, 0, currVal_12, currVal_13); }, 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; var currVal_9 = (((i1.ɵnov(_v, 27).color !== \"primary\") && (i1.ɵnov(_v, 27).color !== \"accent\")) && (i1.ɵnov(_v, 27).color !== \"warn\")); _ck(_v, 26, 0, currVal_8, currVal_9); var currVal_11 = i1.ɵunv(_v, 32, 0, i1.ɵnov(_v, 33).transform(_co.minimized$)); _ck(_v, 32, 0, currVal_11); }); }\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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"close\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i11.View_MatIcon_0, i11.RenderType_MatIcon)), i1.ɵdid(11, 9158656, null, 0, i12.MatIcon, [i1.ElementRef, i12.MatIconRegistry, [8, null], [2, i12.MAT_ICON_LOCATION]], { 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], [2, \"has-root-node\", 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\"], selectedFolder: [1, \"selectedFolder\"], movingEntries: [2, \"movingEntries\"], disableContextMenu: [3, \"disableContextMenu\"], showRootNode: [4, \"showRootNode\"] }, { 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_5 = \"close\"; _ck(_v, 11, 0, currVal_5); var currVal_15 = true; var currVal_16 = _co.getRootFolder().hash; var currVal_17 = i1.ɵunv(_v, 24, 2, i1.ɵnov(_v, 25).transform(_co.selectedEntries$)); var currVal_18 = true; var currVal_19 = true; _ck(_v, 24, 0, currVal_15, currVal_16, currVal_17, currVal_18, currVal_19); var currVal_24 = (!_co.canMove() || i1.ɵunv(_v, 38, 0, i1.ɵnov(_v, 39).transform(_co.loading))); var currVal_25 = \"primary\"; _ck(_v, 38, 0, currVal_24, 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; var currVal_4 = (((i1.ɵnov(_v, 11).color !== \"primary\") && (i1.ɵnov(_v, 11).color !== \"accent\")) && (i1.ɵnov(_v, 11).color !== \"warn\")); _ck(_v, 10, 0, currVal_3, currVal_4); var currVal_6 = i1.ɵnov(_v, 18).ngClassUntouched; var currVal_7 = i1.ɵnov(_v, 18).ngClassTouched; var currVal_8 = i1.ɵnov(_v, 18).ngClassPristine; var currVal_9 = i1.ɵnov(_v, 18).ngClassDirty; var currVal_10 = i1.ɵnov(_v, 18).ngClassValid; var currVal_11 = i1.ɵnov(_v, 18).ngClassInvalid; var currVal_12 = i1.ɵnov(_v, 18).ngClassPending; _ck(_v, 15, 0, currVal_6, currVal_7, currVal_8, currVal_9, currVal_10, currVal_11, currVal_12); var currVal_13 = i1.ɵnov(_v, 24).expanded; var currVal_14 = i1.ɵnov(_v, 24).showRootNode; _ck(_v, 23, 0, currVal_13, currVal_14); var currVal_20 = (i1.ɵnov(_v, 33).disabled || null); var currVal_21 = (i1.ɵnov(_v, 33)._animationMode === \"NoopAnimations\"); _ck(_v, 31, 0, currVal_20, currVal_21); var currVal_22 = (i1.ɵnov(_v, 38).disabled || null); var currVal_23 = (i1.ɵnov(_v, 38)._animationMode === \"NoopAnimations\"); _ck(_v, 36, 0, currVal_22, currVal_23); }); }\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            [selectedFolder]=\"getRootFolder().hash\"\n            [showRootNode]=\"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]=\"!canMove() || (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 \"../../../../../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 \"./file-preview-toolbar/file-preview-toolbar.component.ngfactory\";\nimport * as i10 from \"./file-preview-toolbar/file-preview-toolbar.component\";\nimport * as i11 from \"../../../../common/file-preview/preview-files.service\";\nimport * as i12 from \"../../../../common/core/config/settings.service\";\nimport * as i13 from \"@angular/common\";\nimport * as i14 from \"../../../../common/file-preview/preview-container/preview-container.component.ngfactory\";\nimport * as i15 from \"../../../../common/file-preview/preview-container/preview-container.component\";\nimport * as i16 from \"./file-preview-overlay.component\";\nimport * as i17 from \"@ngxs/store\";\nimport * as i18 from \"../../../../common/core/ui/context-menu/context-menu.service\";\nimport * as i19 from \"../../../../common/core/ui/overlay-panel/overlay-panel-ref\";\nimport * as i20 from \"../../../../common/auth/current-user\";\nimport * as i21 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 };\nfunction View_FilePreviewOverlayComponent_1(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, [[2, 0]], 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.openContextMenu() !== false);\n        ad = (pd_0 && ad);\n    } return ad; }, i2.View_MatButton_0, i2.RenderType_MatButton)), i1.ɵdid(1, 180224, [[\"moreOptionsButton\", 4]], 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 notranslate\"], [\"role\", \"img\"], [\"svgIcon\", \"more-vert\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", null]], null, null, i7.View_MatIcon_0, i7.RenderType_MatIcon)), i1.ɵdid(4, 9158656, null, 0, i8.MatIcon, [i1.ElementRef, i8.MatIconRegistry, [8, null], [2, i8.MAT_ICON_LOCATION]], { svgIcon: [0, \"svgIcon\"] }, null), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"]))], function (_ck, _v) { var currVal_4 = \"more-vert\"; _ck(_v, 4, 0, currVal_4); }, 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; var currVal_3 = (((i1.ɵnov(_v, 4).color !== \"primary\") && (i1.ɵnov(_v, 4).color !== \"accent\")) && (i1.ɵnov(_v, 4).color !== \"warn\")); _ck(_v, 3, 0, currVal_2, currVal_3); }); }\nexport function View_FilePreviewOverlayComponent_0(_l) { return i1.ɵvid(2, [i1.ɵqud(402653184, 1, { previewContainer: 0 }), i1.ɵqud(671088640, 2, { optionsButton: 0 }), (_l()(), i1.ɵeld(2, 0, null, null, 5, \"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; }, i9.View_FilePreviewToolbarComponent_0, i9.RenderType_FilePreviewToolbarComponent)), i1.ɵdid(3, 49152, null, 0, i10.FilePreviewToolbarComponent, [i11.PreviewFilesService, i12.Settings], { disableDownload: [0, \"disableDownload\"], showCloseButton: [1, \"showCloseButton\"] }, { closed: \"closed\" }), (_l()(), i1.ɵted(-1, 0, [\"\\n    \"])), (_l()(), i1.ɵand(16777216, null, 0, 1, null, View_FilePreviewOverlayComponent_1)), i1.ɵdid(6, 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\"])), (_l()(), i1.ɵeld(9, 0, [[1, 0]], null, 1, \"preview-container\", [], null, null, null, i14.View_PreviewContainerComponent_0, i14.RenderType_PreviewContainerComponent)), i1.ɵdid(10, 704512, [[\"previewContainer\", 4]], 0, i15.PreviewContainerComponent, [i11.PreviewFilesService], { files: [0, \"files\"], activeFile: [1, \"activeFile\"] }, null)], function (_ck, _v) { var _co = _v.component; var currVal_0 = !_co.canDownload(); var currVal_1 = true; _ck(_v, 3, 0, currVal_0, currVal_1); var currVal_2 = !_co.data.hideMoreOptionsBtn; _ck(_v, 6, 0, currVal_2); var currVal_3 = _co.data.entries; var currVal_4 = _co.data.activeEntry; _ck(_v, 10, 0, currVal_3, currVal_4); }, null); }\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, i16.FilePreviewOverlayComponent, [i17.Store, i1.ElementRef, i18.ContextMenu, i19.OverlayPanelRef, i11.PreviewFilesService, i20.CurrentUser, i21.OVERLAY_PANEL_DATA], null, null)], null, null); }\nvar FilePreviewOverlayComponentNgFactory = i1.ɵccf(\"file-preview-overlay\", i16.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()\" [disableDownload]=\"!canDownload()\">\r\n    <button mat-icon-button (click)=\"openContextMenu()\" #moreOptionsButton *ngIf=\"!data.hideMoreOptionsBtn\">\r\n        <mat-icon svgIcon=\"more-vert\"></mat-icon>\r\n    </button>\r\n</file-preview-toolbar>\r\n<preview-container [files]=\"data.entries\" [activeFile]=\"data.activeEntry\" #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 { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, Inject, InjectionToken, Input, Optional, ViewEncapsulation, NgModule } from '@angular/core';\nimport { mixinColor, MatCommonModule } from '@angular/material/core';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Base reference size of the spinner.\n * \\@docs-private\n * @type {?}\n */\nvar BASE_SIZE = 100;\n/**\n * Base reference stroke width of the spinner.\n * \\@docs-private\n * @type {?}\n */\nvar BASE_STROKE_WIDTH = 10;\n// Boilerplate for applying mixins to MatProgressSpinner.\n/**\n * \\@docs-private\n */\nvar  \n// Boilerplate for applying mixins to MatProgressSpinner.\n/**\n * \\@docs-private\n */\nMatProgressSpinnerBase = /** @class */ (function () {\n    function MatProgressSpinnerBase(_elementRef) {\n        this._elementRef = _elementRef;\n    }\n    return MatProgressSpinnerBase;\n}());\n/** @type {?} */\nvar _MatProgressSpinnerMixinBase = mixinColor(MatProgressSpinnerBase, 'primary');\n/**\n * Injection token to be used to override the default options for `mat-progress-spinner`.\n * @type {?}\n */\nvar 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\n/** @type {?} */\nvar 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, 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        /** @type {?} */\n        var 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        /** The diameter of the progress spinner (will set width and height of svg). */\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        /** Stroke width of the progress spinner. */\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        /** Value of the progress circle. */\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            /** @type {?} */\n            var 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    /** Dynamically generates a style tag containing the correct animation for this diameter. */\n    /**\n     * Dynamically generates a style tag containing the correct animation for this diameter.\n     * @private\n     * @return {?}\n     */\n    MatProgressSpinner.prototype._attachStyleNode = /**\n     * Dynamically generates a style tag containing the correct animation for this diameter.\n     * @private\n     * @return {?}\n     */\n    function () {\n        /** @type {?} */\n        var 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    /** Generates animation styles adjusted for the spinner's diameter. */\n    /**\n     * Generates animation styles adjusted for the spinner's diameter.\n     * @private\n     * @return {?}\n     */\n    MatProgressSpinner.prototype._getAnimationText = /**\n     * Generates animation styles adjusted for the spinner's diameter.\n     * @private\n     * @return {?}\n     */\n    function () {\n        return INDETERMINATE_ANIMATION_TEMPLATE\n            // Animation should begin at 5% and end at 80%\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: String, 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-change 8.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: String, 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { MatProgressSpinnerModule, MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY, MatProgressSpinnerBase, _MatProgressSpinnerMixinBase, MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS, 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/platform-browser\";\nimport * as i6 from \"@angular/cdk/platform\";\nimport * as i7 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], [2, i5.HAMMER_LOADER]]), 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, i6.Platform, [2, i2.DOCUMENT], [2, i7.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, i6.Platform, [2, i2.DOCUMENT], [2, i7.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\nimport { GoogleDocsViewerComponent } from './google-docs-viewer/google-docs-viewer.component';\r\nimport { UiModule } from '../core/ui/ui.module';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        UiModule,\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        GoogleDocsViewerComponent\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        GoogleDocsViewerComponent,\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 \"../../common/file-preview/google-docs-viewer/google-docs-viewer.component.ngfactory\";\nimport * as i17 from \"./sharing/share-dialog/share-dialog.component.ngfactory\";\nimport * as i18 from \"./sharing/share-link-dialog/share-link-dialog.component.ngfactory\";\nimport * as i19 from \"./context-actions/components/drive-context-menu/drive-context-menu.component.ngfactory\";\nimport * as i20 from \"./folders/components/crupdate-folder-dialog/crupdate-folder-dialog.component.ngfactory\";\nimport * as i21 from \"./entries/rename-entry-dialog/rename-entry-dialog.component.ngfactory\";\nimport * as i22 from \"./uploads/uploads-panel/uploads-panel.component.ngfactory\";\nimport * as i23 from \"./entries/move-entries-dialog/move-entries-dialog.component.ngfactory\";\nimport * as i24 from \"./preview/file-preview-overlay/file-preview-overlay.component.ngfactory\";\nimport * as i25 from \"./messages/loading-toast/loading-toast.component.ngfactory\";\nimport * as i26 from \"./preview/folder-preview/folder-preview.component.ngfactory\";\nimport * as i27 from \"@angular/common\";\nimport * as i28 from \"@angular/forms\";\nimport * as i29 from \"@angular/common/http\";\nimport * as i30 from \"@angular/cdk/overlay\";\nimport * as i31 from \"@angular/cdk/bidi\";\nimport * as i32 from \"@angular/material/dialog\";\nimport * as i33 from \"../../common/core/ui/dialogs/modal.service\";\nimport * as i34 from \"@angular/material/menu\";\nimport * as i35 from \"@angular/cdk/observers\";\nimport * as i36 from \"@angular/material/tooltip\";\nimport * as i37 from \"@angular/platform-browser\";\nimport * as i38 from \"@angular/material/core\";\nimport * as i39 from \"../../common/core/ui/breakpoints.service\";\nimport * as i40 from \"@angular/cdk/layout\";\nimport * as i41 from \"../../common/file-preview/available-previews\";\nimport * as i42 from \"@angular/cdk/a11y\";\nimport * as i43 from \"@angular/cdk/platform\";\nimport * as i44 from \"@angular/cdk/tree\";\nimport * as i45 from \"@angular/material/autocomplete\";\nimport * as i46 from \"@angular/material/select\";\nimport * as i47 from \"@angular/material/sort\";\nimport * as i48 from \"@ngxs/store\";\nimport * as i49 from \"./upload-input-config\";\nimport * as i50 from \"../../common/core/config/settings.service\";\nimport * as i51 from \"./state/drive-state\";\nimport * as i52 from \"./folders/api/folders-api.service\";\nimport * as i53 from \"./drive-entry-api.service\";\nimport * as i54 from \"@angular/router\";\nimport * as i55 from \"./drive-urls.service\";\nimport * as i56 from \"../../common/uploads/upload-queue/upload-queue.service\";\nimport * as i57 from \"../../common/core/services/local-storage.service\";\nimport * as i58 from \"./uploads/drive-upload-validator\";\nimport * as i59 from \"./sharing/state/share-dialog.state\";\nimport * as i60 from \"./sharing/shares-api.service\";\nimport * as i61 from \"./sharing/links/share-link.state\";\nimport * as i62 from \"./sharing/links/shareable-links-api.service\";\nimport * as i63 from \"../../common/core/ui/context-menu/context-menu.service\";\nimport * as i64 from \"../../common/core/ui/overlay-panel/overlay-panel.service\";\nimport * as i65 from \"../../common/file-preview/preview-files.service\";\nimport * as i66 from \"../../common/core/ui/toast.service\";\nimport * as i67 from \"../../common/core/translations/translations.service\";\nimport * as i68 from \"@angular/material/snack-bar\";\nimport * as i69 from \"./state/handlers/overlay-handler\";\nimport * as i70 from \"./state/handlers/donwlod-handler\";\nimport * as i71 from \"./state/handlers/toast-handler\";\nimport * as i72 from \"./state/handlers/upload-panel-handler\";\nimport * as i73 from \"../../common/auth/current-user\";\nimport * as i74 from \"./state/handlers/dialog-handler\";\nimport * as i75 from \"./state/handlers/reset-scroll-handler\";\nimport * as i76 from \"./interactions/drive-dom-cache.service\";\nimport * as i77 from \"./state/handlers/page-change-handler\";\nimport * as i78 from \"./state/handlers/page-load-handler\";\nimport * as i79 from \"./state/handlers/remove-star-handler\";\nimport * as i80 from \"../../common/core/ui/custom-scrollbar/custom-scrollbar.module\";\nimport * as i81 from \"@angular/cdk/portal\";\nimport * as i82 from \"@angular/cdk/scrolling\";\nimport * as i83 from \"@angular/material/button\";\nimport * as i84 from \"@angular/material/icon\";\nimport * as i85 from \"../../common/core/ui/confirm-modal/confirm-modal.module\";\nimport * as i86 from \"../../common/core/translations/translations.module\";\nimport * as i87 from \"@angular/material/checkbox\";\nimport * as i88 from \"../../common/core/ui/ui.module\";\nimport * as i89 from \"@angular/material/progress-bar\";\nimport * as i90 from \"../../common/uploads/uploads.module\";\nimport * as i91 from \"./drive-routing.module\";\nimport * as i92 from \"../../common/file-preview/file-preview.module\";\nimport * as i93 from \"@angular/material/slide-toggle\";\nimport * as i94 from \"@angular/material/tabs\";\nimport * as i95 from \"@angular/material/chips\";\nimport * as i96 from \"../../common/core/ui/chip-input/chip-input.module\";\nimport * as i97 from \"./sharing/sharing.module\";\nimport * as i98 from \"@angular/material/sidenav\";\nimport * as i99 from \"@angular/material/tree\";\nimport * as i100 from \"@angular/material/form-field\";\nimport * as i101 from \"@angular/cdk/table\";\nimport * as i102 from \"@angular/material/table\";\nimport * as i103 from \"@angular/material/progress-spinner\";\nimport * as i104 from \"./preview/link-preview-container/link-preview-container.component\";\nimport * as i105 from \"./drive.component\";\nimport * as i106 from \"../../common/guards/auth-guard.service\";\nimport * as i107 from \"./entries/entries-container/entries-container.component\";\nimport * as i108 from \"@angular/cdk/keycodes\";\nimport * as i109 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.GoogleDocsViewerComponentNgFactory, i17.ShareDialogComponentNgFactory, i18.ShareLinkDialogComponentNgFactory, i19.DriveContextMenuComponentNgFactory, i20.CrupdateFolderDialogComponentNgFactory, i21.RenameEntryDialogComponentNgFactory, i22.UploadsPanelComponentNgFactory, i23.MoveEntriesDialogComponentNgFactory, i24.FilePreviewOverlayComponentNgFactory, i25.LoadingToastComponentNgFactory, i26.FolderPreviewComponentNgFactory]], [3, i0.ComponentFactoryResolver], i0.NgModuleRef]), i0.ɵmpd(4608, i27.NgLocalization, i27.NgLocaleLocalization, [i0.LOCALE_ID, [2, i27.ɵangular_packages_common_common_a]]), i0.ɵmpd(4608, i28.ɵangular_packages_forms_forms_j, i28.ɵangular_packages_forms_forms_j, []), i0.ɵmpd(4608, i28.FormBuilder, i28.FormBuilder, []), i0.ɵmpd(4608, i29.HttpXsrfTokenExtractor, i29.ɵangular_packages_common_http_http_g, [i27.DOCUMENT, i0.PLATFORM_ID, i29.ɵangular_packages_common_http_http_e]), i0.ɵmpd(4608, i29.ɵangular_packages_common_http_http_h, i29.ɵangular_packages_common_http_http_h, [i29.HttpXsrfTokenExtractor, i29.ɵangular_packages_common_http_http_f]), i0.ɵmpd(5120, i29.HTTP_INTERCEPTORS, function (p0_0) { return [p0_0]; }, [i29.ɵangular_packages_common_http_http_h]), i0.ɵmpd(4608, i29.ɵangular_packages_common_http_http_d, i29.ɵangular_packages_common_http_http_d, []), i0.ɵmpd(6144, i29.XhrFactory, null, [i29.ɵangular_packages_common_http_http_d]), i0.ɵmpd(4608, i29.HttpXhrBackend, i29.HttpXhrBackend, [i29.XhrFactory]), i0.ɵmpd(6144, i29.HttpBackend, null, [i29.HttpXhrBackend]), i0.ɵmpd(4608, i29.HttpHandler, i29.ɵHttpInterceptingHandler, [i29.HttpBackend, i0.Injector]), i0.ɵmpd(4608, i29.HttpClient, i29.HttpClient, [i29.HttpHandler]), i0.ɵmpd(4608, i30.Overlay, i30.Overlay, [i30.ScrollStrategyOptions, i30.OverlayContainer, i0.ComponentFactoryResolver, i30.OverlayPositionBuilder, i30.OverlayKeyboardDispatcher, i0.Injector, i0.NgZone, i27.DOCUMENT, i31.Directionality, [2, i27.Location]]), i0.ɵmpd(5120, i30.ɵc, i30.ɵd, [i30.Overlay]), i0.ɵmpd(5120, i32.MAT_DIALOG_SCROLL_STRATEGY, i32.MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY, [i30.Overlay]), i0.ɵmpd(135680, i32.MatDialog, i32.MatDialog, [i30.Overlay, i0.Injector, [2, i27.Location], [2, i32.MAT_DIALOG_DEFAULT_OPTIONS], i32.MAT_DIALOG_SCROLL_STRATEGY, [3, i32.MatDialog], i30.OverlayContainer]), i0.ɵmpd(4608, i33.Modal, i33.Modal, [i32.MatDialog]), i0.ɵmpd(5120, i34.MAT_MENU_SCROLL_STRATEGY, i34.ɵd21, [i30.Overlay]), i0.ɵmpd(4608, i35.MutationObserverFactory, i35.MutationObserverFactory, []), i0.ɵmpd(5120, i36.MAT_TOOLTIP_SCROLL_STRATEGY, i36.MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY, [i30.Overlay]), i0.ɵmpd(4608, i37.HAMMER_GESTURE_CONFIG, i38.GestureConfig, [[2, i38.MAT_HAMMER_OPTIONS], [2, i38.MatCommonModule]]), i0.ɵmpd(4608, i39.BreakpointsService, i39.BreakpointsService, [i40.BreakpointObserver]), i0.ɵmpd(4608, i41.AVAILABLE_PREVIEWS, i41.DefaultPreviews, []), i0.ɵmpd(4608, i38.ErrorStateMatcher, i38.ErrorStateMatcher, []), i0.ɵmpd(135680, i42.FocusMonitor, i42.FocusMonitor, [i0.NgZone, i43.Platform]), i0.ɵmpd(4608, i44.CdkTreeNodeDef, i44.CdkTreeNodeDef, [i0.TemplateRef]), i0.ɵmpd(5120, i45.MAT_AUTOCOMPLETE_SCROLL_STRATEGY, i45.MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY, [i30.Overlay]), i0.ɵmpd(5120, i46.MAT_SELECT_SCROLL_STRATEGY, i46.MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY, [i30.Overlay]), i0.ɵmpd(5120, i47.MatSortHeaderIntl, i47.MAT_SORT_HEADER_INTL_PROVIDER_FACTORY, [[3, i47.MatSortHeaderIntl]]), i0.ɵmpd(4608, i48.ɵt, i48.ɵt, [[3, i48.ɵt], [2, i48.NGXS_PLUGINS]]), i0.ɵmpd(5120, i49.DRIVE_UPLOAD_INPUT_CONFIG, i1.ɵ1, [i50.Settings]), i0.ɵmpd(4608, i51.DriveState, i51.DriveState, [i52.FoldersApiService, i53.DriveEntryApiService, i54.Router, i55.DriveUrlsService, i56.UploadQueueService, i48.Store, i57.LocalStorage, i58.DriveUploadValidator, i49.DRIVE_UPLOAD_INPUT_CONFIG]), i0.ɵmpd(4608, i59.ShareDialogState, i59.ShareDialogState, [i48.Store, i60.SharesApiService]), i0.ɵmpd(4608, i61.ShareLinkState, i61.ShareLinkState, [i48.Store, i50.Settings, i62.ShareableLinksApiService]), i0.ɵmpd(4608, i63.ContextMenu, i63.ContextMenu, [i54.Router, i0.NgZone, i0.Injector, i0.ComponentFactoryResolver, i30.Overlay]), i0.ɵmpd(4608, i64.OverlayPanel, i64.OverlayPanel, [i30.Overlay, i39.BreakpointsService, i0.Injector]), i0.ɵmpd(4608, i65.PreviewFilesService, i65.PreviewFilesService, [i41.AVAILABLE_PREVIEWS, i0.Injector]), i0.ɵmpd(4608, i66.Toast, i66.Toast, [i50.Settings, i67.Translations, i68.MatSnackBar]), i0.ɵmpd(4608, i69.OverlayHandler, i69.OverlayHandler, [i48.Store, i48.Actions, i64.OverlayPanel]), i0.ɵmpd(4608, i70.DownloadHandler, i70.DownloadHandler, [i48.Actions, i48.Store, i50.Settings]), i0.ɵmpd(4608, i71.ToastHandler, i71.ToastHandler, [i48.Actions, i66.Toast, i48.Store, i54.Router]), i0.ɵmpd(4608, i72.UploadPanelHandler, i72.UploadPanelHandler, [i48.Actions, i73.CurrentUser, i64.OverlayPanel]), i0.ɵmpd(4608, i74.DialogHandler, i74.DialogHandler, [i48.Actions, i33.Modal, i0.NgZone, i48.Store]), i0.ɵmpd(4608, i75.ResetScrollHandler, i75.ResetScrollHandler, [i48.Actions, i76.DriveDomCacheService]), i0.ɵmpd(4608, i77.PageChangeHandler, i77.PageChangeHandler, [i48.Store]), i0.ɵmpd(4608, i78.PageLoadHandler, i78.PageLoadHandler, [i48.Store, i48.Actions, i73.CurrentUser]), i0.ɵmpd(4608, i79.RemoveStarHandler, i79.RemoveStarHandler, [i48.Actions, i48.Store]), i0.ɵmpd(1073742336, i27.CommonModule, i27.CommonModule, []), i0.ɵmpd(1073742336, i28.ɵangular_packages_forms_forms_bc, i28.ɵangular_packages_forms_forms_bc, []), i0.ɵmpd(1073742336, i28.FormsModule, i28.FormsModule, []), i0.ɵmpd(1073742336, i28.ReactiveFormsModule, i28.ReactiveFormsModule, []), i0.ɵmpd(1073742336, i54.RouterModule, i54.RouterModule, [[2, i54.ɵangular_packages_router_router_a], [2, i54.Router]]), i0.ɵmpd(1073742336, i29.HttpClientXsrfModule, i29.HttpClientXsrfModule, []), i0.ɵmpd(1073742336, i29.HttpClientModule, i29.HttpClientModule, []), i0.ɵmpd(1073742336, i80.CustomScrollbarModule, i80.CustomScrollbarModule, []), i0.ɵmpd(1073742336, i31.BidiModule, i31.BidiModule, []), i0.ɵmpd(1073742336, i81.PortalModule, i81.PortalModule, []), i0.ɵmpd(1073742336, i43.PlatformModule, i43.PlatformModule, []), i0.ɵmpd(1073742336, i82.ScrollingModule, i82.ScrollingModule, []), i0.ɵmpd(1073742336, i30.OverlayModule, i30.OverlayModule, []), i0.ɵmpd(1073742336, i38.MatCommonModule, i38.MatCommonModule, [[2, i38.MATERIAL_SANITY_CHECKS], [2, i37.HAMMER_LOADER]]), i0.ɵmpd(1073742336, i32.MatDialogModule, i32.MatDialogModule, []), i0.ɵmpd(1073742336, i38.MatRippleModule, i38.MatRippleModule, []), i0.ɵmpd(1073742336, i83.MatButtonModule, i83.MatButtonModule, []), i0.ɵmpd(1073742336, i84.MatIconModule, i84.MatIconModule, []), i0.ɵmpd(1073742336, i85.ConfirmModalModule, i85.ConfirmModalModule, []), i0.ɵmpd(1073742336, i86.TranslationsModule, i86.TranslationsModule, []), i0.ɵmpd(1073742336, i68.MatSnackBarModule, i68.MatSnackBarModule, []), i0.ɵmpd(1073742336, i34.MatMenuModule, i34.MatMenuModule, []), i0.ɵmpd(1073742336, i35.ObserversModule, i35.ObserversModule, []), i0.ɵmpd(1073742336, i87.MatCheckboxModule, i87.MatCheckboxModule, []), i0.ɵmpd(1073742336, i42.A11yModule, i42.A11yModule, []), i0.ɵmpd(1073742336, i36.MatTooltipModule, i36.MatTooltipModule, []), i0.ɵmpd(1073742336, i88.UiModule, i88.UiModule, [i84.MatIconRegistry, i37.DomSanitizer, i50.Settings]), i0.ɵmpd(1073742336, i89.MatProgressBarModule, i89.MatProgressBarModule, []), i0.ɵmpd(1073742336, i90.UploadsModule, i90.UploadsModule, []), i0.ɵmpd(1073742336, i91.DriveRoutingModule, i91.DriveRoutingModule, []), i0.ɵmpd(1073742336, i92.FilePreviewModule, i92.FilePreviewModule, []), i0.ɵmpd(1073742336, i93.MatSlideToggleModule, i93.MatSlideToggleModule, []), i0.ɵmpd(1073742336, i94.MatTabsModule, i94.MatTabsModule, []), i0.ɵmpd(1073742336, i95.MatChipsModule, i95.MatChipsModule, []), i0.ɵmpd(1073742336, i96.ChipInputModule, i96.ChipInputModule, []), i0.ɵmpd(1073742336, i97.SharingModule, i97.SharingModule, []), i0.ɵmpd(1073742336, i98.MatSidenavModule, i98.MatSidenavModule, []), i0.ɵmpd(1073742336, i44.CdkTreeModule, i44.CdkTreeModule, []), i0.ɵmpd(1073742336, i99.MatTreeModule, i99.MatTreeModule, []), i0.ɵmpd(1073742336, i38.MatPseudoCheckboxModule, i38.MatPseudoCheckboxModule, []), i0.ɵmpd(1073742336, i38.MatOptionModule, i38.MatOptionModule, []), i0.ɵmpd(1073742336, i45.MatAutocompleteModule, i45.MatAutocompleteModule, []), i0.ɵmpd(1073742336, i100.MatFormFieldModule, i100.MatFormFieldModule, []), i0.ɵmpd(1073742336, i46.MatSelectModule, i46.MatSelectModule, []), i0.ɵmpd(1073742336, i101.CdkTableModule, i101.CdkTableModule, []), i0.ɵmpd(1073742336, i102.MatTableModule, i102.MatTableModule, []), i0.ɵmpd(1073742336, i47.MatSortModule, i47.MatSortModule, []), i0.ɵmpd(1073742336, i103.MatProgressSpinnerModule, i103.MatProgressSpinnerModule, []), i0.ɵmpd(512, i48.ɵo, i48.ɵo, [i0.Injector, i48.ɵm, [3, i48.ɵo], i48.ɵh, i48.ɵp, i48.ɵr, i48.ɵs]), i0.ɵmpd(1024, i48.ɵk, function () { return [[i51.DriveState, i59.ShareDialogState, i61.ShareLinkState]]; }, []), i0.ɵmpd(1073742336, i48.ɵb, i48.ɵb, [i48.Store, i48.ɵs, i48.ɵo, [2, i48.ɵk], i48.ɵw]), i0.ɵmpd(1073742336, i1.DriveModule, i1.DriveModule, [i0.Injector]), i0.ɵmpd(256, i29.ɵangular_packages_common_http_http_e, \"XSRF-TOKEN\", []), i0.ɵmpd(256, i29.ɵangular_packages_common_http_http_f, \"X-XSRF-TOKEN\", []), i0.ɵmpd(1024, i54.ROUTES, function () { return [[{ path: \"s/:hash\", component: i104.LinkPreviewContainerComponent }, { path: \"\", component: i105.DriveComponent, canActivate: [i106.AuthGuard], children: [{ path: \"\", component: i107.EntriesContainerComponent }, { path: \"shares\", component: i107.EntriesContainerComponent }, { path: \"search\", component: i107.EntriesContainerComponent }, { path: \"recent\", component: i107.EntriesContainerComponent }, { path: \"starred\", component: i107.EntriesContainerComponent }, { path: \"trash\", component: i107.EntriesContainerComponent }, { path: \"folders/:hash\", component: i107.EntriesContainerComponent }] }]]; }, []), i0.ɵmpd(256, i95.MAT_CHIPS_DEFAULT_OPTIONS, { separatorKeyCodes: [i108.ENTER] }, []), i0.ɵmpd(1024, i109.AVAILABLE_CONTEXT_MENUS, function () { return [i1.ɵ0]; }, [])]); });\nexport { DriveModuleNgFactory as DriveModuleNgFactory };\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","/**\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 \"./no-results-message.component.scss.ngstyle\";\nimport * as i1 from \"@angular/core\";\nimport * as i2 from \"./no-results-message.component\";\nimport * as i3 from \"../../config/settings.service\";\nvar styles_NoResultsMessageComponent = [i0.styles];\nvar RenderType_NoResultsMessageComponent = i1.ɵcrt({ encapsulation: 2, styles: styles_NoResultsMessageComponent, data: {} });\nexport { RenderType_NoResultsMessageComponent as RenderType_NoResultsMessageComponent };\nexport function View_NoResultsMessageComponent_0(_l) { return i1.ɵvid(2, [(_l()(), i1.ɵeld(0, 0, null, null, 11, \"div\", [[\"class\", \"text\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(2, 0, null, null, 3, \"div\", [[\"class\", \"main\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), i1.ɵncd(null, 0), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(7, 0, null, null, 3, \"div\", [[\"class\", \"secondary\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n        \"])), i1.ɵncd(null, 1), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵted(-1, null, [\"\\n\"])), (_l()(), i1.ɵeld(13, 0, null, null, 3, \"div\", [[\"class\", \"icon\"]], null, null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n    \"])), (_l()(), i1.ɵeld(15, 0, null, null, 0, \"img\", [], [[8, \"src\", 4]], null, null, null, null)), (_l()(), i1.ɵted(-1, null, [\"\\n\"]))], null, function (_ck, _v) { var _co = _v.component; var currVal_0 = _co.settings.getAssetUrl(\"images/no-results.svg\"); _ck(_v, 15, 0, currVal_0); }); }\nexport function View_NoResultsMessageComponent_Host_0(_l) { return i1.ɵvid(0, [(_l()(), i1.ɵeld(0, 0, null, null, 1, \"no-results-message\", [[\"class\", \"no-results-message\"]], null, null, null, View_NoResultsMessageComponent_0, RenderType_NoResultsMessageComponent)), i1.ɵdid(1, 49152, null, 0, i2.NoResultsMessageComponent, [i3.Settings], null, null)], null, null); }\nvar NoResultsMessageComponentNgFactory = i1.ɵccf(\"no-results-message\", i2.NoResultsMessageComponent, View_NoResultsMessageComponent_Host_0, {}, {}, [\"[primary-text]\", \"[secondary-text]\"]);\nexport { NoResultsMessageComponentNgFactory as NoResultsMessageComponentNgFactory };\n","<div class=\"text\">\r\n    <div class=\"main\">\r\n        <ng-content select=\"[primary-text]\"></ng-content>\r\n    </div>\r\n    <div class=\"secondary\">\r\n        <ng-content select=\"[secondary-text]\"></ng-content>\r\n    </div>\r\n</div>\r\n<div class=\"icon\">\r\n    <img [src]=\"settings.getAssetUrl('images/no-results.svg')\">\r\n</div>","/**\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","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\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 { __extends } from 'tslib';\nimport { Component, ChangeDetectionStrategy, ElementRef, Inject, Input, Output, EventEmitter, Optional, NgZone, ViewEncapsulation, ViewChild, InjectionToken, inject, NgModule } from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n// TODO(josephperrott): Benchpress tests.\n// TODO(josephperrott): Add ARIA attributes for progress bar \"for\".\n// Boilerplate for applying mixins to MatProgressBar.\n/**\n * \\@docs-private\n */\nvar  \n// TODO(josephperrott): Benchpress tests.\n// TODO(josephperrott): Add ARIA attributes for progress bar \"for\".\n// Boilerplate for applying mixins to MatProgressBar.\n/**\n * \\@docs-private\n */\nMatProgressBarBase = /** @class */ (function () {\n    function MatProgressBarBase(_elementRef) {\n        this._elementRef = _elementRef;\n    }\n    return MatProgressBarBase;\n}());\n/** @type {?} */\nvar _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 * @type {?}\n */\nvar 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    /** @type {?} */\n    var _document = inject(DOCUMENT);\n    /** @type {?} */\n    var _location = _document ? _document.location : null;\n    return {\n        // Note that this needs to be a function, rather than a property, because Angular\n        // will only resolve it once, but we want the current path on each call.\n        getPathname: function () { return _location ? (_location.pathname + _location.search) : ''; }\n    };\n}\n/**\n * Counter used to generate unique IDs for progress bars.\n * @type {?}\n */\nvar progressbarId = 0;\n/**\n * `<mat-progress-bar>` component.\n */\nvar MatProgressBar = /** @class */ (function (_super) {\n    __extends(MatProgressBar, _super);\n    function MatProgressBar(_elementRef, _ngZone, _animationMode, \n    /**\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._ngZone = _ngZone;\n        _this._animationMode = _animationMode;\n        /**\n         * Flag that indicates whether NoopAnimations mode is set to true.\n         */\n        _this._isNoopAnimation = false;\n        _this._value = 0;\n        _this._bufferValue = 0;\n        /**\n         * Event emitted when animation of the primary progress bar completes. This event will not\n         * be emitted when animations are disabled, nor will it be emitted for modes with continuous\n         * animations (indeterminate and query).\n         */\n        _this.animationEnd = new EventEmitter();\n        /**\n         * Reference to animation end subscription to be unsubscribed on destroy.\n         */\n        _this._animationEndSubscription = Subscription.EMPTY;\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 since\n        // 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        /** @type {?} */\n        var path = location ? location.getPathname().split('#')[0] : '';\n        _this._rectangleFillValue = \"url('\" + path + \"#\" + _this.progressbarId + \"')\";\n        _this._isNoopAnimation = _animationMode === 'NoopAnimations';\n        return _this;\n    }\n    Object.defineProperty(MatProgressBar.prototype, \"value\", {\n        /** Value of the progress bar. Defaults to zero. Mirrored to aria-valuenow. */\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) {\n            this._value = clamp(v || 0);\n            // When noop animation is set to true, trigger animationEnd directly.\n            if (this._isNoopAnimation) {\n                this.emitAnimationEnd();\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatProgressBar.prototype, \"bufferValue\", {\n        /** Buffer value of the progress bar. Defaults to zero. */\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        /** @type {?} */\n        var 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            /** @type {?} */\n            var scale = this.bufferValue / 100;\n            return { transform: \"scaleX(\" + scale + \")\" };\n        }\n    };\n    /**\n     * @return {?}\n     */\n    MatProgressBar.prototype.ngAfterViewInit = /**\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        if (!this._isNoopAnimation) {\n            // Run outside angular so change detection didn't get triggered on every transition end\n            // instead only on the animation that we care about (primary value bar's transitionend)\n            this._ngZone.runOutsideAngular((function () {\n                _this._animationEndSubscription =\n                    fromEvent(_this._primaryValueBar.nativeElement, 'transitionend')\n                        .pipe(filter((function (e) {\n                        return e.target === _this._primaryValueBar.nativeElement;\n                    })))\n                        .subscribe(function (_) { return _this._ngZone.run(function () { return _this.emitAnimationEnd(); }); });\n            }));\n        }\n    };\n    /**\n     * @return {?}\n     */\n    MatProgressBar.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        this._animationEndSubscription.unsubscribe();\n    };\n    /** Emit an animationEnd event if in determinate or buffer mode. */\n    /**\n     * Emit an animationEnd event if in determinate or buffer mode.\n     * @private\n     * @return {?}\n     */\n    MatProgressBar.prototype.emitAnimationEnd = /**\n     * Emit an animationEnd event if in determinate or buffer mode.\n     * @private\n     * @return {?}\n     */\n    function () {\n        if (this.mode === 'determinate' || this.mode === 'buffer') {\n            this.animationEnd.next({ value: this.value });\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]': \"_isNoopAnimation\",\n                    },\n                    inputs: ['color'],\n                    template: \"<svg width=\\\"100%\\\" height=\\\"4\\\" focusable=\\\"false\\\" class=\\\"mat-progress-bar-background mat-progress-bar-element\\\"><defs><pattern [id]=\\\"progressbarId\\\" x=\\\"4\\\" y=\\\"0\\\" width=\\\"8\\\" height=\\\"4\\\" patternUnits=\\\"userSpaceOnUse\\\"><circle cx=\\\"2\\\" cy=\\\"2\\\" r=\\\"2\\\"/></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()\\\" #primaryValueBar></div><div class=\\\"mat-progress-bar-secondary mat-progress-bar-fill mat-progress-bar-element\\\"></div>\",\n                    styles: [\".mat-progress-bar{display:block;height:4px;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 (-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 (-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 (-ms-high-contrast:active){.mat-progress-bar .mat-progress-bar-fill{border-top:solid 4px}}.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(-8px)}}\"],\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    encapsulation: ViewEncapsulation.None,\n                },] },\n    ];\n    /** @nocollapse */\n    MatProgressBar.ctorParameters = function () { return [\n        { type: ElementRef },\n        { type: NgZone },\n        { type: String, 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        _primaryValueBar: [{ type: ViewChild, args: ['primaryValueBar',] }],\n        animationEnd: [{ type: Output }],\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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { MatProgressBarModule, MAT_PROGRESS_BAR_LOCATION_FACTORY, MatProgressBarBase, _MatProgressBarMixinBase, MAT_PROGRESS_BAR_LOCATION, 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\nimport {take} from 'rxjs/operators';\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    public afterClosed() {\r\n        return this.overlayRef.detachments().pipe(take(1));\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/platform-browser\";\nimport * as i6 from \"@angular/cdk/platform\";\nimport * as i7 from \"@angular/cdk/scrolling\";\nimport * as i8 from \"@angular/cdk/a11y\";\nimport * as i9 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], [2, i5.HAMMER_LOADER]]), i0.ɵmpd(1073742336, i6.PlatformModule, i6.PlatformModule, []), i0.ɵmpd(1073742336, i7.ScrollingModule, i7.ScrollingModule, []), 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, 1294336, null, 0, i1.MatDrawerContent, [i0.ChangeDetectorRef, i1.MatDrawerContainer, i0.ElementRef, i7.ScrollDispatcher, i0.NgZone], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, 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, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"div\", [[\"class\", \"mat-drawer-inner-container\"]], null, null, null, null, null)), 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)._animationStarted.next($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"component:@transform.done\" === en)) {\n        var pd_1 = (i0.ɵnov(_v, 1)._animationEnd.next($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, i8.FocusTrapFactory, i8.FocusMonitor, i6.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-container.ng-animate-disabled .mat-drawer-backdrop,.mat-drawer-container.ng-animate-disabled .mat-drawer-content,.ng-animate-disabled .mat-drawer-container .mat-drawer-backdrop,.ng-animate-disabled .mat-drawer-container .mat-drawer-content{transition:none}.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 (-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 (-ms-high-contrast:active){.mat-drawer,[dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}}@media (-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-inner-container{width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}.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, 2, \"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, 1294336, [[1, 4]], 0, i1.MatDrawerContent, [i0.ChangeDetectorRef, i1.MatDrawerContainer, i0.ElementRef, i7.ScrollDispatcher, i0.NgZone], null, null), i0.ɵncd(0, 2)], function (_ck, _v) { _ck(_v, 1, 0); }, 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); }); }\nexport function View_MatDrawerContainer_0(_l) { return i0.ɵvid(2, [i0.ɵqud(671088640, 1, { _userContent: 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, i9.ANIMATION_MODULE_TYPE], [2, i7.ViewportRuler]], 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, 1294336, null, 0, i1.MatSidenavContent, [i0.ChangeDetectorRef, i1.MatSidenavContainer, i0.ElementRef, i7.ScrollDispatcher, i0.NgZone], null, null)], function (_ck, _v) { _ck(_v, 1, 0); }, 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, [(_l()(), i0.ɵeld(0, 0, null, null, 1, \"div\", [[\"class\", \"mat-drawer-inner-container\"]], null, null, null, null, null)), 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)._animationStarted.next($event) !== false);\n        ad = (pd_0 && ad);\n    } if ((\"component:@transform.done\" === en)) {\n        var pd_1 = (i0.ɵnov(_v, 1)._animationEnd.next($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, i8.FocusTrapFactory, i8.FocusMonitor, i6.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-container.ng-animate-disabled .mat-drawer-backdrop,.mat-drawer-container.ng-animate-disabled .mat-drawer-content,.ng-animate-disabled .mat-drawer-container .mat-drawer-backdrop,.ng-animate-disabled .mat-drawer-container .mat-drawer-content{transition:none}.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 (-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 (-ms-high-contrast:active){.mat-drawer,[dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}}@media (-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-inner-container{width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}.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, null, 0, i7.CdkScrollable, [i0.ElementRef, i7.ScrollDispatcher, i0.NgZone, [2, i3.Directionality]], null, null), i0.ɵdid(2, 1294336, null, 0, i1.MatSidenavContent, [i0.ChangeDetectorRef, i1.MatSidenavContainer, i0.ElementRef, i7.ScrollDispatcher, i0.NgZone], null, null), i0.ɵncd(0, 2)], function (_ck, _v) { _ck(_v, 1, 0); _ck(_v, 2, 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(402653184, 1, { _userContent: 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, i9.ANIMATION_MODULE_TYPE], [2, i7.ViewportRuler]], 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>","<div class=\"mat-drawer-inner-container\"><ng-content></ng-content></div>","<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 {ScrollStrategy} from '@angular/cdk/overlay';\r\n\r\nexport class FullscreenOverlayScrollStrategy implements ScrollStrategy {\r\n    public attach() {}\r\n\r\n    public enable() {\r\n        document.documentElement.classList.add('be-fullscreen-overlay-scrollblock');\r\n    }\r\n\r\n    public disable() {\r\n        document.documentElement.classList.remove('be-fullscreen-overlay-scrollblock');\r\n    }\r\n}\r\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\nimport {FullscreenOverlayScrollStrategy} from './fullscreen-overlay-scroll-strategy';\r\nimport {filter} from 'rxjs/operators';\r\nimport {ESCAPE} from '@angular/cdk/keycodes';\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): OverlayPanelRef {\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            backdropClass: config.backdropClass,\r\n            scrollStrategy: config.fullScreen ? new FullscreenOverlayScrollStrategy() : null,\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            overlayRef.keydownEvents()\r\n                .pipe(filter(e => e.keyCode === ESCAPE))\r\n                .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$.value) {\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 { FullscreenOverlayScrollStrategy } from './fullscreen-overlay-scroll-strategy';\nimport { filter } from 'rxjs/operators';\nimport { ESCAPE } from '@angular/cdk/keycodes';\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            backdropClass: config.backdropClass,\n            scrollStrategy: config.fullScreen ? new FullscreenOverlayScrollStrategy() : null,\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            overlayRef.keydownEvents()\n                .pipe(filter(function (e) { return e.keyCode === ESCAPE; }))\n                .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$.value) {\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 __assign = (this && this.__assign) || function () {\n    __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    };\n    return __assign.apply(this, arguments);\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","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        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 extendStatics(d, b);\n    };\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","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 { 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Injection token to be used to override the default options for `mat-slide-toggle`.\n * @type {?}\n */\nvar 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n// Increasing integer for generating unique ids for slide-toggle components.\n/** @type {?} */\nvar nextUniqueId = 0;\n/**\n * \\@docs-private\n * @type {?}\n */\nvar 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// Boilerplate for applying mixins to MatSlideToggle.\n/**\n * \\@docs-private\n */\nvar  \n// Boilerplate for applying mixins to MatSlideToggle.\n/**\n * \\@docs-private\n */\nMatSlideToggleBase = /** @class */ (function () {\n    function MatSlideToggleBase(_elementRef) {\n        this._elementRef = _elementRef;\n    }\n    return MatSlideToggleBase;\n}());\n/** @type {?} */\nvar _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    /**\n     * @deprecated The `_platform` parameter to be removed.\n     * @breaking-change 8.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 is always emitted when the user toggles the slide toggle, but this does not mean\n         * the slide toggle's value has changed. The event does not fire when the user drags to change\n         * 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 is always emitted when the user drags the slide toggle to make a change greater\n         * than 50%. It does not mean the slide toggle's value is changed. The event is not emitted when\n         * the user toggles the slide toggle to change its value.\n         */\n        _this.dragChange = new EventEmitter();\n        _this.tabIndex = parseInt(tabIndex) || 0;\n        return _this;\n    }\n    Object.defineProperty(MatSlideToggle.prototype, \"required\", {\n        /** Whether the slide-toggle is 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        /** Whether the slide-toggle element is checked or not. */\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._elementRef, true)\n            .subscribe(function (focusOrigin) {\n            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\n                // change (such as a form control's 'ng-touched') will cause a changed-after-checked\n                // error. See https://github.com/angular/angular/issues/17793. To work around this,\n                // we defer telling the form control it has been touched until the next tick.\n                Promise.resolve().then(function () { return _this.onTouched(); });\n            }\n        });\n    };\n    /**\n     * @return {?}\n     */\n    MatSlideToggle.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        this._focusMonitor.stopMonitoring(this._elementRef);\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, '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     * Emits a change event on the `change` output. Also notifies the FormControl about the change.\n     */\n    /**\n     * Emits a change event on the `change` output. Also notifies the FormControl about the change.\n     * @private\n     * @return {?}\n     */\n    MatSlideToggle.prototype._emitChangeEvent = /**\n     * Emits a change event on the `change` output. Also notifies the FormControl about the change.\n     * @private\n     * @return {?}\n     */\n    function () {\n        this.onChange(this.checked);\n        this.change.emit(new MatSlideToggleChange(this, this.checked));\n    };\n    /** Retrieves the percentage of thumb from the moved distance. Percentage as fraction of 100. */\n    /**\n     * Retrieves the percentage of thumb from the moved distance. Percentage as fraction of 100.\n     * @private\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     * @private\n     * @param {?} distance\n     * @return {?}\n     */\n    function (distance) {\n        /** @type {?} */\n        var 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            /** @type {?} */\n            var 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            /** @type {?} */\n            var 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            /** @type {?} */\n            var 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            /** @type {?} */\n            var 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 () { 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                    _this._thumbEl.nativeElement.style.transform = '';\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        // Since the event of the `cdkObserveContent` directive runs outside of the zone, the\n        // slide-toggle component will be only marked for check, but no actual change detection runs\n        // automatically. Instead of going back into the zone in order to trigger a change detection\n        // which causes *all* components to be checked (if explicitly marked or not using OnPush),\n        // we only trigger an explicit change detection for the slide-toggle view and it's children.\n        this._changeDetectorRef.detectChanges();\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                        '[attr.tabindex]': '-1',\n                        // Needs to be `-1` so it can still receive programmatic focus.\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                        '(focus)': '_inputElement.nativeElement.focus()',\n                    },\n                    template: \"<label [attr.for]=\\\"inputId\\\" 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\\\" role=\\\"switch\\\" [id]=\\\"inputId\\\" [required]=\\\"required\\\" [tabIndex]=\\\"tabIndex\\\" [checked]=\\\"checked\\\" [disabled]=\\\"disabled\\\" [attr.name]=\\\"name\\\" [attr.aria-checked]=\\\"checked.toString()\\\" [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]=\\\"20\\\" [matRippleAnimation]=\\\"{enterDuration: 150}\\\"><div class=\\\"mat-ripple-element mat-slide-toggle-persistent-ripple\\\"></div></div></div></div><span class=\\\"mat-slide-toggle-content\\\" #labelContent (cdkObserveContent)=\\\"_onLabelTextChange()\\\"><span style=\\\"display:none\\\">&nbsp;</span><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{opacity:.38}.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%}.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 .mat-slide-toggle-ripple{position:absolute;top:calc(50% - 20px);left:calc(50% - 20px);height:40px;width:40px;z-index:1;pointer-events:none}.mat-slide-toggle .mat-slide-toggle-ripple .mat-ripple-element:not(.mat-slide-toggle-persistent-ripple){opacity:.12}.mat-slide-toggle-persistent-ripple{width:100%;height:100%;transform:none}.mat-slide-toggle-bar:hover .mat-slide-toggle-persistent-ripple{opacity:.04}.mat-slide-toggle:not(.mat-disabled).cdk-focused .mat-slide-toggle-persistent-ripple{opacity:.12}.mat-slide-toggle-persistent-ripple,.mat-slide-toggle.mat-disabled .mat-slide-toggle-bar:hover .mat-slide-toggle-persistent-ripple{opacity:0}@media (hover:none){.mat-slide-toggle-bar:hover .mat-slide-toggle-persistent-ripple{display:none}}@media (-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}.mat-slide-toggle.cdk-keyboard-focused .mat-slide-toggle-bar{outline:1px dotted;outline-offset:5px}}@media (-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: String, decorators: [{ type: Attribute, args: ['tabindex',] }] },\n        { type: NgZone },\n        { type: undefined, decorators: [{ type: Inject, args: [MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS,] }] },\n        { type: String, 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    };\n    return MatSlideToggle;\n}(_MatSlideToggleMixinBase));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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\";\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-button::-moz-focus-inner{border:0}.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 (-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 (-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 (-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, \"MAT_SORT_HEADER_COLUMN_DEF\"]], { 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/platform-browser\";\nimport * as i7 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], [2, i6.HAMMER_LOADER]]), 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}[dir=rtl] th.mat-header-cell{text-align:right}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}[dir=rtl] td.mat-cell:first-of-type,[dir=rtl] td.mat-footer-cell:first-of-type,[dir=rtl] th.mat-header-cell:first-of-type{padding-left:0;padding-right:24px}td.mat-cell:last-of-type,td.mat-footer-cell:last-of-type,th.mat-header-cell:last-of-type{padding-right:24px}[dir=rtl] td.mat-cell:last-of-type,[dir=rtl] td.mat-footer-cell:last-of-type,[dir=rtl] th.mat-header-cell:last-of-type{padding-right:0;padding-left: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  \"])), i0.ɵncd(null, 0), (_l()(), i0.ɵted(-1, null, [\"\\n  \"])), (_l()(), i0.ɵeld(6, 16777216, null, null, 1, null, null, null, null, null, null, null)), i0.ɵdid(7, 16384, [[2, 4]], 0, i3.HeaderRowOutlet, [i0.ViewContainerRef, i0.ElementRef], null, null), (_l()(), i0.ɵted(-1, null, [\"\\n  \"])), (_l()(), i0.ɵeld(9, 16777216, null, null, 1, null, null, null, null, null, null, null)), i0.ɵdid(10, 16384, [[1, 4]], 0, i3.DataRowOutlet, [i0.ViewContainerRef, i0.ElementRef], null, null), (_l()(), i0.ɵted(-1, null, [\"\\n  \"])), (_l()(), i0.ɵeld(12, 16777216, null, null, 1, null, null, null, null, null, null, null)), i0.ɵdid(13, 16384, [[3, 4]], 0, i3.FooterRowOutlet, [i0.ViewContainerRef, i0.ElementRef], null, null), (_l()(), i0.ɵted(-1, null, [\"\\n\"]))], 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, i7.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\" }, {}, [\"caption\"]);\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-content select=\"caption\"></ng-content>\n  <ng-container headerRowOutlet></ng-container>\n  <ng-container rowOutlet></ng-container>\n  <ng-container footerRowOutlet></ng-container>\n","<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 notranslate\"], [\"matChipRemove\", \"\"], [\"role\", \"img\"], [\"svgIcon\", \"cancel\"]], [[2, \"mat-icon-inline\", null], [2, \"mat-icon-no-color\", 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, 9158656, null, 0, i6.MatIcon, [i1.ElementRef, i6.MatIconRegistry, [8, null], [2, i6.MAT_ICON_LOCATION]], { 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_14 = \"cancel\"; _ck(_v, 8, 0, currVal_14); }, 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; var currVal_13 = (((i1.ɵnov(_v, 8).color !== \"primary\") && (i1.ɵnov(_v, 8).color !== \"accent\")) && (i1.ɵnov(_v, 8).color !== \"warn\")); _ck(_v, 6, 0, currVal_12, currVal_13); }); }\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], [1, \"aria-invalid\", 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_18 = i1.ɵnov(_v, 2); var currVal_19 = true; var currVal_20 = _co.placeholder; _ck(_v, 10, 0, currVal_18, currVal_19, currVal_20); }, 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); var currVal_17 = ((i1.ɵnov(_v, 10)._chipList && i1.ɵnov(_v, 10)._chipList.ngControl) ? i1.ɵnov(_v, 10)._chipList.ngControl.invalid : null); _ck(_v, 9, 0, currVal_14, currVal_15, currVal_16, currVal_17); }); }\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 { fromEvent, merge, Subject } from 'rxjs';\nimport { startWith, take, takeUntil } 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar 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    MatError.propDecorators = {\n        id: [{ type: Input }]\n    };\n    return MatError;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Animations used by the MatFormField.\n * \\@docs-private\n * @type {?}\n */\nvar matFormFieldAnimations = {\n    /**\n     * Animation that transitions the form field's error and hint messages.\n     */\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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar 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    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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Prefix to be placed in 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar nextUniqueId$2 = 0;\n/** @type {?} */\nvar floatingLabelScale = 0.75;\n/** @type {?} */\nvar 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 * @type {?}\n */\nvar _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 * @type {?}\n */\nvar 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        /**\n         * Whether the outline gap needs to be calculated\n         * immediately on the next change detection run.\n         */\n        _this._outlineGapCalculationNeededImmediately = false;\n        /**\n         * Whether the outline gap needs to be calculated next time the zone has stabilized.\n         */\n        _this._outlineGapCalculationNeededOnStable = false;\n        _this._destroyed = new Subject();\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        _this.appearance = (_defaults && _defaults.appearance) ? _defaults.appearance : 'legacy';\n        return _this;\n    }\n    Object.defineProperty(MatFormField.prototype, \"appearance\", {\n        /** The form-field appearance style. */\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            /** @type {?} */\n            var oldValue = this._appearance;\n            this._appearance = value || (this._defaults && this._defaults.appearance) || 'legacy';\n            if (this._appearance === 'outline' && oldValue !== value) {\n                this._updateOutlineGapOnStable();\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(MatFormField.prototype, \"hideRequiredMarker\", {\n        /** Whether the required marker should be hidden. */\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        /** Text for the form field hint. */\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        /**\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         */\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        /** @type {?} */\n        var control = this._control;\n        if (control.controlType) {\n            this._elementRef.nativeElement.classList.add(\"mat-form-field-type-\" + control.controlType);\n        }\n        // Subscribe to changes in the child control state in order to update the form field UI.\n        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 changes.\n        if (control.ngControl && control.ngControl.valueChanges) {\n            control.ngControl.valueChanges\n                .pipe(takeUntil(this._destroyed))\n                .subscribe(function () { return _this._changeDetectorRef.markForCheck(); });\n        }\n        // @breaking-change 7.0.0 Remove this check once _ngZone is required. Also reconsider\n        // whether the `ngAfterContentChecked` below is still necessary.\n        if (this._ngZone) {\n            this._ngZone.onStable.asObservable().pipe(takeUntil(this._destroyed)).subscribe(function () {\n                if (_this._outlineGapCalculationNeededOnStable) {\n                    _this.updateOutlineGap();\n                }\n            });\n        }\n        // Run change detection and update the outline if the suffix or prefix changes.\n        merge(this._prefixChildren.changes, this._suffixChildren.changes).subscribe(function () {\n            _this._updateOutlineGapOnStable();\n            _this._changeDetectorRef.markForCheck();\n        });\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        if (this._dir) {\n            this._dir.change.pipe(takeUntil(this._destroyed)).subscribe(function () { return _this.updateOutlineGap(); });\n        }\n    };\n    /**\n     * @return {?}\n     */\n    MatFormField.prototype.ngAfterContentChecked = /**\n     * @return {?}\n     */\n    function () {\n        this._validateControlChild();\n        if (this._outlineGapCalculationNeededImmediately) {\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    /**\n     * @return {?}\n     */\n    MatFormField.prototype.ngOnDestroy = /**\n     * @return {?}\n     */\n    function () {\n        this._destroyed.next();\n        this._destroyed.complete();\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        /** @type {?} */\n        var 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     */\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     * @private\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     * @private\n     * @return {?}\n     */\n    function () {\n        if (this._control.placeholder && this._placeholderChild) {\n            throw getMatFormFieldPlaceholderConflictError();\n        }\n    };\n    /** Does any extra processing that is required when handling the hints. */\n    /**\n     * Does any extra processing that is required when handling the hints.\n     * @private\n     * @return {?}\n     */\n    MatFormField.prototype._processHints = /**\n     * Does any extra processing that is required when handling the hints.\n     * @private\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     */\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     * @private\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     * @private\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        if (this._hintChildren) {\n            /** @type {?} */\n            var startHint_1;\n            /** @type {?} */\n            var 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     */\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     * @private\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     * @private\n     * @return {?}\n     */\n    function () {\n        if (this._control) {\n            /** @type {?} */\n            var ids = [];\n            if (this._getDisplayedMessages() === 'hint') {\n                /** @type {?} */\n                var startHint = this._hintChildren ?\n                    this._hintChildren.find(function (hint) { return hint.align === 'start'; }) : null;\n                /** @type {?} */\n                var 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     * @protected\n     * @return {?}\n     */\n    MatFormField.prototype._validateControlChild = /**\n     * Throws an error if the form field's control is missing.\n     * @protected\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        /** @type {?} */\n        var 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 (!(/** @type {?} */ (document.documentElement)).contains(this._elementRef.nativeElement)) {\n            this._outlineGapCalculationNeededImmediately = true;\n            return;\n        }\n        /** @type {?} */\n        var startWidth = 0;\n        /** @type {?} */\n        var gapWidth = 0;\n        /** @type {?} */\n        var container = this._connectionContainerRef.nativeElement;\n        /** @type {?} */\n        var startEls = container.querySelectorAll('.mat-form-field-outline-start');\n        /** @type {?} */\n        var gapEls = container.querySelectorAll('.mat-form-field-outline-gap');\n        if (this._label && this._label.nativeElement.children.length) {\n            /** @type {?} */\n            var containerRect = container.getBoundingClientRect();\n            // If the container's width and height are zero, it means that the element is\n            // invisible and we can't calculate the outline gap. Mark the element as needing\n            // to be checked the next time the zone stabilizes. We can't do this immediately\n            // on the next change detection, because even if the element becomes visible,\n            // the `ClientRect` won't be reclaculated immediately. We reset the\n            // `_outlineGapCalculationNeededImmediately` flag some we don't run the checks twice.\n            if (containerRect.width === 0 && containerRect.height === 0) {\n                this._outlineGapCalculationNeededOnStable = true;\n                this._outlineGapCalculationNeededImmediately = false;\n                return;\n            }\n            /** @type {?} */\n            var containerStart = this._getStartEnd(containerRect);\n            /** @type {?} */\n            var labelStart = this._getStartEnd(labelEl.children[0].getBoundingClientRect());\n            /** @type {?} */\n            var 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 i = 0; i < startEls.length; i++) {\n            startEls.item(i).style.width = startWidth + \"px\";\n        }\n        for (var i = 0; i < gapEls.length; i++) {\n            gapEls.item(i).style.width = gapWidth + \"px\";\n        }\n        this._outlineGapCalculationNeededOnStable =\n            this._outlineGapCalculationNeededImmediately = false;\n    };\n    /** Gets the start end of the rect considering the current directionality. */\n    /**\n     * Gets the start end of the rect considering the current directionality.\n     * @private\n     * @param {?} rect\n     * @return {?}\n     */\n    MatFormField.prototype._getStartEnd = /**\n     * Gets the start end of the rect considering the current directionality.\n     * @private\n     * @param {?} rect\n     * @return {?}\n     */\n    function (rect) {\n        return this._dir && this._dir.value === 'rtl' ? rect.right : rect.left;\n    };\n    /**\n     * Updates the outline gap the new time the zone stabilizes.\n     * @breaking-change 7.0.0 Remove this method and only set the property once `_ngZone` is required.\n     */\n    /**\n     * Updates the outline gap the new time the zone stabilizes.\n     * \\@breaking-change 7.0.0 Remove this method and only set the property once `_ngZone` is required.\n     * @private\n     * @return {?}\n     */\n    MatFormField.prototype._updateOutlineGapOnStable = /**\n     * Updates the outline gap the new time the zone stabilizes.\n     * \\@breaking-change 7.0.0 Remove this method and only set the property once `_ngZone` is required.\n     * @private\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        // @breaking-change 8.0.0 Remove this check and else block once _ngZone is required.\n        if (this._ngZone) {\n            this._outlineGapCalculationNeededOnStable = true;\n        }\n        else {\n            Promise.resolve().then(function () { return _this.updateOutlineGap(); });\n        }\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()\\\" [cdkObserveContentDisabled]=\\\"appearance != 'outline'\\\" [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                    // in form-field-input.css. The MatInput styles are fairly minimal so it shouldn't be a\n                    // big deal for people who 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 (-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}[dir=rtl] .mat-form-field-label-wrapper{left:auto;right:0}.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-control-wrapper{position:relative}.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 (-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 (-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-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::-webkit-calendar-picker-indicator,.mat-input-element::-webkit-clear-button,.mat-input-element::-webkit-inner-spin-button{font-size:.75em}.mat-input-element::placeholder{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:color .4s .133s cubic-bezier(.25,.8,.25,1)}.mat-input-element::-moz-placeholder{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:color .4s .133s cubic-bezier(.25,.8,.25,1)}.mat-input-element::-webkit-input-placeholder{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:color .4s .133s cubic-bezier(.25,.8,.25,1)}.mat-input-element:-ms-input-placeholder{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;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}select.mat-input-element{-moz-appearance:none;-webkit-appearance:none;position:relative;background-color:transparent;display:inline-flex;box-sizing:border-box;padding-top:1em;top:-1em;margin-bottom:-1em}select.mat-input-element::-ms-expand{display:none}select.mat-input-element::-moz-focus-inner{border:0}select.mat-input-element:not(:disabled){cursor:pointer}select.mat-input-element::-ms-value{color:inherit;background:0 0}.mat-form-field-type-mat-native-select .mat-form-field-infix::after{content:'';width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;position:absolute;top:50%;right:0;margin-top:-2.5px}[dir=rtl] .mat-form-field-type-mat-native-select .mat-form-field-infix::after{right:auto;left:0}.mat-form-field-type-mat-native-select .mat-input-element{padding-right:15px}[dir=rtl] .mat-form-field-type-mat-native-select .mat-input-element{padding-right:0;padding-left:15px}.mat-form-field-type-mat-native-select .mat-form-field-label-wrapper{max-width:calc(100% - 10px)}.mat-form-field-type-mat-native-select.mat-form-field-appearance-outline .mat-form-field-infix::after{margin-top:-5px}.mat-form-field-type-mat-native-select.mat-form-field-appearance-fill .mat-form-field-infix::after{margin-top:-10px} .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 (-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 (-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 (-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 (-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 (-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 (-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}\"],\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-has-label]': '_hasFloatingLabel()',\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: String, 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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;transform:translateZ(0)}.mat-standard-chip{transition:box-shadow 280ms cubic-bezier(.4,0,.2,1);display:inline-flex;padding:7px 12px;border-radius:16px;align-items:center;cursor:default;min-height:32px;height:1px}.mat-standard-chip .mat-chip-remove.mat-icon{width:18px;height:18px}.mat-standard-chip::after{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit;opacity:0;content:'';pointer-events:none;transition:opacity .2s cubic-bezier(.35,0,.25,1)}.mat-standard-chip:hover::after{opacity:.12}.mat-standard-chip:focus{outline:0}.mat-standard-chip:focus::after{opacity:.16}@media (-ms-high-contrast:active){.mat-standard-chip{outline:solid 1px}.mat-standard-chip:focus{outline:dotted 2px}}.mat-standard-chip.mat-chip-disabled::after{opacity:0}.mat-standard-chip.mat-chip-disabled .mat-chip-remove,.mat-standard-chip.mat-chip-disabled .mat-chip-trailing-icon{cursor:default}.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:8px;padding-left:0}[dir=rtl] .mat-standard-chip.mat-chip-with-trailing-icon.mat-chip-with-avatar{padding-left:8px;padding-right:0}.mat-standard-chip.mat-chip-with-trailing-icon{padding-top:7px;padding-bottom:7px;padding-right:8px;padding-left:12px}[dir=rtl] .mat-standard-chip.mat-chip-with-trailing-icon{padding-left:8px;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:24px;height:24px;margin-right:8px;margin-left:4px}[dir=rtl] .mat-standard-chip .mat-chip-avatar{margin-left:8px;margin-right:4px}.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:8px;margin-right:0}[dir=rtl] .mat-standard-chip .mat-chip-remove,[dir=rtl] .mat-standard-chip .mat-chip-trailing-icon{margin-right:8px;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:4px;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 } from '@angular/animations';\nimport { __extends } from 'tslib';\nimport { ActiveDescendantKeyManager, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { A, DOWN_ARROW, END, ENTER, HOME, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW, hasModifierKey } from '@angular/cdk/keycodes';\nimport { CdkConnectedOverlay, Overlay, OverlayModule } from '@angular/cdk/overlay';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\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 { distinctUntilChanged, filter, map, startWith, switchMap, take, takeUntil } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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 * \\@docs-private\n * @type {?}\n */\nvar 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.8)',\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 => *', animate('120ms cubic-bezier(0, 0, 0.2, 1)')),\n        transition('* => void', animate('100ms 25ms linear', style({ opacity: 0 })))\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     * @deprecated Not used anymore. To be removed.\n     * \\@breaking-change 8.0.0\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 8.0.0\n * \\@docs-private\n * @type {?}\n */\nvar transformPanel = matSelectAnimations.transformPanel;\n/**\n * @deprecated\n * \\@breaking-change 8.0.0\n * \\@docs-private\n * @type {?}\n */\nvar fadeInContent = matSelectAnimations.fadeInContent;\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar nextUniqueId = 0;\n/**\n * The max height of the select's overlay panel\n * @type {?}\n */\nvar SELECT_PANEL_MAX_HEIGHT = 256;\n/**\n * The panel's padding on the x-axis\n * @type {?}\n */\nvar 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 * @type {?}\n */\nvar SELECT_PANEL_INDENT_PADDING_X = SELECT_PANEL_PADDING_X * 2;\n/**\n * The height of the select items in `em` units.\n * @type {?}\n */\nvar SELECT_ITEM_HEIGHT_EM = 3;\n// TODO(josephperrott): Revert to a constant after 2018 spec updates are fully merged.\n/**\n * Distance between the panel edge and the option text in\n * multi-selection mode.\n *\n * Calculated as:\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 16px.\n * @type {?}\n */\nvar SELECT_MULTIPLE_PANEL_PADDING_X = 0;\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 * @type {?}\n */\nvar SELECT_PANEL_VIEWPORT_PADDING = 8;\n/**\n * Injection token that determines the scroll handling while a select is open.\n * @type {?}\n */\nvar 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 * @type {?}\n */\nvar 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// Boilerplate for applying mixins to MatSelect.\n/**\n * \\@docs-private\n */\nvar  \n// Boilerplate for applying mixins to MatSelect.\n/**\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}());\n/** @type {?} */\nvar _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, _liveAnnouncer) {\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._liveAnnouncer = _liveAnnouncer;\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         * Emits when the panel element is finished transforming in.\n         */\n        _this._panelDoneAnimatingStream = new Subject();\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            _this.ngControl.valueAccessor = _this;\n        }\n        _this._scrollStrategyFactory = scrollStrategyFactory;\n        _this._scrollStrategy = _this._scrollStrategyFactory();\n        _this.tabIndex = parseInt(tabIndex) || 0;\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        /** Placeholder to be shown if no value has been selected. */\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        /** Whether the component is 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        /** Whether the user should be allowed to select multiple options. */\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        /** Whether to center the active option over the trigger. */\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        /**\n         * 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         */\n        get: /**\n         * 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        /** Value of the select control. */\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        /** Unique id of the element. */\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.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();\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).fontSize || '0');\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                /** @type {?} */\n                var 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    /** Handles keyboard events while the select is closed. */\n    /**\n     * Handles keyboard events while the select is closed.\n     * @private\n     * @param {?} event\n     * @return {?}\n     */\n    MatSelect.prototype._handleClosedKeydown = /**\n     * Handles keyboard events while the select is closed.\n     * @private\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        /** @type {?} */\n        var keyCode = event.keyCode;\n        /** @type {?} */\n        var isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW ||\n            keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;\n        /** @type {?} */\n        var isOpenKey = keyCode === ENTER || keyCode === SPACE;\n        /** @type {?} */\n        var manager = this._keyManager;\n        // Open the select on ALT + arrow key to match the native <select>\n        if ((isOpenKey && !hasModifierKey(event)) || ((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            /** @type {?} */\n            var selectedOption = this.selected;\n            if (keyCode === HOME || keyCode === END) {\n                keyCode === HOME ? manager.setFirstItemActive() : manager.setLastItemActive();\n                event.preventDefault();\n            }\n            else {\n                manager.onKeydown(event);\n            }\n            // Since the value has changed, we need to announce it ourselves.\n            // @breaking-change 8.0.0 remove null check for _liveAnnouncer.\n            if (this._liveAnnouncer && selectedOption !== this.selected) {\n                this._liveAnnouncer.announce(((/** @type {?} */ (this.selected))).viewValue);\n            }\n        }\n    };\n    /** Handles keyboard events when the selected is open. */\n    /**\n     * Handles keyboard events when the selected is open.\n     * @private\n     * @param {?} event\n     * @return {?}\n     */\n    MatSelect.prototype._handleOpenKeydown = /**\n     * Handles keyboard events when the selected is open.\n     * @private\n     * @param {?} event\n     * @return {?}\n     */\n    function (event) {\n        /** @type {?} */\n        var keyCode = event.keyCode;\n        /** @type {?} */\n        var isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\n        /** @type {?} */\n        var 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            !hasModifierKey(event)) {\n            event.preventDefault();\n            manager.activeItem._selectViaInteraction();\n        }\n        else if (this._multiple && keyCode === A && event.ctrlKey) {\n            event.preventDefault();\n            /** @type {?} */\n            var 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            /** @type {?} */\n            var 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     * @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._setPseudoCheckboxPaddingSize();\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    // TODO(josephperrott): Remove after 2018 spec updates are fully merged.\n    /** Sets the pseudo checkbox padding size based on the width of the pseudo checkbox. */\n    // TODO(josephperrott): Remove after 2018 spec updates are fully merged.\n    /**\n     * Sets the pseudo checkbox padding size based on the width of the pseudo checkbox.\n     * @private\n     * @return {?}\n     */\n    MatSelect.prototype._setPseudoCheckboxPaddingSize = \n    // TODO(josephperrott): Remove after 2018 spec updates are fully merged.\n    /**\n     * Sets the pseudo checkbox padding size based on the width of the pseudo checkbox.\n     * @private\n     * @return {?}\n     */\n    function () {\n        if (!SELECT_MULTIPLE_PANEL_PADDING_X && this.multiple) {\n            /** @type {?} */\n            var pseudoCheckbox = this.panel.nativeElement.querySelector('.mat-pseudo-checkbox');\n            if (pseudoCheckbox) {\n                SELECT_MULTIPLE_PANEL_PADDING_X = SELECT_PANEL_PADDING_X * 1.5 + pseudoCheckbox.offsetWidth;\n            }\n        }\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     * @private\n     * @return {?}\n     */\n    MatSelect.prototype._initializeSelection = /**\n     * @private\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            _this.stateChanges.next();\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     */\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     * @private\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     * @private\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            /** @type {?} */\n            var 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     * @returns Option that has the corresponding value.\n     */\n    /**\n     * Finds and selects and option based on its value.\n     * @private\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     * @private\n     * @param {?} value\n     * @return {?} Option that has the corresponding value.\n     */\n    function (value) {\n        var _this = this;\n        /** @type {?} */\n        var 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 (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    /** Sets up a key manager to listen to keyboard events on the overlay panel. */\n    /**\n     * Sets up a key manager to listen to keyboard events on the overlay panel.\n     * @private\n     * @return {?}\n     */\n    MatSelect.prototype._initKeyManager = /**\n     * Sets up a key manager to listen to keyboard events on the overlay panel.\n     * @private\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            .withAllowedModifierKeys(['shiftKey']);\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            _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    /** Drops current option subscriptions and IDs and resets from scratch. */\n    /**\n     * Drops current option subscriptions and IDs and resets from scratch.\n     * @private\n     * @return {?}\n     */\n    MatSelect.prototype._resetOptions = /**\n     * Drops current option subscriptions and IDs and resets from scratch.\n     * @private\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        /** @type {?} */\n        var 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    /** Invoked when an option is clicked. */\n    /**\n     * Invoked when an option is clicked.\n     * @private\n     * @param {?} option\n     * @param {?} isUserInput\n     * @return {?}\n     */\n    MatSelect.prototype._onSelect = /**\n     * Invoked when an option is clicked.\n     * @private\n     * @param {?} option\n     * @param {?} isUserInput\n     * @return {?}\n     */\n    function (option, isUserInput) {\n        /** @type {?} */\n        var 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    /** Sorts the selected values in the selected based on their order in the panel. */\n    /**\n     * Sorts the selected values in the selected based on their order in the panel.\n     * @private\n     * @return {?}\n     */\n    MatSelect.prototype._sortValues = /**\n     * Sorts the selected values in the selected based on their order in the panel.\n     * @private\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        if (this.multiple) {\n            /** @type {?} */\n            var options_1 = this.options.toArray();\n            this._selectionModel.sort(function (a, b) {\n                return _this.sortComparator ? _this.sortComparator(a, b, options_1) :\n                    options_1.indexOf(a) - options_1.indexOf(b);\n            });\n            this.stateChanges.next();\n        }\n    };\n    /** Emits change event to set the model value. */\n    /**\n     * Emits change event to set the model value.\n     * @private\n     * @param {?=} fallbackValue\n     * @return {?}\n     */\n    MatSelect.prototype._propagateChanges = /**\n     * Emits change event to set the model value.\n     * @private\n     * @param {?=} fallbackValue\n     * @return {?}\n     */\n    function (fallbackValue) {\n        /** @type {?} */\n        var 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    /** Records option IDs to pass to the aria-owns property. */\n    /**\n     * Records option IDs to pass to the aria-owns property.\n     * @private\n     * @return {?}\n     */\n    MatSelect.prototype._setOptionIds = /**\n     * Records option IDs to pass to the aria-owns property.\n     * @private\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     */\n    /**\n     * Highlights the selected item. If no option is selected, it will highlight\n     * the first item instead.\n     * @private\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     * @private\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    /** Scrolls the active option into view. */\n    /**\n     * Scrolls the active option into view.\n     * @private\n     * @return {?}\n     */\n    MatSelect.prototype._scrollActiveOptionIntoView = /**\n     * Scrolls the active option into view.\n     * @private\n     * @return {?}\n     */\n    function () {\n        /** @type {?} */\n        var activeOptionIndex = this._keyManager.activeItemIndex || 0;\n        /** @type {?} */\n        var 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    /** Gets the index of the provided option in the option list. */\n    /**\n     * Gets the index of the provided option in the option list.\n     * @private\n     * @param {?} option\n     * @return {?}\n     */\n    MatSelect.prototype._getOptionIndex = /**\n     * Gets the index of the provided option in the option list.\n     * @private\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    /** Calculates the scroll position and x- and y-offsets of the overlay panel. */\n    /**\n     * Calculates the scroll position and x- and y-offsets of the overlay panel.\n     * @private\n     * @return {?}\n     */\n    MatSelect.prototype._calculateOverlayPosition = /**\n     * Calculates the scroll position and x- and y-offsets of the overlay panel.\n     * @private\n     * @return {?}\n     */\n    function () {\n        /** @type {?} */\n        var itemHeight = this._getItemHeight();\n        /** @type {?} */\n        var items = this._getItemCount();\n        /** @type {?} */\n        var panelHeight = Math.min(items * itemHeight, SELECT_PANEL_MAX_HEIGHT);\n        /** @type {?} */\n        var scrollContainerHeight = items * itemHeight;\n        // The farthest the panel can be scrolled before it hits the bottom\n        /** @type {?} */\n        var maxScroll = scrollContainerHeight - panelHeight;\n        // If no value is selected we open the popup to the first item.\n        /** @type {?} */\n        var 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        /** @type {?} */\n        var 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        /** @type {?} */\n        var itemHeight = this._getItemHeight();\n        /** @type {?} */\n        var optionOffsetFromScrollTop = itemHeight * selectedIndex;\n        /** @type {?} */\n        var 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        /** @type {?} */\n        var 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     */\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     * @private\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     * @private\n     * @return {?}\n     */\n    function () {\n        /** @type {?} */\n        var overlayRect = this.overlayDir.overlayRef.overlayElement.getBoundingClientRect();\n        /** @type {?} */\n        var viewportSize = this._viewportRuler.getViewportSize();\n        /** @type {?} */\n        var isRtl = this._isRtl();\n        /** @type {?} */\n        var paddingWidth = this.multiple ? SELECT_MULTIPLE_PANEL_PADDING_X + SELECT_PANEL_PADDING_X :\n            SELECT_PANEL_PADDING_X * 2;\n        /** @type {?} */\n        var 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            /** @type {?} */\n            var 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        /** @type {?} */\n        var leftOverflow = 0 - (overlayRect.left + offsetX - (isRtl ? paddingWidth : 0));\n        /** @type {?} */\n        var 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     */\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     * @private\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     * @private\n     * @param {?} selectedIndex\n     * @param {?} scrollBuffer\n     * @param {?} maxScroll\n     * @return {?}\n     */\n    function (selectedIndex, scrollBuffer, maxScroll) {\n        /** @type {?} */\n        var itemHeight = this._getItemHeight();\n        /** @type {?} */\n        var optionHeightAdjustment = (itemHeight - this._triggerRect.height) / 2;\n        /** @type {?} */\n        var maxOptionsDisplayed = Math.floor(SELECT_PANEL_MAX_HEIGHT / itemHeight);\n        /** @type {?} */\n        var 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            /** @type {?} */\n            var firstDisplayedIndex = this._getItemCount() - maxOptionsDisplayed;\n            /** @type {?} */\n            var 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            /** @type {?} */\n            var 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     */\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     * @private\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     * @private\n     * @param {?} maxScroll\n     * @return {?}\n     */\n    function (maxScroll) {\n        /** @type {?} */\n        var itemHeight = this._getItemHeight();\n        /** @type {?} */\n        var viewportSize = this._viewportRuler.getViewportSize();\n        /** @type {?} */\n        var topSpaceAvailable = this._triggerRect.top - SELECT_PANEL_VIEWPORT_PADDING;\n        /** @type {?} */\n        var bottomSpaceAvailable = viewportSize.height - this._triggerRect.bottom - SELECT_PANEL_VIEWPORT_PADDING;\n        /** @type {?} */\n        var panelHeightTop = Math.abs(this._offsetY);\n        /** @type {?} */\n        var totalPanelHeight = Math.min(this._getItemCount() * itemHeight, SELECT_PANEL_MAX_HEIGHT);\n        /** @type {?} */\n        var 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    /** Adjusts the overlay panel up to fit in the viewport. */\n    /**\n     * Adjusts the overlay panel up to fit in the viewport.\n     * @private\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     * @private\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        /** @type {?} */\n        var 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    /** Adjusts the overlay panel down to fit in the viewport. */\n    /**\n     * Adjusts the overlay panel down to fit in the viewport.\n     * @private\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     * @private\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        /** @type {?} */\n        var 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    /** Sets the transform origin point based on the selected option. */\n    /**\n     * Sets the transform origin point based on the selected option.\n     * @private\n     * @return {?}\n     */\n    MatSelect.prototype._getOriginBasedOnOption = /**\n     * Sets the transform origin point based on the selected option.\n     * @private\n     * @return {?}\n     */\n    function () {\n        /** @type {?} */\n        var itemHeight = this._getItemHeight();\n        /** @type {?} */\n        var optionHeightAdjustment = (itemHeight - this._triggerRect.height) / 2;\n        /** @type {?} */\n        var originY = Math.abs(this._offsetY) - optionHeightAdjustment + itemHeight / 2;\n        return \"50% \" + originY + \"px 0px\";\n    };\n    /** Calculates the amount of items in the select. This includes options and group labels. */\n    /**\n     * Calculates the amount of items in the select. This includes options and group labels.\n     * @private\n     * @return {?}\n     */\n    MatSelect.prototype._getItemCount = /**\n     * Calculates the amount of items in the select. This includes options and group labels.\n     * @private\n     * @return {?}\n     */\n    function () {\n        return this.options.length + this.optionGroups.length;\n    };\n    /** Calculates the height of the select's options. */\n    /**\n     * Calculates the height of the select's options.\n     * @private\n     * @return {?}\n     */\n    MatSelect.prototype._getItemHeight = /**\n     * Calculates the height of the select's options.\n     * @private\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\\\" [style.font-size.px]=\\\"_triggerFontSize\\\" (keydown)=\\\"_handleKeydown($event)\\\"><ng-content></ng-content></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{transform:translateY(-50%)}.mat-form-field-appearance-outline .mat-select-arrow-wrapper{transform:translateY(-25%)}.mat-form-field-appearance-standard.mat-form-field-has-label .mat-select:not(.mat-select-empty) .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:transform .4s cubic-bezier(.25,.8,.25,1)}._mat-animation-noopable.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:none}.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%;border-radius:4px}@media (-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-empty]': 'empty',\n                        'class': 'mat-select',\n                        '(keydown)': '_handleKeydown($event)',\n                        '(focus)': '_onFocus()',\n                        '(blur)': '_onBlur()',\n                    },\n                    animations: [\n                        matSelectAnimations.transformPanel\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: String, decorators: [{ type: Attribute, args: ['tabindex',] }] },\n        { type: undefined, decorators: [{ type: Inject, args: [MAT_SELECT_SCROLL_STRATEGY,] }] },\n        { type: LiveAnnouncer }\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        sortComparator: [{ 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { MatSelectModule, MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY, 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, 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 { isDataSource } 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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 * \\@docs-private\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                /** @type {?} */\n                var 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            /** @type {?} */\n            var 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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(/** @docs-private */ 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(/** @docs-private */ 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(/** @docs-private */ 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// Boilerplate for applying mixins to CdkColumnDef.\n/**\n * \\@docs-private\n */\nvar  \n// Boilerplate for applying mixins to CdkColumnDef.\n/**\n * \\@docs-private\n */\nCdkColumnDefBase = /** @class */ (function () {\n    function CdkColumnDefBase() {\n    }\n    return CdkColumnDefBase;\n}());\n/** @type {?} */\nvar _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        /** Unique name for this column. */\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        /**\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         */\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            /** @type {?} */\n            var 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                    providers: [{\n                            provide: 'MAT_SORT_HEADER_COLUMN_DEF',\n                            useExisting: CdkColumnDef\n                        }],\n                },] },\n    ];\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        /** @type {?} */\n        var 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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 * @type {?}\n */\nvar 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(/** @docs-private */ 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            /** @type {?} */\n            var 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// Boilerplate for applying mixins to CdkHeaderRowDef.\n/**\n * \\@docs-private\n */\nvar  \n// Boilerplate for applying mixins to CdkHeaderRowDef.\n/**\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));\n/** @type {?} */\nvar _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    // 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    // 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    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// Boilerplate for applying mixins to CdkFooterRowDef.\n/**\n * \\@docs-private\n */\nvar  \n// Boilerplate for applying mixins to CdkFooterRowDef.\n/**\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));\n/** @type {?} */\nvar _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    // 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    // 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    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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * List of all possible directions that can be used for sticky positioning.\n * \\@docs-private\n * @type {?}\n */\nvar 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 i = 0; i < row.children.length; i++) {\n                /** @type {?} */\n                var 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        /** @type {?} */\n        var hasStickyColumns = stickyStartStates.some(function (state) { return state; }) || stickyEndStates.some(function (state) { return state; });\n        if (!rows.length || !hasStickyColumns || !this._isBrowser) {\n            return;\n        }\n        /** @type {?} */\n        var firstRow = rows[0];\n        /** @type {?} */\n        var numCells = firstRow.children.length;\n        /** @type {?} */\n        var cellWidths = this._getCellWidths(firstRow);\n        /** @type {?} */\n        var startPositions = this._getStickyStartColumnPositions(cellWidths, stickyStartStates);\n        /** @type {?} */\n        var endPositions = this._getStickyEndColumnPositions(cellWidths, stickyEndStates);\n        /** @type {?} */\n        var 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 i = 0; i < numCells; i++) {\n                /** @type {?} */\n                var 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        /** @type {?} */\n        var rows = position === 'bottom' ? rowsToStick.reverse() : rowsToStick;\n        /** @type {?} */\n        var stickyHeight = 0;\n        for (var rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n            if (!stickyStates[rowIndex]) {\n                continue;\n            }\n            /** @type {?} */\n            var row = rows[rowIndex];\n            if (this.isNativeHtmlTable) {\n                for (var j = 0; j < row.children.length; j++) {\n                    /** @type {?} */\n                    var 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            if (rowIndex === rows.length - 1) {\n                // prevent unnecessary reflow from getBoundingClientRect()\n                return;\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        /** @type {?} */\n        var 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        /** @type {?} */\n        var 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        /** @type {?} */\n        var zIndexIncrements = {\n            top: 100,\n            bottom: 10,\n            left: 1,\n            right: 1,\n        };\n        /** @type {?} */\n        var 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        /** @type {?} */\n        var cellWidths = [];\n        /** @type {?} */\n        var firstRowCells = row.children;\n        for (var i = 0; i < firstRowCells.length; i++) {\n            /** @type {?} */\n            var 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        /** @type {?} */\n        var positions = [];\n        /** @type {?} */\n        var nextPosition = 0;\n        for (var 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        /** @type {?} */\n        var positions = [];\n        /** @type {?} */\n        var nextPosition = 0;\n        for (var 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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 * @type {?}\n */\nvar CDK_TABLE_TEMPLATE = \n// Note that according to MDN, the `caption` element has to be projected as the **first** element\n// in the table. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption\n\"\\n  <ng-content select=\\\"caption\\\"></ng-content>\\n  <ng-container headerRowOutlet></ng-container>\\n  <ng-container rowOutlet></ng-container>\\n  <ng-container footerRowOutlet></ng-container>\\n\";\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    /**\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        // TODO(andrewseguin): Remove max value as the end index\n        //   and instead calculate the view on init and scroll.\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        /**\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         */\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' &&\n                (/** @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        /**\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         */\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        /**\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         */\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 (isDataSource(this.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        /** @type {?} */\n        var changes = this._dataDiffer.diff(this._renderRows);\n        if (!changes) {\n            return;\n        }\n        /** @type {?} */\n        var viewContainer = this._rowOutlet.viewContainer;\n        changes.forEachOperation(function (record, prevIndex, currentIndex) {\n            if (record.previousIndex == null) {\n                _this._insertRow(record.item, (/** @type {?} */ (currentIndex)));\n            }\n            else if (currentIndex == null) {\n                viewContainer.remove((/** @type {?} */ (prevIndex)));\n            }\n            else {\n                /** @type {?} */\n                var view = (/** @type {?} */ (viewContainer.get((/** @type {?} */ (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            /** @type {?} */\n            var 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        /** @type {?} */\n        var headerRows = this._getRenderedRows(this._headerRowOutlet);\n        /** @type {?} */\n        var tableElement = (/** @type {?} */ (this._elementRef.nativeElement));\n        // Hide the thead element if there are no header rows. This is necessary to satisfy\n        // overzealous a11y checkers that fail because the `rowgroup` element does not contain\n        // required child `row`.\n        /** @type {?} */\n        var thead = tableElement.querySelector('thead');\n        if (thead) {\n            thead.style.display = headerRows.length ? '' : 'none';\n        }\n        /** @type {?} */\n        var stickyStates = this._headerRowDefs.map(function (def) { return def.sticky; });\n        this._stickyStyler.clearStickyPositioning(headerRows, ['top']);\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        /** @type {?} */\n        var footerRows = this._getRenderedRows(this._footerRowOutlet);\n        /** @type {?} */\n        var tableElement = (/** @type {?} */ (this._elementRef.nativeElement));\n        // Hide the tfoot element if there are no footer rows. This is necessary to satisfy\n        // overzealous a11y checkers that fail because the `rowgroup` element does not contain\n        // required child `row`.\n        /** @type {?} */\n        var tfoot = tableElement.querySelector('tfoot');\n        if (tfoot) {\n            tfoot.style.display = footerRows.length ? '' : 'none';\n        }\n        /** @type {?} */\n        var stickyStates = this._footerRowDefs.map(function (def) { return def.sticky; });\n        this._stickyStyler.clearStickyPositioning(footerRows, ['bottom']);\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        /** @type {?} */\n        var headerRows = this._getRenderedRows(this._headerRowOutlet);\n        /** @type {?} */\n        var dataRows = this._getRenderedRows(this._rowOutlet);\n        /** @type {?} */\n        var 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            /** @type {?} */\n            var rows = [];\n            for (var 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     */\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     * @private\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     * @private\n     * @return {?}\n     */\n    function () {\n        /** @type {?} */\n        var 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        /** @type {?} */\n        var 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 i = 0; i < this._data.length; i++) {\n            /** @type {?} */\n            var data = this._data[i];\n            /** @type {?} */\n            var 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 j = 0; j < renderRowsForData.length; j++) {\n                /** @type {?} */\n                var renderRow = renderRowsForData[j];\n                /** @type {?} */\n                var 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     */\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     * @private\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     * @private\n     * @param {?} data\n     * @param {?} dataIndex\n     * @param {?=} cache\n     * @return {?}\n     */\n    function (data, dataIndex, cache) {\n        /** @type {?} */\n        var rowDefs = this._getRowDefs(data, dataIndex);\n        return rowDefs.map(function (rowDef) {\n            /** @type {?} */\n            var cachedRenderRows = (cache && cache.has(rowDef)) ? (/** @type {?} */ (cache.get(rowDef))) : [];\n            if (cachedRenderRows.length) {\n                /** @type {?} */\n                var 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    /** Update the map containing the content's column definitions. */\n    /**\n     * Update the map containing the content's column definitions.\n     * @private\n     * @return {?}\n     */\n    CdkTable.prototype._cacheColumnDefs = /**\n     * Update the map containing the content's column definitions.\n     * @private\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        this._columnDefsByName.clear();\n        /** @type {?} */\n        var 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    /** Update the list of all available row definitions that can be used. */\n    /**\n     * Update the list of all available row definitions that can be used.\n     * @private\n     * @return {?}\n     */\n    CdkTable.prototype._cacheRowDefs = /**\n     * Update the list of all available row definitions that can be used.\n     * @private\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        /** @type {?} */\n        var 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     */\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     * @private\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     * @private\n     * @return {?}\n     */\n    function () {\n        /** @type {?} */\n        var 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     */\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     * @private\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     * @private\n     * @param {?} dataSource\n     * @return {?}\n     */\n    function (dataSource) {\n        this._data = [];\n        if (isDataSource(this.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    /** Set up a subscription for the data provided by the data source. */\n    /**\n     * Set up a subscription for the data provided by the data source.\n     * @private\n     * @return {?}\n     */\n    CdkTable.prototype._observeRenderChanges = /**\n     * Set up a subscription for the data provided by the data source.\n     * @private\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        /** @type {?} */\n        var dataStream;\n        if (isDataSource(this.dataSource)) {\n            dataStream = 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     */\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     * @private\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     * @private\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     */\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     * @private\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     * @private\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    /** Adds the sticky column styles for the rows according to the columns' stick states. */\n    /**\n     * Adds the sticky column styles for the rows according to the columns' stick states.\n     * @private\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     * @private\n     * @param {?} rows\n     * @param {?} rowDef\n     * @return {?}\n     */\n    function (rows, rowDef) {\n        var _this = this;\n        /** @type {?} */\n        var columnDefs = Array.from(rowDef.columns || []).map(function (columnName) {\n            /** @type {?} */\n            var columnDef = _this._columnDefsByName.get(columnName);\n            if (!columnDef) {\n                throw getTableUnknownColumnError(columnName);\n            }\n            return (/** @type {?} */ (columnDef));\n        });\n        /** @type {?} */\n        var stickyStartStates = columnDefs.map(function (columnDef) { return columnDef.sticky; });\n        /** @type {?} */\n        var 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        /** @type {?} */\n        var renderedRows = [];\n        for (var i = 0; i < rowOutlet.viewContainer.length; i++) {\n            /** @type {?} */\n            var viewRef = ((/** @type {?} */ ((/** @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        /** @type {?} */\n        var rowDefs = [];\n        if (this.multiTemplateDataRows) {\n            rowDefs = this._rowDefs.filter(function (def) { return !def.when || def.when(dataIndex, data); });\n        }\n        else {\n            /** @type {?} */\n            var 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     */\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     * @private\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     * @private\n     * @param {?} renderRow\n     * @param {?} renderIndex\n     * @return {?}\n     */\n    function (renderRow, renderIndex) {\n        /** @type {?} */\n        var rowDef = renderRow.rowDef;\n        /** @type {?} */\n        var 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     */\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     * @private\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     * @private\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     */\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     * @private\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     * @private\n     * @return {?}\n     */\n    function () {\n        /** @type {?} */\n        var viewContainer = this._rowOutlet.viewContainer;\n        for (var renderIndex = 0, count = viewContainer.length; renderIndex < count; renderIndex++) {\n            /** @type {?} */\n            var viewRef = (/** @type {?} */ (viewContainer.get(renderIndex)));\n            /** @type {?} */\n            var 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    /** Gets the column definitions for the provided row def. */\n    /**\n     * Gets the column definitions for the provided row def.\n     * @private\n     * @param {?} rowDef\n     * @return {?}\n     */\n    CdkTable.prototype._getCellTemplates = /**\n     * Gets the column definitions for the provided row def.\n     * @private\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            /** @type {?} */\n            var column = _this._columnDefsByName.get(columnId);\n            if (!column) {\n                throw getTableUnknownColumnError(columnId);\n            }\n            return rowDef.extractCellTemplate(column);\n        });\n    };\n    /** Adds native table sections (e.g. tbody) and moves the row outlets into them. */\n    /**\n     * Adds native table sections (e.g. tbody) and moves the row outlets into them.\n     * @private\n     * @return {?}\n     */\n    CdkTable.prototype._applyNativeTableSections = /**\n     * Adds native table sections (e.g. tbody) and moves the row outlets into them.\n     * @private\n     * @return {?}\n     */\n    function () {\n        // @breaking-change 8.0.0 remove the `|| document` once the `_document` is a required param.\n        /** @type {?} */\n        var documentRef = this._document || document;\n        /** @type {?} */\n        var documentFragment = documentRef.createDocumentFragment();\n        /** @type {?} */\n        var 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            /** @type {?} */\n            var element = documentRef.createElement(section.tag);\n            element.setAttribute('role', 'rowgroup');\n            element.appendChild(section.outlet.elementRef.nativeElement);\n            documentFragment.appendChild(element);\n        }\n        // Use a DocumentFragment so we don't hit the DOM on each iteration.\n        this._elementRef.nativeElement.appendChild(documentFragment);\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     */\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     * @private\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     * @private\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     */\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     * @private\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     * @private\n     * @return {?}\n     */\n    function () {\n        /** @type {?} */\n        var 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     */\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     * @private\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     * @private\n     * @return {?}\n     */\n    function () {\n        var _this = this;\n        /** @type {?} */\n        var 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: String, 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar 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,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} 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":""}