@sd-angular/core 1.0.44 → 1.0.47
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/assets/scss/core/toastr.scss +1 -0
- package/bundles/sd-angular-core-grid-material.umd.js +315 -297
- package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js +2 -2
- package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-notify.umd.js +15 -6
- package/bundles/sd-angular-core-notify.umd.js.map +1 -1
- package/bundles/sd-angular-core-notify.umd.min.js +2 -2
- package/bundles/sd-angular-core-notify.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-popover.umd.js +704 -0
- package/bundles/sd-angular-core-popover.umd.js.map +1 -0
- package/bundles/sd-angular-core-popover.umd.min.js +16 -0
- package/bundles/sd-angular-core-popover.umd.min.js.map +1 -0
- package/bundles/sd-angular-core.umd.js +12 -4
- package/bundles/sd-angular-core.umd.js.map +1 -1
- package/bundles/sd-angular-core.umd.min.js +1 -1
- package/bundles/sd-angular-core.umd.min.js.map +1 -1
- package/esm2015/grid-material/sd-angular-core-grid-material.js +18 -19
- package/esm2015/grid-material/src/lib/components/desktop-cell-children-view/desktop-cell-children-view.component.js +2 -2
- package/esm2015/grid-material/src/lib/grid-material.component.js +20 -21
- package/esm2015/grid-material/src/lib/grid-material.module.js +2 -3
- package/esm2015/grid-material/src/lib/models/grid-column.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid.model.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/cell-view.pipe.js +8 -9
- package/esm2015/grid-material/src/lib/pipes/column-badge.pipe.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/column-transform.pipe.js +8 -9
- package/esm2015/grid-material/src/lib/pipes/column-values.pipe.js +35 -12
- package/esm2015/notify/src/lib/notify.service.js +18 -9
- package/esm2015/popover/index.js +2 -0
- package/esm2015/popover/sd-angular-core-popover.js +5 -0
- package/esm2015/popover/src/lib/directives/popover-trigger.directive.js +218 -0
- package/esm2015/popover/src/lib/popover/popover.component.js +122 -0
- package/esm2015/popover/src/lib/popover.model.js +2 -0
- package/esm2015/popover/src/lib/popover.module.js +24 -0
- package/esm2015/popover/src/public-api.js +7 -0
- package/esm2015/public-api.js +2 -1
- package/fesm2015/sd-angular-core-grid-material.js +83 -117
- package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
- package/fesm2015/sd-angular-core-notify.js +17 -8
- package/fesm2015/sd-angular-core-notify.js.map +1 -1
- package/fesm2015/sd-angular-core-popover.js +369 -0
- package/fesm2015/sd-angular-core-popover.js.map +1 -0
- package/fesm2015/sd-angular-core.js +1 -0
- package/fesm2015/sd-angular-core.js.map +1 -1
- package/grid-material/sd-angular-core-grid-material.d.ts +17 -18
- package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
- package/grid-material/src/lib/grid-material.component.d.ts +4 -3
- package/grid-material/src/lib/models/grid-column.model.d.ts +2 -2
- package/grid-material/src/lib/pipes/cell-view.pipe.d.ts +3 -3
- package/grid-material/src/lib/pipes/column-transform.pipe.d.ts +3 -3
- package/grid-material/src/lib/pipes/column-values.pipe.d.ts +2 -4
- package/package.json +1 -1
- package/popover/index.d.ts +1 -0
- package/popover/package.json +12 -0
- package/popover/sd-angular-core-popover.d.ts +4 -0
- package/popover/sd-angular-core-popover.metadata.json +1 -0
- package/popover/src/lib/directives/popover-trigger.directive.d.ts +25 -0
- package/popover/src/lib/popover/popover.component.d.ts +34 -0
- package/popover/src/lib/popover.model.d.ts +1 -0
- package/popover/src/lib/popover.module.d.ts +2 -0
- package/popover/src/public-api.d.ts +3 -0
- package/public-api.d.ts +1 -0
- package/{sd-angular-core-1.0.44.tgz → sd-angular-core-1.0.47.tgz} +0 -0
- package/sd-angular-core.metadata.json +1 -1
- package/esm2015/grid-material/src/lib/services/grid.service.js +0 -59
- package/grid-material/src/lib/services/grid.service.d.ts +0 -19
|
@@ -107,16 +107,25 @@ export class SdNotifyService {
|
|
|
107
107
|
__classPrivateFieldGet(this, _cache)[__classPrivateFieldGet(this, _errorKey)] = {
|
|
108
108
|
createdDate: new Date(),
|
|
109
109
|
data: {
|
|
110
|
-
title
|
|
110
|
+
title,
|
|
111
111
|
messages: [],
|
|
112
112
|
}
|
|
113
113
|
};
|
|
114
114
|
timer(__classPrivateFieldGet(this, _delayDuration)).pipe(take(1)).subscribe(() => {
|
|
115
|
-
__classPrivateFieldGet(this,
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
115
|
+
if (__classPrivateFieldGet(this, _cache)[__classPrivateFieldGet(this, _errorKey)].data.messages.length === 1) {
|
|
116
|
+
__classPrivateFieldGet(this, _notifyError).call(this, {
|
|
117
|
+
title: __classPrivateFieldGet(this, _cache)[__classPrivateFieldGet(this, _errorKey)].data.title,
|
|
118
|
+
message: __classPrivateFieldGet(this, _cache)[__classPrivateFieldGet(this, _errorKey)].data.messages[0],
|
|
119
|
+
delay
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
__classPrivateFieldGet(this, _notifyError).call(this, {
|
|
124
|
+
title: __classPrivateFieldGet(this, _cache)[__classPrivateFieldGet(this, _errorKey)].data.title,
|
|
125
|
+
message: __classPrivateFieldGet(this, _cache)[__classPrivateFieldGet(this, _errorKey)].data.messages,
|
|
126
|
+
delay
|
|
127
|
+
});
|
|
128
|
+
}
|
|
120
129
|
});
|
|
121
130
|
}
|
|
122
131
|
if (Array.isArray(message)) {
|
|
@@ -166,11 +175,11 @@ export class SdNotifyService {
|
|
|
166
175
|
let contentRest = '';
|
|
167
176
|
if (messageRests === null || messageRests === void 0 ? void 0 : messageRests.length) {
|
|
168
177
|
contentRest = `<input id="${id}" class="cdk-visually-hidden sd-notify__checkbox" type="checkbox" />
|
|
169
|
-
<label class="sd-notify__text sd-notify__text--show
|
|
178
|
+
<label class="sd-notify__text sd-notify__text--show" for="${id}">${this.translate('Show more')}</label>
|
|
170
179
|
<div class="sd-notify__item--rest">
|
|
171
180
|
${messageRests.map(m => String.format(messageTemp, m)).join('')}
|
|
172
181
|
</div>
|
|
173
|
-
<label class="sd-notify__text sd-notify__text--less
|
|
182
|
+
<label class="sd-notify__text sd-notify__text--less" for="${id}">${this.translate('Show less')}</label>`;
|
|
174
183
|
}
|
|
175
184
|
const content = String.format(messageContainer, messages.map(m => String.format(messageTemp, m)).join(''), contentRest);
|
|
176
185
|
let toast;
|
|
@@ -305,4 +314,4 @@ SdNotifyService.ctorParameters = () => [
|
|
|
305
314
|
{ type: ToastrService },
|
|
306
315
|
{ type: SdTranslateService }
|
|
307
316
|
];
|
|
308
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvdXNlci9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ub3RpZnkvIiwic291cmNlcyI6WyJzcmMvbGliL25vdGlmeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM5RixPQUFPLEVBQWUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBZ0IsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9ELE9BQU8sRUFBVyxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFHN0IsTUFBTSxPQUFPLGVBQWU7SUFhMUIsWUFDVSxNQUFpQixFQUNqQixNQUFxQixFQUNyQixnQkFBb0M7UUFGcEMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUFmOUMseUJBQWlCLEdBQUcsRUFBQyxDQUFDLHFFQUFxRTtRQUMzRixzQkFBYyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUM7UUFDeEIsb0JBQVksSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFDO1FBQ3RCLGlCQVFJLEVBQUUsRUFBQztRQU9QLFVBQUssR0FBRztZQUNOLElBQUksRUFBRSxDQUNKLE9BQWdCLEVBQ2hCLEtBQWMsRUFDZCxRQUFpQixFQUNqQixJQUFh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LENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQzNDLElBQUksTUFBTSxFQUFFO3dCQUNWLElBQUksTUFBTSxLQUFLLFFBQVEsRUFBRTs0QkFDdkIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO3lCQUNqQjs2QkFBTSxJQUFJLE1BQU0sS0FBSyxRQUFRLEVBQUU7NEJBQzlCLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQzt5QkFDaEI7NkJBQU07NEJBQ0wsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO3lCQUNqQjtxQkFDRjtnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBRU0sY0FBUyxHQUFHLENBQUMsS0FBYSxFQUFVLEVBQUU7WUFDNUMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQztJQWxWRSxDQUFDOzs7O1lBbEJOLFVBQVU7OztZQVJGLFNBQVM7WUFFSSxhQUFhO1lBQzFCLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcIkBzZC1hbmd1bGFyL2NvcmUvY29tbW9uXCI7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IERpYWxvZ0NvbmZpcm1Db21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL2RpYWxvZy1jb25maXJtL2RpYWxvZy1jb25maXJtLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBBY3RpdmVUb2FzdCwgVG9hc3RyU2VydmljZSB9IGZyb20gXCJuZ3gtdG9hc3RyXCI7XHJcbmltcG9ydCB7IFNkVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAc2QtYW5ndWxhci9jb3JlL3RyYW5zbGF0ZVwiO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0aW1lciB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCAqIGFzIHV1aWQgZnJvbSAndXVpZCc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBTZE5vdGlmeVNlcnZpY2Uge1xyXG4gICNkZWxheUR1cmF0aW9uID0gNTAwOyAvLyBDw6FjIGVycm9yL3dhcm5pbmcgbWVzc2FnZSBz4bq9IHThu7EgxJHhu5luZyBn4buZcCBzYXUga2hv4bqjbmcgdGjhu51pIGdpYW4gdHLDqm5cclxuICAjd2FybmluZ0tleSA9IHV1aWQudjQoKTtcclxuICAjZXJyb3JLZXkgPSB1dWlkLnY0KCk7XHJcbiAgI2NhY2hlOiB7XHJcbiAgICBba2V5OiBzdHJpbmddOiB7XHJcbiAgICAgIGNyZWF0ZWREYXRlOiBEYXRlO1xyXG4gICAgICBkYXRhPzoge1xyXG4gICAgICAgIHRpdGxlOiBzdHJpbmcsXHJcbiAgICAgICAgbWVzc2FnZXM6IHN0cmluZ1tdXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9ID0ge307XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFNkVHJhbnNsYXRlU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIGFsZXJ0ID0ge1xyXG4gICAgaW5mbzogKFxyXG4gICAgICBtZXNzYWdlPzogc3RyaW5nLFxyXG4gICAgICB0aXRsZT86IHN0cmluZyxcclxuICAgICAgeWVzVGl0bGU/OiBzdHJpbmcsXHJcbiAgICAgIGljb24/OiBzdHJpbmdcclxuICAgICkgPT4ge1xyXG4gICAgICB0aGlzLmRpYWxvZy5vcGVuKERpYWxvZ0NvbmZpcm1Db21wb25lbnQsIHtcclxuICAgICAgICB3aWR0aDogXCI0MDBweFwiLFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIGljb246IGljb24gfHwgXCJpbmZvXCIsXHJcbiAgICAgICAgICB0aXRsZTogdGl0bGUgfHwgdGhpcy50cmFuc2xhdGUoXCJOb3RpY2VcIiksXHJcbiAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlIHx8IFwiRG9uZSFcIixcclxuICAgICAgICAgIHllc1RpdGxlOiB5ZXNUaXRsZSB8fCB0aGlzLnRyYW5zbGF0ZShcIk9rXCIpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIHN1Y2Nlc3M6IChcclxuICAgICAgbWVzc2FnZT86IHN0cmluZyxcclxuICAgICAgdGl0bGU/OiBzdHJpbmcsXHJcbiAgICAgIHllc1RpdGxlPzogc3RyaW5nLFxyXG4gICAgICBpY29uPzogc3RyaW5nXHJcbiAgICApID0+IHtcclxuICAgICAgdGhpcy5kaWFsb2cub3BlbihEaWFsb2dDb25maXJtQ29tcG9uZW50LCB7XHJcbiAgICAgICAgd2lkdGg6IFwiNDAwcHhcIixcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBpY29uOiBpY29uIHx8IFwiZG9uZVwiLFxyXG4gICAgICAgICAgdGl0bGU6IHRpdGxlIHx8IHRoaXMudHJhbnNsYXRlKFwiU3VjY2Vzc1wiKSxcclxuICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgfHwgXCJEb25lIVwiLFxyXG4gICAgICAgICAgeWVzVGl0bGU6IHllc1RpdGxlIHx8IHRoaXMudHJhbnNsYXRlKFwiT2tcIiksXHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9LFxyXG4gICAgd2FybmluZzogKFxyXG4gICAgICBtZXNzYWdlPzogc3RyaW5nLFxyXG4gICAgICB0aXRsZT86IHN0cmluZyxcclxuICAgICAgeWVzVGl0bGU/OiBzdHJpbmcsXHJcbiAgICAgIGljb24/OiBzdHJpbmdcclxuICAgICkgPT4ge1xyXG4gICAgICB0aGlzLmRpYWxvZy5vcGVuKERpYWxvZ0NvbmZpcm1Db21wb25lbnQsIHtcclxuICAgICAgICB3aWR0aDogXCI0MDBweFwiLFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIGljb246IGljb24gfHwgXCJ3YXJuaW5nXCIsXHJcbiAgICAgICAgICB0aXRsZTogdGl0bGUgfHwgdGhpcy50cmFuc2xhdGUoXCJXYXJuaW5nXCIpLFxyXG4gICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSB8fCBcIlNvbWV0aGluZyB3ZW50IHdyb25nIVwiLFxyXG4gICAgICAgICAgeWVzVGl0bGU6IHllc1RpdGxlIHx8IHRoaXMudHJhbnNsYXRlKFwiT2tcIiksXHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9LFxyXG4gICAgZXJyb3I6IChcclxuICAgICAgbWVzc2FnZT86IHN0cmluZyxcclxuICAgICAgdGl0bGU/OiBzdHJpbmcsXHJcbiAgICAgIHllc1RpdGxlPzogc3RyaW5nLFxyXG4gICAgICBpY29uPzogc3RyaW5nXHJcbiAgICApID0+IHtcclxuICAgICAgdGhpcy5kaWFsb2cub3BlbihEaWFsb2dDb25maXJtQ29tcG9uZW50LCB7XHJcbiAgICAgICAgd2lkdGg6IFwiNDAwcHhcIixcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBpY29uOiBpY29uIHx8IFwiZXJyb3JcIixcclxuICAgICAgICAgIHRpdGxlOiB0aXRsZSB8fCB0aGlzLnRyYW5zbGF0ZShcIkVycm9yXCIpLFxyXG4gICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSB8fCBcIlNvbWV0aGluZyB3ZW50IHdyb25nIVwiLFxyXG4gICAgICAgICAgeWVzVGl0bGU6IHllc1RpdGxlIHx8IHRoaXMudHJhbnNsYXRlKFwiT2tcIiksXHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gIG5vdGlmeSA9IHtcclxuICAgIHN1Y2Nlc3M6IChtZXNzYWdlPzogc3RyaW5nLCBkZWxheT86IG51bWJlciwgdGl0bGU/OiBzdHJpbmcpID0+IHtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICAgICAgLy8gY29uc3Qgc3R5bGUgPSBgYm9yZGVyLXJhZGl1czogNXB4OyBtYXJnaW46IDA7IHBhZGRpbmc6IDEycHg7IHotaW5kZXg6IDk5OTk5OyB0b3A6IDVweDsgcmlnaHQ6IDVweDsgZGlzcGxheTogbm9uZTsgcG9zaXRpb246IGZpeGVkO2NvbG9yOiAjNEY4QTEwOyBiYWNrZ3JvdW5kLWNvbG9yOiAjREZGMkJGYDtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICAgICAgLy8gY29uc3QgaHRtbCA9IGA8ZGl2IGlkPVwiJHt0aGlzLm5vdGlmeUlkfVwiIHN0eWxlPVwiJHtzdHlsZX1cIj48aSBjbGFzcz1cImZhIGZhLWNoZWNrXCI+PC9pPiAke21lc3NhZ2UgfHwgdGhpcy50cmFuc2xhdGUoJ1N1Y2Nlc3MnKX08L2Rpdj5gO1xyXG4gICAgICAvLyB0aGlzLnNob3dOb3RpZnkoaHRtbCwgZGVsYXkpO1xyXG4gICAgICBjb25zdCBjb250ZW50ID0gbWVzc2FnZSB8fCB0aGlzLnRyYW5zbGF0ZShcIlN1Y2Nlc3NcIik7XHJcbiAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoY29udGVudCwgdGl0bGUsIHtcclxuICAgICAgICBlbmFibGVIdG1sOiB0cnVlLFxyXG4gICAgICAgIHRpbWVPdXQ6IGRlbGF5IHx8IDMwMDAsXHJcbiAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXHJcbiAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIHdhcm5pbmc6IChtZXNzYWdlPzogc3RyaW5nIHwgc3RyaW5nW10sIGRlbGF5PzogbnVtYmVyLCB0aXRsZT86IHN0cmluZykgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuI2NhY2hlW3RoaXMuI3dhcm5pbmdLZXldIHx8IERhdGUuYWRkTWlsaXNlY29uZHModGhpcy4jY2FjaGVbdGhpcy4jd2FybmluZ0tleV0uY3JlYXRlZERhdGUsIHRoaXMuI2RlbGF5RHVyYXRpb24pIDwgbmV3IERhdGUoKSkge1xyXG4gICAgICAgIHRoaXMuI2NhY2hlW3RoaXMuI3dhcm5pbmdLZXldID0ge1xyXG4gICAgICAgICAgY3JlYXRlZERhdGU6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICAgICAgbWVzc2FnZXM6IFtdLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGltZXIodGhpcy4jZGVsYXlEdXJhdGlvbikucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy4jbm90aWZ5V2FybmluZyh7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLiNjYWNoZVt0aGlzLiN3YXJuaW5nS2V5XS5kYXRhLnRpdGxlLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLiNjYWNoZVt0aGlzLiN3YXJuaW5nS2V5XS5kYXRhLm1lc3NhZ2VzLFxyXG4gICAgICAgICAgICBkZWxheTogZGVsYXlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobWVzc2FnZSkpIHtcclxuICAgICAgICB0aGlzLiNjYWNoZVt0aGlzLiN3YXJuaW5nS2V5XS5kYXRhLm1lc3NhZ2VzID0gWy4uLnRoaXMuI2NhY2hlW3RoaXMuI3dhcm5pbmdLZXldLmRhdGEubWVzc2FnZXMsIC4uLm1lc3NhZ2VdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuI2NhY2hlW3RoaXMuI3dhcm5pbmdLZXldLmRhdGEubWVzc2FnZXMucHVzaChtZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGVycm9yOiAobWVzc2FnZT86IHN0cmluZyB8IHN0cmluZ1tdLCBkZWxheT86IG51bWJlciwgdGl0bGU/OiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLiNjYWNoZVt0aGlzLiNlcnJvcktleV0gfHwgRGF0ZS5hZGRNaWxpc2Vjb25kcyh0aGlzLiNjYWNoZVt0aGlzLiNlcnJvcktleV0uY3JlYXRlZERhdGUsIHRoaXMuI2RlbGF5RHVyYXRpb24pIDwgbmV3IERhdGUoKSkge1xyXG4gICAgICAgIHRoaXMuI2NhY2hlW3RoaXMuI2Vycm9yS2V5XSA9IHtcclxuICAgICAgICAgIGNyZWF0ZWREYXRlOiBuZXcgRGF0ZSgpLFxyXG4gICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgICAgIG1lc3NhZ2VzOiBbXSxcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIHRpbWVyKHRoaXMuI2RlbGF5RHVyYXRpb24pLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuI25vdGlmeUVycm9yKHtcclxuICAgICAgICAgICAgdGl0bGU6IHRoaXMuI2NhY2hlW3RoaXMuI2Vycm9yS2V5XS5kYXRhLnRpdGxlLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLiNjYWNoZVt0aGlzLiNlcnJvcktleV0uZGF0YS5tZXNzYWdlcyxcclxuICAgICAgICAgICAgZGVsYXk6IGRlbGF5XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG1lc3NhZ2UpKSB7XHJcbiAgICAgICAgdGhpcy4jY2FjaGVbdGhpcy4jZXJyb3JLZXldLmRhdGEubWVzc2FnZXMgPSBbLi4udGhpcy4jY2FjaGVbdGhpcy4jZXJyb3JLZXldLmRhdGEubWVzc2FnZXMsIC4uLm1lc3NhZ2VdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuI2NhY2hlW3RoaXMuI2Vycm9yS2V5XS5kYXRhLm1lc3NhZ2VzLnB1c2gobWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgI25vdGlmeVdhcm5pbmcgPSAoYXJnczoge1xyXG4gICAgbWVzc2FnZT86IHN0cmluZyB8IHN0cmluZ1tdLFxyXG4gICAgZGVsYXk/OiBudW1iZXIsXHJcbiAgICB0aXRsZT86IHN0cmluZ1xyXG4gIH0pID0+IHtcclxuICAgIGNvbnN0IHsgbWVzc2FnZSwgZGVsYXksIHRpdGxlIH0gPSBhcmdzO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobWVzc2FnZSkpIHtcclxuICAgICAgdGhpcy4jYnVpbGRUb2FzdE11bHRpTWVzc3NhZ2UoJ3dhcm5pbmcnLCBtZXNzYWdlLCBkZWxheSwgdGl0bGUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBtZXNzYWdlIHx8IHRoaXMudHJhbnNsYXRlKCdXYXJuaW5nJyk7XHJcbiAgICAgIHRoaXMudG9hc3RyLndhcm5pbmcoY29udGVudCwgdGl0bGUsIHtcclxuICAgICAgICBlbmFibGVIdG1sOiB0cnVlLFxyXG4gICAgICAgIHRpbWVPdXQ6IGRlbGF5IHx8IDMwMDAsXHJcbiAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgI25vdGlmeUVycm9yID0gKGFyZ3M6IHtcclxuICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCBzdHJpbmdbXSxcclxuICAgIGRlbGF5PzogbnVtYmVyLFxyXG4gICAgdGl0bGU/OiBzdHJpbmdcclxuICB9KSA9PiB7XHJcbiAgICBjb25zdCB7IG1lc3NhZ2UsIGRlbGF5LCB0aXRsZSB9ID0gYXJncztcclxuICAgIGlmIChBcnJheS5pc0FycmF5KG1lc3NhZ2UpKSB7XHJcbiAgICAgIHRoaXMuI2J1aWxkVG9hc3RNdWx0aU1lc3NzYWdlKCdlcnJvcicsIG1lc3NhZ2UsIGRlbGF5LCB0aXRsZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29uc3QgY29udGVudCA9IG1lc3NhZ2UgfHwgdGhpcy50cmFuc2xhdGUoJ0Vycm9yJyk7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKGNvbnRlbnQsIHRpdGxlLCB7XHJcbiAgICAgICAgZW5hYmxlSHRtbDogdHJ1ZSxcclxuICAgICAgICB0aW1lT3V0OiBkZWxheSB8fCAzMDAwLFxyXG4gICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICNidWlsZFRvYXN0TXVsdGlNZXNzc2FnZSA9ICh0eXBlOiAnd2FybmluZycgfCAnZXJyb3InLCBtZXNzYWdlczogc3RyaW5nW10sIGRlbGF5PzogbnVtYmVyLCB0aXRsZT86IHN0cmluZykgPT4ge1xyXG4gICAgLyoqIHPhu5EgbMaw4bujbmcgaXRlbSBoaeG7g24gdGjhu4sgbeG6t2MgxJHhu4tuaCAqL1xyXG4gICAgY29uc3Qgc2hvd051bSA9IDI7XHJcbiAgICBjb25zdCBpZCA9IGBzZC1ub3RpZnktY2tiLSR7dXVpZC52NCgpfWA7XHJcbiAgICBjb25zdCBtZXNzYWdlTGVuZ3RoID0gbWVzc2FnZXMubGVuZ3RoO1xyXG4gICAgY29uc3QgbWVzc2FnZVJlc3RzID0gbWVzc2FnZXMuc3BsaWNlKHNob3dOdW0pO1xyXG4gICAgY29uc3QgbWVzc2FnZUNvbnRhaW5lciA9IGA8dWwgY2xhc3M9XCJzZC1ub3RpZnlfX2xpc3RcIj57MH17MX08L3VsPmA7XHJcbiAgICBjb25zdCBtZXNzYWdlVGVtcCA9IGA8bGkgY2xhc3M9XCJzZC1ub3RpZnlfX2l0ZW1cIj4tIHswfTwvbGk+YDtcclxuICAgIGxldCBjb250ZW50UmVzdCA9ICcnO1xyXG4gICAgaWYgKG1lc3NhZ2VSZXN0cz8ubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnRlbnRSZXN0ID0gYDxpbnB1dCBpZD1cIiR7aWR9XCIgY2xhc3M9XCJjZGstdmlzdWFsbHktaGlkZGVuIHNkLW5vdGlmeV9fY2hlY2tib3hcIiB0eXBlPVwiY2hlY2tib3hcIiAvPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJzZC1ub3RpZnlfX3RleHQgc2Qtbm90aWZ5X190ZXh0LS1zaG93IHRleHQtc2Vjb25kYXJ5XCIgZm9yPVwiJHtpZH1cIj4ke3RoaXMudHJhbnNsYXRlKCdTaG93IG1vcmUnKX08L2xhYmVsPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2Qtbm90aWZ5X19pdGVtLS1yZXN0XCI+XHJcbiAgICAgICAgJHttZXNzYWdlUmVzdHMubWFwKG0gPT4gU3RyaW5nLmZvcm1hdChtZXNzYWdlVGVtcCwgbSkpLmpvaW4oJycpfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwic2Qtbm90aWZ5X190ZXh0IHNkLW5vdGlmeV9fdGV4dC0tbGVzcyB0ZXh0LXNlY29uZGFyeVwiIGZvcj1cIiR7aWR9XCI+JHt0aGlzLnRyYW5zbGF0ZSgnU2hvdyBsZXNzJyl9PC9sYWJlbD5gO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29udGVudCA9IFN0cmluZy5mb3JtYXQobWVzc2FnZUNvbnRhaW5lciwgbWVzc2FnZXMubWFwKG0gPT4gU3RyaW5nLmZvcm1hdChtZXNzYWdlVGVtcCwgbSkpLmpvaW4oJycpLCBjb250ZW50UmVzdCk7XHJcbiAgICBsZXQgdG9hc3Q6IEFjdGl2ZVRvYXN0PGFueT47XHJcbiAgICAvLyBraGkgdHJ1eeG7gW4gbWVzc2FnZSBodG1sIHPhur0gYuG7iyBzYW5pdGl6ZSBuw6puIHBo4bqjaSB0cnV54buBbiBpbm5lckhUTUwga2hpIHRvYXN0IGhp4buHbiBsw6puXHJcbiAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zY3R0Y3Blci9uZ3gtdG9hc3RyL2Jsb2IvdjEyLjEuMC9zcmMvbGliL3RvYXN0ci90b2FzdHIuc2VydmljZS50cyNMMjcxXHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAnZXJyb3InOlxyXG4gICAgICAgIHRvYXN0ID0gdGhpcy50b2FzdHIuZXJyb3IoY29udGVudCwgYCR7dGl0bGUgfHwgdGhpcy50cmFuc2xhdGUoJ0Vycm9yJyl9ICgke21lc3NhZ2VMZW5ndGh9KWAsIHtcclxuICAgICAgICAgIGVuYWJsZUh0bWw6IHRydWUsXHJcbiAgICAgICAgICB0aW1lT3V0OiBkZWxheSB8fCAzMDAwLFxyXG4gICAgICAgICAgbWVzc2FnZUNsYXNzOiBgdG9hc3QtbWVzc2FnZSB0b2FzdC1tZXNzYWdlLSR7aWR9YCxcclxuICAgICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgdGFwVG9EaXNtaXNzOiBmYWxzZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd3YXJuaW5nJzpcclxuICAgICAgICB0b2FzdCA9IHRoaXMudG9hc3RyLndhcm5pbmcoY29udGVudCwgYCR7dGl0bGUgfHwgdGhpcy50cmFuc2xhdGUoJ1dhcm5pbmcnKX0gKCR7bWVzc2FnZUxlbmd0aH0pYCwge1xyXG4gICAgICAgICAgZW5hYmxlSHRtbDogdHJ1ZSxcclxuICAgICAgICAgIHRpbWVPdXQ6IGRlbGF5IHx8IDMwMDAsXHJcbiAgICAgICAgICBtZXNzYWdlQ2xhc3M6IGB0b2FzdC1tZXNzYWdlIHRvYXN0LW1lc3NhZ2UtJHtpZH1gLFxyXG4gICAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXHJcbiAgICAgICAgICB0YXBUb0Rpc21pc3M6IGZhbHNlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRvYXN0KSB7XHJcbiAgICAgIHRvYXN0Lm9uU2hvd25cclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIHRha2VVbnRpbCh0b2FzdC5vbkhpZGRlbilcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBtZXNzYWdlRWxlOiBIVE1MRGl2RWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC50b2FzdC1tZXNzYWdlLSR7aWR9YCk7XHJcbiAgICAgICAgICBtZXNzYWdlRWxlLmlubmVySFRNTCA9IGNvbnRlbnQ7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZSA9IHtcclxuICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHR5cGVvZiBlcnIgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICB0aGlzLm5vdGlmeS53YXJuaW5nKGVycik7XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGVyciA9PT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgIGxldCBtZXNzYWdlID1cclxuICAgICAgICAgIGVycj8uZXJyb3IgfHxcclxuICAgICAgICAgIGVycj8ubWVzc2FnZSB8fFxyXG4gICAgICAgICAgZXJyPy5FeGNlcHRpb25NZXNzYWdlIHx8XHJcbiAgICAgICAgICBlcnI/Lk1lc3NhZ2UgfHxcclxuICAgICAgICAgIFwiVW5rbm93biBlcnJvclwiO1xyXG4gICAgICAgIGlmICh0eXBlb2YgZXJyLmpzb24gPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgZXJyID0gZXJyLmpzb24oKTtcclxuICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgbWVzc2FnZSA9XHJcbiAgICAgICAgICAgICAgZXJyPy5lcnJvciB8fFxyXG4gICAgICAgICAgICAgIGVycj8ubWVzc2FnZSB8fFxyXG4gICAgICAgICAgICAgIGVycj8uRXhjZXB0aW9uTWVzc2FnZSB8fFxyXG4gICAgICAgICAgICAgIGVycj8uTWVzc2FnZSB8fFxyXG4gICAgICAgICAgICAgIFwiVW5rbm93biBlcnJvclwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm5vdGlmeS53YXJuaW5nKG1lc3NhZ2UpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubm90aWZ5Lndhcm5pbmcoXCJVbmtub3duIGVycm9yXCIpO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gIGNvbmZpcm0gPSAoXHJcbiAgICBtZXNzYWdlOiBzdHJpbmcsXHJcbiAgICBvcHRpb246IHtcclxuICAgICAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgICAgIHllc1RpdGxlPzogc3RyaW5nO1xyXG4gICAgICBub1RpdGxlPzogc3RyaW5nO1xyXG4gICAgICB5ZXNCdXR0b25Db2xvcj86IHN0cmluZztcclxuICAgICAgbm9CdXR0b25Db2xvcj86IHN0cmluZztcclxuICAgIH0gPSB7fVxyXG4gICkgPT4ge1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihEaWFsb2dDb25maXJtQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiBcIjQwMHB4XCIsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICB0aXRsZTogb3B0aW9uPy50aXRsZSB8fCB0aGlzLnRyYW5zbGF0ZShcIkNvbmZpcm1cIiksXHJcbiAgICAgICAgbWVzc2FnZSxcclxuICAgICAgICB5ZXNUaXRsZTogb3B0aW9uPy55ZXNUaXRsZSB8fCB0aGlzLnRyYW5zbGF0ZShcIlllc1wiKSxcclxuICAgICAgICBub1RpdGxlOiBvcHRpb24/Lm5vVGl0bGUgfHwgdGhpcy50cmFuc2xhdGUoXCJOb1wiKSxcclxuICAgICAgICBub0J1dHRvbkNvbG9yOiBvcHRpb24/Lm5vQnV0dG9uQ29sb3IgfHwgXCJzZWNvbmRhcnlcIixcclxuICAgICAgICB5ZXNCdXR0b25Db2xvcjogb3B0aW9uPy55ZXNCdXR0b25Db2xvciB8fCBcInByaW1hcnlcIixcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSBcIkFDQ0VQVFwiKSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PT0gXCJDQU5DRUxcIikge1xyXG4gICAgICAgICAgICByZWplY3QocmVzdWx0KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIGNvbmZpcm1EZWxldGUgPSAoKSA9PiB0aGlzLmNvbmZpcm0odGhpcy50cmFuc2xhdGUoXCJEZWxldGUgcmVjb3JkKHMpXCIpKTtcclxuXHJcbiAgY29uZmlybUFwcHJvdmUgPSAoKSA9PiB0aGlzLmNvbmZpcm0odGhpcy50cmFuc2xhdGUoXCJBcHByb3ZlIHJlY29yZChzKVwiKSk7XHJcblxyXG4gIGNvbmZpcm1XaXRoSW5wdXQgPSAoXHJcbiAgICB0aXRsZTogc3RyaW5nLFxyXG4gICAgb3B0aW9uOiB7XHJcbiAgICAgIG1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgICAgIHllc1RpdGxlPzogc3RyaW5nO1xyXG4gICAgICBub1RpdGxlPzogc3RyaW5nO1xyXG4gICAgICByZXF1aXJlZD86IGJvb2xlYW47XHJcbiAgICAgIG1heGxlbmd0aD86IG51bWJlcjtcclxuICAgICAgeWVzQnV0dG9uQ29sb3I/OiBzdHJpbmc7XHJcbiAgICAgIG5vQnV0dG9uQ29sb3I/OiBzdHJpbmc7XHJcbiAgICAgIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcclxuICAgIH0gPSB7fVxyXG4gICk6IFByb21pc2U8c3RyaW5nPiA9PiB7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKERpYWxvZ0NvbmZpcm1Db21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6IFwiNDAwcHhcIixcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIHRpdGxlOiB0aXRsZSB8fCB0aGlzLnRyYW5zbGF0ZShcIkNvbmZpcm1cIiksXHJcbiAgICAgICAgbWVzc2FnZTogb3B0aW9uPy5tZXNzYWdlLFxyXG4gICAgICAgIHllc1RpdGxlOiBvcHRpb24/Lnllc1RpdGxlIHx8IHRoaXMudHJhbnNsYXRlKFwiWWVzXCIpLFxyXG4gICAgICAgIG5vVGl0bGU6IG9wdGlvbj8ubm9UaXRsZSB8fCB0aGlzLnRyYW5zbGF0ZShcIk5vXCIpLFxyXG4gICAgICAgIG5vQnV0dG9uQ29sb3I6IG9wdGlvbj8ubm9CdXR0b25Db2xvciB8fCBcInNlY29uZGFyeVwiLFxyXG4gICAgICAgIHllc0J1dHRvbkNvbG9yOiBvcHRpb24/Lnllc0J1dHRvbkNvbG9yIHx8IFwicHJpbWFyeVwiLFxyXG4gICAgICAgIGlucHV0OiB7XHJcbiAgICAgICAgICBtYXhsZW5ndGg6IG9wdGlvbj8ubWF4bGVuZ3RoIHx8IDI1NSxcclxuICAgICAgICAgIHJlcXVpcmVkOiBvcHRpb24/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiBvcHRpb24/LmRlZmF1bHRWYWx1ZSB8fCAnJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gXCJBQ0NFUFRcIikge1xyXG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PT0gXCJDQU5DRUxcIikge1xyXG4gICAgICAgICAgICByZWplY3QocmVzdWx0KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSB0cmFuc2xhdGUgPSAodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSh2YWx1ZSk7XHJcbiAgfTtcclxufVxyXG4iXX0=
|
|
317
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvdXNlci9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ub3RpZnkvIiwic291cmNlcyI6WyJzcmMvbGliL25vdGlmeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM5RixPQUFPLEVBQWUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBZ0IsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9ELE9BQU8sRUFBVyxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFHN0IsTUFBTSxPQUFPLGVBQWU7SUFhMUIsWUFDVSxNQUFpQixFQUNqQixNQUFxQixFQUNyQixnQkFBb0M7UUFGcEMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUFmOUMseUJBQWlCLEdBQUcsRUFBQyxDQUFDLHFFQUFxRTtRQUMzRixzQkFBYyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUM7UUFDeEIsb0JBQVksSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFDO1FBQ3RCLGlCQVFJLEVBQUUsRUFBQztRQU9QLFVBQUssR0FBRztZQUNOLElBQUksRUFBRSxDQUNKLE9BQWdCLEVBQ2hCLEtBQWMsRUFDZCxRQUFpQixFQUNqQixJQUFh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RSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsUUFBUTt3QkFDMUIsWUFBWSxFQUFFLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFlBQVksS0FBSSxFQUFFO3FCQUN6QztpQkFDRjthQUNGLENBQUMsQ0FBQztZQUNILE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ3JDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDM0MsSUFBSSxNQUFNLEVBQUU7d0JBQ1YsSUFBSSxNQUFNLEtBQUssUUFBUSxFQUFFOzRCQUN2QixPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7eUJBQ2pCOzZCQUFNLElBQUksTUFBTSxLQUFLLFFBQVEsRUFBRTs0QkFDOUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3lCQUNoQjs2QkFBTTs0QkFDTCxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7eUJBQ2pCO3FCQUNGO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFTSxjQUFTLEdBQUcsQ0FBQyxLQUFhLEVBQVUsRUFBRTtZQUM1QyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDO0lBMVZFLENBQUM7Ozs7WUFsQk4sVUFBVTs7O1lBUkYsU0FBUztZQUVJLGFBQWE7WUFDMUIsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwiQHNkLWFuZ3VsYXIvY29yZS9jb21tb25cIjtcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHsgRGlhbG9nQ29uZmlybUNvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvZGlhbG9nLWNvbmZpcm0vZGlhbG9nLWNvbmZpcm0uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEFjdGl2ZVRvYXN0LCBUb2FzdHJTZXJ2aWNlIH0gZnJvbSBcIm5neC10b2FzdHJcIjtcclxuaW1wb3J0IHsgU2RUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBzZC1hbmd1bGFyL2NvcmUvdHJhbnNsYXRlXCI7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRpbWVyIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0ICogYXMgdXVpZCBmcm9tICd1dWlkJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFNkTm90aWZ5U2VydmljZSB7XHJcbiAgI2RlbGF5RHVyYXRpb24gPSA1MDA7IC8vIEPDoWMgZXJyb3Ivd2FybmluZyBtZXNzYWdlIHPhur0gdOG7sSDEkeG7mW5nIGfhu5lwIHNhdSBraG/huqNuZyB0aOG7nWkgZ2lhbiB0csOqblxyXG4gICN3YXJuaW5nS2V5ID0gdXVpZC52NCgpO1xyXG4gICNlcnJvcktleSA9IHV1aWQudjQoKTtcclxuICAjY2FjaGU6IHtcclxuICAgIFtrZXk6IHN0cmluZ106IHtcclxuICAgICAgY3JlYXRlZERhdGU6IERhdGU7XHJcbiAgICAgIGRhdGE/OiB7XHJcbiAgICAgICAgdGl0bGU6IHN0cmluZyxcclxuICAgICAgICBtZXNzYWdlczogc3RyaW5nW11cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0gPSB7fTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogU2RUcmFuc2xhdGVTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgYWxlcnQgPSB7XHJcbiAgICBpbmZvOiAoXHJcbiAgICAgIG1lc3NhZ2U/OiBzdHJpbmcsXHJcbiAgICAgIHRpdGxlPzogc3RyaW5nLFxyXG4gICAgICB5ZXNUaXRsZT86IHN0cmluZyxcclxuICAgICAgaWNvbj86IHN0cmluZ1xyXG4gICAgKSA9PiB7XHJcbiAgICAgIHRoaXMuZGlhbG9nLm9wZW4oRGlhbG9nQ29uZmlybUNvbXBvbmVudCwge1xyXG4gICAgICAgIHdpZHRoOiBcIjQwMHB4XCIsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgaWNvbjogaWNvbiB8fCBcImluZm9cIixcclxuICAgICAgICAgIHRpdGxlOiB0aXRsZSB8fCB0aGlzLnRyYW5zbGF0ZShcIk5vdGljZVwiKSxcclxuICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgfHwgXCJEb25lIVwiLFxyXG4gICAgICAgICAgeWVzVGl0bGU6IHllc1RpdGxlIHx8IHRoaXMudHJhbnNsYXRlKFwiT2tcIiksXHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9LFxyXG4gICAgc3VjY2VzczogKFxyXG4gICAgICBtZXNzYWdlPzogc3RyaW5nLFxyXG4gICAgICB0aXRsZT86IHN0cmluZyxcclxuICAgICAgeWVzVGl0bGU/OiBzdHJpbmcsXHJcbiAgICAgIGljb24/OiBzdHJpbmdcclxuICAgICkgPT4ge1xyXG4gICAgICB0aGlzLmRpYWxvZy5vcGVuKERpYWxvZ0NvbmZpcm1Db21wb25lbnQsIHtcclxuICAgICAgICB3aWR0aDogXCI0MDBweFwiLFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIGljb246IGljb24gfHwgXCJkb25lXCIsXHJcbiAgICAgICAgICB0aXRsZTogdGl0bGUgfHwgdGhpcy50cmFuc2xhdGUoXCJTdWNjZXNzXCIpLFxyXG4gICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSB8fCBcIkRvbmUhXCIsXHJcbiAgICAgICAgICB5ZXNUaXRsZTogeWVzVGl0bGUgfHwgdGhpcy50cmFuc2xhdGUoXCJPa1wiKSxcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH0sXHJcbiAgICB3YXJuaW5nOiAoXHJcbiAgICAgIG1lc3NhZ2U/OiBzdHJpbmcsXHJcbiAgICAgIHRpdGxlPzogc3RyaW5nLFxyXG4gICAgICB5ZXNUaXRsZT86IHN0cmluZyxcclxuICAgICAgaWNvbj86IHN0cmluZ1xyXG4gICAgKSA9PiB7XHJcbiAgICAgIHRoaXMuZGlhbG9nLm9wZW4oRGlhbG9nQ29uZmlybUNvbXBvbmVudCwge1xyXG4gICAgICAgIHdpZHRoOiBcIjQwMHB4XCIsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgaWNvbjogaWNvbiB8fCBcIndhcm5pbmdcIixcclxuICAgICAgICAgIHRpdGxlOiB0aXRsZSB8fCB0aGlzLnRyYW5zbGF0ZShcIldhcm5pbmdcIiksXHJcbiAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlIHx8IFwiU29tZXRoaW5nIHdlbnQgd3JvbmchXCIsXHJcbiAgICAgICAgICB5ZXNUaXRsZTogeWVzVGl0bGUgfHwgdGhpcy50cmFuc2xhdGUoXCJPa1wiKSxcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH0sXHJcbiAgICBlcnJvcjogKFxyXG4gICAgICBtZXNzYWdlPzogc3RyaW5nLFxyXG4gICAgICB0aXRsZT86IHN0cmluZyxcclxuICAgICAgeWVzVGl0bGU/OiBzdHJpbmcsXHJcbiAgICAgIGljb24/OiBzdHJpbmdcclxuICAgICkgPT4ge1xyXG4gICAgICB0aGlzLmRpYWxvZy5vcGVuKERpYWxvZ0NvbmZpcm1Db21wb25lbnQsIHtcclxuICAgICAgICB3aWR0aDogXCI0MDBweFwiLFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIGljb246IGljb24gfHwgXCJlcnJvclwiLFxyXG4gICAgICAgICAgdGl0bGU6IHRpdGxlIHx8IHRoaXMudHJhbnNsYXRlKFwiRXJyb3JcIiksXHJcbiAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlIHx8IFwiU29tZXRoaW5nIHdlbnQgd3JvbmchXCIsXHJcbiAgICAgICAgICB5ZXNUaXRsZTogeWVzVGl0bGUgfHwgdGhpcy50cmFuc2xhdGUoXCJPa1wiKSxcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgbm90aWZ5ID0ge1xyXG4gICAgc3VjY2VzczogKG1lc3NhZ2U/OiBzdHJpbmcsIGRlbGF5PzogbnVtYmVyLCB0aXRsZT86IHN0cmluZykgPT4ge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gICAgICAvLyBjb25zdCBzdHlsZSA9IGBib3JkZXItcmFkaXVzOiA1cHg7IG1hcmdpbjogMDsgcGFkZGluZzogMTJweDsgei1pbmRleDogOTk5OTk7IHRvcDogNXB4OyByaWdodDogNXB4OyBkaXNwbGF5OiBub25lOyBwb3NpdGlvbjogZml4ZWQ7Y29sb3I6ICM0RjhBMTA7IGJhY2tncm91bmQtY29sb3I6ICNERkYyQkZgO1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gICAgICAvLyBjb25zdCBodG1sID0gYDxkaXYgaWQ9XCIke3RoaXMubm90aWZ5SWR9XCIgc3R5bGU9XCIke3N0eWxlfVwiPjxpIGNsYXNzPVwiZmEgZmEtY2hlY2tcIj48L2k+ICR7bWVzc2FnZSB8fCB0aGlzLnRyYW5zbGF0ZSgnU3VjY2VzcycpfTwvZGl2PmA7XHJcbiAgICAgIC8vIHRoaXMuc2hvd05vdGlmeShodG1sLCBkZWxheSk7XHJcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBtZXNzYWdlIHx8IHRoaXMudHJhbnNsYXRlKFwiU3VjY2Vzc1wiKTtcclxuICAgICAgdGhpcy50b2FzdHIuc3VjY2Vzcyhjb250ZW50LCB0aXRsZSwge1xyXG4gICAgICAgIGVuYWJsZUh0bWw6IHRydWUsXHJcbiAgICAgICAgdGltZU91dDogZGVsYXkgfHwgMzAwMCxcclxuICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICB9LFxyXG4gICAgd2FybmluZzogKG1lc3NhZ2U/OiBzdHJpbmcgfCBzdHJpbmdbXSwgZGVsYXk/OiBudW1iZXIsIHRpdGxlPzogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy4jY2FjaGVbdGhpcy4jd2FybmluZ0tleV0gfHwgRGF0ZS5hZGRNaWxpc2Vjb25kcyh0aGlzLiNjYWNoZVt0aGlzLiN3YXJuaW5nS2V5XS5jcmVhdGVkRGF0ZSwgdGhpcy4jZGVsYXlEdXJhdGlvbikgPCBuZXcgRGF0ZSgpKSB7XHJcbiAgICAgICAgdGhpcy4jY2FjaGVbdGhpcy4jd2FybmluZ0tleV0gPSB7XHJcbiAgICAgICAgICBjcmVhdGVkRGF0ZTogbmV3IERhdGUoKSxcclxuICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxyXG4gICAgICAgICAgICBtZXNzYWdlczogW10sXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aW1lcih0aGlzLiNkZWxheUR1cmF0aW9uKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLiNub3RpZnlXYXJuaW5nKHtcclxuICAgICAgICAgICAgdGl0bGU6IHRoaXMuI2NhY2hlW3RoaXMuI3dhcm5pbmdLZXldLmRhdGEudGl0bGUsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMuI2NhY2hlW3RoaXMuI3dhcm5pbmdLZXldLmRhdGEubWVzc2FnZXMsXHJcbiAgICAgICAgICAgIGRlbGF5OiBkZWxheVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShtZXNzYWdlKSkge1xyXG4gICAgICAgIHRoaXMuI2NhY2hlW3RoaXMuI3dhcm5pbmdLZXldLmRhdGEubWVzc2FnZXMgPSBbLi4udGhpcy4jY2FjaGVbdGhpcy4jd2FybmluZ0tleV0uZGF0YS5tZXNzYWdlcywgLi4ubWVzc2FnZV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy4jY2FjaGVbdGhpcy4jd2FybmluZ0tleV0uZGF0YS5tZXNzYWdlcy5wdXNoKG1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgZXJyb3I6IChtZXNzYWdlPzogc3RyaW5nIHwgc3RyaW5nW10sIGRlbGF5PzogbnVtYmVyLCB0aXRsZT86IHN0cmluZykgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuI2NhY2hlW3RoaXMuI2Vycm9yS2V5XSB8fCBEYXRlLmFkZE1pbGlzZWNvbmRzKHRoaXMuI2NhY2hlW3RoaXMuI2Vycm9yS2V5XS5jcmVhdGVkRGF0ZSwgdGhpcy4jZGVsYXlEdXJhdGlvbikgPCBuZXcgRGF0ZSgpKSB7XHJcbiAgICAgICAgdGhpcy4jY2FjaGVbdGhpcy4jZXJyb3JLZXldID0ge1xyXG4gICAgICAgICAgY3JlYXRlZERhdGU6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIHRpdGxlLFxyXG4gICAgICAgICAgICBtZXNzYWdlczogW10sXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aW1lcih0aGlzLiNkZWxheUR1cmF0aW9uKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy4jY2FjaGVbdGhpcy4jZXJyb3JLZXldLmRhdGEubWVzc2FnZXMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMuI25vdGlmeUVycm9yKHtcclxuICAgICAgICAgICAgICB0aXRsZTogdGhpcy4jY2FjaGVbdGhpcy4jZXJyb3JLZXldLmRhdGEudGl0bGUsXHJcbiAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy4jY2FjaGVbdGhpcy4jZXJyb3JLZXldLmRhdGEubWVzc2FnZXNbMF0sXHJcbiAgICAgICAgICAgICAgZGVsYXlcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLiNub3RpZnlFcnJvcih7XHJcbiAgICAgICAgICAgICAgdGl0bGU6IHRoaXMuI2NhY2hlW3RoaXMuI2Vycm9yS2V5XS5kYXRhLnRpdGxlLFxyXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMuI2NhY2hlW3RoaXMuI2Vycm9yS2V5XS5kYXRhLm1lc3NhZ2VzLFxyXG4gICAgICAgICAgICAgIGRlbGF5XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG1lc3NhZ2UpKSB7XHJcbiAgICAgICAgdGhpcy4jY2FjaGVbdGhpcy4jZXJyb3JLZXldLmRhdGEubWVzc2FnZXMgPSBbLi4udGhpcy4jY2FjaGVbdGhpcy4jZXJyb3JLZXldLmRhdGEubWVzc2FnZXMsIC4uLm1lc3NhZ2VdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuI2NhY2hlW3RoaXMuI2Vycm9yS2V5XS5kYXRhLm1lc3NhZ2VzLnB1c2gobWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgI25vdGlmeVdhcm5pbmcgPSAoYXJnczoge1xyXG4gICAgbWVzc2FnZT86IHN0cmluZyB8IHN0cmluZ1tdLFxyXG4gICAgZGVsYXk/OiBudW1iZXIsXHJcbiAgICB0aXRsZT86IHN0cmluZ1xyXG4gIH0pID0+IHtcclxuICAgIGNvbnN0IHsgbWVzc2FnZSwgZGVsYXksIHRpdGxlIH0gPSBhcmdzO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobWVzc2FnZSkpIHtcclxuICAgICAgdGhpcy4jYnVpbGRUb2FzdE11bHRpTWVzc3NhZ2UoJ3dhcm5pbmcnLCBtZXNzYWdlLCBkZWxheSwgdGl0bGUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBtZXNzYWdlIHx8IHRoaXMudHJhbnNsYXRlKCdXYXJuaW5nJyk7XHJcbiAgICAgIHRoaXMudG9hc3RyLndhcm5pbmcoY29udGVudCwgdGl0bGUsIHtcclxuICAgICAgICBlbmFibGVIdG1sOiB0cnVlLFxyXG4gICAgICAgIHRpbWVPdXQ6IGRlbGF5IHx8IDMwMDAsXHJcbiAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgI25vdGlmeUVycm9yID0gKGFyZ3M6IHtcclxuICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCBzdHJpbmdbXSxcclxuICAgIGRlbGF5PzogbnVtYmVyLFxyXG4gICAgdGl0bGU/OiBzdHJpbmdcclxuICB9KSA9PiB7XHJcbiAgICBjb25zdCB7IG1lc3NhZ2UsIGRlbGF5LCB0aXRsZSB9ID0gYXJncztcclxuICAgIGlmIChBcnJheS5pc0FycmF5KG1lc3NhZ2UpKSB7XHJcbiAgICAgIHRoaXMuI2J1aWxkVG9hc3RNdWx0aU1lc3NzYWdlKCdlcnJvcicsIG1lc3NhZ2UsIGRlbGF5LCB0aXRsZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29uc3QgY29udGVudCA9IG1lc3NhZ2UgfHwgdGhpcy50cmFuc2xhdGUoJ0Vycm9yJyk7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKGNvbnRlbnQsIHRpdGxlLCB7XHJcbiAgICAgICAgZW5hYmxlSHRtbDogdHJ1ZSxcclxuICAgICAgICB0aW1lT3V0OiBkZWxheSB8fCAzMDAwLFxyXG4gICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICNidWlsZFRvYXN0TXVsdGlNZXNzc2FnZSA9ICh0eXBlOiAnd2FybmluZycgfCAnZXJyb3InLCBtZXNzYWdlczogc3RyaW5nW10sIGRlbGF5PzogbnVtYmVyLCB0aXRsZT86IHN0cmluZykgPT4ge1xyXG4gICAgLyoqIHPhu5EgbMaw4bujbmcgaXRlbSBoaeG7g24gdGjhu4sgbeG6t2MgxJHhu4tuaCAqL1xyXG4gICAgY29uc3Qgc2hvd051bSA9IDI7XHJcbiAgICBjb25zdCBpZCA9IGBzZC1ub3RpZnktY2tiLSR7dXVpZC52NCgpfWA7XHJcbiAgICBjb25zdCBtZXNzYWdlTGVuZ3RoID0gbWVzc2FnZXMubGVuZ3RoO1xyXG4gICAgY29uc3QgbWVzc2FnZVJlc3RzID0gbWVzc2FnZXMuc3BsaWNlKHNob3dOdW0pO1xyXG4gICAgY29uc3QgbWVzc2FnZUNvbnRhaW5lciA9IGA8dWwgY2xhc3M9XCJzZC1ub3RpZnlfX2xpc3RcIj57MH17MX08L3VsPmA7XHJcbiAgICBjb25zdCBtZXNzYWdlVGVtcCA9IGA8bGkgY2xhc3M9XCJzZC1ub3RpZnlfX2l0ZW1cIj4tIHswfTwvbGk+YDtcclxuICAgIGxldCBjb250ZW50UmVzdCA9ICcnO1xyXG4gICAgaWYgKG1lc3NhZ2VSZXN0cz8ubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnRlbnRSZXN0ID0gYDxpbnB1dCBpZD1cIiR7aWR9XCIgY2xhc3M9XCJjZGstdmlzdWFsbHktaGlkZGVuIHNkLW5vdGlmeV9fY2hlY2tib3hcIiB0eXBlPVwiY2hlY2tib3hcIiAvPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJzZC1ub3RpZnlfX3RleHQgc2Qtbm90aWZ5X190ZXh0LS1zaG93XCIgZm9yPVwiJHtpZH1cIj4ke3RoaXMudHJhbnNsYXRlKCdTaG93IG1vcmUnKX08L2xhYmVsPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2Qtbm90aWZ5X19pdGVtLS1yZXN0XCI+XHJcbiAgICAgICAgJHttZXNzYWdlUmVzdHMubWFwKG0gPT4gU3RyaW5nLmZvcm1hdChtZXNzYWdlVGVtcCwgbSkpLmpvaW4oJycpfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwic2Qtbm90aWZ5X190ZXh0IHNkLW5vdGlmeV9fdGV4dC0tbGVzc1wiIGZvcj1cIiR7aWR9XCI+JHt0aGlzLnRyYW5zbGF0ZSgnU2hvdyBsZXNzJyl9PC9sYWJlbD5gO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29udGVudCA9IFN0cmluZy5mb3JtYXQobWVzc2FnZUNvbnRhaW5lciwgbWVzc2FnZXMubWFwKG0gPT4gU3RyaW5nLmZvcm1hdChtZXNzYWdlVGVtcCwgbSkpLmpvaW4oJycpLCBjb250ZW50UmVzdCk7XHJcbiAgICBsZXQgdG9hc3Q6IEFjdGl2ZVRvYXN0PGFueT47XHJcbiAgICAvLyBraGkgdHJ1eeG7gW4gbWVzc2FnZSBodG1sIHPhur0gYuG7iyBzYW5pdGl6ZSBuw6puIHBo4bqjaSB0cnV54buBbiBpbm5lckhUTUwga2hpIHRvYXN0IGhp4buHbiBsw6puXHJcbiAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zY3R0Y3Blci9uZ3gtdG9hc3RyL2Jsb2IvdjEyLjEuMC9zcmMvbGliL3RvYXN0ci90b2FzdHIuc2VydmljZS50cyNMMjcxXHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAnZXJyb3InOlxyXG4gICAgICAgIHRvYXN0ID0gdGhpcy50b2FzdHIuZXJyb3IoY29udGVudCwgYCR7dGl0bGUgfHwgdGhpcy50cmFuc2xhdGUoJ0Vycm9yJyl9ICgke21lc3NhZ2VMZW5ndGh9KWAsIHtcclxuICAgICAgICAgIGVuYWJsZUh0bWw6IHRydWUsXHJcbiAgICAgICAgICB0aW1lT3V0OiBkZWxheSB8fCAzMDAwLFxyXG4gICAgICAgICAgbWVzc2FnZUNsYXNzOiBgdG9hc3QtbWVzc2FnZSB0b2FzdC1tZXNzYWdlLSR7aWR9YCxcclxuICAgICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgdGFwVG9EaXNtaXNzOiBmYWxzZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd3YXJuaW5nJzpcclxuICAgICAgICB0b2FzdCA9IHRoaXMudG9hc3RyLndhcm5pbmcoY29udGVudCwgYCR7dGl0bGUgfHwgdGhpcy50cmFuc2xhdGUoJ1dhcm5pbmcnKX0gKCR7bWVzc2FnZUxlbmd0aH0pYCwge1xyXG4gICAgICAgICAgZW5hYmxlSHRtbDogdHJ1ZSxcclxuICAgICAgICAgIHRpbWVPdXQ6IGRlbGF5IHx8IDMwMDAsXHJcbiAgICAgICAgICBtZXNzYWdlQ2xhc3M6IGB0b2FzdC1tZXNzYWdlIHRvYXN0LW1lc3NhZ2UtJHtpZH1gLFxyXG4gICAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXHJcbiAgICAgICAgICB0YXBUb0Rpc21pc3M6IGZhbHNlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRvYXN0KSB7XHJcbiAgICAgIHRvYXN0Lm9uU2hvd25cclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIHRha2VVbnRpbCh0b2FzdC5vbkhpZGRlbilcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBtZXNzYWdlRWxlOiBIVE1MRGl2RWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC50b2FzdC1tZXNzYWdlLSR7aWR9YCk7XHJcbiAgICAgICAgICBtZXNzYWdlRWxlLmlubmVySFRNTCA9IGNvbnRlbnQ7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZSA9IHtcclxuICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHR5cGVvZiBlcnIgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICB0aGlzLm5vdGlmeS53YXJuaW5nKGVycik7XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGVyciA9PT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgIGxldCBtZXNzYWdlID1cclxuICAgICAgICAgIGVycj8uZXJyb3IgfHxcclxuICAgICAgICAgIGVycj8ubWVzc2FnZSB8fFxyXG4gICAgICAgICAgZXJyPy5FeGNlcHRpb25NZXNzYWdlIHx8XHJcbiAgICAgICAgICBlcnI/Lk1lc3NhZ2UgfHxcclxuICAgICAgICAgIFwiVW5rbm93biBlcnJvclwiO1xyXG4gICAgICAgIGlmICh0eXBlb2YgZXJyLmpzb24gPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgZXJyID0gZXJyLmpzb24oKTtcclxuICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgbWVzc2FnZSA9XHJcbiAgICAgICAgICAgICAgZXJyPy5lcnJvciB8fFxyXG4gICAgICAgICAgICAgIGVycj8ubWVzc2FnZSB8fFxyXG4gICAgICAgICAgICAgIGVycj8uRXhjZXB0aW9uTWVzc2FnZSB8fFxyXG4gICAgICAgICAgICAgIGVycj8uTWVzc2FnZSB8fFxyXG4gICAgICAgICAgICAgIFwiVW5rbm93biBlcnJvclwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm5vdGlmeS53YXJuaW5nKG1lc3NhZ2UpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubm90aWZ5Lndhcm5pbmcoXCJVbmtub3duIGVycm9yXCIpO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gIGNvbmZpcm0gPSAoXHJcbiAgICBtZXNzYWdlOiBzdHJpbmcsXHJcbiAgICBvcHRpb246IHtcclxuICAgICAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgICAgIHllc1RpdGxlPzogc3RyaW5nO1xyXG4gICAgICBub1RpdGxlPzogc3RyaW5nO1xyXG4gICAgICB5ZXNCdXR0b25Db2xvcj86IHN0cmluZztcclxuICAgICAgbm9CdXR0b25Db2xvcj86IHN0cmluZztcclxuICAgIH0gPSB7fVxyXG4gICkgPT4ge1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihEaWFsb2dDb25maXJtQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiBcIjQwMHB4XCIsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICB0aXRsZTogb3B0aW9uPy50aXRsZSB8fCB0aGlzLnRyYW5zbGF0ZShcIkNvbmZpcm1cIiksXHJcbiAgICAgICAgbWVzc2FnZSxcclxuICAgICAgICB5ZXNUaXRsZTogb3B0aW9uPy55ZXNUaXRsZSB8fCB0aGlzLnRyYW5zbGF0ZShcIlllc1wiKSxcclxuICAgICAgICBub1RpdGxlOiBvcHRpb24/Lm5vVGl0bGUgfHwgdGhpcy50cmFuc2xhdGUoXCJOb1wiKSxcclxuICAgICAgICBub0J1dHRvbkNvbG9yOiBvcHRpb24/Lm5vQnV0dG9uQ29sb3IgfHwgXCJzZWNvbmRhcnlcIixcclxuICAgICAgICB5ZXNCdXR0b25Db2xvcjogb3B0aW9uPy55ZXNCdXR0b25Db2xvciB8fCBcInByaW1hcnlcIixcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSBcIkFDQ0VQVFwiKSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PT0gXCJDQU5DRUxcIikge1xyXG4gICAgICAgICAgICByZWplY3QocmVzdWx0KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIGNvbmZpcm1EZWxldGUgPSAoKSA9PiB0aGlzLmNvbmZpcm0odGhpcy50cmFuc2xhdGUoXCJEZWxldGUgcmVjb3JkKHMpXCIpKTtcclxuXHJcbiAgY29uZmlybUFwcHJvdmUgPSAoKSA9PiB0aGlzLmNvbmZpcm0odGhpcy50cmFuc2xhdGUoXCJBcHByb3ZlIHJlY29yZChzKVwiKSk7XHJcblxyXG4gIGNvbmZpcm1XaXRoSW5wdXQgPSAoXHJcbiAgICB0aXRsZTogc3RyaW5nLFxyXG4gICAgb3B0aW9uOiB7XHJcbiAgICAgIG1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgICAgIHllc1RpdGxlPzogc3RyaW5nO1xyXG4gICAgICBub1RpdGxlPzogc3RyaW5nO1xyXG4gICAgICByZXF1aXJlZD86IGJvb2xlYW47XHJcbiAgICAgIG1heGxlbmd0aD86IG51bWJlcjtcclxuICAgICAgeWVzQnV0dG9uQ29sb3I/OiBzdHJpbmc7XHJcbiAgICAgIG5vQnV0dG9uQ29sb3I/OiBzdHJpbmc7XHJcbiAgICAgIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcclxuICAgIH0gPSB7fVxyXG4gICk6IFByb21pc2U8c3RyaW5nPiA9PiB7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKERpYWxvZ0NvbmZpcm1Db21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6IFwiNDAwcHhcIixcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIHRpdGxlOiB0aXRsZSB8fCB0aGlzLnRyYW5zbGF0ZShcIkNvbmZpcm1cIiksXHJcbiAgICAgICAgbWVzc2FnZTogb3B0aW9uPy5tZXNzYWdlLFxyXG4gICAgICAgIHllc1RpdGxlOiBvcHRpb24/Lnllc1RpdGxlIHx8IHRoaXMudHJhbnNsYXRlKFwiWWVzXCIpLFxyXG4gICAgICAgIG5vVGl0bGU6IG9wdGlvbj8ubm9UaXRsZSB8fCB0aGlzLnRyYW5zbGF0ZShcIk5vXCIpLFxyXG4gICAgICAgIG5vQnV0dG9uQ29sb3I6IG9wdGlvbj8ubm9CdXR0b25Db2xvciB8fCBcInNlY29uZGFyeVwiLFxyXG4gICAgICAgIHllc0J1dHRvbkNvbG9yOiBvcHRpb24/Lnllc0J1dHRvbkNvbG9yIHx8IFwicHJpbWFyeVwiLFxyXG4gICAgICAgIGlucHV0OiB7XHJcbiAgICAgICAgICBtYXhsZW5ndGg6IG9wdGlvbj8ubWF4bGVuZ3RoIHx8IDI1NSxcclxuICAgICAgICAgIHJlcXVpcmVkOiBvcHRpb24/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiBvcHRpb24/LmRlZmF1bHRWYWx1ZSB8fCAnJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gXCJBQ0NFUFRcIikge1xyXG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PT0gXCJDQU5DRUxcIikge1xyXG4gICAgICAgICAgICByZWplY3QocmVzdWx0KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSB0cmFuc2xhdGUgPSAodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSh2YWx1ZSk7XHJcbiAgfTtcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './src/public-api';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvdXNlci9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9wb3BvdmVyLyIsInNvdXJjZXMiOlsiaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3JjL3B1YmxpYy1hcGknOyJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2QtYW5ndWxhci1jb3JlLXBvcG92ZXIuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvdXNlci9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9wb3BvdmVyLyIsInNvdXJjZXMiOlsic2QtYW5ndWxhci1jb3JlLXBvcG92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
var _overlayRef, _popoverClose$, _portal, _destroy$, _popover, _setIsPopoverOpen, _getPortal, _createOverlay, _setPosition, _getOverlayConfig, _subscribeToPositions, _destroyPopover;
|
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
|
+
import { Directionality } from "@angular/cdk/bidi";
|
|
4
|
+
import { Overlay, OverlayConfig, } from "@angular/cdk/overlay";
|
|
5
|
+
import { Platform } from "@angular/cdk/platform";
|
|
6
|
+
import { TemplatePortal } from "@angular/cdk/portal";
|
|
7
|
+
import { Directive, ElementRef, EventEmitter, Input, NgZone, Optional, Output, ViewContainerRef, } from "@angular/core";
|
|
8
|
+
import { fromEvent, merge, Subject, Subscription } from "rxjs";
|
|
9
|
+
import { debounceTime, distinctUntilChanged, filter, mapTo, takeUntil, } from "rxjs/operators";
|
|
10
|
+
export class PopoverTriggerDirective {
|
|
11
|
+
constructor(_overlay, _element, _ngZone, viewContainerRef, elementRef, platform, _dir) {
|
|
12
|
+
this._overlay = _overlay;
|
|
13
|
+
this._element = _element;
|
|
14
|
+
this._ngZone = _ngZone;
|
|
15
|
+
this.viewContainerRef = viewContainerRef;
|
|
16
|
+
this.elementRef = elementRef;
|
|
17
|
+
this.platform = platform;
|
|
18
|
+
this._dir = _dir;
|
|
19
|
+
_overlayRef.set(this, null);
|
|
20
|
+
_popoverClose$.set(this, Subscription.EMPTY);
|
|
21
|
+
_portal.set(this, void 0);
|
|
22
|
+
_destroy$.set(this, new Subject());
|
|
23
|
+
this.popoverOpen = false;
|
|
24
|
+
_popover.set(this, void 0);
|
|
25
|
+
this.popoverOpened = new EventEmitter();
|
|
26
|
+
this.popoverClosed = new EventEmitter();
|
|
27
|
+
this.openPopover = () => {
|
|
28
|
+
if (this.popoverOpen) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const overlayRef = __classPrivateFieldGet(this, _createOverlay).call(this);
|
|
32
|
+
const overlayConfig = overlayRef.getConfig();
|
|
33
|
+
const positionStrategy = overlayConfig.positionStrategy;
|
|
34
|
+
__classPrivateFieldGet(this, _setPosition).call(this, positionStrategy);
|
|
35
|
+
overlayConfig.hasBackdrop = false;
|
|
36
|
+
overlayRef.attach(__classPrivateFieldGet(this, _getPortal).call(this));
|
|
37
|
+
this.popover.trigger = this;
|
|
38
|
+
__classPrivateFieldGet(this, _setIsPopoverOpen).call(this, true);
|
|
39
|
+
};
|
|
40
|
+
this.closePopover = () => {
|
|
41
|
+
this.popover.closed.emit();
|
|
42
|
+
};
|
|
43
|
+
_setIsPopoverOpen.set(this, (isOpen) => {
|
|
44
|
+
this.popoverOpen = isOpen;
|
|
45
|
+
this.popoverOpen ? this.popoverOpened.emit() : this.popoverClosed.emit();
|
|
46
|
+
});
|
|
47
|
+
_getPortal.set(this, () => {
|
|
48
|
+
if (!__classPrivateFieldGet(this, _portal) ||
|
|
49
|
+
__classPrivateFieldGet(this, _portal).templateRef !== this.popover.templateRef) {
|
|
50
|
+
__classPrivateFieldSet(this, _portal, new TemplatePortal(this.popover.templateRef, this.viewContainerRef));
|
|
51
|
+
}
|
|
52
|
+
return __classPrivateFieldGet(this, _portal);
|
|
53
|
+
});
|
|
54
|
+
_createOverlay.set(this, () => {
|
|
55
|
+
if (!__classPrivateFieldGet(this, _overlayRef)) {
|
|
56
|
+
const config = __classPrivateFieldGet(this, _getOverlayConfig).call(this);
|
|
57
|
+
__classPrivateFieldGet(this, _subscribeToPositions).call(this, config.positionStrategy);
|
|
58
|
+
__classPrivateFieldSet(this, _overlayRef, this._overlay.create(config));
|
|
59
|
+
}
|
|
60
|
+
return __classPrivateFieldGet(this, _overlayRef);
|
|
61
|
+
});
|
|
62
|
+
_setPosition.set(this, (positionStrategy) => {
|
|
63
|
+
let originX = "center";
|
|
64
|
+
let originY = "top";
|
|
65
|
+
let overlayX = "center";
|
|
66
|
+
let overlayY = "bottom";
|
|
67
|
+
let offsetX = 0;
|
|
68
|
+
let offsetY = 16;
|
|
69
|
+
switch (this.popover.position) {
|
|
70
|
+
case "above":
|
|
71
|
+
originY = "top";
|
|
72
|
+
overlayY = "bottom";
|
|
73
|
+
break;
|
|
74
|
+
case "below":
|
|
75
|
+
originY = "bottom";
|
|
76
|
+
overlayY = "top";
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
positionStrategy.withPositions([
|
|
80
|
+
// theo input
|
|
81
|
+
{ originX, originY, overlayX, overlayY, offsetY: originY == "top" ? -offsetY : offsetY },
|
|
82
|
+
// giữa trên
|
|
83
|
+
{
|
|
84
|
+
originX: "center",
|
|
85
|
+
originY: "top",
|
|
86
|
+
overlayX: "center",
|
|
87
|
+
overlayY: "bottom",
|
|
88
|
+
offsetX,
|
|
89
|
+
offsetY: -offsetY,
|
|
90
|
+
},
|
|
91
|
+
// giữa dưới
|
|
92
|
+
{
|
|
93
|
+
originX: "center",
|
|
94
|
+
originY: "bottom",
|
|
95
|
+
overlayX: "center",
|
|
96
|
+
overlayY: "top",
|
|
97
|
+
offsetX,
|
|
98
|
+
offsetY,
|
|
99
|
+
},
|
|
100
|
+
]);
|
|
101
|
+
});
|
|
102
|
+
_getOverlayConfig.set(this, () => {
|
|
103
|
+
return new OverlayConfig({
|
|
104
|
+
positionStrategy: this._overlay
|
|
105
|
+
.position()
|
|
106
|
+
.flexibleConnectedTo(this._element)
|
|
107
|
+
.withLockedPosition()
|
|
108
|
+
.withGrowAfterOpen()
|
|
109
|
+
.withTransformOriginOn(".sd-popover-panel"),
|
|
110
|
+
backdropClass: "cdk-overlay-transparent-backdrop",
|
|
111
|
+
panelClass: this.popover.panelClass,
|
|
112
|
+
direction: this._dir,
|
|
113
|
+
width: this.popover.width,
|
|
114
|
+
height: this.popover.height,
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
_subscribeToPositions.set(this, (position) => {
|
|
118
|
+
if (this.popover.setPositionClasses) {
|
|
119
|
+
position.positionChanges.subscribe((change) => {
|
|
120
|
+
var _a;
|
|
121
|
+
const pos = change.connectionPair.overlayY === "top" ? "below" : "above";
|
|
122
|
+
if (this._ngZone) {
|
|
123
|
+
this._ngZone.run(() => this.popover.setPositionClasses(pos));
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
this.popover.setPositionClasses(pos);
|
|
127
|
+
}
|
|
128
|
+
const originElement = this.elementRef.nativeElement;
|
|
129
|
+
const overlayElement = (_a = this.viewContainerRef.get(0)) === null || _a === void 0 ? void 0 : _a.rootNodes[0];
|
|
130
|
+
if (originElement && overlayElement) {
|
|
131
|
+
const originRect = originElement.getBoundingClientRect();
|
|
132
|
+
const overlayRect = overlayElement.getBoundingClientRect();
|
|
133
|
+
const originLeft = originRect.left + originRect.width / 2;
|
|
134
|
+
const overlayLeft = overlayRect.left + overlayRect.width / 2;
|
|
135
|
+
const offset = originLeft - overlayLeft;
|
|
136
|
+
this.popover.addArrowTranslateX(offset);
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
_destroyPopover.set(this, () => {
|
|
142
|
+
if (!__classPrivateFieldGet(this, _overlayRef) || !this.popoverOpen) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
__classPrivateFieldGet(this, _overlayRef).detach();
|
|
146
|
+
__classPrivateFieldGet(this, _setIsPopoverOpen).call(this, false);
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
get popover() {
|
|
150
|
+
return __classPrivateFieldGet(this, _popover);
|
|
151
|
+
}
|
|
152
|
+
set popover(popover) {
|
|
153
|
+
if (popover === __classPrivateFieldGet(this, _popover)) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
__classPrivateFieldSet(this, _popover, popover);
|
|
157
|
+
__classPrivateFieldGet(this, _popoverClose$).unsubscribe();
|
|
158
|
+
if (popover) {
|
|
159
|
+
__classPrivateFieldSet(this, _popoverClose$, popover.closed.subscribe(() => {
|
|
160
|
+
__classPrivateFieldGet(this, _destroyPopover).call(this);
|
|
161
|
+
}));
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
ngAfterViewInit() {
|
|
165
|
+
if (this.popover) {
|
|
166
|
+
const nativeElement = this.elementRef.nativeElement;
|
|
167
|
+
const hostMouseState$ = merge(fromEvent(nativeElement, "mouseenter").pipe(mapTo(true)), fromEvent(nativeElement, "mouseleave").pipe(mapTo(false)));
|
|
168
|
+
const popoverMouseState$ = this.popover.mouseState$.pipe(
|
|
169
|
+
// chỉ lấy luồng emit open bởi chính trigger (tránh lỗi nhiều trigger cho một popover)
|
|
170
|
+
filter((v) => !this.popover.trigger || this.popover.trigger == this));
|
|
171
|
+
const mergedMouseState$ = merge(popoverMouseState$, hostMouseState$);
|
|
172
|
+
mergedMouseState$
|
|
173
|
+
.pipe(debounceTime(100), distinctUntilChanged(), filter(() => this.platform.isBrowser), takeUntil(__classPrivateFieldGet(this, _destroy$)))
|
|
174
|
+
.subscribe((visible) => {
|
|
175
|
+
if (visible) {
|
|
176
|
+
this.openPopover();
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
this.closePopover();
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
ngOnDestroy() {
|
|
185
|
+
__classPrivateFieldGet(this, _destroy$).next();
|
|
186
|
+
__classPrivateFieldGet(this, _destroy$).complete();
|
|
187
|
+
if (__classPrivateFieldGet(this, _overlayRef)) {
|
|
188
|
+
__classPrivateFieldGet(this, _overlayRef).dispose();
|
|
189
|
+
__classPrivateFieldSet(this, _overlayRef, null);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
_overlayRef = new WeakMap(), _popoverClose$ = new WeakMap(), _portal = new WeakMap(), _destroy$ = new WeakMap(), _popover = new WeakMap(), _setIsPopoverOpen = new WeakMap(), _getPortal = new WeakMap(), _createOverlay = new WeakMap(), _setPosition = new WeakMap(), _getOverlayConfig = new WeakMap(), _subscribeToPositions = new WeakMap(), _destroyPopover = new WeakMap();
|
|
194
|
+
PopoverTriggerDirective.decorators = [
|
|
195
|
+
{ type: Directive, args: [{
|
|
196
|
+
selector: "[sdPopoverTriggerFor]",
|
|
197
|
+
host: {
|
|
198
|
+
"aria-haspopup": "true",
|
|
199
|
+
class: "sd-popover-trigger",
|
|
200
|
+
},
|
|
201
|
+
exportAs: "sdPopoverTrigger",
|
|
202
|
+
},] }
|
|
203
|
+
];
|
|
204
|
+
PopoverTriggerDirective.ctorParameters = () => [
|
|
205
|
+
{ type: Overlay },
|
|
206
|
+
{ type: ElementRef },
|
|
207
|
+
{ type: NgZone },
|
|
208
|
+
{ type: ViewContainerRef },
|
|
209
|
+
{ type: ElementRef },
|
|
210
|
+
{ type: Platform },
|
|
211
|
+
{ type: Directionality, decorators: [{ type: Optional }] }
|
|
212
|
+
];
|
|
213
|
+
PopoverTriggerDirective.propDecorators = {
|
|
214
|
+
popover: [{ type: Input, args: ["sdPopoverTriggerFor",] }],
|
|
215
|
+
popoverOpened: [{ type: Output }],
|
|
216
|
+
popoverClosed: [{ type: Output }]
|
|
217
|
+
};
|
|
218
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci10cmlnZ2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy91c2VyL0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL3BvcG92ZXIvIiwic291cmNlcyI6WyJzcmMvbGliL2RpcmVjdGl2ZXMvcG9wb3Zlci10cmlnZ2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBRUwsT0FBTyxFQUNQLGFBQWEsR0FFZCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sUUFBUSxFQUNSLE1BQU0sRUFDTixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBRUwsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixNQUFNLEVBRU4sS0FBSyxFQUNMLFNBQVMsR0FFVixNQUFNLGdCQUFnQixDQUFDO0FBWXhCLE1BQU0sT0FBTyx1QkFBdUI7SUE2QmxDLFlBQ1UsUUFBaUIsRUFDakIsUUFBaUMsRUFDakMsT0FBZSxFQUNmLGdCQUFrQyxFQUNsQyxVQUFzQixFQUN0QixRQUFrQixFQUNOLElBQW9CO1FBTmhDLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBeUI7UUFDakMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsZUFBVSxH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RSxNQUFNO29CQUN2QixLQUFLLEVBQUUsb0JBQW9CO2lCQUM1QjtnQkFDRCxRQUFRLEVBQUUsa0JBQWtCO2FBQzdCOzs7WUF2Q0MsT0FBTztZQVNQLFVBQVU7WUFHVixNQUFNO1lBSU4sZ0JBQWdCO1lBUGhCLFVBQVU7WUFMSCxRQUFRO1lBUFIsY0FBYyx1QkErRWxCLFFBQVE7OztzQkE1QlYsS0FBSyxTQUFDLHFCQUFxQjs0QkFrQjNCLE1BQU07NEJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9iaWRpXCI7XHJcbmltcG9ydCB7XHJcbiAgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LFxyXG4gIE92ZXJsYXksXHJcbiAgT3ZlcmxheUNvbmZpZyxcclxuICBPdmVybGF5UmVmLFxyXG59IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xyXG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gXCJAYW5ndWxhci9jZGsvcGxhdGZvcm1cIjtcclxuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xyXG5pbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE5nWm9uZSxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3B0aW9uYWwsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgZnJvbUV2ZW50LCBtZXJnZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtcclxuICBhdWRpdFRpbWUsXHJcbiAgZGVib3VuY2VUaW1lLFxyXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxyXG4gIGZpbHRlcixcclxuICBtYXAsXHJcbiAgbWFwVG8sXHJcbiAgdGFrZVVudGlsLFxyXG4gIHRhcCxcclxufSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tIFwiLi4vcG9wb3Zlci5tb2RlbFwiO1xyXG5pbXBvcnQgeyBQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSBcIi4uL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnRcIjtcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiBcIltzZFBvcG92ZXJUcmlnZ2VyRm9yXVwiLFxyXG4gIGhvc3Q6IHtcclxuICAgIFwiYXJpYS1oYXNwb3B1cFwiOiBcInRydWVcIixcclxuICAgIGNsYXNzOiBcInNkLXBvcG92ZXItdHJpZ2dlclwiLFxyXG4gIH0sXHJcbiAgZXhwb3J0QXM6IFwic2RQb3BvdmVyVHJpZ2dlclwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUG9wb3ZlclRyaWdnZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gICNvdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgbnVsbCA9IG51bGw7XHJcbiAgI3BvcG92ZXJDbG9zZSQgPSBTdWJzY3JpcHRpb24uRU1QVFk7XHJcbiAgI3BvcnRhbDogVGVtcGxhdGVQb3J0YWw7XHJcbiAgI2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgcG9wb3Zlck9wZW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KFwic2RQb3BvdmVyVHJpZ2dlckZvclwiKVxyXG4gIGdldCBwb3BvdmVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuI3BvcG92ZXI7XHJcbiAgfVxyXG4gIHNldCBwb3BvdmVyKHBvcG92ZXI6IFBvcG92ZXJDb21wb25lbnQpIHtcclxuICAgIGlmIChwb3BvdmVyID09PSB0aGlzLiNwb3BvdmVyKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuI3BvcG92ZXIgPSBwb3BvdmVyO1xyXG4gICAgdGhpcy4jcG9wb3ZlckNsb3NlJC51bnN1YnNjcmliZSgpO1xyXG4gICAgaWYgKHBvcG92ZXIpIHtcclxuICAgICAgdGhpcy4jcG9wb3ZlckNsb3NlJCA9IHBvcG92ZXIuY2xvc2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy4jZGVzdHJveVBvcG92ZXIoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gICNwb3BvdmVyOiBQb3BvdmVyQ29tcG9uZW50O1xyXG5cclxuICBAT3V0cHV0KCkgcG9wb3Zlck9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgcG9wb3ZlckNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9vdmVybGF5OiBPdmVybGF5LFxyXG4gICAgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXHJcbiAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcclxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtLFxyXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZGlyOiBEaXJlY3Rpb25hbGl0eVxyXG4gICkge31cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucG9wb3Zlcikge1xyXG4gICAgICBjb25zdCBuYXRpdmVFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcblxyXG4gICAgICBjb25zdCBob3N0TW91c2VTdGF0ZSQgPSBtZXJnZShcclxuICAgICAgICBmcm9tRXZlbnQobmF0aXZlRWxlbWVudCwgXCJtb3VzZWVudGVyXCIpLnBpcGUobWFwVG8odHJ1ZSkpLFxyXG4gICAgICAgIGZyb21FdmVudChuYXRpdmVFbGVtZW50LCBcIm1vdXNlbGVhdmVcIikucGlwZShtYXBUbyhmYWxzZSkpXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBjb25zdCBwb3BvdmVyTW91c2VTdGF0ZSQgPSB0aGlzLnBvcG92ZXIubW91c2VTdGF0ZSQucGlwZShcclxuICAgICAgICAvLyBjaOG7iSBs4bqleSBsdeG7k25nIGVtaXQgb3BlbiBi4bufaSBjaMOtbmggdHJpZ2dlciAodHLDoW5oIGzhu5dpIG5oaeG7gXUgdHJpZ2dlciBjaG8gbeG7mXQgcG9wb3ZlcilcclxuICAgICAgICBmaWx0ZXIoKHYpID0+ICF0aGlzLnBvcG92ZXIudHJpZ2dlciB8fCB0aGlzLnBvcG92ZXIudHJpZ2dlciA9PSB0aGlzKVxyXG4gICAgICApO1xyXG5cclxuICAgICAgY29uc3QgbWVyZ2VkTW91c2VTdGF0ZSQgPSBtZXJnZShwb3BvdmVyTW91c2VTdGF0ZSQsIGhvc3RNb3VzZVN0YXRlJCk7XHJcblxyXG4gICAgICBtZXJnZWRNb3VzZVN0YXRlJFxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXHJcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMucGxhdGZvcm0uaXNCcm93c2VyKSxcclxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLiNkZXN0cm95JClcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgodmlzaWJsZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHZpc2libGUpIHtcclxuICAgICAgICAgICAgdGhpcy5vcGVuUG9wb3ZlcigpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZVBvcG92ZXIoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy4jZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy4jZGVzdHJveSQuY29tcGxldGUoKTtcclxuICAgIGlmICh0aGlzLiNvdmVybGF5UmVmKSB7XHJcbiAgICAgIHRoaXMuI292ZXJsYXlSZWYuZGlzcG9zZSgpO1xyXG4gICAgICB0aGlzLiNvdmVybGF5UmVmID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5Qb3BvdmVyID0gKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMucG9wb3Zlck9wZW4pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG92ZXJsYXlSZWYgPSB0aGlzLiNjcmVhdGVPdmVybGF5KCk7XHJcbiAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gb3ZlcmxheVJlZi5nZXRDb25maWcoKTtcclxuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPVxyXG4gICAgICBvdmVybGF5Q29uZmlnLnBvc2l0aW9uU3RyYXRlZ3kgYXMgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5O1xyXG4gICAgdGhpcy4jc2V0UG9zaXRpb24ocG9zaXRpb25TdHJhdGVneSk7XHJcbiAgICBvdmVybGF5Q29uZmlnLmhhc0JhY2tkcm9wID0gZmFsc2U7XHJcbiAgICBvdmVybGF5UmVmLmF0dGFjaCh0aGlzLiNnZXRQb3J0YWwoKSk7XHJcbiAgICB0aGlzLnBvcG92ZXIudHJpZ2dlciA9IHRoaXM7XHJcbiAgICB0aGlzLiNzZXRJc1BvcG92ZXJPcGVuKHRydWUpO1xyXG4gIH07XHJcblxyXG4gIGNsb3NlUG9wb3ZlciA9ICgpID0+IHtcclxuICAgIHRoaXMucG9wb3Zlci5jbG9zZWQuZW1pdCgpO1xyXG4gIH07XHJcblxyXG4gICNzZXRJc1BvcG92ZXJPcGVuID0gKGlzT3BlbjogYm9vbGVhbikgPT4ge1xyXG4gICAgdGhpcy5wb3BvdmVyT3BlbiA9IGlzT3BlbjtcclxuICAgIHRoaXMucG9wb3Zlck9wZW4gPyB0aGlzLnBvcG92ZXJPcGVuZWQuZW1pdCgpIDogdGhpcy5wb3BvdmVyQ2xvc2VkLmVtaXQoKTtcclxuICB9O1xyXG5cclxuICAjZ2V0UG9ydGFsID0gKCk6IFRlbXBsYXRlUG9ydGFsID0+IHtcclxuICAgIGlmIChcclxuICAgICAgIXRoaXMuI3BvcnRhbCB8fFxyXG4gICAgICB0aGlzLiNwb3J0YWwudGVtcGxhdGVSZWYgIT09IHRoaXMucG9wb3Zlci50ZW1wbGF0ZVJlZlxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuI3BvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbChcclxuICAgICAgICB0aGlzLnBvcG92ZXIudGVtcGxhdGVSZWYsXHJcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuI3BvcnRhbDtcclxuICB9O1xyXG5cclxuICAjY3JlYXRlT3ZlcmxheSA9ICgpID0+IHtcclxuICAgIGlmICghdGhpcy4jb3ZlcmxheVJlZikge1xyXG4gICAgICBjb25zdCBjb25maWcgPSB0aGlzLiNnZXRPdmVybGF5Q29uZmlnKCk7XHJcbiAgICAgIHRoaXMuI3N1YnNjcmliZVRvUG9zaXRpb25zKFxyXG4gICAgICAgIGNvbmZpZy5wb3NpdGlvblN0cmF0ZWd5IGFzIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLiNvdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUoY29uZmlnKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy4jb3ZlcmxheVJlZjtcclxuICB9O1xyXG5cclxuICAjc2V0UG9zaXRpb24gPSAocG9zaXRpb25TdHJhdGVneTogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5KSA9PiB7XHJcbiAgICBsZXQgb3JpZ2luWDogXCJzdGFydFwiIHwgXCJjZW50ZXJcIiB8IFwiZW5kXCIgPSBcImNlbnRlclwiO1xyXG4gICAgbGV0IG9yaWdpblk6IFwidG9wXCIgfCBcImNlbnRlclwiIHwgXCJib3R0b21cIiA9IFwidG9wXCI7XHJcbiAgICBsZXQgb3ZlcmxheVg6IFwic3RhcnRcIiB8IFwiY2VudGVyXCIgfCBcImVuZFwiID0gXCJjZW50ZXJcIjtcclxuICAgIGxldCBvdmVybGF5WTogXCJ0b3BcIiB8IFwiY2VudGVyXCIgfCBcImJvdHRvbVwiID0gXCJib3R0b21cIjtcclxuICAgIGxldCBvZmZzZXRYID0gMDtcclxuICAgIGxldCBvZmZzZXRZID0gMTY7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLnBvcG92ZXIucG9zaXRpb24pIHtcclxuICAgICAgY2FzZSBcImFib3ZlXCI6XHJcbiAgICAgICAgb3JpZ2luWSA9IFwidG9wXCI7XHJcbiAgICAgICAgb3ZlcmxheVkgPSBcImJvdHRvbVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiYmVsb3dcIjpcclxuICAgICAgICBvcmlnaW5ZID0gXCJib3R0b21cIjtcclxuICAgICAgICBvdmVybGF5WSA9IFwidG9wXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgcG9zaXRpb25TdHJhdGVneS53aXRoUG9zaXRpb25zKFtcclxuICAgICAgLy8gdGhlbyBpbnB1dFxyXG4gICAgICB7IG9yaWdpblgsIG9yaWdpblksIG92ZXJsYXlYLCBvdmVybGF5WSwgb2Zmc2V0WTogb3JpZ2luWSA9PSBcInRvcFwiID8gLW9mZnNldFkgOiBvZmZzZXRZIH0sXHJcbiAgICAgIC8vIGdp4buvYSB0csOqblxyXG4gICAgICB7XHJcbiAgICAgICAgb3JpZ2luWDogXCJjZW50ZXJcIixcclxuICAgICAgICBvcmlnaW5ZOiBcInRvcFwiLFxyXG4gICAgICAgIG92ZXJsYXlYOiBcImNlbnRlclwiLFxyXG4gICAgICAgIG92ZXJsYXlZOiBcImJvdHRvbVwiLFxyXG4gICAgICAgIG9mZnNldFgsXHJcbiAgICAgICAgb2Zmc2V0WTogLW9mZnNldFksXHJcbiAgICAgIH0sXHJcbiAgICAgIC8vIGdp4buvYSBkxrDhu5tpXHJcbiAgICAgIHtcclxuICAgICAgICBvcmlnaW5YOiBcImNlbnRlclwiLFxyXG4gICAgICAgIG9yaWdpblk6IFwiYm90dG9tXCIsXHJcbiAgICAgICAgb3ZlcmxheVg6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgb3ZlcmxheVk6IFwidG9wXCIsXHJcbiAgICAgICAgb2Zmc2V0WCxcclxuICAgICAgICBvZmZzZXRZLFxyXG4gICAgICB9LFxyXG4gICAgXSk7XHJcbiAgfTtcclxuXHJcbiAgI2dldE92ZXJsYXlDb25maWcgPSAoKSA9PiB7XHJcbiAgICByZXR1cm4gbmV3IE92ZXJsYXlDb25maWcoe1xyXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLl9vdmVybGF5XHJcbiAgICAgICAgLnBvc2l0aW9uKClcclxuICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLl9lbGVtZW50KVxyXG4gICAgICAgIC53aXRoTG9ja2VkUG9zaXRpb24oKVxyXG4gICAgICAgIC53aXRoR3Jvd0FmdGVyT3BlbigpXHJcbiAgICAgICAgLndpdGhUcmFuc2Zvcm1PcmlnaW5PbihcIi5zZC1wb3BvdmVyLXBhbmVsXCIpLFxyXG4gICAgICBiYWNrZHJvcENsYXNzOiBcImNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wXCIsXHJcbiAgICAgIHBhbmVsQ2xhc3M6IHRoaXMucG9wb3Zlci5wYW5lbENsYXNzLFxyXG4gICAgICBkaXJlY3Rpb246IHRoaXMuX2RpcixcclxuICAgICAgd2lkdGg6IHRoaXMucG9wb3Zlci53aWR0aCxcclxuICAgICAgaGVpZ2h0OiB0aGlzLnBvcG92ZXIuaGVpZ2h0LFxyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgI3N1YnNjcmliZVRvUG9zaXRpb25zID0gKHBvc2l0aW9uOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kpID0+IHtcclxuICAgIGlmICh0aGlzLnBvcG92ZXIuc2V0UG9zaXRpb25DbGFzc2VzKSB7XHJcbiAgICAgIHBvc2l0aW9uLnBvc2l0aW9uQ2hhbmdlcy5zdWJzY3JpYmUoKGNoYW5nZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHBvczogUG9zaXRpb24gPVxyXG4gICAgICAgICAgY2hhbmdlLmNvbm5lY3Rpb25QYWlyLm92ZXJsYXlZID09PSBcInRvcFwiID8gXCJiZWxvd1wiIDogXCJhYm92ZVwiO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fbmdab25lKSB7XHJcbiAgICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHRoaXMucG9wb3Zlci5zZXRQb3NpdGlvbkNsYXNzZXMocG9zKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucG9wb3Zlci5zZXRQb3NpdGlvbkNsYXNzZXMocG9zKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IG9yaWdpbkVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3Qgb3ZlcmxheUVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gKFxyXG4gICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmdldCgwKSBhcyBhbnlcclxuICAgICAgICApPy5yb290Tm9kZXNbMF07XHJcbiAgICAgICAgaWYgKG9yaWdpbkVsZW1lbnQgJiYgb3ZlcmxheUVsZW1lbnQpIHtcclxuICAgICAgICAgIGNvbnN0IG9yaWdpblJlY3QgPSBvcmlnaW5FbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgICAgY29uc3Qgb3ZlcmxheVJlY3QgPSBvdmVybGF5RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICAgIGNvbnN0IG9yaWdpbkxlZnQgPSBvcmlnaW5SZWN0LmxlZnQgKyBvcmlnaW5SZWN0LndpZHRoIC8gMjtcclxuICAgICAgICAgIGNvbnN0IG92ZXJsYXlMZWZ0ID0gb3ZlcmxheVJlY3QubGVmdCArIG92ZXJsYXlSZWN0LndpZHRoIC8gMjtcclxuXHJcbiAgICAgICAgICBjb25zdCBvZmZzZXQgPSBvcmlnaW5MZWZ0IC0gb3ZlcmxheUxlZnQ7XHJcblxyXG4gICAgICAgICAgdGhpcy5wb3BvdmVyLmFkZEFycm93VHJhbnNsYXRlWChvZmZzZXQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgI2Rlc3Ryb3lQb3BvdmVyID0gKCkgPT4ge1xyXG4gICAgaWYgKCF0aGlzLiNvdmVybGF5UmVmIHx8ICF0aGlzLnBvcG92ZXJPcGVuKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuI292ZXJsYXlSZWYuZGV0YWNoKCk7XHJcbiAgICB0aGlzLiNzZXRJc1BvcG92ZXJPcGVuKGZhbHNlKTtcclxuICB9O1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
var _xPosition;
|
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostListener, Input, Output, TemplateRef, ViewChild, ViewEncapsulation, } from "@angular/core";
|
|
4
|
+
import * as uuid from "uuid";
|
|
5
|
+
import { DeviceDetectorService } from "ngx-device-detector";
|
|
6
|
+
import { BehaviorSubject } from "rxjs";
|
|
7
|
+
export class PopoverComponent {
|
|
8
|
+
constructor(cdRef, deviceService) {
|
|
9
|
+
this.cdRef = cdRef;
|
|
10
|
+
this.deviceService = deviceService;
|
|
11
|
+
this.classList = {};
|
|
12
|
+
this.panelId = `sd-popover-panel-${uuid.v4()}`;
|
|
13
|
+
this.isMobileOrTablet = false;
|
|
14
|
+
this.mouseState$ = new BehaviorSubject(false);
|
|
15
|
+
this.trigger = null;
|
|
16
|
+
this.panelClass = "";
|
|
17
|
+
this.width = "sm";
|
|
18
|
+
this.height = "auto";
|
|
19
|
+
_xPosition.set(this, void 0);
|
|
20
|
+
this.closed = new EventEmitter();
|
|
21
|
+
this.close = () => {
|
|
22
|
+
this.mouseState$.next(false);
|
|
23
|
+
this.closed.emit();
|
|
24
|
+
};
|
|
25
|
+
this.setPositionClasses = (pos = this.position) => {
|
|
26
|
+
var _a;
|
|
27
|
+
const classes = this.classList;
|
|
28
|
+
classes["sd-popover-above"] = pos === "above";
|
|
29
|
+
classes["sd-popover-below"] = pos === "below";
|
|
30
|
+
(_a = this.cdRef) === null || _a === void 0 ? void 0 : _a.markForCheck();
|
|
31
|
+
};
|
|
32
|
+
this.addArrowTranslateX = (offset) => {
|
|
33
|
+
const arrowElement = document.querySelector(`#${this.panelId} .sd-popover-arrow`);
|
|
34
|
+
if (arrowElement && offset) {
|
|
35
|
+
try {
|
|
36
|
+
const style = window.getComputedStyle(arrowElement);
|
|
37
|
+
const matrix = new WebKitCSSMatrix(style.transform);
|
|
38
|
+
const translateX = matrix.m41 + offset;
|
|
39
|
+
const translateY = matrix.m42;
|
|
40
|
+
arrowElement.style.transform = `translateX(${translateX}px) translateY(${translateY}px)`;
|
|
41
|
+
}
|
|
42
|
+
catch (error) { }
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
this.setMouseState = (visible) => {
|
|
46
|
+
if (!visible) {
|
|
47
|
+
// chỉ được tắt khi đang không focus element nào bên trong panel
|
|
48
|
+
// tránh lỗi có control mở overlay khiến cho mất mouseenter ở panel
|
|
49
|
+
const activeElement = document.activeElement;
|
|
50
|
+
const panelElement = this.panel.nativeElement;
|
|
51
|
+
if (panelElement === null || panelElement === void 0 ? void 0 : panelElement.contains(activeElement)) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
this.mouseState$.next(visible);
|
|
56
|
+
};
|
|
57
|
+
this.isMobileOrTablet = !deviceService.isDesktop();
|
|
58
|
+
}
|
|
59
|
+
get position() {
|
|
60
|
+
return __classPrivateFieldGet(this, _xPosition);
|
|
61
|
+
}
|
|
62
|
+
set position(value) {
|
|
63
|
+
__classPrivateFieldSet(this, _xPosition, value);
|
|
64
|
+
this.setPositionClasses();
|
|
65
|
+
}
|
|
66
|
+
_hostClick(targetElement) {
|
|
67
|
+
var _a;
|
|
68
|
+
if ((_a = this.panel) === null || _a === void 0 ? void 0 : _a.nativeElement) {
|
|
69
|
+
const isInside = this.panel.nativeElement.contains(targetElement);
|
|
70
|
+
if (!isInside) {
|
|
71
|
+
this.setMouseState(false);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
ngOnInit() {
|
|
76
|
+
this.setPositionClasses();
|
|
77
|
+
this.width = this.width || "80vw";
|
|
78
|
+
if (!this.isMobileOrTablet) {
|
|
79
|
+
switch (this.width) {
|
|
80
|
+
case "lg":
|
|
81
|
+
this.width = "80vw";
|
|
82
|
+
break;
|
|
83
|
+
case "md":
|
|
84
|
+
this.width = "60vw";
|
|
85
|
+
break;
|
|
86
|
+
case "sm":
|
|
87
|
+
this.width = "40vw";
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
ngOnDestroy() {
|
|
93
|
+
this.closed.complete();
|
|
94
|
+
this.mouseState$.complete();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
_xPosition = new WeakMap();
|
|
98
|
+
PopoverComponent.decorators = [
|
|
99
|
+
{ type: Component, args: [{
|
|
100
|
+
selector: "sd-popover",
|
|
101
|
+
template: "<ng-template>\r\n <div\r\n class=\"sd-popover-panel mat-elevation-z6\"\r\n [id]=\"panelId\"\r\n [ngClass]=\"classList\"\r\n tabindex=\"-1\"\r\n role=\"menu\"\r\n (mouseenter)=\"setMouseState(true)\"\r\n (mouseleave)=\"setMouseState(false)\"\r\n cdkTrapFocus\r\n #panel\r\n >\r\n <div class=\"sd-popover-content p-16\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"sd-popover-arrow\"></div>\r\n </div>\r\n</ng-template>",
|
|
102
|
+
encapsulation: ViewEncapsulation.None,
|
|
103
|
+
exportAs: "sdPopover",
|
|
104
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
105
|
+
styles: [".sd-popover-panel{background-color:#fff;position:relative}.sd-popover-panel .sd-popover-arrow{clear:both;height:0;left:50%;position:absolute;width:0}.sd-popover-panel.sd-popover-above .sd-popover-arrow{border-left:12px solid transparent;border-right:12px solid transparent;border-top:12px solid #fff;top:100%;transform:translateX(-6px) translateY(-1px)}.sd-popover-panel.sd-popover-above:after{content:\" \";display:block;height:16px;position:absolute;width:100%}.sd-popover-panel.sd-popover-below .sd-popover-arrow{border-bottom:12px solid #fff;border-left:12px solid transparent;border-right:12px solid transparent;bottom:100%;transform:translateX(-6px) translateY(1px)}.sd-popover-panel.sd-popover-below:before{content:\" \";display:block;height:16px;position:absolute;width:100%}.sd-popover-content{padding:16px}"]
|
|
106
|
+
},] }
|
|
107
|
+
];
|
|
108
|
+
PopoverComponent.ctorParameters = () => [
|
|
109
|
+
{ type: ChangeDetectorRef },
|
|
110
|
+
{ type: DeviceDetectorService }
|
|
111
|
+
];
|
|
112
|
+
PopoverComponent.propDecorators = {
|
|
113
|
+
templateRef: [{ type: ViewChild, args: [TemplateRef,] }],
|
|
114
|
+
panel: [{ type: ViewChild, args: ["panel",] }],
|
|
115
|
+
panelClass: [{ type: Input }],
|
|
116
|
+
width: [{ type: Input }],
|
|
117
|
+
height: [{ type: Input }],
|
|
118
|
+
position: [{ type: Input }],
|
|
119
|
+
closed: [{ type: Output }],
|
|
120
|
+
_hostClick: [{ type: HostListener, args: ['document:click', ['$event.target'],] }]
|
|
121
|
+
};
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvdXNlci9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9wb3BvdmVyLyIsInNvdXJjZXMiOlsic3JjL2xpYi9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBZXZDLE1BQU0sT0FBTyxnQkFBZ0I7SUFtQzNCLFlBQ1UsS0FBd0IsRUFDeEIsYUFBb0M7UUFEcEMsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsa0JBQWEsR0FBYixhQUFhLENBQXVCO1FBcEM5QyxjQUFTLEdBQTRCLEVBQUUsQ0FBQztRQUN4QyxZQUFPLEdBQUcsb0JBQW9CLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQzFDLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2xELFlBQU8sR0FBNEIsSUFBSSxDQUFDO1FBSy9CLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsVUFBSyxHQUFnQyxJQUFJLENBQUM7UUFDMUMsV0FBTSxHQUFXLE1BQU0sQ0FBQztRQVNqQyw2QkFBcUI7UUFFRixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQTBDckQsVUFBSyxHQUFHLEdBQUcsRUFB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QUU7Z0JBQ2xCLEtBQUssSUFBSTtvQkFDUCxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztvQkFDcEIsTUFBTTtnQkFDUixLQUFLLElBQUk7b0JBQ1AsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7b0JBQ3BCLE1BQU07Z0JBQ1IsS0FBSyxJQUFJO29CQUNQLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO29CQUNwQixNQUFNO2FBQ1Q7U0FDRjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLENBQUM7Ozs7WUF2RUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxZQUFZO2dCQUN0Qix1ZUFBdUM7Z0JBRXZDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNyQyxRQUFRLEVBQUUsV0FBVztnQkFDckIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUE5QkMsaUJBQWlCO1lBZVYscUJBQXFCOzs7MEJBdUIzQixTQUFTLFNBQUMsV0FBVztvQkFDckIsU0FBUyxTQUFDLE9BQU87eUJBRWpCLEtBQUs7b0JBQ0wsS0FBSztxQkFDTCxLQUFLO3VCQUNMLEtBQUs7cUJBVUwsTUFBTTt5QkFFTixZQUFZLFNBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSBcIi4uL3BvcG92ZXIubW9kZWxcIjtcclxuaW1wb3J0ICogYXMgdXVpZCBmcm9tIFwidXVpZFwiO1xyXG5pbXBvcnQgeyBEZXZpY2VEZXRlY3RvclNlcnZpY2UgfSBmcm9tIFwibmd4LWRldmljZS1kZXRlY3RvclwiO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBQb3BvdmVyVHJpZ2dlckRpcmVjdGl2ZSB9IGZyb20gXCIuLi9kaXJlY3RpdmVzL3BvcG92ZXItdHJpZ2dlci5kaXJlY3RpdmVcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2RQb3BvdmVyIHtcclxuICBjbG9zZTogKCkgPT4gdm9pZDtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwic2QtcG9wb3ZlclwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vcG9wb3Zlci5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9wb3BvdmVyLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgZXhwb3J0QXM6IFwic2RQb3BvdmVyXCIsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQb3BvdmVyQ29tcG9uZW50IGltcGxlbWVudHMgU2RQb3BvdmVyLCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgY2xhc3NMaXN0OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xyXG4gIHBhbmVsSWQgPSBgc2QtcG9wb3Zlci1wYW5lbC0ke3V1aWQudjQoKX1gO1xyXG4gIGlzTW9iaWxlT3JUYWJsZXQgPSBmYWxzZTtcclxuICBtb3VzZVN0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHRyaWdnZXI6IFBvcG92ZXJUcmlnZ2VyRGlyZWN0aXZlID0gbnVsbDtcclxuXHJcbiAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZikgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcInBhbmVsXCIpIHBhbmVsOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgQElucHV0KCkgcGFuZWxDbGFzczogc3RyaW5nID0gXCJcIjtcclxuICBASW5wdXQoKSB3aWR0aDogXCJsZ1wiIHwgXCJtZFwiIHwgXCJzbVwiIHwgc3RyaW5nID0gXCJzbVwiO1xyXG4gIEBJbnB1dCgpIGhlaWdodDogc3RyaW5nID0gXCJhdXRvXCI7XHJcbiAgQElucHV0KClcclxuICBnZXQgcG9zaXRpb24oKTogUG9zaXRpb24ge1xyXG4gICAgcmV0dXJuIHRoaXMuI3hQb3NpdGlvbjtcclxuICB9XHJcbiAgc2V0IHBvc2l0aW9uKHZhbHVlOiBQb3NpdGlvbikge1xyXG4gICAgdGhpcy4jeFBvc2l0aW9uID0gdmFsdWU7XHJcbiAgICB0aGlzLnNldFBvc2l0aW9uQ2xhc3NlcygpO1xyXG4gIH1cclxuICAjeFBvc2l0aW9uOiBQb3NpdGlvbjtcclxuXHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudC50YXJnZXQnXSlcclxuICBfaG9zdENsaWNrKHRhcmdldEVsZW1lbnQpIHtcclxuICAgIGlmICh0aGlzLnBhbmVsPy5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIGNvbnN0IGlzSW5zaWRlID0gdGhpcy5wYW5lbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldEVsZW1lbnQpO1xyXG4gICAgICBpZiAoIWlzSW5zaWRlKSB7XHJcbiAgICAgICAgdGhpcy5zZXRNb3VzZVN0YXRlKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgZGV2aWNlU2VydmljZTogRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmlzTW9iaWxlT3JUYWJsZXQgPSAhZGV2aWNlU2VydmljZS5pc0Rlc2t0b3AoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRQb3NpdGlvbkNsYXNzZXMoKTtcclxuICAgIHRoaXMud2lkdGggPSB0aGlzLndpZHRoIHx8IFwiODB2d1wiO1xyXG4gICAgaWYgKCF0aGlzLmlzTW9iaWxlT3JUYWJsZXQpIHtcclxuICAgICAgc3dpdGNoICh0aGlzLndpZHRoKSB7XHJcbiAgICAgICAgY2FzZSBcImxnXCI6XHJcbiAgICAgICAgICB0aGlzLndpZHRoID0gXCI4MHZ3XCI7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFwibWRcIjpcclxuICAgICAgICAgIHRoaXMud2lkdGggPSBcIjYwdndcIjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgXCJzbVwiOlxyXG4gICAgICAgICAgdGhpcy53aWR0aCA9IFwiNDB2d1wiO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbG9zZWQuY29tcGxldGUoKTtcclxuICAgIHRoaXMubW91c2VTdGF0ZSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIGNsb3NlID0gKCkgPT4ge1xyXG4gICAgdGhpcy5tb3VzZVN0YXRlJC5uZXh0KGZhbHNlKTtcclxuICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcclxuICB9O1xyXG5cclxuICBzZXRQb3NpdGlvbkNsYXNzZXMgPSAocG9zOiBQb3NpdGlvbiA9IHRoaXMucG9zaXRpb24pID0+IHtcclxuICAgIGNvbnN0IGNsYXNzZXMgPSB0aGlzLmNsYXNzTGlzdDtcclxuICAgIGNsYXNzZXNbXCJzZC1wb3BvdmVyLWFib3ZlXCJdID0gcG9zID09PSBcImFib3ZlXCI7XHJcbiAgICBjbGFzc2VzW1wic2QtcG9wb3Zlci1iZWxvd1wiXSA9IHBvcyA9PT0gXCJiZWxvd1wiO1xyXG5cclxuICAgIHRoaXMuY2RSZWY/Lm1hcmtGb3JDaGVjaygpO1xyXG4gIH07XHJcblxyXG4gIGFkZEFycm93VHJhbnNsYXRlWCA9IChvZmZzZXQ6IG51bWJlcikgPT4ge1xyXG4gICAgY29uc3QgYXJyb3dFbGVtZW50OiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke3RoaXMucGFuZWxJZH0gLnNkLXBvcG92ZXItYXJyb3dgKTtcclxuICAgIGlmIChhcnJvd0VsZW1lbnQgJiYgb2Zmc2V0KSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShhcnJvd0VsZW1lbnQpO1xyXG4gICAgICAgIGNvbnN0IG1hdHJpeCA9IG5ldyBXZWJLaXRDU1NNYXRyaXgoc3R5bGUudHJhbnNmb3JtKTtcclxuICAgICAgICBjb25zdCB0cmFuc2xhdGVYID0gbWF0cml4Lm00MSArIG9mZnNldDtcclxuICAgICAgICBjb25zdCB0cmFuc2xhdGVZID0gbWF0cml4Lm00MjtcclxuICAgICAgICBhcnJvd0VsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVgoJHt0cmFuc2xhdGVYfXB4KSB0cmFuc2xhdGVZKCR7dHJhbnNsYXRlWX1weClgO1xyXG4gICAgICB9IGNhdGNoIChlcnJvcikge31cclxuICAgIH1cclxuICB9O1xyXG5cclxuICBzZXRNb3VzZVN0YXRlID0gKHZpc2libGU6IGJvb2xlYW4pID0+IHtcclxuICAgIGlmICghdmlzaWJsZSkge1xyXG4gICAgICAvLyBjaOG7iSDEkcaw4bujYyB04bqvdCBraGkgxJFhbmcga2jDtG5nIGZvY3VzIGVsZW1lbnQgbsOgbyBiw6puIHRyb25nIHBhbmVsXHJcbiAgICAgIC8vIHRyw6FuaCBs4buXaSBjw7MgY29udHJvbCBt4bufIG92ZXJsYXkga2hp4bq/biBjaG8gbeG6pXQgbW91c2VlbnRlciDhu58gcGFuZWxcclxuICAgICAgY29uc3QgYWN0aXZlRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XHJcbiAgICAgIGNvbnN0IHBhbmVsRWxlbWVudCA9IHRoaXMucGFuZWwubmF0aXZlRWxlbWVudDtcclxuICAgICAgaWYgKHBhbmVsRWxlbWVudD8uY29udGFpbnMoYWN0aXZlRWxlbWVudCkpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMubW91c2VTdGF0ZSQubmV4dCh2aXNpYmxlKTtcclxuICB9O1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy91c2VyL0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL3BvcG92ZXIvIiwic291cmNlcyI6WyJzcmMvbGliL3BvcG92ZXIubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFBvc2l0aW9uID0gJ2Fib3ZlJyB8ICdiZWxvdyc7Il19
|