@design-factory/design-factory 18.1.1 → 19.0.1

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 (140) hide show
  1. package/README.md +4 -4
  2. package/design-factory-initial-branding.css +1 -1
  3. package/design-factory.css +1 -1
  4. package/fesm2022/design-factory.mjs +748 -921
  5. package/fesm2022/design-factory.mjs.map +1 -1
  6. package/lib/angular/accessibility/components/skip-links-container/skip-links-container.component.d.ts +3 -9
  7. package/lib/angular/accessibility/directives/skip-link.directive.d.ts +3 -9
  8. package/lib/angular/card/manage-card-selection.directive.d.ts +5 -5
  9. package/lib/angular/datepicker/datepicker-range.directive.d.ts +5 -6
  10. package/lib/angular/datepicker/datepicker.module.d.ts +3 -5
  11. package/lib/angular/inputs/icon/inputicon.directive.d.ts +5 -6
  12. package/lib/angular/mediaqueries/ifMedia.directive.d.ts +8 -9
  13. package/lib/angular/modal/modal.service.d.ts +4 -0
  14. package/lib/angular/progressbar/progressbar.component.d.ts +18 -28
  15. package/lib/angular/progressindicator/default/default-spinner.component.d.ts +4 -4
  16. package/lib/angular/progressindicator/progressindicator-backdrop.component.d.ts +4 -4
  17. package/lib/angular/progressindicator/progressindicator-container.component.d.ts +5 -7
  18. package/lib/angular/progressindicator/progressindicator.directive.d.ts +9 -11
  19. package/lib/angular/selects/events/manage-badge-events.directive.d.ts +4 -5
  20. package/lib/angular/selects/option-highlight.directive.d.ts +7 -12
  21. package/lib/angular/sidenav/dfSideNavCollapse.d.ts +16 -18
  22. package/lib/angular/sidenav/excludeTrap.directive.d.ts +9 -10
  23. package/lib/angular/sidenav/sidenav.component.d.ts +7 -8
  24. package/lib/angular/sidenav/sidenavlist.component.d.ts +8 -8
  25. package/lib/angular/slider/direction/sliderdirection.directive.d.ts +5 -7
  26. package/lib/angular/slider/lib/slider-element.directive.d.ts +2 -1
  27. package/lib/angular/slider/lib/slider-handle.directive.d.ts +1 -1
  28. package/lib/angular/slider/lib/slider-label.directive.d.ts +1 -1
  29. package/lib/angular/slider/lib/slider.component.d.ts +1 -1
  30. package/lib/angular/slider/lib/tooltip-wrapper.component.d.ts +1 -1
  31. package/lib/angular/slider/slider.module.d.ts +1 -1
  32. package/lib/angular/stepper/stepper.component.d.ts +7 -8
  33. package/lib/angular/utils/titleTruncate.directive.d.ts +2 -3
  34. package/lib/angular/waves-of-progress/waves.directive.d.ts +4 -3
  35. package/lib/index.d.ts +0 -1
  36. package/package.json +16 -16
  37. package/schematics/ng-add/index.js +1 -1
  38. package/styles/scss/agnosui/_variables.scss +9 -3
  39. package/styles/scss/bootstrap/_variables.scss +54 -12
  40. package/styles/scss/components/accordion/_accordion.scss +67 -6
  41. package/styles/scss/components/accordion/_accordion.variables.scss +2 -0
  42. package/styles/scss/components/alert/_alert.scss +3 -2
  43. package/styles/scss/components/badge/_badge.scss +13 -3
  44. package/styles/scss/components/badge/_badge.variables.scss +1 -0
  45. package/styles/scss/components/button/_button.scss +5 -0
  46. package/styles/scss/components/form/_form.scss +8 -0
  47. package/styles/scss/components/sidenav/_sidenav.scss +5 -2
  48. package/styles/scss/components/toggle/_toggle.scss +1 -0
  49. package/styles/scss/df-styles-namespace.scss +3 -1
  50. package/styles/scss/df-styles.scss +3 -1
  51. package/styles/scss/themes/brand2023/_variables.scss +80 -28
  52. package/esm2022/design-factory.mjs +0 -5
  53. package/esm2022/environment.mjs +0 -5
  54. package/esm2022/index.mjs +0 -5
  55. package/esm2022/lib/angular/accessibility/accessibility.module.mjs +0 -19
  56. package/esm2022/lib/angular/accessibility/components/skip-links-container/skip-links-container.component.mjs +0 -32
  57. package/esm2022/lib/angular/accessibility/directives/skip-link.directive.mjs +0 -64
  58. package/esm2022/lib/angular/alert/alert.module.mjs +0 -17
  59. package/esm2022/lib/angular/animation/ngbTransition.mjs +0 -76
  60. package/esm2022/lib/angular/animation/util.mjs +0 -30
  61. package/esm2022/lib/angular/card/card-advanced.module.mjs +0 -17
  62. package/esm2022/lib/angular/card/manage-card-selection.directive.mjs +0 -47
  63. package/esm2022/lib/angular/datepicker/closedatepicker.directive.mjs +0 -38
  64. package/esm2022/lib/angular/datepicker/datepicker-keyboard-nav.service.mjs +0 -39
  65. package/esm2022/lib/angular/datepicker/datepicker-range.directive.mjs +0 -101
  66. package/esm2022/lib/angular/datepicker/datepicker-range.service.mjs +0 -97
  67. package/esm2022/lib/angular/datepicker/datepicker.module.mjs +0 -42
  68. package/esm2022/lib/angular/df.module.mjs +0 -102
  69. package/esm2022/lib/angular/footer/footer.module.mjs +0 -17
  70. package/esm2022/lib/angular/icon/amadeus-icon.mjs +0 -79
  71. package/esm2022/lib/angular/icon/icon.module.mjs +0 -17
  72. package/esm2022/lib/angular/icon/insert/insert-icon.directive.mjs +0 -47
  73. package/esm2022/lib/angular/icon/insert/insert-icon.module.mjs +0 -17
  74. package/esm2022/lib/angular/inputs/click/trigger-click.directive.mjs +0 -28
  75. package/esm2022/lib/angular/inputs/icon/inputicon.directive.mjs +0 -95
  76. package/esm2022/lib/angular/inputs/input-advanced.module.mjs +0 -19
  77. package/esm2022/lib/angular/mediaqueries/ifMedia.directive.mjs +0 -52
  78. package/esm2022/lib/angular/mediaqueries/media.module.mjs +0 -17
  79. package/esm2022/lib/angular/mediaqueries/media.service.mjs +0 -46
  80. package/esm2022/lib/angular/mediaqueries/mediaUtils.service.mjs +0 -185
  81. package/esm2022/lib/angular/modal/modal.service.mjs +0 -36
  82. package/esm2022/lib/angular/popover/config/popover.config.mjs +0 -15
  83. package/esm2022/lib/angular/popover/popover.module.mjs +0 -17
  84. package/esm2022/lib/angular/progressbar/progressbar.component.mjs +0 -156
  85. package/esm2022/lib/angular/progressbar/progressbar.module.mjs +0 -18
  86. package/esm2022/lib/angular/progressindicator/default/default-spinner.component.mjs +0 -23
  87. package/esm2022/lib/angular/progressindicator/progressindicator-backdrop.component.mjs +0 -29
  88. package/esm2022/lib/angular/progressindicator/progressindicator-config.mjs +0 -25
  89. package/esm2022/lib/angular/progressindicator/progressindicator-container.component.mjs +0 -52
  90. package/esm2022/lib/angular/progressindicator/progressindicator-ref.mjs +0 -8
  91. package/esm2022/lib/angular/progressindicator/progressindicator.directive.mjs +0 -39
  92. package/esm2022/lib/angular/progressindicator/progressindicator.module.mjs +0 -45
  93. package/esm2022/lib/angular/progressindicator/progressindicator.service.mjs +0 -170
  94. package/esm2022/lib/angular/right-to-left/directionDetection.service.mjs +0 -32
  95. package/esm2022/lib/angular/selects/events/manage-badge-events.directive.mjs +0 -65
  96. package/esm2022/lib/angular/selects/nav/manage-nav-select.directive.mjs +0 -108
  97. package/esm2022/lib/angular/selects/option-highlight.directive.mjs +0 -59
  98. package/esm2022/lib/angular/selects/select.model.mjs +0 -2
  99. package/esm2022/lib/angular/selects/select.module.mjs +0 -22
  100. package/esm2022/lib/angular/sidenav/dfSideNavAnimation.mjs +0 -73
  101. package/esm2022/lib/angular/sidenav/dfSideNavCollapse.mjs +0 -94
  102. package/esm2022/lib/angular/sidenav/dfSideNavCollapse.module.mjs +0 -18
  103. package/esm2022/lib/angular/sidenav/dfSideNavCollapse.service.mjs +0 -37
  104. package/esm2022/lib/angular/sidenav/dfSideNavCollapseConfig.mjs +0 -27
  105. package/esm2022/lib/angular/sidenav/excludeTrap.directive.mjs +0 -55
  106. package/esm2022/lib/angular/sidenav/manage-sidenav.directive.mjs +0 -26
  107. package/esm2022/lib/angular/sidenav/sidenav-config.mjs +0 -25
  108. package/esm2022/lib/angular/sidenav/sidenav.component.mjs +0 -86
  109. package/esm2022/lib/angular/sidenav/sidenav.module.mjs +0 -52
  110. package/esm2022/lib/angular/sidenav/sidenav.service.mjs +0 -316
  111. package/esm2022/lib/angular/sidenav/sidenavlist.component.mjs +0 -59
  112. package/esm2022/lib/angular/slider/direction/sliderdirection.directive.mjs +0 -36
  113. package/esm2022/lib/angular/slider/lib/change-context.mjs +0 -3
  114. package/esm2022/lib/angular/slider/lib/compatibility-helper.mjs +0 -15
  115. package/esm2022/lib/angular/slider/lib/event-listener-helper.mjs +0 -77
  116. package/esm2022/lib/angular/slider/lib/event-listener.mjs +0 -3
  117. package/esm2022/lib/angular/slider/lib/math-helper.mjs +0 -15
  118. package/esm2022/lib/angular/slider/lib/options.mjs +0 -123
  119. package/esm2022/lib/angular/slider/lib/pointer-type.mjs +0 -9
  120. package/esm2022/lib/angular/slider/lib/slider-element.directive.mjs +0 -190
  121. package/esm2022/lib/angular/slider/lib/slider-handle.directive.mjs +0 -65
  122. package/esm2022/lib/angular/slider/lib/slider-label.directive.mjs +0 -41
  123. package/esm2022/lib/angular/slider/lib/slider.component.mjs +0 -1998
  124. package/esm2022/lib/angular/slider/lib/tooltip-wrapper.component.mjs +0 -23
  125. package/esm2022/lib/angular/slider/lib/value-helper.mjs +0 -50
  126. package/esm2022/lib/angular/slider/slider.module.mjs +0 -37
  127. package/esm2022/lib/angular/stepper/stepper.component.mjs +0 -65
  128. package/esm2022/lib/angular/stepper/stepper.directive.mjs +0 -174
  129. package/esm2022/lib/angular/stepper/stepper.module.mjs +0 -17
  130. package/esm2022/lib/angular/stepper/stepper.service.mjs +0 -213
  131. package/esm2022/lib/angular/toast/toast.module.mjs +0 -17
  132. package/esm2022/lib/angular/tooltip/tooltip.module.mjs +0 -18
  133. package/esm2022/lib/angular/tooltip/truncate/tooltipTruncate.directive.mjs +0 -31
  134. package/esm2022/lib/angular/utils/html-element-helper.mjs +0 -8
  135. package/esm2022/lib/angular/utils/scrollbar.service.mjs +0 -79
  136. package/esm2022/lib/angular/utils/titleTruncate.directive.mjs +0 -39
  137. package/esm2022/lib/angular/waves-of-progress/waves.directive.mjs +0 -86
  138. package/esm2022/lib/angular/waves-of-progress/waves.module.mjs +0 -16
  139. package/esm2022/lib/index.mjs +0 -93
  140. package/lib/angular/datepicker/closedatepicker.directive.d.ts +0 -10
@@ -1,213 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { BehaviorSubject } from 'rxjs';
3
- import * as i0 from "@angular/core";
4
- export class DfStepperService {
5
- constructor() {
6
- this.setFocus = false;
7
- this._stepperState$ = new BehaviorSubject({
8
- steps: [],
9
- active: 0,
10
- isLinear: false,
11
- isInline: false,
12
- isVertical: false
13
- });
14
- this._state = {
15
- steps: [],
16
- active: 0,
17
- isLinear: false,
18
- isInline: false,
19
- isVertical: false
20
- };
21
- this._completedLabel = 'Completed';
22
- this._warningLabel = 'Warning';
23
- this._stepperAriaLabel = 'Stepper';
24
- }
25
- get stepperState$() {
26
- return this._stepperState$.asObservable();
27
- }
28
- // initState must be used to push new Steps to the service
29
- get state() {
30
- return this._state;
31
- }
32
- dispatchStepperState() {
33
- this._stepperState$.next(this._state);
34
- }
35
- updateStepperState() {
36
- this._state = this.normalizeState(this._state);
37
- this.dispatchStepperState();
38
- }
39
- // API
40
- /**
41
- * Use this to init the list of Elements from your stepper
42
- *
43
- * Here we are not deep copying the array --> the function will change it
44
- */
45
- initStepperState(state) {
46
- // normalize the steps here
47
- this._state = this.normalizeState(state);
48
- this.dispatchStepperState();
49
- }
50
- /**
51
- * Use this to normalize the state of the stepper (completed, warning, current, future)
52
- * @param state
53
- * @returns
54
- */
55
- normalizeState(state) {
56
- const stepsList = [];
57
- for (let i = 0; i < state.steps.length; i++) {
58
- if (state.steps[i].warning) {
59
- stepsList.push({ ...state.steps[i], type: 'warning' });
60
- }
61
- else if (state.steps[i].completed) {
62
- stepsList.push({ ...state.steps[i], type: 'completed' });
63
- }
64
- else if (i === state.active || state.steps[i].visited) {
65
- stepsList.push({ ...state.steps[i], type: 'visited', visited: true });
66
- }
67
- else {
68
- stepsList.push({ ...state.steps[i], type: 'future', visited: false });
69
- }
70
- }
71
- return { ...state, steps: stepsList };
72
- }
73
- /**
74
- * Internal to get the stepper aria label in the template
75
- */
76
- get stepperAriaLabel() {
77
- return this._stepperAriaLabel;
78
- }
79
- /**
80
- * Use this to set the stepper aria label (i18n)
81
- */
82
- set stepperAriaLabel(label) {
83
- this._stepperAriaLabel = label;
84
- }
85
- /**
86
- * Internal to get the completed label in the template
87
- */
88
- get completedLabel() {
89
- return this._completedLabel;
90
- }
91
- /**
92
- * Internal to get the waring label in the template
93
- */
94
- get warningLabel() {
95
- return this._warningLabel;
96
- }
97
- /**
98
- * Use this to set the completed label (i18n)
99
- */
100
- set completedLabel(label) {
101
- this._completedLabel = label;
102
- }
103
- /**
104
- * Use this to set the warning label (i18n)
105
- */
106
- set warningLabel(label) {
107
- this._warningLabel = label;
108
- }
109
- /**
110
- * TODO make it customizable
111
- * @param index - index of the step
112
- * @returns - string of the step number to display
113
- */
114
- getStepNumberLabel(index) {
115
- return `${index + 1}`;
116
- }
117
- resetFocus() {
118
- this.setFocus = false;
119
- }
120
- /**
121
- *
122
- * @param isLinear - true if the stepper is linear
123
- */
124
- setLinear(isLinear) {
125
- this._state.isLinear = isLinear;
126
- this.dispatchStepperState();
127
- }
128
- /**
129
- *
130
- * @param isInline - true if the stepper is inline
131
- */
132
- setInline(isInline) {
133
- this._state.isInline = isInline;
134
- this.dispatchStepperState();
135
- }
136
- /**
137
- *
138
- * @param index - index of the step to select start at 0
139
- */
140
- selectStep(index) {
141
- if (index < 0 || index >= this._state.steps.length) {
142
- return;
143
- }
144
- this._state.active = index;
145
- this.updateStepperState();
146
- }
147
- /**
148
- * Same as selectStep but with focus on the step selected
149
- * @param index - index of the step to select start at 0
150
- */
151
- selectWithFocus(index) {
152
- if (index < 0 || index >= this._state.steps.length) {
153
- return;
154
- }
155
- this.setFocus = true;
156
- this.selectStep(index);
157
- }
158
- /**
159
- *
160
- * @param index - index of the step to complete start at 0
161
- */
162
- completeStep(index) {
163
- if (index < 0 || index >= this._state.steps.length) {
164
- return;
165
- }
166
- this._state.steps[index].completed = true;
167
- this._state.steps[index].warning = false;
168
- this.updateStepperState();
169
- }
170
- /**
171
- *
172
- * @param index - index of the step to complete start at 0
173
- */
174
- completeStepAndGoNext(index) {
175
- this.completeStep(index);
176
- this.selectStep(index + 1);
177
- }
178
- /**
179
- * Attention if the step was completed it will be uncompleted after.
180
- * @param index - index of the step to make Warning start at 0
181
- * @param warningLabel - label to display in the warning by default it will take the warningLabel if it exists or the label
182
- */
183
- makeWarning(index, warningLabel) {
184
- if (index < 0 || index >= this._state.steps.length) {
185
- return;
186
- }
187
- this._state.steps[index].warning = true;
188
- this._state.steps[index].completed = false;
189
- this._state.steps[index].warningLabel = warningLabel
190
- ? warningLabel
191
- : this._state.steps[index].warningLabel
192
- ? this._state.steps[index].warningLabel
193
- : this._state.steps[index].label;
194
- this.updateStepperState();
195
- }
196
- /**
197
- *
198
- * @param index - index of the step to remove Warning start at 0
199
- */
200
- removeWarning(index) {
201
- if (index < 0 || index >= this._state.steps.length) {
202
- return;
203
- }
204
- this._state.steps[index].warning = false;
205
- this.updateStepperState();
206
- }
207
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfStepperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
208
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfStepperService }); }
209
- }
210
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfStepperService, decorators: [{
211
- type: Injectable
212
- }] });
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWZhY3Rvcnkvc3JjL2xpYi9hbmd1bGFyL3N0ZXBwZXIvc3RlcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7QUFpQ25ELE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFRSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ0EsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBMkI7WUFDOUUsS0FBSyxFQUFFLEVBQUU7WUFDVCxNQUFNLEVBQUUsQ0FBQztZQUNULFFBQVEsRUFBRSxLQUFLO1lBQ2YsUUFBUSxFQUFFLEtBQUs7WUFDZixVQUFVLEVBQUUsS0FBSztTQUNsQixDQUFDLENBQUM7UUFDSyxXQUFNLEdBQTZCO1lBQ3pDLEtBQUssRUFBRSxFQUFFO1lBQ1QsTUFBTSxFQUFFLENBQUM7WUFDVCxRQUFRLEVBQUUsS0FBSztZQUNmLFFBQVEsRUFBRSxLQUFLO1lBQ2YsVUFBVSxFQUFFLEtBQUs7U0FDbEIsQ0FBQztRQUNNLG9CQUFlLEdBQUcsV0FBVyxDQUFDO1FBQzlCLGtCQUFhLEdBQUcsU0FBUyxDQUFDO1FBQzFCLHNCQUFpQixHQUFHLFNBQVMsQ0FBQztLQXlNdkM7SUF2TUMsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFDRCwwREFBMEQ7SUFDMUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hD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Q3JDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxhQUFhLENBQUMsS0FBYTtRQUN6QixJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25ELE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN6QyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDOzhHQTFOVSxnQkFBZ0I7a0hBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERmU3RlcHBlclN0ZXAge1xuICB3YXJuaW5nOiBib29sZWFuO1xuICBjb21wbGV0ZWQ6IGJvb2xlYW47XG4gIHZpc2l0ZWQ/OiBib29sZWFuO1xuICBsYWJlbDogc3RyaW5nO1xuICBhcmlhQ29udHJvbDogc3RyaW5nO1xuICB3YXJuaW5nTGFiZWw/OiBzdHJpbmc7XG4gIG9wdGlvbmFsTGFiZWw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIERmU3RlcFR5cGUgPSAnd2FybmluZycgfCAnY29tcGxldGVkJyB8ICdmdXR1cmUnIHwgJ3Zpc2l0ZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERmU3RlcHBlck5vcm1hbGl6ZWRTdGVwIGV4dGVuZHMgRGZTdGVwcGVyU3RlcCB7XG4gIHR5cGU6IERmU3RlcFR5cGU7XG59XG5leHBvcnQgaW50ZXJmYWNlIERmU3RlcHBlclN0YXRlIHtcbiAgc3RlcHM6IERmU3RlcHBlclN0ZXBbXTtcbiAgYWN0aXZlOiBudW1iZXI7XG4gIGlzTGluZWFyOiBib29sZWFuO1xuICBpc0lubGluZTogYm9vbGVhbjtcbiAgaXNWZXJ0aWNhbDogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRGZTdGVwcGVyTm9ybWFsaXplZFN0YXRlIHtcbiAgc3RlcHM6IERmU3RlcHBlck5vcm1hbGl6ZWRTdGVwW107XG4gIGFjdGl2ZTogbnVtYmVyO1xuICBpc0xpbmVhcjogYm9vbGVhbjtcbiAgaXNJbmxpbmU6IGJvb2xlYW47XG4gIGlzVmVydGljYWw6IGJvb2xlYW47XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEZlN0ZXBwZXJTZXJ2aWNlIHtcbiAgc2V0Rm9jdXMgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RlcHBlclN0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGZTdGVwcGVyTm9ybWFsaXplZFN0YXRlPih7XG4gICAgc3RlcHM6IFtdLFxuICAgIGFjdGl2ZTogMCxcbiAgICBpc0xpbmVhcjogZmFsc2UsXG4gICAgaXNJbmxpbmU6IGZhbHNlLFxuICAgIGlzVmVydGljYWw6IGZhbHNlXG4gIH0pO1xuICBwcml2YXRlIF9zdGF0ZTogRGZTdGVwcGVyTm9ybWFsaXplZFN0YXRlID0ge1xuICAgIHN0ZXBzOiBbXSxcbiAgICBhY3RpdmU6IDAsXG4gICAgaXNMaW5lYXI6IGZhbHNlLFxuICAgIGlzSW5saW5lOiBmYWxzZSxcbiAgICBpc1ZlcnRpY2FsOiBmYWxzZVxuICB9O1xuICBwcml2YXRlIF9jb21wbGV0ZWRMYWJlbCA9ICdDb21wbGV0ZWQnO1xuICBwcml2YXRlIF93YXJuaW5nTGFiZWwgPSAnV2FybmluZyc7XG4gIHByaXZhdGUgX3N0ZXBwZXJBcmlhTGFiZWwgPSAnU3RlcHBlcic7XG5cbiAgZ2V0IHN0ZXBwZXJTdGF0ZSQoKTogT2JzZXJ2YWJsZTxEZlN0ZXBwZXJOb3JtYWxpemVkU3RhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5fc3RlcHBlclN0YXRlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuICAvLyBpbml0U3RhdGUgbXVzdCBiZSB1c2VkIHRvIHB1c2ggbmV3IFN0ZXBzIHRvIHRoZSBzZXJ2aWNlXG4gIGdldCBzdGF0ZSgpOiBEZlN0ZXBwZXJOb3JtYWxpemVkU3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGF0Y2hTdGVwcGVyU3RhdGUoKSB7XG4gICAgdGhpcy5fc3RlcHBlclN0YXRlJC5uZXh0KHRoaXMuX3N0YXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3RlcHBlclN0YXRlKCkge1xuICAgIHRoaXMuX3N0YXRlID0gdGhpcy5ub3JtYWxpemVTdGF0ZSh0aGlzLl9zdGF0ZSBhcyBEZlN0ZXBwZXJTdGF0ZSk7XG4gICAgdGhpcy5kaXNwYXRjaFN0ZXBwZXJTdGF0ZSgpO1xuICB9XG5cbiAgLy8gQVBJXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBpbml0IHRoZSBsaXN0IG9mIEVsZW1lbnRzIGZyb20geW91ciBzdGVwcGVyXG4gICAqXG4gICAqIEhlcmUgd2UgYXJlIG5vdCBkZWVwIGNvcHlpbmcgdGhlIGFycmF5IC0tPiB0aGUgZnVuY3Rpb24gd2lsbCBjaGFuZ2UgaXRcbiAgICovXG4gIGluaXRTdGVwcGVyU3RhdGUoc3RhdGU6IERmU3RlcHBlclN0YXRlKSB7XG4gICAgLy8gbm9ybWFsaXplIHRoZSBzdGVwcyBoZXJlXG4gICAgdGhpcy5fc3RhdGUgPSB0aGlzLm5vcm1hbGl6ZVN0YXRlKHN0YXRlKTtcbiAgICB0aGlzLmRpc3BhdGNoU3RlcHBlclN0YXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gbm9ybWFsaXplIHRoZSBzdGF0ZSBvZiB0aGUgc3RlcHBlciAoY29tcGxldGVkLCB3YXJuaW5nLCBjdXJyZW50LCBmdXR1cmUpXG4gICAqIEBwYXJhbSBzdGF0ZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgbm9ybWFsaXplU3RhdGUoc3RhdGU6IERmU3RlcHBlclN0YXRlKTogRGZTdGVwcGVyTm9ybWFsaXplZFN0YXRlIHtcbiAgICBjb25zdCBzdGVwc0xpc3Q6IERmU3RlcHBlck5vcm1hbGl6ZWRTdGVwW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YXRlLnN0ZXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoc3RhdGUuc3RlcHNbaV0ud2FybmluZykge1xuICAgICAgICBzdGVwc0xpc3QucHVzaCh7IC4uLnN0YXRlLnN0ZXBzW2ldLCB0eXBlOiAnd2FybmluZycgfSk7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlLnN0ZXBzW2ldLmNvbXBsZXRlZCkge1xuICAgICAgICBzdGVwc0xpc3QucHVzaCh7IC4uLnN0YXRlLnN0ZXBzW2ldLCB0eXBlOiAnY29tcGxldGVkJyB9KTtcbiAgICAgIH0gZWxzZSBpZiAoaSA9PT0gc3RhdGUuYWN0aXZlIHx8IHN0YXRlLnN0ZXBzW2ldLnZpc2l0ZWQpIHtcbiAgICAgICAgc3RlcHNMaXN0LnB1c2goeyAuLi5zdGF0ZS5zdGVwc1tpXSwgdHlwZTogJ3Zpc2l0ZWQnLCB2aXNpdGVkOiB0cnVlIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RlcHNMaXN0LnB1c2goeyAuLi5zdGF0ZS5zdGVwc1tpXSwgdHlwZTogJ2Z1dHVyZScsIHZpc2l0ZWQ6IGZhbHNlIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyAuLi5zdGF0ZSwgc3RlcHM6IHN0ZXBzTGlzdCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEludGVybmFsIHRvIGdldCB0aGUgc3RlcHBlciBhcmlhIGxhYmVsIGluIHRoZSB0ZW1wbGF0ZVxuICAgKi9cbiAgZ2V0IHN0ZXBwZXJBcmlhTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3RlcHBlckFyaWFMYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBzZXQgdGhlIHN0ZXBwZXIgYXJpYSBsYWJlbCAoaTE4bilcbiAgICovXG4gIHNldCBzdGVwcGVyQXJpYUxhYmVsKGxhYmVsOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zdGVwcGVyQXJpYUxhYmVsID0gbGFiZWw7XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJuYWwgdG8gZ2V0IHRoZSBjb21wbGV0ZWQgbGFiZWwgaW4gdGhlIHRlbXBsYXRlXG4gICAqL1xuICBnZXQgY29tcGxldGVkTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY29tcGxldGVkTGFiZWw7XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJuYWwgdG8gZ2V0IHRoZSB3YXJpbmcgbGFiZWwgaW4gdGhlIHRlbXBsYXRlXG4gICAqL1xuICBnZXQgd2FybmluZ0xhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3dhcm5pbmdMYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBzZXQgdGhlIGNvbXBsZXRlZCBsYWJlbCAoaTE4bilcbiAgICovXG4gIHNldCBjb21wbGV0ZWRMYWJlbChsYWJlbDogc3RyaW5nKSB7XG4gICAgdGhpcy5fY29tcGxldGVkTGFiZWwgPSBsYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBzZXQgdGhlIHdhcm5pbmcgbGFiZWwgKGkxOG4pXG4gICAqL1xuICBzZXQgd2FybmluZ0xhYmVsKGxhYmVsOiBzdHJpbmcpIHtcbiAgICB0aGlzLl93YXJuaW5nTGFiZWwgPSBsYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUT0RPIG1ha2UgaXQgY3VzdG9taXphYmxlXG4gICAqIEBwYXJhbSBpbmRleCAtIGluZGV4IG9mIHRoZSBzdGVwXG4gICAqIEByZXR1cm5zIC0gc3RyaW5nIG9mIHRoZSBzdGVwIG51bWJlciB0byBkaXNwbGF5XG4gICAqL1xuICBnZXRTdGVwTnVtYmVyTGFiZWwoaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke2luZGV4ICsgMX1gO1xuICB9XG5cbiAgcmVzZXRGb2N1cygpIHtcbiAgICB0aGlzLnNldEZvY3VzID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGlzTGluZWFyIC0gdHJ1ZSBpZiB0aGUgc3RlcHBlciBpcyBsaW5lYXJcbiAgICovXG4gIHNldExpbmVhcihpc0xpbmVhcjogYm9vbGVhbikge1xuICAgIHRoaXMuX3N0YXRlLmlzTGluZWFyID0gaXNMaW5lYXI7XG4gICAgdGhpcy5kaXNwYXRjaFN0ZXBwZXJTdGF0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpc0lubGluZSAtIHRydWUgaWYgdGhlIHN0ZXBwZXIgaXMgaW5saW5lXG4gICAqL1xuICBzZXRJbmxpbmUoaXNJbmxpbmU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zdGF0ZS5pc0lubGluZSA9IGlzSW5saW5lO1xuICAgIHRoaXMuZGlzcGF0Y2hTdGVwcGVyU3RhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gaW5kZXggLSBpbmRleCBvZiB0aGUgc3RlcCB0byBzZWxlY3Qgc3RhcnQgYXQgMFxuICAgKi9cbiAgc2VsZWN0U3RlcChpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLl9zdGF0ZS5zdGVwcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fc3RhdGUuYWN0aXZlID0gaW5kZXg7XG4gICAgdGhpcy51cGRhdGVTdGVwcGVyU3RhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYW1lIGFzIHNlbGVjdFN0ZXAgYnV0IHdpdGggZm9jdXMgb24gdGhlIHN0ZXAgc2VsZWN0ZWRcbiAgICogQHBhcmFtIGluZGV4IC0gaW5kZXggb2YgdGhlIHN0ZXAgdG8gc2VsZWN0IHN0YXJ0IGF0IDBcbiAgICovXG4gIHNlbGVjdFdpdGhGb2N1cyhpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLl9zdGF0ZS5zdGVwcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZXRGb2N1cyA9IHRydWU7XG4gICAgdGhpcy5zZWxlY3RTdGVwKGluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gaW5kZXggLSBpbmRleCBvZiB0aGUgc3RlcCB0byBjb21wbGV0ZSBzdGFydCBhdCAwXG4gICAqL1xuICBjb21wbGV0ZVN0ZXAoaW5kZXg6IG51bWJlcikge1xuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5fc3RhdGUuc3RlcHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3N0YXRlLnN0ZXBzW2luZGV4XS5jb21wbGV0ZWQgPSB0cnVlO1xuICAgIHRoaXMuX3N0YXRlLnN0ZXBzW2luZGV4XS53YXJuaW5nID0gZmFsc2U7XG4gICAgdGhpcy51cGRhdGVTdGVwcGVyU3RhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gaW5kZXggLSBpbmRleCBvZiB0aGUgc3RlcCB0byBjb21wbGV0ZSBzdGFydCBhdCAwXG4gICAqL1xuICBjb21wbGV0ZVN0ZXBBbmRHb05leHQoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuY29tcGxldGVTdGVwKGluZGV4KTtcbiAgICB0aGlzLnNlbGVjdFN0ZXAoaW5kZXggKyAxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRlbnRpb24gaWYgdGhlIHN0ZXAgd2FzIGNvbXBsZXRlZCBpdCB3aWxsIGJlIHVuY29tcGxldGVkIGFmdGVyLlxuICAgKiBAcGFyYW0gaW5kZXggLSBpbmRleCBvZiB0aGUgc3RlcCB0byBtYWtlIFdhcm5pbmcgc3RhcnQgYXQgMFxuICAgKiBAcGFyYW0gd2FybmluZ0xhYmVsIC0gbGFiZWwgdG8gZGlzcGxheSBpbiB0aGUgd2FybmluZyBieSBkZWZhdWx0IGl0IHdpbGwgdGFrZSB0aGUgd2FybmluZ0xhYmVsIGlmIGl0IGV4aXN0cyBvciB0aGUgbGFiZWxcbiAgICovXG4gIG1ha2VXYXJuaW5nKGluZGV4OiBudW1iZXIsIHdhcm5pbmdMYWJlbD86IHN0cmluZykge1xuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5fc3RhdGUuc3RlcHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3N0YXRlLnN0ZXBzW2luZGV4XS53YXJuaW5nID0gdHJ1ZTtcbiAgICB0aGlzLl9zdGF0ZS5zdGVwc1tpbmRleF0uY29tcGxldGVkID0gZmFsc2U7XG4gICAgdGhpcy5fc3RhdGUuc3RlcHNbaW5kZXhdLndhcm5pbmdMYWJlbCA9IHdhcm5pbmdMYWJlbFxuICAgICAgPyB3YXJuaW5nTGFiZWxcbiAgICAgIDogdGhpcy5fc3RhdGUuc3RlcHNbaW5kZXhdLndhcm5pbmdMYWJlbFxuICAgICAgICA/IHRoaXMuX3N0YXRlLnN0ZXBzW2luZGV4XS53YXJuaW5nTGFiZWxcbiAgICAgICAgOiB0aGlzLl9zdGF0ZS5zdGVwc1tpbmRleF0ubGFiZWw7XG4gICAgdGhpcy51cGRhdGVTdGVwcGVyU3RhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gaW5kZXggLSBpbmRleCBvZiB0aGUgc3RlcCB0byByZW1vdmUgV2FybmluZyBzdGFydCBhdCAwXG4gICAqL1xuICByZW1vdmVXYXJuaW5nKGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMuX3N0YXRlLnN0ZXBzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9zdGF0ZS5zdGVwc1tpbmRleF0ud2FybmluZyA9IGZhbHNlO1xuICAgIHRoaXMudXBkYXRlU3RlcHBlclN0YXRlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,17 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { NgbToastModule } from '@ng-bootstrap/ng-bootstrap';
3
- import { DfInsertIconModule } from '../icon/insert/insert-icon.module';
4
- import * as i0 from "@angular/core";
5
- export class DfToastModule {
6
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfToastModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: DfToastModule, imports: [DfInsertIconModule], exports: [NgbToastModule, DfInsertIconModule] }); }
8
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfToastModule, imports: [DfInsertIconModule, NgbToastModule, DfInsertIconModule] }); }
9
- }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfToastModule, decorators: [{
11
- type: NgModule,
12
- args: [{
13
- imports: [DfInsertIconModule],
14
- exports: [NgbToastModule, DfInsertIconModule]
15
- }]
16
- }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWZhY3Rvcnkvc3JjL2xpYi9hbmd1bGFyL3RvYXN0L3RvYXN0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFNdkUsTUFBTSxPQUFPLGFBQWE7OEdBQWIsYUFBYTsrR0FBYixhQUFhLFlBSGQsa0JBQWtCLGFBQ2xCLGNBQWMsRUFBRSxrQkFBa0I7K0dBRWpDLGFBQWEsWUFIZCxrQkFBa0IsRUFDbEIsY0FBYyxFQUFFLGtCQUFrQjs7MkZBRWpDLGFBQWE7a0JBSnpCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7b0JBQzdCLE9BQU8sRUFBRSxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQztpQkFDOUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdiVG9hc3RNb2R1bGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBEZkluc2VydEljb25Nb2R1bGUgfSBmcm9tICcuLi9pY29uL2luc2VydC9pbnNlcnQtaWNvbi5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbRGZJbnNlcnRJY29uTW9kdWxlXSxcbiAgZXhwb3J0czogW05nYlRvYXN0TW9kdWxlLCBEZkluc2VydEljb25Nb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIERmVG9hc3RNb2R1bGUge1xufVxuIl19
@@ -1,18 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';
3
- import { DfTooltipTruncateDirective } from './truncate/tooltipTruncate.directive';
4
- import * as i0 from "@angular/core";
5
- export { DfTooltipTruncateDirective } from './truncate/tooltipTruncate.directive';
6
- export class DfTooltipModule {
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfTooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: DfTooltipModule, imports: [DfTooltipTruncateDirective], exports: [DfTooltipTruncateDirective, NgbTooltipModule] }); }
9
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfTooltipModule, imports: [NgbTooltipModule] }); }
10
- }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfTooltipModule, decorators: [{
12
- type: NgModule,
13
- args: [{
14
- imports: [DfTooltipTruncateDirective],
15
- exports: [DfTooltipTruncateDirective, NgbTooltipModule]
16
- }]
17
- }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tZmFjdG9yeS9zcmMvbGliL2FuZ3VsYXIvdG9vbHRpcC90b29sdGlwLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOztBQUVsRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQU1sRixNQUFNLE9BQU8sZUFBZTs4R0FBZixlQUFlOytHQUFmLGVBQWUsWUFIaEIsMEJBQTBCLGFBQzFCLDBCQUEwQixFQUFFLGdCQUFnQjsrR0FFM0MsZUFBZSxZQUZZLGdCQUFnQjs7MkZBRTNDLGVBQWU7a0JBSjNCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQ3JDLE9BQU8sRUFBRSxDQUFDLDBCQUEwQixFQUFFLGdCQUFnQixDQUFDO2lCQUN4RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ2JUb29sdGlwTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgRGZUb29sdGlwVHJ1bmNhdGVEaXJlY3RpdmUgfSBmcm9tICcuL3RydW5jYXRlL3Rvb2x0aXBUcnVuY2F0ZS5kaXJlY3RpdmUnO1xuXG5leHBvcnQgeyBEZlRvb2x0aXBUcnVuY2F0ZURpcmVjdGl2ZSB9IGZyb20gJy4vdHJ1bmNhdGUvdG9vbHRpcFRydW5jYXRlLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtEZlRvb2x0aXBUcnVuY2F0ZURpcmVjdGl2ZV0sXG4gIGV4cG9ydHM6IFtEZlRvb2x0aXBUcnVuY2F0ZURpcmVjdGl2ZSwgTmdiVG9vbHRpcE1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgRGZUb29sdGlwTW9kdWxlIHt9XG4iXX0=
@@ -1,31 +0,0 @@
1
- import { Directive } from '@angular/core';
2
- import { hasOverflow } from '../../utils/html-element-helper';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@ng-bootstrap/ng-bootstrap";
5
- /**
6
- * My dfTooltipTruncate directive
7
- */
8
- export class DfTooltipTruncateDirective {
9
- constructor(tooltip, elementRef, renderer) {
10
- this.tooltip = tooltip;
11
- this.elementRef = elementRef;
12
- this.renderer = renderer;
13
- }
14
- ngOnInit() {
15
- this.renderer.addClass(this.elementRef.nativeElement, 'text-truncate');
16
- }
17
- ngDoCheck() {
18
- this.tooltip.disableTooltip = !hasOverflow(this.elementRef.nativeElement);
19
- }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfTooltipTruncateDirective, deps: [{ token: i1.NgbTooltip }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
21
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: DfTooltipTruncateDirective, isStandalone: true, selector: "[dfTooltipTruncate]", exportAs: ["dfTooltipTruncate"], ngImport: i0 }); }
22
- }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfTooltipTruncateDirective, decorators: [{
24
- type: Directive,
25
- args: [{
26
- exportAs: 'dfTooltipTruncate',
27
- selector: '[dfTooltipTruncate]',
28
- standalone: true
29
- }]
30
- }], ctorParameters: () => [{ type: i1.NgbTooltip }, { type: i0.ElementRef }, { type: i0.Renderer2 }] });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcFRydW5jYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1mYWN0b3J5L3NyYy9saWIvYW5ndWxhci90b29sdGlwL3RydW5jYXRlL3Rvb2x0aXBUcnVuY2F0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBMEMsTUFBTSxlQUFlLENBQUM7QUFFbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFFOUQ7O0dBRUc7QUFNSCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLFlBQ21CLE9BQW1CLEVBQ25CLFVBQW1DLEVBQ25DLFFBQW1CO1FBRm5CLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFDbkMsYUFBUSxHQUFSLFFBQVEsQ0FBVztJQUNuQyxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM1RSxDQUFDOzhHQWJVLDBCQUEwQjtrR0FBMUIsMEJBQTBCOzsyRkFBMUIsMEJBQTBCO2tCQUx0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRG9DaGVjaywgRWxlbWVudFJlZiwgT25Jbml0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nYlRvb2x0aXAgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBoYXNPdmVyZmxvdyB9IGZyb20gJy4uLy4uL3V0aWxzL2h0bWwtZWxlbWVudC1oZWxwZXInO1xuXG4vKipcbiAqIE15IGRmVG9vbHRpcFRydW5jYXRlIGRpcmVjdGl2ZVxuICovXG5ARGlyZWN0aXZlKHtcbiAgZXhwb3J0QXM6ICdkZlRvb2x0aXBUcnVuY2F0ZScsXG4gIHNlbGVjdG9yOiAnW2RmVG9vbHRpcFRydW5jYXRlXScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGZUb29sdGlwVHJ1bmNhdGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIERvQ2hlY2sge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRvb2x0aXA6IE5nYlRvb2x0aXAsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0ZXh0LXRydW5jYXRlJyk7XG4gIH1cblxuICBuZ0RvQ2hlY2soKSB7XG4gICAgdGhpcy50b29sdGlwLmRpc2FibGVUb29sdGlwID0gIWhhc092ZXJmbG93KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxufVxuIl19
@@ -1,8 +0,0 @@
1
- /**
2
- * @param element the HTML element
3
- * @returns whether the element is overflowing
4
- */
5
- export function hasOverflow(element) {
6
- return element?.offsetHeight < element?.scrollHeight || element?.offsetWidth < element?.scrollWidth;
7
- }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1lbGVtZW50LWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1mYWN0b3J5L3NyYy9saWIvYW5ndWxhci91dGlscy9odG1sLWVsZW1lbnQtaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsT0FBb0I7SUFDOUMsT0FBTyxPQUFPLEVBQUUsWUFBWSxHQUFHLE9BQU8sRUFBRSxZQUFZLElBQUksT0FBTyxFQUFFLFdBQVcsR0FBRyxPQUFPLEVBQUUsV0FBVyxDQUFDO0FBQ3RHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwYXJhbSBlbGVtZW50IHRoZSBIVE1MIGVsZW1lbnRcbiAqIEByZXR1cm5zIHdoZXRoZXIgdGhlIGVsZW1lbnQgaXMgb3ZlcmZsb3dpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc092ZXJmbG93KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiBlbGVtZW50Py5vZmZzZXRIZWlnaHQgPCBlbGVtZW50Py5zY3JvbGxIZWlnaHQgfHwgZWxlbWVudD8ub2Zmc2V0V2lkdGggPCBlbGVtZW50Py5zY3JvbGxXaWR0aDtcbn1cbiJdfQ==
@@ -1,79 +0,0 @@
1
- import { Injectable, Inject } from '@angular/core';
2
- import { DOCUMENT } from '@angular/common';
3
- import * as i0 from "@angular/core";
4
- const noop = () => { };
5
- /**
6
- * Utility to handle the scrollbar.
7
- *
8
- * It allows to compensate the lack of a vertical scrollbar by adding an
9
- * equivalent padding on the right of the body, and to remove this compensation.
10
- *
11
- * It is a copy of https://github.com/ng-bootstrap/ng-bootstrap/blob/master/src/util/scrollbar.ts
12
- */
13
- export class ScrollBar {
14
- constructor(_document) {
15
- this._document = _document;
16
- }
17
- /**
18
- * To be called right before a potential vertical scrollbar would be removed:
19
- *
20
- * - if there was a scrollbar, adds some compensation padding to the body
21
- * to keep the same layout as when the scrollbar is there
22
- * - if there was none, there is nothing to do
23
- *
24
- * @return a callback used to revert the compensation (noop if there was none,
25
- * otherwise a function removing the padding)
26
- */
27
- compensate() {
28
- const width = this._getWidth();
29
- return !this._isPresent(width) ? noop : this._adjustBody(width);
30
- }
31
- /**
32
- * Adds a padding of the given width on the right of the body.
33
- *
34
- * @return a callback used to revert the padding to its previous value
35
- */
36
- _adjustBody(scrollbarWidth) {
37
- const body = this._document.body;
38
- const userSetPaddingStyle = body.style.paddingRight;
39
- const paddingRight = 'padding-right';
40
- const actualPadding = parseFloat(window.getComputedStyle(body)[paddingRight]);
41
- body.style[paddingRight] = `${actualPadding + scrollbarWidth}px`;
42
- return () => (body.style[paddingRight] = userSetPaddingStyle);
43
- }
44
- /**
45
- * Tells whether a scrollbar is currently present on the body.
46
- *
47
- * @return true if scrollbar is present, false otherwise
48
- */
49
- _isPresent(scrollbarWidth) {
50
- const rect = this._document.body.getBoundingClientRect();
51
- const bodyToViewportGap = window.innerWidth - (rect.left + rect.right);
52
- const uncertainty = 0.1 * scrollbarWidth;
53
- return bodyToViewportGap >= scrollbarWidth - uncertainty;
54
- }
55
- /**
56
- * Calculates and returns the width of a scrollbar.
57
- *
58
- * @return the width of a scrollbar on this page
59
- */
60
- _getWidth() {
61
- const measurer = this._document.createElement('div');
62
- measurer.className = 'modal-scrollbar-measure';
63
- const body = this._document.body;
64
- body.appendChild(measurer);
65
- const width = measurer.getBoundingClientRect().width - measurer.clientWidth;
66
- body.removeChild(measurer);
67
- return width;
68
- }
69
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ScrollBar, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
70
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ScrollBar, providedIn: 'root' }); }
71
- }
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ScrollBar, decorators: [{
73
- type: Injectable,
74
- args: [{ providedIn: 'root' }]
75
- }], ctorParameters: () => [{ type: undefined, decorators: [{
76
- type: Inject,
77
- args: [DOCUMENT]
78
- }] }] });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYmFyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tZmFjdG9yeS9zcmMvbGliL2FuZ3VsYXIvdXRpbHMvc2Nyb2xsYmFyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUUzQyxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7QUFLdEI7Ozs7Ozs7R0FPRztBQUVILE1BQU0sT0FBTyxTQUFTO0lBQ3BCLFlBQStDLFNBQWM7UUFBZCxjQUFTLEdBQVQsU0FBUyxDQUFLO0lBQUcsQ0FBQztJQUVqRTs7Ozs7Ozs7O09BU0c7SUFDSCxVQUFVO1FBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQy9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxXQUFXLENBQUMsY0FBc0I7UUFDeEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDakMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUNwRCxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUM7UUFDckMsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFtQixDQUFDLENBQUMsQ0FBQztRQUNyRixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLEdBQUcsYUFBYSxHQUFHLGNBQWMsSUFBSSxDQUFDO1FBQ2pFLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLG1CQUFtQixDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxVQUFVLENBQUMsY0FBc0I7UUFDdkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUN6RCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2RSxNQUFNLFdBQVcsR0FBRyxHQUFHLEdBQUcsY0FBYyxDQUFDO1FBQ3pDLE9BQU8saUJBQWlCLElBQUksY0FBYyxHQUFHLFdBQVcsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLFNBQVM7UUFDZixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRCxRQUFRLENBQUMsU0FBUyxHQUFHLHlCQUF5QixDQUFDO1FBRS9DLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0IsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLHFCQUFxQixFQUFFLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDNUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUzQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OEdBM0RVLFNBQVMsa0JBQ0EsUUFBUTtrSEFEakIsU0FBUyxjQURJLE1BQU07OzJGQUNuQixTQUFTO2tCQURyQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBRW5CLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5jb25zdCBub29wID0gKCkgPT4ge307XG5cbi8qKiBUeXBlIGZvciB0aGUgY2FsbGJhY2sgdXNlZCB0byByZXZlcnQgdGhlIHNjcm9sbGJhciBjb21wZW5zYXRpb24uICovXG5leHBvcnQgdHlwZSBDb21wZW5zYXRpb25SZXZlcnRlciA9ICgpID0+IHZvaWQ7XG5cbi8qKlxuICogVXRpbGl0eSB0byBoYW5kbGUgdGhlIHNjcm9sbGJhci5cbiAqXG4gKiBJdCBhbGxvd3MgdG8gY29tcGVuc2F0ZSB0aGUgbGFjayBvZiBhIHZlcnRpY2FsIHNjcm9sbGJhciBieSBhZGRpbmcgYW5cbiAqIGVxdWl2YWxlbnQgcGFkZGluZyBvbiB0aGUgcmlnaHQgb2YgdGhlIGJvZHksIGFuZCB0byByZW1vdmUgdGhpcyBjb21wZW5zYXRpb24uXG4gKlxuICogSXQgaXMgYSBjb3B5IG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1ib290c3RyYXAvbmctYm9vdHN0cmFwL2Jsb2IvbWFzdGVyL3NyYy91dGlsL3Njcm9sbGJhci50c1xuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFNjcm9sbEJhciB7XG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgcmVhZG9ubHkgX2RvY3VtZW50OiBhbnkpIHt9XG5cbiAgLyoqXG4gICAqIFRvIGJlIGNhbGxlZCByaWdodCBiZWZvcmUgYSBwb3RlbnRpYWwgdmVydGljYWwgc2Nyb2xsYmFyIHdvdWxkIGJlIHJlbW92ZWQ6XG4gICAqXG4gICAqIC0gaWYgdGhlcmUgd2FzIGEgc2Nyb2xsYmFyLCBhZGRzIHNvbWUgY29tcGVuc2F0aW9uIHBhZGRpbmcgdG8gdGhlIGJvZHlcbiAgICogdG8ga2VlcCB0aGUgc2FtZSBsYXlvdXQgYXMgd2hlbiB0aGUgc2Nyb2xsYmFyIGlzIHRoZXJlXG4gICAqIC0gaWYgdGhlcmUgd2FzIG5vbmUsIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG9cbiAgICpcbiAgICogQHJldHVybiBhIGNhbGxiYWNrIHVzZWQgdG8gcmV2ZXJ0IHRoZSBjb21wZW5zYXRpb24gKG5vb3AgaWYgdGhlcmUgd2FzIG5vbmUsXG4gICAqIG90aGVyd2lzZSBhIGZ1bmN0aW9uIHJlbW92aW5nIHRoZSBwYWRkaW5nKVxuICAgKi9cbiAgY29tcGVuc2F0ZSgpOiBDb21wZW5zYXRpb25SZXZlcnRlciB7XG4gICAgY29uc3Qgd2lkdGggPSB0aGlzLl9nZXRXaWR0aCgpO1xuICAgIHJldHVybiAhdGhpcy5faXNQcmVzZW50KHdpZHRoKSA/IG5vb3AgOiB0aGlzLl9hZGp1c3RCb2R5KHdpZHRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcGFkZGluZyBvZiB0aGUgZ2l2ZW4gd2lkdGggb24gdGhlIHJpZ2h0IG9mIHRoZSBib2R5LlxuICAgKlxuICAgKiBAcmV0dXJuIGEgY2FsbGJhY2sgdXNlZCB0byByZXZlcnQgdGhlIHBhZGRpbmcgdG8gaXRzIHByZXZpb3VzIHZhbHVlXG4gICAqL1xuICBwcml2YXRlIF9hZGp1c3RCb2R5KHNjcm9sbGJhcldpZHRoOiBudW1iZXIpOiBDb21wZW5zYXRpb25SZXZlcnRlciB7XG4gICAgY29uc3QgYm9keSA9IHRoaXMuX2RvY3VtZW50LmJvZHk7XG4gICAgY29uc3QgdXNlclNldFBhZGRpbmdTdHlsZSA9IGJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0O1xuICAgIGNvbnN0IHBhZGRpbmdSaWdodCA9ICdwYWRkaW5nLXJpZ2h0JztcbiAgICBjb25zdCBhY3R1YWxQYWRkaW5nID0gcGFyc2VGbG9hdCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShib2R5KVtwYWRkaW5nUmlnaHQgYXMgYW55XSk7XG4gICAgYm9keS5zdHlsZVtwYWRkaW5nUmlnaHRdID0gYCR7YWN0dWFsUGFkZGluZyArIHNjcm9sbGJhcldpZHRofXB4YDtcbiAgICByZXR1cm4gKCkgPT4gKGJvZHkuc3R5bGVbcGFkZGluZ1JpZ2h0XSA9IHVzZXJTZXRQYWRkaW5nU3R5bGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRlbGxzIHdoZXRoZXIgYSBzY3JvbGxiYXIgaXMgY3VycmVudGx5IHByZXNlbnQgb24gdGhlIGJvZHkuXG4gICAqXG4gICAqIEByZXR1cm4gdHJ1ZSBpZiBzY3JvbGxiYXIgaXMgcHJlc2VudCwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICBwcml2YXRlIF9pc1ByZXNlbnQoc2Nyb2xsYmFyV2lkdGg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlY3QgPSB0aGlzLl9kb2N1bWVudC5ib2R5LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGJvZHlUb1ZpZXdwb3J0R2FwID0gd2luZG93LmlubmVyV2lkdGggLSAocmVjdC5sZWZ0ICsgcmVjdC5yaWdodCk7XG4gICAgY29uc3QgdW5jZXJ0YWludHkgPSAwLjEgKiBzY3JvbGxiYXJXaWR0aDtcbiAgICByZXR1cm4gYm9keVRvVmlld3BvcnRHYXAgPj0gc2Nyb2xsYmFyV2lkdGggLSB1bmNlcnRhaW50eTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIGFuZCByZXR1cm5zIHRoZSB3aWR0aCBvZiBhIHNjcm9sbGJhci5cbiAgICpcbiAgICogQHJldHVybiB0aGUgd2lkdGggb2YgYSBzY3JvbGxiYXIgb24gdGhpcyBwYWdlXG4gICAqL1xuICBwcml2YXRlIF9nZXRXaWR0aCgpOiBudW1iZXIge1xuICAgIGNvbnN0IG1lYXN1cmVyID0gdGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgbWVhc3VyZXIuY2xhc3NOYW1lID0gJ21vZGFsLXNjcm9sbGJhci1tZWFzdXJlJztcblxuICAgIGNvbnN0IGJvZHkgPSB0aGlzLl9kb2N1bWVudC5ib2R5O1xuICAgIGJvZHkuYXBwZW5kQ2hpbGQobWVhc3VyZXIpO1xuICAgIGNvbnN0IHdpZHRoID0gbWVhc3VyZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggLSBtZWFzdXJlci5jbGllbnRXaWR0aDtcbiAgICBib2R5LnJlbW92ZUNoaWxkKG1lYXN1cmVyKTtcblxuICAgIHJldHVybiB3aWR0aDtcbiAgfVxufVxuIl19
@@ -1,39 +0,0 @@
1
- import { Directive } from '@angular/core';
2
- import { hasOverflow } from './html-element-helper';
3
- import * as i0 from "@angular/core";
4
- /**
5
- * DfTitleTruncate directive
6
- * It adds the title attribute with the element's inner text as value
7
- * when the element is truncated.
8
- */
9
- export class DfTitleTruncateDirective {
10
- constructor(elementRef, renderer) {
11
- this.elementRef = elementRef;
12
- this.renderer = renderer;
13
- }
14
- ngOnInit() {
15
- this.renderer.addClass(this.elementRef.nativeElement, 'text-truncate');
16
- }
17
- ngDoCheck() {
18
- const { nativeElement } = this.elementRef;
19
- const titleAttributeName = 'title';
20
- if (hasOverflow(nativeElement)) {
21
- const value = nativeElement.innerText;
22
- nativeElement.setAttribute(titleAttributeName, value);
23
- }
24
- else if (nativeElement.getAttribute(titleAttributeName)) {
25
- nativeElement.removeAttribute(titleAttributeName);
26
- }
27
- }
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfTitleTruncateDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
29
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: DfTitleTruncateDirective, isStandalone: true, selector: "[dfTitleTruncate]", exportAs: ["dfTitleTruncate"], ngImport: i0 }); }
30
- }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfTitleTruncateDirective, decorators: [{
32
- type: Directive,
33
- args: [{
34
- exportAs: 'dfTitleTruncate',
35
- selector: '[dfTitleTruncate]',
36
- standalone: true
37
- }]
38
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }] });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGl0bGVUcnVuY2F0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tZmFjdG9yeS9zcmMvbGliL2FuZ3VsYXIvdXRpbHMvdGl0bGVUcnVuY2F0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBMEMsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUVwRDs7OztHQUlHO0FBTUgsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUNtQixVQUFtQyxFQUNuQyxRQUFtQjtRQURuQixlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUNuQyxhQUFRLEdBQVIsUUFBUSxDQUFXO0lBQ25DLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELFNBQVM7UUFDUCxNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUMxQyxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQztRQUNuQyxJQUFJLFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQy9CLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUM7WUFDdEMsYUFBYSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4RCxDQUFDO2FBQU0sSUFBSSxhQUFhLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztZQUMxRCxhQUFhLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7OEdBbkJVLHdCQUF3QjtrR0FBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUxwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRG9DaGVjaywgRWxlbWVudFJlZiwgT25Jbml0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGhhc092ZXJmbG93IH0gZnJvbSAnLi9odG1sLWVsZW1lbnQtaGVscGVyJztcblxuLyoqXG4gKiBEZlRpdGxlVHJ1bmNhdGUgZGlyZWN0aXZlXG4gKiBJdCBhZGRzIHRoZSB0aXRsZSBhdHRyaWJ1dGUgd2l0aCB0aGUgZWxlbWVudCdzIGlubmVyIHRleHQgYXMgdmFsdWVcbiAqIHdoZW4gdGhlIGVsZW1lbnQgaXMgdHJ1bmNhdGVkLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgZXhwb3J0QXM6ICdkZlRpdGxlVHJ1bmNhdGUnLFxuICBzZWxlY3RvcjogJ1tkZlRpdGxlVHJ1bmNhdGVdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEZlRpdGxlVHJ1bmNhdGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIERvQ2hlY2sge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3RleHQtdHJ1bmNhdGUnKTtcbiAgfVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICBjb25zdCB7IG5hdGl2ZUVsZW1lbnQgfSA9IHRoaXMuZWxlbWVudFJlZjtcbiAgICBjb25zdCB0aXRsZUF0dHJpYnV0ZU5hbWUgPSAndGl0bGUnO1xuICAgIGlmIChoYXNPdmVyZmxvdyhuYXRpdmVFbGVtZW50KSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBuYXRpdmVFbGVtZW50LmlubmVyVGV4dDtcbiAgICAgIG5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKHRpdGxlQXR0cmlidXRlTmFtZSwgdmFsdWUpO1xuICAgIH0gZWxzZSBpZiAobmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUodGl0bGVBdHRyaWJ1dGVOYW1lKSkge1xuICAgICAgbmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUodGl0bGVBdHRyaWJ1dGVOYW1lKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,86 +0,0 @@
1
- import { Directive, ElementRef, HostBinding, Input, inject } from '@angular/core';
2
- import { HttpClient } from '@angular/common/http';
3
- import * as i0 from "@angular/core";
4
- export class DfWavesOfProgressDirective {
5
- constructor() {
6
- this.http = inject(HttpClient, { optional: true });
7
- this.waveClass = 'df-waves-of-progress-bg';
8
- this.elementRef = inject(ElementRef);
9
- this.baseSvg = '';
10
- }
11
- /**
12
- * The type of waves to display. In order to display the waves, the app using the directive must include the assets of Design Factory.
13
- * It is possible to do so by adding the following snippet to the `angular.json` file in the `assets` configuration:
14
- * @example
15
- * "assets": [
16
- * {
17
- * "glob": "** / *", //remove the spaces between the asterisks and the slash
18
- * "input": "node-modules/@design-factory/design-factory/assets/",
19
- * "output": "assets/"
20
- * },
21
- * ...]
22
- */
23
- set wavesType(value) {
24
- this.getSvg(value);
25
- }
26
- /**
27
- * Prepares the SVG string by replacing color variables and encoding it.
28
- * @param bgColor - The background color.
29
- * @param lineColor - The line color.
30
- * @returns The prepared SVG string.
31
- */
32
- prepareSvg(bgColor, lineColor) {
33
- let baseSvg = this.baseSvg.replace(/var\(\-\-df\-waves\-of\-progress\-bg\-color\)/g, bgColor);
34
- baseSvg = baseSvg.replace(/var\(\-\-df\-waves\-of\-progress\-line\-color\)/g, lineColor);
35
- baseSvg = baseSvg.replace(/#/g, '%23');
36
- return `'data:image/svg+xml;utf8,${baseSvg}'`;
37
- }
38
- /**
39
- * Updates the SVG background image based on the current element's styles.
40
- */
41
- updateSvg() {
42
- const computedStyle = window.getComputedStyle(this.elementRef.nativeElement);
43
- const bgColor = computedStyle.getPropertyValue('--df-waves-of-progress-bg-color');
44
- const lineColor = computedStyle.getPropertyValue('--df-waves-of-progress-line-color');
45
- if (!bgColor || !lineColor) {
46
- this.elementRef.nativeElement.style.backgroundImage = null;
47
- }
48
- else {
49
- this.elementRef.nativeElement.style.backgroundImage = `url(${this.prepareSvg(bgColor, lineColor)})`;
50
- }
51
- }
52
- getSvg(wavesType) {
53
- if (!this.http) {
54
- throw Error('Could not find HttpClient provider for use with DF Waves of progress. ' +
55
- 'Please include the HttpClientModule from @angular/common/http in your ' +
56
- 'app imports.');
57
- }
58
- const url = `assets/waves_of_progress/${wavesType}.svg`;
59
- this.http.get(url, { responseType: 'text' }).subscribe({
60
- next: (svgString) => {
61
- this.baseSvg = svgString.replace(/\n|\r/g, '');
62
- this.updateSvg();
63
- },
64
- error: (error) => {
65
- throw Error('[Design Factory] (Waves of progress): ' + error.message);
66
- }
67
- });
68
- }
69
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfWavesOfProgressDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
70
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: DfWavesOfProgressDirective, isStandalone: true, selector: "[dfWavesOfProgress]", inputs: { wavesType: ["dfWavesOfProgress", "wavesType"] }, host: { properties: { "class": "this.waveClass" } }, exportAs: ["dfWavesOfProgress"], ngImport: i0 }); }
71
- }
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfWavesOfProgressDirective, decorators: [{
73
- type: Directive,
74
- args: [{
75
- selector: '[dfWavesOfProgress]',
76
- standalone: true,
77
- exportAs: 'dfWavesOfProgress'
78
- }]
79
- }], propDecorators: { wavesType: [{
80
- type: Input,
81
- args: ['dfWavesOfProgress']
82
- }], waveClass: [{
83
- type: HostBinding,
84
- args: ['class']
85
- }] } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F2ZXMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWZhY3Rvcnkvc3JjL2xpYi9hbmd1bGFyL3dhdmVzLW9mLXByb2dyZXNzL3dhdmVzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUEwQixNQUFNLHNCQUFzQixDQUFDOztBQU8xRSxNQUFNLE9BQU8sMEJBQTBCO0lBTHZDO1FBcUJtQixTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXpDLGNBQVMsR0FBRyx5QkFBeUIsQ0FBQztRQUVyRCxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRS9CLFlBQU8sR0FBRyxFQUFFLENBQUM7S0FnRHRCO0lBckVDOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsSUFBZ0MsU0FBUyxDQUFDLEtBQStEO1FBQ3ZHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQVNEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLE9BQWUsRUFBRSxTQUFpQjtRQUMzQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxnREFBZ0QsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM5RixPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxrREFBa0QsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN6RixPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkMsT0FBTyw0QkFBNEIsT0FBTyxHQUFHLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksU0FBUztRQUNkLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ2xGLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM3RCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDO1FBQ3RHLENBQUM7SUFDSCxDQUFDO0lBRU8sTUFBTSxDQUFDLFNBQW1FO1FBQ2hGLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZixNQUFNLEtBQUssQ0FDVCx3RUFBd0U7Z0JBQ3RFLHdFQUF3RTtnQkFDeEUsY0FBYyxDQUNqQixDQUFDO1FBQ0osQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFHLDRCQUE0QixTQUFTLE1BQU0sQ0FBQztRQUN4RCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDckQsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsS0FBd0IsRUFBRSxFQUFFO2dCQUNsQyxNQUFNLEtBQUssQ0FBQyx3Q0FBd0MsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDeEUsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBckVVLDBCQUEwQjtrR0FBMUIsMEJBQTBCOzsyRkFBMUIsMEJBQTBCO2tCQUx0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsbUJBQW1CO2lCQUM5Qjs4QkFjaUMsU0FBUztzQkFBeEMsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBS0osU0FBUztzQkFBOUIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgdHlwZSBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2RmV2F2ZXNPZlByb2dyZXNzXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGV4cG9ydEFzOiAnZGZXYXZlc09mUHJvZ3Jlc3MnXG59KVxuZXhwb3J0IGNsYXNzIERmV2F2ZXNPZlByb2dyZXNzRGlyZWN0aXZlIHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHdhdmVzIHRvIGRpc3BsYXkuIEluIG9yZGVyIHRvIGRpc3BsYXkgdGhlIHdhdmVzLCB0aGUgYXBwIHVzaW5nIHRoZSBkaXJlY3RpdmUgbXVzdCBpbmNsdWRlIHRoZSBhc3NldHMgb2YgRGVzaWduIEZhY3RvcnkuXG4gICAqIEl0IGlzIHBvc3NpYmxlIHRvIGRvIHNvIGJ5IGFkZGluZyB0aGUgZm9sbG93aW5nIHNuaXBwZXQgdG8gdGhlIGBhbmd1bGFyLmpzb25gIGZpbGUgaW4gdGhlIGBhc3NldHNgIGNvbmZpZ3VyYXRpb246XG4gICAqIEBleGFtcGxlXG4gICAqIFwiYXNzZXRzXCI6IFtcbiAgICogIHtcbiAgICogICAgXCJnbG9iXCI6IFwiKiogLyAqXCIsIC8vcmVtb3ZlIHRoZSBzcGFjZXMgYmV0d2VlbiB0aGUgYXN0ZXJpc2tzIGFuZCB0aGUgc2xhc2hcbiAgICogICAgXCJpbnB1dFwiOiBcIm5vZGUtbW9kdWxlcy9AZGVzaWduLWZhY3RvcnkvZGVzaWduLWZhY3RvcnkvYXNzZXRzL1wiLFxuICAgKiAgICBcIm91dHB1dFwiOiBcImFzc2V0cy9cIlxuICAgKiAgfSxcbiAgICogIC4uLl1cbiAgICovXG4gIEBJbnB1dCgnZGZXYXZlc09mUHJvZ3Jlc3MnKSBzZXQgd2F2ZXNUeXBlKHZhbHVlOiAnY2lyY2xlRGlhZ29uYWwnIHwgJ2NpcmNsZVVwJyB8ICdhcnJvd1JpZ2h0JyB8ICdhcnJvd1VwJykge1xuICAgIHRoaXMuZ2V0U3ZnKHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgd2F2ZUNsYXNzID0gJ2RmLXdhdmVzLW9mLXByb2dyZXNzLWJnJztcblxuICBwdWJsaWMgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICBwcml2YXRlIGJhc2VTdmcgPSAnJztcblxuICAvKipcbiAgICogUHJlcGFyZXMgdGhlIFNWRyBzdHJpbmcgYnkgcmVwbGFjaW5nIGNvbG9yIHZhcmlhYmxlcyBhbmQgZW5jb2RpbmcgaXQuXG4gICAqIEBwYXJhbSBiZ0NvbG9yIC0gVGhlIGJhY2tncm91bmQgY29sb3IuXG4gICAqIEBwYXJhbSBsaW5lQ29sb3IgLSBUaGUgbGluZSBjb2xvci5cbiAgICogQHJldHVybnMgVGhlIHByZXBhcmVkIFNWRyBzdHJpbmcuXG4gICAqL1xuICBwcmVwYXJlU3ZnKGJnQ29sb3I6IHN0cmluZywgbGluZUNvbG9yOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBiYXNlU3ZnID0gdGhpcy5iYXNlU3ZnLnJlcGxhY2UoL3ZhclxcKFxcLVxcLWRmXFwtd2F2ZXNcXC1vZlxcLXByb2dyZXNzXFwtYmdcXC1jb2xvclxcKS9nLCBiZ0NvbG9yKTtcbiAgICBiYXNlU3ZnID0gYmFzZVN2Zy5yZXBsYWNlKC92YXJcXChcXC1cXC1kZlxcLXdhdmVzXFwtb2ZcXC1wcm9ncmVzc1xcLWxpbmVcXC1jb2xvclxcKS9nLCBsaW5lQ29sb3IpO1xuICAgIGJhc2VTdmcgPSBiYXNlU3ZnLnJlcGxhY2UoLyMvZywgJyUyMycpO1xuICAgIHJldHVybiBgJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCR7YmFzZVN2Z30nYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBTVkcgYmFja2dyb3VuZCBpbWFnZSBiYXNlZCBvbiB0aGUgY3VycmVudCBlbGVtZW50J3Mgc3R5bGVzLlxuICAgKi9cbiAgcHVibGljIHVwZGF0ZVN2ZygpOiB2b2lkIHtcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIGNvbnN0IGJnQ29sb3IgPSBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tZGYtd2F2ZXMtb2YtcHJvZ3Jlc3MtYmctY29sb3InKTtcbiAgICBjb25zdCBsaW5lQ29sb3IgPSBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tZGYtd2F2ZXMtb2YtcHJvZ3Jlc3MtbGluZS1jb2xvcicpO1xuICAgIGlmICghYmdDb2xvciB8fCAhbGluZUNvbG9yKSB7XG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKCR7dGhpcy5wcmVwYXJlU3ZnKGJnQ29sb3IsIGxpbmVDb2xvcil9KWA7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdmcod2F2ZXNUeXBlOiAnY2lyY2xlRGlhZ29uYWwnIHwgJ2NpcmNsZVVwJyB8ICdhcnJvd1JpZ2h0JyB8ICdhcnJvd1VwJykge1xuICAgIGlmICghdGhpcy5odHRwKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgJ0NvdWxkIG5vdCBmaW5kIEh0dHBDbGllbnQgcHJvdmlkZXIgZm9yIHVzZSB3aXRoIERGIFdhdmVzIG9mIHByb2dyZXNzLiAnICtcbiAgICAgICAgICAnUGxlYXNlIGluY2x1ZGUgdGhlIEh0dHBDbGllbnRNb2R1bGUgZnJvbSBAYW5ndWxhci9jb21tb24vaHR0cCBpbiB5b3VyICcgK1xuICAgICAgICAgICdhcHAgaW1wb3J0cy4nXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPSBgYXNzZXRzL3dhdmVzX29mX3Byb2dyZXNzLyR7d2F2ZXNUeXBlfS5zdmdgO1xuICAgIHRoaXMuaHR0cC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoc3ZnU3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuYmFzZVN2ZyA9IHN2Z1N0cmluZy5yZXBsYWNlKC9cXG58XFxyL2csICcnKTtcbiAgICAgICAgdGhpcy51cGRhdGVTdmcoKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICB0aHJvdyBFcnJvcignW0Rlc2lnbiBGYWN0b3J5XSAoV2F2ZXMgb2YgcHJvZ3Jlc3MpOiAnICsgZXJyb3IubWVzc2FnZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,16 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { DfWavesOfProgressDirective } from './waves.directive';
3
- import * as i0 from "@angular/core";
4
- export class DfWavesOfProgressModule {
5
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfWavesOfProgressModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: DfWavesOfProgressModule, imports: [DfWavesOfProgressDirective], exports: [DfWavesOfProgressDirective] }); }
7
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfWavesOfProgressModule }); }
8
- }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DfWavesOfProgressModule, decorators: [{
10
- type: NgModule,
11
- args: [{
12
- imports: [DfWavesOfProgressDirective],
13
- exports: [DfWavesOfProgressDirective]
14
- }]
15
- }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F2ZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWZhY3Rvcnkvc3JjL2xpYi9hbmd1bGFyL3dhdmVzLW9mLXByb2dyZXNzL3dhdmVzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQU0vRCxNQUFNLE9BQU8sdUJBQXVCOzhHQUF2Qix1QkFBdUI7K0dBQXZCLHVCQUF1QixZQUh4QiwwQkFBMEIsYUFDMUIsMEJBQTBCOytHQUV6Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBSm5DLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQ3JDLE9BQU8sRUFBRSxDQUFDLDBCQUEwQixDQUFDO2lCQUN0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZldhdmVzT2ZQcm9ncmVzc0RpcmVjdGl2ZSB9IGZyb20gJy4vd2F2ZXMuZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0RmV2F2ZXNPZlByb2dyZXNzRGlyZWN0aXZlXSxcbiAgZXhwb3J0czogW0RmV2F2ZXNPZlByb2dyZXNzRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBEZldhdmVzT2ZQcm9ncmVzc01vZHVsZSB7fVxuIl19