@datarailsshared/datarailsshared 1.6.273 → 1.6.277

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 (88) hide show
  1. package/datarailsshared-datarailsshared-1.6.277.tgz +0 -0
  2. package/esm2022/lib/dr-inputs/date-pickers/dr-fiscal-month-calendar-picker/dr-fiscal-month-calendar-picker.component.mjs +2 -2
  3. package/esm2022/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.mjs +34 -19
  4. package/esm2022/lib/dr-tags/_consts/scenario-tags-config.mjs +87 -0
  5. package/esm2022/lib/dr-tags/_interfaces/scenario.mjs +8 -0
  6. package/esm2022/lib/dr-tags/_services/scenario.service.mjs +195 -0
  7. package/esm2022/lib/dr-tags/_services/tags-constructor.service.mjs +71 -0
  8. package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/any-tag.component.mjs +42 -0
  9. package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-date.component.mjs +151 -0
  10. package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-day/dr-tag-day.component.mjs +98 -0
  11. package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-forecast/dr-tag-forecast.component.mjs +225 -0
  12. package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-forecast/forecast-tag.service.mjs +87 -0
  13. package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-month/dr-tag-month.component.mjs +101 -0
  14. package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-quarter/dr-tag-quarter.component.mjs +129 -0
  15. package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-week/dr-tag-week.component.mjs +105 -0
  16. package/esm2022/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-year/dr-tag-year.component.mjs +99 -0
  17. package/esm2022/lib/dr-tags/dr-tag/dr-tag-dynamic/dr-tag-dynamic.component.mjs +230 -0
  18. package/esm2022/lib/dr-tags/dr-tag/dr-tag-list/dr-tag-list.component.mjs +85 -0
  19. package/esm2022/lib/dr-tags/dr-tag/dr-tag.component.mjs +241 -0
  20. package/esm2022/lib/dr-tags/dr-tag/dr-tag.types.mjs +2 -0
  21. package/esm2022/lib/dr-tags/dr-tags-and-scenario/dr-tags-and-scenario.component.mjs +103 -0
  22. package/esm2022/lib/dr-tags/dr-tags-and-scenario-constructor/dr-tags-and-scenario-constructor.component.mjs +107 -0
  23. package/esm2022/lib/dr-tags/dr-tags-constructor/dr-tags-constructor.component.mjs +164 -0
  24. package/esm2022/local-api.mjs +18 -25
  25. package/fesm2022/datarailsshared-datarailsshared.mjs +8655 -8743
  26. package/fesm2022/datarailsshared-datarailsshared.mjs.map +1 -1
  27. package/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.d.ts +6 -3
  28. package/lib/{dr-scenario/consts → dr-tags/_consts}/scenario-tags-config.d.ts +1 -1
  29. package/lib/{dr-scenario/services → dr-tags/_services}/scenario.service.d.ts +1 -1
  30. package/lib/{dr-tags-constructor → dr-tags/_services}/tags-constructor.service.d.ts +2 -2
  31. package/lib/{date-tags → dr-tags/dr-tag/dr-tag-date}/any-tag.component.d.ts +1 -1
  32. package/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-date.component.d.ts +18 -0
  33. package/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-day/dr-tag-day.component.d.ts +14 -0
  34. package/lib/{date-tags/forecast-tag/forecast-tag.component.d.ts → dr-tags/dr-tag/dr-tag-date/dr-tag-forecast/dr-tag-forecast.component.d.ts} +5 -5
  35. package/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-month/dr-tag-month.component.d.ts +14 -0
  36. package/lib/{date-tags/quarter-tag/quarter-tag.component.d.ts → dr-tags/dr-tag/dr-tag-date/dr-tag-quarter/dr-tag-quarter.component.d.ts} +3 -3
  37. package/lib/{date-tags/week-tag/week-tag.component.d.ts → dr-tags/dr-tag/dr-tag-date/dr-tag-week/dr-tag-week.component.d.ts} +3 -3
  38. package/lib/dr-tags/dr-tag/dr-tag-date/dr-tag-year/dr-tag-year.component.d.ts +14 -0
  39. package/lib/{dr-dynamic-tag/dr-dynamic-tag.component.d.ts → dr-tags/dr-tag/dr-tag-dynamic/dr-tag-dynamic.component.d.ts} +5 -5
  40. package/lib/dr-tags/dr-tag/dr-tag-list/dr-tag-list.component.d.ts +15 -0
  41. package/lib/dr-tags/{dr-tag.component.d.ts → dr-tag/dr-tag.component.d.ts} +2 -2
  42. package/lib/dr-tags/dr-tags-and-scenario/dr-tags-and-scenario.component.d.ts +31 -0
  43. package/lib/{dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.d.ts → dr-tags/dr-tags-and-scenario-constructor/dr-tags-and-scenario-constructor.component.d.ts} +6 -6
  44. package/lib/{dr-tags-constructor → dr-tags/dr-tags-constructor}/dr-tags-constructor.component.d.ts +6 -6
  45. package/local-api.d.ts +17 -24
  46. package/package.json +1 -1
  47. package/datarailsshared-datarailsshared-1.6.273.tgz +0 -0
  48. package/esm2022/lib/date-tags/any-tag.component.mjs +0 -42
  49. package/esm2022/lib/date-tags/date-tag.component.mjs +0 -131
  50. package/esm2022/lib/date-tags/date-tag.module.mjs +0 -53
  51. package/esm2022/lib/date-tags/day-tag/day-tag.component.mjs +0 -95
  52. package/esm2022/lib/date-tags/forecast-tag/forecast-tag.component.mjs +0 -222
  53. package/esm2022/lib/date-tags/forecast-tag/forecast-tag.service.mjs +0 -87
  54. package/esm2022/lib/date-tags/month-tag/month-tag.component.mjs +0 -98
  55. package/esm2022/lib/date-tags/quarter-tag/quarter-tag.component.mjs +0 -126
  56. package/esm2022/lib/date-tags/week-tag/week-tag.component.mjs +0 -102
  57. package/esm2022/lib/date-tags/year-tag/year-tag.component.mjs +0 -96
  58. package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.component.mjs +0 -227
  59. package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.module.mjs +0 -21
  60. package/esm2022/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.mjs +0 -104
  61. package/esm2022/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.mjs +0 -100
  62. package/esm2022/lib/dr-scenario/consts/scenario-tags-config.mjs +0 -87
  63. package/esm2022/lib/dr-scenario/dr-scenario.module.mjs +0 -27
  64. package/esm2022/lib/dr-scenario/interfaces/scenario.mjs +0 -8
  65. package/esm2022/lib/dr-scenario/services/scenario.service.mjs +0 -195
  66. package/esm2022/lib/dr-tags/dr-tag.component.mjs +0 -240
  67. package/esm2022/lib/dr-tags/dr-tag.module.mjs +0 -23
  68. package/esm2022/lib/dr-tags/dr-tag.types.mjs +0 -2
  69. package/esm2022/lib/dr-tags-constructor/dr-tags-constructor.component.mjs +0 -161
  70. package/esm2022/lib/dr-tags-constructor/dr-tags-constructor.module.mjs +0 -24
  71. package/esm2022/lib/dr-tags-constructor/tags-constructor.service.mjs +0 -71
  72. package/esm2022/lib/list-tags/list-tag.component.mjs +0 -82
  73. package/esm2022/lib/list-tags/list-tag.module.mjs +0 -22
  74. package/lib/date-tags/date-tag.component.d.ts +0 -18
  75. package/lib/date-tags/date-tag.module.d.ts +0 -21
  76. package/lib/date-tags/day-tag/day-tag.component.d.ts +0 -14
  77. package/lib/date-tags/month-tag/month-tag.component.d.ts +0 -14
  78. package/lib/date-tags/year-tag/year-tag.component.d.ts +0 -14
  79. package/lib/dr-dynamic-tag/dr-dynamic-tag.module.d.ts +0 -10
  80. package/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.d.ts +0 -31
  81. package/lib/dr-scenario/dr-scenario.module.d.ts +0 -13
  82. package/lib/dr-tags/dr-tag.module.d.ts +0 -11
  83. package/lib/dr-tags-constructor/dr-tags-constructor.module.d.ts +0 -10
  84. package/lib/list-tags/list-tag.component.d.ts +0 -15
  85. package/lib/list-tags/list-tag.module.d.ts +0 -10
  86. /package/lib/{dr-scenario/interfaces → dr-tags/_interfaces}/scenario.d.ts +0 -0
  87. /package/lib/{date-tags/forecast-tag → dr-tags/dr-tag/dr-tag-date/dr-tag-forecast}/forecast-tag.service.d.ts +0 -0
  88. /package/lib/dr-tags/{dr-tag.types.d.ts → dr-tag/dr-tag.types.d.ts} +0 -0
@@ -0,0 +1,195 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { TagsConfigSubType, TagTypes } from '../../models/serverTags';
3
+ import { Scenario } from '../_interfaces/scenario';
4
+ import { cloneDeep as _cloneDeep, filter as _filter, find as _find, forEach as _forEach, orderBy as _orderBy, indexOf as _indexOf, reduce as _reduce, some as _some, map as _map, includes as _includes, } from 'lodash';
5
+ import { getScenarioTagDataConfig } from '../_consts/scenario-tags-config';
6
+ import * as i0 from "@angular/core";
7
+ export class ScenarioService {
8
+ constructor() {
9
+ this.DEFAULT_FORECAST_DATE_TAG = 'Month';
10
+ }
11
+ get scenarios() {
12
+ return _orderBy(Object.values(Scenario), (scenario) => (scenario === Scenario.NONE ? 1 : 0));
13
+ }
14
+ get areExistingTagsConfig() {
15
+ return !!this.currentTagsConfig;
16
+ }
17
+ initScenarioTags(wholeTagsConfig, currentTagsConfig, isMultipleDimension, isForecastMultipleDimension) {
18
+ if (!wholeTagsConfig?.length)
19
+ return;
20
+ this.wholeTagsConfig = _cloneDeep(wholeTagsConfig);
21
+ this.currentTagsConfig = currentTagsConfig;
22
+ this.isMultipleDimension = isMultipleDimension;
23
+ this.isForecastMultipleDimension = isForecastMultipleDimension;
24
+ }
25
+ getTagsConfigByScenarioTags(scenarioTags, tagsConfig) {
26
+ const scenarioTagsConfig = _filter(tagsConfig, (tagConfig) => _some(scenarioTags, (scenarioTag) => scenarioTag.toggle && scenarioTag.selectedTagSubType === tagConfig.options.sub_type));
27
+ return this.sortScenarioTags(scenarioTagsConfig);
28
+ }
29
+ getScenarioTagsByScenario(scenario) {
30
+ const scenarioTagsConfig = this.getScenarioTagsConfig(scenario, this.wholeTagsConfig);
31
+ const scenarioTagsUi = [];
32
+ _forEach(scenarioTagsConfig, (scenarioTag) => {
33
+ const isTagWithSubTags = scenarioTag.type === TagTypes.DATE;
34
+ const tagWithSubTags = isTagWithSubTags && _find(scenarioTagsUi, { type: scenarioTag.type });
35
+ const tag = tagWithSubTags || this.prepareScenarioTag(scenarioTagsConfig, scenarioTag, scenario, isTagWithSubTags);
36
+ if (isTagWithSubTags) {
37
+ this.updateScenarioSubTags(tag, scenarioTag);
38
+ tag.subTags = ScenarioService.sortedSubTags(tag);
39
+ }
40
+ if (tagWithSubTags)
41
+ return;
42
+ scenarioTagsUi.push(tag);
43
+ });
44
+ if (this.areExistingTagsConfig) {
45
+ this.initExistingTagsConfig(scenario, scenarioTagsUi);
46
+ }
47
+ const isTagNotSupportingDates = _some(scenarioTagsUi, { turnOffDateTags: true, toggle: true });
48
+ if (isTagNotSupportingDates) {
49
+ this.turnOffDateTag(scenarioTagsUi);
50
+ }
51
+ const tagWithSpecificDateTags = _find(scenarioTagsUi, (tag) => tag.toggle && !!tag.acceptableSubTags?.length);
52
+ if (tagWithSpecificDateTags) {
53
+ this.hideNotAvailableTags(tagWithSpecificDateTags, scenarioTagsUi);
54
+ }
55
+ return this.sortScenarioTags(scenarioTagsUi);
56
+ }
57
+ tagNotSupportingDatesHandler(tag, tagNotSupportingDates, dateTag) {
58
+ if (!tagNotSupportingDates || !tag.toggle)
59
+ return;
60
+ if (tag.type === TagTypes.DATE) {
61
+ tagNotSupportingDates.toggle = false;
62
+ }
63
+ if (tag === tagNotSupportingDates) {
64
+ if (dateTag) {
65
+ dateTag.toggle = false;
66
+ }
67
+ }
68
+ }
69
+ tagAcceptableSubTagsHandler(tag, dateTag) {
70
+ if (!tag.acceptableSubTags?.length)
71
+ return;
72
+ if (!dateTag)
73
+ return;
74
+ dateTag.subTags = _map(dateTag.subTags, (subTag) => {
75
+ subTag.hidden = tag.toggle && !_includes(tag.acceptableSubTags, subTag.subType);
76
+ return subTag;
77
+ });
78
+ dateTag.selectedTagSubType = tag.acceptableSubTags[0];
79
+ }
80
+ sortScenarioTags(scenarioTagsUi) {
81
+ return _orderBy(scenarioTagsUi, [(tag) => (tag.type === TagTypes.DATE ? 0 : 1), (tag) => tag.name === 'File Status']);
82
+ }
83
+ static sortedSubTags(tag) {
84
+ const SUB_TAGS_ORDER = [
85
+ TagsConfigSubType.DAY,
86
+ TagsConfigSubType.WEEK,
87
+ TagsConfigSubType.MONTH,
88
+ TagsConfigSubType.QUARTER,
89
+ TagsConfigSubType.YEAR,
90
+ ];
91
+ return _orderBy(tag.subTags, (subTag) => _indexOf(SUB_TAGS_ORDER, subTag.subType));
92
+ }
93
+ initExistingTagsConfig(scenario, scenarioTagsUi) {
94
+ _forEach(this.currentTagsConfig, (tagConfig) => {
95
+ const tagSubType = tagConfig?.options?.sub_type;
96
+ const scenarioTagDataConfig = getScenarioTagDataConfig(this.isMultipleDimension, this.isForecastMultipleDimension);
97
+ if (!scenarioTagDataConfig || !scenarioTagDataConfig[scenario] || !scenarioTagDataConfig[scenario][tagSubType]) {
98
+ return;
99
+ }
100
+ const scenarioTagUi = tagConfig.type === TagTypes.DATE
101
+ ? _find(scenarioTagsUi, { type: tagConfig.type })
102
+ : _find(scenarioTagsUi, { selectedTagSubType: tagSubType });
103
+ if (scenarioTagUi) {
104
+ scenarioTagUi.toggle = true;
105
+ scenarioTagUi.selectedTagSubType = tagSubType;
106
+ }
107
+ });
108
+ }
109
+ prepareScenarioTag(scenarioTagsConfig, scenarioTag, scenario, isDateTag) {
110
+ const toggleStatus = isDateTag
111
+ ? _some(scenarioTagsConfig, (tag) => tag.type === TagTypes.DATE && tag.scenarioData.toggle)
112
+ : scenarioTag.scenarioData.toggle;
113
+ const selectedTagSubType = isDateTag
114
+ ? this.getScenarioSelectedDateTag(scenario, scenarioTagsConfig)
115
+ : scenarioTag.options.sub_type;
116
+ const tag = {
117
+ toggle: this.areExistingTagsConfig ? false : toggleStatus,
118
+ name: scenarioTag.scenarioData.name || scenarioTag.name,
119
+ description: scenarioTag.scenarioData.description || scenarioTag.description,
120
+ type: scenarioTag.type,
121
+ selectedTagSubType,
122
+ };
123
+ if (scenarioTag.scenarioData.turnOffDateTags) {
124
+ tag.turnOffDateTags = scenarioTag.scenarioData.turnOffDateTags;
125
+ }
126
+ if (scenarioTag.scenarioData.acceptableSubTags) {
127
+ tag.acceptableSubTags = scenarioTag.scenarioData.acceptableSubTags;
128
+ }
129
+ return tag;
130
+ }
131
+ updateScenarioSubTags(tag, scenarioTag) {
132
+ if (!tag.subTags) {
133
+ tag.subTags = [];
134
+ }
135
+ const tagSubType = scenarioTag.options.sub_type;
136
+ tag.subTags.push({
137
+ subType: tagSubType,
138
+ name: tagSubType === TagsConfigSubType.FORECAST_NEW ? this.DEFAULT_FORECAST_DATE_TAG : scenarioTag.name,
139
+ });
140
+ }
141
+ turnOffDateTag(scenarioTags) {
142
+ const dateTag = _find(scenarioTags, { type: TagTypes.DATE });
143
+ if (!dateTag)
144
+ return;
145
+ dateTag.toggle = false;
146
+ }
147
+ hideNotAvailableTags(tagWithSpecificDateTags, scenarioTags) {
148
+ const subTags = _find(scenarioTags, { type: TagTypes.DATE })?.subTags;
149
+ if (!subTags.length)
150
+ return;
151
+ _forEach(scenarioTags, (tag) => {
152
+ if (!tag.acceptableSubTags?.length)
153
+ return;
154
+ if (tag !== tagWithSpecificDateTags) {
155
+ tag.toggle = false;
156
+ }
157
+ });
158
+ _forEach(subTags, (subTag) => {
159
+ subTag.hidden = !tagWithSpecificDateTags.acceptableSubTags.includes(subTag.subType);
160
+ });
161
+ }
162
+ getScenarioSelectedDateTag(scenario, dateTags) {
163
+ const monthSubType = _find(dateTags, (tag) => tag.options.sub_type === TagsConfigSubType.MONTH)?.options
164
+ ?.sub_type;
165
+ const scenarioSelectedDateTag = {
166
+ [Scenario.ACTUALS]: () => monthSubType,
167
+ [Scenario.BUDGET]: () => _find(dateTags, (tag) => tag.options.sub_type === TagsConfigSubType.YEAR)?.options?.sub_type,
168
+ [Scenario.FORECAST]: () => _find(dateTags, (tag) => tag.options.sub_type === TagsConfigSubType.FORECAST_NEW)?.options
169
+ ?.sub_type,
170
+ [Scenario.NONE]: () => monthSubType,
171
+ };
172
+ if (!scenarioSelectedDateTag[scenario])
173
+ return;
174
+ return scenarioSelectedDateTag[scenario]();
175
+ }
176
+ getScenarioTagsConfig(scenario, tagsConfig) {
177
+ return _reduce(tagsConfig, (acc, tagConfig) => {
178
+ const tagSubType = tagConfig?.options?.sub_type;
179
+ const scenarioTagDataConfig = getScenarioTagDataConfig(this.isMultipleDimension, this.isForecastMultipleDimension);
180
+ const scenarioTagConfig = scenarioTagDataConfig && scenarioTagDataConfig[scenario] ? scenarioTagDataConfig[scenario][tagSubType] : null;
181
+ if (!scenarioTagConfig || scenarioTagConfig.hidden)
182
+ return acc;
183
+ const clonedTagConfig = _cloneDeep(tagConfig);
184
+ const scenarioTag = { ...clonedTagConfig, scenarioData: scenarioTagConfig };
185
+ acc.push(scenarioTag);
186
+ return acc;
187
+ }, []);
188
+ }
189
+ /** @nocollapse */ static { this.ɵfac = function ScenarioService_Factory(t) { return new (t || ScenarioService)(); }; }
190
+ /** @nocollapse */ static { this.ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: ScenarioService, factory: ScenarioService.ɵfac }); }
191
+ }
192
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ScenarioService, [{
193
+ type: Injectable
194
+ }], null, null); })();
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmFyaW8uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLXRhZ3MvX3NlcnZpY2VzL3NjZW5hcmlvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVEsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUUsT0FBTyxFQUE0RCxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RyxPQUFPLEVBQ0gsU0FBUyxJQUFJLFVBQVUsRUFDdkIsTUFBTSxJQUFJLE9BQU8sRUFDakIsSUFBSSxJQUFJLEtBQUssRUFDYixPQUFPLElBQUksUUFBUSxFQUNuQixPQUFPLElBQUksUUFBUSxFQUNuQixPQUFPLElBQUksUUFBUSxFQUNuQixNQUFNLElBQUksT0FBTyxFQUNqQixJQUFJLElBQUksS0FBSyxFQUNiLEdBQUcsSUFBSSxJQUFJLEVBQ1gsUUFBUSxJQUFJLFNBQVMsR0FDeEIsTUFBTSxRQUFRLENBQUM7QUFDaEIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBRzNFLE1BQU0sT0FBTyxlQUFlO0lBRDVCO1FBRVksOEJBQXlCLEdBQUcsT0FBTyxDQUFDO0tBNFAvQztJQXJQRyxJQUFXLFNBQVM7UUFDaEIsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFRCxJQUFZLHFCQUFxQjtRQUM3QixPQUFPLENBQUMsQ0FBQyxJ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QzttR0E1UFEsZUFBZTtzR0FBZixlQUFlLFdBQWYsZUFBZTs7dUZBQWYsZUFBZTtjQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVRhZywgVGFnc0NvbmZpZ1N1YlR5cGUsIFRhZ1R5cGVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NlcnZlclRhZ3MnO1xuaW1wb3J0IHsgSVNjZW5hcmlvLCBJU2NlbmFyaW9TdWJUYWcsIElTY2VuYXJpb1RhZywgSVNjZW5hcmlvVGFnVWksIFNjZW5hcmlvIH0gZnJvbSAnLi4vX2ludGVyZmFjZXMvc2NlbmFyaW8nO1xuaW1wb3J0IHtcbiAgICBjbG9uZURlZXAgYXMgX2Nsb25lRGVlcCxcbiAgICBmaWx0ZXIgYXMgX2ZpbHRlcixcbiAgICBmaW5kIGFzIF9maW5kLFxuICAgIGZvckVhY2ggYXMgX2ZvckVhY2gsXG4gICAgb3JkZXJCeSBhcyBfb3JkZXJCeSxcbiAgICBpbmRleE9mIGFzIF9pbmRleE9mLFxuICAgIHJlZHVjZSBhcyBfcmVkdWNlLFxuICAgIHNvbWUgYXMgX3NvbWUsXG4gICAgbWFwIGFzIF9tYXAsXG4gICAgaW5jbHVkZXMgYXMgX2luY2x1ZGVzLFxufSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZ2V0U2NlbmFyaW9UYWdEYXRhQ29uZmlnIH0gZnJvbSAnLi4vX2NvbnN0cy9zY2VuYXJpby10YWdzLWNvbmZpZyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTY2VuYXJpb1NlcnZpY2Uge1xuICAgIHByaXZhdGUgREVGQVVMVF9GT1JFQ0FTVF9EQVRFX1RBRyA9ICdNb250aCc7XG5cbiAgICBwcml2YXRlIHdob2xlVGFnc0NvbmZpZzogSVRhZ1tdO1xuICAgIHByaXZhdGUgY3VycmVudFRhZ3NDb25maWc6IElUYWdbXTtcbiAgICBwcml2YXRlIGlzTXVsdGlwbGVEaW1lbnNpb246IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBpc0ZvcmVjYXN0TXVsdGlwbGVEaW1lbnNpb246IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgZ2V0IHNjZW5hcmlvcygpOiBTY2VuYXJpb1tdIHtcbiAgICAgICAgcmV0dXJuIF9vcmRlckJ5KE9iamVjdC52YWx1ZXMoU2NlbmFyaW8pLCAoc2NlbmFyaW8pID0+IChzY2VuYXJpbyA9PT0gU2NlbmFyaW8uTk9ORSA/IDEgOiAwKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgYXJlRXhpc3RpbmdUYWdzQ29uZmlnKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmN1cnJlbnRUYWdzQ29uZmlnO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0U2NlbmFyaW9UYWdzKFxuICAgICAgICB3aG9sZVRhZ3NDb25maWc6IElUYWdbXSxcbiAgICAgICAgY3VycmVudFRhZ3NDb25maWc6IElUYWdbXSxcbiAgICAgICAgaXNNdWx0aXBsZURpbWVuc2lvbjogYm9vbGVhbixcbiAgICAgICAgaXNGb3JlY2FzdE11bHRpcGxlRGltZW5zaW9uOiBib29sZWFuLFxuICAgICk6IHZvaWQge1xuICAgICAgICBpZiAoIXdob2xlVGFnc0NvbmZpZz8ubGVuZ3RoKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy53aG9sZVRhZ3NDb25maWcgPSBfY2xvbmVEZWVwKHdob2xlVGFnc0NvbmZpZyk7XG4gICAgICAgIHRoaXMuY3VycmVudFRhZ3NDb25maWcgPSBjdXJyZW50VGFnc0NvbmZpZztcbiAgICAgICAgdGhpcy5pc011bHRpcGxlRGltZW5zaW9uID0gaXNNdWx0aXBsZURpbWVuc2lvbjtcbiAgICAgICAgdGhpcy5pc0ZvcmVjYXN0TXVsdGlwbGVEaW1lbnNpb24gPSBpc0ZvcmVjYXN0TXVsdGlwbGVEaW1lbnNpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRhZ3NDb25maWdCeVNjZW5hcmlvVGFncyhzY2VuYXJpb1RhZ3M6IElTY2VuYXJpb1RhZ1VpW10sIHRhZ3NDb25maWc6IElUYWdbXSk6IElUYWdbXSB7XG4gICAgICAgIGNvbnN0IHNjZW5hcmlvVGFnc0NvbmZpZyA9IF9maWx0ZXIodGFnc0NvbmZpZywgKHRhZ0NvbmZpZykgPT5cbiAgICAgICAgICAgIF9zb21lKFxuICAgICAgICAgICAgICAgIHNjZW5hcmlvVGFncyxcbiAgICAgICAgICAgICAgICAoc2NlbmFyaW9UYWcpID0+IHNjZW5hcmlvVGFnLnRvZ2dsZSAmJiBzY2VuYXJpb1RhZy5zZWxlY3RlZFRhZ1N1YlR5cGUgPT09IHRhZ0NvbmZpZy5vcHRpb25zLnN1Yl90eXBlLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5zb3J0U2NlbmFyaW9UYWdzKHNjZW5hcmlvVGFnc0NvbmZpZyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNjZW5hcmlvVGFnc0J5U2NlbmFyaW8oc2NlbmFyaW86IFNjZW5hcmlvKSB7XG4gICAgICAgIGNvbnN0IHNjZW5hcmlvVGFnc0NvbmZpZzogSVNjZW5hcmlvVGFnW10gPSB0aGlzLmdldFNjZW5hcmlvVGFnc0NvbmZpZyhzY2VuYXJpbywgdGhpcy53aG9sZVRhZ3NDb25maWcpO1xuICAgICAgICBjb25zdCBzY2VuYXJpb1RhZ3NVaTogSVNjZW5hcmlvVGFnVWlbXSA9IFtdO1xuXG4gICAgICAgIF9mb3JFYWNoKHNjZW5hcmlvVGFnc0NvbmZpZywgKHNjZW5hcmlvVGFnOiBJU2NlbmFyaW9UYWcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlzVGFnV2l0aFN1YlRhZ3MgPSBzY2VuYXJpb1RhZy50eXBlID09PSBUYWdUeXBlcy5EQVRFO1xuICAgICAgICAgICAgY29uc3QgdGFnV2l0aFN1YlRhZ3MgPSBpc1RhZ1dpdGhTdWJUYWdzICYmIF9maW5kKHNjZW5hcmlvVGFnc1VpLCB7IHR5cGU6IHNjZW5hcmlvVGFnLnR5cGUgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHRhZzogSVNjZW5hcmlvVGFnVWkgPVxuICAgICAgICAgICAgICAgIHRhZ1dpdGhTdWJUYWdzIHx8IHRoaXMucHJlcGFyZVNjZW5hcmlvVGFnKHNjZW5hcmlvVGFnc0NvbmZpZywgc2NlbmFyaW9UYWcsIHNjZW5hcmlvLCBpc1RhZ1dpdGhTdWJUYWdzKTtcblxuICAgICAgICAgICAgaWYgKGlzVGFnV2l0aFN1YlRhZ3MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNjZW5hcmlvU3ViVGFncyh0YWcsIHNjZW5hcmlvVGFnKTtcbiAgICAgICAgICAgICAgICB0YWcuc3ViVGFncyA9IFNjZW5hcmlvU2VydmljZS5zb3J0ZWRTdWJUYWdzKHRhZyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0YWdXaXRoU3ViVGFncykgcmV0dXJuO1xuICAgICAgICAgICAgc2NlbmFyaW9UYWdzVWkucHVzaCh0YWcpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5hcmVFeGlzdGluZ1RhZ3NDb25maWcpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdEV4aXN0aW5nVGFnc0NvbmZpZyhzY2VuYXJpbywgc2NlbmFyaW9UYWdzVWkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNUYWdOb3RTdXBwb3J0aW5nRGF0ZXMgPSBfc29tZShzY2VuYXJpb1RhZ3NVaSwgeyB0dXJuT2ZmRGF0ZVRhZ3M6IHRydWUsIHRvZ2dsZTogdHJ1ZSB9KTtcbiAgICAgICAgaWYgKGlzVGFnTm90U3VwcG9ydGluZ0RhdGVzKSB7XG4gICAgICAgICAgICB0aGlzLnR1cm5PZmZEYXRlVGFnKHNjZW5hcmlvVGFnc1VpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRhZ1dpdGhTcGVjaWZpY0RhdGVUYWdzOiBJU2NlbmFyaW9UYWdVaSA9IF9maW5kKFxuICAgICAgICAgICAgc2NlbmFyaW9UYWdzVWksXG4gICAgICAgICAgICAodGFnKSA9PiB0YWcudG9nZ2xlICYmICEhdGFnLmFjY2VwdGFibGVTdWJUYWdzPy5sZW5ndGgsXG4gICAgICAgICk7XG4gICAgICAgIGlmICh0YWdXaXRoU3BlY2lmaWNEYXRlVGFncykge1xuICAgICAgICAgICAgdGhpcy5oaWRlTm90QXZhaWxhYmxlVGFncyh0YWdXaXRoU3BlY2lmaWNEYXRlVGFncywgc2NlbmFyaW9UYWdzVWkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc29ydFNjZW5hcmlvVGFncyhzY2VuYXJpb1RhZ3NVaSk7XG4gICAgfVxuXG4gICAgcHVibGljIHRhZ05vdFN1cHBvcnRpbmdEYXRlc0hhbmRsZXI8VCBleHRlbmRzIElTY2VuYXJpb1RhZ1VpPih0YWc6IFQsIHRhZ05vdFN1cHBvcnRpbmdEYXRlczogVCwgZGF0ZVRhZzogVCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRhZ05vdFN1cHBvcnRpbmdEYXRlcyB8fCAhdGFnLnRvZ2dsZSkgcmV0dXJuO1xuXG4gICAgICAgIGlmICh0YWcudHlwZSA9PT0gVGFnVHlwZXMuREFURSkge1xuICAgICAgICAgICAgdGFnTm90U3VwcG9ydGluZ0RhdGVzLnRvZ2dsZSA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRhZyA9PT0gdGFnTm90U3VwcG9ydGluZ0RhdGVzKSB7XG4gICAgICAgICAgICBpZiAoZGF0ZVRhZykge1xuICAgICAgICAgICAgICAgIGRhdGVUYWcudG9nZ2xlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdGFnQWNjZXB0YWJsZVN1YlRhZ3NIYW5kbGVyPFQgZXh0ZW5kcyBJU2NlbmFyaW9UYWdVaT4odGFnOiBULCBkYXRlVGFnOiBUKTogdm9pZCB7XG4gICAgICAgIGlmICghdGFnLmFjY2VwdGFibGVTdWJUYWdzPy5sZW5ndGgpIHJldHVybjtcblxuICAgICAgICBpZiAoIWRhdGVUYWcpIHJldHVybjtcblxuICAgICAgICBkYXRlVGFnLnN1YlRhZ3MgPSBfbWFwKGRhdGVUYWcuc3ViVGFncywgKHN1YlRhZykgPT4ge1xuICAgICAgICAgICAgc3ViVGFnLmhpZGRlbiA9IHRhZy50b2dnbGUgJiYgIV9pbmNsdWRlcyh0YWcuYWNjZXB0YWJsZVN1YlRhZ3MsIHN1YlRhZy5zdWJUeXBlKTtcbiAgICAgICAgICAgIHJldHVybiBzdWJUYWc7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRhdGVUYWcuc2VsZWN0ZWRUYWdTdWJUeXBlID0gdGFnLmFjY2VwdGFibGVTdWJUYWdzWzBdO1xuICAgIH1cblxuICAgIHB1YmxpYyBzb3J0U2NlbmFyaW9UYWdzKHNjZW5hcmlvVGFnc1VpOiBhbnlbXSk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIF9vcmRlckJ5KHNjZW5hcmlvVGFnc1VpLCBbKHRhZykgPT4gKHRhZy50eXBlID09PSBUYWdUeXBlcy5EQVRFID8gMCA6IDEpLCAodGFnKSA9PiB0YWcubmFtZSA9PT0gJ0ZpbGUgU3RhdHVzJ10pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc29ydGVkU3ViVGFncyh0YWc6IElTY2VuYXJpb1RhZ1VpKTogSVNjZW5hcmlvU3ViVGFnW10ge1xuICAgICAgICBjb25zdCBTVUJfVEFHU19PUkRFUiA9IFtcbiAgICAgICAgICAgIFRhZ3NDb25maWdTdWJUeXBlLkRBWSxcbiAgICAgICAgICAgIFRhZ3NDb25maWdTdWJUeXBlLldFRUssXG4gICAgICAgICAgICBUYWdzQ29uZmlnU3ViVHlwZS5NT05USCxcbiAgICAgICAgICAgIFRhZ3NDb25maWdTdWJUeXBlLlFVQVJURVIsXG4gICAgICAgICAgICBUYWdzQ29uZmlnU3ViVHlwZS5ZRUFSLFxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4gX29yZGVyQnkodGFnLnN1YlRhZ3MsIChzdWJUYWcpID0+IF9pbmRleE9mKFNVQl9UQUdTX09SREVSLCBzdWJUYWcuc3ViVHlwZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdEV4aXN0aW5nVGFnc0NvbmZpZyhzY2VuYXJpbzogU2NlbmFyaW8sIHNjZW5hcmlvVGFnc1VpOiBJU2NlbmFyaW9UYWdVaVtdKSB7XG4gICAgICAgIF9mb3JFYWNoKHRoaXMuY3VycmVudFRhZ3NDb25maWcsICh0YWdDb25maWcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhZ1N1YlR5cGUgPSB0YWdDb25maWc/Lm9wdGlvbnM/LnN1Yl90eXBlO1xuICAgICAgICAgICAgY29uc3Qgc2NlbmFyaW9UYWdEYXRhQ29uZmlnID0gZ2V0U2NlbmFyaW9UYWdEYXRhQ29uZmlnKHRoaXMuaXNNdWx0aXBsZURpbWVuc2lvbiwgdGhpcy5pc0ZvcmVjYXN0TXVsdGlwbGVEaW1lbnNpb24pO1xuICAgICAgICAgICAgaWYgKCFzY2VuYXJpb1RhZ0RhdGFDb25maWcgfHwgIXNjZW5hcmlvVGFnRGF0YUNvbmZpZ1tzY2VuYXJpb10gfHwgIXNjZW5hcmlvVGFnRGF0YUNvbmZpZ1tzY2VuYXJpb11bdGFnU3ViVHlwZV0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHNjZW5hcmlvVGFnVWkgPVxuICAgICAgICAgICAgICAgIHRhZ0NvbmZpZy50eXBlID09PSBUYWdUeXBlcy5EQVRFXG4gICAgICAgICAgICAgICAgICAgID8gX2ZpbmQoc2NlbmFyaW9UYWdzVWksIHsgdHlwZTogdGFnQ29uZmlnLnR5cGUgfSlcbiAgICAgICAgICAgICAgICAgICAgOiBfZmluZChzY2VuYXJpb1RhZ3NVaSwgeyBzZWxlY3RlZFRhZ1N1YlR5cGU6IHRhZ1N1YlR5cGUgfSk7XG5cbiAgICAgICAgICAgIGlmIChzY2VuYXJpb1RhZ1VpKSB7XG4gICAgICAgICAgICAgICAgc2NlbmFyaW9UYWdVaS50b2dnbGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNjZW5hcmlvVGFnVWkuc2VsZWN0ZWRUYWdTdWJUeXBlID0gdGFnU3ViVHlwZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcmVwYXJlU2NlbmFyaW9UYWcoXG4gICAgICAgIHNjZW5hcmlvVGFnc0NvbmZpZzogSVNjZW5hcmlvVGFnW10sXG4gICAgICAgIHNjZW5hcmlvVGFnOiBJU2NlbmFyaW9UYWcsXG4gICAgICAgIHNjZW5hcmlvOiBTY2VuYXJpbyxcbiAgICAgICAgaXNEYXRlVGFnOiBib29sZWFuLFxuICAgICk6IElTY2VuYXJpb1RhZ1VpIHtcbiAgICAgICAgY29uc3QgdG9nZ2xlU3RhdHVzID0gaXNEYXRlVGFnXG4gICAgICAgICAgICA/IF9zb21lKHNjZW5hcmlvVGFnc0NvbmZpZywgKHRhZykgPT4gdGFnLnR5cGUgPT09IFRhZ1R5cGVzLkRBVEUgJiYgdGFnLnNjZW5hcmlvRGF0YS50b2dnbGUpXG4gICAgICAgICAgICA6IHNjZW5hcmlvVGFnLnNjZW5hcmlvRGF0YS50b2dnbGU7XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRUYWdTdWJUeXBlID0gaXNEYXRlVGFnXG4gICAgICAgICAgICA/IHRoaXMuZ2V0U2NlbmFyaW9TZWxlY3RlZERhdGVUYWcoc2NlbmFyaW8sIHNjZW5hcmlvVGFnc0NvbmZpZylcbiAgICAgICAgICAgIDogc2NlbmFyaW9UYWcub3B0aW9ucy5zdWJfdHlwZTtcblxuICAgICAgICBjb25zdCB0YWc6IElTY2VuYXJpb1RhZ1VpID0ge1xuICAgICAgICAgICAgdG9nZ2xlOiB0aGlzLmFyZUV4aXN0aW5nVGFnc0NvbmZpZyA/IGZhbHNlIDogdG9nZ2xlU3RhdHVzLFxuICAgICAgICAgICAgbmFtZTogc2NlbmFyaW9UYWcuc2NlbmFyaW9EYXRhLm5hbWUgfHwgc2NlbmFyaW9UYWcubmFtZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzY2VuYXJpb1RhZy5zY2VuYXJpb0RhdGEuZGVzY3JpcHRpb24gfHwgc2NlbmFyaW9UYWcuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICB0eXBlOiBzY2VuYXJpb1RhZy50eXBlLFxuICAgICAgICAgICAgc2VsZWN0ZWRUYWdTdWJUeXBlLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChzY2VuYXJpb1RhZy5zY2VuYXJpb0RhdGEudHVybk9mZkRhdGVUYWdzKSB7XG4gICAgICAgICAgICB0YWcudHVybk9mZkRhdGVUYWdzID0gc2NlbmFyaW9UYWcuc2NlbmFyaW9EYXRhLnR1cm5PZmZEYXRlVGFncztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzY2VuYXJpb1RhZy5zY2VuYXJpb0RhdGEuYWNjZXB0YWJsZVN1YlRhZ3MpIHtcbiAgICAgICAgICAgIHRhZy5hY2NlcHRhYmxlU3ViVGFncyA9IHNjZW5hcmlvVGFnLnNjZW5hcmlvRGF0YS5hY2NlcHRhYmxlU3ViVGFncztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0YWc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTY2VuYXJpb1N1YlRhZ3ModGFnOiBJU2NlbmFyaW9UYWdVaSwgc2NlbmFyaW9UYWc6IElTY2VuYXJpb1RhZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRhZy5zdWJUYWdzKSB7XG4gICAgICAgICAgICB0YWcuc3ViVGFncyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGFnU3ViVHlwZSA9IHNjZW5hcmlvVGFnLm9wdGlvbnMuc3ViX3R5cGU7XG5cbiAgICAgICAgdGFnLnN1YlRhZ3MucHVzaCh7XG4gICAgICAgICAgICBzdWJUeXBlOiB0YWdTdWJUeXBlLFxuICAgICAgICAgICAgbmFtZTogdGFnU3ViVHlwZSA9PT0gVGFnc0NvbmZpZ1N1YlR5cGUuRk9SRUNBU1RfTkVXID8gdGhpcy5ERUZBVUxUX0ZPUkVDQVNUX0RBVEVfVEFHIDogc2NlbmFyaW9UYWcubmFtZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0dXJuT2ZmRGF0ZVRhZyhzY2VuYXJpb1RhZ3M6IElTY2VuYXJpb1RhZ1VpW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGF0ZVRhZyA9IF9maW5kKHNjZW5hcmlvVGFncywgeyB0eXBlOiBUYWdUeXBlcy5EQVRFIH0pO1xuXG4gICAgICAgIGlmICghZGF0ZVRhZykgcmV0dXJuO1xuICAgICAgICBkYXRlVGFnLnRvZ2dsZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGlkZU5vdEF2YWlsYWJsZVRhZ3ModGFnV2l0aFNwZWNpZmljRGF0ZVRhZ3M6IElTY2VuYXJpb1RhZ1VpLCBzY2VuYXJpb1RhZ3M6IElTY2VuYXJpb1RhZ1VpW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3ViVGFncyA9IF9maW5kKHNjZW5hcmlvVGFncywgeyB0eXBlOiBUYWdUeXBlcy5EQVRFIH0pPy5zdWJUYWdzO1xuICAgICAgICBpZiAoIXN1YlRhZ3MubGVuZ3RoKSByZXR1cm47XG5cbiAgICAgICAgX2ZvckVhY2goc2NlbmFyaW9UYWdzLCAodGFnKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRhZy5hY2NlcHRhYmxlU3ViVGFncz8ubGVuZ3RoKSByZXR1cm47XG4gICAgICAgICAgICBpZiAodGFnICE9PSB0YWdXaXRoU3BlY2lmaWNEYXRlVGFncykge1xuICAgICAgICAgICAgICAgIHRhZy50b2dnbGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgX2ZvckVhY2goc3ViVGFncywgKHN1YlRhZykgPT4ge1xuICAgICAgICAgICAgc3ViVGFnLmhpZGRlbiA9ICF0YWdXaXRoU3BlY2lmaWNEYXRlVGFncy5hY2NlcHRhYmxlU3ViVGFncy5pbmNsdWRlcyhzdWJUYWcuc3ViVHlwZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2NlbmFyaW9TZWxlY3RlZERhdGVUYWcoc2NlbmFyaW86IFNjZW5hcmlvLCBkYXRlVGFnczogSVNjZW5hcmlvVGFnW10pOiBUYWdzQ29uZmlnU3ViVHlwZSB7XG4gICAgICAgIGNvbnN0IG1vbnRoU3ViVHlwZSA9IF9maW5kKGRhdGVUYWdzLCAodGFnOiBJU2NlbmFyaW9UYWcpID0+IHRhZy5vcHRpb25zLnN1Yl90eXBlID09PSBUYWdzQ29uZmlnU3ViVHlwZS5NT05USCk/Lm9wdGlvbnNcbiAgICAgICAgICAgID8uc3ViX3R5cGU7XG5cbiAgICAgICAgY29uc3Qgc2NlbmFyaW9TZWxlY3RlZERhdGVUYWcgPSB7XG4gICAgICAgICAgICBbU2NlbmFyaW8uQUNUVUFMU106ICgpID0+IG1vbnRoU3ViVHlwZSxcbiAgICAgICAgICAgIFtTY2VuYXJpby5CVURHRVRdOiAoKSA9PlxuICAgICAgICAgICAgICAgIF9maW5kKGRhdGVUYWdzLCAodGFnOiBJU2NlbmFyaW9UYWcpID0+IHRhZy5vcHRpb25zLnN1Yl90eXBlID09PSBUYWdzQ29uZmlnU3ViVHlwZS5ZRUFSKT8ub3B0aW9ucz8uc3ViX3R5cGUsXG4gICAgICAgICAgICBbU2NlbmFyaW8uRk9SRUNBU1RdOiAoKSA9PlxuICAgICAgICAgICAgICAgIF9maW5kKGRhdGVUYWdzLCAodGFnOiBJU2NlbmFyaW9UYWcpID0+IHRhZy5vcHRpb25zLnN1Yl90eXBlID09PSBUYWdzQ29uZmlnU3ViVHlwZS5GT1JFQ0FTVF9ORVcpPy5vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgID8uc3ViX3R5cGUsXG4gICAgICAgICAgICBbU2NlbmFyaW8uTk9ORV06ICgpID0+IG1vbnRoU3ViVHlwZSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoIXNjZW5hcmlvU2VsZWN0ZWREYXRlVGFnW3NjZW5hcmlvXSkgcmV0dXJuO1xuICAgICAgICByZXR1cm4gc2NlbmFyaW9TZWxlY3RlZERhdGVUYWdbc2NlbmFyaW9dKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTY2VuYXJpb1RhZ3NDb25maWcoc2NlbmFyaW86IFNjZW5hcmlvLCB0YWdzQ29uZmlnOiBJVGFnW10pOiBJU2NlbmFyaW9UYWdbXSB7XG4gICAgICAgIHJldHVybiBfcmVkdWNlKFxuICAgICAgICAgICAgdGFnc0NvbmZpZyxcbiAgICAgICAgICAgIChhY2M6IElTY2VuYXJpb1RhZ1tdLCB0YWdDb25maWc6IElUYWcpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YWdTdWJUeXBlID0gdGFnQ29uZmlnPy5vcHRpb25zPy5zdWJfdHlwZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHNjZW5hcmlvVGFnRGF0YUNvbmZpZyA9IGdldFNjZW5hcmlvVGFnRGF0YUNvbmZpZyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc011bHRpcGxlRGltZW5zaW9uLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRm9yZWNhc3RNdWx0aXBsZURpbWVuc2lvbixcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjZW5hcmlvVGFnQ29uZmlnOiBJU2NlbmFyaW8gPVxuICAgICAgICAgICAgICAgICAgICBzY2VuYXJpb1RhZ0RhdGFDb25maWcgJiYgc2NlbmFyaW9UYWdEYXRhQ29uZmlnW3NjZW5hcmlvXSA/IHNjZW5hcmlvVGFnRGF0YUNvbmZpZ1tzY2VuYXJpb11bdGFnU3ViVHlwZV0gOiBudWxsO1xuICAgICAgICAgICAgICAgIGlmICghc2NlbmFyaW9UYWdDb25maWcgfHwgc2NlbmFyaW9UYWdDb25maWcuaGlkZGVuKSByZXR1cm4gYWNjO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvbmVkVGFnQ29uZmlnID0gX2Nsb25lRGVlcCh0YWdDb25maWcpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjZW5hcmlvVGFnOiBJU2NlbmFyaW9UYWcgPSB7IC4uLmNsb25lZFRhZ0NvbmZpZywgc2NlbmFyaW9EYXRhOiBzY2VuYXJpb1RhZ0NvbmZpZyB9O1xuXG4gICAgICAgICAgICAgICAgYWNjLnB1c2goc2NlbmFyaW9UYWcpO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW10sXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,71 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { TagsConfigSubType, TagTypes } from '../../models/serverTags';
3
+ import { find as _find, reduce as _reduce, some as _some } from 'lodash';
4
+ import { ScenarioService } from './scenario.service';
5
+ import * as i0 from "@angular/core";
6
+ export class TagsConstructorService {
7
+ constructor() {
8
+ this.tagsNotSupportingDatesTag = [TagsConfigSubType.PLAN];
9
+ this.tagsAcceptableSubTags = {
10
+ [TagsConfigSubType.BUDGET_CYCLE]: [TagsConfigSubType.YEAR],
11
+ };
12
+ }
13
+ buildTags(tagsConfigToDisplay, selectedTagsConfig) {
14
+ return _reduce(tagsConfigToDisplay, (acc, tagConfig) => {
15
+ const isTagWithSubTags = tagConfig.type === TagTypes.DATE && tagConfig.options.sub_type !== TagsConfigSubType.FORECAST_NEW;
16
+ const tagWithSubTags = isTagWithSubTags && _find(acc, { type: tagConfig.type });
17
+ const tag = tagWithSubTags || this.prepareTag(tagConfig, selectedTagsConfig, isTagWithSubTags);
18
+ if (isTagWithSubTags) {
19
+ this.updateSubTags(tag, tagConfig, selectedTagsConfig);
20
+ tag.subTags = ScenarioService.sortedSubTags(tag);
21
+ }
22
+ if (tagWithSubTags)
23
+ return acc;
24
+ acc.push(tag);
25
+ return acc;
26
+ }, []);
27
+ }
28
+ updateSubTags(tag, tagConfig, selectedTagsConfig) {
29
+ const tagSubType = tagConfig.options.sub_type;
30
+ if (tagSubType === TagsConfigSubType.FORECAST_NEW)
31
+ return;
32
+ if (!tag.subTags) {
33
+ tag.subTags = [];
34
+ }
35
+ tag.name = 'Date';
36
+ const enabledTagSubType = _find(selectedTagsConfig, (_tagConfig) => _tagConfig.options.sub_type === tagSubType)?.options
37
+ ?.sub_type;
38
+ tag.toggle = !!enabledTagSubType || tag.toggle;
39
+ if (tag.toggle && enabledTagSubType) {
40
+ tag.selectedTagSubType = tagSubType;
41
+ }
42
+ tag.subTags.push({
43
+ subType: tagSubType,
44
+ name: tagConfig.name,
45
+ });
46
+ }
47
+ prepareTag(tagConfig, selectedTagsConfig, isTagWithSubTags) {
48
+ const selectedTagSubType = isTagWithSubTags ? TagsConfigSubType.MONTH : tagConfig.options.sub_type;
49
+ const toggleStatus = _some(selectedTagsConfig, (_tagConfig) => _tagConfig.options.sub_type === selectedTagSubType);
50
+ const tag = {
51
+ toggle: toggleStatus,
52
+ name: tagConfig.name,
53
+ description: tagConfig.description,
54
+ type: tagConfig.type,
55
+ selectedTagSubType,
56
+ };
57
+ if (this.tagsNotSupportingDatesTag.includes(selectedTagSubType)) {
58
+ tag.turnOffDateTags = true;
59
+ }
60
+ if (this.tagsAcceptableSubTags[selectedTagSubType]) {
61
+ tag.acceptableSubTags = this.tagsAcceptableSubTags[selectedTagSubType];
62
+ }
63
+ return tag;
64
+ }
65
+ /** @nocollapse */ static { this.ɵfac = function TagsConstructorService_Factory(t) { return new (t || TagsConstructorService)(); }; }
66
+ /** @nocollapse */ static { this.ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: TagsConstructorService, factory: TagsConstructorService.ɵfac }); }
67
+ }
68
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TagsConstructorService, [{
69
+ type: Injectable
70
+ }], null, null); })();
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFncy1jb25zdHJ1Y3Rvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItdGFncy9fc2VydmljZXMvdGFncy1jb25zdHJ1Y3Rvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFRLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sSUFBSSxPQUFPLEVBQUUsSUFBSSxJQUFJLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBSXJELE1BQU0sT0FBTyxzQkFBc0I7SUFEbkM7UUFFcUIsOEJBQXlCLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRCwwQkFBcUIsR0FBRztZQUNyQyxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDO1NBQzdELENBQUM7S0F3RUw7SUF0RVUsU0FBUyxDQUFDLG1CQUEyQixFQUFFLGtCQUEwQjtRQUNwRSxPQUFPLE9BQU8sQ0FDVixtQkFBbUIsRUFDbkIsQ0FBQyxHQUFHLEVBQUUsU0FBZSxFQUFFLEVBQUU7WUFDckIsTUFBTSxnQkFBZ0IsR0FDbEIsU0FBUyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsSUFBSSxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxLQUFLLGlCQUFpQixDQUFDLFlBQVksQ0FBQztZQUN0RyxNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FB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Y0FEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElUYWcsIFRhZ3NDb25maWdTdWJUeXBlLCBUYWdUeXBlcyB9IGZyb20gJy4uLy4uL21vZGVscy9zZXJ2ZXJUYWdzJztcbmltcG9ydCB7IGZpbmQgYXMgX2ZpbmQsIHJlZHVjZSBhcyBfcmVkdWNlLCBzb21lIGFzIF9zb21lIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFNjZW5hcmlvU2VydmljZSB9IGZyb20gJy4vc2NlbmFyaW8uc2VydmljZSc7XG5pbXBvcnQgeyBJU2NlbmFyaW9UYWdVaSB9IGZyb20gJy4uL19pbnRlcmZhY2VzL3NjZW5hcmlvJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRhZ3NDb25zdHJ1Y3RvclNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdGFnc05vdFN1cHBvcnRpbmdEYXRlc1RhZyA9IFtUYWdzQ29uZmlnU3ViVHlwZS5QTEFOXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhZ3NBY2NlcHRhYmxlU3ViVGFncyA9IHtcbiAgICAgICAgW1RhZ3NDb25maWdTdWJUeXBlLkJVREdFVF9DWUNMRV06IFtUYWdzQ29uZmlnU3ViVHlwZS5ZRUFSXSxcbiAgICB9O1xuXG4gICAgcHVibGljIGJ1aWxkVGFncyh0YWdzQ29uZmlnVG9EaXNwbGF5OiBJVGFnW10sIHNlbGVjdGVkVGFnc0NvbmZpZzogSVRhZ1tdKTogSVNjZW5hcmlvVGFnVWlbXSB7XG4gICAgICAgIHJldHVybiBfcmVkdWNlKFxuICAgICAgICAgICAgdGFnc0NvbmZpZ1RvRGlzcGxheSxcbiAgICAgICAgICAgIChhY2MsIHRhZ0NvbmZpZzogSVRhZykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzVGFnV2l0aFN1YlRhZ3MgPVxuICAgICAgICAgICAgICAgICAgICB0YWdDb25maWcudHlwZSA9PT0gVGFnVHlwZXMuREFURSAmJiB0YWdDb25maWcub3B0aW9ucy5zdWJfdHlwZSAhPT0gVGFnc0NvbmZpZ1N1YlR5cGUuRk9SRUNBU1RfTkVXO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhZ1dpdGhTdWJUYWdzID0gaXNUYWdXaXRoU3ViVGFncyAmJiBfZmluZChhY2MsIHsgdHlwZTogdGFnQ29uZmlnLnR5cGUgfSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0YWcgPSB0YWdXaXRoU3ViVGFncyB8fCB0aGlzLnByZXBhcmVUYWcodGFnQ29uZmlnLCBzZWxlY3RlZFRhZ3NDb25maWcsIGlzVGFnV2l0aFN1YlRhZ3MpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzVGFnV2l0aFN1YlRhZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdWJUYWdzKHRhZywgdGFnQ29uZmlnLCBzZWxlY3RlZFRhZ3NDb25maWcpO1xuICAgICAgICAgICAgICAgICAgICB0YWcuc3ViVGFncyA9IFNjZW5hcmlvU2VydmljZS5zb3J0ZWRTdWJUYWdzKHRhZyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRhZ1dpdGhTdWJUYWdzKSByZXR1cm4gYWNjO1xuXG4gICAgICAgICAgICAgICAgYWNjLnB1c2godGFnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlU3ViVGFncyh0YWc6IElTY2VuYXJpb1RhZ1VpLCB0YWdDb25maWc6IElUYWcsIHNlbGVjdGVkVGFnc0NvbmZpZzogSVRhZ1tdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhZ1N1YlR5cGUgPSB0YWdDb25maWcub3B0aW9ucy5zdWJfdHlwZTtcbiAgICAgICAgaWYgKHRhZ1N1YlR5cGUgPT09IFRhZ3NDb25maWdTdWJUeXBlLkZPUkVDQVNUX05FVykgcmV0dXJuO1xuXG4gICAgICAgIGlmICghdGFnLnN1YlRhZ3MpIHtcbiAgICAgICAgICAgIHRhZy5zdWJUYWdzID0gW107XG4gICAgICAgIH1cblxuICAgICAgICB0YWcubmFtZSA9ICdEYXRlJztcblxuICAgICAgICBjb25zdCBlbmFibGVkVGFnU3ViVHlwZSA9IF9maW5kKHNlbGVjdGVkVGFnc0NvbmZpZywgKF90YWdDb25maWcpID0+IF90YWdDb25maWcub3B0aW9ucy5zdWJfdHlwZSA9PT0gdGFnU3ViVHlwZSk/Lm9wdGlvbnNcbiAgICAgICAgICAgID8uc3ViX3R5cGU7XG4gICAgICAgIHRhZy50b2dnbGUgPSAhIWVuYWJsZWRUYWdTdWJUeXBlIHx8IHRhZy50b2dnbGU7XG5cbiAgICAgICAgaWYgKHRhZy50b2dnbGUgJiYgZW5hYmxlZFRhZ1N1YlR5cGUpIHtcbiAgICAgICAgICAgIHRhZy5zZWxlY3RlZFRhZ1N1YlR5cGUgPSB0YWdTdWJUeXBlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGFnLnN1YlRhZ3MucHVzaCh7XG4gICAgICAgICAgICBzdWJUeXBlOiB0YWdTdWJUeXBlLFxuICAgICAgICAgICAgbmFtZTogdGFnQ29uZmlnLm5hbWUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJlcGFyZVRhZyh0YWdDb25maWc6IElUYWcsIHNlbGVjdGVkVGFnc0NvbmZpZzogSVRhZ1tdLCBpc1RhZ1dpdGhTdWJUYWdzOiBib29sZWFuKTogSVNjZW5hcmlvVGFnVWkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZFRhZ1N1YlR5cGUgPSBpc1RhZ1dpdGhTdWJUYWdzID8gVGFnc0NvbmZpZ1N1YlR5cGUuTU9OVEggOiB0YWdDb25maWcub3B0aW9ucy5zdWJfdHlwZTtcbiAgICAgICAgY29uc3QgdG9nZ2xlU3RhdHVzID0gX3NvbWUoc2VsZWN0ZWRUYWdzQ29uZmlnLCAoX3RhZ0NvbmZpZykgPT4gX3RhZ0NvbmZpZy5vcHRpb25zLnN1Yl90eXBlID09PSBzZWxlY3RlZFRhZ1N1YlR5cGUpO1xuXG4gICAgICAgIGNvbnN0IHRhZzogSVNjZW5hcmlvVGFnVWkgPSB7XG4gICAgICAgICAgICB0b2dnbGU6IHRvZ2dsZVN0YXR1cyxcbiAgICAgICAgICAgIG5hbWU6IHRhZ0NvbmZpZy5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHRhZ0NvbmZpZy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHR5cGU6IHRhZ0NvbmZpZy50eXBlLFxuICAgICAgICAgICAgc2VsZWN0ZWRUYWdTdWJUeXBlLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLnRhZ3NOb3RTdXBwb3J0aW5nRGF0ZXNUYWcuaW5jbHVkZXMoc2VsZWN0ZWRUYWdTdWJUeXBlKSkge1xuICAgICAgICAgICAgdGFnLnR1cm5PZmZEYXRlVGFncyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50YWdzQWNjZXB0YWJsZVN1YlRhZ3Nbc2VsZWN0ZWRUYWdTdWJUeXBlXSkge1xuICAgICAgICAgICAgdGFnLmFjY2VwdGFibGVTdWJUYWdzID0gdGhpcy50YWdzQWNjZXB0YWJsZVN1YlRhZ3Nbc2VsZWN0ZWRUYWdTdWJUeXBlXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0YWc7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,42 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class AnyTagComponent {
4
+ constructor() {
5
+ this.dateChange = new EventEmitter();
6
+ this.name = undefined;
7
+ this.defaultValue = undefined;
8
+ this.dateObj = { date: undefined };
9
+ }
10
+ ngOnInit() {
11
+ this.initDate();
12
+ this.initName();
13
+ this.chosenTagHandler(this.dateObj.date);
14
+ }
15
+ initDate() { }
16
+ initName() { }
17
+ changeInputHandler(event) {
18
+ const input = event.target;
19
+ this.chosenTagHandler(input.value);
20
+ }
21
+ chosenTagHandler(value) {
22
+ // need implement in all tags
23
+ }
24
+ /** @nocollapse */ static { this.ɵfac = function AnyTagComponent_Factory(t) { return new (t || AnyTagComponent)(); }; }
25
+ /** @nocollapse */ static { this.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: AnyTagComponent, selectors: [["any-tag"]], inputs: { name: "name", defaultValue: "defaultValue", disabled: "disabled" }, outputs: { dateChange: "dateChange" }, decls: 0, vars: 0, template: function AnyTagComponent_Template(rf, ctx) { }, encapsulation: 2 }); }
26
+ }
27
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AnyTagComponent, [{
28
+ type: Component,
29
+ args: [{
30
+ template: ``,
31
+ selector: 'any-tag',
32
+ }]
33
+ }], function () { return []; }, { dateChange: [{
34
+ type: Output
35
+ }], name: [{
36
+ type: Input
37
+ }], defaultValue: [{
38
+ type: Input
39
+ }], disabled: [{
40
+ type: Input
41
+ }] }); })();
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW55LXRhZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci10YWdzL2RyLXRhZy9kci10YWctZGF0ZS9hbnktdGFnLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU8vRSxNQUFNLE9BQU8sZUFBZTtJQU14QjtRQUxVLGVBQVUsR0FBMkIsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUNuRSxTQUFJLEdBQXVCLFNBQVMsQ0FBQztRQUNyQyxpQkFBWSxHQUF1QixTQUFTLENBQUM7UUFFdEQsWUFBTyxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUNoQixRQUFRO1FBQ0osSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsUUFBUSxLQUFJLENBQUM7SUFDYixRQUFRLEtBQUksQ0FBQztJQUNiLGtCQUFrQixDQUFDLEtBQVk7UUFDM0IsTUFBTSxLQUFLLEdBQXVDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDL0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsS0FBSztRQUNsQiw2QkFBNkI7SUFDakMsQ0FBQzttR0FwQlEsZUFBZTttR0FBZixlQUFlOzt1RkFBZixlQUFlO2NBSjNCLFNBQVM7ZUFBQztnQkFDUCxRQUFRLEVBQUUsRUFBRTtnQkFDWixRQUFRLEVBQUUsU0FBUzthQUN0QjtzQ0FFYSxVQUFVO2tCQUFuQixNQUFNO1lBQ0UsSUFBSTtrQkFBWixLQUFLO1lBQ0csWUFBWTtrQkFBcEIsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJRGF0ZVRhZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9zZXJ2ZXJUYWdzJztcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGU6IGBgLFxuICAgIHNlbGVjdG9yOiAnYW55LXRhZycsXG59KVxuZXhwb3J0IGNsYXNzIEFueVRhZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQE91dHB1dCgpIGRhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJRGF0ZVRhZz4gPSBuZXcgRXZlbnRFbWl0dGVyPElEYXRlVGFnPigpO1xuICAgIEBJbnB1dCgpIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBkZWZhdWx0VmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcbiAgICBkYXRlT2JqID0geyBkYXRlOiB1bmRlZmluZWQgfTtcbiAgICBjb25zdHJ1Y3RvcigpIHt9XG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuaW5pdERhdGUoKTtcbiAgICAgICAgdGhpcy5pbml0TmFtZSgpO1xuICAgICAgICB0aGlzLmNob3NlblRhZ0hhbmRsZXIodGhpcy5kYXRlT2JqLmRhdGUpO1xuICAgIH1cbiAgICBpbml0RGF0ZSgpIHt9XG4gICAgaW5pdE5hbWUoKSB7fVxuICAgIGNoYW5nZUlucHV0SGFuZGxlcihldmVudDogRXZlbnQpIHtcbiAgICAgICAgY29uc3QgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQgPSA8SFRNTElucHV0RWxlbWVudD5ldmVudC50YXJnZXQ7XG4gICAgICAgIHRoaXMuY2hvc2VuVGFnSGFuZGxlcihpbnB1dC52YWx1ZSk7XG4gICAgfVxuICAgIGNob3NlblRhZ0hhbmRsZXIodmFsdWUpIHtcbiAgICAgICAgLy8gbmVlZCBpbXBsZW1lbnQgaW4gYWxsIHRhZ3NcbiAgICB9XG59XG4iXX0=