@stemy/ngx-utils 10.2.44 → 10.3.3
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/README.md +27 -27
- package/bundles/stemy-ngx-utils.umd.js +5654 -5640
- package/bundles/stemy-ngx-utils.umd.js.map +1 -1
- package/bundles/stemy-ngx-utils.umd.min.js +1 -1
- package/bundles/stemy-ngx-utils.umd.min.js.map +1 -1
- package/esm2015/ngx-utils/common-types.js +111 -111
- package/esm2015/ngx-utils/components/dynamic-table/dynamic-table.component.js +139 -139
- package/esm2015/ngx-utils/components/pagination-menu/pagination-menu.component.js +96 -96
- package/esm2015/ngx-utils/components/unordered-list/unordered-list.component.js +51 -51
- package/esm2015/ngx-utils/directives/async-method.directive.js +58 -58
- package/esm2015/ngx-utils/directives/background.directive.js +51 -51
- package/esm2015/ngx-utils/directives/dynamic-table-template.directive.js +19 -19
- package/esm2015/ngx-utils/directives/global-template.directive.js +27 -27
- package/esm2015/ngx-utils/directives/icon.directive.js +59 -59
- package/esm2015/ngx-utils/directives/ngx-template-outlet.directive.js +88 -88
- package/esm2015/ngx-utils/directives/pagination-item.directive.js +33 -33
- package/esm2015/ngx-utils/directives/pagination.directive.js +76 -71
- package/esm2015/ngx-utils/directives/resource-if.directive.js +51 -51
- package/esm2015/ngx-utils/directives/sticky-class.directive.js +35 -35
- package/esm2015/ngx-utils/directives/sticky.directive.js +48 -48
- package/esm2015/ngx-utils/directives/unordered-list-item.directive.js +70 -70
- package/esm2015/ngx-utils/directives/unordered-list-template.directive.js +26 -26
- package/esm2015/ngx-utils/ngx-utils.module.js +232 -232
- package/esm2015/ngx-utils/pipes/chunk.pipe.js +21 -21
- package/esm2015/ngx-utils/pipes/entries.pipe.js +24 -24
- package/esm2015/ngx-utils/pipes/extra-item-properties.pipe.js +27 -27
- package/esm2015/ngx-utils/pipes/filter.pipe.js +38 -38
- package/esm2015/ngx-utils/pipes/find.pipe.js +25 -25
- package/esm2015/ngx-utils/pipes/format-number.pipe.js +19 -19
- package/esm2015/ngx-utils/pipes/get-offset.pipe.js +13 -13
- package/esm2015/ngx-utils/pipes/get-type.pipe.js +12 -12
- package/esm2015/ngx-utils/pipes/global-template.pipe.js +35 -35
- package/esm2015/ngx-utils/pipes/group-by.pipe.js +23 -23
- package/esm2015/ngx-utils/pipes/is-type.pipe.js +12 -12
- package/esm2015/ngx-utils/pipes/join.pipe.js +15 -15
- package/esm2015/ngx-utils/pipes/keys.pipe.js +18 -18
- package/esm2015/ngx-utils/pipes/map.pipe.js +25 -25
- package/esm2015/ngx-utils/pipes/max.pipe.js +22 -22
- package/esm2015/ngx-utils/pipes/min.pipe.js +22 -22
- package/esm2015/ngx-utils/pipes/reduce.pipe.js +26 -26
- package/esm2015/ngx-utils/pipes/remap.pipe.js +28 -28
- package/esm2015/ngx-utils/pipes/replace.pipe.js +12 -12
- package/esm2015/ngx-utils/pipes/reverse.pipe.js +20 -20
- package/esm2015/ngx-utils/pipes/round.pipe.js +19 -19
- package/esm2015/ngx-utils/pipes/safe-html.pipe.js +32 -32
- package/esm2015/ngx-utils/pipes/translate.pipe.js +81 -81
- package/esm2015/ngx-utils/pipes/values.pipe.js +18 -18
- package/esm2015/ngx-utils/plugins/resize-event.plugin.js +59 -59
- package/esm2015/ngx-utils/plugins/scroll-event.plugin.js +52 -52
- package/esm2015/ngx-utils/services/acl.service.js +78 -78
- package/esm2015/ngx-utils/services/api.service.js +35 -35
- package/esm2015/ngx-utils/services/auth.service.js +14 -14
- package/esm2015/ngx-utils/services/base-http.client.js +46 -46
- package/esm2015/ngx-utils/services/base-http.service.js +274 -274
- package/esm2015/ngx-utils/services/config.service.js +95 -95
- package/esm2015/ngx-utils/services/error-handler.service.js +49 -49
- package/esm2015/ngx-utils/services/events.service.js +24 -24
- package/esm2015/ngx-utils/services/formatter.service.js +44 -44
- package/esm2015/ngx-utils/services/global-template.service.js +35 -35
- package/esm2015/ngx-utils/services/icon.service.js +24 -24
- package/esm2015/ngx-utils/services/language.service.js +117 -117
- package/esm2015/ngx-utils/services/open-api.service.js +41 -41
- package/esm2015/ngx-utils/services/promise.service.js +49 -49
- package/esm2015/ngx-utils/services/state.service.js +143 -143
- package/esm2015/ngx-utils/services/static-language.service.js +144 -144
- package/esm2015/ngx-utils/services/storage.service.js +48 -48
- package/esm2015/ngx-utils/services/toaster.service.js +29 -29
- package/esm2015/ngx-utils/services/translated-url.serializer.js +70 -70
- package/esm2015/ngx-utils/services/universal.service.js +73 -73
- package/esm2015/ngx-utils/utils/ajax-request-handler.js +40 -40
- package/esm2015/ngx-utils/utils/array.utils.js +100 -90
- package/esm2015/ngx-utils/utils/auth.guard.js +153 -153
- package/esm2015/ngx-utils/utils/canvas.utils.js +388 -388
- package/esm2015/ngx-utils/utils/date.utils.js +28 -28
- package/esm2015/ngx-utils/utils/file.utils.js +90 -90
- package/esm2015/ngx-utils/utils/generic-value.js +20 -20
- package/esm2015/ngx-utils/utils/geometry.js +132 -132
- package/esm2015/ngx-utils/utils/initializer.js +17 -17
- package/esm2015/ngx-utils/utils/loader.utils.js +55 -55
- package/esm2015/ngx-utils/utils/math.utils.js +15 -15
- package/esm2015/ngx-utils/utils/object.utils.js +248 -248
- package/esm2015/ngx-utils/utils/observable.utils.js +63 -63
- package/esm2015/ngx-utils/utils/reflect.utils.js +33 -33
- package/esm2015/ngx-utils/utils/set.utils.js +20 -20
- package/esm2015/ngx-utils/utils/string.utils.js +28 -28
- package/esm2015/ngx-utils/utils/timer.utils.js +52 -52
- package/esm2015/ngx-utils/utils/unique.utils.js +24 -24
- package/esm2015/ngx-utils/utils/vector.js +77 -77
- package/esm2015/public_api.js +83 -83
- package/esm2015/stemy-ngx-utils.js +7 -7
- package/fesm2015/stemy-ngx-utils.js +4552 -4537
- package/fesm2015/stemy-ngx-utils.js.map +1 -1
- package/ngx-utils/common-types.d.ts +284 -284
- package/ngx-utils/components/dynamic-table/dynamic-table.component.d.ts +43 -43
- package/ngx-utils/components/pagination-menu/pagination-menu.component.d.ts +28 -28
- package/ngx-utils/components/unordered-list/unordered-list.component.d.ts +22 -22
- package/ngx-utils/directives/async-method.directive.d.ts +16 -16
- package/ngx-utils/directives/background.directive.d.ts +14 -14
- package/ngx-utils/directives/dynamic-table-template.directive.d.ts +8 -8
- package/ngx-utils/directives/global-template.directive.d.ts +10 -10
- package/ngx-utils/directives/icon.directive.d.ts +20 -20
- package/ngx-utils/directives/ngx-template-outlet.directive.d.ts +14 -14
- package/ngx-utils/directives/pagination-item.directive.d.ts +12 -12
- package/ngx-utils/directives/pagination.directive.d.ts +22 -21
- package/ngx-utils/directives/resource-if.directive.d.ts +16 -16
- package/ngx-utils/directives/sticky-class.directive.d.ts +12 -12
- package/ngx-utils/directives/sticky.directive.d.ts +16 -16
- package/ngx-utils/directives/unordered-list-item.directive.d.ts +25 -25
- package/ngx-utils/directives/unordered-list-template.directive.d.ts +10 -10
- package/ngx-utils/ngx-utils.module.d.ts +76 -76
- package/ngx-utils/pipes/chunk.pipe.d.ts +4 -4
- package/ngx-utils/pipes/entries.pipe.d.ts +9 -9
- package/ngx-utils/pipes/extra-item-properties.pipe.d.ts +5 -5
- package/ngx-utils/pipes/filter.pipe.d.ts +5 -5
- package/ngx-utils/pipes/find.pipe.d.ts +5 -5
- package/ngx-utils/pipes/format-number.pipe.d.ts +7 -7
- package/ngx-utils/pipes/get-offset.pipe.d.ts +4 -4
- package/ngx-utils/pipes/get-type.pipe.d.ts +4 -4
- package/ngx-utils/pipes/global-template.pipe.d.ts +13 -13
- package/ngx-utils/pipes/group-by.pipe.d.ts +5 -5
- package/ngx-utils/pipes/is-type.pipe.d.ts +4 -4
- package/ngx-utils/pipes/join.pipe.d.ts +4 -4
- package/ngx-utils/pipes/keys.pipe.d.ts +4 -4
- package/ngx-utils/pipes/map.pipe.d.ts +5 -5
- package/ngx-utils/pipes/max.pipe.d.ts +4 -4
- package/ngx-utils/pipes/min.pipe.d.ts +4 -4
- package/ngx-utils/pipes/reduce.pipe.d.ts +5 -5
- package/ngx-utils/pipes/remap.pipe.d.ts +4 -4
- package/ngx-utils/pipes/replace.pipe.d.ts +4 -4
- package/ngx-utils/pipes/reverse.pipe.d.ts +4 -4
- package/ngx-utils/pipes/round.pipe.d.ts +7 -7
- package/ngx-utils/pipes/safe-html.pipe.d.ts +7 -7
- package/ngx-utils/pipes/translate.pipe.d.ts +15 -15
- package/ngx-utils/pipes/values.pipe.d.ts +4 -4
- package/ngx-utils/plugins/resize-event.plugin.d.ts +10 -10
- package/ngx-utils/plugins/scroll-event.plugin.d.ts +11 -11
- package/ngx-utils/services/acl.service.d.ts +12 -12
- package/ngx-utils/services/api.service.d.ts +14 -14
- package/ngx-utils/services/auth.service.d.ts +8 -8
- package/ngx-utils/services/base-http.client.d.ts +12 -12
- package/ngx-utils/services/base-http.service.d.ts +42 -42
- package/ngx-utils/services/config.service.d.ts +21 -21
- package/ngx-utils/services/error-handler.service.d.ts +10 -10
- package/ngx-utils/services/events.service.d.ts +11 -11
- package/ngx-utils/services/formatter.service.d.ts +12 -12
- package/ngx-utils/services/global-template.service.d.ts +16 -16
- package/ngx-utils/services/icon.service.d.ts +10 -10
- package/ngx-utils/services/language.service.d.ts +18 -18
- package/ngx-utils/services/open-api.service.d.ts +8 -8
- package/ngx-utils/services/promise.service.d.ts +15 -15
- package/ngx-utils/services/state.service.d.ts +41 -41
- package/ngx-utils/services/static-language.service.d.ts +41 -41
- package/ngx-utils/services/storage.service.d.ts +12 -12
- package/ngx-utils/services/toaster.service.d.ts +10 -10
- package/ngx-utils/services/translated-url.serializer.d.ts +16 -16
- package/ngx-utils/services/universal.service.d.ts +24 -24
- package/ngx-utils/utils/ajax-request-handler.d.ts +11 -11
- package/ngx-utils/utils/array.utils.d.ts +10 -9
- package/ngx-utils/utils/auth.guard.d.ts +26 -26
- package/ngx-utils/utils/canvas.utils.d.ts +13 -13
- package/ngx-utils/utils/date.utils.d.ts +8 -8
- package/ngx-utils/utils/file.utils.d.ts +14 -14
- package/ngx-utils/utils/generic-value.d.ts +8 -8
- package/ngx-utils/utils/geometry.d.ts +50 -50
- package/ngx-utils/utils/initializer.d.ts +11 -11
- package/ngx-utils/utils/loader.utils.d.ts +7 -7
- package/ngx-utils/utils/math.utils.d.ts +5 -5
- package/ngx-utils/utils/object.utils.d.ts +31 -31
- package/ngx-utils/utils/observable.utils.d.ts +12 -12
- package/ngx-utils/utils/reflect.utils.d.ts +9 -9
- package/ngx-utils/utils/set.utils.d.ts +4 -4
- package/ngx-utils/utils/string.utils.d.ts +7 -7
- package/ngx-utils/utils/timer.utils.d.ts +6 -6
- package/ngx-utils/utils/unique.utils.d.ts +5 -5
- package/ngx-utils/utils/vector.d.ts +23 -23
- package/package.json +1 -1
- package/public_api.d.ts +82 -82
- package/stemy-ngx-utils.d.ts +6 -6
- package/stemy-ngx-utils.metadata.json +1 -1
- package/tools/circular.js +116 -116
- package/tools/config.js +78 -78
- package/tools/icons.js +13 -13
|
@@ -1,81 +1,81 @@
|
|
|
1
|
-
import { ChangeDetectorRef, Inject, Injectable, Pipe } from "@angular/core";
|
|
2
|
-
import { LANGUAGE_SERVICE } from "../common-types";
|
|
3
|
-
import { ObjectUtils } from "../utils/object.utils";
|
|
4
|
-
export class TranslatePipe {
|
|
5
|
-
constructor(cdr, language) {
|
|
6
|
-
this.cdr = cdr;
|
|
7
|
-
this.language = language;
|
|
8
|
-
}
|
|
9
|
-
get currentLang() {
|
|
10
|
-
return this.language.currentLanguage;
|
|
11
|
-
}
|
|
12
|
-
transform(query, ...args) {
|
|
13
|
-
if (!query)
|
|
14
|
-
return "";
|
|
15
|
-
let dirty = false;
|
|
16
|
-
const lang = this.currentLang;
|
|
17
|
-
if (this.lang !== lang) {
|
|
18
|
-
this.lang = lang;
|
|
19
|
-
dirty = true;
|
|
20
|
-
}
|
|
21
|
-
const disabled = this.language.disableTranslations;
|
|
22
|
-
if (this.disabled !== disabled) {
|
|
23
|
-
this.disabled = disabled;
|
|
24
|
-
dirty = true;
|
|
25
|
-
}
|
|
26
|
-
if (!ObjectUtils.equals(this.query, query)) {
|
|
27
|
-
this.query = query;
|
|
28
|
-
dirty = true;
|
|
29
|
-
}
|
|
30
|
-
if (!ObjectUtils.equals(this.args, args)) {
|
|
31
|
-
this.args = args;
|
|
32
|
-
this.params = null;
|
|
33
|
-
if (ObjectUtils.isDefined(args[0]) && args.length) {
|
|
34
|
-
if (typeof args[0] === "string" && args[0].length) {
|
|
35
|
-
const validArgs = args[0]
|
|
36
|
-
.replace(/(\')?([a-zA-Z0-9_]+)(\')?(\s)?:/g, `"$2":`)
|
|
37
|
-
.replace(/:(\s)?(\')(.*?)(\')/g, `:"$3"`);
|
|
38
|
-
try {
|
|
39
|
-
this.params = JSON.parse(validArgs);
|
|
40
|
-
}
|
|
41
|
-
catch (e) {
|
|
42
|
-
throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${args[0]}`);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
else if (typeof args[0] === "object" && !Array.isArray(args[0])) {
|
|
46
|
-
this.params = args[0];
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
dirty = true;
|
|
50
|
-
}
|
|
51
|
-
if (dirty) {
|
|
52
|
-
if (typeof query === "object") {
|
|
53
|
-
this.lastValue = Array.isArray(query) ? this.language.getTranslationFromArray(query, this.params, lang) : this.language.getTranslationFromObject(query, this.params, lang);
|
|
54
|
-
return this.lastValue;
|
|
55
|
-
}
|
|
56
|
-
if (this.disabled) {
|
|
57
|
-
this.lastValue = query;
|
|
58
|
-
return this.lastValue;
|
|
59
|
-
}
|
|
60
|
-
this.language.getTranslation(query, this.params).then(value => {
|
|
61
|
-
this.lastValue = value;
|
|
62
|
-
if (!this.cdr["destroyed"]) {
|
|
63
|
-
this.cdr.detectChanges();
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
return this.lastValue;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
TranslatePipe.decorators = [
|
|
71
|
-
{ type: Injectable },
|
|
72
|
-
{ type: Pipe, args: [{
|
|
73
|
-
name: "translate",
|
|
74
|
-
pure: false
|
|
75
|
-
},] }
|
|
76
|
-
];
|
|
77
|
-
TranslatePipe.ctorParameters = () => [
|
|
78
|
-
{ type: ChangeDetectorRef },
|
|
79
|
-
{ type: undefined, decorators: [{ type: Inject, args: [LANGUAGE_SERVICE,] }] }
|
|
80
|
-
];
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { ChangeDetectorRef, Inject, Injectable, Pipe } from "@angular/core";
|
|
2
|
+
import { LANGUAGE_SERVICE } from "../common-types";
|
|
3
|
+
import { ObjectUtils } from "../utils/object.utils";
|
|
4
|
+
export class TranslatePipe {
|
|
5
|
+
constructor(cdr, language) {
|
|
6
|
+
this.cdr = cdr;
|
|
7
|
+
this.language = language;
|
|
8
|
+
}
|
|
9
|
+
get currentLang() {
|
|
10
|
+
return this.language.currentLanguage;
|
|
11
|
+
}
|
|
12
|
+
transform(query, ...args) {
|
|
13
|
+
if (!query)
|
|
14
|
+
return "";
|
|
15
|
+
let dirty = false;
|
|
16
|
+
const lang = this.currentLang;
|
|
17
|
+
if (this.lang !== lang) {
|
|
18
|
+
this.lang = lang;
|
|
19
|
+
dirty = true;
|
|
20
|
+
}
|
|
21
|
+
const disabled = this.language.disableTranslations;
|
|
22
|
+
if (this.disabled !== disabled) {
|
|
23
|
+
this.disabled = disabled;
|
|
24
|
+
dirty = true;
|
|
25
|
+
}
|
|
26
|
+
if (!ObjectUtils.equals(this.query, query)) {
|
|
27
|
+
this.query = query;
|
|
28
|
+
dirty = true;
|
|
29
|
+
}
|
|
30
|
+
if (!ObjectUtils.equals(this.args, args)) {
|
|
31
|
+
this.args = args;
|
|
32
|
+
this.params = null;
|
|
33
|
+
if (ObjectUtils.isDefined(args[0]) && args.length) {
|
|
34
|
+
if (typeof args[0] === "string" && args[0].length) {
|
|
35
|
+
const validArgs = args[0]
|
|
36
|
+
.replace(/(\')?([a-zA-Z0-9_]+)(\')?(\s)?:/g, `"$2":`)
|
|
37
|
+
.replace(/:(\s)?(\')(.*?)(\')/g, `:"$3"`);
|
|
38
|
+
try {
|
|
39
|
+
this.params = JSON.parse(validArgs);
|
|
40
|
+
}
|
|
41
|
+
catch (e) {
|
|
42
|
+
throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${args[0]}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else if (typeof args[0] === "object" && !Array.isArray(args[0])) {
|
|
46
|
+
this.params = args[0];
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
dirty = true;
|
|
50
|
+
}
|
|
51
|
+
if (dirty) {
|
|
52
|
+
if (typeof query === "object") {
|
|
53
|
+
this.lastValue = Array.isArray(query) ? this.language.getTranslationFromArray(query, this.params, lang) : this.language.getTranslationFromObject(query, this.params, lang);
|
|
54
|
+
return this.lastValue;
|
|
55
|
+
}
|
|
56
|
+
if (this.disabled) {
|
|
57
|
+
this.lastValue = query;
|
|
58
|
+
return this.lastValue;
|
|
59
|
+
}
|
|
60
|
+
this.language.getTranslation(query, this.params).then(value => {
|
|
61
|
+
this.lastValue = value;
|
|
62
|
+
if (!this.cdr["destroyed"]) {
|
|
63
|
+
this.cdr.detectChanges();
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return this.lastValue;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
TranslatePipe.decorators = [
|
|
71
|
+
{ type: Injectable },
|
|
72
|
+
{ type: Pipe, args: [{
|
|
73
|
+
name: "translate",
|
|
74
|
+
pure: false
|
|
75
|
+
},] }
|
|
76
|
+
];
|
|
77
|
+
TranslatePipe.ctorParameters = () => [
|
|
78
|
+
{ type: ChangeDetectorRef },
|
|
79
|
+
{ type: undefined, decorators: [{ type: Inject, args: [LANGUAGE_SERVICE,] }] }
|
|
80
|
+
];
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiRDovV29yay9uZ3gtdXRpbHMvc3JjLyIsInNvdXJjZXMiOlsibmd4LXV0aWxzL3BpcGVzL3RyYW5zbGF0ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFtQixnQkFBZ0IsRUFBbUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFPbEQsTUFBTSxPQUFPLGFBQWE7SUFhdEIsWUFBcUIsR0FBc0IsRUFBcUMsUUFBMEI7UUFBckYsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBcUMsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7SUFFMUcsQ0FBQztJQU5ELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUE7SUFDeEMsQ0FBQztJQU1ELFNBQVMsQ0FBQyxLQUF1QixFQUFFLEdBQUcsSUFBVztRQUM3QyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3RCLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNsQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzlCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakIsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNoQjtRQUNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUM7UUFDbkQsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRTtZQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztZQUN6QixLQUFLLEdBQUcsSUFB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QUFNLFNBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgSW5qZWN0LCBJbmplY3RhYmxlLCBQaXBlLCBQaXBlVHJhbnNmb3JtfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0lMYW5ndWFnZVNlcnZpY2UsIExBTkdVQUdFX1NFUlZJQ0UsIFRyYW5zbGF0aW9uUXVlcnl9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4uL3V0aWxzL29iamVjdC51dGlsc1wiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5AUGlwZSh7XHJcbiAgICBuYW1lOiBcInRyYW5zbGF0ZVwiLFxyXG4gICAgcHVyZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgICBwcml2YXRlIGxhbmc6IHN0cmluZztcclxuICAgIHByaXZhdGUgZGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgICBwcml2YXRlIHF1ZXJ5OiBUcmFuc2xhdGlvblF1ZXJ5O1xyXG4gICAgcHJpdmF0ZSBhcmdzOiBhbnlbXTtcclxuICAgIHByaXZhdGUgcGFyYW1zOiBhbnk7XHJcbiAgICBwcml2YXRlIGxhc3RWYWx1ZTogc3RyaW5nO1xyXG5cclxuICAgIGdldCBjdXJyZW50TGFuZygpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxhbmd1YWdlLmN1cnJlbnRMYW5ndWFnZVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIEBJbmplY3QoTEFOR1VBR0VfU0VSVklDRSkgcmVhZG9ubHkgbGFuZ3VhZ2U6IElMYW5ndWFnZVNlcnZpY2UpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgdHJhbnNmb3JtKHF1ZXJ5OiBUcmFuc2xhdGlvblF1ZXJ5LCAuLi5hcmdzOiBhbnlbXSk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKCFxdWVyeSkgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgbGV0IGRpcnR5ID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgbGFuZyA9IHRoaXMuY3VycmVudExhbmc7XHJcbiAgICAgICAgaWYgKHRoaXMubGFuZyAhPT0gbGFuZykge1xyXG4gICAgICAgICAgICB0aGlzLmxhbmcgPSBsYW5nO1xyXG4gICAgICAgICAgICBkaXJ0eSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGRpc2FibGVkID0gdGhpcy5sYW5ndWFnZS5kaXNhYmxlVHJhbnNsYXRpb25zO1xyXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkICE9PSBkaXNhYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQ7XHJcbiAgICAgICAgICAgIGRpcnR5ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFPYmplY3RVdGlscy5lcXVhbHModGhpcy5xdWVyeSwgcXVlcnkpKSB7XHJcbiAgICAgICAgICAgIHRoaXMucXVlcnkgPSBxdWVyeTtcclxuICAgICAgICAgICAgZGlydHkgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIU9iamVjdFV0aWxzLmVxdWFscyh0aGlzLmFyZ3MsIGFyZ3MpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXJncyA9IGFyZ3M7XHJcbiAgICAgICAgICAgIHRoaXMucGFyYW1zID0gbnVsbDtcclxuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWxzLmlzRGVmaW5lZChhcmdzWzBdKSAmJiBhcmdzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSBcInN0cmluZ1wiICYmIGFyZ3NbMF0ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsaWRBcmdzOiBzdHJpbmcgPSBhcmdzWzBdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8oXFwnKT8oW2EtekEtWjAtOV9dKykoXFwnKT8oXFxzKT86L2csIGBcIiQyXCI6YClcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLzooXFxzKT8oXFwnKSguKj8pKFxcJykvZywgYDpcIiQzXCJgKTtcclxuICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtcyA9IEpTT04ucGFyc2UodmFsaWRBcmdzKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgV3JvbmcgcGFyYW1ldGVyIGluIFRyYW5zbGF0ZVBpcGUuIEV4cGVjdGVkIGEgdmFsaWQgT2JqZWN0LCByZWNlaXZlZDogJHthcmdzWzBdfWApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGFyZ3NbMF0gPT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkoYXJnc1swXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtcyA9IGFyZ3NbMF07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZGlydHkgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGlydHkpIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBxdWVyeSA9PT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0VmFsdWUgPSBBcnJheS5pc0FycmF5KHF1ZXJ5KSA/IHRoaXMubGFuZ3VhZ2UuZ2V0VHJhbnNsYXRpb25Gcm9tQXJyYXkocXVlcnksIHRoaXMucGFyYW1zLCBsYW5nKSA6IHRoaXMubGFuZ3VhZ2UuZ2V0VHJhbnNsYXRpb25Gcm9tT2JqZWN0KHF1ZXJ5LCB0aGlzLnBhcmFtcywgbGFuZyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sYXN0VmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFzdFZhbHVlID0gcXVlcnk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sYXN0VmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5sYW5ndWFnZS5nZXRUcmFuc2xhdGlvbihxdWVyeSwgdGhpcy5wYXJhbXMpLnRoZW4odmFsdWUgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0VmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jZHJbXCJkZXN0cm95ZWRcIl0pIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5sYXN0VmFsdWU7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { Pipe } from "@angular/core";
|
|
2
|
-
import { ObjectUtils } from "../utils/object.utils";
|
|
3
|
-
const emptyValues = [];
|
|
4
|
-
export class ValuesPipe {
|
|
5
|
-
transform(value) {
|
|
6
|
-
if (!value)
|
|
7
|
-
return emptyValues;
|
|
8
|
-
return ObjectUtils.isArray(value)
|
|
9
|
-
? value
|
|
10
|
-
: Object.keys(value).map(key => value[key]);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
ValuesPipe.decorators = [
|
|
14
|
-
{ type: Pipe, args: [{
|
|
15
|
-
name: "values"
|
|
16
|
-
},] }
|
|
17
|
-
];
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Pipe } from "@angular/core";
|
|
2
|
+
import { ObjectUtils } from "../utils/object.utils";
|
|
3
|
+
const emptyValues = [];
|
|
4
|
+
export class ValuesPipe {
|
|
5
|
+
transform(value) {
|
|
6
|
+
if (!value)
|
|
7
|
+
return emptyValues;
|
|
8
|
+
return ObjectUtils.isArray(value)
|
|
9
|
+
? value
|
|
10
|
+
: Object.keys(value).map(key => value[key]);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
ValuesPipe.decorators = [
|
|
14
|
+
{ type: Pipe, args: [{
|
|
15
|
+
name: "values"
|
|
16
|
+
},] }
|
|
17
|
+
];
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWVzLnBpcGUuanMiLCJzb3VyY2VSb290IjoiRDovV29yay9uZ3gtdXRpbHMvc3JjLyIsInNvdXJjZXMiOlsibmd4LXV0aWxzL3BpcGVzL3ZhbHVlcy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRCxNQUFNLFdBQVcsR0FBVSxFQUFFLENBQUM7QUFLOUIsTUFBTSxPQUFPLFVBQVU7SUFFbkIsU0FBUyxDQUFDLEtBQVU7UUFDaEIsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLFdBQVcsQ0FBQztRQUMvQixPQUFPLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQzdCLENBQUMsQ0FBQyxLQUFLO1lBQ1AsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7O1lBVkosSUFBSSxTQUFDO2dCQUNGLElBQUksRUFBRSxRQUFRO2FBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQaXBlLCBQaXBlVHJhbnNmb3JtfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi4vdXRpbHMvb2JqZWN0LnV0aWxzXCI7XHJcblxyXG5jb25zdCBlbXB0eVZhbHVlczogYW55W10gPSBbXTtcclxuXHJcbkBQaXBlKHtcclxuICAgIG5hbWU6IFwidmFsdWVzXCJcclxufSlcclxuZXhwb3J0IGNsYXNzIFZhbHVlc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgICB0cmFuc2Zvcm0odmFsdWU6IGFueSk6IGFueVtdIHtcclxuICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm4gZW1wdHlWYWx1ZXM7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLmlzQXJyYXkodmFsdWUpXHJcbiAgICAgICAgICAgID8gdmFsdWVcclxuICAgICAgICAgICAgOiBPYmplY3Qua2V5cyh2YWx1ZSkubWFwKGtleSA9PiB2YWx1ZVtrZXldKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
import { ɵangular_packages_platform_browser_platform_browser_g as EventManagerPlugin } from "@angular/platform-browser";
|
|
2
|
-
import { Inject, Injectable } from "@angular/core";
|
|
3
|
-
import { DOCUMENT } from "@angular/common";
|
|
4
|
-
import { addListener, removeListener } from "resize-detector";
|
|
5
|
-
import { StringUtils } from "../utils/string.utils";
|
|
6
|
-
import { UniversalService } from "../services/universal.service";
|
|
7
|
-
function emptyRemove() {
|
|
8
|
-
}
|
|
9
|
-
export class ResizeEventPlugin extends EventManagerPlugin {
|
|
10
|
-
constructor(doc, universal) {
|
|
11
|
-
super(doc);
|
|
12
|
-
this.universal = universal;
|
|
13
|
-
}
|
|
14
|
-
supports(eventName) {
|
|
15
|
-
return eventName === ResizeEventPlugin.EVENT_NAME;
|
|
16
|
-
}
|
|
17
|
-
addEventListener(element, eventName, handler) {
|
|
18
|
-
const zone = this.manager.getZone();
|
|
19
|
-
return zone.runOutsideAngular(() => {
|
|
20
|
-
if (this.universal.isServer)
|
|
21
|
-
return emptyRemove;
|
|
22
|
-
const cb = el => {
|
|
23
|
-
zone.run(() => handler(el));
|
|
24
|
-
};
|
|
25
|
-
addListener(element, cb);
|
|
26
|
-
return () => {
|
|
27
|
-
try {
|
|
28
|
-
removeListener(element, cb);
|
|
29
|
-
}
|
|
30
|
-
catch (e) {
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
addGlobalEventListener(element, eventName, handler) {
|
|
36
|
-
const zone = this.manager.getZone();
|
|
37
|
-
return zone.runOutsideAngular(() => {
|
|
38
|
-
if (this.universal.isServer)
|
|
39
|
-
return emptyRemove;
|
|
40
|
-
if (!StringUtils.has(element, "document", "window")) {
|
|
41
|
-
console.error("Global resize event other than window or document?", element);
|
|
42
|
-
return emptyRemove;
|
|
43
|
-
}
|
|
44
|
-
const target = "window" == element ? window : document;
|
|
45
|
-
const listener = handler;
|
|
46
|
-
target.addEventListener(eventName, listener);
|
|
47
|
-
return () => target.removeEventListener(eventName, listener);
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
ResizeEventPlugin.EVENT_NAME = "resize";
|
|
52
|
-
ResizeEventPlugin.decorators = [
|
|
53
|
-
{ type: Injectable }
|
|
54
|
-
];
|
|
55
|
-
ResizeEventPlugin.ctorParameters = () => [
|
|
56
|
-
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
|
|
57
|
-
{ type: UniversalService }
|
|
58
|
-
];
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { ɵangular_packages_platform_browser_platform_browser_g as EventManagerPlugin } from "@angular/platform-browser";
|
|
2
|
+
import { Inject, Injectable } from "@angular/core";
|
|
3
|
+
import { DOCUMENT } from "@angular/common";
|
|
4
|
+
import { addListener, removeListener } from "resize-detector";
|
|
5
|
+
import { StringUtils } from "../utils/string.utils";
|
|
6
|
+
import { UniversalService } from "../services/universal.service";
|
|
7
|
+
function emptyRemove() {
|
|
8
|
+
}
|
|
9
|
+
export class ResizeEventPlugin extends EventManagerPlugin {
|
|
10
|
+
constructor(doc, universal) {
|
|
11
|
+
super(doc);
|
|
12
|
+
this.universal = universal;
|
|
13
|
+
}
|
|
14
|
+
supports(eventName) {
|
|
15
|
+
return eventName === ResizeEventPlugin.EVENT_NAME;
|
|
16
|
+
}
|
|
17
|
+
addEventListener(element, eventName, handler) {
|
|
18
|
+
const zone = this.manager.getZone();
|
|
19
|
+
return zone.runOutsideAngular(() => {
|
|
20
|
+
if (this.universal.isServer)
|
|
21
|
+
return emptyRemove;
|
|
22
|
+
const cb = el => {
|
|
23
|
+
zone.run(() => handler(el));
|
|
24
|
+
};
|
|
25
|
+
addListener(element, cb);
|
|
26
|
+
return () => {
|
|
27
|
+
try {
|
|
28
|
+
removeListener(element, cb);
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
addGlobalEventListener(element, eventName, handler) {
|
|
36
|
+
const zone = this.manager.getZone();
|
|
37
|
+
return zone.runOutsideAngular(() => {
|
|
38
|
+
if (this.universal.isServer)
|
|
39
|
+
return emptyRemove;
|
|
40
|
+
if (!StringUtils.has(element, "document", "window")) {
|
|
41
|
+
console.error("Global resize event other than window or document?", element);
|
|
42
|
+
return emptyRemove;
|
|
43
|
+
}
|
|
44
|
+
const target = "window" == element ? window : document;
|
|
45
|
+
const listener = handler;
|
|
46
|
+
target.addEventListener(eventName, listener);
|
|
47
|
+
return () => target.removeEventListener(eventName, listener);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
ResizeEventPlugin.EVENT_NAME = "resize";
|
|
52
|
+
ResizeEventPlugin.decorators = [
|
|
53
|
+
{ type: Injectable }
|
|
54
|
+
];
|
|
55
|
+
ResizeEventPlugin.ctorParameters = () => [
|
|
56
|
+
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
|
|
57
|
+
{ type: UniversalService }
|
|
58
|
+
];
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLWV2ZW50LnBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiJEOi9Xb3JrL25neC11dGlscy9zcmMvIiwic291cmNlcyI6WyJuZ3gtdXRpbHMvcGx1Z2lucy9yZXNpemUtZXZlbnQucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxxREFBcUQsSUFBSSxrQkFBa0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3RILE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUUvRCxTQUFTLFdBQVc7QUFFcEIsQ0FBQztBQUdELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxrQkFBa0I7SUFJckQsWUFBOEIsR0FBUSxFQUFTLFNBQTJCO1FBQ3RFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQURnQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtJQUUxRSxDQUFDO0lBRUQsUUFBUSxDQUFDLFNBQVM7UUFDZCxPQUFPLFNBQVMsS0FBSyxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7SUFDdEQsQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQW9CLEVBQUUsU0FBaUIsRUFBRSxPQUFpQjtRQUN2RSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUMvQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUTtnQkFBRSxPQUFPLFdBQVcsQ0FBQztZQUNoRCxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDWixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLENBQUMsQ0FBQztZQUNGLFdBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDekIsT0FBTyxHQUFHLEVBQUU7Z0JBQ1IsSUFBSTtvQkFDQSxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2lCQUMvQjtnQkFBQyxPQUFPLENBQUMsRUFBRTtpQkFDWDtZQUNMLENBQUMsQ0FBQTtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELHNCQUFzQixDQUFDLE9BQWUsRUFBRSxTQUFpQixFQUFFLE9BQWlCO1FBQ3hFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQy9CLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRO2dCQUFFLE9BQU8sV0FBVyxDQUFDO1lBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQ2pELE9BQU8sQ0FBQyxLQUFLLENBQUMsb0RBQW9ELEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzdFLE9BQU8sV0FBVyxDQUFDO2FBQ3RCO1lBQ0QsTUFBTSxNQUFNLEdBQWdCLFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQ3BFLE1BQU0sUUFBUSxHQUF1QyxPQUFPLENBQUM7WUFDN0QsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUM3QyxPQUFPLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztBQXhDYyw0QkFBVSxHQUFXLFFBQVEsQ0FBQzs7WUFIaEQsVUFBVTs7OzRDQUtNLE1BQU0sU0FBQyxRQUFRO1lBWHhCLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ybVhbmd1bGFyX3BhY2thZ2VzX3BsYXRmb3JtX2Jyb3dzZXJfcGxhdGZvcm1fYnJvd3Nlcl9nIGFzIEV2ZW50TWFuYWdlclBsdWdpbn0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcclxuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgYWRkTGlzdGVuZXIsIHJlbW92ZUxpc3RlbmVyIH0gZnJvbSBcInJlc2l6ZS1kZXRlY3RvclwiO1xyXG5pbXBvcnQge1N0cmluZ1V0aWxzfSBmcm9tIFwiLi4vdXRpbHMvc3RyaW5nLnV0aWxzXCI7XHJcbmltcG9ydCB7VW5pdmVyc2FsU2VydmljZX0gZnJvbSBcIi4uL3NlcnZpY2VzL3VuaXZlcnNhbC5zZXJ2aWNlXCI7XHJcblxyXG5mdW5jdGlvbiBlbXB0eVJlbW92ZSgpOiB2b2lkIHtcclxuXHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFJlc2l6ZUV2ZW50UGx1Z2luIGV4dGVuZHMgRXZlbnRNYW5hZ2VyUGx1Z2luIHtcclxuXHJcbiAgICBwcml2YXRlIHN0YXRpYyBFVkVOVF9OQU1FOiBzdHJpbmcgPSBcInJlc2l6ZVwiO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIGRvYzogYW55LCBwdWJsaWMgdW5pdmVyc2FsOiBVbml2ZXJzYWxTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoZG9jKTtcclxuICAgIH1cclxuXHJcbiAgICBzdXBwb3J0cyhldmVudE5hbWUpIHtcclxuICAgICAgICByZXR1cm4gZXZlbnROYW1lID09PSBSZXNpemVFdmVudFBsdWdpbi5FVkVOVF9OQU1FO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZEV2ZW50TGlzdGVuZXIoZWxlbWVudDogSFRNTEVsZW1lbnQsIGV2ZW50TmFtZTogc3RyaW5nLCBoYW5kbGVyOiBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcclxuICAgICAgICBjb25zdCB6b25lID0gdGhpcy5tYW5hZ2VyLmdldFpvbmUoKTtcclxuICAgICAgICByZXR1cm4gem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnVuaXZlcnNhbC5pc1NlcnZlcikgcmV0dXJuIGVtcHR5UmVtb3ZlO1xyXG4gICAgICAgICAgICBjb25zdCBjYiA9IGVsID0+IHtcclxuICAgICAgICAgICAgICAgIHpvbmUucnVuKCgpID0+IGhhbmRsZXIoZWwpKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgYWRkTGlzdGVuZXIoZWxlbWVudCwgY2IpO1xyXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICByZW1vdmVMaXN0ZW5lcihlbGVtZW50LCBjYik7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRHbG9iYWxFdmVudExpc3RlbmVyKGVsZW1lbnQ6IHN0cmluZywgZXZlbnROYW1lOiBzdHJpbmcsIGhhbmRsZXI6IEZ1bmN0aW9uKTogRnVuY3Rpb24ge1xyXG4gICAgICAgIGNvbnN0IHpvbmUgPSB0aGlzLm1hbmFnZXIuZ2V0Wm9uZSgpO1xyXG4gICAgICAgIHJldHVybiB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudW5pdmVyc2FsLmlzU2VydmVyKSByZXR1cm4gZW1wdHlSZW1vdmU7XHJcbiAgICAgICAgICAgIGlmICghU3RyaW5nVXRpbHMuaGFzKGVsZW1lbnQsIFwiZG9jdW1lbnRcIiwgXCJ3aW5kb3dcIikpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJHbG9iYWwgcmVzaXplIGV2ZW50IG90aGVyIHRoYW4gd2luZG93IG9yIGRvY3VtZW50P1wiLCBlbGVtZW50KTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eVJlbW92ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXQ6IEV2ZW50VGFyZ2V0ID0gXCJ3aW5kb3dcIiA9PSBlbGVtZW50ID8gd2luZG93IDogZG9jdW1lbnQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGxpc3RlbmVyID0gPEV2ZW50TGlzdGVuZXJPckV2ZW50TGlzdGVuZXJPYmplY3Q+aGFuZGxlcjtcclxuICAgICAgICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBsaXN0ZW5lcik7XHJcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGxpc3RlbmVyKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
import { ɵangular_packages_platform_browser_platform_browser_g as EventManagerPlugin } from "@angular/platform-browser";
|
|
2
|
-
import { Inject, Injectable } from "@angular/core";
|
|
3
|
-
import { DOCUMENT } from "@angular/common";
|
|
4
|
-
import { StringUtils } from "../utils/string.utils";
|
|
5
|
-
import { UniversalService } from "../services/universal.service";
|
|
6
|
-
export function emptyRemove() {
|
|
7
|
-
}
|
|
8
|
-
export class ScrollEventPlugin extends EventManagerPlugin {
|
|
9
|
-
constructor(doc, universal) {
|
|
10
|
-
super(doc);
|
|
11
|
-
this.universal = universal;
|
|
12
|
-
}
|
|
13
|
-
supports(eventName) {
|
|
14
|
-
return eventName === ScrollEventPlugin.EVENT_NAME;
|
|
15
|
-
}
|
|
16
|
-
addEventListener(element, eventName, handler) {
|
|
17
|
-
const zone = this.manager.getZone();
|
|
18
|
-
return zone.runOutsideAngular(() => {
|
|
19
|
-
if (this.universal.isServer)
|
|
20
|
-
return emptyRemove;
|
|
21
|
-
const callback = (e) => {
|
|
22
|
-
zone.run(() => handler(e));
|
|
23
|
-
};
|
|
24
|
-
element.addEventListener(eventName, callback);
|
|
25
|
-
return () => element.removeEventListener(eventName, callback);
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
addGlobalEventListener(element, eventName, handler) {
|
|
29
|
-
const zone = this.manager.getZone();
|
|
30
|
-
return zone.runOutsideAngular(() => {
|
|
31
|
-
if (this.universal.isServer)
|
|
32
|
-
return emptyRemove;
|
|
33
|
-
if (!StringUtils.has(element, "document", "window")) {
|
|
34
|
-
console.error("Global resize event other than window or document?", element);
|
|
35
|
-
return emptyRemove;
|
|
36
|
-
}
|
|
37
|
-
const target = "window" == element ? window : document;
|
|
38
|
-
const listener = handler;
|
|
39
|
-
target.addEventListener(eventName, listener);
|
|
40
|
-
return () => target.removeEventListener(eventName, listener);
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
ScrollEventPlugin.EVENT_NAME = "scroll";
|
|
45
|
-
ScrollEventPlugin.decorators = [
|
|
46
|
-
{ type: Injectable }
|
|
47
|
-
];
|
|
48
|
-
ScrollEventPlugin.ctorParameters = () => [
|
|
49
|
-
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
|
|
50
|
-
{ type: UniversalService }
|
|
51
|
-
];
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { ɵangular_packages_platform_browser_platform_browser_g as EventManagerPlugin } from "@angular/platform-browser";
|
|
2
|
+
import { Inject, Injectable } from "@angular/core";
|
|
3
|
+
import { DOCUMENT } from "@angular/common";
|
|
4
|
+
import { StringUtils } from "../utils/string.utils";
|
|
5
|
+
import { UniversalService } from "../services/universal.service";
|
|
6
|
+
export function emptyRemove() {
|
|
7
|
+
}
|
|
8
|
+
export class ScrollEventPlugin extends EventManagerPlugin {
|
|
9
|
+
constructor(doc, universal) {
|
|
10
|
+
super(doc);
|
|
11
|
+
this.universal = universal;
|
|
12
|
+
}
|
|
13
|
+
supports(eventName) {
|
|
14
|
+
return eventName === ScrollEventPlugin.EVENT_NAME;
|
|
15
|
+
}
|
|
16
|
+
addEventListener(element, eventName, handler) {
|
|
17
|
+
const zone = this.manager.getZone();
|
|
18
|
+
return zone.runOutsideAngular(() => {
|
|
19
|
+
if (this.universal.isServer)
|
|
20
|
+
return emptyRemove;
|
|
21
|
+
const callback = (e) => {
|
|
22
|
+
zone.run(() => handler(e));
|
|
23
|
+
};
|
|
24
|
+
element.addEventListener(eventName, callback);
|
|
25
|
+
return () => element.removeEventListener(eventName, callback);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
addGlobalEventListener(element, eventName, handler) {
|
|
29
|
+
const zone = this.manager.getZone();
|
|
30
|
+
return zone.runOutsideAngular(() => {
|
|
31
|
+
if (this.universal.isServer)
|
|
32
|
+
return emptyRemove;
|
|
33
|
+
if (!StringUtils.has(element, "document", "window")) {
|
|
34
|
+
console.error("Global resize event other than window or document?", element);
|
|
35
|
+
return emptyRemove;
|
|
36
|
+
}
|
|
37
|
+
const target = "window" == element ? window : document;
|
|
38
|
+
const listener = handler;
|
|
39
|
+
target.addEventListener(eventName, listener);
|
|
40
|
+
return () => target.removeEventListener(eventName, listener);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
ScrollEventPlugin.EVENT_NAME = "scroll";
|
|
45
|
+
ScrollEventPlugin.decorators = [
|
|
46
|
+
{ type: Injectable }
|
|
47
|
+
];
|
|
48
|
+
ScrollEventPlugin.ctorParameters = () => [
|
|
49
|
+
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
|
|
50
|
+
{ type: UniversalService }
|
|
51
|
+
];
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLWV2ZW50LnBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiJEOi9Xb3JrL25neC11dGlscy9zcmMvIiwic291cmNlcyI6WyJuZ3gtdXRpbHMvcGx1Z2lucy9zY3JvbGwtZXZlbnQucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxxREFBcUQsSUFBSSxrQkFBa0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3RILE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFL0QsTUFBTSxVQUFVLFdBQVc7QUFFM0IsQ0FBQztBQUdELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxrQkFBa0I7SUFJckQsWUFBOEIsR0FBUSxFQUFVLFNBQTJCO1FBQ3ZFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQURpQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtJQUUzRSxDQUFDO0lBRUQsUUFBUSxDQUFDLFNBQVM7UUFDZCxPQUFPLFNBQVMsS0FBSyxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7SUFDdEQsQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQW9CLEVBQUUsU0FBaUIsRUFBRSxPQUFpQjtRQUN2RSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUMvQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUTtnQkFBRSxPQUFPLFdBQVcsQ0FBQztZQUNoRCxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQVEsRUFBRSxFQUFFO2dCQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9CLENBQUMsQ0FBQztZQUNGLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDOUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELHNCQUFzQixDQUFDLE9BQWUsRUFBRSxTQUFpQixFQUFFLE9BQWlCO1FBQ3hFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQy9CLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRO2dCQUFFLE9BQU8sV0FBVyxDQUFDO1lBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQ2pELE9BQU8sQ0FBQyxLQUFLLENBQUMsb0RBQW9ELEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzdFLE9BQU8sV0FBVyxDQUFDO2FBQ3RCO1lBQ0QsTUFBTSxNQUFNLEdBQWdCLFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQ3BFLE1BQU0sUUFBUSxHQUF1QyxPQUFPLENBQUM7WUFDN0QsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUM3QyxPQUFPLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztBQW5DYyw0QkFBVSxHQUFXLFFBQVEsQ0FBQzs7WUFIaEQsVUFBVTs7OzRDQUtNLE1BQU0sU0FBQyxRQUFRO1lBWHhCLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ybVhbmd1bGFyX3BhY2thZ2VzX3BsYXRmb3JtX2Jyb3dzZXJfcGxhdGZvcm1fYnJvd3Nlcl9nIGFzIEV2ZW50TWFuYWdlclBsdWdpbn0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcclxuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtTdHJpbmdVdGlsc30gZnJvbSBcIi4uL3V0aWxzL3N0cmluZy51dGlsc1wiO1xyXG5pbXBvcnQge1VuaXZlcnNhbFNlcnZpY2V9IGZyb20gXCIuLi9zZXJ2aWNlcy91bml2ZXJzYWwuc2VydmljZVwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGVtcHR5UmVtb3ZlKCk6IHZvaWQge1xyXG5cclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2Nyb2xsRXZlbnRQbHVnaW4gZXh0ZW5kcyBFdmVudE1hbmFnZXJQbHVnaW4ge1xyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIEVWRU5UX05BTUU6IHN0cmluZyA9IFwic2Nyb2xsXCI7XHJcblxyXG4gICAgY29uc3RydWN0b3IoQEluamVjdChET0NVTUVOVCkgZG9jOiBhbnksIHByaXZhdGUgdW5pdmVyc2FsOiBVbml2ZXJzYWxTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoZG9jKTtcclxuICAgIH1cclxuXHJcbiAgICBzdXBwb3J0cyhldmVudE5hbWUpIHtcclxuICAgICAgICByZXR1cm4gZXZlbnROYW1lID09PSBTY3JvbGxFdmVudFBsdWdpbi5FVkVOVF9OQU1FO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZEV2ZW50TGlzdGVuZXIoZWxlbWVudDogSFRNTEVsZW1lbnQsIGV2ZW50TmFtZTogc3RyaW5nLCBoYW5kbGVyOiBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcclxuICAgICAgICBjb25zdCB6b25lID0gdGhpcy5tYW5hZ2VyLmdldFpvbmUoKTtcclxuICAgICAgICByZXR1cm4gem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnVuaXZlcnNhbC5pc1NlcnZlcikgcmV0dXJuIGVtcHR5UmVtb3ZlO1xyXG4gICAgICAgICAgICBjb25zdCBjYWxsYmFjayA9IChlOiBFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgem9uZS5ydW4oKCkgPT4gaGFuZGxlcihlKSk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrKTtcclxuICAgICAgICAgICAgcmV0dXJuICgpID0+IGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRHbG9iYWxFdmVudExpc3RlbmVyKGVsZW1lbnQ6IHN0cmluZywgZXZlbnROYW1lOiBzdHJpbmcsIGhhbmRsZXI6IEZ1bmN0aW9uKTogRnVuY3Rpb24ge1xyXG4gICAgICAgIGNvbnN0IHpvbmUgPSB0aGlzLm1hbmFnZXIuZ2V0Wm9uZSgpO1xyXG4gICAgICAgIHJldHVybiB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudW5pdmVyc2FsLmlzU2VydmVyKSByZXR1cm4gZW1wdHlSZW1vdmU7XHJcbiAgICAgICAgICAgIGlmICghU3RyaW5nVXRpbHMuaGFzKGVsZW1lbnQsIFwiZG9jdW1lbnRcIiwgXCJ3aW5kb3dcIikpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJHbG9iYWwgcmVzaXplIGV2ZW50IG90aGVyIHRoYW4gd2luZG93IG9yIGRvY3VtZW50P1wiLCBlbGVtZW50KTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eVJlbW92ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCB0YXJnZXQ6IEV2ZW50VGFyZ2V0ID0gXCJ3aW5kb3dcIiA9PSBlbGVtZW50ID8gd2luZG93IDogZG9jdW1lbnQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGxpc3RlbmVyID0gPEV2ZW50TGlzdGVuZXJPckV2ZW50TGlzdGVuZXJPYmplY3Q+aGFuZGxlcjtcclxuICAgICAgICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBsaXN0ZW5lcik7XHJcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGxpc3RlbmVyKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
|