btv-base-controls 0.1.15 → 0.1.17

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.
Files changed (73) hide show
  1. package/README.md +24 -24
  2. package/{esm2020 → esm2022}/btv-base-controls.mjs +4 -4
  3. package/esm2022/lib/basic.module.mjs +64 -0
  4. package/esm2022/lib/blink-message/blink-message.component.mjs +54 -0
  5. package/{esm2020 → esm2022}/lib/btv-icon-button/btv-counter-button.mjs +47 -47
  6. package/esm2022/lib/btv-icon-button/btv-icon-button.component.mjs +89 -0
  7. package/esm2022/lib/btv-progress/btv-progress.component.mjs +71 -0
  8. package/esm2022/lib/btv-search/btv-search.component.mjs +82 -0
  9. package/{esm2020 → esm2022}/lib/busy-indicator/busy-indicator.component.mjs +16 -16
  10. package/{esm2020 → esm2022}/lib/custom-tool-tip/custom-tool-tip.component.mjs +34 -34
  11. package/esm2022/lib/custom-tool-tip/tool-tip-renderer.directive.mjs +113 -0
  12. package/{esm2020 → esm2022}/lib/illustration/illustration.component.mjs +17 -17
  13. package/esm2022/lib/wm-avatar/avatar.component.mjs +175 -0
  14. package/{esm2020 → esm2022}/lib/wm-back-btn/wm-back-btn.component.mjs +26 -26
  15. package/{esm2020 → esm2022}/lib/wm-beta-text/wm-beta-text.component.mjs +19 -19
  16. package/{esm2020 → esm2022}/lib/wm-info/info-models.mjs +12 -12
  17. package/esm2022/lib/wm-info/wm-info.component.mjs +237 -0
  18. package/{esm2020 → esm2022}/lib/wm-info-card/wm-info-card.component.mjs +23 -23
  19. package/{esm2020 → esm2022}/lib/wm-no-content/wm-no-content.component.mjs +30 -30
  20. package/esm2022/lib/wm-panel-bar/wm-panel-bar.component.mjs +78 -0
  21. package/esm2022/lib/wm-scalable-div/scalable-div.component.mjs +105 -0
  22. package/esm2022/lib/wm-spinner/wm-spinner.component.mjs +135 -0
  23. package/esm2022/lib/wm-state-icon/wm-state-icon.component.mjs +18 -0
  24. package/{esm2020 → esm2022}/lib/wm-tag/wm-tag.component.mjs +28 -28
  25. package/esm2022/lib/wm-tamplate-image/wm-template-image.component.mjs +71 -0
  26. package/{esm2020 → esm2022}/lib/wm-toggle/wm-toggle.component.mjs +31 -31
  27. package/{esm2020 → esm2022}/models/guidExtension.mjs +14 -14
  28. package/{esm2020 → esm2022}/public-api.mjs +27 -27
  29. package/{fesm2020 → fesm2022}/btv-base-controls.mjs +1427 -1428
  30. package/{fesm2020 → fesm2022}/btv-base-controls.mjs.map +1 -1
  31. package/index.d.ts +5 -5
  32. package/lib/basic.module.d.ts +33 -33
  33. package/lib/blink-message/blink-message.component.d.ts +20 -20
  34. package/lib/btv-icon-button/btv-counter-button.d.ts +12 -12
  35. package/lib/btv-icon-button/btv-icon-button.component.d.ts +30 -30
  36. package/lib/btv-progress/btv-progress.component.d.ts +20 -20
  37. package/lib/btv-search/btv-search.component.d.ts +31 -31
  38. package/lib/busy-indicator/busy-indicator.component.d.ts +7 -7
  39. package/lib/custom-tool-tip/custom-tool-tip.component.d.ts +35 -35
  40. package/lib/custom-tool-tip/tool-tip-renderer.directive.d.ts +49 -49
  41. package/lib/illustration/illustration.component.d.ts +10 -10
  42. package/lib/wm-avatar/avatar.component.d.ts +63 -63
  43. package/lib/wm-back-btn/wm-back-btn.component.d.ts +10 -10
  44. package/lib/wm-beta-text/wm-beta-text.component.d.ts +7 -7
  45. package/lib/wm-info/info-models.d.ts +20 -20
  46. package/lib/wm-info/wm-info.component.d.ts +34 -34
  47. package/lib/wm-info-card/wm-info-card.component.d.ts +9 -9
  48. package/lib/wm-no-content/wm-no-content.component.d.ts +11 -11
  49. package/lib/wm-panel-bar/wm-panel-bar.component.d.ts +25 -25
  50. package/lib/wm-scalable-div/scalable-div.component.d.ts +24 -24
  51. package/lib/wm-spinner/wm-spinner.component.d.ts +37 -37
  52. package/lib/wm-state-icon/wm-state-icon.component.d.ts +9 -9
  53. package/lib/wm-tag/wm-tag.component.d.ts +10 -10
  54. package/lib/wm-tamplate-image/wm-template-image.component.d.ts +49 -49
  55. package/lib/wm-toggle/wm-toggle.component.d.ts +11 -11
  56. package/models/guidExtension.d.ts +5 -5
  57. package/package.json +8 -14
  58. package/public-api.d.ts +24 -24
  59. package/esm2020/lib/basic.module.mjs +0 -65
  60. package/esm2020/lib/blink-message/blink-message.component.mjs +0 -54
  61. package/esm2020/lib/btv-icon-button/btv-icon-button.component.mjs +0 -89
  62. package/esm2020/lib/btv-progress/btv-progress.component.mjs +0 -71
  63. package/esm2020/lib/btv-search/btv-search.component.mjs +0 -82
  64. package/esm2020/lib/custom-tool-tip/tool-tip-renderer.directive.mjs +0 -113
  65. package/esm2020/lib/wm-avatar/avatar.component.mjs +0 -175
  66. package/esm2020/lib/wm-info/wm-info.component.mjs +0 -237
  67. package/esm2020/lib/wm-panel-bar/wm-panel-bar.component.mjs +0 -78
  68. package/esm2020/lib/wm-scalable-div/scalable-div.component.mjs +0 -105
  69. package/esm2020/lib/wm-spinner/wm-spinner.component.mjs +0 -135
  70. package/esm2020/lib/wm-state-icon/wm-state-icon.component.mjs +0 -18
  71. package/esm2020/lib/wm-tamplate-image/wm-template-image.component.mjs +0 -71
  72. package/fesm2015/btv-base-controls.mjs +0 -1480
  73. package/fesm2015/btv-base-controls.mjs.map +0 -1
@@ -1,135 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
- import { timer } from 'rxjs';
3
- import { Guid } from '../../models/guidExtension';
4
- import { InfoType } from '../wm-info/info-models';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common";
7
- import * as i2 from "../wm-info/wm-info.component";
8
- export class SpinnerComponent {
9
- constructor(zone, change) {
10
- this.zone = zone;
11
- this.change = change;
12
- this.uid = Guid.newGuid();
13
- this._initialized = false;
14
- this.isOverlayVisible = false;
15
- this.isOverlayContrast = false;
16
- this.minTimeOfVisibilityMs = 500;
17
- this.showDelay = 250;
18
- this.delay = false;
19
- this.longMessageDelay = 12500;
20
- this.message = 'Waiting for data from server';
21
- this.messageTakesLong = 'Request is taking a bit longer than expected';
22
- this.messageBottomWait = 'Please Wait';
23
- this.infoType = InfoType.Error;
24
- }
25
- get showSpinner() { return this._showSpinner; }
26
- set showSpinner(value) {
27
- // tslint:disable-next-line:triple-equals we should treat bool false and bool undefined as same. The same for all other cases.
28
- if (this._showSpinner == value)
29
- return;
30
- this._showSpinner = value;
31
- this.unsubscribeTimers();
32
- if (value) {
33
- console.log('spinner started', this.uid);
34
- // block UI, keep it light
35
- this.isOverlayVisible = true;
36
- this.subscribeTimers();
37
- this.detectChanges();
38
- }
39
- else {
40
- this.stopShowingProgress();
41
- }
42
- }
43
- ngOnInit() {
44
- this._initialized = true;
45
- }
46
- ngOnDestroy() {
47
- console.log('destroy');
48
- this.unsubscribeTimers();
49
- }
50
- subscribeTimers() {
51
- this.zone.runOutsideAngular(() => {
52
- // show long wait message after few configured seconds
53
- const longMessageTimer = timer(this.longMessageDelay);
54
- this._longMessageTimeSubscription = longMessageTimer.subscribe(t => {
55
- this.message = this.messageTakesLong;
56
- this.change.detectChanges();
57
- this._longMessageTimeSubscription.unsubscribe();
58
- });
59
- // draw overlay message after few configured seconds
60
- if (!this.delay) {
61
- this.startShowingProgress();
62
- return;
63
- }
64
- const showAfterDelayTimer = timer(this.showDelay);
65
- this._showOverlayTimerSubscription = showAfterDelayTimer.subscribe(t => {
66
- if (this.showSpinner)
67
- this.startShowingProgress();
68
- this.change.detectChanges();
69
- this._showOverlayTimerSubscription.unsubscribe();
70
- });
71
- });
72
- }
73
- unsubscribeTimers() {
74
- if (this._longMessageTimeSubscription)
75
- this._longMessageTimeSubscription.unsubscribe();
76
- if (this._showOverlayTimerSubscription)
77
- this._showOverlayTimerSubscription.unsubscribe();
78
- }
79
- stopShowingProgress() {
80
- if (this._startDate) {
81
- const now = new Date().getTime();
82
- const duration = (now - this._startDate.getTime()); // ms
83
- if (duration < this.minTimeOfVisibilityMs) {
84
- this.zone.runOutsideAngular(() => {
85
- // let it be at least one second.
86
- console.log('remains', this.minTimeOfVisibilityMs - duration);
87
- setTimeout(() => this.doStopProgress(), this.minTimeOfVisibilityMs - duration);
88
- });
89
- return;
90
- }
91
- }
92
- this.doStopProgress();
93
- }
94
- startShowingProgress() {
95
- console.log('contrast spinner', this.uid);
96
- this._startDate = new Date();
97
- this.isOverlayContrast = true;
98
- this.detectChanges();
99
- }
100
- doStopProgress() {
101
- console.log('spinner ended', this.uid);
102
- this.isOverlayContrast = false;
103
- this.isOverlayVisible = false;
104
- this._startDate = undefined;
105
- this.detectChanges();
106
- }
107
- detectChanges() {
108
- if (!this._initialized)
109
- return;
110
- this.change.detectChanges();
111
- }
112
- }
113
- SpinnerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SpinnerComponent, deps: [{ token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
114
- SpinnerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SpinnerComponent, selector: "wm-spinner", inputs: { delay: "delay", longMessageDelay: "longMessageDelay", message: "message", messageTakesLong: "messageTakesLong", messageBottomWait: "messageBottomWait", detailInfoMessage: "detailInfoMessage", infoType: "infoType", showSpinner: "showSpinner" }, ngImport: i0, template: "<div class=\"spinner-wrap flex-col wh-100\" *ngIf=\"isOverlayVisible\">\r\n <div class=\"spinner-bg wh-100\" [ngClass]=\"{'invisible': !isOverlayContrast }\"></div>\r\n <div class=\"spinner-content inline-col marginXA align-center\" [ngClass]=\"{'invisible': !isOverlayContrast }\">\r\n <div class=\"msg-wrap marginBottomX8\">\r\n <div style=\"display: flex\">\r\n <div class=\"msg\">{{message}}</div>\r\n <wm-info class=\"info\" [type]=\"infoType\" popupPosition=\"top-center\" \r\n [iconAsTemplate]=\"infoType===2\" [useThemeForIconTemplate]=\"infoType===2\"\r\n *ngIf=\"detailInfoMessage\" [header]=\"detailInfoMessage\" style=\"margin-left: 4px\"></wm-info>\r\n </div>\r\n \r\n <div class=\"msg\">{{messageBottomWait}}</div>\r\n </div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 168 168\" id=\"loader\">\r\n <defs>\r\n <linearGradient id=\"a\" x1=\"38.078%\" x2=\"4.941%\" y1=\"8.411%\" y2=\"16.987%\">\r\n <stop offset=\"0%\" stop-color=\"var(--brandColor)\" stop-opacity=\"0.1\" />\r\n <stop offset=\"61.554%\" stop-color=\"var(--brandColor)\" stop-opacity=\"0.4\" />\r\n <stop offset=\"100%\" stop-color=\"var(--brandColor)\" stop-opacity=\"0.5\" />\r\n </linearGradient>\r\n <radialGradient id=\"b\" cy=\"43.835%\" r=\"54.9%\" fx=\"50%\" fy=\"43.835%\"\r\n gradientTransform=\"matrix(-.77913 .62687 -.6485 -.80602 1.174 .478)\">\r\n <stop offset=\"0%\" stop-color=\"#FFF\" />\r\n <stop offset=\"100%\" stop-color=\"var(--brandColor)\" stop-opacity=\"0.5\" />\r\n </radialGradient>\r\n </defs>\r\n <g fill=\"none\" fill-rule=\"evenodd\">\r\n <g transform=\"translate(10 10)\">\r\n <path stroke=\"url(#a)\" stroke-linecap=\"round\" stroke-width=\"19\"\r\n d=\"M16.198 27.79C6.062 40.453 0 56.518 0 74c0 40.87 33.13 74 74 74s74-33.13 74-74c0-24.611-12.014-46.416-30.498-59.87C105.292 5.244 90.258 0 74 0\" />\r\n <circle cx=\"16.5\" cy=\"27.5\" r=\"9.5\" fill=\"url(#b)\" />\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n\r\n</div>", styles: ["@media print{body{all:unset!important}.wm-page{margin:0!important;display:block!important}.not-printable{display:none!important}*{visibility:hidden}.printable,.printable *{visibility:visible!important}}.spinner-wrap{position:fixed;inset:0;z-index:5;text-shadow:0px 0px 0px var(--pageBackgroundColor);pointer-events:all}.spinner-bg{position:absolute;top:0;left:0;transition:opacity .4s ease-in;opacity:.7;background-color:var(--appBackgroundColor)}.invisible{opacity:.01}.spinner-content{z-index:1;width:80%;height:80%;min-width:120px;min-height:120px;max-width:400px;max-height:400px}.msg-wrap{width:auto;max-width:400px;box-sizing:border-box;text-align:center;font-size:16px;color:var(--strongFontColor);line-height:32px;font-weight:500;word-break:break-word}@media all and (max-width: 767px){.msg-wrap{font-size:14px;line-height:24px}}#loader{animation:rotation 2s infinite linear;animation-play-state:running;width:50%;height:50%;min-width:120px;min-height:120px;max-width:240px;max-height:240px;margin:0 auto}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.WmInfoComponent, selector: "wm-info", inputs: ["preText", "postText", "header", "type", "popupPosition", "iconAsTemplate", "useThemeForIconTemplate", "smallIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
115
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SpinnerComponent, decorators: [{
116
- type: Component,
117
- args: [{ selector: 'wm-spinner', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"spinner-wrap flex-col wh-100\" *ngIf=\"isOverlayVisible\">\r\n <div class=\"spinner-bg wh-100\" [ngClass]=\"{'invisible': !isOverlayContrast }\"></div>\r\n <div class=\"spinner-content inline-col marginXA align-center\" [ngClass]=\"{'invisible': !isOverlayContrast }\">\r\n <div class=\"msg-wrap marginBottomX8\">\r\n <div style=\"display: flex\">\r\n <div class=\"msg\">{{message}}</div>\r\n <wm-info class=\"info\" [type]=\"infoType\" popupPosition=\"top-center\" \r\n [iconAsTemplate]=\"infoType===2\" [useThemeForIconTemplate]=\"infoType===2\"\r\n *ngIf=\"detailInfoMessage\" [header]=\"detailInfoMessage\" style=\"margin-left: 4px\"></wm-info>\r\n </div>\r\n \r\n <div class=\"msg\">{{messageBottomWait}}</div>\r\n </div>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 168 168\" id=\"loader\">\r\n <defs>\r\n <linearGradient id=\"a\" x1=\"38.078%\" x2=\"4.941%\" y1=\"8.411%\" y2=\"16.987%\">\r\n <stop offset=\"0%\" stop-color=\"var(--brandColor)\" stop-opacity=\"0.1\" />\r\n <stop offset=\"61.554%\" stop-color=\"var(--brandColor)\" stop-opacity=\"0.4\" />\r\n <stop offset=\"100%\" stop-color=\"var(--brandColor)\" stop-opacity=\"0.5\" />\r\n </linearGradient>\r\n <radialGradient id=\"b\" cy=\"43.835%\" r=\"54.9%\" fx=\"50%\" fy=\"43.835%\"\r\n gradientTransform=\"matrix(-.77913 .62687 -.6485 -.80602 1.174 .478)\">\r\n <stop offset=\"0%\" stop-color=\"#FFF\" />\r\n <stop offset=\"100%\" stop-color=\"var(--brandColor)\" stop-opacity=\"0.5\" />\r\n </radialGradient>\r\n </defs>\r\n <g fill=\"none\" fill-rule=\"evenodd\">\r\n <g transform=\"translate(10 10)\">\r\n <path stroke=\"url(#a)\" stroke-linecap=\"round\" stroke-width=\"19\"\r\n d=\"M16.198 27.79C6.062 40.453 0 56.518 0 74c0 40.87 33.13 74 74 74s74-33.13 74-74c0-24.611-12.014-46.416-30.498-59.87C105.292 5.244 90.258 0 74 0\" />\r\n <circle cx=\"16.5\" cy=\"27.5\" r=\"9.5\" fill=\"url(#b)\" />\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n\r\n</div>", styles: ["@media print{body{all:unset!important}.wm-page{margin:0!important;display:block!important}.not-printable{display:none!important}*{visibility:hidden}.printable,.printable *{visibility:visible!important}}.spinner-wrap{position:fixed;inset:0;z-index:5;text-shadow:0px 0px 0px var(--pageBackgroundColor);pointer-events:all}.spinner-bg{position:absolute;top:0;left:0;transition:opacity .4s ease-in;opacity:.7;background-color:var(--appBackgroundColor)}.invisible{opacity:.01}.spinner-content{z-index:1;width:80%;height:80%;min-width:120px;min-height:120px;max-width:400px;max-height:400px}.msg-wrap{width:auto;max-width:400px;box-sizing:border-box;text-align:center;font-size:16px;color:var(--strongFontColor);line-height:32px;font-weight:500;word-break:break-word}@media all and (max-width: 767px){.msg-wrap{font-size:14px;line-height:24px}}#loader{animation:rotation 2s infinite linear;animation-play-state:running;width:50%;height:50%;min-width:120px;min-height:120px;max-width:240px;max-height:240px;margin:0 auto}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"] }]
118
- }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { delay: [{
119
- type: Input
120
- }], longMessageDelay: [{
121
- type: Input
122
- }], message: [{
123
- type: Input
124
- }], messageTakesLong: [{
125
- type: Input
126
- }], messageBottomWait: [{
127
- type: Input
128
- }], detailInfoMessage: [{
129
- type: Input
130
- }], infoType: [{
131
- type: Input
132
- }], showSpinner: [{
133
- type: Input
134
- }] } });
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tc3Bpbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idHYtYmFzZS1jb250cm9scy9zcmMvbGliL3dtLXNwaW5uZXIvd20tc3Bpbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idHYtYmFzZS1jb250cm9scy9zcmMvbGliL3dtLXNwaW5uZXIvd20tc3Bpbm5lci5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLEtBQUssRUFBNkIsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFnQixLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQVFsRCxNQUFNLE9BQU8sZ0JBQWdCO0lBd0MzQixZQUFvQixJQUFZLEVBQVUsTUFBeUI7UUFBL0MsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBdEMzRCxRQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBS3JCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsMEJBQXFCLEdBQUcsR0FBRyxDQUFDO1FBQzVCLGNBQVMsR0FBRyxHQUFHLENBQUM7UUFFUCxVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2QscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLFlBQU8sR0FBVyw4QkFBOEIsQ0FBQztRQUNqRCxxQkFBZ0IsR0FBRyw4Q0FBOEMsQ0FBQztRQUNsRSxzQkFBaUIsR0FBVyxhQUFhLENBQUM7UUFFMUMsYUFBUSxHQUFhLFFBQVEs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QUFnQjtrQkFONUIsU0FBUzsrQkFDRSxZQUFZLG1CQUdMLHVCQUF1QixDQUFDLE1BQU07NkhBZS9CLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLGlCQUFpQjtzQkFBaEMsS0FBSztnQkFDVSxpQkFBaUI7c0JBQWhDLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFJYyxXQUFXO3NCQUE5QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgR3VpZCB9IGZyb20gJy4uLy4uL21vZGVscy9ndWlkRXh0ZW5zaW9uJztcclxuaW1wb3J0IHsgSW5mb1R5cGUgfSBmcm9tICcuLi93bS1pbmZvL2luZm8tbW9kZWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnd20tc3Bpbm5lcicsXHJcbiAgc3R5bGVVcmxzOiBbJy4vd20tc3Bpbm5lci5zY3NzJ10sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3dtLXNwaW5uZXIuaHRtbCcsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFNwaW5uZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIHByaXZhdGUgdWlkID0gR3VpZC5uZXdHdWlkKCk7XHJcblxyXG4gIHByaXZhdGUgX2xvbmdNZXNzYWdlVGltZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgX3Nob3dPdmVybGF5VGltZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIF9zdGFydERhdGU7XHJcbiAgcHJpdmF0ZSBfaW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICBwdWJsaWMgaXNPdmVybGF5VmlzaWJsZSA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpc092ZXJsYXlDb250cmFzdCA9IGZhbHNlO1xyXG4gIHB1YmxpYyBtaW5UaW1lT2ZWaXNpYmlsaXR5TXMgPSA1MDA7XHJcbiAgcHVibGljIHNob3dEZWxheSA9IDI1MDtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGRlbGF5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGxvbmdNZXNzYWdlRGVsYXkgPSAxMjUwMDtcclxuICBASW5wdXQoKSBwdWJsaWMgbWVzc2FnZTogc3RyaW5nID0gJ1dhaXRpbmcgZm9yIGRhdGEgZnJvbSBzZXJ2ZXInO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtZXNzYWdlVGFrZXNMb25nID0gJ1JlcXVlc3QgaXMgdGFraW5nIGEgYml0IGxvbmdlciB0aGFuIGV4cGVjdGVkJztcclxuICBASW5wdXQoKSBwdWJsaWMgbWVzc2FnZUJvdHRvbVdhaXQ6IHN0cmluZyA9ICdQbGVhc2UgV2FpdCc7XHJcbiAgQElucHV0KCkgcHVibGljIGRldGFpbEluZm9NZXNzYWdlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGluZm9UeXBlOiBJbmZvVHlwZSA9IEluZm9UeXBlLkVycm9yO1xyXG5cclxuICBwcml2YXRlIF9zaG93U3Bpbm5lcjogYm9vbGVhbjtcclxuICBwdWJsaWMgZ2V0IHNob3dTcGlubmVyKCkgeyByZXR1cm4gdGhpcy5fc2hvd1NwaW5uZXI7IH1cclxuICBASW5wdXQoKSBwdWJsaWMgc2V0IHNob3dTcGlubmVyKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dHJpcGxlLWVxdWFscyB3ZSBzaG91bGQgdHJlYXQgYm9vbCBmYWxzZSBhbmQgYm9vbCB1bmRlZmluZWQgYXMgc2FtZS4gVGhlIHNhbWUgZm9yIGFsbCBvdGhlciBjYXNlcy5cclxuICAgIGlmICh0aGlzLl9zaG93U3Bpbm5lciA9PSB2YWx1ZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5fc2hvd1NwaW5uZXIgPSB2YWx1ZTtcclxuICAgIHRoaXMudW5zdWJzY3JpYmVUaW1lcnMoKTtcclxuXHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgY29uc29sZS5sb2coJ3NwaW5uZXIgc3RhcnRlZCcsIHRoaXMudWlkKTtcclxuICAgICAgLy8gYmxvY2sgVUksIGtlZXAgaXQgbGlnaHRcclxuICAgICAgdGhpcy5pc092ZXJsYXlWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zdWJzY3JpYmVUaW1lcnMoKTtcclxuICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0b3BTaG93aW5nUHJvZ3Jlc3MoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgem9uZTogTmdab25lLCBwcml2YXRlIGNoYW5nZTogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5faW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZygnZGVzdHJveScpO1xyXG4gICAgdGhpcy51bnN1YnNjcmliZVRpbWVycygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUaW1lcnMoKSB7XHJcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICAvLyBzaG93IGxvbmcgd2FpdCBtZXNzYWdlIGFmdGVyIGZldyBjb25maWd1cmVkIHNlY29uZHNcclxuICAgICAgY29uc3QgbG9uZ01lc3NhZ2VUaW1lciA9IHRpbWVyKHRoaXMubG9uZ01lc3NhZ2VEZWxheSk7XHJcbiAgICAgIHRoaXMuX2xvbmdNZXNzYWdlVGltZVN1YnNjcmlwdGlvbiA9IGxvbmdNZXNzYWdlVGltZXIuc3Vic2NyaWJlKHQgPT4ge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZSA9IHRoaXMubWVzc2FnZVRha2VzTG9uZztcclxuICAgICAgICB0aGlzLmNoYW5nZS5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5fbG9uZ01lc3NhZ2VUaW1lU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gZHJhdyBvdmVybGF5IG1lc3NhZ2UgYWZ0ZXIgZmV3IGNvbmZpZ3VyZWQgc2Vjb25kc1xyXG4gICAgICBpZiAoIXRoaXMuZGVsYXkpIHtcclxuICAgICAgICB0aGlzLnN0YXJ0U2hvd2luZ1Byb2dyZXNzKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHNob3dBZnRlckRlbGF5VGltZXIgPSB0aW1lcih0aGlzLnNob3dEZWxheSk7XHJcbiAgICAgIHRoaXMuX3Nob3dPdmVybGF5VGltZXJTdWJzY3JpcHRpb24gPSBzaG93QWZ0ZXJEZWxheVRpbWVyLnN1YnNjcmliZSh0ID0+IHtcclxuICAgICAgICBpZiAodGhpcy5zaG93U3Bpbm5lcikgdGhpcy5zdGFydFNob3dpbmdQcm9ncmVzcygpO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLl9zaG93T3ZlcmxheVRpbWVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVuc3Vic2NyaWJlVGltZXJzKCkge1xyXG4gICAgaWYgKHRoaXMuX2xvbmdNZXNzYWdlVGltZVN1YnNjcmlwdGlvbikgdGhpcy5fbG9uZ01lc3NhZ2VUaW1lU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICBpZiAodGhpcy5fc2hvd092ZXJsYXlUaW1lclN1YnNjcmlwdGlvbikgdGhpcy5fc2hvd092ZXJsYXlUaW1lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdG9wU2hvd2luZ1Byb2dyZXNzKCkge1xyXG4gICAgaWYgKHRoaXMuX3N0YXJ0RGF0ZSkge1xyXG4gICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgY29uc3QgZHVyYXRpb24gPSAobm93IC0gdGhpcy5fc3RhcnREYXRlLmdldFRpbWUoKSk7IC8vIG1zXHJcbiAgICAgIGlmIChkdXJhdGlvbiA8IHRoaXMubWluVGltZU9mVmlzaWJpbGl0eU1zKSB7XHJcbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICAgIC8vIGxldCBpdCBiZSBhdCBsZWFzdCBvbmUgc2Vjb25kLlxyXG4gICAgICAgICAgY29uc29sZS5sb2coJ3JlbWFpbnMnLCB0aGlzLm1pblRpbWVPZlZpc2liaWxpdHlNcyAtIGR1cmF0aW9uKTtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5kb1N0b3BQcm9ncmVzcygpLCB0aGlzLm1pblRpbWVPZlZpc2liaWxpdHlNcyAtIGR1cmF0aW9uKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZG9TdG9wUHJvZ3Jlc3MoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhcnRTaG93aW5nUHJvZ3Jlc3MoKSB7XHJcbiAgICBjb25zb2xlLmxvZygnY29udHJhc3Qgc3Bpbm5lcicsIHRoaXMudWlkKTtcclxuICAgIHRoaXMuX3N0YXJ0RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICB0aGlzLmlzT3ZlcmxheUNvbnRyYXN0ID0gdHJ1ZTtcclxuICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkb1N0b3BQcm9ncmVzcygpIHtcclxuICAgIGNvbnNvbGUubG9nKCdzcGlubmVyIGVuZGVkJywgdGhpcy51aWQpO1xyXG4gICAgdGhpcy5pc092ZXJsYXlDb250cmFzdCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc092ZXJsYXlWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLl9zdGFydERhdGUgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGV0ZWN0Q2hhbmdlcygpIHtcclxuICAgIGlmICghdGhpcy5faW5pdGlhbGl6ZWQpIHJldHVybjtcclxuICAgIHRoaXMuY2hhbmdlLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzcGlubmVyLXdyYXAgZmxleC1jb2wgd2gtMTAwXCIgKm5nSWY9XCJpc092ZXJsYXlWaXNpYmxlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1iZyB3aC0xMDBcIiBbbmdDbGFzc109XCJ7J2ludmlzaWJsZSc6ICFpc092ZXJsYXlDb250cmFzdCB9XCI+PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1jb250ZW50IGlubGluZS1jb2wgbWFyZ2luWEEgYWxpZ24tY2VudGVyXCIgW25nQ2xhc3NdPVwieydpbnZpc2libGUnOiAhaXNPdmVybGF5Q29udHJhc3QgfVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtc2ctd3JhcCBtYXJnaW5Cb3R0b21YOFwiPlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtc2dcIj57e21lc3NhZ2V9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDx3bS1pbmZvIGNsYXNzPVwiaW5mb1wiIFt0eXBlXT1cImluZm9UeXBlXCIgcG9wdXBQb3NpdGlvbj1cInRvcC1jZW50ZXJcIiBcclxuICAgICAgICAgICAgICAgICAgICBbaWNvbkFzVGVtcGxhdGVdPVwiaW5mb1R5cGU9PT0yXCIgW3VzZVRoZW1lRm9ySWNvblRlbXBsYXRlXT1cImluZm9UeXBlPT09MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkZXRhaWxJbmZvTWVzc2FnZVwiIFtoZWFkZXJdPVwiZGV0YWlsSW5mb01lc3NhZ2VcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA0cHhcIj48L3dtLWluZm8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zZ1wiPnt7bWVzc2FnZUJvdHRvbVdhaXR9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMTY4IDE2OFwiIGlkPVwibG9hZGVyXCI+XHJcbiAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMzguMDc4JVwiIHgyPVwiNC45NDElXCIgeTE9XCI4LjQxMSVcIiB5Mj1cIjE2Ljk4NyVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIwJVwiIHN0b3AtY29sb3I9XCJ2YXIoLS1icmFuZENvbG9yKVwiIHN0b3Atb3BhY2l0eT1cIjAuMVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiNjEuNTU0JVwiIHN0b3AtY29sb3I9XCJ2YXIoLS1icmFuZENvbG9yKVwiIHN0b3Atb3BhY2l0eT1cIjAuNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMTAwJVwiIHN0b3AtY29sb3I9XCJ2YXIoLS1icmFuZENvbG9yKVwiIHN0b3Atb3BhY2l0eT1cIjAuNVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxyXG4gICAgICAgICAgICAgICAgPHJhZGlhbEdyYWRpZW50IGlkPVwiYlwiIGN5PVwiNDMuODM1JVwiIHI9XCI1NC45JVwiIGZ4PVwiNTAlXCIgZnk9XCI0My44MzUlXCJcclxuICAgICAgICAgICAgICAgICAgICBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgtLjc3OTEzIC42MjY4NyAtLjY0ODUgLS44MDYwMiAxLjE3NCAuNDc4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjAlXCIgc3RvcC1jb2xvcj1cIiNGRkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjEwMCVcIiBzdG9wLWNvbG9yPVwidmFyKC0tYnJhbmRDb2xvcilcIiBzdG9wLW9wYWNpdHk9XCIwLjVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9yYWRpYWxHcmFkaWVudD5cclxuICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICA8ZyBmaWxsPVwibm9uZVwiIGZpbGwtcnVsZT1cImV2ZW5vZGRcIj5cclxuICAgICAgICAgICAgICAgIDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxMCAxMClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2U9XCJ1cmwoI2EpXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjE5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi4xOTggMjcuNzlDNi4wNjIgNDAuNDUzIDAgNTYuNTE4IDAgNzRjMCA0MC44NyAzMy4xMyA3NCA3NCA3NHM3NC0zMy4xMyA3NC03NGMwLTI0LjYxMS0xMi4wMTQtNDYuNDE2LTMwLjQ5OC01OS44N0MxMDUuMjkyIDUuMjQ0IDkwLjI1OCAwIDc0IDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxNi41XCIgY3k9XCIyNy41XCIgcj1cIjkuNVwiIGZpbGw9XCJ1cmwoI2IpXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcblxyXG48L2Rpdj4iXX0=
@@ -1,18 +0,0 @@
1
- import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class WmStateIconComponent {
4
- constructor() {
5
- this.state = 'ok';
6
- }
7
- ngOnInit() {
8
- }
9
- }
10
- WmStateIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WmStateIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11
- WmStateIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: WmStateIconComponent, selector: "wm-state-icon", inputs: { state: "state" }, ngImport: i0, template: "<!--workaround for css image resolve plugin-->\r\n<div class=\"icon-wrapper {{state}}\" style=\"background-image: 'url(./assets/icon/state-icons.png)'\">\r\n\r\n</div>", styles: ["@media print{body{all:unset!important}.wm-page{margin:0!important;display:block!important}.not-printable{display:none!important}*{visibility:hidden}.printable,.printable *{visibility:visible!important}}.icon-wrapper{margin:0 auto;text-align:center;width:50px;height:50px}.ok{background-position-x:-77px;background-position-y:-82px}.warning{background-position-x:-129px;background-position-y:-82px}.error-i{background-position-x:-321px;background-position-y:-82px;width:70px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WmStateIconComponent, decorators: [{
13
- type: Component,
14
- args: [{ selector: 'wm-state-icon', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--workaround for css image resolve plugin-->\r\n<div class=\"icon-wrapper {{state}}\" style=\"background-image: 'url(./assets/icon/state-icons.png)'\">\r\n\r\n</div>", styles: ["@media print{body{all:unset!important}.wm-page{margin:0!important;display:block!important}.not-printable{display:none!important}*{visibility:hidden}.printable,.printable *{visibility:visible!important}}.icon-wrapper{margin:0 auto;text-align:center;width:50px;height:50px}.ok{background-position-x:-77px;background-position-y:-82px}.warning{background-position-x:-129px;background-position-y:-82px}.error-i{background-position-x:-321px;background-position-y:-82px;width:70px}\n"] }]
15
- }], ctorParameters: function () { return []; }, propDecorators: { state: [{
16
- type: Input
17
- }] } });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tc3RhdGUtaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idHYtYmFzZS1jb250cm9scy9zcmMvbGliL3dtLXN0YXRlLWljb24vd20tc3RhdGUtaWNvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idHYtYmFzZS1jb250cm9scy9zcmMvbGliL3dtLXN0YXRlLWljb24vd20tc3RhdGUtaWNvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFRbEYsTUFBTSxPQUFPLG9CQUFvQjtJQUkvQjtRQUZnQixVQUFLLEdBQVcsSUFBSSxDQUFDO0lBRXJCLENBQUM7SUFFakIsUUFBUTtJQUNSLENBQUM7O2lIQVBVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLGlGQ1JqQyx5S0FHTTsyRkRLTyxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0UsZUFBZSxtQkFHUix1QkFBdUIsQ0FBQyxNQUFNOzBFQUkvQixLQUFLO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd3bS1zdGF0ZS1pY29uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vd20tc3RhdGUtaWNvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vd20tc3RhdGUtaWNvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXbVN0YXRlSWNvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBzdGF0ZTogc3RyaW5nID0gJ29rJztcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8IS0td29ya2Fyb3VuZCBmb3IgY3NzIGltYWdlIHJlc29sdmUgcGx1Z2luLS0+XHJcbjxkaXYgY2xhc3M9XCJpY29uLXdyYXBwZXIge3tzdGF0ZX19XCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWltYWdlOiAndXJsKC4vYXNzZXRzL2ljb24vc3RhdGUtaWNvbnMucG5nKSdcIj5cclxuXHJcbjwvZGl2PiJdfQ==
@@ -1,71 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- export class WmTemplateImageComponent {
5
- constructor() {
6
- this.require = ['mask-image', '-webkit-mask-image'];
7
- this.classes = 'icon-svg';
8
- this._size = '24px';
9
- this._sizeBox = undefined;
10
- }
11
- get size() { return this._size; }
12
- set size(value) {
13
- this._size = value;
14
- }
15
- get sizeBox() { return this._sizeBox; }
16
- set sizeBox(value) {
17
- this._sizeBox = value;
18
- }
19
- get getStyles() {
20
- if (!this.container.nativeElement)
21
- return undefined;
22
- if (this.require.some(it => this.container.nativeElement.style[it] !== undefined)) {
23
- return {
24
- '-webkit-mask-position': 'center',
25
- '-webkit-mask-repeat': 'no-repeat',
26
- '-webkit-mask-size': this.size,
27
- '-webkit-mask-image': `url(./assets/icon/svg/${this.icon}.svg)`,
28
- 'mask-image': `url(./assets/icon/svg/${this.icon}.svg)`,
29
- 'mask-size': this.size,
30
- 'width': this.sizeBox ? this.sizeBox : this.size,
31
- 'height': this.sizeBox ? this.sizeBox : this.size,
32
- 'background-color': this.backgroundColor,
33
- };
34
- }
35
- return {
36
- 'background-image': `url(./assets/icon/svg/${this.icon}.svg)`,
37
- 'background-repeat': 'no-repeat',
38
- 'background-position': 'center',
39
- 'background-size': 'contain',
40
- 'background-color': 'transparent',
41
- 'width': this.sizeBox ? this.sizeBox : this.size,
42
- 'height': this.sizeBox ? this.sizeBox : this.size
43
- };
44
- }
45
- }
46
- WmTemplateImageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WmTemplateImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
47
- WmTemplateImageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: WmTemplateImageComponent, selector: "wm-template-image", inputs: { icon: "icon", disabled: "disabled", active: "active", light: "light", classes: "classes", backgroundColor: "backgroundColor", size: "size", sizeBox: "sizeBox" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["maskContainer"], descendants: true, static: true }], ngImport: i0, template: "<div #maskContainer class=\"{{classes}}\" [ngClass]=\"{'disabled': disabled,\r\n'active': active, 'light': light }\" [ngStyle]=\"getStyles\">\r\n</div>", styles: ["@media print{body{all:unset!important}.wm-page{margin:0!important;display:block!important}.not-printable{display:none!important}*{visibility:hidden}.printable,.printable *{visibility:visible!important}}:host{display:block;margin:auto}.icon-svg{background-color:var(--strongFontColor)}.disabled{background-color:var(--mediumFontColor)}.active{background-color:var(--brandColor);border:none}.light{background-color:var(--disabledTextColor)}.on-brand{background-color:var(--onBrandTextColor)}.on-disabled{background-color:var(--disabledTextColor)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WmTemplateImageComponent, decorators: [{
49
- type: Component,
50
- args: [{ selector: 'wm-template-image', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #maskContainer class=\"{{classes}}\" [ngClass]=\"{'disabled': disabled,\r\n'active': active, 'light': light }\" [ngStyle]=\"getStyles\">\r\n</div>", styles: ["@media print{body{all:unset!important}.wm-page{margin:0!important;display:block!important}.not-printable{display:none!important}*{visibility:hidden}.printable,.printable *{visibility:visible!important}}:host{display:block;margin:auto}.icon-svg{background-color:var(--strongFontColor)}.disabled{background-color:var(--mediumFontColor)}.active{background-color:var(--brandColor);border:none}.light{background-color:var(--disabledTextColor)}.on-brand{background-color:var(--onBrandTextColor)}.on-disabled{background-color:var(--disabledTextColor)}\n"] }]
51
- }], propDecorators: { container: [{
52
- type: ViewChild,
53
- args: ['maskContainer', { static: true }]
54
- }], icon: [{
55
- type: Input
56
- }], disabled: [{
57
- type: Input
58
- }], active: [{
59
- type: Input
60
- }], light: [{
61
- type: Input
62
- }], classes: [{
63
- type: Input
64
- }], backgroundColor: [{
65
- type: Input
66
- }], size: [{
67
- type: Input
68
- }], sizeBox: [{
69
- type: Input
70
- }] } });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tdGVtcGxhdGUtaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnR2LWJhc2UtY29udHJvbHMvc3JjL2xpYi93bS10YW1wbGF0ZS1pbWFnZS93bS10ZW1wbGF0ZS1pbWFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idHYtYmFzZS1jb250cm9scy9zcmMvbGliL3dtLXRhbXBsYXRlLWltYWdlL3dtLXRlbXBsYXRlLWltYWdlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFTakcsTUFBTSxPQUFPLHdCQUF3QjtJQVByQztRQVNFLFlBQU8sR0FBRyxDQUFDLFlBQVksRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBS3RDLFlBQU8sR0FBRyxVQUFVLENBQUM7UUFHdEIsVUFBSyxHQUFXLE1BQU0sQ0FBQztRQUt2QixhQUFRLEdBQVcsU0FBUyxDQUFDO0tBK0J0QztJQW5DQyxJQUFXLElBQUksS0FBSyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLElBQW9CLElBQUksQ0FBQyxLQUFhO1FBQ3BDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFXLE9BQU8sS0FBSyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzlDLElBQW9CLE9BQU8sQ0FBQyxLQUFhO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDcEQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxTQUFTLENBQUMsRUFBRTtZQUNqRixPQUFPO2dCQUNMLHVCQUF1QixFQUFFLFFBQVE7Z0JBQ2pDLHFCQUFxQixFQUFFLFdBQVc7Z0JBQ2xDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUM5QixvQkFBb0IsRUFBRSx5QkFBeUIsSUFBSSxDQUFDLElBQUksT0FBTztnQkFDL0QsWUFBWSxFQUFFLHlCQUF5QixJQUFJLENBQUMsSUFBSSxPQUFPO2dCQUN2RCxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ3RCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSTtnQkFDaEQsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJO2dCQUNqRCxrQkFBa0IsRUFBRSxJQUFJLENBQUMsZUFBZTthQUN6QyxDQUFDO1NBQ0g7UUFDRCxPQUFPO1lBQ0wsa0JBQWtCLEVBQUUseUJBQXlCLElBQUksQ0FBQyxJQUFJLE9BQU87WUFDN0QsbUJBQW1CLEVBQUUsV0FBVztZQUNoQyxxQkFBcUIsRUFBRSxRQUFRO1lBQy9CLGlCQUFpQixFQUFFLFNBQVM7WUFDNUIsa0JBQWtCLEVBQUUsYUFBYTtZQUNqQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDaEQsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJO1NBQ2xELENBQUM7SUFDSixDQUFDOztxSEE3Q1Usd0JBQXdCO3lHQUF4Qix3QkFBd0IsK1ZDVHJDLHlKQUVNOzJGRE9PLHdCQUF3QjtrQkFQcEMsU0FBUzsrQkFDRSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTTs4QkFJRCxTQUFTO3NCQUF0RCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRW5DLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBSWMsSUFBSTtzQkFBdkIsS0FBSztnQkFLYyxPQUFPO3NCQUExQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd3bS10ZW1wbGF0ZS1pbWFnZScsXHJcbiAgc3R5bGVVcmxzOiBbJy4vd20tdGVtcGxhdGUtaW1hZ2Uuc2NzcyddLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93bS10ZW1wbGF0ZS1pbWFnZS5odG1sJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFdtVGVtcGxhdGVJbWFnZUNvbXBvbmVudCB7XHJcbiAgQFZpZXdDaGlsZCgnbWFza0NvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pIGNvbnRhaW5lcjogRWxlbWVudFJlZjtcclxuICByZXF1aXJlID0gWydtYXNrLWltYWdlJywgJy13ZWJraXQtbWFzay1pbWFnZSddO1xyXG4gIEBJbnB1dCgpIGljb246IHN0cmluZztcclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBhY3RpdmU6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbGlnaHQ6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY2xhc3NlcyA9ICdpY29uLXN2Zyc7XHJcbiAgQElucHV0KCkgYmFja2dyb3VuZENvbG9yO1xyXG5cclxuICBwcml2YXRlIF9zaXplOiBzdHJpbmcgPSAnMjRweCc7XHJcbiAgcHVibGljIGdldCBzaXplKCkgeyByZXR1cm4gdGhpcy5fc2l6ZTsgfVxyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgc2l6ZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9zaXplID0gdmFsdWU7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3NpemVCb3g6IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgZ2V0IHNpemVCb3goKSB7IHJldHVybiB0aGlzLl9zaXplQm94OyB9XHJcbiAgQElucHV0KCkgcHVibGljIHNldCBzaXplQm94KHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3NpemVCb3ggPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBnZXRTdHlsZXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICBpZiAodGhpcy5yZXF1aXJlLnNvbWUoaXQgPT4gdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZVtpdF0gIT09IHVuZGVmaW5lZCkpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAnLXdlYmtpdC1tYXNrLXBvc2l0aW9uJzogJ2NlbnRlcicsXHJcbiAgICAgICAgJy13ZWJraXQtbWFzay1yZXBlYXQnOiAnbm8tcmVwZWF0JyxcclxuICAgICAgICAnLXdlYmtpdC1tYXNrLXNpemUnOiB0aGlzLnNpemUsXHJcbiAgICAgICAgJy13ZWJraXQtbWFzay1pbWFnZSc6IGB1cmwoLi9hc3NldHMvaWNvbi9zdmcvJHt0aGlzLmljb259LnN2ZylgLFxyXG4gICAgICAgICdtYXNrLWltYWdlJzogYHVybCguL2Fzc2V0cy9pY29uL3N2Zy8ke3RoaXMuaWNvbn0uc3ZnKWAsXHJcbiAgICAgICAgJ21hc2stc2l6ZSc6IHRoaXMuc2l6ZSxcclxuICAgICAgICAnd2lkdGgnOiB0aGlzLnNpemVCb3ggPyB0aGlzLnNpemVCb3ggOiB0aGlzLnNpemUsXHJcbiAgICAgICAgJ2hlaWdodCc6IHRoaXMuc2l6ZUJveCA/IHRoaXMuc2l6ZUJveCA6IHRoaXMuc2l6ZSxcclxuICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6IHRoaXMuYmFja2dyb3VuZENvbG9yLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJ2JhY2tncm91bmQtaW1hZ2UnOiBgdXJsKC4vYXNzZXRzL2ljb24vc3ZnLyR7dGhpcy5pY29ufS5zdmcpYCxcclxuICAgICAgJ2JhY2tncm91bmQtcmVwZWF0JzogJ25vLXJlcGVhdCcsXHJcbiAgICAgICdiYWNrZ3JvdW5kLXBvc2l0aW9uJzogJ2NlbnRlcicsXHJcbiAgICAgICdiYWNrZ3JvdW5kLXNpemUnOiAnY29udGFpbicsXHJcbiAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogJ3RyYW5zcGFyZW50JyxcclxuICAgICAgJ3dpZHRoJzogdGhpcy5zaXplQm94ID8gdGhpcy5zaXplQm94IDogdGhpcy5zaXplLFxyXG4gICAgICAnaGVpZ2h0JzogdGhpcy5zaXplQm94ID8gdGhpcy5zaXplQm94IDogdGhpcy5zaXplXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICNtYXNrQ29udGFpbmVyIGNsYXNzPVwie3tjbGFzc2VzfX1cIiBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzogZGlzYWJsZWQsXHJcbidhY3RpdmUnOiBhY3RpdmUsICdsaWdodCc6IGxpZ2h0IH1cIiBbbmdTdHlsZV09XCJnZXRTdHlsZXNcIj5cclxuPC9kaXY+Il19