ngx-tethys 18.1.1 → 18.2.0-next.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 (265) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/alert/styles/mixin.scss +1 -1
  3. package/anchor/style/anchor.scss +4 -2
  4. package/autocomplete/autocomplete.component.d.ts +2 -1
  5. package/avatar/styles/avatar.scss +1 -1
  6. package/back-top/styles/back-top.scss +3 -3
  7. package/button/styles/button-group.scss +9 -9
  8. package/button/styles/button.scss +2 -6
  9. package/button/styles/mixin.scss +6 -53
  10. package/calendar/calendar-header.component.d.ts +2 -0
  11. package/calendar/styles/calendar.scss +3 -11
  12. package/card/styles/card.scss +3 -3
  13. package/carousel/styles/carousel.scss +10 -10
  14. package/cascader/cascader.component.d.ts +1 -0
  15. package/cascader/styles/cascader.scss +3 -2
  16. package/collapse/styles/collapse.scss +4 -2
  17. package/color-picker/color-picker-panel.component.d.ts +3 -1
  18. package/color-picker/styles/alpha.scss +1 -1
  19. package/color-picker/styles/color-picker-panel.scss +1 -1
  20. package/color-picker/styles/hue.scss +1 -1
  21. package/color-picker/styles/saturation.scss +1 -1
  22. package/comment/styles/mixin.scss +1 -1
  23. package/copy/copy.directive.d.ts +1 -0
  24. package/core/index.d.ts +1 -0
  25. package/core/theme/index.d.ts +2 -0
  26. package/core/theme/store.d.ts +12 -0
  27. package/core/theme/theme.d.ts +5 -0
  28. package/date-picker/abstract-picker.component.d.ts +3 -1
  29. package/date-picker/date-helper.service.d.ts +3 -0
  30. package/date-picker/date-picker.config.d.ts +7 -1
  31. package/date-picker/lib/calendar/calendar-footer.component.d.ts +3 -1
  32. package/date-picker/lib/calendar/calendar-header.component.d.ts +3 -1
  33. package/date-picker/lib/calendar/calendar-table.component.d.ts +3 -1
  34. package/date-picker/lib/date-carousel/date-carousel.component.d.ts +4 -1
  35. package/date-picker/lib/popups/date-popup.component.d.ts +3 -1
  36. package/date-picker/lib/popups/inner-popup.component.d.ts +3 -1
  37. package/date-picker/styles/calendar.scss +1 -1
  38. package/date-picker/styles/decade-panel.scss +1 -1
  39. package/date-picker/styles/picker.scss +1 -1
  40. package/date-picker/styles/range-picker.scss +3 -3
  41. package/date-picker/styles/year-panel.scss +2 -2
  42. package/date-range/date-range.component.d.ts +2 -0
  43. package/date-range/optional-dates/optional-dates.component.d.ts +1 -0
  44. package/dialog/confirm/confirm.component.d.ts +1 -0
  45. package/dialog/confirm.config.d.ts +14 -7
  46. package/dialog/styles/dialog.scss +6 -6
  47. package/dropdown/styles/dropdown.scss +3 -3
  48. package/empty/empty.component.d.ts +14 -9
  49. package/empty/empty.config.d.ts +3 -0
  50. package/empty/styles/empty.scss +22 -2
  51. package/esm2022/autocomplete/autocomplete.component.mjs +5 -3
  52. package/esm2022/calendar/calendar-header.component.mjs +9 -5
  53. package/esm2022/carousel/carousel.component.mjs +3 -3
  54. package/esm2022/cascader/cascader.component.mjs +5 -3
  55. package/esm2022/checkbox/checkbox.component.mjs +1 -1
  56. package/esm2022/color-picker/color-picker-panel.component.mjs +5 -3
  57. package/esm2022/copy/copy.directive.mjs +7 -5
  58. package/esm2022/core/index.mjs +2 -1
  59. package/esm2022/core/theme/index.mjs +3 -0
  60. package/esm2022/core/theme/store.mjs +42 -0
  61. package/esm2022/core/theme/theme.mjs +2 -0
  62. package/esm2022/date-picker/abstract-picker.component.mjs +4 -2
  63. package/esm2022/date-picker/base-picker.component.mjs +2 -2
  64. package/esm2022/date-picker/date-helper.service.mjs +4 -2
  65. package/esm2022/date-picker/date-picker.component.mjs +1 -1
  66. package/esm2022/date-picker/date-picker.config.mjs +55 -2
  67. package/esm2022/date-picker/date-picker.directive.mjs +1 -1
  68. package/esm2022/date-picker/date-picker.service.mjs +3 -3
  69. package/esm2022/date-picker/lib/calendar/calendar-footer.component.mjs +5 -3
  70. package/esm2022/date-picker/lib/calendar/calendar-header.component.mjs +3 -1
  71. package/esm2022/date-picker/lib/calendar/calendar-table.component.mjs +3 -1
  72. package/esm2022/date-picker/lib/date/date-header.component.mjs +6 -5
  73. package/esm2022/date-picker/lib/date/date-table.component.mjs +4 -4
  74. package/esm2022/date-picker/lib/date-carousel/date-carousel.component.mjs +9 -4
  75. package/esm2022/date-picker/lib/decade/decade-header.component.mjs +3 -3
  76. package/esm2022/date-picker/lib/month/month-header.component.mjs +4 -4
  77. package/esm2022/date-picker/lib/month/month-table.component.mjs +3 -2
  78. package/esm2022/date-picker/lib/popups/date-popup.component.mjs +5 -3
  79. package/esm2022/date-picker/lib/popups/inner-popup.component.mjs +5 -3
  80. package/esm2022/date-picker/lib/year/year-header.component.mjs +3 -3
  81. package/esm2022/date-picker/month-picker.component.mjs +1 -1
  82. package/esm2022/date-picker/quarter-picker.component.mjs +1 -1
  83. package/esm2022/date-picker/range-picker.component.mjs +1 -1
  84. package/esm2022/date-picker/range-picker.directive.mjs +1 -1
  85. package/esm2022/date-picker/week-picker.component.mjs +1 -1
  86. package/esm2022/date-picker/year-picker.component.mjs +1 -1
  87. package/esm2022/date-range/date-range.component.mjs +7 -4
  88. package/esm2022/date-range/optional-dates/optional-dates.component.mjs +4 -2
  89. package/esm2022/dialog/confirm/confirm.component.mjs +14 -3
  90. package/esm2022/dialog/confirm.config.mjs +17 -2
  91. package/esm2022/empty/empty.component.mjs +7 -2
  92. package/esm2022/empty/empty.config.mjs +4 -1
  93. package/esm2022/empty/svgs.mjs +103 -8
  94. package/esm2022/form/form-validator-loader.mjs +17 -15
  95. package/esm2022/guider/guider-hint/guider-hint.component.mjs +5 -3
  96. package/esm2022/i18n/i18n.mjs +2 -0
  97. package/esm2022/i18n/i18n.service.mjs +39 -0
  98. package/esm2022/i18n/i18n.token.mjs +8 -0
  99. package/esm2022/i18n/index.mjs +7 -0
  100. package/esm2022/i18n/locale.mjs +14 -0
  101. package/esm2022/i18n/locales/en-us.mjs +147 -0
  102. package/esm2022/i18n/locales/zh-cn.mjs +127 -0
  103. package/esm2022/i18n/ngx-tethys-i18n.mjs +5 -0
  104. package/esm2022/notify/notify.component.mjs +3 -3
  105. package/esm2022/pagination/pagination.component.mjs +22 -5
  106. package/esm2022/pagination/pagination.module.mjs +26 -5
  107. package/esm2022/pagination/pagination.pipe.mjs +22 -1
  108. package/esm2022/radio/button/radio-button.component.mjs +1 -1
  109. package/esm2022/radio/radio.component.mjs +1 -1
  110. package/esm2022/result/result.component.mjs +3 -3
  111. package/esm2022/select/custom-select/custom-select.component.mjs +9 -3
  112. package/esm2022/strength/strength.component.mjs +21 -20
  113. package/esm2022/table/table-skeleton.component.mjs +3 -3
  114. package/esm2022/time-picker/time-picker-panel.component.mjs +5 -3
  115. package/esm2022/time-picker/time-picker.component.mjs +4 -2
  116. package/esm2022/transfer/transfer-list.component.mjs +5 -3
  117. package/esm2022/tree-select/tree-select.component.mjs +5 -3
  118. package/esm2022/version.mjs +2 -2
  119. package/esm2022/watermark/config.mjs +2 -2
  120. package/esm2022/watermark/watermark.directive.mjs +18 -10
  121. package/fesm2022/ngx-tethys-autocomplete.mjs +4 -2
  122. package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
  123. package/fesm2022/ngx-tethys-calendar.mjs +8 -5
  124. package/fesm2022/ngx-tethys-calendar.mjs.map +1 -1
  125. package/fesm2022/ngx-tethys-carousel.mjs +2 -2
  126. package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
  127. package/fesm2022/ngx-tethys-cascader.mjs +4 -2
  128. package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
  129. package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
  130. package/fesm2022/ngx-tethys-color-picker.mjs +4 -2
  131. package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
  132. package/fesm2022/ngx-tethys-copy.mjs +6 -4
  133. package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
  134. package/fesm2022/ngx-tethys-core.mjs +42 -2
  135. package/fesm2022/ngx-tethys-core.mjs.map +1 -1
  136. package/fesm2022/ngx-tethys-date-picker.mjs +95 -30
  137. package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
  138. package/fesm2022/ngx-tethys-date-range.mjs +8 -4
  139. package/fesm2022/ngx-tethys-date-range.mjs.map +1 -1
  140. package/fesm2022/ngx-tethys-dialog.mjs +27 -2
  141. package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
  142. package/fesm2022/ngx-tethys-empty.mjs +111 -8
  143. package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
  144. package/fesm2022/ngx-tethys-form.mjs +16 -14
  145. package/fesm2022/ngx-tethys-form.mjs.map +1 -1
  146. package/fesm2022/ngx-tethys-guider.mjs +4 -2
  147. package/fesm2022/ngx-tethys-guider.mjs.map +1 -1
  148. package/fesm2022/ngx-tethys-i18n.mjs +338 -0
  149. package/fesm2022/ngx-tethys-i18n.mjs.map +1 -0
  150. package/fesm2022/ngx-tethys-notify.mjs +2 -2
  151. package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
  152. package/fesm2022/ngx-tethys-pagination.mjs +66 -7
  153. package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
  154. package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
  155. package/fesm2022/ngx-tethys-result.mjs +2 -2
  156. package/fesm2022/ngx-tethys-result.mjs.map +1 -1
  157. package/fesm2022/ngx-tethys-select.mjs +8 -2
  158. package/fesm2022/ngx-tethys-select.mjs.map +1 -1
  159. package/fesm2022/ngx-tethys-strength.mjs +20 -19
  160. package/fesm2022/ngx-tethys-strength.mjs.map +1 -1
  161. package/fesm2022/ngx-tethys-table.mjs +2 -2
  162. package/fesm2022/ngx-tethys-table.mjs.map +1 -1
  163. package/fesm2022/ngx-tethys-time-picker.mjs +6 -3
  164. package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
  165. package/fesm2022/ngx-tethys-transfer.mjs +4 -2
  166. package/fesm2022/ngx-tethys-transfer.mjs.map +1 -1
  167. package/fesm2022/ngx-tethys-tree-select.mjs +4 -2
  168. package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
  169. package/fesm2022/ngx-tethys-watermark.mjs +18 -10
  170. package/fesm2022/ngx-tethys-watermark.mjs.map +1 -1
  171. package/fesm2022/ngx-tethys.mjs +1 -1
  172. package/fesm2022/ngx-tethys.mjs.map +1 -1
  173. package/form/form-validator-loader.d.ts +2 -0
  174. package/form/styles/form-check.scss +1 -1
  175. package/form/styles/forms.scss +2 -3
  176. package/form/styles/mixin.scss +6 -5
  177. package/guider/guider-hint/guider-hint.component.d.ts +3 -1
  178. package/guider/styles/guider-tip.scss +2 -1
  179. package/i18n/i18n.d.ts +143 -0
  180. package/i18n/i18n.service.d.ts +19 -0
  181. package/i18n/i18n.token.d.ts +5 -0
  182. package/i18n/index.d.ts +6 -0
  183. package/i18n/locale.d.ts +4 -0
  184. package/i18n/locales/en-us.d.ts +147 -0
  185. package/i18n/locales/zh-cn.d.ts +126 -0
  186. package/icon/examples/all/all.component.scss +3 -1
  187. package/image/styles/image.scss +15 -11
  188. package/input/styles/input-group.scss +1 -1
  189. package/input/styles/input.scss +2 -2
  190. package/layout/examples/sidebar/sidebar.component.scss +1 -1
  191. package/layout/styles/layout.scss +3 -3
  192. package/menu/examples/theme/theme.component.scss +0 -8
  193. package/menu/styles/theme.scss +4 -4
  194. package/message/styles/message.scss +1 -1
  195. package/nav/examples/basic/basic.component.scss +1 -1
  196. package/nav/examples/extra/extra.component.scss +1 -1
  197. package/nav/examples/fill/fill.component.scss +1 -1
  198. package/nav/examples/lite/lite.component.scss +1 -1
  199. package/nav/examples/pills/pills.component.scss +1 -1
  200. package/nav/examples/responsive/responsive.component.scss +1 -1
  201. package/nav/examples/size/size.component.scss +1 -1
  202. package/nav/examples/tabs/tabs.component.scss +1 -1
  203. package/nav/examples/type/type.component.scss +1 -1
  204. package/nav/examples/vertical/vertical.component.scss +1 -1
  205. package/notify/styles/notify.scss +4 -4
  206. package/package.json +7 -1
  207. package/pagination/pagination.component.d.ts +4 -1
  208. package/pagination/pagination.module.d.ts +1 -1
  209. package/pagination/pagination.pipe.d.ts +6 -0
  210. package/pagination/styles/pagination.scss +2 -2
  211. package/popover/styles.scss +3 -3
  212. package/property/styles/properties.scss +1 -1
  213. package/radio/radio.component.d.ts +0 -2
  214. package/resizable/examples/line/line.component.scss +3 -1
  215. package/resizable/examples/style.scss +7 -5
  216. package/result/styles/result.scss +25 -1
  217. package/schematics/version.d.ts +1 -1
  218. package/schematics/version.js +1 -1
  219. package/segment/styles/mixin.scss +2 -3
  220. package/segment/styles/segment.scss +1 -1
  221. package/select/custom-select/custom-select.component.d.ts +1 -0
  222. package/select/styles/select.scss +1 -1
  223. package/shared/option/styles/option.mixin.scss +1 -1
  224. package/shared/select/styles/select.mixin.scss +2 -2
  225. package/slide/examples/drawer-container/drawer-container.component.scss +1 -1
  226. package/slide/examples/layout/layout.component.scss +4 -2
  227. package/slide/styles/slide.scss +3 -2
  228. package/slider/slider.scss +2 -2
  229. package/stepper/examples/basic/basic.component.scss +3 -1
  230. package/stepper/examples/icon/icon.component.scss +3 -1
  231. package/stepper/styles/stepper.scss +7 -3
  232. package/strength/strength.component.d.ts +21 -2
  233. package/styles/bootstrap/_variables.scss +14 -876
  234. package/styles/bootstrap/utilities/_background.scss +27 -5
  235. package/styles/bootstrap/utilities/_text.scss +29 -31
  236. package/styles/index.scss +2 -1
  237. package/styles/mixins/background-variant.scss +2 -10
  238. package/styles/mixins/utilities.scss +2 -11
  239. package/styles/modules/cdk/drag-drop.scss +6 -8
  240. package/styles/modules/close.scss +1 -1
  241. package/styles/modules/reboot.scss +1 -1
  242. package/styles/modules/tables.scss +1 -1
  243. package/styles/modules/utils.scss +0 -17
  244. package/styles/theme/dark.scss +70 -0
  245. package/styles/theme/default.scss +70 -0
  246. package/styles/theme/index.scss +2 -0
  247. package/styles/variables.scss +114 -76
  248. package/switch/styles/mixin.scss +0 -13
  249. package/table/styles/table.scss +7 -19
  250. package/tabs/styles/tabs.scss +1 -1
  251. package/tag/styles/mixin.scss +7 -42
  252. package/tag/styles/tag.scss +2 -2
  253. package/time-picker/styles/time-panel.scss +1 -1
  254. package/time-picker/time-picker-panel.component.d.ts +3 -1
  255. package/time-picker/time-picker.component.d.ts +3 -1
  256. package/timeline/styles/timeline.scss +2 -2
  257. package/tooltip/styles.scss +4 -4
  258. package/transfer/styles/transfer.scss +2 -2
  259. package/transfer/transfer-list.component.d.ts +3 -1
  260. package/tree/styles/tree.scss +3 -5
  261. package/tree-select/tree-select.component.d.ts +1 -0
  262. package/watermark/config.d.ts +1 -1
  263. package/watermark/watermark.directive.d.ts +23 -2
  264. package/carousel/styles/index.scss +0 -1
  265. package/carousel/styles/variables.scss +0 -5
@@ -1,5 +1,6 @@
1
- import { EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';
1
+ import { EventEmitter, OnInit, OnChanges, SimpleChanges, Signal } from '@angular/core';
2
2
  import { TinyDate } from 'ngx-tethys/util';
3
+ import { ThyDatePickerLocale } from 'ngx-tethys/i18n';
3
4
  import * as i0 from "@angular/core";
4
5
  /**
5
6
  * @private
@@ -15,6 +16,7 @@ export declare class CalendarFooter implements OnInit, OnChanges {
15
16
  readonly showTimePickerChange: EventEmitter<boolean>;
16
17
  isShowTime: boolean;
17
18
  isCanTime: boolean;
19
+ locale: Signal<ThyDatePickerLocale>;
18
20
  ngOnInit(): void;
19
21
  ngOnChanges(changes: SimpleChanges): void;
20
22
  onSelectTime(date: Date): void;
@@ -1,7 +1,8 @@
1
- import { EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core';
1
+ import { EventEmitter, OnChanges, OnInit, Signal, SimpleChanges } from '@angular/core';
2
2
  import { ThyPanelMode } from '../../standard-types';
3
3
  import { TinyDate } from 'ngx-tethys/util';
4
4
  import { DateHelperService } from '../../date-helper.service';
5
+ import { ThyDatePickerLocale } from 'ngx-tethys/i18n';
5
6
  import * as i0 from "@angular/core";
6
7
  export interface PanelSelector {
7
8
  className: string;
@@ -14,6 +15,7 @@ export interface PanelSelector {
14
15
  */
15
16
  export declare abstract class CalendarHeader implements OnInit, OnChanges {
16
17
  dateHelper: DateHelperService;
18
+ locale: Signal<ThyDatePickerLocale>;
17
19
  showSuperPreBtn: boolean;
18
20
  showSuperNextBtn: boolean;
19
21
  showPreBtn: boolean;
@@ -1,12 +1,14 @@
1
- import { EventEmitter, OnChanges, OnInit, SimpleChanges, TemplateRef } from '@angular/core';
1
+ import { EventEmitter, OnChanges, OnInit, Signal, SimpleChanges, TemplateRef } from '@angular/core';
2
2
  import { SafeAny } from 'ngx-tethys/types';
3
3
  import { FunctionProp, isTemplateRef, TinyDate } from 'ngx-tethys/util';
4
4
  import { DateCell, DateBodyRow } from '../date/types';
5
+ import { ThyDatePickerLocale } from 'ngx-tethys/i18n';
5
6
  import * as i0 from "@angular/core";
6
7
  /**
7
8
  * @private
8
9
  */
9
10
  export declare abstract class CalendarTable implements OnInit, OnChanges {
11
+ locale: Signal<ThyDatePickerLocale>;
10
12
  isTemplateRef: typeof isTemplateRef;
11
13
  headRow: DateCell[];
12
14
  bodyRows: DateBodyRow[];
@@ -1,14 +1,17 @@
1
- import { OnDestroy, OnInit } from '@angular/core';
1
+ import { OnDestroy, OnInit, Signal } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
3
  import { TinyDate } from 'ngx-tethys/util';
4
4
  import { AdvancedSelectableCell, RangeAdvancedValue } from '../../inner-types';
5
5
  import { ThyDateGranularity } from '../../standard-types';
6
+ import { ThyDatePickerLocale } from 'ngx-tethys/i18n';
6
7
  import * as i0 from "@angular/core";
7
8
  /**
8
9
  * @private
9
10
  */
10
11
  export declare class DateCarousel implements OnInit, ControlValueAccessor, OnDestroy {
11
12
  private cdr;
13
+ private dateHelper;
14
+ locale: Signal<ThyDatePickerLocale>;
12
15
  className: string;
13
16
  activeDate: TinyDate;
14
17
  set defaultValue(value: RangeAdvancedValue);
@@ -1,7 +1,8 @@
1
1
  import { FunctionProp, TinyDate } from 'ngx-tethys/util';
2
- import { EventEmitter, OnChanges, OnInit, SimpleChanges, TemplateRef } from '@angular/core';
2
+ import { EventEmitter, OnChanges, OnInit, SimpleChanges, TemplateRef, Signal } from '@angular/core';
3
3
  import { CompatibleValue, DatePickerFlexibleTab, RangeAdvancedValue, RangePartType } from '../../inner-types';
4
4
  import { CompatibleDate, CompatiblePresets, DisabledDateFn, SupportTimeOptions, ThyDateChangeEvent, ThyDateGranularity, ThyPanelMode, ThyShortcutPosition, ThyShortcutPreset } from '../../standard-types';
5
+ import { ThyDatePickerLocale } from 'ngx-tethys/i18n';
5
6
  import * as i0 from "@angular/core";
6
7
  /**
7
8
  * @private
@@ -9,6 +10,7 @@ import * as i0 from "@angular/core";
9
10
  export declare class DatePopup implements OnChanges, OnInit {
10
11
  private cdr;
11
12
  private datePickerConfigService;
13
+ locale: Signal<ThyDatePickerLocale>;
12
14
  isRange: boolean;
13
15
  showWeek: boolean;
14
16
  format: string;
@@ -1,13 +1,15 @@
1
- import { EventEmitter, OnChanges, SimpleChanges, TemplateRef } from '@angular/core';
1
+ import { EventEmitter, OnChanges, Signal, SimpleChanges, TemplateRef } from '@angular/core';
2
2
  import { FunctionProp, TinyDate } from 'ngx-tethys/util';
3
3
  import { RangePartType } from '../../inner-types';
4
4
  import { DisabledDateFn, ThyPanelMode } from '../../standard-types';
5
+ import { ThyDatePickerLocale } from 'ngx-tethys/i18n';
5
6
  import * as i0 from "@angular/core";
6
7
  /**
7
8
  * @private
8
9
  */
9
10
  export declare class InnerPopup implements OnChanges {
10
11
  private dateHelper;
12
+ locale: Signal<ThyDatePickerLocale>;
11
13
  className: boolean;
12
14
  _showDateRangeInput: boolean;
13
15
  showWeek: boolean;
@@ -9,7 +9,7 @@
9
9
  line-height: variables.$line-height-base;
10
10
  text-align: left;
11
11
  list-style: none;
12
- background-color: variables.$white;
12
+ background-color: variables.$bg-panel;
13
13
  background-clip: padding-box;
14
14
  border: style.$border-width-base style.$border-style-base variables.$border-color;
15
15
  border-radius: variables.$border-radius-lg;
@@ -11,7 +11,7 @@
11
11
  z-index: style.$zindex-picker-panel;
12
12
  display: flex;
13
13
  flex-direction: column;
14
- background: variables.$white;
14
+ background: variables.$bg-default;
15
15
  border-radius: variables.$border-radius-lg;
16
16
  outline: none;
17
17
  }
@@ -182,5 +182,5 @@
182
182
  }
183
183
 
184
184
  .thy-popover-container .#{style.$calendar-prefix-cls} {
185
- box-shadow: none;
185
+ box-shadow: variables.$box-shadow-none;
186
186
  }
@@ -120,10 +120,10 @@ $input-box-height: 34px;
120
120
  padding-left: 0;
121
121
  line-height: bootstrap-variables.$input-height-sm;
122
122
  border: 0;
123
- box-shadow: none;
123
+ box-shadow: variables.$box-shadow-none;
124
124
 
125
125
  &:focus {
126
- box-shadow: none;
126
+ box-shadow: variables.$box-shadow-none;
127
127
  }
128
128
  }
129
129
 
@@ -213,7 +213,7 @@ $input-box-height: 34px;
213
213
  &-combobox {
214
214
  display: inline-block;
215
215
  height: 100%;
216
- background-color: variables.$white;
216
+ background-color: variables.$bg-default;
217
217
  border-top: style.$border-width-base style.$border-style-base style.$border-color-split;
218
218
  }
219
219
  &-select {
@@ -9,12 +9,12 @@
9
9
  bottom: 0;
10
10
  left: 0;
11
11
  z-index: style.$zindex-picker-panel;
12
- background: variables.$white;
12
+ background: variables.$bg-default;
13
13
  border-radius: variables.$border-radius-lg;
14
14
  outline: none;
15
15
  display: flex;
16
16
  flex-direction: column;
17
- background: variables.$white;
17
+ background: variables.$bg-default;
18
18
  }
19
19
 
20
20
  .#{style.$calendar-prefix-cls}-year-panel-hidden {
@@ -10,6 +10,7 @@ import * as i0 from "@angular/core";
10
10
  export declare class ThyDateRange implements OnInit, ControlValueAccessor {
11
11
  private thyPopover;
12
12
  private cdr;
13
+ private locale;
13
14
  /**
14
15
  * 自定义可选值列表项
15
16
  * @type DateRangeItemInfo[]
@@ -27,6 +28,7 @@ export declare class ThyDateRange implements OnInit, ControlValueAccessor {
27
28
  thyDisabledSwitch: boolean;
28
29
  /**
29
30
  * 自定义日期选择的展示文字
31
+ * @default 自定义
30
32
  */
31
33
  thyCustomTextValue: string;
32
34
  /**
@@ -6,6 +6,7 @@ import * as i0 from "@angular/core";
6
6
  */
7
7
  export declare class OptionalDateRanges implements OnInit {
8
8
  private thyPopover;
9
+ private locale;
9
10
  hiddenMenu: boolean;
10
11
  optionalDateRanges: DateRangeItemInfo[];
11
12
  customValue: string;
@@ -9,6 +9,7 @@ export declare class ThyConfirm implements OnInit, OnDestroy {
9
9
  private dialogRef;
10
10
  private changeDetectorRef;
11
11
  private defaultConfig;
12
+ private locale;
12
13
  loading: boolean;
13
14
  options: ThyConfirmConfig;
14
15
  title: string;
@@ -1,5 +1,6 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  import { ThyFormGroupFooterAlign } from 'ngx-tethys/form';
3
+ import { ThyI18nService } from 'ngx-tethys/i18n';
3
4
  import { Observable } from 'rxjs';
4
5
  /**
5
6
  * 确认框配置
@@ -45,6 +46,9 @@ export interface ThyConfirmConfig {
45
46
  onCancel?: () => void;
46
47
  }
47
48
  export declare const THY_CONFIRM_DEFAULT_OPTIONS: InjectionToken<ThyConfirmConfig>;
49
+ /**
50
+ * @deprecated
51
+ */
48
52
  export declare const THY_CONFIRM_DEFAULT_OPTIONS_VALUE: {
49
53
  title: string;
50
54
  okText: string;
@@ -52,13 +56,16 @@ export declare const THY_CONFIRM_DEFAULT_OPTIONS_VALUE: {
52
56
  cancelText: string;
53
57
  footerAlign: string;
54
58
  };
59
+ declare function useConfirmDefaultOptions(): {
60
+ title: string;
61
+ okText: string;
62
+ okType: string;
63
+ cancelText: string;
64
+ footerAlign: string;
65
+ };
55
66
  export declare const THY_CONFIRM_DEFAULT_OPTIONS_PROVIDER: {
56
67
  provide: InjectionToken<ThyConfirmConfig>;
57
- useValue: {
58
- title: string;
59
- okText: string;
60
- okType: string;
61
- cancelText: string;
62
- footerAlign: string;
63
- };
68
+ useFactory: typeof useConfirmDefaultOptions;
69
+ deps: (typeof ThyI18nService)[];
64
70
  };
71
+ export {};
@@ -1,8 +1,8 @@
1
- @use "../../styles/bootstrap/mixins/border-radius";
2
- @use "../../styles/bootstrap/mixins/breakpoints";
3
- @use "../../styles/bootstrap/mixins/text-truncate";
4
- @use "../../styles/variables";
5
- @use "../../styles/modules/utils.scss";
1
+ @use '../../styles/bootstrap/mixins/border-radius';
2
+ @use '../../styles/bootstrap/mixins/breakpoints';
3
+ @use '../../styles/bootstrap/mixins/text-truncate';
4
+ @use '../../styles/variables';
5
+ @use '../../styles/modules/utils.scss';
6
6
 
7
7
  .thy-dialog-content-sidebar-header {
8
8
  min-height: variables.$dialog-header-height;
@@ -26,7 +26,7 @@
26
26
  // isn't set, we have to inherit the min and max values explicitly.
27
27
  min-height: inherit;
28
28
  max-height: inherit;
29
- background: variables.$white;
29
+ background: variables.$bg-default;
30
30
  box-shadow: variables.$dialog-box-shadow;
31
31
 
32
32
  .thy-layout {
@@ -6,7 +6,7 @@
6
6
  padding: variables.$dropdown-menu-padding-y 0;
7
7
  display: block;
8
8
  width: 100%;
9
- background: variables.$dropdown-menu-bg;
9
+ background: variables.$bg-panel;
10
10
  border-radius: variables.$border-radius;
11
11
 
12
12
  .dropdown-menu-group {
@@ -96,7 +96,7 @@
96
96
  z-index: 1;
97
97
  padding: 8px 0;
98
98
  width: 100%;
99
- background: variables.$dropdown-menu-bg;
99
+ background: variables.$bg-panel;
100
100
  border-radius: variables.$border-radius;
101
101
  @include shadow.section-box-shadow();
102
102
  }
@@ -199,7 +199,7 @@
199
199
  margin-left: -15px;
200
200
  padding-right: 10px;
201
201
  color: variables.$dropdown-menu-divider-title-color;
202
- background: variables.$white;
202
+ background: variables.$bg-default;
203
203
  transform: translateY(-50%);
204
204
  }
205
205
  }
@@ -16,24 +16,30 @@ export declare class ThyEmpty implements OnInit, AfterViewInit, OnChanges {
16
16
  private elementRef;
17
17
  private ngZone;
18
18
  private sanitizer;
19
+ private locale;
19
20
  /**
20
21
  * 显示文本提示信息。同时传入 thyMessage,thyTranslationKey,thyEntityName,thyEntityNameTranslateKey 时优先级最高
22
+ * @default 暂无数据
21
23
  */
22
24
  thyMessage: string;
23
25
  /**
24
- * 显示文本提示信息多语言 Key。同时传入 thyTranslationKey,thyEntityName,thyEntityNameTranslateKey 时优先级最高
26
+ * 已废弃。显示文本提示信息多语言 Key。同时传入 thyTranslationKey,thyEntityName,thyEntityNameTranslateKey 时优先级最高
27
+ * @deprecated
25
28
  */
26
29
  thyTranslationKey: string;
27
30
  /**
28
- * 显示文本提示信息多语言 Key 的 Values。传入 thyTranslationKey 后,传入这个才会生效
31
+ * 已废弃。显示文本提示信息多语言 Key 的 Values。传入 thyTranslationKey 后,传入这个才会生效
32
+ * @deprecated
29
33
  */
30
34
  thyTranslationValues: any;
31
35
  /**
32
- * 显示默认提示信息,替换默认提示信息的目标对象,比如:没有 {thyEntityName}。同时传入 thyEntityName,thyEntityNameTranslateKey 时优先级较高
36
+ * 已废弃。显示默认提示信息,替换默认提示信息的目标对象,比如:没有 {thyEntityName}。同时传入 thyEntityName,thyEntityNameTranslateKey 时优先级较高
37
+ * @deprecated
33
38
  */
34
39
  thyEntityName: string;
35
40
  /**
36
- * thyEntityName 的多语言 Key。thyMessage,thyTranslationKey,thyEntityName 均未传入时才会生效
41
+ * 已废弃。thyEntityName 的多语言 Key。thyMessage,thyTranslationKey,thyEntityName 均未传入时才会生效
42
+ * @deprecated
37
43
  */
38
44
  thyEntityNameTranslateKey: string;
39
45
  /**
@@ -87,9 +93,8 @@ export declare class ThyEmpty implements OnInit, AfterViewInit, OnChanges {
87
93
  setPresetSvg(icon: string): void;
88
94
  static ɵfac: i0.ɵɵFactoryDeclaration<ThyEmpty, never>;
89
95
  static ɵcmp: i0.ɵɵComponentDeclaration<ThyEmpty, "thy-empty", never, { "thyMessage": { "alias": "thyMessage"; "required": false; }; "thyTranslationKey": { "alias": "thyTranslationKey"; "required": false; }; "thyTranslationValues": { "alias": "thyTranslationValues"; "required": false; }; "thyEntityName": { "alias": "thyEntityName"; "required": false; }; "thyEntityNameTranslateKey": { "alias": "thyEntityNameTranslateKey"; "required": false; }; "thyIconName": { "alias": "thyIconName"; "required": false; }; "thySize": { "alias": "thySize"; "required": false; }; "thyMarginTop": { "alias": "thyMarginTop"; "required": false; }; "thyTopAuto": { "alias": "thyTopAuto"; "required": false; }; "thyContainer": { "alias": "thyContainer"; "required": false; }; "thyImageUrl": { "alias": "thyImageUrl"; "required": false; }; "thyImageLoading": { "alias": "thyImageLoading"; "required": false; }; "thyImageFetchPriority": { "alias": "thyImageFetchPriority"; "required": false; }; "thyDescription": { "alias": "thyDescription"; "required": false; }; }, {}, ["extraTemplateRef"], never, true, never>;
90
- static ngAcceptInputType_thyTopAuto:
91
- /**
92
- * 显示文本提示信息多语言 Key。同时传入 thyTranslationKey,thyEntityName,thyEntityNameTranslateKey 时优先级最高
93
- */
94
- boolean | string | number;
96
+ static ngAcceptInputType_thyTopAuto: /**
97
+ * 显示文本提示信息。同时传入 thyMessage,thyTranslationKey,thyEntityName,thyEntityNameTranslateKey 时优先级最高
98
+ * @default 暂无数据
99
+ */ boolean | string | number;
95
100
  }
@@ -1,4 +1,7 @@
1
1
  import * as i0 from "@angular/core";
2
+ /**
3
+ * @deprecated
4
+ */
2
5
  export declare class ThyEmptyConfig {
3
6
  noResultTranslateKey: string;
4
7
  noResultWithTargetTranslateKey: string;
@@ -1,5 +1,5 @@
1
- @use "../../styles/variables";
2
- @use "mixin";
1
+ @use '../../styles/variables';
2
+ @use 'mixin';
3
3
 
4
4
  .thy-empty-state {
5
5
  display: block;
@@ -48,3 +48,23 @@
48
48
  );
49
49
  }
50
50
  }
51
+
52
+ .thy-empty-svg-default,
53
+ .thy-empty-svg-light-default {
54
+ display: inline-block;
55
+ }
56
+ .thy-empty-svg-dark,
57
+ .thy-empty-svg-light-dark {
58
+ display: none;
59
+ }
60
+
61
+ :root[theme='dark'] {
62
+ .thy-empty-svg-default,
63
+ .thy-empty-svg-light-default {
64
+ display: none;
65
+ }
66
+ .thy-empty-svg-dark,
67
+ .thy-empty-svg-light-dark {
68
+ display: inline-block;
69
+ }
70
+ }
@@ -7,6 +7,7 @@ import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
7
7
  import { ThyEmpty } from 'ngx-tethys/empty';
8
8
  import { NgClass } from '@angular/common';
9
9
  import { coerceBooleanProperty } from 'ngx-tethys/util';
10
+ import { injectLocale } from 'ngx-tethys/i18n';
10
11
  import * as i0 from "@angular/core";
11
12
  /**
12
13
  * 自动完成组件
@@ -17,6 +18,7 @@ export class ThyAutocomplete {
17
18
  this.ngZone = inject(NgZone);
18
19
  this.changeDetectorRef = inject(ChangeDetectorRef);
19
20
  this.ngUnsubscribe$ = new Subject();
21
+ this.locale = injectLocale('autocomplete');
20
22
  this.isMultiple = false;
21
23
  this.mode = '';
22
24
  this.isEmptyOptions = false;
@@ -29,9 +31,9 @@ export class ThyAutocomplete {
29
31
  });
30
32
  /**
31
33
  * 空选项时的文本
32
- * @type string
34
+ * @default 没有任何数据
33
35
  */
34
- this.thyEmptyText = '没有任何数据';
36
+ this.thyEmptyText = this.locale().empty;
35
37
  /**
36
38
  * 被选中时调用,参数包含选中项的 value 值
37
39
  * @type EventEmitter<ThyOptionSelectionChangeEvent>
@@ -175,4 +177,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
175
177
  }], thyOptionActivated: [{
176
178
  type: Output
177
179
  }] } });
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsZUFBZSxFQUNmLFNBQVMsRUFFVCxNQUFNLEVBQ04sWUFBWSxFQUNaLE1BQU0sRUFHTixpQkFBaUIsRUFDakIsS0FBSyxFQUNMLFVBQVUsRUFDVixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFDSCwyQkFBMkIsRUFFM0IsU0FBUyxFQUNULDZCQUE2QixFQUM3QiwyQkFBMkIsRUFDOUIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQVd4RDs7O0dBR0c7QUFjSCxNQUFNLE9BQU8sZUFBZTtJQWI1QjtRQWNZLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFD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QURYLEtBQUs7Z0JBUXVDLHdCQUF3QjtzQkFBcEUsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFNakMsaUJBQWlCO3NCQUExQixNQUFNO2dCQU1ZLFNBQVM7c0JBQTNCLE1BQU07Z0JBTVksU0FBUztzQkFBM0IsTUFBTTtnQkFPWSxrQkFBa0I7c0JBQXBDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgSW5wdXQsXG4gICAgRWxlbWVudFJlZixcbiAgICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWZlciwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHtcbiAgICBUSFlfT1BUSU9OX1BBUkVOVF9DT01QT05FTlQsXG4gICAgSVRoeU9wdGlvblBhcmVudENvbXBvbmVudCxcbiAgICBUaHlPcHRpb24sXG4gICAgVGh5T3B0aW9uU2VsZWN0aW9uQ2hhbmdlRXZlbnQsXG4gICAgVGh5U3RvcFByb3BhZ2F0aW9uRGlyZWN0aXZlXG59IGZyb20gJ25neC10ZXRoeXMvc2hhcmVkJztcbmltcG9ydCB7IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgVGh5RW1wdHkgfSBmcm9tICduZ3gtdGV0aHlzL2VtcHR5JztcbmltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcblxuLyoqIEV2ZW50IG9iamVjdCB0aGF0IGlzIGVtaXR0ZWQgd2hlbiBhbiBhdXRvY29tcGxldGUgb3B0aW9uIGlzIGFjdGl2YXRlZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGh5QXV0b2NvbXBsZXRlQWN0aXZhdGVkRXZlbnQge1xuICAgIC8qKiBSZWZlcmVuY2UgdG8gdGhlIGF1dG9jb21wbGV0ZSBwYW5lbCB0aGF0IGVtaXR0ZWQgdGhlIGV2ZW50LiAqL1xuICAgIHNvdXJjZTogVGh5QXV0b2NvbXBsZXRlO1xuXG4gICAgLyoqIE9wdGlvbiB0aGF0IHdhcyBzZWxlY3RlZC4gKi9cbiAgICBvcHRpb246IFRoeU9wdGlvbiB8IG51bGw7XG59XG5cbi8qKlxuICog6Ieq5Yqo5a6M5oiQ57uE5Lu2XG4gKiBAbmFtZSB0aHktYXV0b2NvbXBsZXRlXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LWF1dG9jb21wbGV0ZScsXG4gICAgdGVtcGxhdGVVcmw6ICdhdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBUSFlfT1BUSU9OX1BBUkVOVF9DT01QT05FTlQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogVGh5QXV0b2NvbXBsZXRlXG4gICAgICAgIH1cbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1RoeVN0b3BQcm9wYWdhdGlvbkRpcmVjdGl2ZSwgTmdDbGFzcywgVGh5RW1wdHldXG59KVxuZXhwb3J0IGNsYXNzIFRoeUF1dG9jb21wbGV0ZSBpbXBsZW1lbnRzIElUaHlPcHRpb25QYXJlbnRDb21wb25lbnQsIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBkcm9wRG93bkNsYXNzOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfTtcblxuICAgIGlzTXVsdGlwbGUgPSBmYWxzZTtcblxuICAgIG1vZGUgPSAnJztcblxuICAgIGlzRW1wdHlPcHRpb25zID0gZmFsc2U7XG5cbiAgICBzZWxlY3Rpb25Nb2RlbDogU2VsZWN0aW9uTW9kZWw8VGh5T3B0aW9uPjtcblxuICAgIGlzT3BlbmVkID0gZmFsc2U7XG5cbiAgICAvKiogTWFuYWdlcyBhY3RpdmUgaXRlbSBpbiBvcHRpb24gbGlzdCBiYXNlZCBvbiBrZXkgZXZlbnRzLiAqL1xuICAgIGtleU1hbmFnZXI6IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPFRoeU9wdGlvbj47XG5cbiAgICBAVmlld0NoaWxkKCdjb250ZW50VGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIGNvbnRlbnRUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8vIHNjcm9sbCBlbGVtZW50IGNvbnRhaW5lclxuICAgIEBWaWV3Q2hpbGQoJ3BhbmVsJylcbiAgICBvcHRpb25zQ29udGFpbmVyOiBFbGVtZW50UmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oVGh5T3B0aW9uLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIG9wdGlvbnM6IFF1ZXJ5TGlzdDxUaHlPcHRpb24+O1xuXG4gICAgcmVhZG9ubHkgb3B0aW9uU2VsZWN0aW9uQ2hhbmdlczogT2JzZXJ2YWJsZTxUaHlPcHRpb25TZWxlY3Rpb25DaGFuZ2VFdmVudD4gPSBkZWZlcigoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiBtZXJnZSguLi50aGlzLm9wdGlvbnMubWFwKG9wdGlvbiA9PiBvcHRpb24uc2VsZWN0aW9uQ2hhbmdlKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubmdab25lLm9uU3RhYmxlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMub3B0aW9uU2VsZWN0aW9uQ2hhbmdlcylcbiAgICAgICAgKTtcbiAgICB9KSBhcyBPYnNlcnZhYmxlPFRoeU9wdGlvblNlbGVjdGlvbkNoYW5nZUV2ZW50PjtcblxuICAgIC8qKlxuICAgICAqIOepuumAiemhueaXtueahOaWh+acrFxuICAgICAqIEB0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGh5RW1wdHlUZXh0ID0gJ+ayoeacieS7u+S9leaVsOaNric7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbpu5jorqTpq5jkuq7nrKzkuIDkuKrpgInpoblcbiAgICAgKiBAdHlwZSBib29sZWFuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlBdXRvQWN0aXZlRmlyc3RPcHRpb246IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiDooqvpgInkuK3ml7bosIPnlKjvvIzlj4LmlbDljIXlkKvpgInkuK3pobnnmoQgdmFsdWUg5YC8XG4gICAgICogQHR5cGUgRXZlbnRFbWl0dGVyPFRoeU9wdGlvblNlbGVjdGlvbkNoYW5nZUV2ZW50PlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlPcHRpb25TZWxlY3RlZDogRXZlbnRFbWl0dGVyPFRoeU9wdGlvblNlbGVjdGlvbkNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5T3B0aW9uU2VsZWN0aW9uQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDlj6ror7vvvIzlsZXlvIDkuIvmi4noj5zljZXnmoTlm57osINcbiAgICAgKiBAdHlwZSBFdmVudEVtaXR0ZXI8dm9pZD5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgdGh5T3BlbmVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDlj6ror7vvvIzlhbPpl63kuIvmi4noj5zljZXnmoTlm57osINcbiAgICAgKiBAdHlwZSBFdmVudEVtaXR0ZXI8dm9pZD5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgdGh5Q2xvc2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbmV2ZXIgYW4gb3B0aW9uIGlzIGFjdGl2YXRlZCB1c2luZyB0aGUga2V5Ym9hcmQuICovXG4gICAgLyoqXG4gICAgICog5Y+q6K+777yMb3B0aW9uIOa/gOa0u+eKtuaAgeWPmOWMluaXtu+8jOiwg+eUqOatpOWHveaVsFxuICAgICAqIEB0eXBlIEV2ZW50RW1pdHRlcjxUaHlBdXRvY29tcGxldGVBY3RpdmF0ZWRFdmVudD5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgdGh5T3B0aW9uQWN0aXZhdGVkOiBFdmVudEVtaXR0ZXI8VGh5QXV0b2NvbXBsZXRlQWN0aXZhdGVkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUaHlBdXRvY29tcGxldGVBY3RpdmF0ZWRFdmVudD4oKTtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnNldERyb3BEb3duQ2xhc3MoKTtcbiAgICAgICAgdGhpcy5pbnN0YW5jZVNlbGVjdGlvbk1vZGVsKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChudWxsKSwgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZXNldE9wdGlvbnMoKTtcbiAgICAgICAgICAgIHRpbWVyKDApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0VtcHR5T3B0aW9ucyA9IHRoaXMub3B0aW9ucy5sZW5ndGggPD0gMDtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5pbml0S2V5TWFuYWdlcigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbml0S2V5TWFuYWdlcigpIHtcbiAgICAgICAgY29uc3QgY2hhbmdlZE9yRGVzdHJveWVkJCA9IG1lcmdlKHRoaXMub3B0aW9ucy5jaGFuZ2VzLCB0aGlzLm5nVW5zdWJzY3JpYmUkKTtcbiAgICAgICAgdGhpcy5rZXlNYW5hZ2VyID0gbmV3IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPFRoeU9wdGlvbj4odGhpcy5vcHRpb25zKS53aXRoV3JhcCgpO1xuICAgICAgICB0aGlzLmtleU1hbmFnZXIuY2hhbmdlLnBpcGUodGFrZVVudGlsKGNoYW5nZWRPckRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoaW5kZXggPT4ge1xuICAgICAgICAgICAgdGhpcy50aHlPcHRpb25BY3RpdmF0ZWQuZW1pdCh7IHNvdXJjZTogdGhpcywgb3B0aW9uOiB0aGlzLm9wdGlvbnMudG9BcnJheSgpW2luZGV4XSB8fCBudWxsIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvcGVuKCkge1xuICAgICAgICB0aGlzLmlzT3BlbmVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgdGhpcy50aHlPcGVuZWQuZW1pdCgpO1xuICAgIH1cblxuICAgIGNsb3NlKCkge1xuICAgICAgICB0aGlzLmlzT3BlbmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGh5Q2xvc2VkLmVtaXQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0T3B0aW9ucygpIHtcbiAgICAgICAgY29uc3QgY2hhbmdlZE9yRGVzdHJveWVkJCA9IG1lcmdlKHRoaXMub3B0aW9ucy5jaGFuZ2VzLCB0aGlzLm5nVW5zdWJzY3JpYmUkKTtcblxuICAgICAgICB0aGlzLm9wdGlvblNlbGVjdGlvbkNoYW5nZXMucGlwZSh0YWtlVW50aWwoY2hhbmdlZE9yRGVzdHJveWVkJCkpLnN1YnNjcmliZSgoZXZlbnQ6IFRoeU9wdGlvblNlbGVjdGlvbkNoYW5nZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uU2VsZWN0KGV2ZW50Lm9wdGlvbiwgZXZlbnQuaXNVc2VySW5wdXQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluc3RhbmNlU2VsZWN0aW9uTW9kZWwoKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGVsKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbCA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxUaHlPcHRpb24+KHRoaXMuaXNNdWx0aXBsZSk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwuY2hhbmdlZC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgIGV2ZW50LmFkZGVkLmZvckVhY2gob3B0aW9uID0+IG9wdGlvbi5zZWxlY3QoKSk7XG4gICAgICAgICAgICBldmVudC5yZW1vdmVkLmZvckVhY2gob3B0aW9uID0+IG9wdGlvbi5kZXNlbGVjdCgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblNlbGVjdChvcHRpb246IFRoeU9wdGlvbiwgaXNVc2VySW5wdXQ6IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3Qgd2FzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQob3B0aW9uKTtcblxuICAgICAgICBpZiAob3B0aW9uLnRoeVZhbHVlID09IG51bGwgJiYgIXRoaXMuaXNNdWx0aXBsZSkge1xuICAgICAgICAgICAgb3B0aW9uLmRlc2VsZWN0KCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLmNsZWFyKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAod2FzU2VsZWN0ZWQgIT09IG9wdGlvbi5zZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWxlY3RlZCA/IHRoaXMuc2VsZWN0aW9uTW9kZWwuc2VsZWN0KG9wdGlvbikgOiB0aGlzLnNlbGVjdGlvbk1vZGVsLmRlc2VsZWN0KG9wdGlvbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpc1VzZXJJbnB1dCkge1xuICAgICAgICAgICAgICAgIHRoaXMua2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKG9wdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAod2FzU2VsZWN0ZWQgIT09IHRoaXMuc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZChvcHRpb24pKSB7XG4gICAgICAgICAgICB0aGlzLnRoeU9wdGlvblNlbGVjdGVkLmVtaXQobmV3IFRoeU9wdGlvblNlbGVjdGlvbkNoYW5nZUV2ZW50KG9wdGlvbiwgZmFsc2UpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RHJvcERvd25DbGFzcygpIHtcbiAgICAgICAgbGV0IG1vZGVDbGFzcyA9ICcnO1xuICAgICAgICBpZiAodGhpcy5pc011bHRpcGxlKSB7XG4gICAgICAgICAgICBtb2RlQ2xhc3MgPSBgdGh5LXNlbGVjdC1kcm9wZG93bi0ke3RoaXMubW9kZX1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbW9kZUNsYXNzID0gYHRoeS1zZWxlY3QtZHJvcGRvd24tc2luZ2xlYDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRyb3BEb3duQ2xhc3MgPSB7XG4gICAgICAgICAgICBbYHRoeS1zZWxlY3QtZHJvcGRvd25gXTogdHJ1ZSxcbiAgICAgICAgICAgIFttb2RlQ2xhc3NdOiB0cnVlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZSQubmV4dCgpO1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNjb250ZW50VGVtcGxhdGU+XG4gIDxkaXYgdGh5U3RvcFByb3BhZ2F0aW9uIFtuZ0NsYXNzXT1cImRyb3BEb3duQ2xhc3NcIj5cbiAgICA8ZGl2ICNwYW5lbCBjbGFzcz1cInRoeS1zZWxlY3QtZHJvcGRvd24tb3B0aW9uc1wiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgQGlmIChpc0VtcHR5T3B0aW9ucykge1xuICAgICAgICA8dGh5LWVtcHR5IFt0aHlNZXNzYWdlXT1cInRoeUVtcHR5VGV4dFwiPjwvdGh5LWVtcHR5PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsZUFBZSxFQUNmLFNBQVMsRUFFVCxNQUFNLEVBQ04sWUFBWSxFQUNaLE1BQU0sRUFHTixpQkFBaUIsRUFDakIsS0FBSyxFQUNMLFVBQVUsRUFDVixNQUFNLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFDSCwyQkFBMkIsRUFFM0IsU0FBUyxFQUNULDZCQUE2QixFQUM3QiwyQkFBMkIsRUFDOUIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQXlCLE1BQU0saUJBQWlCLENBQUM7O0FBV3RFOzs7R0FHRztBQWNILE1BQU0sT0FBTyxl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QyxnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxPQUFPO2dCQU1pQyxPQUFPO3NCQUF6RCxlQUFlO3VCQUFDLFNBQVMsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBZ0J4QyxZQUFZO3NCQUFwQixLQUFLO2dCQU91Qyx3QkFBd0I7c0JBQXBFLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUU7Z0JBTWpDLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFNWSxTQUFTO3NCQUEzQixNQUFNO2dCQU1ZLFNBQVM7c0JBQTNCLE1BQU07Z0JBT1ksa0JBQWtCO3NCQUFwQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBRdWVyeUxpc3QsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIElucHV0LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgaW5qZWN0LFxuICAgIFNpZ25hbFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRlZmVyLCBtZXJnZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQge1xuICAgIFRIWV9PUFRJT05fUEFSRU5UX0NPTVBPTkVOVCxcbiAgICBJVGh5T3B0aW9uUGFyZW50Q29tcG9uZW50LFxuICAgIFRoeU9wdGlvbixcbiAgICBUaHlPcHRpb25TZWxlY3Rpb25DaGFuZ2VFdmVudCxcbiAgICBUaHlTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmVcbn0gZnJvbSAnbmd4LXRldGh5cy9zaGFyZWQnO1xuaW1wb3J0IHsgQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBUaHlFbXB0eSB9IGZyb20gJ25neC10ZXRoeXMvZW1wdHknO1xuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuaW1wb3J0IHsgaW5qZWN0TG9jYWxlLCBUaHlBdXRvQ29tcGxldGVMb2NhbGUgfSBmcm9tICduZ3gtdGV0aHlzL2kxOG4nO1xuXG4vKiogRXZlbnQgb2JqZWN0IHRoYXQgaXMgZW1pdHRlZCB3aGVuIGFuIGF1dG9jb21wbGV0ZSBvcHRpb24gaXMgYWN0aXZhdGVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBUaHlBdXRvY29tcGxldGVBY3RpdmF0ZWRFdmVudCB7XG4gICAgLyoqIFJlZmVyZW5jZSB0byB0aGUgYXV0b2NvbXBsZXRlIHBhbmVsIHRoYXQgZW1pdHRlZCB0aGUgZXZlbnQuICovXG4gICAgc291cmNlOiBUaHlBdXRvY29tcGxldGU7XG5cbiAgICAvKiogT3B0aW9uIHRoYXQgd2FzIHNlbGVjdGVkLiAqL1xuICAgIG9wdGlvbjogVGh5T3B0aW9uIHwgbnVsbDtcbn1cblxuLyoqXG4gKiDoh6rliqjlrozmiJDnu4Tku7ZcbiAqIEBuYW1lIHRoeS1hdXRvY29tcGxldGVcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktYXV0b2NvbXBsZXRlJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRIWV9PUFRJT05fUEFSRU5UX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBUaHlBdXRvY29tcGxldGVcbiAgICAgICAgfVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbVGh5U3RvcFByb3BhZ2F0aW9uRGlyZWN0aXZlLCBOZ0NsYXNzLCBUaHlFbXB0eV1cbn0pXG5leHBvcnQgY2xhc3MgVGh5QXV0b2NvbXBsZXRlIGltcGxlbWVudHMgSVRoeU9wdGlvblBhcmVudENvbXBvbmVudCwgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICBwcml2YXRlIG5nVW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHByaXZhdGUgbG9jYWxlOiBTaWduYWw8VGh5QXV0b0NvbXBsZXRlTG9jYWxlPiA9IGluamVjdExvY2FsZSgnYXV0b2NvbXBsZXRlJyk7XG5cbiAgICBkcm9wRG93bkNsYXNzOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfTtcblxuICAgIGlzTXVsdGlwbGUgPSBmYWxzZTtcblxuICAgIG1vZGUgPSAnJztcblxuICAgIGlzRW1wdHlPcHRpb25zID0gZmFsc2U7XG5cbiAgICBzZWxlY3Rpb25Nb2RlbDogU2VsZWN0aW9uTW9kZWw8VGh5T3B0aW9uPjtcblxuICAgIGlzT3BlbmVkID0gZmFsc2U7XG5cbiAgICAvKiogTWFuYWdlcyBhY3RpdmUgaXRlbSBpbiBvcHRpb24gbGlzdCBiYXNlZCBvbiBrZXkgZXZlbnRzLiAqL1xuICAgIGtleU1hbmFnZXI6IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPFRoeU9wdGlvbj47XG5cbiAgICBAVmlld0NoaWxkKCdjb250ZW50VGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIGNvbnRlbnRUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8vIHNjcm9sbCBlbGVtZW50IGNvbnRhaW5lclxuICAgIEBWaWV3Q2hpbGQoJ3BhbmVsJylcbiAgICBvcHRpb25zQ29udGFpbmVyOiBFbGVtZW50UmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oVGh5T3B0aW9uLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIG9wdGlvbnM6IFF1ZXJ5TGlzdDxUaHlPcHRpb24+O1xuXG4gICAgcmVhZG9ubHkgb3B0aW9uU2VsZWN0aW9uQ2hhbmdlczogT2JzZXJ2YWJsZTxUaHlPcHRpb25TZWxlY3Rpb25DaGFuZ2VFdmVudD4gPSBkZWZlcigoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiBtZXJnZSguLi50aGlzLm9wdGlvbnMubWFwKG9wdGlvbiA9PiBvcHRpb24uc2VsZWN0aW9uQ2hhbmdlKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubmdab25lLm9uU3RhYmxlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMub3B0aW9uU2VsZWN0aW9uQ2hhbmdlcylcbiAgICAgICAgKTtcbiAgICB9KSBhcyBPYnNlcnZhYmxlPFRoeU9wdGlvblNlbGVjdGlvbkNoYW5nZUV2ZW50PjtcblxuICAgIC8qKlxuICAgICAqIOepuumAiemhueaXtueahOaWh+acrFxuICAgICAqIEBkZWZhdWx0IOayoeacieS7u+S9leaVsOaNrlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUVtcHR5VGV4dCA9IHRoaXMubG9jYWxlKCkuZW1wdHk7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbpu5jorqTpq5jkuq7nrKzkuIDkuKrpgInpoblcbiAgICAgKiBAdHlwZSBib29sZWFuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlBdXRvQWN0aXZlRmlyc3RPcHRpb246IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiDooqvpgInkuK3ml7bosIPnlKjvvIzlj4LmlbDljIXlkKvpgInkuK3pobnnmoQgdmFsdWUg5YC8XG4gICAgICogQHR5cGUgRXZlbnRFbWl0dGVyPFRoeU9wdGlvblNlbGVjdGlvbkNoYW5nZUV2ZW50PlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlPcHRpb25TZWxlY3RlZDogRXZlbnRFbWl0dGVyPFRoeU9wdGlvblNlbGVjdGlvbkNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5T3B0aW9uU2VsZWN0aW9uQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDlj6ror7vvvIzlsZXlvIDkuIvmi4noj5zljZXnmoTlm57osINcbiAgICAgKiBAdHlwZSBFdmVudEVtaXR0ZXI8dm9pZD5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgdGh5T3BlbmVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDlj6ror7vvvIzlhbPpl63kuIvmi4noj5zljZXnmoTlm57osINcbiAgICAgKiBAdHlwZSBFdmVudEVtaXR0ZXI8dm9pZD5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgdGh5Q2xvc2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbmV2ZXIgYW4gb3B0aW9uIGlzIGFjdGl2YXRlZCB1c2luZyB0aGUga2V5Ym9hcmQuICovXG4gICAgLyoqXG4gICAgICog5Y+q6K+777yMb3B0aW9uIOa/gOa0u+eKtuaAgeWPmOWMluaXtu+8jOiwg+eUqOatpOWHveaVsFxuICAgICAqIEB0eXBlIEV2ZW50RW1pdHRlcjxUaHlBdXRvY29tcGxldGVBY3RpdmF0ZWRFdmVudD5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgdGh5T3B0aW9uQWN0aXZhdGVkOiBFdmVudEVtaXR0ZXI8VGh5QXV0b2NvbXBsZXRlQWN0aXZhdGVkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUaHlBdXRvY29tcGxldGVBY3RpdmF0ZWRFdmVudD4oKTtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnNldERyb3BEb3duQ2xhc3MoKTtcbiAgICAgICAgdGhpcy5pbnN0YW5jZVNlbGVjdGlvbk1vZGVsKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChudWxsKSwgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZXNldE9wdGlvbnMoKTtcbiAgICAgICAgICAgIHRpbWVyKDApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0VtcHR5T3B0aW9ucyA9IHRoaXMub3B0aW9ucy5sZW5ndGggPD0gMDtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5pbml0S2V5TWFuYWdlcigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbml0S2V5TWFuYWdlcigpIHtcbiAgICAgICAgY29uc3QgY2hhbmdlZE9yRGVzdHJveWVkJCA9IG1lcmdlKHRoaXMub3B0aW9ucy5jaGFuZ2VzLCB0aGlzLm5nVW5zdWJzY3JpYmUkKTtcbiAgICAgICAgdGhpcy5rZXlNYW5hZ2VyID0gbmV3IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPFRoeU9wdGlvbj4odGhpcy5vcHRpb25zKS53aXRoV3JhcCgpO1xuICAgICAgICB0aGlzLmtleU1hbmFnZXIuY2hhbmdlLnBpcGUodGFrZVVudGlsKGNoYW5nZWRPckRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoaW5kZXggPT4ge1xuICAgICAgICAgICAgdGhpcy50aHlPcHRpb25BY3RpdmF0ZWQuZW1pdCh7IHNvdXJjZTogdGhpcywgb3B0aW9uOiB0aGlzLm9wdGlvbnMudG9BcnJheSgpW2luZGV4XSB8fCBudWxsIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvcGVuKCkge1xuICAgICAgICB0aGlzLmlzT3BlbmVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgdGhpcy50aHlPcGVuZWQuZW1pdCgpO1xuICAgIH1cblxuICAgIGNsb3NlKCkge1xuICAgICAgICB0aGlzLmlzT3BlbmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGh5Q2xvc2VkLmVtaXQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0T3B0aW9ucygpIHtcbiAgICAgICAgY29uc3QgY2hhbmdlZE9yRGVzdHJveWVkJCA9IG1lcmdlKHRoaXMub3B0aW9ucy5jaGFuZ2VzLCB0aGlzLm5nVW5zdWJzY3JpYmUkKTtcblxuICAgICAgICB0aGlzLm9wdGlvblNlbGVjdGlvbkNoYW5nZXMucGlwZSh0YWtlVW50aWwoY2hhbmdlZE9yRGVzdHJveWVkJCkpLnN1YnNjcmliZSgoZXZlbnQ6IFRoeU9wdGlvblNlbGVjdGlvbkNoYW5nZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uU2VsZWN0KGV2ZW50Lm9wdGlvbiwgZXZlbnQuaXNVc2VySW5wdXQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluc3RhbmNlU2VsZWN0aW9uTW9kZWwoKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGVsKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbCA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxUaHlPcHRpb24+KHRoaXMuaXNNdWx0aXBsZSk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwuY2hhbmdlZC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgIGV2ZW50LmFkZGVkLmZvckVhY2gob3B0aW9uID0+IG9wdGlvbi5zZWxlY3QoKSk7XG4gICAgICAgICAgICBldmVudC5yZW1vdmVkLmZvckVhY2gob3B0aW9uID0+IG9wdGlvbi5kZXNlbGVjdCgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblNlbGVjdChvcHRpb246IFRoeU9wdGlvbiwgaXNVc2VySW5wdXQ6IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3Qgd2FzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQob3B0aW9uKTtcblxuICAgICAgICBpZiAob3B0aW9uLnRoeVZhbHVlID09IG51bGwgJiYgIXRoaXMuaXNNdWx0aXBsZSkge1xuICAgICAgICAgICAgb3B0aW9uLmRlc2VsZWN0KCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLmNsZWFyKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAod2FzU2VsZWN0ZWQgIT09IG9wdGlvbi5zZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWxlY3RlZCA/IHRoaXMuc2VsZWN0aW9uTW9kZWwuc2VsZWN0KG9wdGlvbikgOiB0aGlzLnNlbGVjdGlvbk1vZGVsLmRlc2VsZWN0KG9wdGlvbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpc1VzZXJJbnB1dCkge1xuICAgICAgICAgICAgICAgIHRoaXMua2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKG9wdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAod2FzU2VsZWN0ZWQgIT09IHRoaXMuc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZChvcHRpb24pKSB7XG4gICAgICAgICAgICB0aGlzLnRoeU9wdGlvblNlbGVjdGVkLmVtaXQobmV3IFRoeU9wdGlvblNlbGVjdGlvbkNoYW5nZUV2ZW50KG9wdGlvbiwgZmFsc2UpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RHJvcERvd25DbGFzcygpIHtcbiAgICAgICAgbGV0IG1vZGVDbGFzcyA9ICcnO1xuICAgICAgICBpZiAodGhpcy5pc011bHRpcGxlKSB7XG4gICAgICAgICAgICBtb2RlQ2xhc3MgPSBgdGh5LXNlbGVjdC1kcm9wZG93bi0ke3RoaXMubW9kZX1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbW9kZUNsYXNzID0gYHRoeS1zZWxlY3QtZHJvcGRvd24tc2luZ2xlYDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRyb3BEb3duQ2xhc3MgPSB7XG4gICAgICAgICAgICBbYHRoeS1zZWxlY3QtZHJvcGRvd25gXTogdHJ1ZSxcbiAgICAgICAgICAgIFttb2RlQ2xhc3NdOiB0cnVlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZSQubmV4dCgpO1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNjb250ZW50VGVtcGxhdGU+XG4gIDxkaXYgdGh5U3RvcFByb3BhZ2F0aW9uIFtuZ0NsYXNzXT1cImRyb3BEb3duQ2xhc3NcIj5cbiAgICA8ZGl2ICNwYW5lbCBjbGFzcz1cInRoeS1zZWxlY3QtZHJvcGRvd24tb3B0aW9uc1wiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgQGlmIChpc0VtcHR5T3B0aW9ucykge1xuICAgICAgICA8dGh5LWVtcHR5IFt0aHlNZXNzYWdlXT1cInRoeUVtcHR5VGV4dFwiPjwvdGh5LWVtcHR5PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -5,6 +5,8 @@ import { ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, Output,
5
5
  import { ThyButton } from 'ngx-tethys/button';
6
6
  import { NgTemplateOutlet, JsonPipe } from '@angular/common';
7
7
  import { FormsModule } from '@angular/forms';
8
+ import { injectLocale } from 'ngx-tethys/i18n';
9
+ import { DateHelperService } from 'ngx-tethys/date-picker';
8
10
  import * as i0 from "@angular/core";
9
11
  import * as i1 from "@angular/forms";
10
12
  /**
@@ -15,6 +17,8 @@ import * as i1 from "@angular/forms";
15
17
  export class ThyCalendarHeader {
16
18
  constructor() {
17
19
  this.cdr = inject(ChangeDetectorRef);
20
+ this.dateHelper = inject(DateHelperService);
21
+ this.locale = injectLocale('calendar');
18
22
  this.className = true;
19
23
  /**
20
24
  * 日期选择范围(年)发生变化的回调
@@ -28,11 +32,11 @@ export class ThyCalendarHeader {
28
32
  * 日期选择范围(日期)发生变化的回调
29
33
  */
30
34
  this.dateRangeChange = new EventEmitter();
31
- this.pickerFormat = 'yyyy年MM月';
35
+ this.pickerFormat = this.locale().yearMonthFormat;
32
36
  this.dateRanges = [
33
37
  {
34
38
  key: 'month',
35
- text: new TinyDate().format(this.pickerFormat),
39
+ text: this.dateHelper.format(new TinyDate().nativeDate, this.pickerFormat),
36
40
  begin: getUnixTime(startOfMonth(new Date())),
37
41
  end: getUnixTime(endOfMonth(new Date())),
38
42
  timestamp: {
@@ -91,11 +95,11 @@ export class ThyCalendarHeader {
91
95
  this.isCurrent = currentDate.getMonth() !== getMonth(new Date()) || currentDate.getYear() !== getYear(new Date());
92
96
  }
93
97
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyCalendarHeader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
94
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: ThyCalendarHeader, isStandalone: true, selector: "thy-calendar-header", inputs: { currentDate: "currentDate", operationRender: "operationRender" }, outputs: { yearChange: "yearChange", monthChange: "monthChange", dateRangeChange: "dateRangeChange" }, host: { properties: { "class.thy-calendar-full-header-container": "this.className" } }, ngImport: i0, template: "<div class=\"thy-calendar-full-header-left\">\n <thy-date-range\n class=\"select-date-range\"\n [ngModel]=\"date\"\n [thyHiddenMenu]=\"true\"\n [thyCustomKey]=\"'exception'\"\n [thyPickerFormat]=\"pickerFormat\"\n (ngModelChange)=\"onChangeRange($event)\"></thy-date-range>\n @if (isCurrent) {\n <button thyButton=\"outline-default-square\" thySize=\"md\" (click)=\"backToday()\">\u4ECA\u5929</button>\n }\n</div>\n<div class=\"thy-calendar-full-header-right\">\n <ng-container *ngTemplateOutlet=\"$any(operationRender); context: { $implicit: operationRender }\">\n <span>{{ operationRender | json }}</span>\n </ng-container>\n</div>\n", dependencies: [{ kind: "component", type: ThyDateRange, selector: "thy-date-range", inputs: ["thyOptionalDateRanges", "thyHiddenMenu", "thyDisabledSwitch", "thyCustomTextValue", "thyMinDate", "thyMaxDate", "thyCustomKey", "thyPickerFormat", "thyDisabledDate"], outputs: ["thyOnCalendarChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ThyButton, selector: "thy-button,[thy-button],[thyButton]", inputs: ["thyButton", "thyType", "thyLoading", "thyLoadingText", "thySize", "thyIcon", "thyBlock"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: JsonPipe, name: "json" }] }); }
98
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: ThyCalendarHeader, isStandalone: true, selector: "thy-calendar-header", inputs: { currentDate: "currentDate", operationRender: "operationRender" }, outputs: { yearChange: "yearChange", monthChange: "monthChange", dateRangeChange: "dateRangeChange" }, host: { properties: { "class.thy-calendar-full-header-container": "this.className" } }, ngImport: i0, template: "<div class=\"thy-calendar-full-header-left\">\n <thy-date-range\n class=\"select-date-range\"\n [ngModel]=\"date\"\n [thyHiddenMenu]=\"true\"\n [thyCustomKey]=\"'exception'\"\n [thyPickerFormat]=\"pickerFormat\"\n (ngModelChange)=\"onChangeRange($event)\"></thy-date-range>\n @if (isCurrent) {\n <button thyButton=\"outline-default-square\" thySize=\"md\" (click)=\"backToday()\">{{ locale().today }}</button>\n }\n</div>\n<div class=\"thy-calendar-full-header-right\">\n <ng-container *ngTemplateOutlet=\"$any(operationRender); context: { $implicit: operationRender }\">\n <span>{{ operationRender | json }}</span>\n </ng-container>\n</div>\n", dependencies: [{ kind: "component", type: ThyDateRange, selector: "thy-date-range", inputs: ["thyOptionalDateRanges", "thyHiddenMenu", "thyDisabledSwitch", "thyCustomTextValue", "thyMinDate", "thyMaxDate", "thyCustomKey", "thyPickerFormat", "thyDisabledDate"], outputs: ["thyOnCalendarChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ThyButton, selector: "thy-button,[thy-button],[thyButton]", inputs: ["thyButton", "thyType", "thyLoading", "thyLoadingText", "thySize", "thyIcon", "thyBlock"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: JsonPipe, name: "json" }] }); }
95
99
  }
96
100
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyCalendarHeader, decorators: [{
97
101
  type: Component,
98
- args: [{ selector: 'thy-calendar-header', standalone: true, imports: [ThyDateRange, FormsModule, ThyButton, NgTemplateOutlet, JsonPipe], template: "<div class=\"thy-calendar-full-header-left\">\n <thy-date-range\n class=\"select-date-range\"\n [ngModel]=\"date\"\n [thyHiddenMenu]=\"true\"\n [thyCustomKey]=\"'exception'\"\n [thyPickerFormat]=\"pickerFormat\"\n (ngModelChange)=\"onChangeRange($event)\"></thy-date-range>\n @if (isCurrent) {\n <button thyButton=\"outline-default-square\" thySize=\"md\" (click)=\"backToday()\">\u4ECA\u5929</button>\n }\n</div>\n<div class=\"thy-calendar-full-header-right\">\n <ng-container *ngTemplateOutlet=\"$any(operationRender); context: { $implicit: operationRender }\">\n <span>{{ operationRender | json }}</span>\n </ng-container>\n</div>\n" }]
102
+ args: [{ selector: 'thy-calendar-header', standalone: true, imports: [ThyDateRange, FormsModule, ThyButton, NgTemplateOutlet, JsonPipe], template: "<div class=\"thy-calendar-full-header-left\">\n <thy-date-range\n class=\"select-date-range\"\n [ngModel]=\"date\"\n [thyHiddenMenu]=\"true\"\n [thyCustomKey]=\"'exception'\"\n [thyPickerFormat]=\"pickerFormat\"\n (ngModelChange)=\"onChangeRange($event)\"></thy-date-range>\n @if (isCurrent) {\n <button thyButton=\"outline-default-square\" thySize=\"md\" (click)=\"backToday()\">{{ locale().today }}</button>\n }\n</div>\n<div class=\"thy-calendar-full-header-right\">\n <ng-container *ngTemplateOutlet=\"$any(operationRender); context: { $implicit: operationRender }\">\n <span>{{ operationRender | json }}</span>\n </ng-container>\n</div>\n" }]
99
103
  }], propDecorators: { className: [{
100
104
  type: HostBinding,
101
105
  args: ['class.thy-calendar-full-header-container']
@@ -110,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
110
114
  }], dateRangeChange: [{
111
115
  type: Output
112
116
  }] } });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jYWxlbmRhci9jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2NhbGVuZGFyL2NhbGVuZGFyLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDM0QsT0FBTyxFQUFxQixZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsVUFBVSxFQUFnQixXQUFXLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFlLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBRTdDOzs7O0dBSUc7QUFPSCxNQUFNLE9BQU8saUJBQWlCO0lBTjlCO1FBT1ksUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWlCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFlMUU7O1dBRUc7UUFDZ0IsZUFBVSxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXpFOztXQUVHO1FBQ2dCLGdCQUFXLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFMUU7O1dBRUc7UUFDZ0Isb0JBQWUsR0FBb0MsSUFBSSxZQUFZLEVBQUUsQ0FBQztR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QyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMxQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGFBQWEsQ0FBQyxXQUFxQjtRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxRQUFRLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RILENBQUM7OEdBcEdRLGlCQUFpQjtrR0FBakIsaUJBQWlCLDBWQ3BCOUIsd3BCQWlCQSw0Q0RDYyxZQUFZLDZRQUFFLFdBQVcsK1ZBQUUsU0FBUyxvTEFBRSxnQkFBZ0IsK0lBQUUsUUFBUTs7MkZBRWpFLGlCQUFpQjtrQkFON0IsU0FBUzsrQkFDSSxxQkFBcUIsY0FFbkIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDOzhCQUtsQixTQUFTO3NCQUFqRSxXQUFXO3VCQUFDLDBDQUEwQztnQkFNbkQsV0FBVztzQkFEZCxLQUFLO2dCQVFHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBS2EsVUFBVTtzQkFBNUIsTUFBTTtnQkFLWSxXQUFXO3NCQUE3QixNQUFNO2dCQUtZLGVBQWU7c0JBQWpDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmcm9tVW5peFRpbWUsIGdldE1vbnRoLCBnZXRZZWFyIH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgRGF0ZVJhbmdlSXRlbUluZm8sIFRoeURhdGVSYW5nZSB9IGZyb20gJ25neC10ZXRoeXMvZGF0ZS1yYW5nZSc7XG5pbXBvcnQgeyBlbmRPZk1vbnRoLCBGdW5jdGlvblByb3AsIGdldFVuaXhUaW1lLCBzdGFydE9mTW9udGgsIFRpbnlEYXRlIH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcblxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlCdXR0b24gfSBmcm9tICduZ3gtdGV0aHlzL2J1dHRvbic7XG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0LCBKc29uUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqXG4gKiDml6XljoblpLTpg6jmk43kvZzmoI/nu4Tku7ZcbiAqIEBuYW1lIHRoeS1jYWxlbmRhci1oZWFkZXJcbiAqIEBvcmRlciAyMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1jYWxlbmRhci1oZWFkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1RoeURhdGVSYW5nZSwgRm9ybXNNb2R1bGUsIFRoeUJ1dHRvbiwgTmdUZW1wbGF0ZU91dGxldCwgSnNvblBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIFRoeUNhbGVuZGFySGVhZGVyIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1jYWxlbmRhci1mdWxsLWhlYWRlci1jb250YWluZXInKSBjbGFzc05hbWUgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog5b2T5YmN6YCJ5Lit5pel5pyfXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY3VycmVudERhdGUodmFsdWU6IFRpbnlEYXRlKSB7XG4gICAgICAgIHRoaXMuc2V0RGF0ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogXHToh6rlrprkuYnmuLLmn5Plj7Pkvqfmk43kvZzpoblcbiAgICAgKi9cbiAgICBASW5wdXQoKSBvcGVyYXRpb25SZW5kZXI6IEZ1bmN0aW9uUHJvcDxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIC8qKlxuICAgICAqIOaXpeacn+mAieaLqeiMg+WbtO+8iOW5tO+8ieWPkeeUn+WPmOWMlueahOWbnuiwg1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSB5ZWFyQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKlxuICAgICAqIOaXpeacn+mAieaLqeiMg+WbtO+8iOaciO+8ieWPkeeUn+WPmOWMlueahOWbnuiwg1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBtb250aENoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKipcbiAgICAgKiDml6XmnJ/pgInmi6nojIPlm7TvvIjml6XmnJ/vvInlj5HnlJ/lj5jljJbnmoTlm57osINcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgZGF0ZVJhbmdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZVJhbmdlSXRlbUluZm8+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHVibGljIHBpY2tlckZvcm1hdCA9ICd5eXl55bm0TU3mnIgnO1xuXG4gICAgcHVibGljIGRhdGVSYW5nZXM6IERhdGVSYW5nZUl0ZW1JbmZvW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ21vbnRoJyxcbiAgICAgICAgICAgIHRleHQ6IG5ldyBUaW55RGF0ZSgpLmZvcm1hdCh0aGlzLnBpY2tlckZvcm1hdCksXG4gICAgICAgICAgICBiZWdpbjogZ2V0VW5peFRpbWUoc3RhcnRPZk1vbnRoKG5ldyBEYXRlKCkpKSxcbiAgICAgICAgICAgIGVuZDogZ2V0VW5peFRpbWUoZW5kT2ZNb250aChuZXcgRGF0ZSgpKSksXG4gICAgICAgICAgICB0aW1lc3RhbXA6IHtcbiAgICAgICAgICAgICAgICBpbnRlcnZhbDogMSxcbiAgICAgICAgICAgICAgICB1bml0OiAnbW9udGgnXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICBdO1xuXG4gICAgcHVibGljIGRhdGU6IERhdGVSYW5nZUl0ZW1JbmZvO1xuXG4gICAgcHJpdmF0ZSBfY3VycmVudERhdGU6IFRpbnlEYXRlO1xuXG4gICAgcHVibGljIGlzQ3VycmVudDogYm9vbGVhbjtcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge31cblxuICAgIG9uQ2hhbmdlTW9udGgobW9udGg6IERhdGVSYW5nZUl0ZW1JbmZvKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRNb250aCA9IGZyb21Vbml4VGltZShtb250aC5iZWdpbikuZ2V0TW9udGgoKTtcbiAgICAgICAgdGhpcy5tb250aENoYW5nZS5lbWl0KGN1cnJlbnRNb250aCk7XG4gICAgfVxuXG4gICAgb25DaGFuZ2VZZWFyKHllYXI6IERhdGVSYW5nZUl0ZW1JbmZvKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRZZWFyID0gZnJvbVVuaXhUaW1lKHllYXIuYmVnaW4pLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIHRoaXMueWVhckNoYW5nZS5lbWl0KGN1cnJlbnRZZWFyKTtcbiAgICB9XG5cbiAgICBvbkNoYW5nZVJhbmdlKGRhdGVSYW5nZTogRGF0ZVJhbmdlSXRlbUluZm8pIHtcbiAgICAgICAgdGhpcy5pc0N1cnJlbnREYXRlKHRoaXMuX2N1cnJlbnREYXRlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZVllYXIoZGF0ZVJhbmdlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZU1vbnRoKGRhdGVSYW5nZSk7XG4gICAgICAgIHRoaXMuZGF0ZVJhbmdlQ2hhbmdlLmVtaXQoZGF0ZVJhbmdlKTtcbiAgICB9XG5cbiAgICBiYWNrVG9kYXkoKSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnREYXRlID0gbmV3IFRpbnlEYXRlKCk7XG4gICAgICAgIHRoaXMuZGF0ZSA9IHsgLi4udGhpcy5kYXRlUmFuZ2VzWzBdIH07XG4gICAgICAgIHRoaXMub25DaGFuZ2VSYW5nZSh0aGlzLmRhdGUpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgc2V0RGF0ZSh2YWx1ZTogVGlueURhdGUpIHtcbiAgICAgICAgdGhpcy5pc0N1cnJlbnREYXRlKHZhbHVlKTtcbiAgICAgICAgaWYgKHRoaXMuaXNDdXJyZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50RGF0ZSA9IHZhbHVlO1xuICAgICAgICAgICAgY29uc3QgZGF0ZVJhbmdlID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZVJhbmdlc1swXSxcbiAgICAgICAgICAgICAgICBrZXk6ICdleGNlcHRpb24nLFxuICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMuX2N1cnJlbnREYXRlLmZvcm1hdCh0aGlzLnBpY2tlckZvcm1hdCksXG4gICAgICAgICAgICAgICAgYmVnaW46IGdldFVuaXhUaW1lKHN0YXJ0T2ZNb250aCh0aGlzLl9jdXJyZW50RGF0ZS5uYXRpdmVEYXRlKSksXG4gICAgICAgICAgICAgICAgZW5kOiBnZXRVbml4VGltZShlbmRPZk1vbnRoKHRoaXMuX2N1cnJlbnREYXRlLm5hdGl2ZURhdGUpKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuZGF0ZSA9IGRhdGVSYW5nZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnREYXRlID0gbmV3IFRpbnlEYXRlKCk7XG4gICAgICAgICAgICB0aGlzLmRhdGUgPSB7IC4uLnRoaXMuZGF0ZVJhbmdlc1swXSB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNDdXJyZW50RGF0ZShjdXJyZW50RGF0ZTogVGlueURhdGUpIHtcbiAgICAgICAgdGhpcy5pc0N1cnJlbnQgPSBjdXJyZW50RGF0ZS5nZXRNb250aCgpICE9PSBnZXRNb250aChuZXcgRGF0ZSgpKSB8fCBjdXJyZW50RGF0ZS5nZXRZZWFyKCkgIT09IGdldFllYXIobmV3IERhdGUoKSk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInRoeS1jYWxlbmRhci1mdWxsLWhlYWRlci1sZWZ0XCI+XG4gIDx0aHktZGF0ZS1yYW5nZVxuICAgIGNsYXNzPVwic2VsZWN0LWRhdGUtcmFuZ2VcIlxuICAgIFtuZ01vZGVsXT1cImRhdGVcIlxuICAgIFt0aHlIaWRkZW5NZW51XT1cInRydWVcIlxuICAgIFt0aHlDdXN0b21LZXldPVwiJ2V4Y2VwdGlvbidcIlxuICAgIFt0aHlQaWNrZXJGb3JtYXRdPVwicGlja2VyRm9ybWF0XCJcbiAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2VSYW5nZSgkZXZlbnQpXCI+PC90aHktZGF0ZS1yYW5nZT5cbiAgQGlmIChpc0N1cnJlbnQpIHtcbiAgICA8YnV0dG9uIHRoeUJ1dHRvbj1cIm91dGxpbmUtZGVmYXVsdC1zcXVhcmVcIiB0aHlTaXplPVwibWRcIiAoY2xpY2spPVwiYmFja1RvZGF5KClcIj7ku4rlpKk8L2J1dHRvbj5cbiAgfVxuPC9kaXY+XG48ZGl2IGNsYXNzPVwidGh5LWNhbGVuZGFyLWZ1bGwtaGVhZGVyLXJpZ2h0XCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCIkYW55KG9wZXJhdGlvblJlbmRlcik7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBvcGVyYXRpb25SZW5kZXIgfVwiPlxuICAgIDxzcGFuPnt7IG9wZXJhdGlvblJlbmRlciB8IGpzb24gfX08L3NwYW4+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jYWxlbmRhci9jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2NhbGVuZGFyL2NhbGVuZGFyLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDM0QsT0FBTyxFQUFxQixZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsVUFBVSxFQUFnQixXQUFXLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUF1QixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUksT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBcUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBRTNEOzs7O0dBSUc7QUFPSCxNQUFNLE9BQU8saUJBQWlCO0lBTjlCO1FBT1ksUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hDLGVBQVUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN2QyxXQUFNLEdBQThCLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztR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O2dCQUM5RCxHQUFHLEVBQUUsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQzdELENBQUM7WUFDRixJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztRQUMxQixDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDMUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsV0FBcUI7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsUUFBUSxFQUFFLEtBQUssUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLEtBQUssT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0SCxDQUFDOzhHQXRHUSxpQkFBaUI7a0dBQWpCLGlCQUFpQiwwVkN0QjlCLGtxQkFpQkEsNENER2MsWUFBWSw2UUFBRSxXQUFXLCtWQUFFLFNBQVMsb0xBQUUsZ0JBQWdCLCtJQUFFLFFBQVE7OzJGQUVqRSxpQkFBaUI7a0JBTjdCLFNBQVM7K0JBQ0kscUJBQXFCLGNBRW5CLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsQ0FBQzs4QkFPbEIsU0FBUztzQkFBakUsV0FBVzt1QkFBQywwQ0FBMEM7Z0JBTW5ELFdBQVc7c0JBRGQsS0FBSztnQkFRRyxlQUFlO3NCQUF2QixLQUFLO2dCQUthLFVBQVU7c0JBQTVCLE1BQU07Z0JBS1ksV0FBVztzQkFBN0IsTUFBTTtnQkFLWSxlQUFlO3NCQUFqQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZnJvbVVuaXhUaW1lLCBnZXRNb250aCwgZ2V0WWVhciB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB7IERhdGVSYW5nZUl0ZW1JbmZvLCBUaHlEYXRlUmFuZ2UgfSBmcm9tICduZ3gtdGV0aHlzL2RhdGUtcmFuZ2UnO1xuaW1wb3J0IHsgZW5kT2ZNb250aCwgRnVuY3Rpb25Qcm9wLCBnZXRVbml4VGltZSwgc3RhcnRPZk1vbnRoLCBUaW55RGF0ZSB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5cbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIE91dHB1dCwgU2lnbmFsLCBUZW1wbGF0ZVJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlCdXR0b24gfSBmcm9tICduZ3gtdGV0aHlzL2J1dHRvbic7XG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0LCBKc29uUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGluamVjdExvY2FsZSwgVGh5Q2FsZW5kYXJMb2NhbGUgfSBmcm9tICduZ3gtdGV0aHlzL2kxOG4nO1xuaW1wb3J0IHsgRGF0ZUhlbHBlclNlcnZpY2UgfSBmcm9tICduZ3gtdGV0aHlzL2RhdGUtcGlja2VyJztcblxuLyoqXG4gKiDml6XljoblpLTpg6jmk43kvZzmoI/nu4Tku7ZcbiAqIEBuYW1lIHRoeS1jYWxlbmRhci1oZWFkZXJcbiAqIEBvcmRlciAyMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1jYWxlbmRhci1oZWFkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1RoeURhdGVSYW5nZSwgRm9ybXNNb2R1bGUsIFRoeUJ1dHRvbiwgTmdUZW1wbGF0ZU91dGxldCwgSnNvblBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIFRoeUNhbGVuZGFySGVhZGVyIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcHJpdmF0ZSBkYXRlSGVscGVyID0gaW5qZWN0KERhdGVIZWxwZXJTZXJ2aWNlKTtcbiAgICBwcml2YXRlIGxvY2FsZTogU2lnbmFsPFRoeUNhbGVuZGFyTG9jYWxlPiA9IGluamVjdExvY2FsZSgnY2FsZW5kYXInKTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LWNhbGVuZGFyLWZ1bGwtaGVhZGVyLWNvbnRhaW5lcicpIGNsYXNzTmFtZSA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiDlvZPliY3pgInkuK3ml6XmnJ9cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBjdXJyZW50RGF0ZSh2YWx1ZTogVGlueURhdGUpIHtcbiAgICAgICAgdGhpcy5zZXREYXRlKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBcdOiHquWumuS5iea4suafk+WPs+S+p+aTjeS9nOmhuVxuICAgICAqL1xuICAgIEBJbnB1dCgpIG9wZXJhdGlvblJlbmRlcjogRnVuY3Rpb25Qcm9wPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgLyoqXG4gICAgICog5pel5pyf6YCJ5oup6IyD5Zu077yI5bm077yJ5Y+R55Sf5Y+Y5YyW55qE5Zue6LCDXG4gICAgICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHllYXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqXG4gICAgICog5pel5pyf6YCJ5oup6IyD5Zu077yI5pyI77yJ5Y+R55Sf5Y+Y5YyW55qE5Zue6LCDXG4gICAgICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IG1vbnRoQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKlxuICAgICAqIOaXpeacn+mAieaLqeiMg+WbtO+8iOaXpeacn++8ieWPkeeUn+WPmOWMlueahOWbnuiwg1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBkYXRlUmFuZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlUmFuZ2VJdGVtSW5mbz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwdWJsaWMgcGlja2VyRm9ybWF0ID0gdGhpcy5sb2NhbGUoKS55ZWFyTW9udGhGb3JtYXQ7XG5cbiAgICBwdWJsaWMgZGF0ZVJhbmdlczogRGF0ZVJhbmdlSXRlbUluZm9bXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnbW9udGgnLFxuICAgICAgICAgICAgdGV4dDogdGhpcy5kYXRlSGVscGVyLmZvcm1hdChuZXcgVGlueURhdGUoKS5uYXRpdmVEYXRlLCB0aGlzLnBpY2tlckZvcm1hdCksXG4gICAgICAgICAgICBiZWdpbjogZ2V0VW5peFRpbWUoc3RhcnRPZk1vbnRoKG5ldyBEYXRlKCkpKSxcbiAgICAgICAgICAgIGVuZDogZ2V0VW5peFRpbWUoZW5kT2ZNb250aChuZXcgRGF0ZSgpKSksXG4gICAgICAgICAgICB0aW1lc3RhbXA6IHtcbiAgICAgICAgICAgICAgICBpbnRlcnZhbDogMSxcbiAgICAgICAgICAgICAgICB1bml0OiAnbW9udGgnXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICBdO1xuXG4gICAgcHVibGljIGRhdGU6IERhdGVSYW5nZUl0ZW1JbmZvO1xuXG4gICAgcHJpdmF0ZSBfY3VycmVudERhdGU6IFRpbnlEYXRlO1xuXG4gICAgcHVibGljIGlzQ3VycmVudDogYm9vbGVhbjtcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge31cblxuICAgIG9uQ2hhbmdlTW9udGgobW9udGg6IERhdGVSYW5nZUl0ZW1JbmZvKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRNb250aCA9IGZyb21Vbml4VGltZShtb250aC5iZWdpbikuZ2V0TW9udGgoKTtcbiAgICAgICAgdGhpcy5tb250aENoYW5nZS5lbWl0KGN1cnJlbnRNb250aCk7XG4gICAgfVxuXG4gICAgb25DaGFuZ2VZZWFyKHllYXI6IERhdGVSYW5nZUl0ZW1JbmZvKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRZZWFyID0gZnJvbVVuaXhUaW1lKHllYXIuYmVnaW4pLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIHRoaXMueWVhckNoYW5nZS5lbWl0KGN1cnJlbnRZZWFyKTtcbiAgICB9XG5cbiAgICBvbkNoYW5nZVJhbmdlKGRhdGVSYW5nZTogRGF0ZVJhbmdlSXRlbUluZm8pIHtcbiAgICAgICAgdGhpcy5pc0N1cnJlbnREYXRlKHRoaXMuX2N1cnJlbnREYXRlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZVllYXIoZGF0ZVJhbmdlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZU1vbnRoKGRhdGVSYW5nZSk7XG4gICAgICAgIHRoaXMuZGF0ZVJhbmdlQ2hhbmdlLmVtaXQoZGF0ZVJhbmdlKTtcbiAgICB9XG5cbiAgICBiYWNrVG9kYXkoKSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnREYXRlID0gbmV3IFRpbnlEYXRlKCk7XG4gICAgICAgIHRoaXMuZGF0ZSA9IHsgLi4udGhpcy5kYXRlUmFuZ2VzWzBdIH07XG4gICAgICAgIHRoaXMub25DaGFuZ2VSYW5nZSh0aGlzLmRhdGUpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgc2V0RGF0ZSh2YWx1ZTogVGlueURhdGUpIHtcbiAgICAgICAgdGhpcy5pc0N1cnJlbnREYXRlKHZhbHVlKTtcbiAgICAgICAgaWYgKHRoaXMuaXNDdXJyZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50RGF0ZSA9IHZhbHVlO1xuICAgICAgICAgICAgY29uc3QgZGF0ZVJhbmdlID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZVJhbmdlc1swXSxcbiAgICAgICAgICAgICAgICBrZXk6ICdleGNlcHRpb24nLFxuICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMuX2N1cnJlbnREYXRlLmZvcm1hdCh0aGlzLnBpY2tlckZvcm1hdCksXG4gICAgICAgICAgICAgICAgYmVnaW46IGdldFVuaXhUaW1lKHN0YXJ0T2ZNb250aCh0aGlzLl9jdXJyZW50RGF0ZS5uYXRpdmVEYXRlKSksXG4gICAgICAgICAgICAgICAgZW5kOiBnZXRVbml4VGltZShlbmRPZk1vbnRoKHRoaXMuX2N1cnJlbnREYXRlLm5hdGl2ZURhdGUpKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuZGF0ZSA9IGRhdGVSYW5nZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnREYXRlID0gbmV3IFRpbnlEYXRlKCk7XG4gICAgICAgICAgICB0aGlzLmRhdGUgPSB7IC4uLnRoaXMuZGF0ZVJhbmdlc1swXSB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNDdXJyZW50RGF0ZShjdXJyZW50RGF0ZTogVGlueURhdGUpIHtcbiAgICAgICAgdGhpcy5pc0N1cnJlbnQgPSBjdXJyZW50RGF0ZS5nZXRNb250aCgpICE9PSBnZXRNb250aChuZXcgRGF0ZSgpKSB8fCBjdXJyZW50RGF0ZS5nZXRZZWFyKCkgIT09IGdldFllYXIobmV3IERhdGUoKSk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInRoeS1jYWxlbmRhci1mdWxsLWhlYWRlci1sZWZ0XCI+XG4gIDx0aHktZGF0ZS1yYW5nZVxuICAgIGNsYXNzPVwic2VsZWN0LWRhdGUtcmFuZ2VcIlxuICAgIFtuZ01vZGVsXT1cImRhdGVcIlxuICAgIFt0aHlIaWRkZW5NZW51XT1cInRydWVcIlxuICAgIFt0aHlDdXN0b21LZXldPVwiJ2V4Y2VwdGlvbidcIlxuICAgIFt0aHlQaWNrZXJGb3JtYXRdPVwicGlja2VyRm9ybWF0XCJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZVJhbmdlKCRldmVudClcIj48L3RoeS1kYXRlLXJhbmdlPlxuICBAaWYgKGlzQ3VycmVudCkge1xuICAgIDxidXR0b24gdGh5QnV0dG9uPVwib3V0bGluZS1kZWZhdWx0LXNxdWFyZVwiIHRoeVNpemU9XCJtZFwiIChjbGljayk9XCJiYWNrVG9kYXkoKVwiPnt7IGxvY2FsZSgpLnRvZGF5IH19PC9idXR0b24+XG4gIH1cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInRoeS1jYWxlbmRhci1mdWxsLWhlYWRlci1yaWdodFwiPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiJGFueShvcGVyYXRpb25SZW5kZXIpOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogb3BlcmF0aW9uUmVuZGVyIH1cIj5cbiAgICA8c3Bhbj57eyBvcGVyYXRpb25SZW5kZXIgfCBqc29uIH19PC9zcGFuPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19