@loyalty-cloud/ui-icons 1.1.72 → 1.1.74

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.
@@ -1,6 +1,7 @@
1
1
  import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "./svg-icon-cache.service";
4
+ import * as i2 from "@angular/common";
4
5
  export class LcIconComponent {
5
6
  constructor(iconRegistry, cdr) {
6
7
  this.iconRegistry = iconRegistry;
@@ -9,6 +10,7 @@ export class LcIconComponent {
9
10
  this.category = '';
10
11
  this.size = 24;
11
12
  this.color = 'currentColor';
13
+ this.strokeColor = '';
12
14
  this.disabled = false;
13
15
  this.svgIcon = null;
14
16
  this.disabledColor = '#e0e0e0';
@@ -29,25 +31,27 @@ export class LcIconComponent {
29
31
  ? `../assets/icons/${this.category}/${this.name}.svg`
30
32
  : `../assets/icons/${this.name}.svg`;
31
33
  this.iconRegistry
32
- .registerIcon(this.name, iconPath, this.size, this.color, this.disabled) // Dynamically register and fetch the icon
34
+ .registerIcon(this.name, iconPath, this.size, this.color, this.disabled, this.strokeColor) // Dynamically register and fetch the icon
33
35
  .subscribe((icon) => {
34
36
  this.svgIcon = icon;
35
37
  this.cdr.detectChanges();
36
38
  }, (error) => {
39
+ this.svgIcon = null;
37
40
  console.error(`Error loading icon "${this.name}":`, error);
38
41
  });
39
42
  }
40
43
  }
41
44
  LcIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LcIconComponent, deps: [{ token: i1.SvgIconCacheService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
42
- LcIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: LcIconComponent, selector: "lc-icon", inputs: { name: "name", category: "category", size: "size", color: "color", disabled: "disabled" }, usesOnChanges: true, ngImport: i0, template: `
45
+ LcIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: LcIconComponent, selector: "lc-icon", inputs: { name: "name", category: "category", size: "size", color: "color", strokeColor: "strokeColor", disabled: "disabled" }, usesOnChanges: true, ngImport: i0, template: `
43
46
  <div
44
47
  class="icon"
45
48
  [innerHTML]="svgIcon"
46
49
  [style.width.px]="size"
47
50
  [style.height.px]="size"
48
- [style.color]="color">
51
+ [style.color]="color"
52
+ *ngIf="svgIcon">
49
53
  </div>
50
- `, isInline: true, styles: [".icon{display:flex;align-items:center;justify-content:center}\n"], changeDetection: i0.ChangeDetectionStrategy.Default });
54
+ `, isInline: true, styles: [".icon{display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.Default });
51
55
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LcIconComponent, decorators: [{
52
56
  type: Component,
53
57
  args: [{ selector: 'lc-icon', template: `
@@ -56,7 +60,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
56
60
  [innerHTML]="svgIcon"
57
61
  [style.width.px]="size"
58
62
  [style.height.px]="size"
59
- [style.color]="color">
63
+ [style.color]="color"
64
+ *ngIf="svgIcon">
60
65
  </div>
61
66
  `, changeDetection: ChangeDetectionStrategy.Default, styles: [".icon{display:flex;align-items:center;justify-content:center}\n"] }]
62
67
  }], ctorParameters: function () { return [{ type: i1.SvgIconCacheService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { name: [{
@@ -67,7 +72,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
67
72
  type: Input
68
73
  }], color: [{
69
74
  type: Input
75
+ }], strokeColor: [{
76
+ type: Input
70
77
  }], disabled: [{
71
78
  type: Input
72
79
  }] } });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGMtaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9sb3lhbHR5LWNsb3VkLXVpLWljb25zL3NyYy9saWIvbGMtaWNvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUF5QixNQUFNLGVBQWUsQ0FBQzs7O0FBb0JwSCxNQUFNLE9BQU8sZUFBZTtJQVUxQixZQUNVLFlBQWlDLEVBQ2pDLEdBQXNCO1FBRHRCLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNqQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQVh2QixTQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ2xCLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFDdEIsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUNsQixVQUFLLEdBQVcsY0FBYyxDQUFDO1FBQy9CLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFbkMsWUFBTyxHQUFnQyxJQUFJLENBQUM7UUFDNUMsa0JBQWEsR0FBVyxTQUFTLENBQUM7SUFLOUIsQ0FBQztJQUVMLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVPLFFBQVE7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNkLE9BQU8sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixPQUFPO1NBQ1I7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUTtZQUM1QixDQUFDLENBQUMsbUJBQW1CLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksTUFBTTtZQUNyRCxDQUFDLENBQUMsbUJBQW1CLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQztRQUV2QyxJQUFJLENBQUMsWUFBWTthQUNkLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLDBDQUEwQzthQUNsSCxTQUFTLENBQ1IsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNQLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUNGLENBQUM7SUFDTixDQUFDOzs0R0E3Q1UsZUFBZTtnR0FBZixlQUFlLHdLQWRoQjs7Ozs7Ozs7R0FRVDsyRkFNVSxlQUFlO2tCQWhCM0IsU0FBUzsrQkFDRSxTQUFTLFlBQ1Q7Ozs7Ozs7O0dBUVQsbUJBSWdCLHVCQUF1QixDQUFDLE9BQU87MElBR3ZDLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgU3ZnSWNvbkNhY2hlU2VydmljZSB9IGZyb20gJy4vc3ZnLWljb24tY2FjaGUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xjLWljb24nLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgXG4gICAgICBjbGFzcz1cImljb25cIlxuICAgICAgW2lubmVySFRNTF09XCJzdmdJY29uXCIgXG4gICAgICBbc3R5bGUud2lkdGgucHhdPVwic2l6ZVwiIFxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJzaXplXCJcbiAgICAgIFtzdHlsZS5jb2xvcl09XCJjb2xvclwiPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFtcbiAgICAnbGMtaWNvbi5jb21wb25lbnQuc2NzcydcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0XG59KVxuZXhwb3J0IGNsYXNzIExjSWNvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBjYXRlZ29yeTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHNpemU6IG51bWJlciA9IDI0O1xuICBASW5wdXQoKSBjb2xvcjogc3RyaW5nID0gJ2N1cnJlbnRDb2xvcic7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgc3ZnSWNvbjogU2FmZUh0bWwgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcbiAgZGlzYWJsZWRDb2xvcjogc3RyaW5nID0gJyNlMGUwZTAnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaWNvblJlZ2lzdHJ5OiBTdmdJY29uQ2FjaGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHsgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICB0aGlzLmxvYWRJY29uKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxvYWRJY29uKCk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRJY29uKCkge1xuICAgIGlmICghdGhpcy5uYW1lKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0ljb24gbmFtZSBpcyByZXF1aXJlZC4nKTtcbiAgICAgIHRoaXMuc3ZnSWNvbiA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaWNvblBhdGggPSB0aGlzLmNhdGVnb3J5XG4gICAgICA/IGAuLi9hc3NldHMvaWNvbnMvJHt0aGlzLmNhdGVnb3J5fS8ke3RoaXMubmFtZX0uc3ZnYFxuICAgICAgOiBgLi4vYXNzZXRzL2ljb25zLyR7dGhpcy5uYW1lfS5zdmdgO1xuXG4gICAgdGhpcy5pY29uUmVnaXN0cnlcbiAgICAgIC5yZWdpc3Rlckljb24odGhpcy5uYW1lLCBpY29uUGF0aCwgdGhpcy5zaXplLCB0aGlzLmNvbG9yLCB0aGlzLmRpc2FibGVkKSAvLyBEeW5hbWljYWxseSByZWdpc3RlciBhbmQgZmV0Y2ggdGhlIGljb25cbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChpY29uKSA9PiB7XG4gICAgICAgICAgdGhpcy5zdmdJY29uID0gaWNvbjtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIGxvYWRpbmcgaWNvbiBcIiR7dGhpcy5uYW1lfVwiOmAsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxufVxuXG5cblxuIl19
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGMtaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9sb3lhbHR5LWNsb3VkLXVpLWljb25zL3NyYy9saWIvbGMtaWNvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUF5QixNQUFNLGVBQWUsQ0FBQzs7OztBQXFCcEgsTUFBTSxPQUFPLGVBQWU7SUFXMUIsWUFDVSxZQUFpQyxFQUNqQyxHQUFzQjtRQUR0QixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFadkIsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUNsQixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ3RCLFNBQUksR0FBVyxFQUFFLENBQUM7UUFDbEIsVUFBSyxHQUFXLGNBQWMsQ0FBQztRQUMvQixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBRW5DLFlBQU8sR0FBZ0MsSUFBSSxDQUFDO1FBQzVDLGtCQUFhLEdBQVcsU0FBUyxDQUFDO0lBSzlCLENBQUM7SUFFTCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxRQUFRO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsT0FBTztTQUNSO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVE7WUFDNUIsQ0FBQyxDQUFDLG1CQUFtQixJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLE1BQU07WUFDckQsQ0FBQyxDQUFDLG1CQUFtQixJQUFJLENBQUMsSUFBSSxNQUFNLENBQUM7UUFFdkMsSUFBSSxDQUFDLFlBQVk7YUFDZCxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLDBDQUEwQzthQUNwSSxTQUFTLENBQ1IsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNQLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUNGLENBQUM7SUFDTixDQUFDOzs0R0EvQ1UsZUFBZTtnR0FBZixlQUFlLG9NQWZoQjs7Ozs7Ozs7O0dBU1Q7MkZBTVUsZUFBZTtrQkFqQjNCLFNBQVM7K0JBQ0UsU0FBUyxZQUNUOzs7Ozs7Ozs7R0FTVCxtQkFJZ0IsdUJBQXVCLENBQUMsT0FBTzswSUFHdkMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFN2Z0ljb25DYWNoZVNlcnZpY2UgfSBmcm9tICcuL3N2Zy1pY29uLWNhY2hlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsYy1pY29uJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFxuICAgICAgY2xhc3M9XCJpY29uXCJcbiAgICAgIFtpbm5lckhUTUxdPVwic3ZnSWNvblwiIFxuICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInNpemVcIiBcbiAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwic2l6ZVwiXG4gICAgICBbc3R5bGUuY29sb3JdPVwiY29sb3JcIlxuICAgICAgKm5nSWY9XCJzdmdJY29uXCI+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogW1xuICAgICdsYy1pY29uLmNvbXBvbmVudC5zY3NzJ1xuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHRcbn0pXG5leHBvcnQgY2xhc3MgTGNJY29uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGNhdGVnb3J5OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgc2l6ZTogbnVtYmVyID0gMjQ7XG4gIEBJbnB1dCgpIGNvbG9yOiBzdHJpbmcgPSAnY3VycmVudENvbG9yJztcbiAgQElucHV0KCkgc3Ryb2tlQ29sb3I6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHN2Z0ljb246IFNhZmVIdG1sIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG4gIGRpc2FibGVkQ29sb3I6IHN0cmluZyA9ICcjZTBlMGUwJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGljb25SZWdpc3RyeTogU3ZnSWNvbkNhY2hlU2VydmljZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7IH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgdGhpcy5sb2FkSWNvbigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5sb2FkSWNvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkSWNvbigpIHtcbiAgICBpZiAoIXRoaXMubmFtZSkge1xuICAgICAgY29uc29sZS53YXJuKCdJY29uIG5hbWUgaXMgcmVxdWlyZWQuJyk7XG4gICAgICB0aGlzLnN2Z0ljb24gPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGljb25QYXRoID0gdGhpcy5jYXRlZ29yeVxuICAgICAgPyBgLi4vYXNzZXRzL2ljb25zLyR7dGhpcy5jYXRlZ29yeX0vJHt0aGlzLm5hbWV9LnN2Z2BcbiAgICAgIDogYC4uL2Fzc2V0cy9pY29ucy8ke3RoaXMubmFtZX0uc3ZnYDtcblxuICAgIHRoaXMuaWNvblJlZ2lzdHJ5XG4gICAgICAucmVnaXN0ZXJJY29uKHRoaXMubmFtZSwgaWNvblBhdGgsIHRoaXMuc2l6ZSwgdGhpcy5jb2xvciwgdGhpcy5kaXNhYmxlZCwgdGhpcy5zdHJva2VDb2xvcikgLy8gRHluYW1pY2FsbHkgcmVnaXN0ZXIgYW5kIGZldGNoIHRoZSBpY29uXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoaWNvbikgPT4ge1xuICAgICAgICAgIHRoaXMuc3ZnSWNvbiA9IGljb247XG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICB0aGlzLnN2Z0ljb24gPSBudWxsO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIGxvYWRpbmcgaWNvbiBcIiR7dGhpcy5uYW1lfVwiOmAsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxufVxuXG5cblxuIl19
@@ -11,8 +11,8 @@ export class SvgIconCacheService {
11
11
  this.iconCache = new Map();
12
12
  this.disabledColor = '#e0e0e0';
13
13
  }
14
- registerIcon(name, url, size, color, disabled = false) {
15
- const cacheKey = `${name}-${size}-${color}-${disabled}`; // Unique cache key
14
+ registerIcon(name, url, size, color, disabled = false, strokeColor) {
15
+ const cacheKey = `${name}-${size}-${color}-${disabled}-${strokeColor}`; // Unique cache key
16
16
  if (this.iconCache.has(cacheKey)) {
17
17
  return of(this.iconCache.get(cacheKey)); // Return the cached icon
18
18
  }
@@ -25,12 +25,21 @@ export class SvgIconCacheService {
25
25
  svgElement.setAttribute('width', `${size}`);
26
26
  svgElement.setAttribute('height', `${size}`);
27
27
  // Update color only for elements without a 'fill' attribute
28
- const elementsToUpdate = svgElement.querySelectorAll('path, circle, rect, polygon, ellipse');
29
- elementsToUpdate.forEach((el) => {
30
- if (!el.hasAttribute('fill')) {
31
- el.setAttribute('fill', disabled ? this.disabledColor : color || 'black');
32
- }
33
- });
28
+ if (!strokeColor) {
29
+ const elementsToUpdate = svgElement.querySelectorAll('path, circle, rect, polygon, ellipse');
30
+ elementsToUpdate.forEach((el) => {
31
+ if (!el.hasAttribute('fill')) {
32
+ el.setAttribute('fill', disabled ? this.disabledColor : color || 'black');
33
+ }
34
+ });
35
+ }
36
+ // If color is NOT present but strokeColor is provided, apply it to elements with stroke
37
+ if ((!color || color === 'currentColor') && strokeColor) {
38
+ const elementsWithStroke = svgElement.querySelectorAll('[stroke]');
39
+ elementsWithStroke.forEach((el) => {
40
+ el.setAttribute('stroke', strokeColor);
41
+ });
42
+ }
34
43
  const serializedSvg = new XMLSerializer().serializeToString(svgElement);
35
44
  const sanitizedSvg = this.sanitizer.bypassSecurityTrustHtml(serializedSvg);
36
45
  this.iconCache.set(cacheKey, sanitizedSvg); // Cache using the unique key
@@ -48,4 +57,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
48
57
  providedIn: 'root'
49
58
  }]
50
59
  }], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: i2.HttpClient }]; } });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWljb24tY2FjaGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2xveWFsdHktY2xvdWQtdWktaWNvbnMvc3JjL2xpYi9zdmctaWNvbi1jYWNoZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFLckMsTUFBTSxPQUFPLG1CQUFtQjtJQUk5QixZQUFvQixTQUF1QixFQUFVLElBQWdCO1FBQWpELGNBQVMsR0FBVCxTQUFTLENBQWM7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBSDdELGNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBb0IsQ0FBQztRQUNoRCxrQkFBYSxHQUFXLFNBQVMsQ0FBQztJQUV1QyxDQUFDO0lBRTFFLFlBQVksQ0FBQyxJQUFZLEVBQUUsR0FBVyxFQUFFLElBQVksRUFBRSxLQUFhLEVBQUUsV0FBb0IsS0FBSztRQUM1RixNQUFNLFFBQVEsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUMsbUJBQW1CO1FBRTVFLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDaEMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFFLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjtTQUNwRTtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUN0RCxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNWLE1BQU0sTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7WUFDL0IsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFDekQsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUU1QyxJQUFJLFVBQVUsRUFBRTtnQkFDZCx5QkFBeUI7Z0JBQ3pCLFVBQVUsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDNUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUU3Qyw0REFBNEQ7Z0JBQzVELE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixDQUFDLHNDQUFzQyxDQUFDLENBQUM7Z0JBQzdGLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO29CQUM5QixJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRTt3QkFDNUIsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLENBQUM7cUJBQzNFO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUVILE1BQU0sYUFBYSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3hFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzNFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLDZCQUE2QjtnQkFDekUsT0FBTyxZQUFZLENBQUM7YUFDckI7WUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOztnSEF6Q1UsbUJBQW1CO29IQUFuQixtQkFBbUIsY0FGbEIsTUFBTTsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFN2Z0ljb25DYWNoZVNlcnZpY2Uge1xuICBwcml2YXRlIGljb25DYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBTYWZlSHRtbD4oKTtcbiAgZGlzYWJsZWRDb2xvcjogc3RyaW5nID0gJyNlMGUwZTAnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkgeyB9XG5cbiAgcmVnaXN0ZXJJY29uKG5hbWU6IHN0cmluZywgdXJsOiBzdHJpbmcsIHNpemU6IG51bWJlciwgY29sb3I6IHN0cmluZywgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZSk6IE9ic2VydmFibGU8U2FmZUh0bWw+IHtcbiAgICBjb25zdCBjYWNoZUtleSA9IGAke25hbWV9LSR7c2l6ZX0tJHtjb2xvcn0tJHtkaXNhYmxlZH1gOyAvLyBVbmlxdWUgY2FjaGUga2V5XG5cbiAgICBpZiAodGhpcy5pY29uQ2FjaGUuaGFzKGNhY2hlS2V5KSkge1xuICAgICAgcmV0dXJuIG9mKHRoaXMuaWNvbkNhY2hlLmdldChjYWNoZUtleSkhKTsgLy8gUmV0dXJuIHRoZSBjYWNoZWQgaWNvblxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwgeyByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KS5waXBlKFxuICAgICAgbWFwKChzdmcpID0+IHtcbiAgICAgICAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xuICAgICAgICBjb25zdCBkb2MgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKHN2ZywgJ2ltYWdlL3N2Zyt4bWwnKTtcbiAgICAgICAgY29uc3Qgc3ZnRWxlbWVudCA9IGRvYy5xdWVyeVNlbGVjdG9yKCdzdmcnKTtcblxuICAgICAgICBpZiAoc3ZnRWxlbWVudCkge1xuICAgICAgICAgIC8vIFVwZGF0ZSBzaXplIGF0dHJpYnV0ZXNcbiAgICAgICAgICBzdmdFbGVtZW50LnNldEF0dHJpYnV0ZSgnd2lkdGgnLCBgJHtzaXplfWApO1xuICAgICAgICAgIHN2Z0VsZW1lbnQuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBgJHtzaXplfWApO1xuXG4gICAgICAgICAgLy8gVXBkYXRlIGNvbG9yIG9ubHkgZm9yIGVsZW1lbnRzIHdpdGhvdXQgYSAnZmlsbCcgYXR0cmlidXRlXG4gICAgICAgICAgY29uc3QgZWxlbWVudHNUb1VwZGF0ZSA9IHN2Z0VsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgncGF0aCwgY2lyY2xlLCByZWN0LCBwb2x5Z29uLCBlbGxpcHNlJyk7XG4gICAgICAgICAgZWxlbWVudHNUb1VwZGF0ZS5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFlbC5oYXNBdHRyaWJ1dGUoJ2ZpbGwnKSkge1xuICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCBkaXNhYmxlZCA/IHRoaXMuZGlzYWJsZWRDb2xvciA6IGNvbG9yIHx8ICdibGFjaycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3Qgc2VyaWFsaXplZFN2ZyA9IG5ldyBYTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcoc3ZnRWxlbWVudCk7XG4gICAgICAgICAgY29uc3Qgc2FuaXRpemVkU3ZnID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoc2VyaWFsaXplZFN2Zyk7XG4gICAgICAgICAgdGhpcy5pY29uQ2FjaGUuc2V0KGNhY2hlS2V5LCBzYW5pdGl6ZWRTdmcpOyAvLyBDYWNoZSB1c2luZyB0aGUgdW5pcXVlIGtleVxuICAgICAgICAgIHJldHVybiBzYW5pdGl6ZWRTdmc7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgU1ZHIGNvbnRlbnQgZm9yIGljb246ICR7bmFtZX1gKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWljb24tY2FjaGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2xveWFsdHktY2xvdWQtdWktaWNvbnMvc3JjL2xpYi9zdmctaWNvbi1jYWNoZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFLckMsTUFBTSxPQUFPLG1CQUFtQjtJQUk5QixZQUFvQixTQUF1QixFQUFVLElBQWdCO1FBQWpELGNBQVMsR0FBVCxTQUFTLENBQWM7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBSDdELGNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBb0IsQ0FBQztRQUNoRCxrQkFBYSxHQUFXLFNBQVMsQ0FBQztJQUV1QyxDQUFDO0lBRTFFLFlBQVksQ0FBQyxJQUFZLEVBQUUsR0FBVyxFQUFFLElBQVksRUFBRSxLQUFhLEVBQUUsV0FBb0IsS0FBSyxFQUFFLFdBQWtCO1FBQ2hILE1BQU0sUUFBUSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksUUFBUSxJQUFJLFdBQVcsRUFBRSxDQUFDLENBQUMsbUJBQW1CO1FBRTNGLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDaEMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFFLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjtTQUNwRTtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUN0RCxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNWLE1BQU0sTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7WUFDL0IsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFDekQsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUU1QyxJQUFJLFVBQVUsRUFBRTtnQkFDZCx5QkFBeUI7Z0JBQ3pCLFVBQVUsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDNUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUU3Qyw0REFBNEQ7Z0JBQzVELElBQUcsQ0FBQyxXQUFXLEVBQUU7b0JBQ2YsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsc0NBQXNDLENBQUMsQ0FBQztvQkFDN0YsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7d0JBQzlCLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFOzRCQUM1QixFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsQ0FBQzt5QkFDM0U7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7Z0JBRUQsd0ZBQXdGO2dCQUN4RixJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxLQUFLLGNBQWMsQ0FBQyxJQUFJLFdBQVcsRUFBRTtvQkFDdkQsTUFBTSxrQkFBa0IsR0FBRyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ25FLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO3dCQUNoQyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztvQkFDekMsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7Z0JBRUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDeEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDM0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsNkJBQTZCO2dCQUN6RSxPQUFPLFlBQVksQ0FBQzthQUNyQjtZQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7O2dIQW5EVSxtQkFBbUI7b0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3ZnSWNvbkNhY2hlU2VydmljZSB7XG4gIHByaXZhdGUgaWNvbkNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIFNhZmVIdG1sPigpO1xuICBkaXNhYmxlZENvbG9yOiBzdHJpbmcgPSAnI2UwZTBlMCc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplciwgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7IH1cblxuICByZWdpc3Rlckljb24obmFtZTogc3RyaW5nLCB1cmw6IHN0cmluZywgc2l6ZTogbnVtYmVyLCBjb2xvcjogc3RyaW5nLCBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlLCBzdHJva2VDb2xvcjpzdHJpbmcpOiBPYnNlcnZhYmxlPFNhZmVIdG1sPiB7XG4gICAgY29uc3QgY2FjaGVLZXkgPSBgJHtuYW1lfS0ke3NpemV9LSR7Y29sb3J9LSR7ZGlzYWJsZWR9LSR7c3Ryb2tlQ29sb3J9YDsgLy8gVW5pcXVlIGNhY2hlIGtleVxuXG4gICAgaWYgKHRoaXMuaWNvbkNhY2hlLmhhcyhjYWNoZUtleSkpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLmljb25DYWNoZS5nZXQoY2FjaGVLZXkpISk7IC8vIFJldHVybiB0aGUgY2FjaGVkIGljb25cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSkucGlwZShcbiAgICAgIG1hcCgoc3ZnKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcbiAgICAgICAgY29uc3QgZG9jID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhzdmcsICdpbWFnZS9zdmcreG1sJyk7XG4gICAgICAgIGNvbnN0IHN2Z0VsZW1lbnQgPSBkb2MucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG5cbiAgICAgICAgaWYgKHN2Z0VsZW1lbnQpIHtcbiAgICAgICAgICAvLyBVcGRhdGUgc2l6ZSBhdHRyaWJ1dGVzXG4gICAgICAgICAgc3ZnRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgYCR7c2l6ZX1gKTtcbiAgICAgICAgICBzdmdFbGVtZW50LnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgYCR7c2l6ZX1gKTtcblxuICAgICAgICAgIC8vIFVwZGF0ZSBjb2xvciBvbmx5IGZvciBlbGVtZW50cyB3aXRob3V0IGEgJ2ZpbGwnIGF0dHJpYnV0ZVxuICAgICAgICAgIGlmKCFzdHJva2VDb2xvcikge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudHNUb1VwZGF0ZSA9IHN2Z0VsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgncGF0aCwgY2lyY2xlLCByZWN0LCBwb2x5Z29uLCBlbGxpcHNlJyk7XG4gICAgICAgICAgICBlbGVtZW50c1RvVXBkYXRlLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghZWwuaGFzQXR0cmlidXRlKCdmaWxsJykpIHtcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCBkaXNhYmxlZCA/IHRoaXMuZGlzYWJsZWRDb2xvciA6IGNvbG9yIHx8ICdibGFjaycpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBJZiBjb2xvciBpcyBOT1QgcHJlc2VudCBidXQgc3Ryb2tlQ29sb3IgaXMgcHJvdmlkZWQsIGFwcGx5IGl0IHRvIGVsZW1lbnRzIHdpdGggc3Ryb2tlXG4gICAgICAgICAgaWYgKCghY29sb3IgfHwgY29sb3IgPT09ICdjdXJyZW50Q29sb3InKSAmJiBzdHJva2VDb2xvcikge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudHNXaXRoU3Ryb2tlID0gc3ZnRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbc3Ryb2tlXScpO1xuICAgICAgICAgICAgZWxlbWVudHNXaXRoU3Ryb2tlLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgc3Ryb2tlQ29sb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc2VyaWFsaXplZFN2ZyA9IG5ldyBYTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcoc3ZnRWxlbWVudCk7XG4gICAgICAgICAgY29uc3Qgc2FuaXRpemVkU3ZnID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoc2VyaWFsaXplZFN2Zyk7XG4gICAgICAgICAgdGhpcy5pY29uQ2FjaGUuc2V0KGNhY2hlS2V5LCBzYW5pdGl6ZWRTdmcpOyAvLyBDYWNoZSB1c2luZyB0aGUgdW5pcXVlIGtleVxuICAgICAgICAgIHJldHVybiBzYW5pdGl6ZWRTdmc7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgU1ZHIGNvbnRlbnQgZm9yIGljb246ICR7bmFtZX1gKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -1,5 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, Component, ChangeDetectionStrategy, Input, Pipe, NgModule } from '@angular/core';
3
+ import * as i2$1 from '@angular/common';
3
4
  import { CommonModule } from '@angular/common';
4
5
  import { of } from 'rxjs';
5
6
  import { map } from 'rxjs/operators';
@@ -14,8 +15,8 @@ class SvgIconCacheService {
14
15
  this.iconCache = new Map();
15
16
  this.disabledColor = '#e0e0e0';
16
17
  }
17
- registerIcon(name, url, size, color, disabled = false) {
18
- const cacheKey = `${name}-${size}-${color}-${disabled}`; // Unique cache key
18
+ registerIcon(name, url, size, color, disabled = false, strokeColor) {
19
+ const cacheKey = `${name}-${size}-${color}-${disabled}-${strokeColor}`; // Unique cache key
19
20
  if (this.iconCache.has(cacheKey)) {
20
21
  return of(this.iconCache.get(cacheKey)); // Return the cached icon
21
22
  }
@@ -28,12 +29,21 @@ class SvgIconCacheService {
28
29
  svgElement.setAttribute('width', `${size}`);
29
30
  svgElement.setAttribute('height', `${size}`);
30
31
  // Update color only for elements without a 'fill' attribute
31
- const elementsToUpdate = svgElement.querySelectorAll('path, circle, rect, polygon, ellipse');
32
- elementsToUpdate.forEach((el) => {
33
- if (!el.hasAttribute('fill')) {
34
- el.setAttribute('fill', disabled ? this.disabledColor : color || 'black');
35
- }
36
- });
32
+ if (!strokeColor) {
33
+ const elementsToUpdate = svgElement.querySelectorAll('path, circle, rect, polygon, ellipse');
34
+ elementsToUpdate.forEach((el) => {
35
+ if (!el.hasAttribute('fill')) {
36
+ el.setAttribute('fill', disabled ? this.disabledColor : color || 'black');
37
+ }
38
+ });
39
+ }
40
+ // If color is NOT present but strokeColor is provided, apply it to elements with stroke
41
+ if ((!color || color === 'currentColor') && strokeColor) {
42
+ const elementsWithStroke = svgElement.querySelectorAll('[stroke]');
43
+ elementsWithStroke.forEach((el) => {
44
+ el.setAttribute('stroke', strokeColor);
45
+ });
46
+ }
37
47
  const serializedSvg = new XMLSerializer().serializeToString(svgElement);
38
48
  const sanitizedSvg = this.sanitizer.bypassSecurityTrustHtml(serializedSvg);
39
49
  this.iconCache.set(cacheKey, sanitizedSvg); // Cache using the unique key
@@ -60,6 +70,7 @@ class LcIconComponent {
60
70
  this.category = '';
61
71
  this.size = 24;
62
72
  this.color = 'currentColor';
73
+ this.strokeColor = '';
63
74
  this.disabled = false;
64
75
  this.svgIcon = null;
65
76
  this.disabledColor = '#e0e0e0';
@@ -80,25 +91,27 @@ class LcIconComponent {
80
91
  ? `../assets/icons/${this.category}/${this.name}.svg`
81
92
  : `../assets/icons/${this.name}.svg`;
82
93
  this.iconRegistry
83
- .registerIcon(this.name, iconPath, this.size, this.color, this.disabled) // Dynamically register and fetch the icon
94
+ .registerIcon(this.name, iconPath, this.size, this.color, this.disabled, this.strokeColor) // Dynamically register and fetch the icon
84
95
  .subscribe((icon) => {
85
96
  this.svgIcon = icon;
86
97
  this.cdr.detectChanges();
87
98
  }, (error) => {
99
+ this.svgIcon = null;
88
100
  console.error(`Error loading icon "${this.name}":`, error);
89
101
  });
90
102
  }
91
103
  }
92
104
  LcIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LcIconComponent, deps: [{ token: SvgIconCacheService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
93
- LcIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: LcIconComponent, selector: "lc-icon", inputs: { name: "name", category: "category", size: "size", color: "color", disabled: "disabled" }, usesOnChanges: true, ngImport: i0, template: `
105
+ LcIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: LcIconComponent, selector: "lc-icon", inputs: { name: "name", category: "category", size: "size", color: "color", strokeColor: "strokeColor", disabled: "disabled" }, usesOnChanges: true, ngImport: i0, template: `
94
106
  <div
95
107
  class="icon"
96
108
  [innerHTML]="svgIcon"
97
109
  [style.width.px]="size"
98
110
  [style.height.px]="size"
99
- [style.color]="color">
111
+ [style.color]="color"
112
+ *ngIf="svgIcon">
100
113
  </div>
101
- `, isInline: true, styles: [".icon{display:flex;align-items:center;justify-content:center}\n"], changeDetection: i0.ChangeDetectionStrategy.Default });
114
+ `, isInline: true, styles: [".icon{display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.Default });
102
115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LcIconComponent, decorators: [{
103
116
  type: Component,
104
117
  args: [{ selector: 'lc-icon', template: `
@@ -107,7 +120,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
107
120
  [innerHTML]="svgIcon"
108
121
  [style.width.px]="size"
109
122
  [style.height.px]="size"
110
- [style.color]="color">
123
+ [style.color]="color"
124
+ *ngIf="svgIcon">
111
125
  </div>
112
126
  `, changeDetection: ChangeDetectionStrategy.Default, styles: [".icon{display:flex;align-items:center;justify-content:center}\n"] }]
113
127
  }], ctorParameters: function () { return [{ type: SvgIconCacheService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { name: [{
@@ -118,6 +132,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
118
132
  type: Input
119
133
  }], color: [{
120
134
  type: Input
135
+ }], strokeColor: [{
136
+ type: Input
121
137
  }], disabled: [{
122
138
  type: Input
123
139
  }] } });
@@ -1 +1 @@
1
- {"version":3,"file":"loyalty-cloud-ui-icons.mjs","sources":["../../../projects/loyalty-cloud-ui-icons/src/lib/svg-icon-cache.service.ts","../../../projects/loyalty-cloud-ui-icons/src/lib/lc-icon.component.ts","../../../projects/loyalty-cloud-ui-icons/src/lib/safe-html.pipe.ts","../../../projects/loyalty-cloud-ui-icons/src/lib/lc-icon.module.ts","../../../projects/loyalty-cloud-ui-icons/src/public-api.ts","../../../projects/loyalty-cloud-ui-icons/src/loyalty-cloud-ui-icons.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SvgIconCacheService {\n private iconCache = new Map<string, SafeHtml>();\n disabledColor: string = '#e0e0e0';\n\n constructor(private sanitizer: DomSanitizer, private http: HttpClient) { }\n\n registerIcon(name: string, url: string, size: number, color: string, disabled: boolean = false): Observable<SafeHtml> {\n const cacheKey = `${name}-${size}-${color}-${disabled}`; // Unique cache key\n\n if (this.iconCache.has(cacheKey)) {\n return of(this.iconCache.get(cacheKey)!); // Return the cached icon\n }\n\n return this.http.get(url, { responseType: 'text' }).pipe(\n map((svg) => {\n const parser = new DOMParser();\n const doc = parser.parseFromString(svg, 'image/svg+xml');\n const svgElement = doc.querySelector('svg');\n\n if (svgElement) {\n // Update size attributes\n svgElement.setAttribute('width', `${size}`);\n svgElement.setAttribute('height', `${size}`);\n\n // Update color only for elements without a 'fill' attribute\n const elementsToUpdate = svgElement.querySelectorAll('path, circle, rect, polygon, ellipse');\n elementsToUpdate.forEach((el) => {\n if (!el.hasAttribute('fill')) {\n el.setAttribute('fill', disabled ? this.disabledColor : color || 'black');\n }\n });\n\n const serializedSvg = new XMLSerializer().serializeToString(svgElement);\n const sanitizedSvg = this.sanitizer.bypassSecurityTrustHtml(serializedSvg);\n this.iconCache.set(cacheKey, sanitizedSvg); // Cache using the unique key\n return sanitizedSvg;\n }\n\n throw new Error(`Invalid SVG content for icon: ${name}`);\n })\n );\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit, SimpleChanges } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { SvgIconCacheService } from './svg-icon-cache.service';\n\n@Component({\n selector: 'lc-icon',\n template: `\n <div \n class=\"icon\"\n [innerHTML]=\"svgIcon\" \n [style.width.px]=\"size\" \n [style.height.px]=\"size\"\n [style.color]=\"color\">\n </div>\n `,\n styleUrls: [\n 'lc-icon.component.scss'\n ],\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class LcIconComponent implements OnInit {\n @Input() name: string = '';\n @Input() category: string = '';\n @Input() size: number = 24;\n @Input() color: string = 'currentColor';\n @Input() disabled: boolean = false;\n\n svgIcon: SafeHtml | null | undefined = null;\n disabledColor: string = '#e0e0e0';\n\n constructor(\n private iconRegistry: SvgIconCacheService,\n private cdr: ChangeDetectorRef\n ) { }\n\n ngOnChanges(changes: SimpleChanges) {\n this.loadIcon();\n }\n\n ngOnInit() {\n this.loadIcon();\n }\n\n private loadIcon() {\n if (!this.name) {\n console.warn('Icon name is required.');\n this.svgIcon = null;\n return;\n }\n\n const iconPath = this.category\n ? `../assets/icons/${this.category}/${this.name}.svg`\n : `../assets/icons/${this.name}.svg`;\n\n this.iconRegistry\n .registerIcon(this.name, iconPath, this.size, this.color, this.disabled) // Dynamically register and fetch the icon\n .subscribe(\n (icon) => {\n this.svgIcon = icon;\n this.cdr.detectChanges();\n },\n (error) => {\n console.error(`Error loading icon \"${this.name}\":`, error);\n }\n );\n }\n}\n\n\n\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeHtml'\n})\nexport class SafeHtmlPipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {}\n\n transform(value: string): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(value);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LcIconComponent } from './lc-icon.component';\nimport { SafeHtmlPipe } from './safe-html.pipe';\nimport { HttpClientModule } from '@angular/common/http';\n\n\n@NgModule({\n declarations: [LcIconComponent, SafeHtmlPipe],\n imports: [CommonModule, HttpClientModule],\n exports: [LcIconComponent]\n})\nexport class LcIconModule {}\n","/*\n * Public API Surface of @loyalty-cloud/ui-icons\n */\n\nexport * from './lib/lc-icon.module';\nexport * from './lib/lc-icon.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SvgIconCacheService"],"mappings":"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"}
1
+ {"version":3,"file":"loyalty-cloud-ui-icons.mjs","sources":["../../../projects/loyalty-cloud-ui-icons/src/lib/svg-icon-cache.service.ts","../../../projects/loyalty-cloud-ui-icons/src/lib/lc-icon.component.ts","../../../projects/loyalty-cloud-ui-icons/src/lib/safe-html.pipe.ts","../../../projects/loyalty-cloud-ui-icons/src/lib/lc-icon.module.ts","../../../projects/loyalty-cloud-ui-icons/src/public-api.ts","../../../projects/loyalty-cloud-ui-icons/src/loyalty-cloud-ui-icons.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SvgIconCacheService {\n private iconCache = new Map<string, SafeHtml>();\n disabledColor: string = '#e0e0e0';\n\n constructor(private sanitizer: DomSanitizer, private http: HttpClient) { }\n\n registerIcon(name: string, url: string, size: number, color: string, disabled: boolean = false, strokeColor:string): Observable<SafeHtml> {\n const cacheKey = `${name}-${size}-${color}-${disabled}-${strokeColor}`; // Unique cache key\n\n if (this.iconCache.has(cacheKey)) {\n return of(this.iconCache.get(cacheKey)!); // Return the cached icon\n }\n\n return this.http.get(url, { responseType: 'text' }).pipe(\n map((svg) => {\n const parser = new DOMParser();\n const doc = parser.parseFromString(svg, 'image/svg+xml');\n const svgElement = doc.querySelector('svg');\n\n if (svgElement) {\n // Update size attributes\n svgElement.setAttribute('width', `${size}`);\n svgElement.setAttribute('height', `${size}`);\n\n // Update color only for elements without a 'fill' attribute\n if(!strokeColor) {\n const elementsToUpdate = svgElement.querySelectorAll('path, circle, rect, polygon, ellipse');\n elementsToUpdate.forEach((el) => {\n if (!el.hasAttribute('fill')) {\n el.setAttribute('fill', disabled ? this.disabledColor : color || 'black');\n }\n });\n }\n\n // If color is NOT present but strokeColor is provided, apply it to elements with stroke\n if ((!color || color === 'currentColor') && strokeColor) {\n const elementsWithStroke = svgElement.querySelectorAll('[stroke]');\n elementsWithStroke.forEach((el) => {\n el.setAttribute('stroke', strokeColor);\n });\n }\n\n const serializedSvg = new XMLSerializer().serializeToString(svgElement);\n const sanitizedSvg = this.sanitizer.bypassSecurityTrustHtml(serializedSvg);\n this.iconCache.set(cacheKey, sanitizedSvg); // Cache using the unique key\n return sanitizedSvg;\n }\n\n throw new Error(`Invalid SVG content for icon: ${name}`);\n })\n );\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit, SimpleChanges } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { SvgIconCacheService } from './svg-icon-cache.service';\n\n@Component({\n selector: 'lc-icon',\n template: `\n <div \n class=\"icon\"\n [innerHTML]=\"svgIcon\" \n [style.width.px]=\"size\" \n [style.height.px]=\"size\"\n [style.color]=\"color\"\n *ngIf=\"svgIcon\">\n </div>\n `,\n styleUrls: [\n 'lc-icon.component.scss'\n ],\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class LcIconComponent implements OnInit {\n @Input() name: string = '';\n @Input() category: string = '';\n @Input() size: number = 24;\n @Input() color: string = 'currentColor';\n @Input() strokeColor: string = '';\n @Input() disabled: boolean = false;\n\n svgIcon: SafeHtml | null | undefined = null;\n disabledColor: string = '#e0e0e0';\n\n constructor(\n private iconRegistry: SvgIconCacheService,\n private cdr: ChangeDetectorRef\n ) { }\n\n ngOnChanges(changes: SimpleChanges) {\n this.loadIcon();\n }\n\n ngOnInit() {\n this.loadIcon();\n }\n\n private loadIcon() {\n if (!this.name) {\n console.warn('Icon name is required.');\n this.svgIcon = null;\n return;\n }\n\n const iconPath = this.category\n ? `../assets/icons/${this.category}/${this.name}.svg`\n : `../assets/icons/${this.name}.svg`;\n\n this.iconRegistry\n .registerIcon(this.name, iconPath, this.size, this.color, this.disabled, this.strokeColor) // Dynamically register and fetch the icon\n .subscribe(\n (icon) => {\n this.svgIcon = icon;\n this.cdr.detectChanges();\n },\n (error) => {\n this.svgIcon = null;\n console.error(`Error loading icon \"${this.name}\":`, error);\n }\n );\n }\n}\n\n\n\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeHtml'\n})\nexport class SafeHtmlPipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {}\n\n transform(value: string): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(value);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LcIconComponent } from './lc-icon.component';\nimport { SafeHtmlPipe } from './safe-html.pipe';\nimport { HttpClientModule } from '@angular/common/http';\n\n\n@NgModule({\n declarations: [LcIconComponent, SafeHtmlPipe],\n imports: [CommonModule, HttpClientModule],\n exports: [LcIconComponent]\n})\nexport class LcIconModule {}\n","/*\n * Public API Surface of @loyalty-cloud/ui-icons\n */\n\nexport * from './lib/lc-icon.module';\nexport * from './lib/lc-icon.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SvgIconCacheService","i2"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, Component, ChangeDetectionStrategy, Input, Pipe, NgModule } from '@angular/core';
3
+ import * as i2$1 from '@angular/common';
3
4
  import { CommonModule } from '@angular/common';
4
5
  import { of } from 'rxjs';
5
6
  import { map } from 'rxjs/operators';
@@ -14,8 +15,8 @@ class SvgIconCacheService {
14
15
  this.iconCache = new Map();
15
16
  this.disabledColor = '#e0e0e0';
16
17
  }
17
- registerIcon(name, url, size, color, disabled = false) {
18
- const cacheKey = `${name}-${size}-${color}-${disabled}`; // Unique cache key
18
+ registerIcon(name, url, size, color, disabled = false, strokeColor) {
19
+ const cacheKey = `${name}-${size}-${color}-${disabled}-${strokeColor}`; // Unique cache key
19
20
  if (this.iconCache.has(cacheKey)) {
20
21
  return of(this.iconCache.get(cacheKey)); // Return the cached icon
21
22
  }
@@ -28,12 +29,21 @@ class SvgIconCacheService {
28
29
  svgElement.setAttribute('width', `${size}`);
29
30
  svgElement.setAttribute('height', `${size}`);
30
31
  // Update color only for elements without a 'fill' attribute
31
- const elementsToUpdate = svgElement.querySelectorAll('path, circle, rect, polygon, ellipse');
32
- elementsToUpdate.forEach((el) => {
33
- if (!el.hasAttribute('fill')) {
34
- el.setAttribute('fill', disabled ? this.disabledColor : color || 'black');
35
- }
36
- });
32
+ if (!strokeColor) {
33
+ const elementsToUpdate = svgElement.querySelectorAll('path, circle, rect, polygon, ellipse');
34
+ elementsToUpdate.forEach((el) => {
35
+ if (!el.hasAttribute('fill')) {
36
+ el.setAttribute('fill', disabled ? this.disabledColor : color || 'black');
37
+ }
38
+ });
39
+ }
40
+ // If color is NOT present but strokeColor is provided, apply it to elements with stroke
41
+ if ((!color || color === 'currentColor') && strokeColor) {
42
+ const elementsWithStroke = svgElement.querySelectorAll('[stroke]');
43
+ elementsWithStroke.forEach((el) => {
44
+ el.setAttribute('stroke', strokeColor);
45
+ });
46
+ }
37
47
  const serializedSvg = new XMLSerializer().serializeToString(svgElement);
38
48
  const sanitizedSvg = this.sanitizer.bypassSecurityTrustHtml(serializedSvg);
39
49
  this.iconCache.set(cacheKey, sanitizedSvg); // Cache using the unique key
@@ -60,6 +70,7 @@ class LcIconComponent {
60
70
  this.category = '';
61
71
  this.size = 24;
62
72
  this.color = 'currentColor';
73
+ this.strokeColor = '';
63
74
  this.disabled = false;
64
75
  this.svgIcon = null;
65
76
  this.disabledColor = '#e0e0e0';
@@ -80,25 +91,27 @@ class LcIconComponent {
80
91
  ? `../assets/icons/${this.category}/${this.name}.svg`
81
92
  : `../assets/icons/${this.name}.svg`;
82
93
  this.iconRegistry
83
- .registerIcon(this.name, iconPath, this.size, this.color, this.disabled) // Dynamically register and fetch the icon
94
+ .registerIcon(this.name, iconPath, this.size, this.color, this.disabled, this.strokeColor) // Dynamically register and fetch the icon
84
95
  .subscribe((icon) => {
85
96
  this.svgIcon = icon;
86
97
  this.cdr.detectChanges();
87
98
  }, (error) => {
99
+ this.svgIcon = null;
88
100
  console.error(`Error loading icon "${this.name}":`, error);
89
101
  });
90
102
  }
91
103
  }
92
104
  LcIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LcIconComponent, deps: [{ token: SvgIconCacheService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
93
- LcIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: LcIconComponent, selector: "lc-icon", inputs: { name: "name", category: "category", size: "size", color: "color", disabled: "disabled" }, usesOnChanges: true, ngImport: i0, template: `
105
+ LcIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: LcIconComponent, selector: "lc-icon", inputs: { name: "name", category: "category", size: "size", color: "color", strokeColor: "strokeColor", disabled: "disabled" }, usesOnChanges: true, ngImport: i0, template: `
94
106
  <div
95
107
  class="icon"
96
108
  [innerHTML]="svgIcon"
97
109
  [style.width.px]="size"
98
110
  [style.height.px]="size"
99
- [style.color]="color">
111
+ [style.color]="color"
112
+ *ngIf="svgIcon">
100
113
  </div>
101
- `, isInline: true, styles: [".icon{display:flex;align-items:center;justify-content:center}\n"], changeDetection: i0.ChangeDetectionStrategy.Default });
114
+ `, isInline: true, styles: [".icon{display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.Default });
102
115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LcIconComponent, decorators: [{
103
116
  type: Component,
104
117
  args: [{ selector: 'lc-icon', template: `
@@ -107,7 +120,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
107
120
  [innerHTML]="svgIcon"
108
121
  [style.width.px]="size"
109
122
  [style.height.px]="size"
110
- [style.color]="color">
123
+ [style.color]="color"
124
+ *ngIf="svgIcon">
111
125
  </div>
112
126
  `, changeDetection: ChangeDetectionStrategy.Default, styles: [".icon{display:flex;align-items:center;justify-content:center}\n"] }]
113
127
  }], ctorParameters: function () { return [{ type: SvgIconCacheService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { name: [{
@@ -118,6 +132,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
118
132
  type: Input
119
133
  }], color: [{
120
134
  type: Input
135
+ }], strokeColor: [{
136
+ type: Input
121
137
  }], disabled: [{
122
138
  type: Input
123
139
  }] } });
@@ -1 +1 @@
1
- {"version":3,"file":"loyalty-cloud-ui-icons.mjs","sources":["../../../projects/loyalty-cloud-ui-icons/src/lib/svg-icon-cache.service.ts","../../../projects/loyalty-cloud-ui-icons/src/lib/lc-icon.component.ts","../../../projects/loyalty-cloud-ui-icons/src/lib/safe-html.pipe.ts","../../../projects/loyalty-cloud-ui-icons/src/lib/lc-icon.module.ts","../../../projects/loyalty-cloud-ui-icons/src/public-api.ts","../../../projects/loyalty-cloud-ui-icons/src/loyalty-cloud-ui-icons.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SvgIconCacheService {\n private iconCache = new Map<string, SafeHtml>();\n disabledColor: string = '#e0e0e0';\n\n constructor(private sanitizer: DomSanitizer, private http: HttpClient) { }\n\n registerIcon(name: string, url: string, size: number, color: string, disabled: boolean = false): Observable<SafeHtml> {\n const cacheKey = `${name}-${size}-${color}-${disabled}`; // Unique cache key\n\n if (this.iconCache.has(cacheKey)) {\n return of(this.iconCache.get(cacheKey)!); // Return the cached icon\n }\n\n return this.http.get(url, { responseType: 'text' }).pipe(\n map((svg) => {\n const parser = new DOMParser();\n const doc = parser.parseFromString(svg, 'image/svg+xml');\n const svgElement = doc.querySelector('svg');\n\n if (svgElement) {\n // Update size attributes\n svgElement.setAttribute('width', `${size}`);\n svgElement.setAttribute('height', `${size}`);\n\n // Update color only for elements without a 'fill' attribute\n const elementsToUpdate = svgElement.querySelectorAll('path, circle, rect, polygon, ellipse');\n elementsToUpdate.forEach((el) => {\n if (!el.hasAttribute('fill')) {\n el.setAttribute('fill', disabled ? this.disabledColor : color || 'black');\n }\n });\n\n const serializedSvg = new XMLSerializer().serializeToString(svgElement);\n const sanitizedSvg = this.sanitizer.bypassSecurityTrustHtml(serializedSvg);\n this.iconCache.set(cacheKey, sanitizedSvg); // Cache using the unique key\n return sanitizedSvg;\n }\n\n throw new Error(`Invalid SVG content for icon: ${name}`);\n })\n );\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit, SimpleChanges } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { SvgIconCacheService } from './svg-icon-cache.service';\n\n@Component({\n selector: 'lc-icon',\n template: `\n <div \n class=\"icon\"\n [innerHTML]=\"svgIcon\" \n [style.width.px]=\"size\" \n [style.height.px]=\"size\"\n [style.color]=\"color\">\n </div>\n `,\n styleUrls: [\n 'lc-icon.component.scss'\n ],\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class LcIconComponent implements OnInit {\n @Input() name: string = '';\n @Input() category: string = '';\n @Input() size: number = 24;\n @Input() color: string = 'currentColor';\n @Input() disabled: boolean = false;\n\n svgIcon: SafeHtml | null | undefined = null;\n disabledColor: string = '#e0e0e0';\n\n constructor(\n private iconRegistry: SvgIconCacheService,\n private cdr: ChangeDetectorRef\n ) { }\n\n ngOnChanges(changes: SimpleChanges) {\n this.loadIcon();\n }\n\n ngOnInit() {\n this.loadIcon();\n }\n\n private loadIcon() {\n if (!this.name) {\n console.warn('Icon name is required.');\n this.svgIcon = null;\n return;\n }\n\n const iconPath = this.category\n ? `../assets/icons/${this.category}/${this.name}.svg`\n : `../assets/icons/${this.name}.svg`;\n\n this.iconRegistry\n .registerIcon(this.name, iconPath, this.size, this.color, this.disabled) // Dynamically register and fetch the icon\n .subscribe(\n (icon) => {\n this.svgIcon = icon;\n this.cdr.detectChanges();\n },\n (error) => {\n console.error(`Error loading icon \"${this.name}\":`, error);\n }\n );\n }\n}\n\n\n\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeHtml'\n})\nexport class SafeHtmlPipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {}\n\n transform(value: string): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(value);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LcIconComponent } from './lc-icon.component';\nimport { SafeHtmlPipe } from './safe-html.pipe';\nimport { HttpClientModule } from '@angular/common/http';\n\n\n@NgModule({\n declarations: [LcIconComponent, SafeHtmlPipe],\n imports: [CommonModule, HttpClientModule],\n exports: [LcIconComponent]\n})\nexport class LcIconModule {}\n","/*\n * Public API Surface of @loyalty-cloud/ui-icons\n */\n\nexport * from './lib/lc-icon.module';\nexport * from './lib/lc-icon.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SvgIconCacheService"],"mappings":"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"}
1
+ {"version":3,"file":"loyalty-cloud-ui-icons.mjs","sources":["../../../projects/loyalty-cloud-ui-icons/src/lib/svg-icon-cache.service.ts","../../../projects/loyalty-cloud-ui-icons/src/lib/lc-icon.component.ts","../../../projects/loyalty-cloud-ui-icons/src/lib/safe-html.pipe.ts","../../../projects/loyalty-cloud-ui-icons/src/lib/lc-icon.module.ts","../../../projects/loyalty-cloud-ui-icons/src/public-api.ts","../../../projects/loyalty-cloud-ui-icons/src/loyalty-cloud-ui-icons.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SvgIconCacheService {\n private iconCache = new Map<string, SafeHtml>();\n disabledColor: string = '#e0e0e0';\n\n constructor(private sanitizer: DomSanitizer, private http: HttpClient) { }\n\n registerIcon(name: string, url: string, size: number, color: string, disabled: boolean = false, strokeColor:string): Observable<SafeHtml> {\n const cacheKey = `${name}-${size}-${color}-${disabled}-${strokeColor}`; // Unique cache key\n\n if (this.iconCache.has(cacheKey)) {\n return of(this.iconCache.get(cacheKey)!); // Return the cached icon\n }\n\n return this.http.get(url, { responseType: 'text' }).pipe(\n map((svg) => {\n const parser = new DOMParser();\n const doc = parser.parseFromString(svg, 'image/svg+xml');\n const svgElement = doc.querySelector('svg');\n\n if (svgElement) {\n // Update size attributes\n svgElement.setAttribute('width', `${size}`);\n svgElement.setAttribute('height', `${size}`);\n\n // Update color only for elements without a 'fill' attribute\n if(!strokeColor) {\n const elementsToUpdate = svgElement.querySelectorAll('path, circle, rect, polygon, ellipse');\n elementsToUpdate.forEach((el) => {\n if (!el.hasAttribute('fill')) {\n el.setAttribute('fill', disabled ? this.disabledColor : color || 'black');\n }\n });\n }\n\n // If color is NOT present but strokeColor is provided, apply it to elements with stroke\n if ((!color || color === 'currentColor') && strokeColor) {\n const elementsWithStroke = svgElement.querySelectorAll('[stroke]');\n elementsWithStroke.forEach((el) => {\n el.setAttribute('stroke', strokeColor);\n });\n }\n\n const serializedSvg = new XMLSerializer().serializeToString(svgElement);\n const sanitizedSvg = this.sanitizer.bypassSecurityTrustHtml(serializedSvg);\n this.iconCache.set(cacheKey, sanitizedSvg); // Cache using the unique key\n return sanitizedSvg;\n }\n\n throw new Error(`Invalid SVG content for icon: ${name}`);\n })\n );\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit, SimpleChanges } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { SvgIconCacheService } from './svg-icon-cache.service';\n\n@Component({\n selector: 'lc-icon',\n template: `\n <div \n class=\"icon\"\n [innerHTML]=\"svgIcon\" \n [style.width.px]=\"size\" \n [style.height.px]=\"size\"\n [style.color]=\"color\"\n *ngIf=\"svgIcon\">\n </div>\n `,\n styleUrls: [\n 'lc-icon.component.scss'\n ],\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class LcIconComponent implements OnInit {\n @Input() name: string = '';\n @Input() category: string = '';\n @Input() size: number = 24;\n @Input() color: string = 'currentColor';\n @Input() strokeColor: string = '';\n @Input() disabled: boolean = false;\n\n svgIcon: SafeHtml | null | undefined = null;\n disabledColor: string = '#e0e0e0';\n\n constructor(\n private iconRegistry: SvgIconCacheService,\n private cdr: ChangeDetectorRef\n ) { }\n\n ngOnChanges(changes: SimpleChanges) {\n this.loadIcon();\n }\n\n ngOnInit() {\n this.loadIcon();\n }\n\n private loadIcon() {\n if (!this.name) {\n console.warn('Icon name is required.');\n this.svgIcon = null;\n return;\n }\n\n const iconPath = this.category\n ? `../assets/icons/${this.category}/${this.name}.svg`\n : `../assets/icons/${this.name}.svg`;\n\n this.iconRegistry\n .registerIcon(this.name, iconPath, this.size, this.color, this.disabled, this.strokeColor) // Dynamically register and fetch the icon\n .subscribe(\n (icon) => {\n this.svgIcon = icon;\n this.cdr.detectChanges();\n },\n (error) => {\n this.svgIcon = null;\n console.error(`Error loading icon \"${this.name}\":`, error);\n }\n );\n }\n}\n\n\n\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeHtml'\n})\nexport class SafeHtmlPipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {}\n\n transform(value: string): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(value);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LcIconComponent } from './lc-icon.component';\nimport { SafeHtmlPipe } from './safe-html.pipe';\nimport { HttpClientModule } from '@angular/common/http';\n\n\n@NgModule({\n declarations: [LcIconComponent, SafeHtmlPipe],\n imports: [CommonModule, HttpClientModule],\n exports: [LcIconComponent]\n})\nexport class LcIconModule {}\n","/*\n * Public API Surface of @loyalty-cloud/ui-icons\n */\n\nexport * from './lib/lc-icon.module';\nexport * from './lib/lc-icon.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SvgIconCacheService","i2"],"mappings":"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"}
@@ -9,6 +9,7 @@ export declare class LcIconComponent implements OnInit {
9
9
  category: string;
10
10
  size: number;
11
11
  color: string;
12
+ strokeColor: string;
12
13
  disabled: boolean;
13
14
  svgIcon: SafeHtml | null | undefined;
14
15
  disabledColor: string;
@@ -17,5 +18,5 @@ export declare class LcIconComponent implements OnInit {
17
18
  ngOnInit(): void;
18
19
  private loadIcon;
19
20
  static ɵfac: i0.ɵɵFactoryDeclaration<LcIconComponent, never>;
20
- static ɵcmp: i0.ɵɵComponentDeclaration<LcIconComponent, "lc-icon", never, { "name": "name"; "category": "category"; "size": "size"; "color": "color"; "disabled": "disabled"; }, {}, never, never, false>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<LcIconComponent, "lc-icon", never, { "name": "name"; "category": "category"; "size": "size"; "color": "color"; "strokeColor": "strokeColor"; "disabled": "disabled"; }, {}, never, never, false>;
21
22
  }
@@ -8,7 +8,7 @@ export declare class SvgIconCacheService {
8
8
  private iconCache;
9
9
  disabledColor: string;
10
10
  constructor(sanitizer: DomSanitizer, http: HttpClient);
11
- registerIcon(name: string, url: string, size: number, color: string, disabled?: boolean): Observable<SafeHtml>;
11
+ registerIcon(name: string, url: string, size: number, color: string, disabled: boolean | undefined, strokeColor: string): Observable<SafeHtml>;
12
12
  static ɵfac: i0.ɵɵFactoryDeclaration<SvgIconCacheService, never>;
13
13
  static ɵprov: i0.ɵɵInjectableDeclaration<SvgIconCacheService>;
14
14
  }
package/package.json CHANGED
@@ -1,11 +1,7 @@
1
1
  {
2
2
  "name": "@loyalty-cloud/ui-icons",
3
- "version": "1.1.72",
3
+ "version": "1.1.74",
4
4
  "private": false,
5
- "publishConfig": {
6
- "access": "public",
7
- "registry": "https://registry.npmjs.org/"
8
- },
9
5
  "peerDependencies": {
10
6
  "@angular/common": "^14.0.7",
11
7
  "@angular/core": "^14.0.6"
@@ -0,0 +1,3 @@
1
+ <svg width="29" height="29" viewBox="0 0 29 29" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M16.8053 5.17886C16.6692 5.16774 16.4799 5.16684 16.134 5.16684H12.8673C12.5214 5.16684 12.3321 5.16774 12.1961 5.17886C12.1906 5.1793 12.1855 5.17975 12.1807 5.18019C12.1802 5.18503 12.1798 5.19016 12.1793 5.19558C12.1682 5.33159 12.1673 5.52089 12.1673 5.86684V8.6656C12.1673 8.66601 12.1673 8.66642 12.1673 8.66684C12.1673 8.66725 12.1673 8.66766 12.1673 8.66807V23.8335H16.834V5.86684C16.834 5.52089 16.8331 5.33159 16.822 5.19557C16.8215 5.19016 16.8211 5.18503 16.8206 5.18019C16.8158 5.17975 16.8107 5.1793 16.8053 5.17886ZM19.1673 12.1668L19.1673 5.8296C19.1674 5.53516 19.1674 5.24841 19.1476 5.00557C19.1258 4.73888 19.0744 4.42419 18.913 4.10752C18.6893 3.66848 18.3323 3.31152 17.8933 3.08782C17.5766 2.92647 17.262 2.87506 16.9953 2.85327C16.7524 2.83343 16.4657 2.83346 16.1712 2.8335L12.8301 2.8335C12.5357 2.83346 12.2489 2.83343 12.0061 2.85327C11.7394 2.87506 11.4247 2.92647 11.108 3.08782C10.669 3.31152 10.312 3.66848 10.0883 4.10752C9.92696 4.42419 9.87555 4.73888 9.85376 5.00557C9.83392 5.24842 9.83395 5.53518 9.83399 5.82962C9.83399 5.84201 9.83399 5.85442 9.83399 5.86684V7.50017H5.86732C5.85491 7.50017 5.8425 7.50017 5.83011 7.50017C5.53566 7.50013 5.24891 7.5001 5.00606 7.51994C4.73936 7.54173 4.42467 7.59314 4.10801 7.75449C3.66897 7.97819 3.31201 8.33515 3.08831 8.77419C2.92696 9.09085 2.87555 9.40554 2.85376 9.67223C2.83392 9.91509 2.83395 10.2018 2.83399 10.4963C2.83399 10.5087 2.83399 10.5211 2.83399 10.5335L2.83399 23.1707C2.83395 23.4652 2.83392 23.7519 2.85376 23.9948C2.87555 24.2615 2.92696 24.5762 3.08831 24.8928C3.31201 25.3319 3.66897 25.6888 4.10801 25.9125C4.42467 26.0739 4.73936 26.1253 5.00606 26.1471C5.2489 26.1669 5.53565 26.1669 5.83009 26.1668H23.1712C23.4657 26.1669 23.7524 26.1669 23.9953 26.1471C24.262 26.1253 24.5766 26.0739 24.8933 25.9125C25.3324 25.6888 25.6893 25.3319 25.913 24.8928C26.0744 24.5762 26.1258 24.2615 26.1476 23.9948C26.1674 23.7519 26.1674 23.4652 26.1673 23.1707V15.1629C26.1674 14.8685 26.1674 14.5817 26.1476 14.3389C26.1258 14.0722 26.0744 13.7575 25.913 13.4409C25.6893 13.0018 25.3323 12.6449 24.8933 12.4212C24.5766 12.2598 24.262 12.2084 23.9953 12.1866C23.7524 12.1668 23.4657 12.1668 23.1712 12.1668L19.1673 12.1668ZM19.1673 14.5002V23.8335H23.134C23.4799 23.8335 23.6692 23.8326 23.8053 23.8215C23.8107 23.821 23.8158 23.8206 23.8206 23.8201C23.8211 23.8153 23.8215 23.8102 23.822 23.8048C23.8331 23.6687 23.834 23.4795 23.834 23.1335V15.2002C23.834 14.8542 23.8331 14.6649 23.822 14.5289C23.8215 14.5235 23.8211 14.5184 23.8206 14.5135C23.8158 14.5131 23.8107 14.5126 23.8053 14.5122C23.6692 14.5011 23.4799 14.5002 23.134 14.5002H19.1673ZM9.83399 9.8335H5.86732C5.52138 9.8335 5.33208 9.83441 5.19606 9.84552C5.19065 9.84597 5.18552 9.84641 5.18068 9.84686C5.18023 9.8517 5.17979 9.85683 5.17934 9.86224C5.16823 9.99826 5.16732 10.1876 5.16732 10.5335V23.1335C5.16732 23.4795 5.16823 23.6687 5.17934 23.8048C5.17979 23.8102 5.18023 23.8153 5.18068 23.8201C5.18552 23.8206 5.19065 23.821 5.19606 23.8215C5.33208 23.8326 5.52138 23.8335 5.86732 23.8335H9.83399L9.83399 9.8335ZM4.10801 25.9125C4.10801 25.9125 4.10802 25.9125 4.10801 25.9125V25.9125Z" fill="black"/>
3
+ </svg>