@coreui/icons-angular 4.3.0 → 4.3.9
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/LICENSE +21 -0
- package/README.md +1 -1
- package/esm2020/coreui-icons-angular.mjs +4 -4
- package/esm2020/lib/icon/icon.component.mjs +110 -110
- package/esm2020/lib/icon/icon.directive.mjs +127 -127
- package/esm2020/lib/icon/icon.interface.mjs +2 -2
- package/esm2020/lib/icon/icon.module.mjs +32 -32
- package/esm2020/lib/icon-set/icon-set.module.mjs +40 -40
- package/esm2020/lib/icon-set/icon-set.service.mjs +37 -37
- package/esm2020/lib/icon-set/index.mjs +2 -2
- package/esm2020/lib/icon-set/public_api.mjs +3 -3
- package/esm2020/lib/shared/html-attr.directive.mjs +51 -51
- package/esm2020/public-api.mjs +9 -9
- package/fesm2015/coreui-icons-angular.mjs +374 -374
- package/fesm2015/coreui-icons-angular.mjs.map +1 -1
- package/fesm2020/coreui-icons-angular.mjs +365 -365
- package/fesm2020/coreui-icons-angular.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/icon/icon.component.d.ts +39 -39
- package/lib/icon/icon.directive.d.ts +41 -41
- package/lib/icon/icon.interface.d.ts +15 -15
- package/lib/icon/icon.module.d.ts +10 -10
- package/lib/icon-set/icon-set.module.d.ts +10 -10
- package/lib/icon-set/icon-set.service.d.ts +17 -17
- package/lib/icon-set/index.d.ts +1 -1
- package/lib/icon-set/public_api.d.ts +2 -2
- package/lib/shared/html-attr.directive.d.ts +16 -16
- package/package.json +2 -2
- package/public-api.d.ts +5 -5
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2022 creativeLabs Łukasz Holeczek
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
[coreui]: https://coreui.io/icons
|
|
37
37
|
[coreui-angular-icons-npm]: https://www.npmjs.com/package/@coreui/icons-angular
|
|
38
38
|
[npm-coreui-icons-angular-next]: https://img.shields.io/npm/v/@coreui/icons-angular/next.png?style=flat-square&color=red
|
|
39
|
-
[angular-badge]: https://img.shields.io/badge/angular-^15.
|
|
39
|
+
[angular-badge]: https://img.shields.io/badge/angular-^15.1.0-lightgrey.svg?style=flat-square&logo=angular
|
|
40
40
|
|
|
41
41
|
## `cIcon` directive
|
|
42
42
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
5
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZXVpLWljb25zLWFuZ3VsYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktaWNvbnMtYW5ndWxhci9zcmMvY29yZXVpLWljb25zLWFuZ3VsYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -1,110 +1,110 @@
|
|
|
1
|
-
import { Component, ElementRef, Input, ViewChild } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/platform-browser";
|
|
4
|
-
import * as i2 from "../icon-set";
|
|
5
|
-
import * as i3 from "@angular/common";
|
|
6
|
-
import * as i4 from "../shared/html-attr.directive";
|
|
7
|
-
export class IconComponent {
|
|
8
|
-
|
|
9
|
-
this.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
this.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
this.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
ngAfterViewInit() {
|
|
38
|
-
this.elementRef.nativeElement.classList.forEach((item) => {
|
|
39
|
-
this.renderer.addClass(this.svgElementRef.nativeElement, item);
|
|
40
|
-
});
|
|
41
|
-
const parentElement = this.renderer.parentNode(this.elementRef.nativeElement);
|
|
42
|
-
const svgElement = this.svgElementRef.nativeElement;
|
|
43
|
-
this.renderer.insertBefore(parentElement, svgElement, this.elementRef.nativeElement);
|
|
44
|
-
this.renderer.removeChild(parentElement, this.elementRef.nativeElement);
|
|
45
|
-
}
|
|
46
|
-
get titleCode() {
|
|
47
|
-
return this.title ? `<title>${this.title}</title>` : '';
|
|
48
|
-
}
|
|
49
|
-
get code() {
|
|
50
|
-
if (this.content) {
|
|
51
|
-
return this.content;
|
|
52
|
-
}
|
|
53
|
-
if (this.iconSet && this.name) {
|
|
54
|
-
return this.iconSet.getIcon(this.name);
|
|
55
|
-
}
|
|
56
|
-
if (this.name && !this.iconSet?.icons[this.name])
|
|
57
|
-
console.warn(`c-icon component: icon name '${this.name}' does not exist for IconSet service. ` +
|
|
58
|
-
`To use icon by 'name' prop you need to add it to IconSet service. \n`, this.name);
|
|
59
|
-
return undefined;
|
|
60
|
-
}
|
|
61
|
-
get scale() {
|
|
62
|
-
return Array.isArray(this.code) && this.code.length > 1 ? `0 0 ${this.code[0]}` : '0 0 64 64';
|
|
63
|
-
}
|
|
64
|
-
get computedSize() {
|
|
65
|
-
const addCustom = !this.size && (this.width || this.height);
|
|
66
|
-
return this.size === 'custom' || addCustom ? 'custom-size' : this.size;
|
|
67
|
-
}
|
|
68
|
-
get computedClasses() {
|
|
69
|
-
const classes = {
|
|
70
|
-
icon: true,
|
|
71
|
-
[`icon-${this.computedSize}`]: !!this.computedSize
|
|
72
|
-
};
|
|
73
|
-
return !!this.customClasses ? this.customClasses : classes;
|
|
74
|
-
}
|
|
75
|
-
toCamelCase(str) {
|
|
76
|
-
return str.replace(/([-_][a-z0-9])/ig, ($1) => {
|
|
77
|
-
return $1.toUpperCase().replace('-', '');
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
IconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.
|
|
82
|
-
IconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.
|
|
83
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.
|
|
84
|
-
type: Component,
|
|
85
|
-
args: [{ selector: 'c-icon', template: "<svg *ngIf=\"(!use) && (!!code)\"\
|
|
86
|
-
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.DomSanitizer }, { type: i2.IconSetService }]; }, propDecorators: { attributes: [{
|
|
87
|
-
type: Input
|
|
88
|
-
}], content: [{
|
|
89
|
-
type: Input
|
|
90
|
-
}], size: [{
|
|
91
|
-
type: Input
|
|
92
|
-
}], title: [{
|
|
93
|
-
type: Input
|
|
94
|
-
}], use: [{
|
|
95
|
-
type: Input
|
|
96
|
-
}], customClasses: [{
|
|
97
|
-
type: Input
|
|
98
|
-
}], width: [{
|
|
99
|
-
type: Input
|
|
100
|
-
}], height: [{
|
|
101
|
-
type: Input
|
|
102
|
-
}], name: [{
|
|
103
|
-
type: Input
|
|
104
|
-
}], viewBox: [{
|
|
105
|
-
type: Input
|
|
106
|
-
}], svgElementRef: [{
|
|
107
|
-
type: ViewChild,
|
|
108
|
-
args: ['svgElement', { read: ElementRef }]
|
|
109
|
-
}] } });
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktaWNvbnMtYW5ndWxhci9zcmMvbGliL2ljb24vaWNvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktaWNvbnMtYW5ndWxhci9zcmMvbGliL2ljb24vaWNvbi5jb21wb25lbnQuc3ZnIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQWEsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFVbEcsTUFBTSxPQUFPLGFBQWE7SUFzQ3hCLFlBQ1UsUUFBbUIsRUFDbkIsVUFBc0IsRUFDdEIsU0FBdUIsRUFDdkIsT0FBdUI7UUFIdkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDdkIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUF4Q3hCLGVBQVUsR0FBUSxFQUFDLElBQUksRUFBRSxLQUFLLEVBQUMsQ0FBQztRQUVoQyxTQUFJLEdBQWEsRUFBRSxDQUFDO1FBRXBCLFFBQUcsR0FBRyxFQUFFLENBQUM7UUFDVCxrQkFBYSxHQUFnRSxFQUFFLENBQUM7UUFxQ3ZGLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBbENELElBQ0ksSUFBSSxDQUFDLElBQVk7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbEUsQ0FBQztJQUNE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QUFLO2dCQVVGLE9BQU87c0JBRFYsS0FBSztnQkFTdUMsYUFBYTtzQkFBekQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBJY29uU2V0U2VydmljZSB9IGZyb20gJy4uL2ljb24tc2V0JztcclxuaW1wb3J0IHsgSWNvblNpemUsIElJY29uIH0gZnJvbSAnLi9pY29uLmludGVyZmFjZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2MtaWNvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ljb24uY29tcG9uZW50LnN2ZycsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaWNvbi5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJY29uQ29tcG9uZW50IGltcGxlbWVudHMgSUljb24sIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBASW5wdXQoKSBhdHRyaWJ1dGVzOiBhbnkgPSB7cm9sZTogJ2ltZyd9O1xyXG4gIEBJbnB1dCgpIGNvbnRlbnQ/OiBzdHJpbmcgfCBzdHJpbmdbXSB8IGFueVtdO1xyXG4gIEBJbnB1dCgpIHNpemU6IEljb25TaXplID0gJyc7XHJcbiAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdXNlID0gJyc7XHJcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3Nlcz86IHN0cmluZyB8IHN0cmluZ1tdIHwgU2V0PHN0cmluZz4gfCB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gPSAnJztcclxuICBASW5wdXQoKSB3aWR0aD86IHN0cmluZztcclxuICBASW5wdXQoKSBoZWlnaHQ/OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IG5hbWUobmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9uYW1lID0gbmFtZS5pbmNsdWRlcygnLScpID8gdGhpcy50b0NhbWVsQ2FzZShuYW1lKSA6IG5hbWU7XHJcbiAgfVxyXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfbmFtZSE6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgdmlld0JveCh2aWV3Qm94OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3ZpZXdCb3ggPSB2aWV3Qm94O1xyXG4gIH1cclxuICBnZXQgdmlld0JveCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdCb3ggPz8gdGhpcy5zY2FsZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfdmlld0JveCE6IHN0cmluZztcclxuXHJcbiAgQFZpZXdDaGlsZCgnc3ZnRWxlbWVudCcsIHtyZWFkOiBFbGVtZW50UmVmfSkgc3ZnRWxlbWVudFJlZiE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGdldCBpbm5lckh0bWwoKTogU2FmZUh0bWwge1xyXG4gICAgY29uc3QgY29kZSA9IEFycmF5LmlzQXJyYXkodGhpcy5jb2RlKSA/IHRoaXMuY29kZVsxXSB8fCB0aGlzLmNvZGVbMF0gOiB0aGlzLmNvZGUgPz8gJyc7XHJcbiAgICAvLyB0b2RvIHByb3BlciBzYW5pdGl6ZVxyXG4gICAgLy8gY29uc3Qgc2FuaXRpemVkID0gdGhpcy5zYW5pdGl6ZXIuc2FuaXRpemUoU2VjdXJpdHlDb250ZXh0LkhUTUwsIGNvZGUpO1xyXG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKCh0aGlzLnRpdGxlQ29kZSArIGNvZGUpID8/ICcnKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgIHByaXZhdGUgaWNvblNldDogSWNvblNldFNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNwbGF5JywgJ25vbmUnKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5mb3JFYWNoKChpdGVtOiBzdHJpbmcpID0+IHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnN2Z0VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgaXRlbSk7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHBhcmVudEVsZW1lbnQgPSB0aGlzLnJlbmRlcmVyLnBhcmVudE5vZGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgY29uc3Qgc3ZnRWxlbWVudCA9IHRoaXMuc3ZnRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUocGFyZW50RWxlbWVudCwgc3ZnRWxlbWVudCwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChwYXJlbnRFbGVtZW50LCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBnZXQgdGl0bGVDb2RlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50aXRsZSA/IGA8dGl0bGU+JHt0aGlzLnRpdGxlfTwvdGl0bGU+YCA6ICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNvZGUoKTogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKHRoaXMuY29udGVudCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb250ZW50O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaWNvblNldCAmJiB0aGlzLm5hbWUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaWNvblNldC5nZXRJY29uKHRoaXMubmFtZSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5uYW1lICYmICF0aGlzLmljb25TZXQ/Lmljb25zW3RoaXMubmFtZV0pXHJcbiAgICBjb25zb2xlLndhcm4oYGMtaWNvbiBjb21wb25lbnQ6IGljb24gbmFtZSAnJHt0aGlzLm5hbWV9JyBkb2VzIG5vdCBleGlzdCBmb3IgSWNvblNldCBzZXJ2aWNlLiBgICtcclxuICAgICAgYFRvIHVzZSBpY29uIGJ5ICduYW1lJyBwcm9wIHlvdSBuZWVkIHRvIGFkZCBpdCB0byBJY29uU2V0IHNlcnZpY2UuIFxcbmAsXHJcbiAgICAgIHRoaXMubmFtZVxyXG4gICAgKTtcclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgc2NhbGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMuY29kZSkgJiYgdGhpcy5jb2RlLmxlbmd0aCA+IDEgPyBgMCAwICR7dGhpcy5jb2RlWzBdfWAgOiAnMCAwIDY0IDY0JztcclxuICB9XHJcblxyXG4gIGdldCBjb21wdXRlZFNpemUoKTogRXhjbHVkZTxJY29uU2l6ZSwgJ2N1c3RvbSc+IHwgdW5kZWZpbmVkIHtcclxuICAgIGNvbnN0IGFkZEN1c3RvbSA9ICF0aGlzLnNpemUgJiYgKHRoaXMud2lkdGggfHwgdGhpcy5oZWlnaHQpO1xyXG4gICAgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gJ2N1c3RvbScgfHwgYWRkQ3VzdG9tID8gJ2N1c3RvbS1zaXplJyA6IHRoaXMuc2l6ZTtcclxuICB9XHJcblxyXG4gIGdldCBjb21wdXRlZENsYXNzZXMoKTogYW55IHtcclxuICAgIGNvbnN0IGNsYXNzZXMgPSB7XHJcbiAgICAgIGljb246IHRydWUsXHJcbiAgICAgIFtgaWNvbi0ke3RoaXMuY29tcHV0ZWRTaXplfWBdOiAhIXRoaXMuY29tcHV0ZWRTaXplXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuICEhdGhpcy5jdXN0b21DbGFzc2VzID8gdGhpcy5jdXN0b21DbGFzc2VzIDogY2xhc3NlcztcclxuICB9XHJcblxyXG4gIHRvQ2FtZWxDYXNlKHN0cjogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiBzdHIucmVwbGFjZSgvKFstX11bYS16MC05XSkvaWcsICgkMTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIHJldHVybiAkMS50b1VwcGVyQ2FzZSgpLnJlcGxhY2UoJy0nLCAnJyk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPHN2ZyAqbmdJZj1cIighdXNlKSAmJiAoISFjb2RlKVwiXHJcbiAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgW2F0dHIud2lkdGhdPVwid2lkdGhcIlxyXG4gICAgIFthdHRyLmhlaWdodF09XCJoZWlnaHQgfHwgd2lkdGhcIlxyXG4gICAgIFthdHRyLnZpZXdCb3hdPVwidmlld0JveFwiXHJcbiAgICAgW2lubmVySHRtbF09XCJpbm5lckh0bWxcIlxyXG4gICAgIFtuZ0NsYXNzXT1cImNvbXB1dGVkQ2xhc3Nlc1wiXHJcbiAgICAgW2NIdG1sQXR0cl09XCJhdHRyaWJ1dGVzXCJcclxuICAgICByb2xlPVwiaW1nXCJcclxuICAgICBwb2ludGVyLWV2ZW50cz1cIm5vbmVcIlxyXG4gICAgICNzdmdFbGVtZW50XHJcbj5cclxuPC9zdmc+XHJcblxyXG48c3ZnICpuZ0lmPVwidXNlXCJcclxuICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICBbYXR0ci53aWR0aF09XCJ3aWR0aFwiXHJcbiAgICAgW2F0dHIuaGVpZ2h0XT1cImhlaWdodCB8fCB3aWR0aFwiXHJcbiAgICAgW25nQ2xhc3NdPVwiY29tcHV0ZWRDbGFzc2VzXCJcclxuICAgICBbY0h0bWxBdHRyXT1cImF0dHJpYnV0ZXNcIlxyXG4gICAgIHJvbGU9XCJpbWdcIlxyXG4gICAgIHBvaW50ZXItZXZlbnRzPVwibm9uZVwiXHJcbj5cclxuICA8dXNlIFthdHRyLmhyZWZdPVwidXNlXCI+PC91c2U+XHJcbjwvc3ZnPlxyXG4iXX0=
|
|
1
|
+
import { Component, ElementRef, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/platform-browser";
|
|
4
|
+
import * as i2 from "../icon-set";
|
|
5
|
+
import * as i3 from "@angular/common";
|
|
6
|
+
import * as i4 from "../shared/html-attr.directive";
|
|
7
|
+
export class IconComponent {
|
|
8
|
+
set name(name) {
|
|
9
|
+
this._name = name.includes('-') ? this.toCamelCase(name) : name;
|
|
10
|
+
}
|
|
11
|
+
get name() {
|
|
12
|
+
return this._name;
|
|
13
|
+
}
|
|
14
|
+
set viewBox(viewBox) {
|
|
15
|
+
this._viewBox = viewBox;
|
|
16
|
+
}
|
|
17
|
+
get viewBox() {
|
|
18
|
+
return this._viewBox ?? this.scale;
|
|
19
|
+
}
|
|
20
|
+
get innerHtml() {
|
|
21
|
+
const code = Array.isArray(this.code) ? this.code[1] || this.code[0] : this.code ?? '';
|
|
22
|
+
// todo proper sanitize
|
|
23
|
+
// const sanitized = this.sanitizer.sanitize(SecurityContext.HTML, code);
|
|
24
|
+
return this.sanitizer.bypassSecurityTrustHtml((this.titleCode + code) ?? '');
|
|
25
|
+
}
|
|
26
|
+
constructor(renderer, elementRef, sanitizer, iconSet) {
|
|
27
|
+
this.renderer = renderer;
|
|
28
|
+
this.elementRef = elementRef;
|
|
29
|
+
this.sanitizer = sanitizer;
|
|
30
|
+
this.iconSet = iconSet;
|
|
31
|
+
this.attributes = { role: 'img' };
|
|
32
|
+
this.size = '';
|
|
33
|
+
this.use = '';
|
|
34
|
+
this.customClasses = '';
|
|
35
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'none');
|
|
36
|
+
}
|
|
37
|
+
ngAfterViewInit() {
|
|
38
|
+
this.elementRef.nativeElement.classList.forEach((item) => {
|
|
39
|
+
this.renderer.addClass(this.svgElementRef.nativeElement, item);
|
|
40
|
+
});
|
|
41
|
+
const parentElement = this.renderer.parentNode(this.elementRef.nativeElement);
|
|
42
|
+
const svgElement = this.svgElementRef.nativeElement;
|
|
43
|
+
this.renderer.insertBefore(parentElement, svgElement, this.elementRef.nativeElement);
|
|
44
|
+
this.renderer.removeChild(parentElement, this.elementRef.nativeElement);
|
|
45
|
+
}
|
|
46
|
+
get titleCode() {
|
|
47
|
+
return this.title ? `<title>${this.title}</title>` : '';
|
|
48
|
+
}
|
|
49
|
+
get code() {
|
|
50
|
+
if (this.content) {
|
|
51
|
+
return this.content;
|
|
52
|
+
}
|
|
53
|
+
if (this.iconSet && this.name) {
|
|
54
|
+
return this.iconSet.getIcon(this.name);
|
|
55
|
+
}
|
|
56
|
+
if (this.name && !this.iconSet?.icons[this.name])
|
|
57
|
+
console.warn(`c-icon component: icon name '${this.name}' does not exist for IconSet service. ` +
|
|
58
|
+
`To use icon by 'name' prop you need to add it to IconSet service. \n`, this.name);
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
get scale() {
|
|
62
|
+
return Array.isArray(this.code) && this.code.length > 1 ? `0 0 ${this.code[0]}` : '0 0 64 64';
|
|
63
|
+
}
|
|
64
|
+
get computedSize() {
|
|
65
|
+
const addCustom = !this.size && (this.width || this.height);
|
|
66
|
+
return this.size === 'custom' || addCustom ? 'custom-size' : this.size;
|
|
67
|
+
}
|
|
68
|
+
get computedClasses() {
|
|
69
|
+
const classes = {
|
|
70
|
+
icon: true,
|
|
71
|
+
[`icon-${this.computedSize}`]: !!this.computedSize
|
|
72
|
+
};
|
|
73
|
+
return !!this.customClasses ? this.customClasses : classes;
|
|
74
|
+
}
|
|
75
|
+
toCamelCase(str) {
|
|
76
|
+
return str.replace(/([-_][a-z0-9])/ig, ($1) => {
|
|
77
|
+
return $1.toUpperCase().replace('-', '');
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
IconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: IconComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.DomSanitizer }, { token: i2.IconSetService }], target: i0.ɵɵFactoryTarget.Component });
|
|
82
|
+
IconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: IconComponent, selector: "c-icon", inputs: { attributes: "attributes", content: "content", size: "size", title: "title", use: "use", customClasses: "customClasses", width: "width", height: "height", name: "name", viewBox: "viewBox" }, viewQueries: [{ propertyName: "svgElementRef", first: true, predicate: ["svgElement"], descendants: true, read: ElementRef }], ngImport: i0, template: "<svg *ngIf=\"(!use) && (!!code)\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.width]=\"width\"\n [attr.height]=\"height || width\"\n [attr.viewBox]=\"viewBox\"\n [innerHtml]=\"innerHtml\"\n [ngClass]=\"computedClasses\"\n [cHtmlAttr]=\"attributes\"\n role=\"img\"\n pointer-events=\"none\"\n #svgElement\n>\n</svg>\n\n<svg *ngIf=\"use\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.width]=\"width\"\n [attr.height]=\"height || width\"\n [ngClass]=\"computedClasses\"\n [cHtmlAttr]=\"attributes\"\n role=\"img\"\n pointer-events=\"none\"\n>\n <use [attr.href]=\"use\"></use>\n</svg>\n", styles: [".icon{display:inline-block;color:inherit;text-align:center;vertical-align:-.125rem;fill:currentColor}.icon:not(.icon-c-s):not(.icon-custom-size){width:1rem;height:1rem;font-size:1rem}.icon:not(.icon-c-s):not(.icon-custom-size).icon-xxl{width:2rem;height:2rem;font-size:2rem}.icon:not(.icon-c-s):not(.icon-custom-size).icon-xl{width:1.5rem;height:1.5rem;font-size:1.5rem}.icon:not(.icon-c-s):not(.icon-custom-size).icon-lg{width:1.25rem;height:1.25rem;font-size:1.25rem}.icon:not(.icon-c-s):not(.icon-custom-size).icon-sm{width:.875rem;height:.875rem;font-size:.875rem}.icon:not(.icon-c-s):not(.icon-custom-size).icon-3xl{width:3rem;height:3rem;font-size:3rem}.icon:not(.icon-c-s):not(.icon-custom-size).icon-4xl{width:4rem;height:4rem;font-size:4rem}.icon:not(.icon-c-s):not(.icon-custom-size).icon-5xl{width:5rem;height:5rem;font-size:5rem}.icon:not(.icon-c-s):not(.icon-custom-size).icon-6xl{width:6rem;height:6rem;font-size:6rem}.icon:not(.icon-c-s):not(.icon-custom-size).icon-7xl{width:7rem;height:7rem;font-size:7rem}.icon:not(.icon-c-s):not(.icon-custom-size).icon-8xl{width:8rem;height:8rem;font-size:8rem}.icon:not(.icon-c-s):not(.icon-custom-size).icon-9xl{width:9rem;height:9rem;font-size:9rem}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.HtmlAttributesDirective, selector: "[cHtmlAttr]", inputs: ["cHtmlAttr"], exportAs: ["cHtmlAttr"] }] });
|
|
83
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: IconComponent, decorators: [{
|
|
84
|
+
type: Component,
|
|
85
|
+
args: [{ selector: 'c-icon', template: "<svg *ngIf=\"(!use) && (!!code)\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.width]=\"width\"\n [attr.height]=\"height || width\"\n [attr.viewBox]=\"viewBox\"\n [innerHtml]=\"innerHtml\"\n [ngClass]=\"computedClasses\"\n [cHtmlAttr]=\"attributes\"\n role=\"img\"\n pointer-events=\"none\"\n #svgElement\n>\n</svg>\n\n<svg *ngIf=\"use\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.width]=\"width\"\n [attr.height]=\"height || width\"\n [ngClass]=\"computedClasses\"\n [cHtmlAttr]=\"attributes\"\n role=\"img\"\n pointer-events=\"none\"\n>\n <use [attr.href]=\"use\"></use>\n</svg>\n", styles: [".icon{display:inline-block;color:inherit;text-align:center;vertical-align:-.125rem;fill:currentColor}.icon:not(.icon-c-s):not(.icon-custom-size){width:1rem;height:1rem;font-size:1rem}.icon:not(.icon-c-s):not(.icon-custom-size).icon-xxl{width:2rem;height:2rem;font-size:2rem}.icon:not(.icon-c-s):not(.icon-custom-size).icon-xl{width:1.5rem;height:1.5rem;font-size:1.5rem}.icon:not(.icon-c-s):not(.icon-custom-size).icon-lg{width:1.25rem;height:1.25rem;font-size:1.25rem}.icon:not(.icon-c-s):not(.icon-custom-size).icon-sm{width:.875rem;height:.875rem;font-size:.875rem}.icon:not(.icon-c-s):not(.icon-custom-size).icon-3xl{width:3rem;height:3rem;font-size:3rem}.icon:not(.icon-c-s):not(.icon-custom-size).icon-4xl{width:4rem;height:4rem;font-size:4rem}.icon:not(.icon-c-s):not(.icon-custom-size).icon-5xl{width:5rem;height:5rem;font-size:5rem}.icon:not(.icon-c-s):not(.icon-custom-size).icon-6xl{width:6rem;height:6rem;font-size:6rem}.icon:not(.icon-c-s):not(.icon-custom-size).icon-7xl{width:7rem;height:7rem;font-size:7rem}.icon:not(.icon-c-s):not(.icon-custom-size).icon-8xl{width:8rem;height:8rem;font-size:8rem}.icon:not(.icon-c-s):not(.icon-custom-size).icon-9xl{width:9rem;height:9rem;font-size:9rem}\n"] }]
|
|
86
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.DomSanitizer }, { type: i2.IconSetService }]; }, propDecorators: { attributes: [{
|
|
87
|
+
type: Input
|
|
88
|
+
}], content: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}], size: [{
|
|
91
|
+
type: Input
|
|
92
|
+
}], title: [{
|
|
93
|
+
type: Input
|
|
94
|
+
}], use: [{
|
|
95
|
+
type: Input
|
|
96
|
+
}], customClasses: [{
|
|
97
|
+
type: Input
|
|
98
|
+
}], width: [{
|
|
99
|
+
type: Input
|
|
100
|
+
}], height: [{
|
|
101
|
+
type: Input
|
|
102
|
+
}], name: [{
|
|
103
|
+
type: Input
|
|
104
|
+
}], viewBox: [{
|
|
105
|
+
type: Input
|
|
106
|
+
}], svgElementRef: [{
|
|
107
|
+
type: ViewChild,
|
|
108
|
+
args: ['svgElement', { read: ElementRef }]
|
|
109
|
+
}] } });
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktaWNvbnMtYW5ndWxhci9zcmMvbGliL2ljb24vaWNvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktaWNvbnMtYW5ndWxhci9zcmMvbGliL2ljb24vaWNvbi5jb21wb25lbnQuc3ZnIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQWEsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFVbEcsTUFBTSxPQUFPLGFBQWE7SUFXeEIsSUFDSSxJQUFJLENBQUMsSUFBWTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNsRSxDQUFDO0lBQ0QsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFHRCxJQUNJLE9BQU8sQ0FBQyxPQUFlO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNyQyxDQUFDO0lBS0QsSUFBSSxTQUFTO1FBQ1gsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFB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SztnQkFVRixPQUFPO3NCQURWLEtBQUs7Z0JBU3VDLGFBQWE7c0JBQXpELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFJlbmRlcmVyMiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBJY29uU2V0U2VydmljZSB9IGZyb20gJy4uL2ljb24tc2V0JztcbmltcG9ydCB7IEljb25TaXplLCBJSWNvbiB9IGZyb20gJy4vaWNvbi5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjLWljb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vaWNvbi5jb21wb25lbnQuc3ZnJyxcbiAgc3R5bGVVcmxzOiBbJy4vaWNvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEljb25Db21wb25lbnQgaW1wbGVtZW50cyBJSWNvbiwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgQElucHV0KCkgYXR0cmlidXRlczogYW55ID0ge3JvbGU6ICdpbWcnfTtcbiAgQElucHV0KCkgY29udGVudD86IHN0cmluZyB8IHN0cmluZ1tdIHwgYW55W107XG4gIEBJbnB1dCgpIHNpemU6IEljb25TaXplID0gJyc7XG4gIEBJbnB1dCgpIHRpdGxlPzogc3RyaW5nO1xuICBASW5wdXQoKSB1c2UgPSAnJztcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3Nlcz86IHN0cmluZyB8IHN0cmluZ1tdIHwgU2V0PHN0cmluZz4gfCB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gPSAnJztcbiAgQElucHV0KCkgd2lkdGg/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGhlaWdodD86IHN0cmluZztcblxuICBASW5wdXQoKVxuICBzZXQgbmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9uYW1lID0gbmFtZS5pbmNsdWRlcygnLScpID8gdGhpcy50b0NhbWVsQ2FzZShuYW1lKSA6IG5hbWU7XG4gIH1cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcbiAgfVxuICBwcml2YXRlIF9uYW1lITogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHNldCB2aWV3Qm94KHZpZXdCb3g6IHN0cmluZykge1xuICAgIHRoaXMuX3ZpZXdCb3ggPSB2aWV3Qm94O1xuICB9XG4gIGdldCB2aWV3Qm94KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdCb3ggPz8gdGhpcy5zY2FsZTtcbiAgfVxuICBwcml2YXRlIF92aWV3Qm94ITogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoJ3N2Z0VsZW1lbnQnLCB7cmVhZDogRWxlbWVudFJlZn0pIHN2Z0VsZW1lbnRSZWYhOiBFbGVtZW50UmVmO1xuXG4gIGdldCBpbm5lckh0bWwoKTogU2FmZUh0bWwge1xuICAgIGNvbnN0IGNvZGUgPSBBcnJheS5pc0FycmF5KHRoaXMuY29kZSkgPyB0aGlzLmNvZGVbMV0gfHwgdGhpcy5jb2RlWzBdIDogdGhpcy5jb2RlID8/ICcnO1xuICAgIC8vIHRvZG8gcHJvcGVyIHNhbml0aXplXG4gICAgLy8gY29uc3Qgc2FuaXRpemVkID0gdGhpcy5zYW5pdGl6ZXIuc2FuaXRpemUoU2VjdXJpdHlDb250ZXh0LkhUTUwsIGNvZGUpO1xuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCgodGhpcy50aXRsZUNvZGUgKyBjb2RlKSA/PyAnJyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBpY29uU2V0OiBJY29uU2V0U2VydmljZVxuICApIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsICdub25lJyk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmZvckVhY2goKGl0ZW06IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnN2Z0VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgaXRlbSk7XG4gICAgfSk7XG4gICAgY29uc3QgcGFyZW50RWxlbWVudCA9IHRoaXMucmVuZGVyZXIucGFyZW50Tm9kZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgY29uc3Qgc3ZnRWxlbWVudCA9IHRoaXMuc3ZnRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMucmVuZGVyZXIuaW5zZXJ0QmVmb3JlKHBhcmVudEVsZW1lbnQsIHN2Z0VsZW1lbnQsIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKHBhcmVudEVsZW1lbnQsIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIGdldCB0aXRsZUNvZGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50aXRsZSA/IGA8dGl0bGU+JHt0aGlzLnRpdGxlfTwvdGl0bGU+YCA6ICcnO1xuICB9XG5cbiAgZ2V0IGNvZGUoKTogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLmNvbnRlbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQ7XG4gICAgfVxuICAgIGlmICh0aGlzLmljb25TZXQgJiYgdGhpcy5uYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5pY29uU2V0LmdldEljb24odGhpcy5uYW1lKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubmFtZSAmJiAhdGhpcy5pY29uU2V0Py5pY29uc1t0aGlzLm5hbWVdKVxuICAgIGNvbnNvbGUud2FybihgYy1pY29uIGNvbXBvbmVudDogaWNvbiBuYW1lICcke3RoaXMubmFtZX0nIGRvZXMgbm90IGV4aXN0IGZvciBJY29uU2V0IHNlcnZpY2UuIGAgK1xuICAgICAgYFRvIHVzZSBpY29uIGJ5ICduYW1lJyBwcm9wIHlvdSBuZWVkIHRvIGFkZCBpdCB0byBJY29uU2V0IHNlcnZpY2UuIFxcbmAsXG4gICAgICB0aGlzLm5hbWVcbiAgICApO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgc2NhbGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLmNvZGUpICYmIHRoaXMuY29kZS5sZW5ndGggPiAxID8gYDAgMCAke3RoaXMuY29kZVswXX1gIDogJzAgMCA2NCA2NCc7XG4gIH1cblxuICBnZXQgY29tcHV0ZWRTaXplKCk6IEV4Y2x1ZGU8SWNvblNpemUsICdjdXN0b20nPiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgYWRkQ3VzdG9tID0gIXRoaXMuc2l6ZSAmJiAodGhpcy53aWR0aCB8fCB0aGlzLmhlaWdodCk7XG4gICAgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gJ2N1c3RvbScgfHwgYWRkQ3VzdG9tID8gJ2N1c3RvbS1zaXplJyA6IHRoaXMuc2l6ZTtcbiAgfVxuXG4gIGdldCBjb21wdXRlZENsYXNzZXMoKTogYW55IHtcbiAgICBjb25zdCBjbGFzc2VzID0ge1xuICAgICAgaWNvbjogdHJ1ZSxcbiAgICAgIFtgaWNvbi0ke3RoaXMuY29tcHV0ZWRTaXplfWBdOiAhIXRoaXMuY29tcHV0ZWRTaXplXG4gICAgfTtcbiAgICByZXR1cm4gISF0aGlzLmN1c3RvbUNsYXNzZXMgPyB0aGlzLmN1c3RvbUNsYXNzZXMgOiBjbGFzc2VzO1xuICB9XG5cbiAgdG9DYW1lbENhc2Uoc3RyOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvKFstX11bYS16MC05XSkvaWcsICgkMTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gJDEudG9VcHBlckNhc2UoKS5yZXBsYWNlKCctJywgJycpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8c3ZnICpuZ0lmPVwiKCF1c2UpICYmICghIWNvZGUpXCJcbiAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgIFthdHRyLndpZHRoXT1cIndpZHRoXCJcbiAgICAgW2F0dHIuaGVpZ2h0XT1cImhlaWdodCB8fCB3aWR0aFwiXG4gICAgIFthdHRyLnZpZXdCb3hdPVwidmlld0JveFwiXG4gICAgIFtpbm5lckh0bWxdPVwiaW5uZXJIdG1sXCJcbiAgICAgW25nQ2xhc3NdPVwiY29tcHV0ZWRDbGFzc2VzXCJcbiAgICAgW2NIdG1sQXR0cl09XCJhdHRyaWJ1dGVzXCJcbiAgICAgcm9sZT1cImltZ1wiXG4gICAgIHBvaW50ZXItZXZlbnRzPVwibm9uZVwiXG4gICAgICNzdmdFbGVtZW50XG4+XG48L3N2Zz5cblxuPHN2ZyAqbmdJZj1cInVzZVwiXG4gICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICBbYXR0ci53aWR0aF09XCJ3aWR0aFwiXG4gICAgIFthdHRyLmhlaWdodF09XCJoZWlnaHQgfHwgd2lkdGhcIlxuICAgICBbbmdDbGFzc109XCJjb21wdXRlZENsYXNzZXNcIlxuICAgICBbY0h0bWxBdHRyXT1cImF0dHJpYnV0ZXNcIlxuICAgICByb2xlPVwiaW1nXCJcbiAgICAgcG9pbnRlci1ldmVudHM9XCJub25lXCJcbj5cbiAgPHVzZSBbYXR0ci5ocmVmXT1cInVzZVwiPjwvdXNlPlxuPC9zdmc+XG4iXX0=
|