@porscheinformatik/clr-addons 18.2.5 → 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 (186) hide show
  1. package/abstract-form-component/abstract-form-component.d.ts +1 -1
  2. package/daterangepicker/directives/abstract-container.component.d.ts +1 -1
  3. package/fesm2022/clr-addons.mjs +889 -839
  4. package/fesm2022/clr-addons.mjs.map +1 -1
  5. package/multilingual/abstract-multilingual.d.ts +1 -1
  6. package/package.json +6 -8
  7. package/esm2022/abstract-form-component/abstract-form-component.mjs +0 -100
  8. package/esm2022/abstract-form-component/control-id.service.mjs +0 -31
  9. package/esm2022/abstract-form-component/form.module.mjs +0 -21
  10. package/esm2022/abstract-form-component/index.mjs +0 -3
  11. package/esm2022/abstract-form-component/label.mjs +0 -37
  12. package/esm2022/action-panel/action-panel-container-content.mjs +0 -22
  13. package/esm2022/action-panel/action-panel-container-footer.mjs +0 -22
  14. package/esm2022/action-panel/action-panel-container.mjs +0 -35
  15. package/esm2022/action-panel/action-panel.mjs +0 -80
  16. package/esm2022/action-panel/action-panel.module.mjs +0 -36
  17. package/esm2022/action-panel/index.mjs +0 -6
  18. package/esm2022/autocomplete-off/autocomplete-off.directive.mjs +0 -21
  19. package/esm2022/autocomplete-off/autocomplete-off.module.mjs +0 -21
  20. package/esm2022/autocomplete-off/index.mjs +0 -3
  21. package/esm2022/back-button/back-button.mjs +0 -27
  22. package/esm2022/back-button/back-button.module.mjs +0 -25
  23. package/esm2022/back-button/index.mjs +0 -8
  24. package/esm2022/brand-avatar/brand-avatar.mjs +0 -77
  25. package/esm2022/brand-avatar/brand-avatar.module.mjs +0 -24
  26. package/esm2022/brand-avatar/index.mjs +0 -8
  27. package/esm2022/breadcrumb/breadcrumb-model.interface.mjs +0 -7
  28. package/esm2022/breadcrumb/breadcrumb.mjs +0 -37
  29. package/esm2022/breadcrumb/breadcrumb.module.mjs +0 -27
  30. package/esm2022/breadcrumb/breadcrumb.service.mjs +0 -25
  31. package/esm2022/breadcrumb/index.mjs +0 -10
  32. package/esm2022/clr-addons.mjs +0 -5
  33. package/esm2022/clr-addons.module.mjs +0 -152
  34. package/esm2022/clr-control-warning/if-warning.directive.mjs +0 -73
  35. package/esm2022/clr-control-warning/if-warning.module.mjs +0 -20
  36. package/esm2022/clr-control-warning/index.mjs +0 -3
  37. package/esm2022/collapse-expand-section/collapse-expand-section.mjs +0 -88
  38. package/esm2022/collapse-expand-section/collapse-expand-section.module.mjs +0 -25
  39. package/esm2022/collapse-expand-section/index.mjs +0 -8
  40. package/esm2022/content-panel/content-panel-container-content.mjs +0 -22
  41. package/esm2022/content-panel/content-panel-container-footer.mjs +0 -22
  42. package/esm2022/content-panel/content-panel-container.mjs +0 -35
  43. package/esm2022/content-panel/content-panel.mjs +0 -81
  44. package/esm2022/content-panel/content-panel.module.mjs +0 -36
  45. package/esm2022/content-panel/index.mjs +0 -11
  46. package/esm2022/data-list-validator/data-list-predefined-validator.directive.mjs +0 -33
  47. package/esm2022/data-list-validator/data-list-validator.module.mjs +0 -21
  48. package/esm2022/data-list-validator/data-list.validator.mjs +0 -35
  49. package/esm2022/data-list-validator/index.mjs +0 -9
  50. package/esm2022/datagrid/datagrid-state-persistence/column-hidden-state-persistence.directive.mjs +0 -80
  51. package/esm2022/datagrid/datagrid-state-persistence/datagrid-field.directive.mjs +0 -20
  52. package/esm2022/datagrid/datagrid-state-persistence/datagrid-state-persistence-model.interface.mjs +0 -2
  53. package/esm2022/datagrid/datagrid-state-persistence/datagrid-state-persistence.module.mjs +0 -18
  54. package/esm2022/datagrid/datagrid-state-persistence/index.mjs +0 -7
  55. package/esm2022/datagrid/datagrid-state-persistence/state-persistence-key.directive.mjs +0 -308
  56. package/esm2022/datagrid/datagrid-state-persistence/state-persistence-options.interface.mjs +0 -2
  57. package/esm2022/datagrid/date-filter/date-filter.component.mjs +0 -210
  58. package/esm2022/datagrid/date-filter/date-filter.module.mjs +0 -22
  59. package/esm2022/datagrid/date-filter/index.mjs +0 -3
  60. package/esm2022/datagrid/date-filter/nested-property.mjs +0 -37
  61. package/esm2022/datagrid/enum-filter/enum-filter.component.mjs +0 -148
  62. package/esm2022/datagrid/enum-filter/enum-filter.module.mjs +0 -20
  63. package/esm2022/datagrid/enum-filter/index.mjs +0 -3
  64. package/esm2022/datagrid/index.mjs +0 -4
  65. package/esm2022/date-time-container/date-time-container.mjs +0 -53
  66. package/esm2022/date-time-container/date-time-module.mjs +0 -26
  67. package/esm2022/date-time-container/index.mjs +0 -9
  68. package/esm2022/date-time-container/time-input.mjs +0 -21
  69. package/esm2022/daterangepicker/daterange.constants.mjs +0 -27
  70. package/esm2022/daterangepicker/daterangepicker.module.mjs +0 -60
  71. package/esm2022/daterangepicker/directives/abstract-container.component.mjs +0 -104
  72. package/esm2022/daterangepicker/directives/datepicker/datepicker.component.mjs +0 -100
  73. package/esm2022/daterangepicker/directives/daterangepicker/daterangepicker.directive.mjs +0 -329
  74. package/esm2022/daterangepicker/directives/daterangepicker-container/daterangepicker-container.component.mjs +0 -321
  75. package/esm2022/daterangepicker/directives/if-daterange-error.directive.mjs +0 -94
  76. package/esm2022/daterangepicker/directives/timepicker/timepicker.component.mjs +0 -54
  77. package/esm2022/daterangepicker/index.mjs +0 -17
  78. package/esm2022/daterangepicker/interfaces/daterange-preset.interface.mjs +0 -2
  79. package/esm2022/daterangepicker/interfaces/daterange.interface.mjs +0 -2
  80. package/esm2022/daterangepicker/interfaces/timerange-preset.interface.mjs +0 -2
  81. package/esm2022/daterangepicker/interfaces/timerange.interface.mjs +0 -2
  82. package/esm2022/daterangepicker/models/day.model.mjs +0 -99
  83. package/esm2022/daterangepicker/models/popover-positions.model.mjs +0 -66
  84. package/esm2022/daterangepicker/models/time.model.mjs +0 -82
  85. package/esm2022/daterangepicker/providers/daterange-control-state.service.mjs +0 -62
  86. package/esm2022/daterangepicker/providers/daterange-parsing.service.mjs +0 -226
  87. package/esm2022/daterangepicker/providers/daterange.service.mjs +0 -66
  88. package/esm2022/daterangepicker/providers/opened-datepickers-tracker.service.mjs +0 -36
  89. package/esm2022/daterangepicker/validators/daterange-max.validator.mjs +0 -85
  90. package/esm2022/daterangepicker/validators/daterange-min.validator.mjs +0 -85
  91. package/esm2022/daterangepicker/validators/daterange-order.validator.mjs +0 -82
  92. package/esm2022/daterangepicker/validators/daterange-required.validator.mjs +0 -71
  93. package/esm2022/dot-pager/dot-pager.mjs +0 -58
  94. package/esm2022/dot-pager/dot-pager.module.mjs +0 -25
  95. package/esm2022/dot-pager/index.mjs +0 -8
  96. package/esm2022/dropdown/clr-dropdown-overflow.directive.mjs +0 -117
  97. package/esm2022/dropdown/clr-dropdown-overflow.module.mjs +0 -21
  98. package/esm2022/dropdown/index.mjs +0 -8
  99. package/esm2022/flow-bar/flow-bar.mjs +0 -163
  100. package/esm2022/flow-bar/flow-bar.module.mjs +0 -26
  101. package/esm2022/flow-bar/index.mjs +0 -8
  102. package/esm2022/generic-quick-list/generic-quick-list.mjs +0 -98
  103. package/esm2022/generic-quick-list/generic-quick-list.module.mjs +0 -24
  104. package/esm2022/generic-quick-list/index.mjs +0 -8
  105. package/esm2022/history/history-model.interface.mjs +0 -8
  106. package/esm2022/history/history-pinned.mjs +0 -60
  107. package/esm2022/history/history.mjs +0 -91
  108. package/esm2022/history/history.module.mjs +0 -27
  109. package/esm2022/history/history.provider.mjs +0 -8
  110. package/esm2022/history/history.service.mjs +0 -236
  111. package/esm2022/history/index.mjs +0 -12
  112. package/esm2022/icons/index.mjs +0 -8
  113. package/esm2022/icons/shapes.mjs +0 -5453
  114. package/esm2022/icons/svg-tag-generator.mjs +0 -39
  115. package/esm2022/index.mjs +0 -41
  116. package/esm2022/letter-avatar/index.mjs +0 -8
  117. package/esm2022/letter-avatar/letter-avatar.mjs +0 -52
  118. package/esm2022/letter-avatar/letter-avatar.module.mjs +0 -24
  119. package/esm2022/location-bar/index.mjs +0 -6
  120. package/esm2022/location-bar/location-bar-node/location-bar-node.component.mjs +0 -150
  121. package/esm2022/location-bar/location-bar-search/location-bar-search.component.mjs +0 -74
  122. package/esm2022/location-bar/location-bar.component.mjs +0 -64
  123. package/esm2022/location-bar/location-bar.model.mjs +0 -63
  124. package/esm2022/location-bar/location-bar.module.mjs +0 -55
  125. package/esm2022/location-bar/location-bar.provider.mjs +0 -18
  126. package/esm2022/location-bar/location-bar.search.model.mjs +0 -2
  127. package/esm2022/main-nav-group/index.mjs +0 -9
  128. package/esm2022/main-nav-group/main-nav-group-item.mjs +0 -27
  129. package/esm2022/main-nav-group/main-nav-group.mjs +0 -154
  130. package/esm2022/main-nav-group/main-nav-group.module.mjs +0 -26
  131. package/esm2022/multilingual/abstract-multilingual.mjs +0 -133
  132. package/esm2022/multilingual/index.mjs +0 -11
  133. package/esm2022/multilingual/multilingual-input/multilingual-input.mjs +0 -42
  134. package/esm2022/multilingual/multilingual-selector.mjs +0 -84
  135. package/esm2022/multilingual/multilingual-textarea/multilingual-textarea.mjs +0 -44
  136. package/esm2022/multilingual/multilingual-validators.mjs +0 -104
  137. package/esm2022/multilingual/multilingual.module.mjs +0 -49
  138. package/esm2022/notification/index.mjs +0 -10
  139. package/esm2022/notification/notification-ref.mjs +0 -61
  140. package/esm2022/notification/notification.mjs +0 -134
  141. package/esm2022/notification/notification.module.mjs +0 -24
  142. package/esm2022/notification/notification.service.mjs +0 -92
  143. package/esm2022/notification/scheduler-utils.mjs +0 -52
  144. package/esm2022/numericfield/index.mjs +0 -9
  145. package/esm2022/numericfield/numeric-field-validators.mjs +0 -140
  146. package/esm2022/numericfield/numeric-field.mjs +0 -280
  147. package/esm2022/numericfield/numeric-field.module.mjs +0 -26
  148. package/esm2022/paged-search-result-list/index.mjs +0 -8
  149. package/esm2022/paged-search-result-list/paged-search-result-list.mjs +0 -67
  150. package/esm2022/paged-search-result-list/paged-search-result-list.module.mjs +0 -26
  151. package/esm2022/pager/index.mjs +0 -8
  152. package/esm2022/pager/pager.mjs +0 -137
  153. package/esm2022/pager/pager.module.mjs +0 -25
  154. package/esm2022/progress-spinner/index.mjs +0 -8
  155. package/esm2022/progress-spinner/progress-spinner.mjs +0 -78
  156. package/esm2022/progress-spinner/progress-spinner.module.mjs +0 -23
  157. package/esm2022/quick-list/add-option.mjs +0 -78
  158. package/esm2022/quick-list/add-option.service.mjs +0 -7
  159. package/esm2022/quick-list/index.mjs +0 -9
  160. package/esm2022/quick-list/quick-list.mjs +0 -128
  161. package/esm2022/quick-list/quick-list.module.mjs +0 -26
  162. package/esm2022/readonly/index.mjs +0 -8
  163. package/esm2022/readonly/readonly.directive.mjs +0 -149
  164. package/esm2022/readonly/readonly.module.mjs +0 -16
  165. package/esm2022/searchfield/index.mjs +0 -8
  166. package/esm2022/searchfield/search-field.mjs +0 -104
  167. package/esm2022/searchfield/search-field.module.mjs +0 -25
  168. package/esm2022/treetable/index.mjs +0 -14
  169. package/esm2022/treetable/renderer/cell-renderer.mjs +0 -28
  170. package/esm2022/treetable/renderer/header-renderer.mjs +0 -41
  171. package/esm2022/treetable/renderer/index.mjs +0 -5
  172. package/esm2022/treetable/renderer/main-renderer.mjs +0 -103
  173. package/esm2022/treetable/renderer/row-renderer.mjs +0 -20
  174. package/esm2022/treetable/treetable-action-overflow.mjs +0 -94
  175. package/esm2022/treetable/treetable-cell.mjs +0 -23
  176. package/esm2022/treetable/treetable-column.mjs +0 -23
  177. package/esm2022/treetable/treetable-placeholder.mjs +0 -30
  178. package/esm2022/treetable/treetable-row.mjs +0 -100
  179. package/esm2022/treetable/treetable.mjs +0 -79
  180. package/esm2022/treetable/treetable.module.mjs +0 -63
  181. package/esm2022/util/escape.util.mjs +0 -20
  182. package/esm2022/util/index.mjs +0 -8
  183. package/esm2022/util/numeric.format.util.mjs +0 -99
  184. package/esm2022/view-edit-section/index.mjs +0 -8
  185. package/esm2022/view-edit-section/view-edit-section.mjs +0 -154
  186. package/esm2022/view-edit-section/view-edit-section.module.mjs +0 -25
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXJhbmdlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGVyYW5nZXBpY2tlci9pbnRlcmZhY2VzL3RpbWVyYW5nZS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE51bGxhYmxlVGltZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3RpbWUubW9kZWwnO1xuaW1wb3J0IHsgRGF0ZXJhbmdlIH0gZnJvbSAnLi9kYXRlcmFuZ2UuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBUaW1lcmFuZ2UgaW50ZXJmYWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVyYW5nZSBleHRlbmRzIERhdGVyYW5nZSB7XG4gIGZyb21UaW1lOiBOdWxsYWJsZVRpbWVNb2RlbDtcbiAgdG9UaW1lOiBOdWxsYWJsZVRpbWVNb2RlbDtcbn1cblxuLyoqXG4gKiBUaW1lcmFuZ2UuXG4gKi9cbmV4cG9ydCB0eXBlIE51bGxhYmxlVGltZXJhbmdlID0gVGltZXJhbmdlIHwgdW5kZWZpbmVkIHwgbnVsbDtcbiJdfQ==
@@ -1,99 +0,0 @@
1
- /**
2
- * Day model.
3
- * Takes care of keeping records of full days, without the times & timezone issues.
4
- */
5
- export class DayModel {
6
- constructor(...args) {
7
- if (args[0] instanceof Date) {
8
- const date = args[0];
9
- this.year = date.getFullYear();
10
- this.month = date.getMonth();
11
- this.date = date.getDate();
12
- }
13
- else if (typeof args[0] === 'string') {
14
- const [year, month, day] = args[0].split('-').map(n => parseInt(n, 10));
15
- this.year = year;
16
- this.month = month - 1;
17
- this.date = day;
18
- }
19
- else {
20
- this.year = args[0];
21
- this.month = args[1];
22
- this.date = args[2];
23
- }
24
- }
25
- /**
26
- * Checks if the passed value is equal to current day model.
27
- * @param value - Day model.
28
- * @returns Wether value is equal to current day model.
29
- */
30
- isEqual(value) {
31
- if (value) {
32
- return this.year === value.year && this.month === value.month && this.date === value.date;
33
- }
34
- return false;
35
- }
36
- /**
37
- * Increment day model with date value.
38
- * @param value - Incremental date value.
39
- * @returns Updated day model with incremented date value.
40
- */
41
- incrementBy(value) {
42
- // Creating new Javascript Date object to increment because
43
- // it will automatically take care of switching to next or previous
44
- // months & years without we having to worry about it.
45
- const date = new Date(this.year, this.month, this.date + value);
46
- this.year = date.getFullYear();
47
- this.month = date.getMonth();
48
- this.date = date.getDate();
49
- return this;
50
- }
51
- /**
52
- * Checks if current day model is after value.
53
- * @param value - Day model.
54
- * @returns Wether current day model is after value.
55
- */
56
- isAfter(value) {
57
- return this.toDate() > value.toDate();
58
- }
59
- /**
60
- * Checks if current day model is before value.
61
- * @param value - Day model.
62
- * @returns Wether current day model is before value.
63
- */
64
- isBefore(value) {
65
- return this.toDate() < value.toDate();
66
- }
67
- /**
68
- * Clones the current day model.
69
- * @returns Cloned day model.
70
- */
71
- clone() {
72
- return new DayModel(this.year, this.month, this.date);
73
- }
74
- /**
75
- * Convert to Javascript Date object.
76
- * @returns Javascript Date object.
77
- */
78
- toDate() {
79
- return new Date(this.year, this.month, this.date);
80
- }
81
- /**
82
- * To HTML5 date spec string.
83
- * See https://clarity.design/documentation/datepicker
84
- * @returns Date as HTML5 spec string.
85
- */
86
- toHTML5SpecDateString() {
87
- // The clarity date picker uses the format 'YYYY-MM-DD'.
88
- return `${this.year}-${this.pad(this.month + 1)}-${this.pad(this.date)}`;
89
- }
90
- /**
91
- * String padding with zeros.
92
- * @param num - Number to pad.
93
- * @returns Padded string.
94
- */
95
- pad(num) {
96
- return num < 10 ? `0${num}` : `${num}`;
97
- }
98
- }
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvZGF0ZXJhbmdlcGlja2VyL21vZGVscy9kYXkubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUEyQm5CLFlBQW1CLEdBQUcsSUFBbUM7UUFDdkQsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLEdBQVMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzdCLENBQUM7YUFBTSxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNsQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBVyxDQUFDO1lBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBVyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE9BQU8sQ0FBQyxLQUFlO1FBQzVCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQzVGLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksV0FBVyxDQUFDLEtBQWE7UUFDOUIsMkRBQTJEO1FBQzNELG1FQUFtRTtRQUNuRSxzREFBc0Q7UUFDdEQsTUFBTSxJQUFJLEdBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE9BQU8sQ0FBQyxLQUFlO1FBQzVCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFFBQVEsQ0FBQyxLQUFlO1FBQzdCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSztRQUNWLE9BQU8sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTTtRQUNYLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLHFCQUFxQjtRQUMxQix3REFBd0Q7UUFDeEQsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDM0UsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxHQUFHLENBQUMsR0FBVztRQUNyQixPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDekMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEYXkgbW9kZWwuXG4gKiBUYWtlcyBjYXJlIG9mIGtlZXBpbmcgcmVjb3JkcyBvZiBmdWxsIGRheXMsIHdpdGhvdXQgdGhlIHRpbWVzICYgdGltZXpvbmUgaXNzdWVzLlxuICovXG5leHBvcnQgY2xhc3MgRGF5TW9kZWwge1xuICAvKiogWWVhci4gKi9cbiAgcHJpdmF0ZSB5ZWFyITogbnVtYmVyO1xuXG4gIC8qKiBNb250aCwgemVyby1pbmRleGVkLiAqL1xuICBwcml2YXRlIG1vbnRoITogbnVtYmVyO1xuXG4gIC8qKiBEYXRlIG9mIHRoZSBtb250aC4gKi9cbiAgcHJpdmF0ZSBkYXRlITogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGRheSBtb2RlbC5cbiAgICogQHBhcmFtIHllYXIgLSBUaGUgZnVsbCB5ZWFyLlxuICAgKiBAcGFyYW0gbW9udGggLSBUaGUgbW9udGggYXMgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAxMSAoSmFudWFyeSB0byBEZWNlbWJlcikuXG4gICAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgYXMgYSBudW1iZXIgYmV0d2VlbiAxIGFuZCAzMS5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcih5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRhdGU6IG51bWJlcik7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGRheSBtb2RlbC5cbiAgICogQHBhcmFtIGRhdGUgLSBKYXZhc2NyaXB0IERhdGUgb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGRhdGU6IERhdGUpO1xuICAvKipcbiAgICogQ3JlYXRlcyBhbiBkYXkgbW9kZWwuXG4gICAqIEBwYXJhbSBkYXRlIC0gRGF0ZSBzdHJpbmcgaW4gYHl5eXktbW0tZGRgIGZvcm1hdC5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihkYXRlOiBzdHJpbmcpO1xuICBwdWJsaWMgY29uc3RydWN0b3IoLi4uYXJnczogQXJyYXk8bnVtYmVyIHwgRGF0ZSB8IHN0cmluZz4pIHtcbiAgICBpZiAoYXJnc1swXSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGNvbnN0IGRhdGU6IERhdGUgPSBhcmdzWzBdO1xuICAgICAgdGhpcy55ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgdGhpcy5tb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgICAgIHRoaXMuZGF0ZSA9IGRhdGUuZ2V0RGF0ZSgpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGFyZ3NbMF0gPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBbeWVhciwgbW9udGgsIGRheV0gPSBhcmdzWzBdLnNwbGl0KCctJykubWFwKG4gPT4gcGFyc2VJbnQobiwgMTApKTtcbiAgICAgIHRoaXMueWVhciA9IHllYXI7XG4gICAgICB0aGlzLm1vbnRoID0gbW9udGggLSAxO1xuICAgICAgdGhpcy5kYXRlID0gZGF5O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnllYXIgPSBhcmdzWzBdO1xuICAgICAgdGhpcy5tb250aCA9IGFyZ3NbMV0gYXMgbnVtYmVyO1xuICAgICAgdGhpcy5kYXRlID0gYXJnc1syXSBhcyBudW1iZXI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgcGFzc2VkIHZhbHVlIGlzIGVxdWFsIHRvIGN1cnJlbnQgZGF5IG1vZGVsLlxuICAgKiBAcGFyYW0gdmFsdWUgLSBEYXkgbW9kZWwuXG4gICAqIEByZXR1cm5zIFdldGhlciB2YWx1ZSBpcyBlcXVhbCB0byBjdXJyZW50IGRheSBtb2RlbC5cbiAgICovXG4gIHB1YmxpYyBpc0VxdWFsKHZhbHVlOiBEYXlNb2RlbCk6IGJvb2xlYW4ge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMueWVhciA9PT0gdmFsdWUueWVhciAmJiB0aGlzLm1vbnRoID09PSB2YWx1ZS5tb250aCAmJiB0aGlzLmRhdGUgPT09IHZhbHVlLmRhdGU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmNyZW1lbnQgZGF5IG1vZGVsIHdpdGggZGF0ZSB2YWx1ZS5cbiAgICogQHBhcmFtIHZhbHVlIC0gSW5jcmVtZW50YWwgZGF0ZSB2YWx1ZS5cbiAgICogQHJldHVybnMgVXBkYXRlZCBkYXkgbW9kZWwgd2l0aCBpbmNyZW1lbnRlZCBkYXRlIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIGluY3JlbWVudEJ5KHZhbHVlOiBudW1iZXIpOiBEYXlNb2RlbCB7XG4gICAgLy8gQ3JlYXRpbmcgbmV3IEphdmFzY3JpcHQgRGF0ZSBvYmplY3QgdG8gaW5jcmVtZW50IGJlY2F1c2VcbiAgICAvLyBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgdGFrZSBjYXJlIG9mIHN3aXRjaGluZyB0byBuZXh0IG9yIHByZXZpb3VzXG4gICAgLy8gbW9udGhzICYgeWVhcnMgd2l0aG91dCB3ZSBoYXZpbmcgdG8gd29ycnkgYWJvdXQgaXQuXG4gICAgY29uc3QgZGF0ZTogRGF0ZSA9IG5ldyBEYXRlKHRoaXMueWVhciwgdGhpcy5tb250aCwgdGhpcy5kYXRlICsgdmFsdWUpO1xuICAgIHRoaXMueWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICB0aGlzLm1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xuICAgIHRoaXMuZGF0ZSA9IGRhdGUuZ2V0RGF0ZSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBjdXJyZW50IGRheSBtb2RlbCBpcyBhZnRlciB2YWx1ZS5cbiAgICogQHBhcmFtIHZhbHVlIC0gRGF5IG1vZGVsLlxuICAgKiBAcmV0dXJucyBXZXRoZXIgY3VycmVudCBkYXkgbW9kZWwgaXMgYWZ0ZXIgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgaXNBZnRlcih2YWx1ZTogRGF5TW9kZWwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50b0RhdGUoKSA+IHZhbHVlLnRvRGF0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBjdXJyZW50IGRheSBtb2RlbCBpcyBiZWZvcmUgdmFsdWUuXG4gICAqIEBwYXJhbSB2YWx1ZSAtIERheSBtb2RlbC5cbiAgICogQHJldHVybnMgV2V0aGVyIGN1cnJlbnQgZGF5IG1vZGVsIGlzIGJlZm9yZSB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBpc0JlZm9yZSh2YWx1ZTogRGF5TW9kZWwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50b0RhdGUoKSA8IHZhbHVlLnRvRGF0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb25lcyB0aGUgY3VycmVudCBkYXkgbW9kZWwuXG4gICAqIEByZXR1cm5zIENsb25lZCBkYXkgbW9kZWwuXG4gICAqL1xuICBwdWJsaWMgY2xvbmUoKTogRGF5TW9kZWwge1xuICAgIHJldHVybiBuZXcgRGF5TW9kZWwodGhpcy55ZWFyLCB0aGlzLm1vbnRoLCB0aGlzLmRhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdG8gSmF2YXNjcmlwdCBEYXRlIG9iamVjdC5cbiAgICogQHJldHVybnMgSmF2YXNjcmlwdCBEYXRlIG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyB0b0RhdGUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMueWVhciwgdGhpcy5tb250aCwgdGhpcy5kYXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUbyBIVE1MNSBkYXRlIHNwZWMgc3RyaW5nLlxuICAgKiBTZWUgaHR0cHM6Ly9jbGFyaXR5LmRlc2lnbi9kb2N1bWVudGF0aW9uL2RhdGVwaWNrZXJcbiAgICogQHJldHVybnMgRGF0ZSBhcyBIVE1MNSBzcGVjIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyB0b0hUTUw1U3BlY0RhdGVTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAvLyBUaGUgY2xhcml0eSBkYXRlIHBpY2tlciB1c2VzIHRoZSBmb3JtYXQgJ1lZWVktTU0tREQnLlxuICAgIHJldHVybiBgJHt0aGlzLnllYXJ9LSR7dGhpcy5wYWQodGhpcy5tb250aCArIDEpfS0ke3RoaXMucGFkKHRoaXMuZGF0ZSl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdHJpbmcgcGFkZGluZyB3aXRoIHplcm9zLlxuICAgKiBAcGFyYW0gbnVtIC0gTnVtYmVyIHRvIHBhZC5cbiAgICogQHJldHVybnMgUGFkZGVkIHN0cmluZy5cbiAgICovXG4gIHByaXZhdGUgcGFkKG51bTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbnVtIDwgMTAgPyBgMCR7bnVtfWAgOiBgJHtudW19YDtcbiAgfVxufVxuXG4vKipcbiAqIERheSBtb2RlbC5cbiAqIFRha2VzIGNhcmUgb2Yga2VlcGluZyByZWNvcmRzIG9mIGZ1bGwgZGF5cywgd2l0aG91dCB0aGUgdGltZXMgJiB0aW1lem9uZSBpc3N1ZXMuXG4gKi9cbmV4cG9ydCB0eXBlIE51bGxhYmxlRGF5TW9kZWwgPSBEYXlNb2RlbCB8IHVuZGVmaW5lZCB8IG51bGw7XG4iXX0=
@@ -1,66 +0,0 @@
1
- import { ClrAlignment, ClrAxis, ClrSide } from '@clr/angular';
2
- /**
3
- * Popover positions.
4
- * https://github.com/vmware-clarity/ng-clarity/blob/f1a668086bf88bcf5ef1cd36b0d150e45e88def7/projects/angular/src/utils/popover/enums/positions.enum.ts
5
- */
6
- export class PopoverPositions {
7
- static { this.options = [
8
- 'bottom-left',
9
- 'bottom-right',
10
- 'left-bottom',
11
- 'left-top',
12
- 'right-bottom',
13
- 'right-top',
14
- 'top-left',
15
- 'top-right',
16
- ]; }
17
- static { this['bottom-left'] = {
18
- axis: ClrAxis.VERTICAL,
19
- side: ClrSide.AFTER,
20
- anchor: ClrAlignment.START,
21
- content: ClrAlignment.START,
22
- }; }
23
- static { this['bottom-right'] = {
24
- axis: ClrAxis.VERTICAL,
25
- side: ClrSide.AFTER,
26
- anchor: ClrAlignment.END,
27
- content: ClrAlignment.END,
28
- }; }
29
- static { this['left-bottom'] = {
30
- axis: ClrAxis.HORIZONTAL,
31
- side: ClrSide.BEFORE,
32
- anchor: ClrAlignment.START,
33
- content: ClrAlignment.START,
34
- }; }
35
- static { this['left-top'] = {
36
- axis: ClrAxis.HORIZONTAL,
37
- side: ClrSide.BEFORE,
38
- anchor: ClrAlignment.CENTER,
39
- content: ClrAlignment.END,
40
- }; }
41
- static { this['right-bottom'] = {
42
- axis: ClrAxis.HORIZONTAL,
43
- side: ClrSide.AFTER,
44
- anchor: ClrAlignment.START,
45
- content: ClrAlignment.START,
46
- }; }
47
- static { this['right-top'] = {
48
- axis: ClrAxis.HORIZONTAL,
49
- side: ClrSide.AFTER,
50
- anchor: ClrAlignment.CENTER,
51
- content: ClrAlignment.END,
52
- }; }
53
- static { this['top-left'] = {
54
- axis: ClrAxis.VERTICAL,
55
- side: ClrSide.BEFORE,
56
- anchor: ClrAlignment.START,
57
- content: ClrAlignment.START,
58
- }; }
59
- static { this['top-right'] = {
60
- axis: ClrAxis.VERTICAL,
61
- side: ClrSide.BEFORE,
62
- anchor: ClrAlignment.END,
63
- content: ClrAlignment.END,
64
- }; }
65
- }
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1wb3NpdGlvbnMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2xyLWFkZG9ucy9kYXRlcmFuZ2VwaWNrZXIvbW9kZWxzL3BvcG92ZXItcG9zaXRpb25zLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFzQixPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFbEY7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjthQUNiLFlBQU8sR0FBRztRQUN0QixhQUFhO1FBQ2IsY0FBYztRQUNkLGFBQWE7UUFDYixVQUFVO1FBQ1YsY0FBYztRQUNkLFdBQVc7UUFDWCxVQUFVO1FBQ1YsV0FBVztLQUNaLENBQUM7YUFFWSxtQkFBYSxHQUF1QjtRQUNoRCxJQUFJLEVBQUUsT0FBTyxDQUFDLFFBQVE7UUFDdEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLO1FBQ25CLE1BQU0sRUFBRSxZQUFZLENBQUMsS0FBSztRQUMxQixPQUFPLEVBQUUsWUFBWSxDQUFDLEtBQUs7S0FDNUIsQ0FBQzthQUVZLG9CQUFjLEdBQXVCO1FBQ2pELElBQUksRUFBRSxPQUFPLENBQUMsUUFBUTtRQUN0QixJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUs7UUFDbkIsTUFBTSxFQUFFLFlBQVksQ0FBQyxHQUFHO1FBQ3hCLE9BQU8sRUFBRSxZQUFZLENBQUMsR0FBRztLQUMxQixDQUFDO2FBRVksbUJBQWEsR0FBdUI7UUFDaEQsSUFBSSxFQUFFLE9BQU8sQ0FBQyxVQUFVO1FBQ3hCLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTTtRQUNwQixNQUFNLEVBQUUsWUFBWSxDQUFDLEtBQUs7UUFDMUIsT0FBTyxFQUFFLFlBQVksQ0FBQyxLQUFLO0tBQzVCLENBQUM7YUFFWSxnQkFBVSxHQUF1QjtRQUM3QyxJQUFJLEVBQUUsT0FBTyxDQUFDLFVBQVU7UUFDeEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1FBQ3BCLE1BQU0sRUFBRSxZQUFZLENBQUMsTUFBTTtRQUMzQixPQUFPLEVBQUUsWUFBWSxDQUFDLEdBQUc7S0FDMUIsQ0FBQzthQUVZLG9CQUFjLEdBQXVCO1FBQ2pELElBQUksRUFBRSxPQUFPLENBQUMsVUFBVTtRQUN4QixJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUs7UUFDbkIsTUFBTSxFQUFFLFlBQVksQ0FBQyxLQUFLO1FBQzFCLE9BQU8sRUFBRSxZQUFZLENBQUMsS0FBSztLQUM1QixDQUFDO2FBRVksaUJBQVcsR0FBdUI7UUFDOUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxVQUFVO1FBQ3hCLElBQUksRUFBRSxPQUFPLENBQUMsS0FBSztRQUNuQixNQUFNLEVBQUUsWUFBWSxDQUFDLE1BQU07UUFDM0IsT0FBTyxFQUFFLFlBQVksQ0FBQyxHQUFHO0tBQzFCLENBQUM7YUFFWSxnQkFBVSxHQUF1QjtRQUM3QyxJQUFJLEVBQUUsT0FBTyxDQUFDLFFBQVE7UUFDdEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1FBQ3BCLE1BQU0sRUFBRSxZQUFZLENBQUMsS0FBSztRQUMxQixPQUFPLEVBQUUsWUFBWSxDQUFDLEtBQUs7S0FDNUIsQ0FBQzthQUVZLGlCQUFXLEdBQXVCO1FBQzlDLElBQUksRUFBRSxPQUFPLENBQUMsUUFBUTtRQUN0QixJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU07UUFDcEIsTUFBTSxFQUFFLFlBQVksQ0FBQyxHQUFHO1FBQ3hCLE9BQU8sRUFBRSxZQUFZLENBQUMsR0FBRztLQUMxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2xyQWxpZ25tZW50LCBDbHJBeGlzLCBDbHJQb3BvdmVyUG9zaXRpb24sIENsclNpZGUgfSBmcm9tICdAY2xyL2FuZ3VsYXInO1xuXG4vKipcbiAqIFBvcG92ZXIgcG9zaXRpb25zLlxuICogaHR0cHM6Ly9naXRodWIuY29tL3Ztd2FyZS1jbGFyaXR5L25nLWNsYXJpdHkvYmxvYi9mMWE2NjgwODZiZjg4YmNmNWVmMWNkMzZiMGQxNTBlNDVlODhkZWY3L3Byb2plY3RzL2FuZ3VsYXIvc3JjL3V0aWxzL3BvcG92ZXIvZW51bXMvcG9zaXRpb25zLmVudW0udHNcbiAqL1xuZXhwb3J0IGNsYXNzIFBvcG92ZXJQb3NpdGlvbnMge1xuICBwdWJsaWMgc3RhdGljIG9wdGlvbnMgPSBbXG4gICAgJ2JvdHRvbS1sZWZ0JyxcbiAgICAnYm90dG9tLXJpZ2h0JyxcbiAgICAnbGVmdC1ib3R0b20nLFxuICAgICdsZWZ0LXRvcCcsXG4gICAgJ3JpZ2h0LWJvdHRvbScsXG4gICAgJ3JpZ2h0LXRvcCcsXG4gICAgJ3RvcC1sZWZ0JyxcbiAgICAndG9wLXJpZ2h0JyxcbiAgXTtcblxuICBwdWJsaWMgc3RhdGljICdib3R0b20tbGVmdCc6IENsclBvcG92ZXJQb3NpdGlvbiA9IHtcbiAgICBheGlzOiBDbHJBeGlzLlZFUlRJQ0FMLFxuICAgIHNpZGU6IENsclNpZGUuQUZURVIsXG4gICAgYW5jaG9yOiBDbHJBbGlnbm1lbnQuU1RBUlQsXG4gICAgY29udGVudDogQ2xyQWxpZ25tZW50LlNUQVJULFxuICB9O1xuXG4gIHB1YmxpYyBzdGF0aWMgJ2JvdHRvbS1yaWdodCc6IENsclBvcG92ZXJQb3NpdGlvbiA9IHtcbiAgICBheGlzOiBDbHJBeGlzLlZFUlRJQ0FMLFxuICAgIHNpZGU6IENsclNpZGUuQUZURVIsXG4gICAgYW5jaG9yOiBDbHJBbGlnbm1lbnQuRU5ELFxuICAgIGNvbnRlbnQ6IENsckFsaWdubWVudC5FTkQsXG4gIH07XG5cbiAgcHVibGljIHN0YXRpYyAnbGVmdC1ib3R0b20nOiBDbHJQb3BvdmVyUG9zaXRpb24gPSB7XG4gICAgYXhpczogQ2xyQXhpcy5IT1JJWk9OVEFMLFxuICAgIHNpZGU6IENsclNpZGUuQkVGT1JFLFxuICAgIGFuY2hvcjogQ2xyQWxpZ25tZW50LlNUQVJULFxuICAgIGNvbnRlbnQ6IENsckFsaWdubWVudC5TVEFSVCxcbiAgfTtcblxuICBwdWJsaWMgc3RhdGljICdsZWZ0LXRvcCc6IENsclBvcG92ZXJQb3NpdGlvbiA9IHtcbiAgICBheGlzOiBDbHJBeGlzLkhPUklaT05UQUwsXG4gICAgc2lkZTogQ2xyU2lkZS5CRUZPUkUsXG4gICAgYW5jaG9yOiBDbHJBbGlnbm1lbnQuQ0VOVEVSLFxuICAgIGNvbnRlbnQ6IENsckFsaWdubWVudC5FTkQsXG4gIH07XG5cbiAgcHVibGljIHN0YXRpYyAncmlnaHQtYm90dG9tJzogQ2xyUG9wb3ZlclBvc2l0aW9uID0ge1xuICAgIGF4aXM6IENsckF4aXMuSE9SSVpPTlRBTCxcbiAgICBzaWRlOiBDbHJTaWRlLkFGVEVSLFxuICAgIGFuY2hvcjogQ2xyQWxpZ25tZW50LlNUQVJULFxuICAgIGNvbnRlbnQ6IENsckFsaWdubWVudC5TVEFSVCxcbiAgfTtcblxuICBwdWJsaWMgc3RhdGljICdyaWdodC10b3AnOiBDbHJQb3BvdmVyUG9zaXRpb24gPSB7XG4gICAgYXhpczogQ2xyQXhpcy5IT1JJWk9OVEFMLFxuICAgIHNpZGU6IENsclNpZGUuQUZURVIsXG4gICAgYW5jaG9yOiBDbHJBbGlnbm1lbnQuQ0VOVEVSLFxuICAgIGNvbnRlbnQ6IENsckFsaWdubWVudC5FTkQsXG4gIH07XG5cbiAgcHVibGljIHN0YXRpYyAndG9wLWxlZnQnOiBDbHJQb3BvdmVyUG9zaXRpb24gPSB7XG4gICAgYXhpczogQ2xyQXhpcy5WRVJUSUNBTCxcbiAgICBzaWRlOiBDbHJTaWRlLkJFRk9SRSxcbiAgICBhbmNob3I6IENsckFsaWdubWVudC5TVEFSVCxcbiAgICBjb250ZW50OiBDbHJBbGlnbm1lbnQuU1RBUlQsXG4gIH07XG5cbiAgcHVibGljIHN0YXRpYyAndG9wLXJpZ2h0JzogQ2xyUG9wb3ZlclBvc2l0aW9uID0ge1xuICAgIGF4aXM6IENsckF4aXMuVkVSVElDQUwsXG4gICAgc2lkZTogQ2xyU2lkZS5CRUZPUkUsXG4gICAgYW5jaG9yOiBDbHJBbGlnbm1lbnQuRU5ELFxuICAgIGNvbnRlbnQ6IENsckFsaWdubWVudC5FTkQsXG4gIH07XG59XG5cbi8qKlxuICogUG9wb3ZlciBwb3NpdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgUG9wb3ZlclBvc2l0aW9uID0gKHR5cGVvZiBQb3BvdmVyUG9zaXRpb25zLm9wdGlvbnMpW251bWJlcl07XG4iXX0=
@@ -1,82 +0,0 @@
1
- /**
2
- * Time model.
3
- * Takes care of keeping records of full time.
4
- */
5
- export class TimeModel {
6
- constructor(...args) {
7
- if (args[0] instanceof Date) {
8
- const date = args[0];
9
- this.hours = date.getHours();
10
- this.minutes = date.getMinutes();
11
- this.seconds = date.getSeconds();
12
- }
13
- else if (typeof args[0] === 'string') {
14
- const [hours, minutes, seconds] = args[0].split(':').map(n => parseInt(n));
15
- this.hours = hours;
16
- this.minutes = minutes;
17
- this.seconds = seconds;
18
- }
19
- else {
20
- this.hours = args[0];
21
- this.minutes = args[1];
22
- this.seconds = args[2];
23
- }
24
- }
25
- /**
26
- * Checks if the passed value is equal to current time model.
27
- * @param value - Time model.
28
- * @returns Whether value is equal to current time model.
29
- */
30
- isEqual(value) {
31
- if (value) {
32
- return this.hours === value.hours && this.minutes === value.minutes && this.seconds === value.seconds;
33
- }
34
- return false;
35
- }
36
- /**
37
- * Checks if current time model is after value.
38
- * @param value - time model.
39
- * @returns Whether current time model is after value.
40
- */
41
- isAfter(value) {
42
- return this.toDate() > value.toDate();
43
- }
44
- /**
45
- * Checks if current time model is before value.
46
- * @param value - Time model.
47
- * @returns Whether current time model is before value.
48
- */
49
- isBefore(value) {
50
- return this.toDate() < value.toDate();
51
- }
52
- /**
53
- * Clones the current odel.
54
- * @returns Cloned model.
55
- */
56
- clone() {
57
- return new TimeModel(this.hours, this.minutes, this.seconds);
58
- }
59
- /**
60
- * Convert to Javascript Date object.
61
- * @returns Javascript Date object.
62
- */
63
- toDate() {
64
- return new Date(new Date().setHours(this.hours, this.minutes, this.seconds ? this.seconds : 0));
65
- }
66
- /**
67
- * To HTML5 time spec string.
68
- * @returns Time as HTML5 spec string.
69
- */
70
- toHTML5SpecTimeString() {
71
- // The clarity time picker uses the format 'hh:mm:ss'.
72
- if (this.seconds) {
73
- return this.pad(this.hours) + ':' + this.pad(this.minutes) + ':' + this.pad(this.seconds);
74
- }
75
- // The clarity time picker uses the format 'hh:mm'.
76
- return this.pad(this.hours) + ':' + this.pad(this.minutes);
77
- }
78
- pad(num) {
79
- return num < 10 ? `0${num}` : `${num}`;
80
- }
81
- }
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGVyYW5nZXBpY2tlci9tb2RlbHMvdGltZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sU0FBUztJQXdCcEIsWUFBbUIsR0FBRyxJQUFtQztRQUN2RCxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUM1QixNQUFNLElBQUksR0FBUyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkMsQ0FBQzthQUFNLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdkMsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzRSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztZQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN6QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBVyxDQUFDO1lBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBVyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBVyxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE9BQU8sQ0FBQyxLQUFnQjtRQUM3QixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN4RyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE9BQU8sQ0FBQyxLQUFnQjtRQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxRQUFRLENBQUMsS0FBZ0I7UUFDOUIsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLO1FBQ1YsT0FBTyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNO1FBQ1gsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0kscUJBQXFCO1FBQzFCLHNEQUFzRDtRQUN0RCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUYsQ0FBQztRQUNELG1EQUFtRDtRQUNuRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU8sR0FBRyxDQUFDLEdBQVc7UUFDckIsT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ3pDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGltZSBtb2RlbC5cbiAqIFRha2VzIGNhcmUgb2Yga2VlcGluZyByZWNvcmRzIG9mIGZ1bGwgdGltZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFRpbWVNb2RlbCB7XG4gIHByaXZhdGUgaG91cnMhOiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBtaW51dGVzITogbnVtYmVyO1xuXG4gIHByaXZhdGUgc2Vjb25kcyE6IG51bWJlcjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHRpbWUgbW9kZWwuXG4gICAqIEBwYXJhbSBob3VycyAtIFRoZSBmdWxsIGhvdXJzICgwLTIzKS5cbiAgICogQHBhcmFtIG1pbnV0ZXMgLSBUaGUgbWludXRlc1xuICAgKiBAcGFyYW0gc2Vjb25kcyAtIFRoZSBzZWNvbmRzXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoaG91cnM6IG51bWJlciwgbWludXRlczogbnVtYmVyLCBzZWNvbmRzOiBudW1iZXIpO1xuICAvKipcbiAgICogQ3JlYXRlcyBhbiB0aW1lIG1vZGVsLlxuICAgKiBAcGFyYW0gZGF0ZSAtIEphdmFzY3JpcHQgRGF0ZSBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoZGF0ZTogRGF0ZSk7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdGltZSBtb2RlbC5cbiAgICogQHBhcmFtIGRhdGUgLSB0aW1lIHN0cmluZyBpbiBgaGg6bW06c3NgIGZvcm1hdC5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihkYXRlOiBzdHJpbmcpO1xuICBwdWJsaWMgY29uc3RydWN0b3IoLi4uYXJnczogQXJyYXk8bnVtYmVyIHwgRGF0ZSB8IHN0cmluZz4pIHtcbiAgICBpZiAoYXJnc1swXSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGNvbnN0IGRhdGU6IERhdGUgPSBhcmdzWzBdO1xuICAgICAgdGhpcy5ob3VycyA9IGRhdGUuZ2V0SG91cnMoKTtcbiAgICAgIHRoaXMubWludXRlcyA9IGRhdGUuZ2V0TWludXRlcygpO1xuICAgICAgdGhpcy5zZWNvbmRzID0gZGF0ZS5nZXRTZWNvbmRzKCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IFtob3VycywgbWludXRlcywgc2Vjb25kc10gPSBhcmdzWzBdLnNwbGl0KCc6JykubWFwKG4gPT4gcGFyc2VJbnQobikpO1xuICAgICAgdGhpcy5ob3VycyA9IGhvdXJzO1xuICAgICAgdGhpcy5taW51dGVzID0gbWludXRlcztcbiAgICAgIHRoaXMuc2Vjb25kcyA9IHNlY29uZHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaG91cnMgPSBhcmdzWzBdIGFzIG51bWJlcjtcbiAgICAgIHRoaXMubWludXRlcyA9IGFyZ3NbMV0gYXMgbnVtYmVyO1xuICAgICAgdGhpcy5zZWNvbmRzID0gYXJnc1syXSBhcyBudW1iZXI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgcGFzc2VkIHZhbHVlIGlzIGVxdWFsIHRvIGN1cnJlbnQgdGltZSBtb2RlbC5cbiAgICogQHBhcmFtIHZhbHVlIC0gVGltZSBtb2RlbC5cbiAgICogQHJldHVybnMgV2hldGhlciB2YWx1ZSBpcyBlcXVhbCB0byBjdXJyZW50IHRpbWUgbW9kZWwuXG4gICAqL1xuICBwdWJsaWMgaXNFcXVhbCh2YWx1ZTogVGltZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5ob3VycyA9PT0gdmFsdWUuaG91cnMgJiYgdGhpcy5taW51dGVzID09PSB2YWx1ZS5taW51dGVzICYmIHRoaXMuc2Vjb25kcyA9PT0gdmFsdWUuc2Vjb25kcztcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBjdXJyZW50IHRpbWUgbW9kZWwgaXMgYWZ0ZXIgdmFsdWUuXG4gICAqIEBwYXJhbSB2YWx1ZSAtIHRpbWUgbW9kZWwuXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgY3VycmVudCB0aW1lIG1vZGVsIGlzIGFmdGVyIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIGlzQWZ0ZXIodmFsdWU6IFRpbWVNb2RlbCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRvRGF0ZSgpID4gdmFsdWUudG9EYXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGN1cnJlbnQgdGltZSBtb2RlbCBpcyBiZWZvcmUgdmFsdWUuXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRpbWUgbW9kZWwuXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgY3VycmVudCB0aW1lIG1vZGVsIGlzIGJlZm9yZSB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBpc0JlZm9yZSh2YWx1ZTogVGltZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9EYXRlKCkgPCB2YWx1ZS50b0RhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9uZXMgdGhlIGN1cnJlbnQgb2RlbC5cbiAgICogQHJldHVybnMgQ2xvbmVkIG1vZGVsLlxuICAgKi9cbiAgcHVibGljIGNsb25lKCk6IFRpbWVNb2RlbCB7XG4gICAgcmV0dXJuIG5ldyBUaW1lTW9kZWwodGhpcy5ob3VycywgdGhpcy5taW51dGVzLCB0aGlzLnNlY29uZHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdG8gSmF2YXNjcmlwdCBEYXRlIG9iamVjdC5cbiAgICogQHJldHVybnMgSmF2YXNjcmlwdCBEYXRlIG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyB0b0RhdGUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0SG91cnModGhpcy5ob3VycywgdGhpcy5taW51dGVzLCB0aGlzLnNlY29uZHMgPyB0aGlzLnNlY29uZHMgOiAwKSk7XG4gIH1cblxuICAvKipcbiAgICogVG8gSFRNTDUgdGltZSBzcGVjIHN0cmluZy5cbiAgICogQHJldHVybnMgVGltZSBhcyBIVE1MNSBzcGVjIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyB0b0hUTUw1U3BlY1RpbWVTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAvLyBUaGUgY2xhcml0eSB0aW1lIHBpY2tlciB1c2VzIHRoZSBmb3JtYXQgJ2hoOm1tOnNzJy5cbiAgICBpZiAodGhpcy5zZWNvbmRzKSB7XG4gICAgICByZXR1cm4gdGhpcy5wYWQodGhpcy5ob3VycykgKyAnOicgKyB0aGlzLnBhZCh0aGlzLm1pbnV0ZXMpICsgJzonICsgdGhpcy5wYWQodGhpcy5zZWNvbmRzKTtcbiAgICB9XG4gICAgLy8gVGhlIGNsYXJpdHkgdGltZSBwaWNrZXIgdXNlcyB0aGUgZm9ybWF0ICdoaDptbScuXG4gICAgcmV0dXJuIHRoaXMucGFkKHRoaXMuaG91cnMpICsgJzonICsgdGhpcy5wYWQodGhpcy5taW51dGVzKTtcbiAgfVxuXG4gIHByaXZhdGUgcGFkKG51bTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbnVtIDwgMTAgPyBgMCR7bnVtfWAgOiBgJHtudW19YDtcbiAgfVxufVxuXG4vKipcbiAqIFRpbWUgbW9kZWwuXG4gKiBUYWtlcyBjYXJlIG9mIGtlZXBpbmcgcmVjb3JkcyBvZiBmdWxsIHRpbWUuXG4gKi9cbmV4cG9ydCB0eXBlIE51bGxhYmxlVGltZU1vZGVsID0gVGltZU1vZGVsIHwgdW5kZWZpbmVkIHwgbnVsbDtcbiJdfQ==
@@ -1,62 +0,0 @@
1
- import { EventEmitter, Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Daterange control state service.
5
- * Stores data for communication between daterange container and input.
6
- */
7
- export class DaterangeControlStateService {
8
- constructor() {
9
- /** Disabled control state. */
10
- this.disabled = false;
11
- /** Focused. */
12
- this.focused = false;
13
- /** List of validation errors. */
14
- this.errors = null;
15
- this._invalid = false;
16
- this._touched = false;
17
- /**
18
- * Event triggered when status changes.
19
- */
20
- this.statusChange = new EventEmitter();
21
- }
22
- /**
23
- * Control invalid status.
24
- * @returns Control invalid status.
25
- */
26
- get invalid() {
27
- return this._invalid;
28
- }
29
- /**
30
- * Touched.
31
- * @returns Touched.
32
- */
33
- get touched() {
34
- return this._touched;
35
- }
36
- /**
37
- * Update status.
38
- * Only for valid & invalid status changes.
39
- * And only if there was a real change.
40
- * Also updates errors list.
41
- * Emits `statusChange` event.
42
- * @param control
43
- */
44
- updateStatus(control) {
45
- this._touched = control.touched;
46
- // We only care about valid & invalid status changes.
47
- // There is an bug where `ClrDaterangepickerDirective.writeValue` is called twice with same value (`null`).
48
- // Setting ` && (control.touched || control.dirty)` in next if-statement will hide the errors,
49
- // but the control will still be invalid with errors (just hidden).
50
- if (['VALID', 'INVALID'].includes(control.status)) {
51
- this.errors = control.errors;
52
- this._invalid = control.invalid;
53
- this.statusChange.emit(this._invalid);
54
- }
55
- }
56
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DaterangeControlStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
57
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DaterangeControlStateService }); }
58
- }
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DaterangeControlStateService, decorators: [{
60
- type: Injectable
61
- }] });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXJhbmdlLWNvbnRyb2wtc3RhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGVyYW5nZXBpY2tlci9wcm92aWRlcnMvZGF0ZXJhbmdlLWNvbnRyb2wtc3RhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHekQ7OztHQUdHO0FBRUgsTUFBTSxPQUFPLDRCQUE0QjtJQUR6QztRQUVFLDhCQUE4QjtRQUN2QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRXhCLGVBQWU7UUFDUixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRXZCLGlDQUFpQztRQUMxQixXQUFNLEdBQTRCLElBQUksQ0FBQztRQUV0QyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBU2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUErQnpCOztXQUVHO1FBQ0ksaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0tBQ25EO0lBM0NDOzs7T0FHRztJQUNILElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUdEOzs7T0FHRztJQUNILElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxZQUFZLENBQUMsT0FBd0I7UUFDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBRWhDLHFEQUFxRDtRQUNyRCwyR0FBMkc7UUFDM0csOEZBQThGO1FBQzlGLG1FQUFtRTtRQUNuRSxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQzs4R0FoRFUsNEJBQTRCO2tIQUE1Qiw0QkFBNEI7OzJGQUE1Qiw0QkFBNEI7a0JBRHhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqXG4gKiBEYXRlcmFuZ2UgY29udHJvbCBzdGF0ZSBzZXJ2aWNlLlxuICogU3RvcmVzIGRhdGEgZm9yIGNvbW11bmljYXRpb24gYmV0d2VlbiBkYXRlcmFuZ2UgY29udGFpbmVyIGFuZCBpbnB1dC5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhdGVyYW5nZUNvbnRyb2xTdGF0ZVNlcnZpY2Uge1xuICAvKiogRGlzYWJsZWQgY29udHJvbCBzdGF0ZS4gKi9cbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqIEZvY3VzZWQuICovXG4gIHB1YmxpYyBmb2N1c2VkID0gZmFsc2U7XG5cbiAgLyoqIExpc3Qgb2YgdmFsaWRhdGlvbiBlcnJvcnMuICovXG4gIHB1YmxpYyBlcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9pbnZhbGlkID0gZmFsc2U7XG4gIC8qKlxuICAgKiBDb250cm9sIGludmFsaWQgc3RhdHVzLlxuICAgKiBAcmV0dXJucyBDb250cm9sIGludmFsaWQgc3RhdHVzLlxuICAgKi9cbiAgcHVibGljIGdldCBpbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pbnZhbGlkO1xuICB9XG5cbiAgcHJpdmF0ZSBfdG91Y2hlZCA9IGZhbHNlO1xuICAvKipcbiAgICogVG91Y2hlZC5cbiAgICogQHJldHVybnMgVG91Y2hlZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgdG91Y2hlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdG91Y2hlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgc3RhdHVzLlxuICAgKiBPbmx5IGZvciB2YWxpZCAmIGludmFsaWQgc3RhdHVzIGNoYW5nZXMuXG4gICAqIEFuZCBvbmx5IGlmIHRoZXJlIHdhcyBhIHJlYWwgY2hhbmdlLlxuICAgKiBBbHNvIHVwZGF0ZXMgZXJyb3JzIGxpc3QuXG4gICAqIEVtaXRzIGBzdGF0dXNDaGFuZ2VgIGV2ZW50LlxuICAgKiBAcGFyYW0gY29udHJvbFxuICAgKi9cbiAgcHVibGljIHVwZGF0ZVN0YXR1cyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICB0aGlzLl90b3VjaGVkID0gY29udHJvbC50b3VjaGVkO1xuXG4gICAgLy8gV2Ugb25seSBjYXJlIGFib3V0IHZhbGlkICYgaW52YWxpZCBzdGF0dXMgY2hhbmdlcy5cbiAgICAvLyBUaGVyZSBpcyBhbiBidWcgd2hlcmUgYENsckRhdGVyYW5nZXBpY2tlckRpcmVjdGl2ZS53cml0ZVZhbHVlYCBpcyBjYWxsZWQgdHdpY2Ugd2l0aCBzYW1lIHZhbHVlIChgbnVsbGApLlxuICAgIC8vIFNldHRpbmcgYCAmJiAoY29udHJvbC50b3VjaGVkIHx8IGNvbnRyb2wuZGlydHkpYCBpbiBuZXh0IGlmLXN0YXRlbWVudCB3aWxsIGhpZGUgdGhlIGVycm9ycyxcbiAgICAvLyBidXQgdGhlIGNvbnRyb2wgd2lsbCBzdGlsbCBiZSBpbnZhbGlkIHdpdGggZXJyb3JzIChqdXN0IGhpZGRlbikuXG4gICAgaWYgKFsnVkFMSUQnLCAnSU5WQUxJRCddLmluY2x1ZGVzKGNvbnRyb2wuc3RhdHVzKSkge1xuICAgICAgdGhpcy5lcnJvcnMgPSBjb250cm9sLmVycm9ycztcbiAgICAgIHRoaXMuX2ludmFsaWQgPSBjb250cm9sLmludmFsaWQ7XG4gICAgICB0aGlzLnN0YXR1c0NoYW5nZS5lbWl0KHRoaXMuX2ludmFsaWQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCB0cmlnZ2VyZWQgd2hlbiBzdGF0dXMgY2hhbmdlcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0dXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG59XG4iXX0=
@@ -1,226 +0,0 @@
1
- import { FormatWidth, getLocaleDateFormat } from '@angular/common';
2
- import { Inject, Injectable, LOCALE_ID } from '@angular/core';
3
- import { BIG_ENDIAN, DELIMITER_REGEX, LITTLE_ENDIAN, LITTLE_ENDIAN_REGEX, MIDDLE_ENDIAN, MIDDLE_ENDIAN_REGEX, SEPARATOR_TEXT_DEFAULT, USER_INPUT_REGEX, } from '../daterange.constants';
4
- import { DayModel } from '../models/day.model';
5
- import * as i0 from "@angular/core";
6
- /**
7
- * Daterange parsing service.
8
- * Heavy inspired by `date-io.service.ts` from Clarity.
9
- * https://github.com/vmware-clarity/ng-clarity/blob/a21fe726fe91ae3c929b8f016359afe354bb89c6/projects/angular/src/forms/datepicker/providers/date-io.service.ts
10
- */
11
- export class DaterangeParsingService {
12
- /** Locale format. */
13
- get localeFormat() {
14
- return (this.localeDisplayFormat.format[0] +
15
- this.localeDelimiter[0] +
16
- this.localeDisplayFormat.format[1] +
17
- this.localeDelimiter[1] +
18
- this.localeDisplayFormat.format[2]);
19
- }
20
- constructor(locale) {
21
- this.locale = locale;
22
- this.localeDelimiter = [];
23
- const localeFormat = getLocaleDateFormat(this.locale, FormatWidth.Short);
24
- const format = localeFormat.toLocaleLowerCase();
25
- if (LITTLE_ENDIAN_REGEX.test(format)) {
26
- this.localeDisplayFormat = LITTLE_ENDIAN;
27
- }
28
- else if (MIDDLE_ENDIAN_REGEX.test(format)) {
29
- this.localeDisplayFormat = MIDDLE_ENDIAN;
30
- }
31
- else {
32
- this.localeDisplayFormat = BIG_ENDIAN;
33
- }
34
- // Splitting it by date, month and year, leaves us with the delimiters.
35
- // E.g. `"dd/MM/y".split(/d+|m+|y+/i)` results in `["", "/", "/", ""]`.
36
- const delimiters = localeFormat.split(DELIMITER_REGEX);
37
- this.localeDelimiter = [delimiters[1], delimiters[2]];
38
- }
39
- /**
40
- * Convert daterange to locale friendly text.
41
- * @param daterange - Daterange.
42
- * @param separator - Separator between 'from' and 'to' dates.
43
- * @returns Friendly daterange text.
44
- */
45
- toLocaleString(daterange, separator = SEPARATOR_TEXT_DEFAULT) {
46
- if (daterange == null) {
47
- return '';
48
- }
49
- const { from, to } = daterange;
50
- if (from == null || to == null) {
51
- return '';
52
- }
53
- const fromDate = from.toDate();
54
- const toDate = to.toDate();
55
- const fromDateStr = this.toLocaleDisplayFormatString(fromDate);
56
- const toDateStr = this.toLocaleDisplayFormatString(toDate);
57
- return fromDateStr + separator + toDateStr;
58
- }
59
- toLocaleStringWithTime(daterange, separator = SEPARATOR_TEXT_DEFAULT) {
60
- if (daterange == null) {
61
- return '';
62
- }
63
- const { from, to, fromTime, toTime } = daterange;
64
- if (from == null || to == null) {
65
- return '';
66
- }
67
- const fromDate = from.toDate();
68
- const toDate = to.toDate();
69
- const fromDateStr = this.toLocaleDisplayFormatString(fromDate);
70
- const toDateStr = this.toLocaleDisplayFormatString(toDate);
71
- if (fromTime === null || toTime === null) {
72
- return fromDateStr + separator + toDateStr;
73
- }
74
- return fromDateStr + ' ' + this.toTimeString(fromTime) + separator + toDateStr + ' ' + this.toTimeString(toTime);
75
- }
76
- toTimeString(time) {
77
- return time?.toHTML5SpecTimeString();
78
- }
79
- /**
80
- * Convert date to locale display format string.
81
- * @param date - Javascript Date object.
82
- * @returns Locale display format string.
83
- */
84
- toLocaleDisplayFormatString(date) {
85
- const dateNo = date.getDate();
86
- const monthNo = date.getMonth() + 1;
87
- const yearNo = date.getFullYear();
88
- const dateStr = this.pad(dateNo);
89
- const monthStr = this.pad(monthNo);
90
- const delim1 = this.localeDelimiter[0];
91
- const delim2 = this.localeDelimiter[1];
92
- if (this.localeDisplayFormat === LITTLE_ENDIAN) {
93
- return dateStr + delim1 + monthStr + delim2 + yearNo;
94
- }
95
- else if (this.localeDisplayFormat === MIDDLE_ENDIAN) {
96
- return monthStr + delim1 + dateStr + delim2 + yearNo;
97
- }
98
- else {
99
- return yearNo + delim1 + monthStr + delim2 + dateStr;
100
- }
101
- }
102
- /**
103
- * String padding with zeros.
104
- * @param num - Number to pad.
105
- * @returns Padded string.
106
- */
107
- pad(num) {
108
- return num < 10 ? `0${num}` : `${num}`;
109
- }
110
- /**
111
- * Parse daterange string to daterange object.
112
- * @param daterangeString - Daterange string.
113
- * @param separator - Separator text.
114
- * @returns Daterange object.
115
- */
116
- parse(daterangeString, separator = SEPARATOR_TEXT_DEFAULT) {
117
- if (daterangeString == null || daterangeString === '') {
118
- return null;
119
- }
120
- const [fromString, toString] = daterangeString.split(separator);
121
- const from = this.getDayModelFromDateString(fromString);
122
- const to = this.getDayModelFromDateString(toString);
123
- if (from == null && to == null) {
124
- return null;
125
- }
126
- return { from, to };
127
- }
128
- /**
129
- * Get `DayModel` from date string.
130
- * @param dateString - Date string.
131
- * @returns DayModel.
132
- */
133
- getDayModelFromDateString(dateString) {
134
- if (dateString == null || dateString === '') {
135
- return null;
136
- }
137
- const dateParts = dateString.match(USER_INPUT_REGEX);
138
- if (dateParts == null || dateParts.length !== 3) {
139
- return null;
140
- }
141
- const [firstPart, secondPart, thirdPart] = dateParts;
142
- if (this.localeDisplayFormat === LITTLE_ENDIAN) {
143
- // secondPart is month && firstPart is date.
144
- return this.getDayModelFromDateParts(thirdPart, secondPart, firstPart);
145
- }
146
- else if (this.localeDisplayFormat === MIDDLE_ENDIAN) {
147
- // firstPart is month && secondPart is date.
148
- return this.getDayModelFromDateParts(thirdPart, firstPart, secondPart);
149
- }
150
- else {
151
- // secondPart is month && thirdPart is date.
152
- return this.getDayModelFromDateParts(firstPart, secondPart, thirdPart);
153
- }
154
- }
155
- /**
156
- * Get `DayModel` from date string parts.
157
- * @param yearString - Year string.
158
- * @param monthString - Month string.
159
- * @param dateString - Date string.
160
- * @returns DayModel.
161
- */
162
- getDayModelFromDateParts(yearString, monthString, dateString) {
163
- // Check for valid date part strings.
164
- let year = parseInt(yearString);
165
- if (isNaN(year)) {
166
- return null;
167
- }
168
- let month = parseInt(monthString);
169
- if (isNaN(month)) {
170
- return null;
171
- }
172
- const date = parseInt(dateString);
173
- if (isNaN(date)) {
174
- return null;
175
- }
176
- // Convert year to 4 digit year.
177
- year = this.parseToFourDigitYear(year);
178
- if (year == null) {
179
- return null;
180
- }
181
- // Month is zero-indexed.
182
- month -= 1;
183
- // Creating new Javascript Date object, because it will automatically take care of
184
- // switching to next or previous months & years without we having to worry about it.
185
- const parsedDate = new Date(year, month, date);
186
- if (isNaN(parsedDate.getTime())) {
187
- return null;
188
- }
189
- return new DayModel(parsedDate);
190
- }
191
- /**
192
- * Takes in a year and if it is a 2 digit year, returns the corresponding 4 digit year.
193
- * Window of 80 years before and 20 years after the present year.
194
- * Credit: https://github.com/globalizejs/globalize/blob/e1b31cd6a4f1cff75b185b68b7a32220aac5196f/src/date/parse.js
195
- * @param year - Year.
196
- * @returns Four-digit year.
197
- */
198
- parseToFourDigitYear(year) {
199
- // Impossible years.
200
- if (year > 9999 || (year > 100 && year < 999) || year < 10) {
201
- return null;
202
- }
203
- if (year > 999) {
204
- return year;
205
- }
206
- const currYear = new Date().getFullYear();
207
- const century = Math.floor(currYear / 100) * 100;
208
- let result = year + century;
209
- if (result > currYear + 20) {
210
- result = result - 100;
211
- }
212
- return result;
213
- }
214
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DaterangeParsingService, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
215
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DaterangeParsingService, providedIn: 'root' }); }
216
- }
217
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DaterangeParsingService, decorators: [{
218
- type: Injectable,
219
- args: [{
220
- providedIn: 'root',
221
- }]
222
- }], ctorParameters: () => [{ type: undefined, decorators: [{
223
- type: Inject,
224
- args: [LOCALE_ID]
225
- }] }] });
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXJhbmdlLXBhcnNpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbHItYWRkb25zL2RhdGVyYW5nZXBpY2tlci9wcm92aWRlcnMvZGF0ZXJhbmdlLXBhcnNpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFDTCxVQUFVLEVBQ1YsZUFBZSxFQUVmLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixzQkFBc0IsRUFDdEIsZ0JBQWdCLEdBQ2pCLE1BQU0sd0JBQXdCLENBQUM7QUFFaEMsT0FBTyxFQUFFLFFBQVEsRUFBb0IsTUFBTSxxQkFBcUIsQ0FBQzs7QUFJakU7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyx1QkFBdUI7SUFJbEMscUJBQXFCO0lBQ3JCLElBQVcsWUFBWTtRQUNyQixPQUFPLENBQ0wsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FDbkMsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUF1RCxNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQWJyRCxvQkFBZSxHQUFrQixFQUFFLENBQUM7UUFjbEQsTUFBTSxZQUFZLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1B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MkJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1hdFdpZHRoLCBnZXRMb2NhbGVEYXRlRm9ybWF0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgTE9DQUxFX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIEJJR19FTkRJQU4sXG4gIERFTElNSVRFUl9SRUdFWCxcbiAgSW5wdXREYXRlRGlzcGxheUZvcm1hdCxcbiAgTElUVExFX0VORElBTixcbiAgTElUVExFX0VORElBTl9SRUdFWCxcbiAgTUlERExFX0VORElBTixcbiAgTUlERExFX0VORElBTl9SRUdFWCxcbiAgU0VQQVJBVE9SX1RFWFRfREVGQVVMVCxcbiAgVVNFUl9JTlBVVF9SRUdFWCxcbn0gZnJvbSAnLi4vZGF0ZXJhbmdlLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBOdWxsYWJsZURhdGVyYW5nZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZGF0ZXJhbmdlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEYXlNb2RlbCwgTnVsbGFibGVEYXlNb2RlbCB9IGZyb20gJy4uL21vZGVscy9kYXkubW9kZWwnO1xuaW1wb3J0IHsgTnVsbGFibGVUaW1lcmFuZ2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RpbWVyYW5nZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGltZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3RpbWUubW9kZWwnO1xuXG4vKipcbiAqIERhdGVyYW5nZSBwYXJzaW5nIHNlcnZpY2UuXG4gKiBIZWF2eSBpbnNwaXJlZCBieSBgZGF0ZS1pby5zZXJ2aWNlLnRzYCBmcm9tIENsYXJpdHkuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vdm13YXJlLWNsYXJpdHkvbmctY2xhcml0eS9ibG9iL2EyMWZlNzI2ZmU5MWFlM2M5MjliOGYwMTYzNTlhZmUzNTRiYjg5YzYvcHJvamVjdHMvYW5ndWxhci9zcmMvZm9ybXMvZGF0ZXBpY2tlci9wcm92aWRlcnMvZGF0ZS1pby5zZXJ2aWNlLnRzXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlcmFuZ2VQYXJzaW5nU2VydmljZSB7XG4gIHB1YmxpYyByZWFkb25seSBsb2NhbGVEaXNwbGF5Rm9ybWF0OiBJbnB1dERhdGVEaXNwbGF5Rm9ybWF0O1xuICBwdWJsaWMgcmVhZG9ubHkgbG9jYWxlRGVsaW1pdGVyOiBBcnJheTxzdHJpbmc+ID0gW107XG5cbiAgLyoqIExvY2FsZSBmb3JtYXQuICovXG4gIHB1YmxpYyBnZXQgbG9jYWxlRm9ybWF0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMubG9jYWxlRGlzcGxheUZvcm1hdC5mb3JtYXRbMF0gK1xuICAgICAgdGhpcy5sb2NhbGVEZWxpbWl0ZXJbMF0gK1xuICAgICAgdGhpcy5sb2NhbGVEaXNwbGF5Rm9ybWF0LmZvcm1hdFsxXSArXG4gICAgICB0aGlzLmxvY2FsZURlbGltaXRlclsxXSArXG4gICAgICB0aGlzLmxvY2FsZURpc3BsYXlGb3JtYXQuZm9ybWF0WzJdXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihASW5qZWN0KExPQ0FMRV9JRCkgcHJpdmF0ZSByZWFkb25seSBsb2NhbGU6IHN0cmluZykge1xuICAgIGNvbnN0IGxvY2FsZUZvcm1hdCA9IGdldExvY2FsZURhdGVGb3JtYXQodGhpcy5sb2NhbGUsIEZvcm1hdFdpZHRoLlNob3J0KTtcbiAgICBjb25zdCBmb3JtYXQ6IHN0cmluZyA9IGxvY2FsZUZvcm1hdC50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKExJVFRMRV9FTkRJQU5fUkVHRVgudGVzdChmb3JtYXQpKSB7XG4gICAgICB0aGlzLmxvY2FsZURpc3BsYXlGb3JtYXQgPSBMSVRUTEVfRU5ESUFOO1xuICAgIH0gZWxzZSBpZiAoTUlERExFX0VORElBTl9SRUdFWC50ZXN0KGZvcm1hdCkpIHtcbiAgICAgIHRoaXMubG9jYWxlRGlzcGxheUZvcm1hdCA9IE1JRERMRV9FTkRJQU47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9jYWxlRGlzcGxheUZvcm1hdCA9IEJJR19FTkRJQU47XG4gICAgfVxuXG4gICAgLy8gU3BsaXR0aW5nIGl0IGJ5IGRhdGUsIG1vbnRoIGFuZCB5ZWFyLCBsZWF2ZXMgdXMgd2l0aCB0aGUgZGVsaW1pdGVycy5cbiAgICAvLyBFLmcuIGBcImRkL01NL3lcIi5zcGxpdCgvZCt8bSt8eSsvaSlgIHJlc3VsdHMgaW4gYFtcIlwiLCBcIi9cIiwgXCIvXCIsIFwiXCJdYC5cbiAgICBjb25zdCBkZWxpbWl0ZXJzOiBBcnJheTxzdHJpbmc+ID0gbG9jYWxlRm9ybWF0LnNwbGl0KERFTElNSVRFUl9SRUdFWCk7XG4gICAgdGhpcy5sb2NhbGVEZWxpbWl0ZXIgPSBbZGVsaW1pdGVyc1sxXSwgZGVsaW1pdGVyc1syXV07XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBkYXRlcmFuZ2UgdG8gbG9jYWxlIGZyaWVuZGx5IHRleHQuXG4gICAqIEBwYXJhbSBkYXRlcmFuZ2UgLSBEYXRlcmFuZ2UuXG4gICAqIEBwYXJhbSBzZXBhcmF0b3IgLSBTZXBhcmF0b3IgYmV0d2VlbiAnZnJvbScgYW5kICd0bycgZGF0ZXMuXG4gICAqIEByZXR1cm5zIEZyaWVuZGx5IGRhdGVyYW5nZSB0ZXh0LlxuICAgKi9cbiAgcHVibGljIHRvTG9jYWxlU3RyaW5nKGRhdGVyYW5nZTogTnVsbGFibGVEYXRlcmFuZ2UsIHNlcGFyYXRvcjogc3RyaW5nID0gU0VQQVJBVE9SX1RFWFRfREVGQVVMVCk6IHN0cmluZyB7XG4gICAgaWYgKGRhdGVyYW5nZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgeyBmcm9tLCB0byB9ID0gZGF0ZXJhbmdlO1xuICAgIGlmIChmcm9tID09IG51bGwgfHwgdG8gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGZyb21EYXRlID0gZnJvbS50b0RhdGUoKTtcbiAgICBjb25zdCB0b0RhdGUgPSB0by50b0RhdGUoKTtcblxuICAgIGNvbnN0IGZyb21EYXRlU3RyID0gdGhpcy50b0xvY2FsZURpc3BsYXlGb3JtYXRTdHJpbmcoZnJvbURhdGUpO1xuICAgIGNvbnN0IHRvRGF0ZVN0ciA9IHRoaXMudG9Mb2NhbGVEaXNwbGF5Rm9ybWF0U3RyaW5nKHRvRGF0ZSk7XG5cbiAgICByZXR1cm4gZnJvbURhdGVTdHIgKyBzZXBhcmF0b3IgKyB0b0RhdGVTdHI7XG4gIH1cblxuICBwdWJsaWMgdG9Mb2NhbGVTdHJpbmdXaXRoVGltZShcbiAgICBkYXRlcmFuZ2U6IE51bGxhYmxlRGF0ZXJhbmdlIHwgTnVsbGFibGVUaW1lcmFuZ2UsXG4gICAgc2VwYXJhdG9yOiBzdHJpbmcgPSBTRVBBUkFUT1JfVEVYVF9ERUZBVUxUXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKGRhdGVyYW5nZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgeyBmcm9tLCB0bywgZnJvbVRpbWUsIHRvVGltZSB9ID0gZGF0ZXJhbmdlIGFzIE51bGxhYmxlVGltZXJhbmdlO1xuICAgIGlmIChmcm9tID09IG51bGwgfHwgdG8gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGZyb21EYXRlID0gZnJvbS50b0RhdGUoKTtcbiAgICBjb25zdCB0b0RhdGUgPSB0by50b0RhdGUoKTtcblxuICAgIGNvbnN0IGZyb21EYXRlU3RyID0gdGhpcy50b0xvY2FsZURpc3BsYXlGb3JtYXRTdHJpbmcoZnJvbURhdGUpO1xuICAgIGNvbnN0IHRvRGF0ZVN0ciA9IHRoaXMudG9Mb2NhbGVEaXNwbGF5Rm9ybWF0U3RyaW5nKHRvRGF0ZSk7XG5cbiAgICBpZiAoZnJvbVRpbWUgPT09IG51bGwgfHwgdG9UaW1lID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZnJvbURhdGVTdHIgKyBzZXBhcmF0b3IgKyB0b0RhdGVTdHI7XG4gICAgfVxuICAgIHJldHVybiBmcm9tRGF0ZVN0ciArICcgJyArIHRoaXMudG9UaW1lU3RyaW5nKGZyb21UaW1lKSArIHNlcGFyYXRvciArIHRvRGF0ZVN0ciArICcgJyArIHRoaXMudG9UaW1lU3RyaW5nKHRvVGltZSk7XG4gIH1cblxuICBwcml2YXRlIHRvVGltZVN0cmluZyh0aW1lOiBUaW1lTW9kZWwpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aW1lPy50b0hUTUw1U3BlY1RpbWVTdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGRhdGUgdG8gbG9jYWxlIGRpc3BsYXkgZm9ybWF0IHN0cmluZy5cbiAgICogQHBhcmFtIGRhdGUgLSBKYXZhc2NyaXB0IERhdGUgb2JqZWN0LlxuICAgKiBAcmV0dXJucyBMb2NhbGUgZGlzcGxheSBmb3JtYXQgc3RyaW5nLlxuICAgKi9cbiAgcHJpdmF0ZSB0b0xvY2FsZURpc3BsYXlGb3JtYXRTdHJpbmcoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgY29uc3QgZGF0ZU5vOiBudW1iZXIgPSBkYXRlLmdldERhdGUoKTtcbiAgICBjb25zdCBtb250aE5vOiBudW1iZXIgPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xuICAgIGNvbnN0IHllYXJObzogbnVtYmVyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuXG4gICAgY29uc3QgZGF0ZVN0cjogc3RyaW5nID0gdGhpcy5wYWQoZGF0ZU5vKTtcbiAgICBjb25zdCBtb250aFN0cjogc3RyaW5nID0gdGhpcy5wYWQobW9udGhObyk7XG5cbiAgICBjb25zdCBkZWxpbTEgPSB0aGlzLmxvY2FsZURlbGltaXRlclswXTtcbiAgICBjb25zdCBkZWxpbTIgPSB0aGlzLmxvY2FsZURlbGltaXRlclsxXTtcblxuICAgIGlmICh0aGlzLmxvY2FsZURpc3BsYXlGb3JtYXQgPT09IExJVFRMRV9FTkRJQU4pIHtcbiAgICAgIHJldHVybiBkYXRlU3RyICsgZGVsaW0xICsgbW9udGhTdHIgKyBkZWxpbTIgKyB5ZWFyTm87XG4gICAgfSBlbHNlIGlmICh0aGlzLmxvY2FsZURpc3BsYXlGb3JtYXQgPT09IE1JRERMRV9FTkRJQU4pIHtcbiAgICAgIHJldHVybiBtb250aFN0ciArIGRlbGltMSArIGRhdGVTdHIgKyBkZWxpbTIgKyB5ZWFyTm87XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB5ZWFyTm8gKyBkZWxpbTEgKyBtb250aFN0ciArIGRlbGltMiArIGRhdGVTdHI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0cmluZyBwYWRkaW5nIHdpdGggemVyb3MuXG4gICAqIEBwYXJhbSBudW0gLSBOdW1iZXIgdG8gcGFkLlxuICAgKiBAcmV0dXJucyBQYWRkZWQgc3RyaW5nLlxuICAgKi9cbiAgcHJpdmF0ZSBwYWQobnVtOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBudW0gPCAxMCA/IGAwJHtudW19YCA6IGAke251bX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIGRhdGVyYW5nZSBzdHJpbmcgdG8gZGF0ZXJhbmdlIG9iamVjdC5cbiAgICogQHBhcmFtIGRhdGVyYW5nZVN0cmluZyAtIERhdGVyYW5nZSBzdHJpbmcuXG4gICAqIEBwYXJhbSBzZXBhcmF0b3IgLSBTZXBhcmF0b3IgdGV4dC5cbiAgICogQHJldHVybnMgRGF0ZXJhbmdlIG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBwYXJzZShkYXRlcmFuZ2VTdHJpbmc6IHN0cmluZywgc2VwYXJhdG9yOiBzdHJpbmcgPSBTRVBBUkFUT1JfVEVYVF9ERUZBVUxUKTogTnVsbGFibGVEYXRlcmFuZ2Uge1xuICAgIGlmIChkYXRlcmFuZ2VTdHJpbmcgPT0gbnVsbCB8fCBkYXRlcmFuZ2VTdHJpbmcgPT09ICcnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBbZnJvbVN0cmluZywgdG9TdHJpbmddID0gZGF0ZXJhbmdlU3RyaW5nLnNwbGl0KHNlcGFyYXRvcik7XG4gICAgY29uc3QgZnJvbSA9IHRoaXMuZ2V0RGF5TW9kZWxGcm9tRGF0ZVN0cmluZyhmcm9tU3RyaW5nKTtcbiAgICBjb25zdCB0byA9IHRoaXMuZ2V0RGF5TW9kZWxGcm9tRGF0ZVN0cmluZyh0b1N0cmluZyk7XG5cbiAgICBpZiAoZnJvbSA9PSBudWxsICYmIHRvID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7IGZyb20sIHRvIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0IGBEYXlNb2RlbGAgZnJvbSBkYXRlIHN0cmluZy5cbiAgICogQHBhcmFtIGRhdGVTdHJpbmcgLSBEYXRlIHN0cmluZy5cbiAgICogQHJldHVybnMgRGF5TW9kZWwuXG4gICAqL1xuICBwcml2YXRlIGdldERheU1vZGVsRnJvbURhdGVTdHJpbmcoZGF0ZVN0cmluZzogc3RyaW5nKTogTnVsbGFibGVEYXlNb2RlbCB7XG4gICAgaWYgKGRhdGVTdHJpbmcgPT0gbnVsbCB8fCBkYXRlU3RyaW5nID09PSAnJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0ZVBhcnRzOiBSZWdFeHBNYXRjaEFycmF5ID0gZGF0ZVN0cmluZy5tYXRjaChVU0VSX0lOUFVUX1JFR0VYKTtcbiAgICBpZiAoZGF0ZVBhcnRzID09IG51bGwgfHwgZGF0ZVBhcnRzLmxlbmd0aCAhPT0gMykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgW2ZpcnN0UGFydCwgc2Vjb25kUGFydCwgdGhpcmRQYXJ0XSA9IGRhdGVQYXJ0cztcbiAgICBpZiAodGhpcy5sb2NhbGVEaXNwbGF5Rm9ybWF0ID09PSBMSVRUTEVfRU5ESUFOKSB7XG4gICAgICAvLyBzZWNvbmRQYXJ0IGlzIG1vbnRoICYmIGZpcnN0UGFydCBpcyBkYXRlLlxuICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF5TW9kZWxGcm9tRGF0ZVBhcnRzKHRoaXJkUGFydCwgc2Vjb25kUGFydCwgZmlyc3RQYXJ0KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubG9jYWxlRGlzcGxheUZvcm1hdCA9PT0gTUlERExFX0VORElBTikge1xuICAgICAgLy8gZmlyc3RQYXJ0IGlzIG1vbnRoICYmIHNlY29uZFBhcnQgaXMgZGF0ZS5cbiAgICAgIHJldHVybiB0aGlzLmdldERheU1vZGVsRnJvbURhdGVQYXJ0cyh0aGlyZFBhcnQsIGZpcnN0UGFydCwgc2Vjb25kUGFydCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHNlY29uZFBhcnQgaXMgbW9udGggJiYgdGhpcmRQYXJ0IGlzIGRhdGUuXG4gICAgICByZXR1cm4gdGhpcy5nZXREYXlNb2RlbEZyb21EYXRlUGFydHMoZmlyc3RQYXJ0LCBzZWNvbmRQYXJ0LCB0aGlyZFBhcnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYERheU1vZGVsYCBmcm9tIGRhdGUgc3RyaW5nIHBhcnRzLlxuICAgKiBAcGFyYW0geWVhclN0cmluZyAtIFllYXIgc3RyaW5nLlxuICAgKiBAcGFyYW0gbW9udGhTdHJpbmcgLSBNb250aCBzdHJpbmcuXG4gICAqIEBwYXJhbSBkYXRlU3RyaW5nIC0gRGF0ZSBzdHJpbmcuXG4gICAqIEByZXR1cm5zIERheU1vZGVsLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXREYXlNb2RlbEZyb21EYXRlUGFydHMoeWVhclN0cmluZzogc3RyaW5nLCBtb250aFN0cmluZzogc3RyaW5nLCBkYXRlU3RyaW5nOiBzdHJpbmcpOiBOdWxsYWJsZURheU1vZGVsIHtcbiAgICAvLyBDaGVjayBmb3IgdmFsaWQgZGF0ZSBwYXJ0IHN0cmluZ3MuXG4gICAgbGV0IHllYXI6IG51bWJlciA9IHBhcnNlSW50KHllYXJTdHJpbmcpO1xuICAgIGlmIChpc05hTih5ZWFyKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGxldCBtb250aDogbnVtYmVyID0gcGFyc2VJbnQobW9udGhTdHJpbmcpO1xuICAgIGlmIChpc05hTihtb250aCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBkYXRlOiBudW1iZXIgPSBwYXJzZUludChkYXRlU3RyaW5nKTtcbiAgICBpZiAoaXNOYU4oZGF0ZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIENvbnZlcnQgeWVhciB0byA0IGRpZ2l0IHllYXIuXG4gICAgeWVhciA9IHRoaXMucGFyc2VUb0ZvdXJEaWdpdFllYXIoeWVhcik7XG4gICAgaWYgKHllYXIgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gTW9udGggaXMgemVyby1pbmRleGVkLlxuICAgIG1vbnRoIC09IDE7XG5cbiAgICAvLyBDcmVhdGluZyBuZXcgSmF2YXNjcmlwdCBEYXRlIG9iamVjdCwgYmVjYXVzZSBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgdGFrZSBjYXJlIG9mXG4gICAgLy8gc3dpdGNoaW5nIHRvIG5leHQgb3IgcHJldmlvdXMgbW9udGhzICYgeWVhcnMgd2l0aG91dCB3ZSBoYXZpbmcgdG8gd29ycnkgYWJvdXQgaXQuXG4gICAgY29uc3QgcGFyc2VkRGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXRlKTtcbiAgICBpZiAoaXNOYU4ocGFyc2VkRGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERheU1vZGVsKHBhcnNlZERhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRha2VzIGluIGEgeWVhciBhbmQgaWYgaXQgaXMgYSAyIGRpZ2l0IHllYXIsIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgNCBkaWdpdCB5ZWFyLlxuICAgKiBXaW5kb3cgb2YgODAgeWVhcnMgYmVmb3JlIGFuZCAyMCB5ZWFycyBhZnRlciB0aGUgcHJlc2VudCB5ZWFyLlxuICAgKiBDcmVkaXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nbG9iYWxpemVqcy9nbG9iYWxpemUvYmxvYi9lMWIzMWNkNmE0ZjFjZmY3NWIxODViNjhiN2EzMjIyMGFhYzUxOTZmL3NyYy9kYXRlL3BhcnNlLmpzXG4gICAqIEBwYXJhbSB5ZWFyIC0gWWVhci5cbiAgICogQHJldHVybnMgRm91ci1kaWdpdCB5ZWFyLlxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZVRvRm91ckRpZ2l0WWVhcih5ZWFyOiBudW1iZXIpOiBudW1iZXIgfCBudWxsIHtcbiAgICAvLyBJbXBvc3NpYmxlIHllYXJzLlxuICAgIGlmICh5ZWFyID4gOTk5OSB8fCAoeWVhciA+IDEwMCAmJiB5ZWFyIDwgOTk5KSB8fCB5ZWFyIDwgMTApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh5ZWFyID4gOTk5KSB7XG4gICAgICByZXR1cm4geWVhcjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyWWVhcjogbnVtYmVyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IGNlbnR1cnk6IG51bWJlciA9IE1hdGguZmxvb3IoY3VyclllYXIgLyAxMDApICogMTAwO1xuICAgIGxldCByZXN1bHQ6IG51bWJlciA9IHllYXIgKyBjZW50dXJ5O1xuICAgIGlmIChyZXN1bHQgPiBjdXJyWWVhciArIDIwKSB7XG4gICAgICByZXN1bHQgPSByZXN1bHQgLSAxMDA7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==