@covalent/core 6.3.0 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/breadcrumbs/breadcrumbs.component.d.ts +1 -1
- package/dialogs/window-dialog/window-dialog.component.d.ts +1 -1
- package/dynamic-menu/dynamic-menu-item/dynamic-menu-item.component.d.ts +1 -1
- package/dynamic-menu/dynamic-menu-item/dynamic-menu-link/dynamic-menu-link.component.d.ts +1 -1
- package/dynamic-menu/dynamic-menu.component.d.ts +1 -1
- package/esm2022/breadcrumbs/breadcrumb/breadcrumb.component.mjs +94 -0
- package/esm2022/breadcrumbs/breadcrumbs.component.mjs +135 -0
- package/{esm2020 → esm2022}/breadcrumbs/breadcrumbs.module.mjs +5 -5
- package/esm2022/common/behaviors/control-value-accesor.mixin.mjs +43 -0
- package/esm2022/common/behaviors/disable-ripple.mixin.mjs +24 -0
- package/{esm2020 → esm2022}/common/behaviors/disabled.mixin.mjs +2 -2
- package/{esm2020 → esm2022}/common/common.module.mjs +17 -17
- package/esm2022/common/directives/fullscreen/fullscreen.directive.mjs +87 -0
- package/esm2022/common/forms/auto-trim/auto-trim.directive.mjs +37 -0
- package/esm2022/common/functions/convert.mjs +84 -0
- package/esm2022/common/functions/download.mjs +75 -0
- package/esm2022/common/pipes/bytes/bytes.pipe.mjs +42 -0
- package/esm2022/common/pipes/decimal-bytes/decimal-bytes.pipe.mjs +42 -0
- package/esm2022/common/pipes/digits/digits.pipe.mjs +41 -0
- package/{esm2020 → esm2022}/common/pipes/time-ago/time-ago.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/common/pipes/time-difference/time-difference.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/common/pipes/time-until/time-until.pipe.mjs +4 -4
- package/esm2022/common/pipes/truncate/truncate.pipe.mjs +27 -0
- package/esm2022/common/services/icon.service.mjs +1087 -0
- package/esm2022/common/services/router-path.service.mjs +30 -0
- package/esm2022/dialogs/alert-dialog/alert-dialog.component.mjs +26 -0
- package/esm2022/dialogs/confirm-dialog/confirm-dialog.component.mjs +31 -0
- package/esm2022/dialogs/dialog.component.mjs +60 -0
- package/{esm2020 → esm2022}/dialogs/dialogs.module.mjs +39 -39
- package/esm2022/dialogs/prompt-dialog/prompt-dialog.component.mjs +84 -0
- package/esm2022/dialogs/resizable-draggable-dialog/resizable-draggable-dialog.mjs +220 -0
- package/esm2022/dialogs/services/dialog.service.mjs +179 -0
- package/esm2022/dialogs/window-dialog/window-dialog.component.mjs +40 -0
- package/esm2022/dynamic-menu/dynamic-menu-item/dynamic-menu-item.component.mjs +30 -0
- package/esm2022/dynamic-menu/dynamic-menu-item/dynamic-menu-link/dynamic-menu-link.component.mjs +23 -0
- package/esm2022/dynamic-menu/dynamic-menu.component.mjs +28 -0
- package/{esm2020 → esm2022}/dynamic-menu/dynamic-menu.module.mjs +19 -19
- package/esm2022/file/directives/file-drop.directive.mjs +145 -0
- package/esm2022/file/directives/file-select.directive.mjs +78 -0
- package/esm2022/file/file-input/file-input.component.mjs +146 -0
- package/esm2022/file/file-upload/file-upload.component.mjs +185 -0
- package/{esm2020 → esm2022}/file/file.module.mjs +21 -21
- package/esm2022/file/services/file.service.mjs +66 -0
- package/esm2022/json-formatter/json-formatter.component.mjs +222 -0
- package/{esm2020 → esm2022}/json-formatter/json-formatter.module.mjs +5 -5
- package/esm2022/layout/layout-card-over/layout-card-over.component.mjs +50 -0
- package/esm2022/layout/layout-footer/layout-footer.component.mjs +36 -0
- package/esm2022/layout/layout-manage-list/layout-manage-list.component.mjs +92 -0
- package/{esm2020 → esm2022}/layout/layout-manage-list/layout-manage-list.directives.mjs +10 -10
- package/esm2022/layout/layout-nav/layout-nav.component.mjs +76 -0
- package/esm2022/layout/layout-nav-list/layout-nav-list.component.mjs +154 -0
- package/{esm2020 → esm2022}/layout/layout-nav-list/layout-nav-list.directives.mjs +10 -10
- package/esm2022/layout/layout-toggle.class.mjs +96 -0
- package/esm2022/layout/layout.component.mjs +91 -0
- package/{esm2020 → esm2022}/layout/layout.directives.mjs +10 -10
- package/{esm2020 → esm2022}/layout/layout.module.mjs +55 -55
- package/esm2022/layout/navigation-drawer/navigation-drawer.component.mjs +221 -0
- package/esm2022/loading/directives/loading.directive.mjs +133 -0
- package/esm2022/loading/loading.component.mjs +193 -0
- package/{esm2020 → esm2022}/loading/loading.module.mjs +13 -13
- package/esm2022/loading/services/loading.factory.mjs +210 -0
- package/esm2022/loading/services/loading.service.mjs +219 -0
- package/{esm2020 → esm2022}/menu/menu.component.mjs +4 -4
- package/{esm2020 → esm2022}/menu/menu.module.mjs +5 -5
- package/esm2022/message/message.component.mjs +222 -0
- package/{esm2020 → esm2022}/message/message.module.mjs +7 -7
- package/esm2022/search/search-box/search-box.component.mjs +198 -0
- package/esm2022/search/search-input/search-input.component.mjs +214 -0
- package/{esm2020 → esm2022}/search/search.module.mjs +13 -13
- package/esm2022/side-sheet/side-sheet-container.mjs +285 -0
- package/esm2022/side-sheet/side-sheet-ref.mjs +30 -0
- package/{esm2020 → esm2022}/side-sheet/side-sheet.config.mjs +2 -5
- package/esm2022/side-sheet/side-sheet.content-directives.mjs +206 -0
- package/esm2022/side-sheet/side-sheet.mjs +236 -0
- package/{esm2020 → esm2022}/side-sheet/side-sheet.module.mjs +14 -14
- package/esm2022/user-profile/user-profile-menu/user-profile-menu.component.mjs +25 -0
- package/esm2022/user-profile/user-profile.component.mjs +21 -0
- package/{esm2020 → esm2022}/user-profile/user-profile.module.mjs +15 -15
- package/{fesm2015 → fesm2022}/covalent-core-breadcrumbs.mjs +28 -22
- package/{fesm2015 → fesm2022}/covalent-core-breadcrumbs.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/covalent-core-common.mjs +1131 -1125
- package/fesm2022/covalent-core-common.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/covalent-core-dialogs.mjs +109 -80
- package/{fesm2020 → fesm2022}/covalent-core-dialogs.mjs.map +1 -1
- package/fesm2022/covalent-core-dynamic-menu.mjs +125 -0
- package/{fesm2015 → fesm2022}/covalent-core-dynamic-menu.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/covalent-core-file.mjs +148 -110
- package/{fesm2020 → fesm2022}/covalent-core-file.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/covalent-core-json-formatter.mjs +26 -21
- package/{fesm2020 → fesm2022}/covalent-core-json-formatter.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/covalent-core-layout.mjs +396 -271
- package/{fesm2015 → fesm2022}/covalent-core-layout.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/covalent-core-loading.mjs +100 -78
- package/{fesm2020 → fesm2022}/covalent-core-loading.mjs.map +1 -1
- package/{fesm2015 → fesm2022}/covalent-core-menu.mjs +7 -7
- package/{fesm2015 → fesm2022}/covalent-core-menu.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/covalent-core-message.mjs +42 -23
- package/{fesm2020 → fesm2022}/covalent-core-message.mjs.map +1 -1
- package/fesm2022/covalent-core-search.mjs +438 -0
- package/fesm2022/covalent-core-search.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/covalent-core-side-sheet.mjs +124 -99
- package/{fesm2020 → fesm2022}/covalent-core-side-sheet.mjs.map +1 -1
- package/fesm2022/covalent-core-user-profile.mjs +87 -0
- package/fesm2022/covalent-core-user-profile.mjs.map +1 -0
- package/file/directives/file-drop.directive.d.ts +1 -1
- package/file/directives/file-select.directive.d.ts +1 -1
- package/file/file-input/file-input.component.d.ts +1 -1
- package/file/file-upload/file-upload.component.d.ts +1 -1
- package/json-formatter/json-formatter.component.d.ts +1 -1
- package/layout/layout-card-over/layout-card-over.component.d.ts +1 -1
- package/layout/layout-footer/layout-footer.component.d.ts +1 -1
- package/layout/layout-manage-list/layout-manage-list.component.d.ts +1 -1
- package/layout/layout-manage-list/layout-manage-list.directives.d.ts +3 -3
- package/layout/layout-nav/layout-nav.component.d.ts +1 -1
- package/layout/layout-nav-list/layout-nav-list.component.d.ts +1 -1
- package/layout/layout-nav-list/layout-nav-list.directives.d.ts +3 -3
- package/layout/layout-toggle.class.d.ts +1 -1
- package/layout/layout.component.d.ts +1 -1
- package/layout/layout.directives.d.ts +3 -3
- package/layout/navigation-drawer/navigation-drawer.component.d.ts +1 -1
- package/loading/directives/loading.directive.d.ts +1 -1
- package/message/message.component.d.ts +1 -1
- package/package.json +55 -91
- package/search/search-box/search-box.component.d.ts +1 -1
- package/search/search-input/search-input.component.d.ts +1 -1
- package/side-sheet/side-sheet.content-directives.d.ts +2 -2
- package/user-profile/user-profile-menu/user-profile-menu.component.d.ts +1 -1
- package/user-profile/user-profile.component.d.ts +1 -1
- package/common/styles/font/README.md +0 -11
- package/dialogs/src/README.md +0 -223
- package/esm2020/breadcrumbs/breadcrumb/breadcrumb.component.mjs +0 -92
- package/esm2020/breadcrumbs/breadcrumbs.component.mjs +0 -131
- package/esm2020/common/behaviors/control-value-accesor.mixin.mjs +0 -41
- package/esm2020/common/behaviors/disable-ripple.mixin.mjs +0 -24
- package/esm2020/common/directives/fullscreen/fullscreen.directive.mjs +0 -85
- package/esm2020/common/forms/auto-trim/auto-trim.directive.mjs +0 -36
- package/esm2020/common/functions/convert.mjs +0 -84
- package/esm2020/common/functions/download.mjs +0 -75
- package/esm2020/common/pipes/bytes/bytes.pipe.mjs +0 -42
- package/esm2020/common/pipes/decimal-bytes/decimal-bytes.pipe.mjs +0 -42
- package/esm2020/common/pipes/digits/digits.pipe.mjs +0 -39
- package/esm2020/common/pipes/truncate/truncate.pipe.mjs +0 -27
- package/esm2020/common/services/icon.service.mjs +0 -1089
- package/esm2020/common/services/router-path.service.mjs +0 -29
- package/esm2020/dialogs/alert-dialog/alert-dialog.component.mjs +0 -23
- package/esm2020/dialogs/confirm-dialog/confirm-dialog.component.mjs +0 -28
- package/esm2020/dialogs/dialog.component.mjs +0 -57
- package/esm2020/dialogs/prompt-dialog/prompt-dialog.component.mjs +0 -75
- package/esm2020/dialogs/resizable-draggable-dialog/resizable-draggable-dialog.mjs +0 -216
- package/esm2020/dialogs/services/dialog.service.mjs +0 -174
- package/esm2020/dialogs/window-dialog/window-dialog.component.mjs +0 -38
- package/esm2020/dynamic-menu/dynamic-menu-item/dynamic-menu-item.component.mjs +0 -30
- package/esm2020/dynamic-menu/dynamic-menu-item/dynamic-menu-link/dynamic-menu-link.component.mjs +0 -24
- package/esm2020/dynamic-menu/dynamic-menu.component.mjs +0 -28
- package/esm2020/file/directives/file-drop.directive.mjs +0 -139
- package/esm2020/file/directives/file-select.directive.mjs +0 -77
- package/esm2020/file/file-input/file-input.component.mjs +0 -128
- package/esm2020/file/file-upload/file-upload.component.mjs +0 -174
- package/esm2020/file/services/file.service.mjs +0 -64
- package/esm2020/json-formatter/json-formatter.component.mjs +0 -217
- package/esm2020/layout/layout-card-over/layout-card-over.component.mjs +0 -40
- package/esm2020/layout/layout-footer/layout-footer.component.mjs +0 -33
- package/esm2020/layout/layout-manage-list/layout-manage-list.component.mjs +0 -93
- package/esm2020/layout/layout-nav/layout-nav.component.mjs +0 -50
- package/esm2020/layout/layout-nav-list/layout-nav-list.component.mjs +0 -128
- package/esm2020/layout/layout-toggle.class.mjs +0 -92
- package/esm2020/layout/layout.component.mjs +0 -92
- package/esm2020/layout/navigation-drawer/navigation-drawer.component.mjs +0 -163
- package/esm2020/loading/directives/loading.directive.mjs +0 -126
- package/esm2020/loading/loading.component.mjs +0 -187
- package/esm2020/loading/services/loading.factory.mjs +0 -207
- package/esm2020/loading/services/loading.service.mjs +0 -213
- package/esm2020/message/message.component.mjs +0 -203
- package/esm2020/search/search-box/search-box.component.mjs +0 -194
- package/esm2020/search/search-input/search-input.component.mjs +0 -207
- package/esm2020/side-sheet/side-sheet-container.mjs +0 -274
- package/esm2020/side-sheet/side-sheet-ref.mjs +0 -26
- package/esm2020/side-sheet/side-sheet.content-directives.mjs +0 -201
- package/esm2020/side-sheet/side-sheet.mjs +0 -228
- package/esm2020/user-profile/user-profile-menu/user-profile-menu.component.mjs +0 -23
- package/esm2020/user-profile/user-profile.component.mjs +0 -19
- package/fesm2015/covalent-core-common.mjs +0 -2281
- package/fesm2015/covalent-core-common.mjs.map +0 -1
- package/fesm2015/covalent-core-dialogs.mjs +0 -668
- package/fesm2015/covalent-core-dialogs.mjs.map +0 -1
- package/fesm2015/covalent-core-dynamic-menu.mjs +0 -126
- package/fesm2015/covalent-core-file.mjs +0 -621
- package/fesm2015/covalent-core-file.mjs.map +0 -1
- package/fesm2015/covalent-core-json-formatter.mjs +0 -298
- package/fesm2015/covalent-core-json-formatter.mjs.map +0 -1
- package/fesm2015/covalent-core-layout.mjs +0 -1024
- package/fesm2015/covalent-core-loading.mjs +0 -766
- package/fesm2015/covalent-core-loading.mjs.map +0 -1
- package/fesm2015/covalent-core-message.mjs +0 -284
- package/fesm2015/covalent-core-message.mjs.map +0 -1
- package/fesm2015/covalent-core-search.mjs +0 -430
- package/fesm2015/covalent-core-search.mjs.map +0 -1
- package/fesm2015/covalent-core-side-sheet.mjs +0 -784
- package/fesm2015/covalent-core-side-sheet.mjs.map +0 -1
- package/fesm2015/covalent-core-user-profile.mjs +0 -83
- package/fesm2015/covalent-core-user-profile.mjs.map +0 -1
- package/fesm2020/covalent-core-breadcrumbs.mjs +0 -243
- package/fesm2020/covalent-core-breadcrumbs.mjs.map +0 -1
- package/fesm2020/covalent-core-common.mjs.map +0 -1
- package/fesm2020/covalent-core-dynamic-menu.mjs +0 -126
- package/fesm2020/covalent-core-dynamic-menu.mjs.map +0 -1
- package/fesm2020/covalent-core-layout.mjs.map +0 -1
- package/fesm2020/covalent-core-menu.mjs +0 -37
- package/fesm2020/covalent-core-menu.mjs.map +0 -1
- package/fesm2020/covalent-core-search.mjs +0 -427
- package/fesm2020/covalent-core-search.mjs.map +0 -1
- package/fesm2020/covalent-core-user-profile.mjs +0 -83
- package/fesm2020/covalent-core-user-profile.mjs.map +0 -1
- package/fesm2020/covalent-core.mjs +0 -4
- package/fesm2020/covalent-core.mjs.map +0 -1
- package/file/src/file-input/README.md +0 -147
- package/file/src/file-upload/README.md +0 -136
- package/layout/src/layout-card-over/README.md +0 -43
- package/layout/src/layout-manage-list/README.md +0 -80
- package/layout/src/layout-nav/README.md +0 -50
- package/layout/src/layout-nav-list/README.md +0 -105
- package/search/src/search-box/README.md +0 -73
- package/search/src/search-input/README.md +0 -74
- /package/{esm2020 → esm2022}/breadcrumbs/covalent-core-breadcrumbs.mjs +0 -0
- /package/{esm2020 → esm2022}/breadcrumbs/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/common/animations/bounce/bounce.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/common/animations/collapse/collapse.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/common/animations/common/interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/common/animations/fade/fadeInOut.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/common/animations/flash/flash.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/common/animations/headshake/headshake.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/common/animations/jello/jello.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/common/animations/pulse/pulse.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/common/animations/rotate/rotate.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/common/covalent-core-common.mjs +0 -0
- /package/{esm2020 → esm2022}/common/forms/validators/validators.mjs +0 -0
- /package/{esm2020 → esm2022}/common/functions/clipboard.mjs +0 -0
- /package/{esm2020 → esm2022}/common/functions/file.mjs +0 -0
- /package/{esm2020 → esm2022}/common/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/covalent-core.mjs +0 -0
- /package/{esm2020 → esm2022}/dialogs/covalent-core-dialogs.mjs +0 -0
- /package/{esm2020 → esm2022}/dialogs/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/dynamic-menu/covalent-core-dynamic-menu.mjs +0 -0
- /package/{esm2020 → esm2022}/dynamic-menu/dynamic-menu.menu.mjs +0 -0
- /package/{esm2020 → esm2022}/dynamic-menu/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/file/covalent-core-file.mjs +0 -0
- /package/{esm2020 → esm2022}/file/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/json-formatter/collapse.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/json-formatter/covalent-core-json-formatter.mjs +0 -0
- /package/{esm2020 → esm2022}/json-formatter/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/layout/covalent-core-layout.mjs +0 -0
- /package/{esm2020 → esm2022}/layout/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/loading/covalent-core-loading.mjs +0 -0
- /package/{esm2020 → esm2022}/loading/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/menu/covalent-core-menu.mjs +0 -0
- /package/{esm2020 → esm2022}/menu/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/message/collapse.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/message/covalent-core-message.mjs +0 -0
- /package/{esm2020 → esm2022}/message/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/search/covalent-core-search.mjs +0 -0
- /package/{esm2020 → esm2022}/search/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/side-sheet/covalent-core-side-sheet.mjs +0 -0
- /package/{esm2020 → esm2022}/side-sheet/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/side-sheet/side-sheet.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/user-profile/covalent-core-user-profile.mjs +0 -0
- /package/{esm2020 → esm2022}/user-profile/public_api.mjs +0 -0
- /package/{fesm2015 → fesm2022}/covalent-core.mjs +0 -0
- /package/{fesm2015 → fesm2022}/covalent-core.mjs.map +0 -0
@@ -0,0 +1,214 @@
|
|
1
|
+
import { Component, ViewChild, Input, Output, EventEmitter, Optional, ChangeDetectionStrategy, ChangeDetectorRef, forwardRef, ElementRef, NgZone, } from '@angular/core';
|
2
|
+
import { trigger, state, style, transition, animate, } from '@angular/animations';
|
3
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
4
|
+
import { Dir } from '@angular/cdk/bidi';
|
5
|
+
import { MatInput } from '@angular/material/input';
|
6
|
+
import { fromEvent, Subject } from 'rxjs';
|
7
|
+
import { debounceTime, skip, takeUntil } from 'rxjs/operators';
|
8
|
+
import { mixinControlValueAccessor, } from '@covalent/core/common';
|
9
|
+
import * as i0 from "@angular/core";
|
10
|
+
import * as i1 from "@angular/cdk/bidi";
|
11
|
+
import * as i2 from "@angular/forms";
|
12
|
+
import * as i3 from "@angular/common";
|
13
|
+
import * as i4 from "@angular/material/input";
|
14
|
+
import * as i5 from "@angular/material/form-field";
|
15
|
+
import * as i6 from "@angular/material/icon";
|
16
|
+
import * as i7 from "@angular/material/button";
|
17
|
+
export class TdSearchInputBase {
|
18
|
+
_changeDetectorRef;
|
19
|
+
constructor(_changeDetectorRef) {
|
20
|
+
this._changeDetectorRef = _changeDetectorRef;
|
21
|
+
}
|
22
|
+
}
|
23
|
+
export const _TdSearchInputMixinBase = mixinControlValueAccessor(TdSearchInputBase);
|
24
|
+
export class TdSearchInputComponent extends _TdSearchInputMixinBase {
|
25
|
+
_dir;
|
26
|
+
_changeDetectorRef;
|
27
|
+
_ngZone;
|
28
|
+
_input;
|
29
|
+
_searchElement;
|
30
|
+
/**
|
31
|
+
* appearance?: MatFormFieldAppearance
|
32
|
+
* Appearance style for the underlying input component.
|
33
|
+
*/
|
34
|
+
appearance = 'outline';
|
35
|
+
/**
|
36
|
+
* showUnderline?: boolean
|
37
|
+
* Sets if the input underline should be visible. Defaults to 'false'.
|
38
|
+
*/
|
39
|
+
showUnderline = false;
|
40
|
+
/**
|
41
|
+
* debounce?: number
|
42
|
+
* Debounce timeout between keypresses. Defaults to 400.
|
43
|
+
*/
|
44
|
+
debounce = 400;
|
45
|
+
/**
|
46
|
+
* placeholder?: string
|
47
|
+
* Placeholder for the underlying input component.
|
48
|
+
*/
|
49
|
+
placeholder = '';
|
50
|
+
/**
|
51
|
+
* clearIcon?: string
|
52
|
+
* The icon used to clear the search input.
|
53
|
+
* Defaults to 'cancel' icon.
|
54
|
+
*/
|
55
|
+
clearIcon = 'cancel';
|
56
|
+
value;
|
57
|
+
/**
|
58
|
+
* searchDebounce: function($event)
|
59
|
+
* Event emitted after the [debounce] timeout.
|
60
|
+
*/
|
61
|
+
searchDebounce = new EventEmitter();
|
62
|
+
/**
|
63
|
+
* search: function($event)
|
64
|
+
* Event emitted after the key enter has been pressed.
|
65
|
+
*/
|
66
|
+
search = new EventEmitter();
|
67
|
+
/**
|
68
|
+
* clear: function()
|
69
|
+
* Event emitted after the clear icon has been clicked.
|
70
|
+
*/
|
71
|
+
clear = new EventEmitter();
|
72
|
+
/**
|
73
|
+
* blur: function()
|
74
|
+
* Event emitted after the blur event has been called in underlying input.
|
75
|
+
*/
|
76
|
+
blurSearch = new EventEmitter();
|
77
|
+
get isRTL() {
|
78
|
+
if (this._dir) {
|
79
|
+
return this._dir.dir === 'rtl';
|
80
|
+
}
|
81
|
+
return false;
|
82
|
+
}
|
83
|
+
_destroy$ = new Subject();
|
84
|
+
constructor(_dir, _changeDetectorRef, _ngZone) {
|
85
|
+
super(_changeDetectorRef);
|
86
|
+
this._dir = _dir;
|
87
|
+
this._changeDetectorRef = _changeDetectorRef;
|
88
|
+
this._ngZone = _ngZone;
|
89
|
+
}
|
90
|
+
ngOnInit() {
|
91
|
+
this._input?.ngControl?.valueChanges
|
92
|
+
?.pipe(debounceTime(this.debounce), skip(1), // skip first change when value is set to undefined
|
93
|
+
takeUntil(this._destroy$))
|
94
|
+
.subscribe((value) => {
|
95
|
+
this._searchTermChanged(value);
|
96
|
+
});
|
97
|
+
this._ngZone.runOutsideAngular(() => fromEvent(this._searchElement.nativeElement, 'search')
|
98
|
+
.pipe(takeUntil(this._destroy$))
|
99
|
+
.subscribe(this._stopPropagation));
|
100
|
+
}
|
101
|
+
ngOnDestroy() {
|
102
|
+
this._destroy$.next();
|
103
|
+
}
|
104
|
+
/**
|
105
|
+
* Method to focus to underlying input.
|
106
|
+
*/
|
107
|
+
focus() {
|
108
|
+
this._input?.focus();
|
109
|
+
}
|
110
|
+
handleBlur() {
|
111
|
+
this.blurSearch.emit();
|
112
|
+
}
|
113
|
+
handleSearch(event) {
|
114
|
+
this._stopPropagation(event);
|
115
|
+
if (typeof this.value == 'string') {
|
116
|
+
this.search.emit(this.value);
|
117
|
+
}
|
118
|
+
}
|
119
|
+
/**
|
120
|
+
* Method to clear the underlying input.
|
121
|
+
*/
|
122
|
+
clearSearch() {
|
123
|
+
this.value = '';
|
124
|
+
this._changeDetectorRef.markForCheck();
|
125
|
+
this.clear.emit();
|
126
|
+
}
|
127
|
+
_searchTermChanged(value) {
|
128
|
+
this.searchDebounce.emit(value);
|
129
|
+
}
|
130
|
+
_stopPropagation(event) {
|
131
|
+
event.stopPropagation();
|
132
|
+
}
|
133
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TdSearchInputComponent, deps: [{ token: i1.Dir, optional: true }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
134
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TdSearchInputComponent, selector: "td-search-input", inputs: { appearance: "appearance", showUnderline: "showUnderline", debounce: "debounce", placeholder: "placeholder", clearIcon: "clearIcon", value: "value" }, outputs: { searchDebounce: "searchDebounce", search: "search", clear: "clear", blurSearch: "blurSearch" }, providers: [
|
135
|
+
{
|
136
|
+
provide: NG_VALUE_ACCESSOR,
|
137
|
+
useExisting: forwardRef(() => TdSearchInputComponent),
|
138
|
+
multi: true,
|
139
|
+
},
|
140
|
+
], viewQueries: [{ propertyName: "_input", first: true, predicate: MatInput, descendants: true, static: true }, { propertyName: "_searchElement", first: true, predicate: ["searchElement"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"td-search-input\">\n <mat-form-field\n class=\"td-search-input-field\"\n [class.mat-hide-underline]=\"!showUnderline\"\n [appearance]=\"appearance\"\n >\n <input\n matInput\n #searchElement\n type=\"search\"\n [(ngModel)]=\"value\"\n [placeholder]=\"placeholder\"\n (blur)=\"handleBlur()\"\n (keyup.enter)=\"handleSearch($event)\"\n />\n <span\n matSuffix\n *ngIf=\"\n appearance === 'fill' ||\n appearance === 'outline' ||\n appearance === 'standard'\n \"\n >\n <ng-template [ngTemplateOutlet]=\"clearButton\"></ng-template>\n </span>\n </mat-form-field>\n</div>\n<ng-template #clearButton>\n <button\n mat-icon-button\n class=\"td-search-input-clear\"\n type=\"button\"\n [@searchState]=\"\n searchElement.value ? 'show' : isRTL ? 'hide-left' : 'hide-right'\n \"\n (click)=\"clearSearch()\"\n >\n <mat-icon>{{ clearIcon }}</mat-icon>\n </button>\n</ng-template>\n", styles: [":host .td-search-input{overflow-x:hidden;box-sizing:border-box;display:flex;flex-direction:row;align-items:baseline;align-content:center;max-width:100%;justify-content:flex-end}:host .td-search-input .td-search-input-field{flex:1}:host .td-search-input ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{display:none}:host .td-search-input ::ng-deep mat-form-field.mat-form-field-appearance-outline .mat-form-field-wrapper{padding-bottom:0}:host .td-search-input ::ng-deep mat-form-field.mat-form-field-appearance-fill .mat-form-field-wrapper{padding-bottom:0}:host .td-search-input ::ng-deep mat-form-field.mat-form-field-appearance-fill .mat-form-field-wrapper .mat-form-field-flex{height:52px}:host .td-search-input ::ng-deep mat-form-field.mat-form-field-appearance-fill .mat-form-field-wrapper .mat-form-field-underline{bottom:0}:host .td-search-input ::ng-deep mat-form-field.mat-form-field-appearance-standard .mat-form-field-wrapper{padding-bottom:0}:host .td-search-input ::ng-deep mat-form-field.mat-form-field-appearance-standard .mat-form-field-wrapper .mat-form-field-infix{bottom:.4em}:host .td-search-input ::ng-deep mat-form-field.mat-form-field-appearance-standard .mat-form-field-wrapper .mat-form-field-underline{bottom:0}:host .td-search-input ::ng-deep mat-form-field .mat-input-element{caret-color:currentColor}:host .td-search-input ::ng-deep mat-form-field.mat-hide-underline .mat-form-field-underline{display:none}:host .td-search-input .td-search-input-clear{flex:0 0 auto}\n"], dependencies: [{ kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], animations: [
|
141
|
+
trigger('searchState', [
|
142
|
+
state('hide-left', style({
|
143
|
+
transform: 'translateX(-150%)',
|
144
|
+
display: 'none',
|
145
|
+
})),
|
146
|
+
state('hide-right', style({
|
147
|
+
transform: 'translateX(150%)',
|
148
|
+
display: 'none',
|
149
|
+
})),
|
150
|
+
state('show', style({
|
151
|
+
transform: 'translateX(0%)',
|
152
|
+
display: 'block',
|
153
|
+
})),
|
154
|
+
transition('* => show', animate('200ms ease-in')),
|
155
|
+
transition('show => *', animate('200ms ease-out')),
|
156
|
+
]),
|
157
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
158
|
+
}
|
159
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TdSearchInputComponent, decorators: [{
|
160
|
+
type: Component,
|
161
|
+
args: [{ providers: [
|
162
|
+
{
|
163
|
+
provide: NG_VALUE_ACCESSOR,
|
164
|
+
useExisting: forwardRef(() => TdSearchInputComponent),
|
165
|
+
multi: true,
|
166
|
+
},
|
167
|
+
], selector: 'td-search-input', changeDetection: ChangeDetectionStrategy.OnPush, animations: [
|
168
|
+
trigger('searchState', [
|
169
|
+
state('hide-left', style({
|
170
|
+
transform: 'translateX(-150%)',
|
171
|
+
display: 'none',
|
172
|
+
})),
|
173
|
+
state('hide-right', style({
|
174
|
+
transform: 'translateX(150%)',
|
175
|
+
display: 'none',
|
176
|
+
})),
|
177
|
+
state('show', style({
|
178
|
+
transform: 'translateX(0%)',
|
179
|
+
display: 'block',
|
180
|
+
})),
|
181
|
+
transition('* => show', animate('200ms ease-in')),
|
182
|
+
transition('show => *', animate('200ms ease-out')),
|
183
|
+
]),
|
184
|
+
], template: "<div class=\"td-search-input\">\n <mat-form-field\n class=\"td-search-input-field\"\n [class.mat-hide-underline]=\"!showUnderline\"\n [appearance]=\"appearance\"\n >\n <input\n matInput\n #searchElement\n type=\"search\"\n [(ngModel)]=\"value\"\n [placeholder]=\"placeholder\"\n (blur)=\"handleBlur()\"\n (keyup.enter)=\"handleSearch($event)\"\n />\n <span\n matSuffix\n *ngIf=\"\n appearance === 'fill' ||\n appearance === 'outline' ||\n appearance === 'standard'\n \"\n >\n <ng-template [ngTemplateOutlet]=\"clearButton\"></ng-template>\n </span>\n </mat-form-field>\n</div>\n<ng-template #clearButton>\n <button\n mat-icon-button\n class=\"td-search-input-clear\"\n type=\"button\"\n [@searchState]=\"\n searchElement.value ? 'show' : isRTL ? 'hide-left' : 'hide-right'\n \"\n (click)=\"clearSearch()\"\n >\n <mat-icon>{{ clearIcon }}</mat-icon>\n </button>\n</ng-template>\n", styles: [":host .td-search-input{overflow-x:hidden;box-sizing:border-box;display:flex;flex-direction:row;align-items:baseline;align-content:center;max-width:100%;justify-content:flex-end}:host .td-search-input .td-search-input-field{flex:1}:host .td-search-input ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{display:none}:host .td-search-input ::ng-deep mat-form-field.mat-form-field-appearance-outline .mat-form-field-wrapper{padding-bottom:0}:host .td-search-input ::ng-deep mat-form-field.mat-form-field-appearance-fill .mat-form-field-wrapper{padding-bottom:0}:host .td-search-input ::ng-deep mat-form-field.mat-form-field-appearance-fill .mat-form-field-wrapper .mat-form-field-flex{height:52px}:host .td-search-input ::ng-deep mat-form-field.mat-form-field-appearance-fill .mat-form-field-wrapper .mat-form-field-underline{bottom:0}:host .td-search-input ::ng-deep mat-form-field.mat-form-field-appearance-standard .mat-form-field-wrapper{padding-bottom:0}:host .td-search-input ::ng-deep mat-form-field.mat-form-field-appearance-standard .mat-form-field-wrapper .mat-form-field-infix{bottom:.4em}:host .td-search-input ::ng-deep mat-form-field.mat-form-field-appearance-standard .mat-form-field-wrapper .mat-form-field-underline{bottom:0}:host .td-search-input ::ng-deep mat-form-field .mat-input-element{caret-color:currentColor}:host .td-search-input ::ng-deep mat-form-field.mat-hide-underline .mat-form-field-underline{display:none}:host .td-search-input .td-search-input-clear{flex:0 0 auto}\n"] }]
|
185
|
+
}], ctorParameters: function () { return [{ type: i1.Dir, decorators: [{
|
186
|
+
type: Optional
|
187
|
+
}] }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; }, propDecorators: { _input: [{
|
188
|
+
type: ViewChild,
|
189
|
+
args: [MatInput, { static: true }]
|
190
|
+
}], _searchElement: [{
|
191
|
+
type: ViewChild,
|
192
|
+
args: ['searchElement', { static: true, read: ElementRef }]
|
193
|
+
}], appearance: [{
|
194
|
+
type: Input
|
195
|
+
}], showUnderline: [{
|
196
|
+
type: Input
|
197
|
+
}], debounce: [{
|
198
|
+
type: Input
|
199
|
+
}], placeholder: [{
|
200
|
+
type: Input
|
201
|
+
}], clearIcon: [{
|
202
|
+
type: Input
|
203
|
+
}], value: [{
|
204
|
+
type: Input
|
205
|
+
}], searchDebounce: [{
|
206
|
+
type: Output
|
207
|
+
}], search: [{
|
208
|
+
type: Output
|
209
|
+
}], clear: [{
|
210
|
+
type: Output
|
211
|
+
}], blurSearch: [{
|
212
|
+
type: Output
|
213
|
+
}] } });
|
214
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zZWFyY2gvc3JjL3NlYXJjaC1pbnB1dC9zZWFyY2gtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NlYXJjaC9zcmMvc2VhcmNoLWlucHV0L3NlYXJjaC1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixRQUFRLEVBQ1IsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixVQUFVLEVBRVYsVUFBVSxFQUNWLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNWLE9BQU8sR0FDUixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUVMLHlCQUF5QixHQUMxQixNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7QUFFL0IsTUFBTSxPQUFPLGlCQUFpQjtJQUNUO0lBQW5CLFlBQW1CLGtCQUFxQztRQUFyQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO0lBQUcsQ0FBQztDQUM3RDtBQUVELE1BQU0s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S0FBSztzQkFBdEIsS0FBSztnQkFNSSxjQUFjO3NCQUF2QixNQUFNO2dCQU1HLE1BQU07c0JBQWYsTUFBTTtnQkFNRyxLQUFLO3NCQUFkLE1BQU07Z0JBTUcsVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0NoaWxkLFxuICBPbkluaXQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT3B0aW9uYWwsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgZm9yd2FyZFJlZixcbiAgT25EZXN0cm95LFxuICBFbGVtZW50UmVmLFxuICBOZ1pvbmUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgdHJpZ2dlcixcbiAgc3RhdGUsXG4gIHN0eWxlLFxuICB0cmFuc2l0aW9uLFxuICBhbmltYXRlLFxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRGlyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRBcHBlYXJhbmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgc2tpcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgSUNvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBtaXhpbkNvbnRyb2xWYWx1ZUFjY2Vzc29yLFxufSBmcm9tICdAY292YWxlbnQvY29yZS9jb21tb24nO1xuXG5leHBvcnQgY2xhc3MgVGRTZWFyY2hJbnB1dEJhc2Uge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cbn1cblxuZXhwb3J0IGNvbnN0IF9UZFNlYXJjaElucHV0TWl4aW5CYXNlID1cbiAgbWl4aW5Db250cm9sVmFsdWVBY2Nlc3NvcihUZFNlYXJjaElucHV0QmFzZSk7XG5cbkBDb21wb25lbnQoe1xuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRkU2VhcmNoSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgc2VsZWN0b3I6ICd0ZC1zZWFyY2gtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignc2VhcmNoU3RhdGUnLCBbXG4gICAgICBzdGF0ZShcbiAgICAgICAgJ2hpZGUtbGVmdCcsXG4gICAgICAgIHN0eWxlKHtcbiAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC0xNTAlKScsXG4gICAgICAgICAgZGlzcGxheTogJ25vbmUnLFxuICAgICAgICB9KVxuICAgICAgKSxcbiAgICAgIHN0YXRlKFxuICAgICAgICAnaGlkZS1yaWdodCcsXG4gICAgICAgIHN0eWxlKHtcbiAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDE1MCUpJyxcbiAgICAgICAgICBkaXNwbGF5OiAnbm9uZScsXG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgc3RhdGUoXG4gICAgICAgICdzaG93JyxcbiAgICAgICAgc3R5bGUoe1xuICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCUpJyxcbiAgICAgICAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgICAgICB9KVxuICAgICAgKSxcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gc2hvdycsIGFuaW1hdGUoJzIwMG1zIGVhc2UtaW4nKSksXG4gICAgICB0cmFuc2l0aW9uKCdzaG93ID0+IConLCBhbmltYXRlKCcyMDBtcyBlYXNlLW91dCcpKSxcbiAgICBdKSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVGRTZWFyY2hJbnB1dENvbXBvbmVudFxuICBleHRlbmRzIF9UZFNlYXJjaElucHV0TWl4aW5CYXNlXG4gIGltcGxlbWVudHMgSUNvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uRGVzdHJveVxue1xuICBAVmlld0NoaWxkKE1hdElucHV0LCB7IHN0YXRpYzogdHJ1ZSB9KSBfaW5wdXQ/OiBNYXRJbnB1dDtcblxuICBAVmlld0NoaWxkKCdzZWFyY2hFbGVtZW50JywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgX3NlYXJjaEVsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiBhcHBlYXJhbmNlPzogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZVxuICAgKiBBcHBlYXJhbmNlIHN0eWxlIGZvciB0aGUgdW5kZXJseWluZyBpbnB1dCBjb21wb25lbnQuXG4gICAqL1xuICBASW5wdXQoKSBhcHBlYXJhbmNlOiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlID0gJ291dGxpbmUnO1xuXG4gIC8qKlxuICAgKiBzaG93VW5kZXJsaW5lPzogYm9vbGVhblxuICAgKiBTZXRzIGlmIHRoZSBpbnB1dCB1bmRlcmxpbmUgc2hvdWxkIGJlIHZpc2libGUuIERlZmF1bHRzIHRvICdmYWxzZScuXG4gICAqL1xuICBASW5wdXQoKSBzaG93VW5kZXJsaW5lID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIGRlYm91bmNlPzogbnVtYmVyXG4gICAqIERlYm91bmNlIHRpbWVvdXQgYmV0d2VlbiBrZXlwcmVzc2VzLiBEZWZhdWx0cyB0byA0MDAuXG4gICAqL1xuICBASW5wdXQoKSBkZWJvdW5jZSA9IDQwMDtcblxuICAvKipcbiAgICogcGxhY2Vob2xkZXI/OiBzdHJpbmdcbiAgICogUGxhY2Vob2xkZXIgZm9yIHRoZSB1bmRlcmx5aW5nIGlucHV0IGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XG5cbiAgLyoqXG4gICAqIGNsZWFySWNvbj86IHN0cmluZ1xuICAgKiBUaGUgaWNvbiB1c2VkIHRvIGNsZWFyIHRoZSBzZWFyY2ggaW5wdXQuXG4gICAqIERlZmF1bHRzIHRvICdjYW5jZWwnIGljb24uXG4gICAqL1xuICBASW5wdXQoKSBjbGVhckljb24gPSAnY2FuY2VsJztcblxuICBASW5wdXQoKSBvdmVycmlkZSB2YWx1ZSE6IHVua25vd247XG5cbiAgLyoqXG4gICAqIHNlYXJjaERlYm91bmNlOiBmdW5jdGlvbigkZXZlbnQpXG4gICAqIEV2ZW50IGVtaXR0ZWQgYWZ0ZXIgdGhlIFtkZWJvdW5jZV0gdGltZW91dC5cbiAgICovXG4gIEBPdXRwdXQoKSBzZWFyY2hEZWJvdW5jZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogc2VhcmNoOiBmdW5jdGlvbigkZXZlbnQpXG4gICAqIEV2ZW50IGVtaXR0ZWQgYWZ0ZXIgdGhlIGtleSBlbnRlciBoYXMgYmVlbiBwcmVzc2VkLlxuICAgKi9cbiAgQE91dHB1dCgpIHNlYXJjaDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogY2xlYXI6IGZ1bmN0aW9uKClcbiAgICogRXZlbnQgZW1pdHRlZCBhZnRlciB0aGUgY2xlYXIgaWNvbiBoYXMgYmVlbiBjbGlja2VkLlxuICAgKi9cbiAgQE91dHB1dCgpIGNsZWFyOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIGJsdXI6IGZ1bmN0aW9uKClcbiAgICogRXZlbnQgZW1pdHRlZCBhZnRlciB0aGUgYmx1ciBldmVudCBoYXMgYmVlbiBjYWxsZWQgaW4gdW5kZXJseWluZyBpbnB1dC5cbiAgICovXG4gIEBPdXRwdXQoKSBibHVyU2VhcmNoOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgZ2V0IGlzUlRMKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl9kaXIpIHtcbiAgICAgIHJldHVybiB0aGlzLl9kaXIuZGlyID09PSAncnRsJztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RpcjogRGlyLFxuICAgIG92ZXJyaWRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmVcbiAgKSB7XG4gICAgc3VwZXIoX2NoYW5nZURldGVjdG9yUmVmKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2lucHV0Py5uZ0NvbnRyb2w/LnZhbHVlQ2hhbmdlc1xuICAgICAgPy5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZSksXG4gICAgICAgIHNraXAoMSksIC8vIHNraXAgZmlyc3QgY2hhbmdlIHdoZW4gdmFsdWUgaXMgc2V0IHRvIHVuZGVmaW5lZFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuX3NlYXJjaFRlcm1DaGFuZ2VkKHZhbHVlKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICBmcm9tRXZlbnQodGhpcy5fc2VhcmNoRWxlbWVudC5uYXRpdmVFbGVtZW50LCAnc2VhcmNoJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcbiAgICAgICAgLnN1YnNjcmliZSh0aGlzLl9zdG9wUHJvcGFnYXRpb24pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gZm9jdXMgdG8gdW5kZXJseWluZyBpbnB1dC5cbiAgICovXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuX2lucHV0Py5mb2N1cygpO1xuICB9XG5cbiAgaGFuZGxlQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLmJsdXJTZWFyY2guZW1pdCgpO1xuICB9XG5cbiAgaGFuZGxlU2VhcmNoKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuX3N0b3BQcm9wYWdhdGlvbihldmVudCk7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlID09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLnNlYXJjaC5lbWl0KHRoaXMudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gY2xlYXIgdGhlIHVuZGVybHlpbmcgaW5wdXQuXG4gICAqL1xuICBjbGVhclNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gJyc7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5jbGVhci5lbWl0KCk7XG4gIH1cblxuICBwcml2YXRlIF9zZWFyY2hUZXJtQ2hhbmdlZCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hEZWJvdW5jZS5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N0b3BQcm9wYWdhdGlvbihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInRkLXNlYXJjaC1pbnB1dFwiPlxuICA8bWF0LWZvcm0tZmllbGRcbiAgICBjbGFzcz1cInRkLXNlYXJjaC1pbnB1dC1maWVsZFwiXG4gICAgW2NsYXNzLm1hdC1oaWRlLXVuZGVybGluZV09XCIhc2hvd1VuZGVybGluZVwiXG4gICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIG1hdElucHV0XG4gICAgICAjc2VhcmNoRWxlbWVudFxuICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAoYmx1cik9XCJoYW5kbGVCbHVyKClcIlxuICAgICAgKGtleXVwLmVudGVyKT1cImhhbmRsZVNlYXJjaCgkZXZlbnQpXCJcbiAgICAvPlxuICAgIDxzcGFuXG4gICAgICBtYXRTdWZmaXhcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIGFwcGVhcmFuY2UgPT09ICdmaWxsJyB8fFxuICAgICAgICBhcHBlYXJhbmNlID09PSAnb3V0bGluZScgfHxcbiAgICAgICAgYXBwZWFyYW5jZSA9PT0gJ3N0YW5kYXJkJ1xuICAgICAgXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2xlYXJCdXR0b25cIj48L25nLXRlbXBsYXRlPlxuICAgIDwvc3Bhbj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNjbGVhckJ1dHRvbj5cbiAgPGJ1dHRvblxuICAgIG1hdC1pY29uLWJ1dHRvblxuICAgIGNsYXNzPVwidGQtc2VhcmNoLWlucHV0LWNsZWFyXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbQHNlYXJjaFN0YXRlXT1cIlxuICAgICAgc2VhcmNoRWxlbWVudC52YWx1ZSA/ICdzaG93JyA6IGlzUlRMID8gJ2hpZGUtbGVmdCcgOiAnaGlkZS1yaWdodCdcbiAgICBcIlxuICAgIChjbGljayk9XCJjbGVhclNlYXJjaCgpXCJcbiAgPlxuICAgIDxtYXQtaWNvbj57eyBjbGVhckljb24gfX08L21hdC1pY29uPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
@@ -8,19 +8,19 @@ import { TdSearchInputComponent } from './search-input/search-input.component';
|
|
8
8
|
import { TdSearchBoxComponent } from './search-box/search-box.component';
|
9
9
|
import * as i0 from "@angular/core";
|
10
10
|
export class CovalentSearchModule {
|
11
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CovalentSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
12
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: CovalentSearchModule, declarations: [TdSearchInputComponent, TdSearchBoxComponent], imports: [FormsModule,
|
13
|
+
CommonModule,
|
14
|
+
MatInputModule,
|
15
|
+
MatIconModule,
|
16
|
+
MatButtonModule], exports: [TdSearchInputComponent, TdSearchBoxComponent] });
|
17
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CovalentSearchModule, imports: [FormsModule,
|
18
|
+
CommonModule,
|
19
|
+
MatInputModule,
|
20
|
+
MatIconModule,
|
21
|
+
MatButtonModule] });
|
11
22
|
}
|
12
|
-
|
13
|
-
CovalentSearchModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.5", ngImport: i0, type: CovalentSearchModule, declarations: [TdSearchInputComponent, TdSearchBoxComponent], imports: [FormsModule,
|
14
|
-
CommonModule,
|
15
|
-
MatInputModule,
|
16
|
-
MatIconModule,
|
17
|
-
MatButtonModule], exports: [TdSearchInputComponent, TdSearchBoxComponent] });
|
18
|
-
CovalentSearchModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentSearchModule, imports: [FormsModule,
|
19
|
-
CommonModule,
|
20
|
-
MatInputModule,
|
21
|
-
MatIconModule,
|
22
|
-
MatButtonModule] });
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentSearchModule, decorators: [{
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CovalentSearchModule, decorators: [{
|
24
24
|
type: NgModule,
|
25
25
|
args: [{
|
26
26
|
imports: [
|
@@ -34,4 +34,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
|
|
34
34
|
exports: [TdSearchInputComponent, TdSearchBoxComponent],
|
35
35
|
}]
|
36
36
|
}] });
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zZWFyY2gvc3JjL3NlYXJjaC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQWF6RSxNQUFNLE9BQU8sb0JBQW9CO3VHQUFwQixvQkFBb0I7d0dBQXBCLG9CQUFvQixpQkFIaEIsc0JBQXNCLEVBQUUsb0JBQW9CLGFBTnpELFdBQVc7WUFDWCxZQUFZO1lBQ1osY0FBYztZQUNkLGFBQWE7WUFDYixlQUFlLGFBR1Asc0JBQXNCLEVBQUUsb0JBQW9CO3dHQUUzQyxvQkFBb0IsWUFUN0IsV0FBVztZQUNYLFlBQVk7WUFDWixjQUFjO1lBQ2QsYUFBYTtZQUNiLGVBQWU7OzJGQUtOLG9CQUFvQjtrQkFYaEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixlQUFlO3FCQUNoQjtvQkFDRCxZQUFZLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxvQkFBb0IsQ0FBQztvQkFDNUQsT0FBTyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsb0JBQW9CLENBQUM7aUJBQ3hEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5cbmltcG9ydCB7IFRkU2VhcmNoSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL3NlYXJjaC1pbnB1dC9zZWFyY2gtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFRkU2VhcmNoQm94Q29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2gtYm94L3NlYXJjaC1ib3guY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIEZvcm1zTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbVGRTZWFyY2hJbnB1dENvbXBvbmVudCwgVGRTZWFyY2hCb3hDb21wb25lbnRdLFxuICBleHBvcnRzOiBbVGRTZWFyY2hJbnB1dENvbXBvbmVudCwgVGRTZWFyY2hCb3hDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBDb3ZhbGVudFNlYXJjaE1vZHVsZSB7fVxuIl19
|
@@ -0,0 +1,285 @@
|
|
1
|
+
import { ConfigurableFocusTrapFactory, FocusMonitor, } from '@angular/cdk/a11y';
|
2
|
+
import { BasePortalOutlet, CdkPortalOutlet, } from '@angular/cdk/portal';
|
3
|
+
import { DOCUMENT } from '@angular/common';
|
4
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, EventEmitter, HostBinding, HostListener, Inject, Optional, ViewChild, ViewEncapsulation, } from '@angular/core';
|
5
|
+
import { tdSideSheetAnimations } from './side-sheet.animation';
|
6
|
+
import { CovalentSideSheetConfig } from './side-sheet.config';
|
7
|
+
import * as i0 from "@angular/core";
|
8
|
+
import * as i1 from "@angular/cdk/a11y";
|
9
|
+
import * as i2 from "./side-sheet.config";
|
10
|
+
import * as i3 from "@angular/cdk/portal";
|
11
|
+
export function _getFocusedElementPierceShadowDom() {
|
12
|
+
let activeElement = typeof document !== 'undefined' && document
|
13
|
+
? document.activeElement
|
14
|
+
: null;
|
15
|
+
while (activeElement && activeElement.shadowRoot) {
|
16
|
+
const newActiveElement = activeElement.shadowRoot
|
17
|
+
.activeElement;
|
18
|
+
if (newActiveElement === activeElement) {
|
19
|
+
break;
|
20
|
+
}
|
21
|
+
else {
|
22
|
+
activeElement = newActiveElement;
|
23
|
+
}
|
24
|
+
}
|
25
|
+
return activeElement;
|
26
|
+
}
|
27
|
+
/**
|
28
|
+
* Base class for the `CovalentSideSheetContainer`. The base class does not implement
|
29
|
+
* animations as these are left to implementers of the side-sheet container.
|
30
|
+
*/
|
31
|
+
export class _CovalentSideSheetContainerBase extends BasePortalOutlet {
|
32
|
+
_elementRef;
|
33
|
+
_focusTrapFactory;
|
34
|
+
_changeDetectorRef;
|
35
|
+
_config;
|
36
|
+
_focusMonitor;
|
37
|
+
_document;
|
38
|
+
/** The portal outlet inside of this container into which the side-sheet content will be loaded. */
|
39
|
+
_portalOutlet;
|
40
|
+
/** The class that traps and manages focus within the side-sheet. */
|
41
|
+
_focusTrap;
|
42
|
+
/** Emits when an animation state changes. */
|
43
|
+
_animationStateChanged = new EventEmitter();
|
44
|
+
/** Element that was focused before the side-sheet was opened. Save this to restore upon close. */
|
45
|
+
_elementFocusedBeforeSideSheetWasOpened = null;
|
46
|
+
/**
|
47
|
+
* Type of interaction that led to the side-sheet being closed. This is used to determine
|
48
|
+
* whether the focus style will be applied when returning focus to its original location
|
49
|
+
* after the side-sheet is closed.
|
50
|
+
*/
|
51
|
+
_closeInteractionType = null;
|
52
|
+
/** ID of the element that should be considered as the side-sheet's label. */
|
53
|
+
_ariaLabelledBy;
|
54
|
+
/** ID for the container DOM element. */
|
55
|
+
_id;
|
56
|
+
constructor(_elementRef, _focusTrapFactory, _changeDetectorRef, _document,
|
57
|
+
/** The side-sheet configuration. */
|
58
|
+
_config, _focusMonitor) {
|
59
|
+
super();
|
60
|
+
this._elementRef = _elementRef;
|
61
|
+
this._focusTrapFactory = _focusTrapFactory;
|
62
|
+
this._changeDetectorRef = _changeDetectorRef;
|
63
|
+
this._config = _config;
|
64
|
+
this._focusMonitor = _focusMonitor;
|
65
|
+
this._ariaLabelledBy = _config.ariaLabelledBy || null;
|
66
|
+
this._document = _document;
|
67
|
+
}
|
68
|
+
/** Initializes the side-sheet container with the attached content. */
|
69
|
+
_initializeWithAttachedContent() {
|
70
|
+
this._setupFocusTrap();
|
71
|
+
// Save the previously focused element. This element will be re-focused
|
72
|
+
// when the side-sheet closes.
|
73
|
+
this._capturePreviouslyFocusedElement();
|
74
|
+
}
|
75
|
+
/**
|
76
|
+
* Attach a ComponentPortal as content to this side-sheet container.
|
77
|
+
* @param portal Portal to be attached as the side-sheet content.
|
78
|
+
*/
|
79
|
+
attachComponentPortal(portal) {
|
80
|
+
return this._portalOutlet.attachComponentPortal(portal);
|
81
|
+
}
|
82
|
+
/**
|
83
|
+
* Attach a TemplatePortal as content to this side-sheet container.
|
84
|
+
* @param portal Portal to be attached as the side-sheet content.
|
85
|
+
*/
|
86
|
+
attachTemplatePortal(portal) {
|
87
|
+
return this._portalOutlet.attachTemplatePortal(portal);
|
88
|
+
}
|
89
|
+
/**
|
90
|
+
* Attaches a DOM portal to the side-sheet container.
|
91
|
+
* @param portal Portal to be attached.
|
92
|
+
* @deprecated To be turned into a method.
|
93
|
+
*/
|
94
|
+
attachDomPortal = (portal) => {
|
95
|
+
return this._portalOutlet.attachDomPortal(portal);
|
96
|
+
};
|
97
|
+
/** Moves focus back into the side-sheet if it was moved out. */
|
98
|
+
_recaptureFocus() {
|
99
|
+
if (!this._containsFocus()) {
|
100
|
+
this._trapFocus();
|
101
|
+
}
|
102
|
+
}
|
103
|
+
/**
|
104
|
+
* Moves the focus inside the focus trap. When autoFocus is not set to 'side-sheet', if focus
|
105
|
+
* cannot be moved then focus will go to the side-sheet container.
|
106
|
+
*/
|
107
|
+
_trapFocus() {
|
108
|
+
const element = this._elementRef.nativeElement;
|
109
|
+
if (!this._config.autoFocus) {
|
110
|
+
if (!this._containsFocus()) {
|
111
|
+
element.focus();
|
112
|
+
}
|
113
|
+
}
|
114
|
+
else {
|
115
|
+
this._focusTrap
|
116
|
+
.focusInitialElementWhenReady()
|
117
|
+
.then((focusedSuccessfully) => {
|
118
|
+
// If we weren't able to find a focusable element in the side-sheet, then focus the side-sheet
|
119
|
+
// container instead.
|
120
|
+
if (!focusedSuccessfully) {
|
121
|
+
this._focusSideSheetContainer();
|
122
|
+
}
|
123
|
+
});
|
124
|
+
}
|
125
|
+
}
|
126
|
+
/** Restores focus to the element that was focused before the side-sheet opened. */
|
127
|
+
_restoreFocus() {
|
128
|
+
const previousElement = this._elementFocusedBeforeSideSheetWasOpened;
|
129
|
+
// We need the extra check, because IE can set the `activeElement` to null in some cases.
|
130
|
+
if (this._config.restoreFocus &&
|
131
|
+
previousElement &&
|
132
|
+
typeof previousElement.focus === 'function') {
|
133
|
+
const activeElement = _getFocusedElementPierceShadowDom();
|
134
|
+
const element = this._elementRef.nativeElement;
|
135
|
+
// Make sure that focus is still inside the side-sheet or is on the body (usually because a
|
136
|
+
// non-focusable element like the backdrop was clicked) before moving it. It's possible that
|
137
|
+
// the consumer moved it themselves before the animation was done, in which case we shouldn't
|
138
|
+
// do anything.
|
139
|
+
if (!activeElement ||
|
140
|
+
activeElement === this._document.body ||
|
141
|
+
activeElement === element ||
|
142
|
+
element.contains(activeElement)) {
|
143
|
+
if (this._focusMonitor) {
|
144
|
+
this._focusMonitor.focusVia(previousElement, this._closeInteractionType);
|
145
|
+
this._closeInteractionType = null;
|
146
|
+
}
|
147
|
+
else {
|
148
|
+
previousElement.focus();
|
149
|
+
}
|
150
|
+
}
|
151
|
+
}
|
152
|
+
if (this._focusTrap) {
|
153
|
+
this._focusTrap.destroy();
|
154
|
+
}
|
155
|
+
}
|
156
|
+
/** Sets up the focus trap. */
|
157
|
+
_setupFocusTrap() {
|
158
|
+
this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);
|
159
|
+
}
|
160
|
+
/** Captures the element that was focused before the side-sheet was opened. */
|
161
|
+
_capturePreviouslyFocusedElement() {
|
162
|
+
if (this._document) {
|
163
|
+
this._elementFocusedBeforeSideSheetWasOpened =
|
164
|
+
_getFocusedElementPierceShadowDom();
|
165
|
+
}
|
166
|
+
}
|
167
|
+
/** Focuses the side-sheet container. */
|
168
|
+
_focusSideSheetContainer() {
|
169
|
+
// Note that there is no focus method when rendering on the server.
|
170
|
+
if (this._elementRef.nativeElement.focus) {
|
171
|
+
this._elementRef.nativeElement.focus();
|
172
|
+
}
|
173
|
+
}
|
174
|
+
/** Returns whether focus is inside the side-sheet. */
|
175
|
+
_containsFocus() {
|
176
|
+
const element = this._elementRef.nativeElement;
|
177
|
+
const activeElement = _getFocusedElementPierceShadowDom();
|
178
|
+
return element === activeElement || element.contains(activeElement);
|
179
|
+
}
|
180
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: _CovalentSideSheetContainerBase, deps: [{ token: i0.ElementRef }, { token: i1.ConfigurableFocusTrapFactory }, { token: i0.ChangeDetectorRef }, { token: DOCUMENT, optional: true }, { token: i2.CovalentSideSheetConfig }, { token: i1.FocusMonitor }], target: i0.ɵɵFactoryTarget.Directive });
|
181
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: _CovalentSideSheetContainerBase, viewQueries: [{ propertyName: "_portalOutlet", first: true, predicate: CdkPortalOutlet, descendants: true, static: true }], usesInheritance: true, ngImport: i0 });
|
182
|
+
}
|
183
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: _CovalentSideSheetContainerBase, decorators: [{
|
184
|
+
type: Directive
|
185
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ConfigurableFocusTrapFactory }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
186
|
+
type: Optional
|
187
|
+
}, {
|
188
|
+
type: Inject,
|
189
|
+
args: [DOCUMENT]
|
190
|
+
}] }, { type: i2.CovalentSideSheetConfig }, { type: i1.FocusMonitor }]; }, propDecorators: { _portalOutlet: [{
|
191
|
+
type: ViewChild,
|
192
|
+
args: [CdkPortalOutlet, { static: true }]
|
193
|
+
}] } });
|
194
|
+
/**
|
195
|
+
* Internal component that wraps the generated side-sheet content.
|
196
|
+
* This animation below is the only reason for duplicating most of the Material dialog code
|
197
|
+
*/
|
198
|
+
export class CovalentSideSheetContainerComponent extends _CovalentSideSheetContainerBase {
|
199
|
+
/** State of the side-sheet animation. */
|
200
|
+
_state = 'enter';
|
201
|
+
tdSideSheetContainerClass = true;
|
202
|
+
tabIndex = -1;
|
203
|
+
arialModal = true;
|
204
|
+
idAttr = this._id;
|
205
|
+
roleAttr = this._config.role;
|
206
|
+
arialLabelByAttr = this._config.ariaLabel
|
207
|
+
? null
|
208
|
+
: this._ariaLabelledBy;
|
209
|
+
arialDescribeByAttr = this._config.ariaDescribedBy || null;
|
210
|
+
arialLabelAttr = this._config.ariaLabel;
|
211
|
+
get sideSheetAnimationState() {
|
212
|
+
return this._state;
|
213
|
+
}
|
214
|
+
onAnimateStart($event) {
|
215
|
+
this._onAnimationStart($event);
|
216
|
+
}
|
217
|
+
onAnimateDone($event) {
|
218
|
+
this._onAnimationDone($event);
|
219
|
+
}
|
220
|
+
/** Callback, invoked whenever an animation on the host completes. */
|
221
|
+
_onAnimationDone({ toState, totalTime }) {
|
222
|
+
if (toState === 'enter') {
|
223
|
+
this._trapFocus();
|
224
|
+
this._animationStateChanged.next({ state: 'opened', totalTime });
|
225
|
+
}
|
226
|
+
else if (toState === 'exit') {
|
227
|
+
this._restoreFocus();
|
228
|
+
this._animationStateChanged.next({ state: 'closed', totalTime });
|
229
|
+
}
|
230
|
+
}
|
231
|
+
/** Callback, invoked when an animation on the host starts. */
|
232
|
+
_onAnimationStart({ toState, totalTime }) {
|
233
|
+
if (toState === 'enter') {
|
234
|
+
this._animationStateChanged.next({ state: 'opening', totalTime });
|
235
|
+
}
|
236
|
+
else if (toState === 'exit' || toState === 'void') {
|
237
|
+
this._animationStateChanged.next({ state: 'closing', totalTime });
|
238
|
+
}
|
239
|
+
}
|
240
|
+
/** Starts the side-sheet exit animation. */
|
241
|
+
_startExitAnimation() {
|
242
|
+
this._state = 'exit';
|
243
|
+
this._changeDetectorRef.markForCheck();
|
244
|
+
}
|
245
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CovalentSideSheetContainerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
246
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CovalentSideSheetContainerComponent, selector: "td-side-sheet-container", host: { listeners: { "@sideSheetContainer.start": "onAnimateStart($event)", "@sideSheetContainer.done": "onAnimateDone($event)" }, properties: { "class.td-side-sheet-container": "this.tdSideSheetContainerClass", "tabindex": "this.tabIndex", "aria-modal": "this.arialModal", "id": "this.idAttr", "attr.role": "this.roleAttr", "attr.aria-labelledby": "this.arialLabelByAttr", "attr.aria-describedby": "this.arialDescribeByAttr", "attr.aria-label": "this.arialLabelAttr", "@sideSheetContainer": "this.sideSheetAnimationState" } }, usesInheritance: true, ngImport: i0, template: ` <ng-template cdkPortalOutlet></ng-template> `, isInline: true, styles: [".td-side-sheet-container{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f;display:block;padding:24px;box-sizing:border-box;overflow:auto;outline:0;width:100%;height:100%;min-height:inherit;max-height:inherit}.td-side-sheet-wrapper{display:flex;flex-direction:column;height:100%}.td-side-sheet-content{margin:0 -24px;padding:0 24px;overflow:auto;flex:1;-webkit-overflow-scrolling:touch}.td-side-sheet-title{margin:-16px 0 20px;display:flex;align-items:center}.td-side-sheet-actions{padding:8px 0;margin:0 -16px -24px;display:flex;justify-content:space-between;flex-wrap:wrap;align-items:center;box-sizing:content-box}.td-side-sheet-actions[align=end]{justify-content:flex-end}.td-side-sheet-actions[align=center]{justify-content:center}.td-side-sheet-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .td-side-sheet-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}\n"], dependencies: [{ kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], animations: [tdSideSheetAnimations.sideSheetContainer], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
|
247
|
+
}
|
248
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CovalentSideSheetContainerComponent, decorators: [{
|
249
|
+
type: Component,
|
250
|
+
args: [{ selector: 'td-side-sheet-container', template: ` <ng-template cdkPortalOutlet></ng-template> `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, animations: [tdSideSheetAnimations.sideSheetContainer], styles: [".td-side-sheet-container{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f;display:block;padding:24px;box-sizing:border-box;overflow:auto;outline:0;width:100%;height:100%;min-height:inherit;max-height:inherit}.td-side-sheet-wrapper{display:flex;flex-direction:column;height:100%}.td-side-sheet-content{margin:0 -24px;padding:0 24px;overflow:auto;flex:1;-webkit-overflow-scrolling:touch}.td-side-sheet-title{margin:-16px 0 20px;display:flex;align-items:center}.td-side-sheet-actions{padding:8px 0;margin:0 -16px -24px;display:flex;justify-content:space-between;flex-wrap:wrap;align-items:center;box-sizing:content-box}.td-side-sheet-actions[align=end]{justify-content:flex-end}.td-side-sheet-actions[align=center]{justify-content:center}.td-side-sheet-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .td-side-sheet-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}\n"] }]
|
251
|
+
}], propDecorators: { tdSideSheetContainerClass: [{
|
252
|
+
type: HostBinding,
|
253
|
+
args: ['class.td-side-sheet-container']
|
254
|
+
}], tabIndex: [{
|
255
|
+
type: HostBinding,
|
256
|
+
args: ['tabindex']
|
257
|
+
}], arialModal: [{
|
258
|
+
type: HostBinding,
|
259
|
+
args: ['aria-modal']
|
260
|
+
}], idAttr: [{
|
261
|
+
type: HostBinding,
|
262
|
+
args: ['id']
|
263
|
+
}], roleAttr: [{
|
264
|
+
type: HostBinding,
|
265
|
+
args: ['attr.role']
|
266
|
+
}], arialLabelByAttr: [{
|
267
|
+
type: HostBinding,
|
268
|
+
args: ['attr.aria-labelledby']
|
269
|
+
}], arialDescribeByAttr: [{
|
270
|
+
type: HostBinding,
|
271
|
+
args: ['attr.aria-describedby']
|
272
|
+
}], arialLabelAttr: [{
|
273
|
+
type: HostBinding,
|
274
|
+
args: ['attr.aria-label']
|
275
|
+
}], sideSheetAnimationState: [{
|
276
|
+
type: HostBinding,
|
277
|
+
args: ['@sideSheetContainer']
|
278
|
+
}], onAnimateStart: [{
|
279
|
+
type: HostListener,
|
280
|
+
args: ['@sideSheetContainer.start', ['$event']]
|
281
|
+
}], onAnimateDone: [{
|
282
|
+
type: HostListener,
|
283
|
+
args: ['@sideSheetContainer.done', ['$event']]
|
284
|
+
}] } });
|
285
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1zaGVldC1jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc2lkZS1zaGVldC9zcmMvc2lkZS1zaGVldC1jb250YWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUVMLDRCQUE0QixFQUM1QixZQUFZLEdBRWIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGVBQWUsR0FJaEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUVULFNBQVMsRUFDVCxVQUFVLEVBRVYsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7OztBQUU5RCxNQUFNLFVBQVUsaUNBQWlDO0lBQy9DLElBQUksYUFBYSxHQUNmLE9BQU8sUUFBUSxLQUFLLFdBQVcsSUFBSSxRQUFRO1FBQ3pDLENBQUMsQ0FBRSxRQUFRLENBQUMsYUFBb0M7UUFDaEQsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUVYLE9BQU8sYUFBYSxJQUFJLGFBQWEsQ0FBQyxVQUFVLEVBQUU7UUFDaEQsTUFBTSxnQkFBZ0IsR0FBRyxhQUFhLENBQUMsVUFBVTthQUM5QyxhQUFtQyxDQUFDO1FBQ3ZDLElBQUksZ0JBQWdCLEtBQUssYUFBYSxFQUFFO1lBQ3RDLE1BQU07U0FDUDthQUFNO1lBQ0wsYUFBYSxHQUFHLGdCQUFnQixDQUFDO1NBQ2xDO0tBQ0Y7SUFFRCxP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RXZlbnQgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gIENvbmZpZ3VyYWJsZUZvY3VzVHJhcCxcbiAgQ29uZmlndXJhYmxlRm9jdXNUcmFwRmFjdG9yeSxcbiAgRm9jdXNNb25pdG9yLFxuICBGb2N1c09yaWdpbixcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtcbiAgQmFzZVBvcnRhbE91dGxldCxcbiAgQ2RrUG9ydGFsT3V0bGV0LFxuICBDb21wb25lbnRQb3J0YWwsXG4gIERvbVBvcnRhbCxcbiAgVGVtcGxhdGVQb3J0YWwsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudFJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBPcHRpb25hbCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0ZFNpZGVTaGVldEFuaW1hdGlvbnMgfSBmcm9tICcuL3NpZGUtc2hlZXQuYW5pbWF0aW9uJztcbmltcG9ydCB7IENvdmFsZW50U2lkZVNoZWV0Q29uZmlnIH0gZnJvbSAnLi9zaWRlLXNoZWV0LmNvbmZpZyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBfZ2V0Rm9jdXNlZEVsZW1lbnRQaWVyY2VTaGFkb3dEb20oKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgbGV0IGFjdGl2ZUVsZW1lbnQgPVxuICAgIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnRcbiAgICAgID8gKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQgfCBudWxsKVxuICAgICAgOiBudWxsO1xuXG4gIHdoaWxlIChhY3RpdmVFbGVtZW50ICYmIGFjdGl2ZUVsZW1lbnQuc2hhZG93Um9vdCkge1xuICAgIGNvbnN0IG5ld0FjdGl2ZUVsZW1lbnQgPSBhY3RpdmVFbGVtZW50LnNoYWRvd1Jvb3RcbiAgICAgIC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgICBpZiAobmV3QWN0aXZlRWxlbWVudCA9PT0gYWN0aXZlRWxlbWVudCkge1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjdGl2ZUVsZW1lbnQgPSBuZXdBY3RpdmVFbGVtZW50O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhY3RpdmVFbGVtZW50O1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIHRoZSBgQ292YWxlbnRTaWRlU2hlZXRDb250YWluZXJgLiBUaGUgYmFzZSBjbGFzcyBkb2VzIG5vdCBpbXBsZW1lbnRcbiAqIGFuaW1hdGlvbnMgYXMgdGhlc2UgYXJlIGxlZnQgdG8gaW1wbGVtZW50ZXJzIG9mIHRoZSBzaWRlLXNoZWV0IGNvbnRhaW5lci5cbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgX0NvdmFsZW50U2lkZVNoZWV0Q29udGFpbmVyQmFzZSBleHRlbmRzIEJhc2VQb3J0YWxPdXRsZXQge1xuICBwcm90ZWN0ZWQgX2RvY3VtZW50OiBEb2N1bWVudDtcblxuICAvKiogVGhlIHBvcnRhbCBvdXRsZXQgaW5zaWRlIG9mIHRoaXMgY29udGFpbmVyIGludG8gd2hpY2ggdGhlIHNpZGUtc2hlZXQgY29udGVudCB3aWxsIGJlIGxvYWRlZC4gKi9cbiAgQFZpZXdDaGlsZChDZGtQb3J0YWxPdXRsZXQsIHsgc3RhdGljOiB0cnVlIH0pIF9wb3J0YWxPdXRsZXQhOiBDZGtQb3J0YWxPdXRsZXQ7XG5cbiAgLyoqIFRoZSBjbGFzcyB0aGF0IHRyYXBzIGFuZCBtYW5hZ2VzIGZvY3VzIHdpdGhpbiB0aGUgc2lkZS1zaGVldC4gKi9cbiAgcHJpdmF0ZSBfZm9jdXNUcmFwITogQ29uZmlndXJhYmxlRm9jdXNUcmFwO1xuXG4gIC8qKiBFbWl0cyB3aGVuIGFuIGFuaW1hdGlvbiBzdGF0ZSBjaGFuZ2VzLiAqL1xuICBfYW5pbWF0aW9uU3RhdGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgc3RhdGU6ICdvcGVuZWQnIHwgJ29wZW5pbmcnIHwgJ2Nsb3NpbmcnIHwgJ2Nsb3NlZCc7XG4gICAgdG90YWxUaW1lOiBudW1iZXI7XG4gIH0+KCk7XG5cbiAgLyoqIEVsZW1lbnQgdGhhdCB3YXMgZm9jdXNlZCBiZWZvcmUgdGhlIHNpZGUtc2hlZXQgd2FzIG9wZW5lZC4gU2F2ZSB0aGlzIHRvIHJlc3RvcmUgdXBvbiBjbG9zZS4gKi9cbiAgcHJpdmF0ZSBfZWxlbWVudEZvY3VzZWRCZWZvcmVTaWRlU2hlZXRXYXNPcGVuZWQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFR5cGUgb2YgaW50ZXJhY3Rpb24gdGhhdCBsZWQgdG8gdGhlIHNpZGUtc2hlZXQgYmVpbmcgY2xvc2VkLiBUaGlzIGlzIHVzZWQgdG8gZGV0ZXJtaW5lXG4gICAqIHdoZXRoZXIgdGhlIGZvY3VzIHN0eWxlIHdpbGwgYmUgYXBwbGllZCB3aGVuIHJldHVybmluZyBmb2N1cyB0byBpdHMgb3JpZ2luYWwgbG9jYXRpb25cbiAgICogYWZ0ZXIgdGhlIHNpZGUtc2hlZXQgaXMgY2xvc2VkLlxuICAgKi9cbiAgX2Nsb3NlSW50ZXJhY3Rpb25UeXBlOiBGb2N1c09yaWdpbiB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBJRCBvZiB0aGUgZWxlbWVudCB0aGF0IHNob3VsZCBiZSBjb25zaWRlcmVkIGFzIHRoZSBzaWRlLXNoZWV0J3MgbGFiZWwuICovXG4gIF9hcmlhTGFiZWxsZWRCeTogc3RyaW5nIHwgbnVsbDtcblxuICAvKiogSUQgZm9yIHRoZSBjb250YWluZXIgRE9NIGVsZW1lbnQuICovXG4gIF9pZCE6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJvdGVjdGVkIF9mb2N1c1RyYXBGYWN0b3J5OiBDb25maWd1cmFibGVGb2N1c1RyYXBGYWN0b3J5LFxuICAgIHByb3RlY3RlZCBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRE9DVU1FTlQpIF9kb2N1bWVudDogYW55LFxuICAgIC8qKiBUaGUgc2lkZS1zaGVldCBjb25maWd1cmF0aW9uLiAqL1xuICAgIHB1YmxpYyBfY29uZmlnOiBDb3ZhbGVudFNpZGVTaGVldENvbmZpZyxcbiAgICBwcml2YXRlIF9mb2N1c01vbml0b3I/OiBGb2N1c01vbml0b3JcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9hcmlhTGFiZWxsZWRCeSA9IF9jb25maWcuYXJpYUxhYmVsbGVkQnkgfHwgbnVsbDtcbiAgICB0aGlzLl9kb2N1bWVudCA9IF9kb2N1bWVudDtcbiAgfVxuXG4gIC8qKiBTdGFydHMgdGhlIHNpZGUtc2hlZXQgZXhpdCBhbmltYXRpb24uICovXG4gIGFic3RyYWN0IF9zdGFydEV4aXRBbmltYXRpb24oKTogdm9pZDtcblxuICAvKiogSW5pdGlhbGl6ZXMgdGhlIHNpZGUtc2hlZXQgY29udGFpbmVyIHdpdGggdGhlIGF0dGFjaGVkIGNvbnRlbnQuICovXG4gIF9pbml0aWFsaXplV2l0aEF0dGFjaGVkQ29udGVudCgpIHtcbiAgICB0aGlzLl9zZXR1cEZvY3VzVHJhcCgpO1xuICAgIC8vIFNhdmUgdGhlIHByZXZpb3VzbHkgZm9jdXNlZCBlbGVtZW50LiBUaGlzIGVsZW1lbnQgd2lsbCBiZSByZS1mb2N1c2VkXG4gICAgLy8gd2hlbiB0aGUgc2lkZS1zaGVldCBjbG9zZXMuXG4gICAgdGhpcy5fY2FwdHVyZVByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGFjaCBhIENvbXBvbmVudFBvcnRhbCBhcyBjb250ZW50IHRvIHRoaXMgc2lkZS1zaGVldCBjb250YWluZXIuXG4gICAqIEBwYXJhbSBwb3J0YWwgUG9ydGFsIHRvIGJlIGF0dGFjaGVkIGFzIHRoZSBzaWRlLXNoZWV0IGNvbnRlbnQuXG4gICAqL1xuICBhdHRhY2hDb21wb25lbnRQb3J0YWw8VD4ocG9ydGFsOiBDb21wb25lbnRQb3J0YWw8VD4pOiBDb21wb25lbnRSZWY8VD4ge1xuICAgIHJldHVybiB0aGlzLl9wb3J0YWxPdXRsZXQuYXR0YWNoQ29tcG9uZW50UG9ydGFsKHBvcnRhbCk7XG4gIH1cblxuICAvKipcbiAgICogQXR0YWNoIGEgVGVtcGxhdGVQb3J0YWwgYXMgY29udGVudCB0byB0aGlzIHNpZGUtc2hlZXQgY29udGFpbmVyLlxuICAgKiBAcGFyYW0gcG9ydGFsIFBvcnRhbCB0byBiZSBhdHRhY2hlZCBhcyB0aGUgc2lkZS1zaGVldCBjb250ZW50LlxuICAgKi9cbiAgYXR0YWNoVGVtcGxhdGVQb3J0YWw8Qz4ocG9ydGFsOiBUZW1wbGF0ZVBvcnRhbDxDPik6IEVtYmVkZGVkVmlld1JlZjxDPiB7XG4gICAgcmV0dXJuIHRoaXMuX3BvcnRhbE91dGxldC5hdHRhY2hUZW1wbGF0ZVBvcnRhbChwb3J0YWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGFjaGVzIGEgRE9NIHBvcnRhbCB0byB0aGUgc2lkZS1zaGVldCBjb250YWluZXIuXG4gICAqIEBwYXJhbSBwb3J0YWwgUG9ydGFsIHRvIGJlIGF0dGFjaGVkLlxuICAgKiBAZGVwcmVjYXRlZCBUbyBiZSB0dXJuZWQgaW50byBhIG1ldGhvZC5cbiAgICovXG4gIG92ZXJyaWRlIGF0dGFjaERvbVBvcnRhbCA9IChwb3J0YWw6IERvbVBvcnRhbCkgPT4ge1xuICAgIHJldHVybiB0aGlzLl9wb3J0YWxPdXRsZXQuYXR0YWNoRG9tUG9ydGFsKHBvcnRhbCk7XG4gIH07XG5cbiAgLyoqIE1vdmVzIGZvY3VzIGJhY2sgaW50byB0aGUgc2lkZS1zaGVldCBpZiBpdCB3YXMgbW92ZWQgb3V0LiAqL1xuICBfcmVjYXB0dXJlRm9jdXMoKSB7XG4gICAgaWYgKCF0aGlzLl9jb250YWluc0ZvY3VzKCkpIHtcbiAgICAgIHRoaXMuX3RyYXBGb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlcyB0aGUgZm9jdXMgaW5zaWRlIHRoZSBmb2N1cyB0cmFwLiBXaGVuIGF1dG9Gb2N1cyBpcyBub3Qgc2V0IHRvICdzaWRlLXNoZWV0JywgaWYgZm9jdXNcbiAgICogY2Fubm90IGJlIG1vdmVkIHRoZW4gZm9jdXMgd2lsbCBnbyB0byB0aGUgc2lkZS1zaGVldCBjb250YWluZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgX3RyYXBGb2N1cygpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIGlmICghdGhpcy5fY29uZmlnLmF1dG9Gb2N1cykge1xuICAgICAgaWYgKCF0aGlzLl9jb250YWluc0ZvY3VzKCkpIHtcbiAgICAgICAgZWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9mb2N1c1RyYXBcbiAgICAgICAgLmZvY3VzSW5pdGlhbEVsZW1lbnRXaGVuUmVhZHkoKVxuICAgICAgICAudGhlbigoZm9jdXNlZFN1Y2Nlc3NmdWxseSkgPT4ge1xuICAgICAgICAgIC8vIElmIHdlIHdlcmVuJ3QgYWJsZSB0byBmaW5kIGEgZm9jdXNhYmxlIGVsZW1lbnQgaW4gdGhlIHNpZGUtc2hlZXQsIHRoZW4gZm9jdXMgdGhlIHNpZGUtc2hlZXRcbiAgICAgICAgICAvLyBjb250YWluZXIgaW5zdGVhZC5cbiAgICAgICAgICBpZiAoIWZvY3VzZWRTdWNjZXNzZnVsbHkpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzU2lkZVNoZWV0Q29udGFpbmVyKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKiogUmVzdG9yZXMgZm9jdXMgdG8gdGhlIGVsZW1lbnQgdGhhdCB3YXMgZm9jdXNlZCBiZWZvcmUgdGhlIHNpZGUtc2hlZXQgb3BlbmVkLiAqL1xuICBwcm90ZWN0ZWQgX3Jlc3RvcmVGb2N1cygpIHtcbiAgICBjb25zdCBwcmV2aW91c0VsZW1lbnQgPSB0aGlzLl9lbGVtZW50Rm9jdXNlZEJlZm9yZVNpZGVTaGVldFdhc09wZW5lZDtcblxuICAgIC8vIFdlIG5lZWQgdGhlIGV4dHJhIGNoZWNrLCBiZWNhdXNlIElFIGNhbiBzZXQgdGhlIGBhY3RpdmVFbGVtZW50YCB0byBudWxsIGluIHNvbWUgY2FzZXMuXG4gICAgaWYgKFxuICAgICAgdGhpcy5fY29uZmlnLnJlc3RvcmVGb2N1cyAmJlxuICAgICAgcHJldmlvdXNFbGVtZW50ICYmXG4gICAgICB0eXBlb2YgcHJldmlvdXNFbGVtZW50LmZvY3VzID09PSAnZnVuY3Rpb24nXG4gICAgKSB7XG4gICAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gX2dldEZvY3VzZWRFbGVtZW50UGllcmNlU2hhZG93RG9tKCk7XG4gICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAvLyBNYWtlIHN1cmUgdGhhdCBmb2N1cyBpcyBzdGlsbCBpbnNpZGUgdGhlIHNpZGUtc2hlZXQgb3IgaXMgb24gdGhlIGJvZHkgKHVzdWFsbHkgYmVjYXVzZSBhXG4gICAgICAvLyBub24tZm9jdXNhYmxlIGVsZW1lbnQgbGlrZSB0aGUgYmFja2Ryb3Agd2FzIGNsaWNrZWQpIGJlZm9yZSBtb3ZpbmcgaXQuIEl0J3MgcG9zc2libGUgdGhhdFxuICAgICAgLy8gdGhlIGNvbnN1bWVyIG1vdmVkIGl0IHRoZW1zZWx2ZXMgYmVmb3JlIHRoZSBhbmltYXRpb24gd2FzIGRvbmUsIGluIHdoaWNoIGNhc2Ugd2Ugc2hvdWxkbid0XG4gICAgICAvLyBkbyBhbnl0aGluZy5cbiAgICAgIGlmIChcbiAgICAgICAgIWFjdGl2ZUVsZW1lbnQgfHxcbiAgICAgICAgYWN0aXZlRWxlbWVudCA9PT0gdGhpcy5fZG9jdW1lbnQuYm9keSB8fFxuICAgICAgICBhY3RpdmVFbGVtZW50ID09PSBlbGVtZW50IHx8XG4gICAgICAgIGVsZW1lbnQuY29udGFpbnMoYWN0aXZlRWxlbWVudClcbiAgICAgICkge1xuICAgICAgICBpZiAodGhpcy5fZm9jdXNNb25pdG9yKSB7XG4gICAgICAgICAgdGhpcy5fZm9jdXNNb25pdG9yLmZvY3VzVmlhKFxuICAgICAgICAgICAgcHJldmlvdXNFbGVtZW50LFxuICAgICAgICAgICAgdGhpcy5fY2xvc2VJbnRlcmFjdGlvblR5cGVcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuX2Nsb3NlSW50ZXJhY3Rpb25UeXBlID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmV2aW91c0VsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9mb2N1c1RyYXApIHtcbiAgICAgIHRoaXMuX2ZvY3VzVHJhcC5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFNldHMgdXAgdGhlIGZvY3VzIHRyYXAuICovXG4gIHByaXZhdGUgX3NldHVwRm9jdXNUcmFwKCkge1xuICAgIHRoaXMuX2ZvY3VzVHJhcCA9IHRoaXMuX2ZvY3VzVHJhcEZhY3RvcnkuY3JlYXRlKFxuICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgKTtcbiAgfVxuXG4gIC8qKiBDYXB0dXJlcyB0aGUgZWxlbWVudCB0aGF0IHdhcyBmb2N1c2VkIGJlZm9yZSB0aGUgc2lkZS1zaGVldCB3YXMgb3BlbmVkLiAqL1xuICBwcml2YXRlIF9jYXB0dXJlUHJldmlvdXNseUZvY3VzZWRFbGVtZW50KCkge1xuICAgIGlmICh0aGlzLl9kb2N1bWVudCkge1xuICAgICAgdGhpcy5fZWxlbWVudEZvY3VzZWRCZWZvcmVTaWRlU2hlZXRXYXNPcGVuZWQgPVxuICAgICAgICBfZ2V0Rm9jdXNlZEVsZW1lbnRQaWVyY2VTaGFkb3dEb20oKTtcbiAgICB9XG4gIH1cblxuICAvKiogRm9jdXNlcyB0aGUgc2lkZS1zaGVldCBjb250YWluZXIuICovXG4gIHByaXZhdGUgX2ZvY3VzU2lkZVNoZWV0Q29udGFpbmVyKCkge1xuICAgIC8vIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBmb2N1cyBtZXRob2Qgd2hlbiByZW5kZXJpbmcgb24gdGhlIHNlcnZlci5cbiAgICBpZiAodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKSB7XG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICAvKiogUmV0dXJucyB3aGV0aGVyIGZvY3VzIGlzIGluc2lkZSB0aGUgc2lkZS1zaGVldC4gKi9cbiAgcHJpdmF0ZSBfY29udGFpbnNGb2N1cygpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSBfZ2V0Rm9jdXNlZEVsZW1lbnRQaWVyY2VTaGFkb3dEb20oKTtcbiAgICByZXR1cm4gZWxlbWVudCA9PT0gYWN0aXZlRWxlbWVudCB8fCBlbGVtZW50LmNvbnRhaW5zKGFjdGl2ZUVsZW1lbnQpO1xuICB9XG59XG5cbi8qKlxuICogSW50ZXJuYWwgY29tcG9uZW50IHRoYXQgd3JhcHMgdGhlIGdlbmVyYXRlZCBzaWRlLXNoZWV0IGNvbnRlbnQuXG4gKiBUaGlzIGFuaW1hdGlvbiBiZWxvdyBpcyB0aGUgb25seSByZWFzb24gZm9yIGR1cGxpY2F0aW5nIG1vc3Qgb2YgdGhlIE1hdGVyaWFsIGRpYWxvZyBjb2RlXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RkLXNpZGUtc2hlZXQtY29udGFpbmVyJyxcbiAgdGVtcGxhdGU6IGAgPG5nLXRlbXBsYXRlIGNka1BvcnRhbE91dGxldD48L25nLXRlbXBsYXRlPiBgLFxuICBzdHlsZVVybHM6IFsnc2lkZS1zaGVldC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbiAgYW5pbWF0aW9uczogW3RkU2lkZVNoZWV0QW5pbWF0aW9ucy5zaWRlU2hlZXRDb250YWluZXJdLFxufSlcbmV4cG9ydCBjbGFzcyBDb3ZhbGVudFNpZGVTaGVldENvbnRhaW5lckNvbXBvbmVudCBleHRlbmRzIF9Db3ZhbGVudFNpZGVTaGVldENvbnRhaW5lckJhc2Uge1xuICAvKiogU3RhdGUgb2YgdGhlIHNpZGUtc2hlZXQgYW5pbWF0aW9uLiAqL1xuICBfc3RhdGU6ICd2b2lkJyB8ICdlbnRlcicgfCAnZXhpdCcgPSAnZW50ZXInO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MudGQtc2lkZS1zaGVldC1jb250YWluZXInKSB0ZFNpZGVTaGVldENvbnRhaW5lckNsYXNzID1cbiAgICB0cnVlO1xuICBASG9zdEJpbmRpbmcoJ3RhYmluZGV4JykgdGFiSW5kZXggPSAtMTtcbiAgQEhvc3RCaW5kaW5nKCdhcmlhLW1vZGFsJykgYXJpYWxNb2RhbCA9IHRydWU7XG4gIEBIb3N0QmluZGluZygnaWQnKSBpZEF0dHIgPSB0aGlzLl9pZDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKSByb2xlQXR0ciA9IHRoaXMuX2NvbmZpZy5yb2xlO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1sYWJlbGxlZGJ5JykgYXJpYWxMYWJlbEJ5QXR0ciA9IHRoaXMuX2NvbmZpZy5hcmlhTGFiZWxcbiAgICA/IG51bGxcbiAgICA6IHRoaXMuX2FyaWFMYWJlbGxlZEJ5O1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kZXNjcmliZWRieScpIGFyaWFsRGVzY3JpYmVCeUF0dHIgPVxuICAgIHRoaXMuX2NvbmZpZy5hcmlhRGVzY3JpYmVkQnkgfHwgbnVsbDtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGFiZWwnKSBhcmlhbExhYmVsQXR0ciA9IHRoaXMuX2NvbmZpZy5hcmlhTGFiZWw7XG4gIEBIb3N0QmluZGluZygnQHNpZGVTaGVldENvbnRhaW5lcicpIGdldCBzaWRlU2hlZXRBbmltYXRpb25TdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGU7XG4gIH1cbiAgQEhvc3RMaXN0ZW5lcignQHNpZGVTaGVldENvbnRhaW5lci5zdGFydCcsIFsnJGV2ZW50J10pIG9uQW5pbWF0ZVN0YXJ0KFxuICAgICRldmVudDogQW5pbWF0aW9uRXZlbnRcbiAgKSB7XG4gICAgdGhpcy5fb25BbmltYXRpb25TdGFydCgkZXZlbnQpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignQHNpZGVTaGVldENvbnRhaW5lci5kb25lJywgWyckZXZlbnQnXSkgb25BbmltYXRlRG9uZShcbiAgICAkZXZlbnQ6IEFuaW1hdGlvbkV2ZW50XG4gICkge1xuICAgIHRoaXMuX29uQW5pbWF0aW9uRG9uZSgkZXZlbnQpO1xuICB9XG5cbiAgLyoqIENhbGxiYWNrLCBpbnZva2VkIHdoZW5ldmVyIGFuIGFuaW1hdGlvbiBvbiB0aGUgaG9zdCBjb21wbGV0ZXMuICovXG4gIF9vbkFuaW1hdGlvbkRvbmUoeyB0b1N0YXRlLCB0b3RhbFRpbWUgfTogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICBpZiAodG9TdGF0ZSA9PT0gJ2VudGVyJykge1xuICAgICAgdGhpcy5fdHJhcEZvY3VzKCk7XG4gICAgICB0aGlzLl9hbmltYXRpb25TdGF0ZUNoYW5nZWQubmV4dCh7IHN0YXRlOiAnb3BlbmVkJywgdG90YWxUaW1lIH0pO1xuICAgIH0gZWxzZSBpZiAodG9TdGF0ZSA9PT0gJ2V4aXQnKSB7XG4gICAgICB0aGlzLl9yZXN0b3JlRm9jdXMoKTtcbiAgICAgIHRoaXMuX2FuaW1hdGlvblN0YXRlQ2hhbmdlZC5uZXh0KHsgc3RhdGU6ICdjbG9zZWQnLCB0b3RhbFRpbWUgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENhbGxiYWNrLCBpbnZva2VkIHdoZW4gYW4gYW5pbWF0aW9uIG9uIHRoZSBob3N0IHN0YXJ0cy4gKi9cbiAgX29uQW5pbWF0aW9uU3RhcnQoeyB0b1N0YXRlLCB0b3RhbFRpbWUgfTogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICBpZiAodG9TdGF0ZSA9PT0gJ2VudGVyJykge1xuICAgICAgdGhpcy5fYW5pbWF0aW9uU3RhdGVDaGFuZ2VkLm5leHQoeyBzdGF0ZTogJ29wZW5pbmcnLCB0b3RhbFRpbWUgfSk7XG4gICAgfSBlbHNlIGlmICh0b1N0YXRlID09PSAnZXhpdCcgfHwgdG9TdGF0ZSA9PT0gJ3ZvaWQnKSB7XG4gICAgICB0aGlzLl9hbmltYXRpb25TdGF0ZUNoYW5nZWQubmV4dCh7IHN0YXRlOiAnY2xvc2luZycsIHRvdGFsVGltZSB9KTtcbiAgICB9XG4gIH1cblxuICAvKiogU3RhcnRzIHRoZSBzaWRlLXNoZWV0IGV4aXQgYW5pbWF0aW9uLiAqL1xuICBfc3RhcnRFeGl0QW5pbWF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlID0gJ2V4aXQnO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iXX0=
|