@ifsworld/granite-components 15.0.0 → 15.0.2

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 (165) hide show
  1. package/README.md +1 -1
  2. package/date-picker/lib/date-picker-base.d.ts +3 -3
  3. package/date-picker/lib/date-picker.module.d.ts +2 -2
  4. package/esm2022/carousel/ifsworld-granite-components-carousel.mjs +5 -0
  5. package/esm2022/carousel/index.mjs +3 -0
  6. package/esm2022/carousel/lib/carousel.component.mjs +156 -0
  7. package/esm2022/carousel/lib/carousel.module.mjs +31 -0
  8. package/esm2022/date-picker/ifsworld-granite-components-date-picker.mjs +5 -0
  9. package/esm2022/date-picker/index.mjs +5 -0
  10. package/esm2022/date-picker/lib/date-picker-base.mjs +53 -0
  11. package/esm2022/date-picker/lib/date-picker-trigger-for.directive.mjs +228 -0
  12. package/esm2022/date-picker/lib/date-picker.component.mjs +30 -0
  13. package/esm2022/date-picker/lib/date-picker.module.mjs +58 -0
  14. package/esm2022/date-picker/lib/date-range-picker.component.mjs +46 -0
  15. package/esm2022/file-upload/ifsworld-granite-components-file-upload.mjs +5 -0
  16. package/esm2022/file-upload/index.mjs +3 -0
  17. package/esm2022/file-upload/lib/directives/file-drag-and-drop.directive.mjs +102 -0
  18. package/esm2022/file-upload/lib/file-upload.component.mjs +182 -0
  19. package/esm2022/file-upload/lib/file-upload.constants.mjs +45 -0
  20. package/esm2022/file-upload/lib/file-upload.module.mjs +32 -0
  21. package/esm2022/file-upload/lib/file-upload.utils.mjs +13 -0
  22. package/esm2022/ifsworld-granite-components.mjs +5 -0
  23. package/esm2022/index.mjs +90 -0
  24. package/esm2022/lib/arrange-grid/arrange-grid-item.component.mjs +44 -0
  25. package/esm2022/lib/arrange-grid/arrange-grid.component.mjs +125 -0
  26. package/esm2022/lib/arrange-grid/arrange-grid.module.mjs +19 -0
  27. package/esm2022/lib/avatar/avatar-default-status/avatar-default-status.component.mjs +36 -0
  28. package/esm2022/lib/avatar/avatar.component.mjs +68 -0
  29. package/esm2022/lib/avatar/avatar.component.public-types.mjs +7 -0
  30. package/esm2022/lib/avatar/avatar.module.mjs +37 -0
  31. package/esm2022/lib/avatar/custom-avatar-status.directive.mjs +18 -0
  32. package/esm2022/lib/avatar/empty-avatar/empty-avatar.component.mjs +37 -0
  33. package/esm2022/lib/badge/badge.component.mjs +39 -0
  34. package/esm2022/lib/badge/badge.module.mjs +18 -0
  35. package/esm2022/lib/badge/testing/badge.harness.mjs +25 -0
  36. package/esm2022/lib/button/button.component.mjs +87 -0
  37. package/esm2022/lib/button/button.module.mjs +16 -0
  38. package/esm2022/lib/card-list/card/card-avatar.component.mjs +11 -0
  39. package/esm2022/lib/card-list/card/card-content/card-actions.component.mjs +11 -0
  40. package/esm2022/lib/card-list/card/card-content/card-body.component.mjs +11 -0
  41. package/esm2022/lib/card-list/card/card-content/card-content.component.mjs +11 -0
  42. package/esm2022/lib/card-list/card/card-content/card-footer.component.mjs +11 -0
  43. package/esm2022/lib/card-list/card/card-content/card-header-subtitle.component.mjs +11 -0
  44. package/esm2022/lib/card-list/card/card-content/card-header-title.component.mjs +11 -0
  45. package/esm2022/lib/card-list/card/card-content/card-header.component.mjs +11 -0
  46. package/esm2022/lib/card-list/card/card.component.mjs +11 -0
  47. package/esm2022/lib/card-list/card-list.component.mjs +24 -0
  48. package/esm2022/lib/card-list/card-list.module.mjs +68 -0
  49. package/esm2022/lib/checkbox/checkbox-group.component.mjs +17 -0
  50. package/esm2022/lib/checkbox/checkbox.component.mjs +99 -0
  51. package/esm2022/lib/checkbox/checkbox.module.mjs +17 -0
  52. package/esm2022/lib/chips/chip-input.mjs +195 -0
  53. package/esm2022/lib/chips/chip-list.component.mjs +567 -0
  54. package/esm2022/lib/chips/chip.component.mjs +288 -0
  55. package/esm2022/lib/chips/chips.module.mjs +31 -0
  56. package/esm2022/lib/collapsible-group/collapsible-group-body.directive.mjs +17 -0
  57. package/esm2022/lib/collapsible-group/collapsible-group-header.directive.mjs +17 -0
  58. package/esm2022/lib/collapsible-group/collapsible-group.component.mjs +46 -0
  59. package/esm2022/lib/collapsible-group/collapsible-group.module.mjs +33 -0
  60. package/esm2022/lib/contacts/contact-item/contact-item.component.mjs +27 -0
  61. package/esm2022/lib/contacts/contact-item-default-status/contact-item-default-status.component.mjs +20 -0
  62. package/esm2022/lib/contacts/contact-item-title/contact-item-title.component.mjs +15 -0
  63. package/esm2022/lib/contacts/contacts-profile/contacts-profile.component.mjs +18 -0
  64. package/esm2022/lib/contacts/contacts-trigger/contacts-trigger-data.mjs +24 -0
  65. package/esm2022/lib/contacts/contacts-trigger/contacts-trigger-for.directive.mjs +231 -0
  66. package/esm2022/lib/contacts/contacts-types/contacts.component.private-types.mjs +2 -0
  67. package/esm2022/lib/contacts/contacts-types/contacts.component.public-types.mjs +9 -0
  68. package/esm2022/lib/contacts/contacts.component.mjs +92 -0
  69. package/esm2022/lib/contacts/contacts.module.mjs +53 -0
  70. package/esm2022/lib/contacts/custom-profile.directive.mjs +16 -0
  71. package/esm2022/lib/contacts/custom-status.directive.mjs +18 -0
  72. package/esm2022/lib/core/animation.mjs +34 -0
  73. package/esm2022/lib/core/client-environment.mjs +20 -0
  74. package/esm2022/lib/core/common-behaviors/disabled.mjs +27 -0
  75. package/esm2022/lib/core/core.module.mjs +44 -0
  76. package/esm2022/lib/core/devices/client-input-desktop.directive.mjs +29 -0
  77. package/esm2022/lib/core/devices/client-input-touch.directive.mjs +29 -0
  78. package/esm2022/lib/core/devices/client-output-desktop.directive.mjs +29 -0
  79. package/esm2022/lib/core/devices/client-output-touch.directive.mjs +29 -0
  80. package/esm2022/lib/core/hide-on-overflow.directive.mjs +83 -0
  81. package/esm2022/lib/core/overlay-base.mjs +18 -0
  82. package/esm2022/lib/core/overlay-position-config.mjs +2 -0
  83. package/esm2022/lib/core/overlay-trigger-for-base.directive.mjs +121 -0
  84. package/esm2022/lib/core/overlay.service.mjs +90 -0
  85. package/esm2022/lib/core/pipes/pure-pipes.module.mjs +16 -0
  86. package/esm2022/lib/core/pipes/title.pipe.mjs +21 -0
  87. package/esm2022/lib/core/radio-checkbox-base.mjs +19 -0
  88. package/esm2022/lib/core/services/names-utils-service.mjs +51 -0
  89. package/esm2022/lib/core/theme.library.mjs +59 -0
  90. package/esm2022/lib/core/types.mjs +2 -0
  91. package/esm2022/lib/grid/grid.component.mjs +128 -0
  92. package/esm2022/lib/grid/grid.module.mjs +18 -0
  93. package/esm2022/lib/icon/icon.component.mjs +43 -0
  94. package/esm2022/lib/icon/icon.module.mjs +16 -0
  95. package/esm2022/lib/input-field/input-field.component.mjs +167 -0
  96. package/esm2022/lib/input-field/input-field.module.mjs +20 -0
  97. package/esm2022/lib/label/label.component.mjs +31 -0
  98. package/esm2022/lib/label/label.module.mjs +18 -0
  99. package/esm2022/lib/menu/divider.directive.mjs +23 -0
  100. package/esm2022/lib/menu/menu-base.mjs +364 -0
  101. package/esm2022/lib/menu/menu-desktop-animations.mjs +23 -0
  102. package/esm2022/lib/menu/menu-errors.mjs +37 -0
  103. package/esm2022/lib/menu/menu-item.component.mjs +89 -0
  104. package/esm2022/lib/menu/menu-panel.mjs +7 -0
  105. package/esm2022/lib/menu/menu-positions.mjs +9 -0
  106. package/esm2022/lib/menu/menu-touch-animations.mjs +137 -0
  107. package/esm2022/lib/menu/menu-touch-close.component.mjs +13 -0
  108. package/esm2022/lib/menu/menu-touch-title.component.mjs +59 -0
  109. package/esm2022/lib/menu/menu-trigger-for.directive.mjs +738 -0
  110. package/esm2022/lib/menu/menu.component.mjs +30 -0
  111. package/esm2022/lib/menu/menu.module.mjs +55 -0
  112. package/esm2022/lib/menu/testing/menu.harness.mjs +109 -0
  113. package/esm2022/lib/menu/title.directive.mjs +17 -0
  114. package/esm2022/lib/progress-bar/progress-bar-legend/progress-bar-legend.component.mjs +19 -0
  115. package/esm2022/lib/progress-bar/progress-bar-legend-base.mjs +17 -0
  116. package/esm2022/lib/progress-bar/progress-bar-legend-trigger-for.directive.mjs +54 -0
  117. package/esm2022/lib/progress-bar/progress-bar.component.mjs +92 -0
  118. package/esm2022/lib/progress-bar/progress-bar.model.mjs +2 -0
  119. package/esm2022/lib/progress-bar/progress-bar.module.mjs +44 -0
  120. package/esm2022/lib/radio-button/radio-button.component.mjs +119 -0
  121. package/esm2022/lib/radio-button/radio-button.module.mjs +17 -0
  122. package/esm2022/lib/radio-button/radio-group.component.mjs +17 -0
  123. package/esm2022/lib/toggle-switch/toggle-switch.component.mjs +100 -0
  124. package/esm2022/lib/toggle-switch/toggle-switch.module.mjs +16 -0
  125. package/esm2022/table/ifsworld-granite-components-table.mjs +5 -0
  126. package/esm2022/table/index.mjs +5 -0
  127. package/esm2022/table/lib/cell/cell-align/cell-align-classes.directive.mjs +26 -0
  128. package/esm2022/table/lib/cell/cell.mjs +15 -0
  129. package/esm2022/table/lib/cell/table-data-cell.component.mjs +25 -0
  130. package/esm2022/table/lib/cell/table-header-cell.component.mjs +14 -0
  131. package/esm2022/table/lib/column/table-column.directive.mjs +33 -0
  132. package/esm2022/table/lib/column-size/column-size.directive.mjs +34 -0
  133. package/esm2022/table/lib/table-constants.library.mjs +7 -0
  134. package/esm2022/table/lib/table.component.mjs +62 -0
  135. package/esm2022/table/lib/table.model.mjs +2 -0
  136. package/esm2022/table/lib/table.module.mjs +38 -0
  137. package/esm2022/tooltip/ifsworld-granite-components-tooltip.mjs +5 -0
  138. package/esm2022/tooltip/index.mjs +4 -0
  139. package/esm2022/tooltip/lib/Services/granite-tooltip.service.mjs +28 -0
  140. package/esm2022/tooltip/lib/tooltip-constants.library.mjs +4 -0
  141. package/esm2022/tooltip/lib/tooltip-trigger-for.directive.mjs +147 -0
  142. package/esm2022/tooltip/lib/tooltip.component.mjs +14 -0
  143. package/esm2022/tooltip/lib/tooltip.module.mjs +19 -0
  144. package/fesm2022/ifsworld-granite-components-carousel.mjs +9 -9
  145. package/fesm2022/ifsworld-granite-components-carousel.mjs.map +1 -1
  146. package/fesm2022/ifsworld-granite-components-date-picker.mjs +30 -34
  147. package/fesm2022/ifsworld-granite-components-date-picker.mjs.map +1 -1
  148. package/fesm2022/ifsworld-granite-components-file-upload.mjs +12 -13
  149. package/fesm2022/ifsworld-granite-components-file-upload.mjs.map +1 -1
  150. package/fesm2022/ifsworld-granite-components-table.mjs +29 -32
  151. package/fesm2022/ifsworld-granite-components-table.mjs.map +1 -1
  152. package/fesm2022/ifsworld-granite-components-tooltip.mjs +15 -16
  153. package/fesm2022/ifsworld-granite-components-tooltip.mjs.map +1 -1
  154. package/fesm2022/ifsworld-granite-components.mjs +323 -342
  155. package/fesm2022/ifsworld-granite-components.mjs.map +1 -1
  156. package/lib/contacts/contacts-trigger/contacts-trigger-data.d.ts +1 -1
  157. package/lib/core/overlay-base.d.ts +1 -1
  158. package/lib/core/radio-checkbox-base.d.ts +1 -1
  159. package/lib/menu/menu-base.d.ts +1 -1
  160. package/lib/progress-bar/progress-bar-legend-base.d.ts +1 -1
  161. package/package.json +21 -9
  162. package/src/lib/core/style/_mixins.scss +9 -10
  163. package/src/lib/core/style/_range-functions.scss +4 -6
  164. package/src/lib/core/style/_z-index.scss +4 -6
  165. package/table/lib/cell/cell.d.ts +1 -1
package/README.md CHANGED
@@ -16,7 +16,7 @@ This library is an Angular implementation of the [IFS Design System](https://des
16
16
 
17
17
  ## Getting started
18
18
 
19
- Assuming we're starting with a new @angular/cli project:
19
+ Assuming we are starting with a new @angular/cli project:
20
20
 
21
21
  ```shell
22
22
  npx @angular/cli new my-project --style=scss
@@ -1,14 +1,14 @@
1
1
  import { ElementRef, EventEmitter, OnInit, TemplateRef } from '@angular/core';
2
2
  import { Direction } from '@angular/cdk/bidi';
3
+ import { PrimeNGConfig } from 'primeng/api';
3
4
  import { ClientInputInterface, ClientOutputInterface } from '@ifsworld/granite-components';
4
- import { PrimeNG } from 'primeng/config';
5
5
  import * as i0 from "@angular/core";
6
6
  export type PositionX = 'before' | 'after';
7
7
  export type PositionY = 'above' | 'below';
8
8
  /** Base class with common functionality for date/date-range pickers. */
9
9
  export declare class _DatePickerBase implements OnInit {
10
10
  _elementRef: ElementRef;
11
- primeNG: PrimeNG;
11
+ config: PrimeNGConfig;
12
12
  minDate: Date | null;
13
13
  maxDate: Date | null;
14
14
  firstDayOfWeek: number;
@@ -26,7 +26,7 @@ export declare class _DatePickerBase implements OnInit {
26
26
  clientInput: ClientInputInterface;
27
27
  /** Client output device information */
28
28
  clientOutput: ClientOutputInterface;
29
- constructor(_elementRef: ElementRef, primeNG: PrimeNG);
29
+ constructor(_elementRef: ElementRef, config: PrimeNGConfig);
30
30
  ngOnInit(): void;
31
31
  _handleKeydown(event: KeyboardEvent): void;
32
32
  static ɵfac: i0.ɵɵFactoryDeclaration<_DatePickerBase, never>;
@@ -4,12 +4,12 @@ import * as i2 from "./date-range-picker.component";
4
4
  import * as i3 from "./date-picker-trigger-for.directive";
5
5
  import * as i4 from "@angular/common";
6
6
  import * as i5 from "@angular/cdk/overlay";
7
- import * as i6 from "primeng/datepicker";
7
+ import * as i6 from "primeng/calendar";
8
8
  import * as i7 from "@angular/forms";
9
9
  import * as i8 from "@ifsworld/granite-components";
10
10
  import * as i9 from "@angular/cdk/a11y";
11
11
  export declare class GraniteDatePickerModule {
12
12
  static ɵfac: i0.ɵɵFactoryDeclaration<GraniteDatePickerModule, never>;
13
- static ɵmod: i0.ɵɵNgModuleDeclaration<GraniteDatePickerModule, [typeof i1.GraniteDatePickerComponent, typeof i2.GraniteDateRangePickerComponent, typeof i3.GraniteDatePickerTriggerForDirective], [typeof i4.CommonModule, typeof i5.OverlayModule, typeof i6.DatePickerModule, typeof i7.FormsModule, typeof i8.GraniteIconModule, typeof i8.GraniteButtonModule, typeof i9.A11yModule], [typeof i1.GraniteDatePickerComponent, typeof i2.GraniteDateRangePickerComponent, typeof i3.GraniteDatePickerTriggerForDirective]>;
13
+ static ɵmod: i0.ɵɵNgModuleDeclaration<GraniteDatePickerModule, [typeof i1.GraniteDatePickerComponent, typeof i2.GraniteDateRangePickerComponent, typeof i3.GraniteDatePickerTriggerForDirective], [typeof i4.CommonModule, typeof i5.OverlayModule, typeof i6.CalendarModule, typeof i7.FormsModule, typeof i8.GraniteIconModule, typeof i8.GraniteButtonModule, typeof i9.A11yModule], [typeof i1.GraniteDatePickerComponent, typeof i2.GraniteDateRangePickerComponent, typeof i3.GraniteDatePickerTriggerForDirective]>;
14
14
  static ɵinj: i0.ɵɵInjectorDeclaration<GraniteDatePickerModule>;
15
15
  }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZzd29ybGQtZ3Jhbml0ZS1jb21wb25lbnRzLWNhcm91c2VsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvY2Fyb3VzZWwvc3JjL2lmc3dvcmxkLWdyYW5pdGUtY29tcG9uZW50cy1jYXJvdXNlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './lib/carousel.module';
2
+ export * from './lib/carousel.component';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9jYXJvdXNlbC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvY2Fyb3VzZWwubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Nhcm91c2VsLmNvbXBvbmVudCc7XG4iXX0=
@@ -0,0 +1,156 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, HostListener, Input, TemplateRef, ViewChild, } from '@angular/core';
2
+ import { Carousel } from 'primeng/carousel';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "primeng/carousel";
6
+ import * as i3 from "primeng/api";
7
+ import * as i4 from "@ifsworld/granite-components";
8
+ export class GraniteCarouselComponent {
9
+ constructor(cdr) {
10
+ this.cdr = cdr;
11
+ this.items = [];
12
+ this.responsiveOptions = [
13
+ {
14
+ breakpoint: '1024px',
15
+ numVisible: 3,
16
+ numScroll: 1,
17
+ },
18
+ {
19
+ breakpoint: '768px',
20
+ numVisible: 2,
21
+ numScroll: 1,
22
+ },
23
+ {
24
+ breakpoint: '560px',
25
+ numVisible: 1,
26
+ numScroll: 1,
27
+ },
28
+ ];
29
+ this.numVisible = 1;
30
+ this.numScroll = 1;
31
+ this.circular = false;
32
+ this.prevButtonAriaLabel = 'Previous page';
33
+ this.nextButtonAriaLabel = 'Next page';
34
+ this.shrinkToContent = false;
35
+ this.visibleItems = [];
36
+ this.isOneItemVisible = false;
37
+ }
38
+ ngOnChanges(changes) {
39
+ if (changes['items'] && changes['items'].currentValue) {
40
+ this.items = changes['items'].currentValue;
41
+ this.triggerUpdate();
42
+ }
43
+ }
44
+ ngAfterViewInit() {
45
+ if (typeof ResizeObserver !== 'undefined') {
46
+ this.resizeObserver = new ResizeObserver((entries) => {
47
+ this.handleResize(entries);
48
+ });
49
+ this.resizeObserver.observe(this.carousel?.el?.nativeElement);
50
+ }
51
+ }
52
+ onResize() {
53
+ this.triggerUpdate();
54
+ }
55
+ onKeyDown(event) {
56
+ const mouseEvent = new MouseEvent('click', { cancelable: true });
57
+ if (event.key === 'ArrowRight') {
58
+ this.navForward(mouseEvent);
59
+ }
60
+ else if (event.key === 'ArrowLeft') {
61
+ this.navBackward(mouseEvent);
62
+ }
63
+ }
64
+ navForward(event) {
65
+ this.carousel?.navForward(event);
66
+ }
67
+ navBackward(event) {
68
+ this.carousel?.navBackward(event);
69
+ }
70
+ ngOnDestroy() {
71
+ this.resizeObserver?.disconnect();
72
+ }
73
+ triggerUpdate() {
74
+ if (this.carousel?.el?.nativeElement) {
75
+ const containerWidth = this.carousel.el.nativeElement.offsetWidth;
76
+ this.updateNumVisibleBasedOnWidth(containerWidth);
77
+ }
78
+ else {
79
+ this.updateVisibleItems();
80
+ }
81
+ }
82
+ handleResize(entries) {
83
+ entries.forEach((entry) => {
84
+ if (entry.contentRect) {
85
+ const containerWidth = entry.contentRect.width;
86
+ this.updateNumVisibleBasedOnWidth(containerWidth);
87
+ }
88
+ });
89
+ }
90
+ getDisplayItems(items, numVisible) {
91
+ const placeholders = Array(Math.max(0, numVisible - items.length)).fill({
92
+ placeholder: true,
93
+ });
94
+ return [...items, ...placeholders];
95
+ }
96
+ updateVisibleItems() {
97
+ if (!this.items || !this.carousel)
98
+ return;
99
+ const numVisible = this.carousel.numVisible || this.numVisible;
100
+ this.visibleItems = this.getDisplayItems(this.items, numVisible);
101
+ this.cdr.markForCheck();
102
+ }
103
+ updateNumVisibleBasedOnWidth(containerWidth) {
104
+ if (!this.carousel)
105
+ return;
106
+ let matched = false;
107
+ const sortedResponsiveOptions = [...this.responsiveOptions].sort((a, b) => parseInt(a.breakpoint) - parseInt(b.breakpoint));
108
+ if (containerWidth) {
109
+ for (const option of sortedResponsiveOptions) {
110
+ const breakpoint = parseInt(option.breakpoint);
111
+ if (containerWidth <= breakpoint) {
112
+ this.carousel.numVisible = option.numVisible;
113
+ this.isOneItemVisible = option.numVisible === 1;
114
+ matched = true;
115
+ break;
116
+ }
117
+ }
118
+ }
119
+ if (!matched) {
120
+ this.carousel.numVisible = this.numVisible;
121
+ }
122
+ this.updateVisibleItems();
123
+ }
124
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteCarouselComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
125
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: GraniteCarouselComponent, selector: "granite-carousel", inputs: { items: "items", responsiveOptions: "responsiveOptions", numVisible: "numVisible", numScroll: "numScroll", circular: "circular", prevButtonAriaLabel: "prevButtonAriaLabel", nextButtonAriaLabel: "nextButtonAriaLabel", shrinkToContent: "shrinkToContent" }, host: { listeners: { "window:resize": "onResize()" } }, queries: [{ propertyName: "itemTemplateRef", first: true, predicate: ["itemTemplate"], descendants: true }], viewQueries: [{ propertyName: "carousel", first: true, predicate: ["carousel"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"carousel-wrapper\">\n <button\n graniteFlatButton\n class=\"arrow-btn\"\n [disabled]=\"carousel.isBackwardNavDisabled()\"\n [attr.aria-label]=\"prevButtonAriaLabel\"\n (click)=\"navBackward($event)\"\n >\n <granite-icon fontIcon=\"icon-caret-left\"></granite-icon>\n </button>\n\n <p-carousel\n #carousel\n [value]=\"visibleItems\"\n [numVisible]=\"numVisible\"\n [numScroll]=\"numScroll\"\n [circular]=\"circular\"\n [responsiveOptions]=\"responsiveOptions\"\n [showNavigators]=\"false\"\n [showIndicators]=\"false\"\n [class.auto-width]=\"shrinkToContent\"\n [class.is-one-item]=\"isOneItemVisible\"\n (keydown)=\"onKeyDown($event)\"\n tabindex=\"0\"\n >\n <ng-template let-item pTemplate=\"item\">\n <div class=\"item-template-wrapper\" *ngIf=\"!item.placeholder\">\n <ng-container\n *ngTemplateOutlet=\"itemTemplateRef; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-template>\n </p-carousel>\n\n <button\n graniteFlatButton\n class=\"arrow-btn\"\n [disabled]=\"carousel.isForwardNavDisabled()\"\n [attr.aria-label]=\"nextButtonAriaLabel\"\n (click)=\"navForward($event)\"\n >\n <granite-icon fontIcon=\"icon-caret-right\"></granite-icon>\n </button>\n</div>\n", styles: [":host{width:100%;overflow:hidden}.carousel-wrapper{display:flex;justify-content:center;align-items:center;gap:var(--granite-spacing-8);padding:var(--granite-spacing-8);width:100%;max-width:100%;overflow:hidden;box-sizing:border-box}p-carousel{flex:1;min-width:0}p-carousel .item-template-wrapper{margin:var(--granite-spacing-4)}.arrow-btn{width:calc(var(--granite-size-base-rem) * 2);height:calc(var(--granite-size-base-rem) * 2)}.arrow-btn granite-icon{font-size:var(--granite-font-size-body);position:relative;top:0}::ng-deep .auto-width .p-carousel-item{flex:0 0 auto!important}::ng-deep .is-one-item .p-carousel-item{flex:1 0 100%!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.Carousel, selector: "p-carousel", inputs: ["page", "numVisible", "numScroll", "responsiveOptions", "orientation", "verticalViewPortHeight", "contentClass", "indicatorsContentClass", "indicatorsContentStyle", "indicatorStyleClass", "indicatorStyle", "value", "circular", "showIndicators", "showNavigators", "autoplayInterval", "style", "styleClass"], outputs: ["onPage"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i4.GraniteButtonComponent, selector: "button[graniteButton], button[granitePrimaryButton], button[graniteFlatButton], button[graniteToolbarButton] ", inputs: ["disabled", "toggled"], exportAs: ["graniteButton"] }, { kind: "component", type: i4.GraniteIconComponent, selector: "granite-icon", inputs: ["fontIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
126
+ }
127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteCarouselComponent, decorators: [{
128
+ type: Component,
129
+ args: [{ selector: 'granite-carousel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"carousel-wrapper\">\n <button\n graniteFlatButton\n class=\"arrow-btn\"\n [disabled]=\"carousel.isBackwardNavDisabled()\"\n [attr.aria-label]=\"prevButtonAriaLabel\"\n (click)=\"navBackward($event)\"\n >\n <granite-icon fontIcon=\"icon-caret-left\"></granite-icon>\n </button>\n\n <p-carousel\n #carousel\n [value]=\"visibleItems\"\n [numVisible]=\"numVisible\"\n [numScroll]=\"numScroll\"\n [circular]=\"circular\"\n [responsiveOptions]=\"responsiveOptions\"\n [showNavigators]=\"false\"\n [showIndicators]=\"false\"\n [class.auto-width]=\"shrinkToContent\"\n [class.is-one-item]=\"isOneItemVisible\"\n (keydown)=\"onKeyDown($event)\"\n tabindex=\"0\"\n >\n <ng-template let-item pTemplate=\"item\">\n <div class=\"item-template-wrapper\" *ngIf=\"!item.placeholder\">\n <ng-container\n *ngTemplateOutlet=\"itemTemplateRef; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-template>\n </p-carousel>\n\n <button\n graniteFlatButton\n class=\"arrow-btn\"\n [disabled]=\"carousel.isForwardNavDisabled()\"\n [attr.aria-label]=\"nextButtonAriaLabel\"\n (click)=\"navForward($event)\"\n >\n <granite-icon fontIcon=\"icon-caret-right\"></granite-icon>\n </button>\n</div>\n", styles: [":host{width:100%;overflow:hidden}.carousel-wrapper{display:flex;justify-content:center;align-items:center;gap:var(--granite-spacing-8);padding:var(--granite-spacing-8);width:100%;max-width:100%;overflow:hidden;box-sizing:border-box}p-carousel{flex:1;min-width:0}p-carousel .item-template-wrapper{margin:var(--granite-spacing-4)}.arrow-btn{width:calc(var(--granite-size-base-rem) * 2);height:calc(var(--granite-size-base-rem) * 2)}.arrow-btn granite-icon{font-size:var(--granite-font-size-body);position:relative;top:0}::ng-deep .auto-width .p-carousel-item{flex:0 0 auto!important}::ng-deep .is-one-item .p-carousel-item{flex:1 0 100%!important}\n"] }]
130
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { items: [{
131
+ type: Input
132
+ }], responsiveOptions: [{
133
+ type: Input
134
+ }], numVisible: [{
135
+ type: Input
136
+ }], numScroll: [{
137
+ type: Input
138
+ }], circular: [{
139
+ type: Input
140
+ }], prevButtonAriaLabel: [{
141
+ type: Input
142
+ }], nextButtonAriaLabel: [{
143
+ type: Input
144
+ }], shrinkToContent: [{
145
+ type: Input
146
+ }], itemTemplateRef: [{
147
+ type: ContentChild,
148
+ args: ['itemTemplate', { static: false }]
149
+ }], carousel: [{
150
+ type: ViewChild,
151
+ args: ['carousel']
152
+ }], onResize: [{
153
+ type: HostListener,
154
+ args: ['window:resize']
155
+ }] } });
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvY2Fyb3VzZWwvc3JjL2xpYi9jYXJvdXNlbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9jYXJvdXNlbC9zcmMvbGliL2Nhcm91c2VsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFJTCxXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQTZCLE1BQU0sa0JBQWtCLENBQUM7Ozs7OztBQVF2RSxNQUFNLE9BQU8sd0JBQXdCO0lBc0RuQyxZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWxEMUMsVUFBSyxHQUFRLEVBQUUsQ0FBQztRQUdoQixzQkFBaUIsR0FBZ0M7WUFDL0M7Z0JBQ0UsVUFBVSxFQUFFLFFBQVE7Z0JBQ3BCLFVBQVUsRUFBRSxDQUFDO2dCQUNiLFNBQVMsRUFBRSxDQUFDO2FBQ2I7WUFDRDtnQkFDRSxVQUFVLEVBQUUsT0FBTztnQkFDbkIsVUFBVSxFQUFFLENBQUM7Z0JBQ2IsU0FBUyxFQUFFLENBQUM7YUFDYjtZQUNEO2dCQUNFLFVBQVUsRUFBRSxPQUFPO2dCQUNuQixVQUFVLEVBQUUsQ0FBQztnQkFDYixTQUFTLEVBQUUsQ0FBQzthQUNiO1NBQ0YsQ0FBQztRQUdGLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFHdkIsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUd0QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBRzFCLHdCQUFtQixHQUFXLGVBQWUsQ0FBQztRQUc5Qyx3QkFBbUIsR0FBVyxX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LGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxVQUFVLEtBQUssQ0FBQyxDQUFDO29CQUNoRCxPQUFPLEdBQUcsSUFBSSxDQUFDO29CQUNmLE1BQU07Z0JBQ1IsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUM3QyxDQUFDO1FBRUQsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQzsrR0EvSlUsd0JBQXdCO21HQUF4Qix3QkFBd0IsZ21CQ3RCckMsc3lDQTRDQTs7NEZEdEJhLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTtzRkFNL0MsS0FBSztzQkFESixLQUFLO2dCQUlOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFvQk4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sbUJBQW1CO3NCQURsQixLQUFLO2dCQUlOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSS9DLFFBQVE7c0JBRFAsU0FBUzt1QkFBQyxVQUFVO2dCQTRCckIsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYXJvdXNlbCwgQ2Fyb3VzZWxSZXNwb25zaXZlT3B0aW9ucyB9IGZyb20gJ3ByaW1lbmcvY2Fyb3VzZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdncmFuaXRlLWNhcm91c2VsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhcm91c2VsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2Nhcm91c2VsLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEdyYW5pdGVDYXJvdXNlbENvbXBvbmVudDxUPlxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpXG4gIGl0ZW1zOiBUW10gPSBbXTtcblxuICBASW5wdXQoKVxuICByZXNwb25zaXZlT3B0aW9uczogQ2Fyb3VzZWxSZXNwb25zaXZlT3B0aW9uc1tdID0gW1xuICAgIHtcbiAgICAgIGJyZWFrcG9pbnQ6ICcxMDI0cHgnLFxuICAgICAgbnVtVmlzaWJsZTogMyxcbiAgICAgIG51bVNjcm9sbDogMSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGJyZWFrcG9pbnQ6ICc3NjhweCcsXG4gICAgICBudW1WaXNpYmxlOiAyLFxuICAgICAgbnVtU2Nyb2xsOiAxLFxuICAgIH0sXG4gICAge1xuICAgICAgYnJlYWtwb2ludDogJzU2MHB4JyxcbiAgICAgIG51bVZpc2libGU6IDEsXG4gICAgICBudW1TY3JvbGw6IDEsXG4gICAgfSxcbiAgXTtcblxuICBASW5wdXQoKVxuICBudW1WaXNpYmxlOiBudW1iZXIgPSAxO1xuXG4gIEBJbnB1dCgpXG4gIG51bVNjcm9sbDogbnVtYmVyID0gMTtcblxuICBASW5wdXQoKVxuICBjaXJjdWxhcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHByZXZCdXR0b25BcmlhTGFiZWw6IHN0cmluZyA9ICdQcmV2aW91cyBwYWdlJztcblxuICBASW5wdXQoKVxuICBuZXh0QnV0dG9uQXJpYUxhYmVsOiBzdHJpbmcgPSAnTmV4dCBwYWdlJztcblxuICBASW5wdXQoKVxuICBzaHJpbmtUb0NvbnRlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAQ29udGVudENoaWxkKCdpdGVtVGVtcGxhdGUnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgaXRlbVRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ2Nhcm91c2VsJylcbiAgY2Fyb3VzZWw6IENhcm91c2VsO1xuXG4gIHZpc2libGVJdGVtczogVFtdID0gW107XG4gIGlzT25lSXRlbVZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyOiBSZXNpemVPYnNlcnZlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydpdGVtcyddICYmIGNoYW5nZXNbJ2l0ZW1zJ10uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLml0ZW1zID0gY2hhbmdlc1snaXRlbXMnXS5jdXJyZW50VmFsdWU7XG4gICAgICB0aGlzLnRyaWdnZXJVcGRhdGUoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiBSZXNpemVPYnNlcnZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVSZXNpemUoZW50cmllcyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuY2Fyb3VzZWw/LmVsPy5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgb25SZXNpemUoKTogdm9pZCB7XG4gICAgdGhpcy50cmlnZ2VyVXBkYXRlKCk7XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBtb3VzZUV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoJ2NsaWNrJywgeyBjYW5jZWxhYmxlOiB0cnVlIH0pO1xuICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgdGhpcy5uYXZGb3J3YXJkKG1vdXNlRXZlbnQpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgdGhpcy5uYXZCYWNrd2FyZChtb3VzZUV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBuYXZGb3J3YXJkKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5jYXJvdXNlbD8ubmF2Rm9yd2FyZChldmVudCk7XG4gIH1cblxuICBuYXZCYWNrd2FyZChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuY2Fyb3VzZWw/Lm5hdkJhY2t3YXJkKGV2ZW50KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJpZ2dlclVwZGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYXJvdXNlbD8uZWw/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5jYXJvdXNlbC5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgdGhpcy51cGRhdGVOdW1WaXNpYmxlQmFzZWRPbldpZHRoKGNvbnRhaW5lcldpZHRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVWaXNpYmxlSXRlbXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVJlc2l6ZShlbnRyaWVzOiBSZXNpemVPYnNlcnZlckVudHJ5W10pOiB2b2lkIHtcbiAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICBpZiAoZW50cnkuY29udGVudFJlY3QpIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSBlbnRyeS5jb250ZW50UmVjdC53aWR0aDtcbiAgICAgICAgdGhpcy51cGRhdGVOdW1WaXNpYmxlQmFzZWRPbldpZHRoKGNvbnRhaW5lcldpZHRoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGlzcGxheUl0ZW1zKGl0ZW1zOiBUW10sIG51bVZpc2libGU6IG51bWJlcik6IFRbXSB7XG4gICAgY29uc3QgcGxhY2Vob2xkZXJzID0gQXJyYXkoTWF0aC5tYXgoMCwgbnVtVmlzaWJsZSAtIGl0ZW1zLmxlbmd0aCkpLmZpbGwoe1xuICAgICAgcGxhY2Vob2xkZXI6IHRydWUsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gWy4uLml0ZW1zLCAuLi5wbGFjZWhvbGRlcnNdO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVWaXNpYmxlSXRlbXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLml0ZW1zIHx8ICF0aGlzLmNhcm91c2VsKSByZXR1cm47XG5cbiAgICBjb25zdCBudW1WaXNpYmxlID0gdGhpcy5jYXJvdXNlbC5udW1WaXNpYmxlIHx8IHRoaXMubnVtVmlzaWJsZTtcbiAgICB0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuZ2V0RGlzcGxheUl0ZW1zKHRoaXMuaXRlbXMsIG51bVZpc2libGUpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVOdW1WaXNpYmxlQmFzZWRPbldpZHRoKGNvbnRhaW5lcldpZHRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2Fyb3VzZWwpIHJldHVybjtcblxuICAgIGxldCBtYXRjaGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgY29uc3Qgc29ydGVkUmVzcG9uc2l2ZU9wdGlvbnMgPSBbLi4udGhpcy5yZXNwb25zaXZlT3B0aW9uc10uc29ydChcbiAgICAgIChhLCBiKSA9PiBwYXJzZUludChhLmJyZWFrcG9pbnQpIC0gcGFyc2VJbnQoYi5icmVha3BvaW50KVxuICAgICk7XG5cbiAgICBpZiAoY29udGFpbmVyV2lkdGgpIHtcbiAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIHNvcnRlZFJlc3BvbnNpdmVPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IGJyZWFrcG9pbnQgPSBwYXJzZUludChvcHRpb24uYnJlYWtwb2ludCk7XG5cbiAgICAgICAgaWYgKGNvbnRhaW5lcldpZHRoIDw9IGJyZWFrcG9pbnQpIHtcbiAgICAgICAgICB0aGlzLmNhcm91c2VsLm51bVZpc2libGUgPSBvcHRpb24ubnVtVmlzaWJsZTtcbiAgICAgICAgICB0aGlzLmlzT25lSXRlbVZpc2libGUgPSBvcHRpb24ubnVtVmlzaWJsZSA9PT0gMTtcbiAgICAgICAgICBtYXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghbWF0Y2hlZCkge1xuICAgICAgdGhpcy5jYXJvdXNlbC5udW1WaXNpYmxlID0gdGhpcy5udW1WaXNpYmxlO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlVmlzaWJsZUl0ZW1zKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjYXJvdXNlbC13cmFwcGVyXCI+XG4gIDxidXR0b25cbiAgICBncmFuaXRlRmxhdEJ1dHRvblxuICAgIGNsYXNzPVwiYXJyb3ctYnRuXCJcbiAgICBbZGlzYWJsZWRdPVwiY2Fyb3VzZWwuaXNCYWNrd2FyZE5hdkRpc2FibGVkKClcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicHJldkJ1dHRvbkFyaWFMYWJlbFwiXG4gICAgKGNsaWNrKT1cIm5hdkJhY2t3YXJkKCRldmVudClcIlxuICA+XG4gICAgPGdyYW5pdGUtaWNvbiBmb250SWNvbj1cImljb24tY2FyZXQtbGVmdFwiPjwvZ3Jhbml0ZS1pY29uPlxuICA8L2J1dHRvbj5cblxuICA8cC1jYXJvdXNlbFxuICAgICNjYXJvdXNlbFxuICAgIFt2YWx1ZV09XCJ2aXNpYmxlSXRlbXNcIlxuICAgIFtudW1WaXNpYmxlXT1cIm51bVZpc2libGVcIlxuICAgIFtudW1TY3JvbGxdPVwibnVtU2Nyb2xsXCJcbiAgICBbY2lyY3VsYXJdPVwiY2lyY3VsYXJcIlxuICAgIFtyZXNwb25zaXZlT3B0aW9uc109XCJyZXNwb25zaXZlT3B0aW9uc1wiXG4gICAgW3Nob3dOYXZpZ2F0b3JzXT1cImZhbHNlXCJcbiAgICBbc2hvd0luZGljYXRvcnNdPVwiZmFsc2VcIlxuICAgIFtjbGFzcy5hdXRvLXdpZHRoXT1cInNocmlua1RvQ29udGVudFwiXG4gICAgW2NsYXNzLmlzLW9uZS1pdGVtXT1cImlzT25lSXRlbVZpc2libGVcIlxuICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICB0YWJpbmRleD1cIjBcIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlIGxldC1pdGVtIHBUZW1wbGF0ZT1cIml0ZW1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXRlbXBsYXRlLXdyYXBwZXJcIiAqbmdJZj1cIiFpdGVtLnBsYWNlaG9sZGVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UZW1wbGF0ZVJlZjsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0gfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvcC1jYXJvdXNlbD5cblxuICA8YnV0dG9uXG4gICAgZ3Jhbml0ZUZsYXRCdXR0b25cbiAgICBjbGFzcz1cImFycm93LWJ0blwiXG4gICAgW2Rpc2FibGVkXT1cImNhcm91c2VsLmlzRm9yd2FyZE5hdkRpc2FibGVkKClcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibmV4dEJ1dHRvbkFyaWFMYWJlbFwiXG4gICAgKGNsaWNrKT1cIm5hdkZvcndhcmQoJGV2ZW50KVwiXG4gID5cbiAgICA8Z3Jhbml0ZS1pY29uIGZvbnRJY29uPVwiaWNvbi1jYXJldC1yaWdodFwiPjwvZ3Jhbml0ZS1pY29uPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,31 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { GraniteCarouselComponent } from './carousel.component';
4
+ import { CarouselModule } from 'primeng/carousel';
5
+ import { GraniteIconModule, GraniteButtonModule, } from '@ifsworld/granite-components';
6
+ import * as i0 from "@angular/core";
7
+ export class GraniteCarouselModule {
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteCarouselModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: GraniteCarouselModule, declarations: [GraniteCarouselComponent], imports: [CommonModule,
10
+ CarouselModule,
11
+ GraniteButtonModule,
12
+ GraniteIconModule], exports: [GraniteCarouselComponent] }); }
13
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteCarouselModule, imports: [CommonModule,
14
+ CarouselModule,
15
+ GraniteButtonModule,
16
+ GraniteIconModule] }); }
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteCarouselModule, decorators: [{
19
+ type: NgModule,
20
+ args: [{
21
+ declarations: [GraniteCarouselComponent],
22
+ exports: [GraniteCarouselComponent],
23
+ imports: [
24
+ CommonModule,
25
+ CarouselModule,
26
+ GraniteButtonModule,
27
+ GraniteIconModule,
28
+ ],
29
+ }]
30
+ }] });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvY2Fyb3VzZWwvc3JjL2xpYi9jYXJvdXNlbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsbUJBQW1CLEdBQ3BCLE1BQU0sOEJBQThCLENBQUM7O0FBWXRDLE1BQU0sT0FBTyxxQkFBcUI7K0dBQXJCLHFCQUFxQjtnSEFBckIscUJBQXFCLGlCQVRqQix3QkFBd0IsYUFHckMsWUFBWTtZQUNaLGNBQWM7WUFDZCxtQkFBbUI7WUFDbkIsaUJBQWlCLGFBTFQsd0JBQXdCO2dIQVF2QixxQkFBcUIsWUFOOUIsWUFBWTtZQUNaLGNBQWM7WUFDZCxtQkFBbUI7WUFDbkIsaUJBQWlCOzs0RkFHUixxQkFBcUI7a0JBVmpDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsd0JBQXdCLENBQUM7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDLHdCQUF3QixDQUFDO29CQUNuQyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3FCQUNsQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgR3Jhbml0ZUNhcm91c2VsQ29tcG9uZW50IH0gZnJvbSAnLi9jYXJvdXNlbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2Fyb3VzZWxNb2R1bGUgfSBmcm9tICdwcmltZW5nL2Nhcm91c2VsJztcbmltcG9ydCB7XG4gIEdyYW5pdGVJY29uTW9kdWxlLFxuICBHcmFuaXRlQnV0dG9uTW9kdWxlLFxufSBmcm9tICdAaWZzd29ybGQvZ3Jhbml0ZS1jb21wb25lbnRzJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbR3Jhbml0ZUNhcm91c2VsQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0dyYW5pdGVDYXJvdXNlbENvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQ2Fyb3VzZWxNb2R1bGUsXG4gICAgR3Jhbml0ZUJ1dHRvbk1vZHVsZSxcbiAgICBHcmFuaXRlSWNvbk1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgR3Jhbml0ZUNhcm91c2VsTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZzd29ybGQtZ3Jhbml0ZS1jb21wb25lbnRzLWRhdGUtcGlja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvZGF0ZS1waWNrZXIvc3JjL2lmc3dvcmxkLWdyYW5pdGUtY29tcG9uZW50cy1kYXRlLXBpY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ export * from './lib/date-picker.module';
2
+ export * from './lib/date-picker.component';
3
+ export * from './lib/date-range-picker.component';
4
+ export * from './lib/date-picker-trigger-for.directive';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9kYXRlLXBpY2tlci9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyx5Q0FBeUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2RhdGUtcGlja2VyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXRlLXBpY2tlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RhdGUtcGlja2VyLXRyaWdnZXItZm9yLmRpcmVjdGl2ZSc7XG4iXX0=
@@ -0,0 +1,53 @@
1
+ import { Directive, ElementRef, EventEmitter, Input, Output, TemplateRef, ViewChild, } from '@angular/core';
2
+ // eslint-disable-next-line import/no-internal-modules
3
+ import { PrimeNGConfig } from 'primeng/api';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "primeng/api";
6
+ let pickerPanelUid = 0;
7
+ /** Base class with common functionality for date/date-range pickers. */
8
+ // eslint-disable-next-line @angular-eslint/directive-class-suffix
9
+ export class _DatePickerBase {
10
+ constructor(_elementRef, config) {
11
+ this._elementRef = _elementRef;
12
+ this.config = config;
13
+ this.minDate = null;
14
+ this.maxDate = null;
15
+ this.firstDayOfWeek = 0;
16
+ this.pickerClosed = new EventEmitter();
17
+ this.xPosition = 'before';
18
+ this.yPosition = 'below';
19
+ /**
20
+ * Used for locating the panel in tests and setting the aria-control attribute
21
+ * for the picker trigger.
22
+ */
23
+ this.panelId = `granite-date-picker-panel-${pickerPanelUid++}`;
24
+ }
25
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
26
+ ngOnInit() {
27
+ this.config.setTranslation({
28
+ dayNamesMin: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
29
+ });
30
+ }
31
+ _handleKeydown(event) {
32
+ if (event.key === 'Escape') {
33
+ this.pickerClosed.emit();
34
+ }
35
+ }
36
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: _DatePickerBase, deps: [{ token: i0.ElementRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Directive }); }
37
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: _DatePickerBase, inputs: { minDate: "minDate", maxDate: "maxDate", firstDayOfWeek: "firstDayOfWeek" }, outputs: { pickerClosed: "pickerClosed" }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 }); }
38
+ }
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: _DatePickerBase, decorators: [{
40
+ type: Directive
41
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.PrimeNGConfig }], propDecorators: { minDate: [{
42
+ type: Input
43
+ }], maxDate: [{
44
+ type: Input
45
+ }], firstDayOfWeek: [{
46
+ type: Input
47
+ }], pickerClosed: [{
48
+ type: Output
49
+ }], templateRef: [{
50
+ type: ViewChild,
51
+ args: [TemplateRef]
52
+ }] } });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXItYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZ3Jhbml0ZS1jb21wb25lbnRzL2RhdGUtcGlja2VyL3NyYy9saWIvZGF0ZS1waWNrZXItYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLHNEQUFzRDtBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFVNUMsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDO0FBRXZCLHdFQUF3RTtBQUV4RSxrRUFBa0U7QUFDbEUsTUFBTSxPQUFPLGVBQWU7SUFnQzFCLFlBQ1MsV0FBdUIsRUFDdkIsTUFBcUI7UUFEckIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQWhDOUIsWUFBTyxHQUFnQixJQUFJLENBQUM7UUFHNUIsWUFBTyxHQUFnQixJQUFJLENBQUM7UUFHNUIsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFHbEIsaUJBQVksR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUk5RCxjQUFTLEdBQWMsUUFBUSxDQUFDO1FBQ2hDLGNBQVMsR0FBYyxPQUFPLENBQUM7UUFJL0I7OztXQUdHO1FBQ00sWUFBTyxHQUFHLDZCQUE2QixjQUFjLEVBQUUsRUFBRSxDQUFDO0lBV2hFLENBQUM7SUFFSiw2RUFBNkU7SUFDN0UsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO1lBQ3pCLFdBQVcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztTQUNqRCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQW9CO1FBQ2pDLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDOytHQWhEVSxlQUFlO21HQUFmLGVBQWUsd01BYWYsV0FBVzs7NEZBYlgsZUFBZTtrQkFGM0IsU0FBUzsyR0FJUixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJRyxZQUFZO3NCQURwQixNQUFNO2dCQUdpQixXQUFXO3NCQUFsQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8taW50ZXJuYWwtbW9kdWxlc1xuaW1wb3J0IHsgUHJpbWVOR0NvbmZpZyB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7XG4gIENsaWVudElucHV0SW50ZXJmYWNlLFxuICBDbGllbnRPdXRwdXRJbnRlcmZhY2UsXG59IGZyb20gJ0BpZnN3b3JsZC9ncmFuaXRlLWNvbXBvbmVudHMnO1xuXG5leHBvcnQgdHlwZSBQb3NpdGlvblggPSAnYmVmb3JlJyB8ICdhZnRlcic7XG5cbmV4cG9ydCB0eXBlIFBvc2l0aW9uWSA9ICdhYm92ZScgfCAnYmVsb3cnO1xuXG5sZXQgcGlja2VyUGFuZWxVaWQgPSAwO1xuXG4vKiogQmFzZSBjbGFzcyB3aXRoIGNvbW1vbiBmdW5jdGlvbmFsaXR5IGZvciBkYXRlL2RhdGUtcmFuZ2UgcGlja2Vycy4gKi9cbkBEaXJlY3RpdmUoKVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgY2xhc3MgX0RhdGVQaWNrZXJCYXNlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgbWluRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIG1heERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoKVxuICBmaXJzdERheU9mV2VlazogbnVtYmVyID0gMDtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgcGlja2VyQ2xvc2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkKFRlbXBsYXRlUmVmKSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICB4UG9zaXRpb246IFBvc2l0aW9uWCA9ICdiZWZvcmUnO1xuICB5UG9zaXRpb246IFBvc2l0aW9uWSA9ICdiZWxvdyc7XG5cbiAgZGlyZWN0aW9uOiBEaXJlY3Rpb247XG5cbiAgLyoqXG4gICAqIFVzZWQgZm9yIGxvY2F0aW5nIHRoZSBwYW5lbCBpbiB0ZXN0cyBhbmQgc2V0dGluZyB0aGUgYXJpYS1jb250cm9sIGF0dHJpYnV0ZVxuICAgKiBmb3IgdGhlIHBpY2tlciB0cmlnZ2VyLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFuZWxJZCA9IGBncmFuaXRlLWRhdGUtcGlja2VyLXBhbmVsLSR7cGlja2VyUGFuZWxVaWQrK31gO1xuXG4gIC8qKiBDbGllbnQgaW5wdXQgZGV2aWNlIGluZm9ybWF0aW9uICovXG4gIGNsaWVudElucHV0OiBDbGllbnRJbnB1dEludGVyZmFjZTtcblxuICAvKiogQ2xpZW50IG91dHB1dCBkZXZpY2UgaW5mb3JtYXRpb24gKi9cbiAgY2xpZW50T3V0cHV0OiBDbGllbnRPdXRwdXRJbnRlcmZhY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHB1YmxpYyBjb25maWc6IFByaW1lTkdDb25maWdcbiAgKSB7fVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbW9kdWxlLWJvdW5kYXJ5LXR5cGVzXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY29uZmlnLnNldFRyYW5zbGF0aW9uKHtcbiAgICAgIGRheU5hbWVzTWluOiBbJ1MnLCAnTScsICdUJywgJ1cnLCAnVCcsICdGJywgJ1MnXSxcbiAgICB9KTtcbiAgfVxuXG4gIF9oYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIHRoaXMucGlja2VyQ2xvc2VkLmVtaXQoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,228 @@
1
+ import { Directive, ElementRef, Inject, Input, Optional, ViewContainerRef, } from '@angular/core';
2
+ import { FocusMonitor } from '@angular/cdk/a11y';
3
+ import { Directionality } from '@angular/cdk/bidi';
4
+ import { Overlay, OverlayConfig, OverlayOutsideClickDispatcher, } from '@angular/cdk/overlay';
5
+ import { TemplatePortal } from '@angular/cdk/portal';
6
+ import { merge, Subscription } from 'rxjs';
7
+ import { GRANITE_CLIENT_INPUT, GRANITE_CLIENT_OUTPUT, } from '@ifsworld/granite-components';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/cdk/overlay";
10
+ import * as i2 from "@angular/cdk/bidi";
11
+ import * as i3 from "@angular/cdk/a11y";
12
+ export class GraniteDatePickerTriggerForDirective {
13
+ constructor(_overlay, _element, _viewContainerRef, _outsideClickDispatcher,
14
+ /** Client input device information */
15
+ _clientInput,
16
+ /** Client output device information */
17
+ _clientOutput, _dir, _focusMonitor) {
18
+ this._overlay = _overlay;
19
+ this._element = _element;
20
+ this._viewContainerRef = _viewContainerRef;
21
+ this._outsideClickDispatcher = _outsideClickDispatcher;
22
+ this._clientInput = _clientInput;
23
+ this._clientOutput = _clientOutput;
24
+ this._dir = _dir;
25
+ this._focusMonitor = _focusMonitor;
26
+ /** Whether the associated picker is open */
27
+ this._isPickerOpen = false;
28
+ this._pickerCloseSubscription = Subscription.EMPTY;
29
+ this._portal = null;
30
+ this._overlayRef = null;
31
+ }
32
+ ngAfterContentInit() {
33
+ const selectionChanged = this.picker.selectionChanged;
34
+ const closed = this.picker.pickerClosed;
35
+ this._pickerCloseSubscription = merge(selectionChanged, closed).subscribe(() => {
36
+ this.closePicker();
37
+ });
38
+ }
39
+ ngOnDestroy() {
40
+ if (this._overlayRef) {
41
+ this._overlayRef.dispose();
42
+ this._overlayRef = null;
43
+ }
44
+ this._pickerCloseSubscription.unsubscribe();
45
+ }
46
+ isOpen() {
47
+ return this._isPickerOpen;
48
+ }
49
+ openPicker() {
50
+ if (this._isPickerOpen) {
51
+ return;
52
+ }
53
+ this.picker.direction = this._dir.value === 'rtl' ? 'rtl' : 'ltr';
54
+ this.picker.clientInput = this._clientInput;
55
+ this.picker.clientOutput = this._clientOutput;
56
+ const panelClass = [];
57
+ if (this._clientOutput?.device === 'touch') {
58
+ panelClass.push('granite-overlay-pane-center');
59
+ }
60
+ const scrollStrategy = this._clientOutput?.device !== 'touch'
61
+ ? this._overlay.scrollStrategies.reposition()
62
+ : this._overlay.scrollStrategies.block();
63
+ const hasBackdrop = this._clientOutput?.device === 'touch';
64
+ if (!this._overlayRef) {
65
+ const config = new OverlayConfig({
66
+ positionStrategy: this._positionStrategy(),
67
+ backdropClass: 'granite-overlay-dark-glass-backdrop',
68
+ scrollStrategy,
69
+ direction: this._dir,
70
+ panelClass,
71
+ hasBackdrop,
72
+ });
73
+ this._overlayRef = this._overlay.create(config);
74
+ }
75
+ if (!this._portal || this._portal.templateRef !== this.picker.templateRef) {
76
+ this._portal = new TemplatePortal(this.picker.templateRef, this._viewContainerRef);
77
+ }
78
+ // Attach portal to overlay ref (which is a portal outlet)
79
+ this._overlayRef.attach(this._portal);
80
+ this._outsideClickDispatcher.add(this._overlayRef);
81
+ this._overlayRef.outsidePointerEvents().subscribe((event) => {
82
+ event.stopPropagation();
83
+ this.closePicker();
84
+ });
85
+ this._isPickerOpen = true;
86
+ }
87
+ /** Toggles the picker between the open and closed states. */
88
+ togglePicker() {
89
+ if (this._isPickerOpen) {
90
+ this.closePicker();
91
+ }
92
+ else {
93
+ this.openPicker();
94
+ }
95
+ }
96
+ /** Close the associated picker */
97
+ closePicker() {
98
+ if (!this._overlayRef || !this._isPickerOpen) {
99
+ return;
100
+ }
101
+ this._outsideClickDispatcher.remove(this._overlayRef);
102
+ this._overlayRef.detach();
103
+ this._restoreFocus();
104
+ this._isPickerOpen = false;
105
+ }
106
+ /** Handles key presses on the trigger. */
107
+ _handleKeydown(event) {
108
+ if (event.key === 'Enter') {
109
+ event.preventDefault();
110
+ this.togglePicker();
111
+ }
112
+ }
113
+ /** Handles click events on the trigger. */
114
+ _handleClick() {
115
+ this.togglePicker();
116
+ }
117
+ /**
118
+ * Restores focus to the element that was focused before the picker was open.
119
+ */
120
+ _restoreFocus(origin = 'program', options) {
121
+ if (this._focusMonitor) {
122
+ this._focusMonitor.focusVia(this._element, origin, options);
123
+ }
124
+ else {
125
+ this._element.nativeElement.focus(options);
126
+ }
127
+ }
128
+ /**
129
+ * Returns strategy for positioning the overlay for desktop devices:
130
+ */
131
+ _desktopPositionStrategy() {
132
+ const positionStrategy = this._overlay
133
+ .position()
134
+ .flexibleConnectedTo(this._element)
135
+ .withLockedPosition()
136
+ .withTransformOriginOn('.granite-date-picker')
137
+ .withPush(false);
138
+ this._setPosition(positionStrategy);
139
+ return positionStrategy;
140
+ }
141
+ /**
142
+ * Sets the appropriate positions on a position strategy
143
+ * so the overlay connects with the trigger correctly.
144
+ * @param positionStrategy Strategy whose position to update.
145
+ */
146
+ _setPosition(positionStrategy) {
147
+ const [originX, originFallbackX] = this.picker.xPosition === 'before' ? ['end', 'start'] : ['start', 'end'];
148
+ const [overlayY, overlayFallbackY] = this.picker.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];
149
+ let [originY, originFallbackY] = [overlayY, overlayFallbackY];
150
+ const [overlayX, overlayFallbackX] = [originX, originFallbackX];
151
+ const offsetY = 0;
152
+ originY = overlayY === 'top' ? 'bottom' : 'top';
153
+ originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';
154
+ positionStrategy.withPositions([
155
+ { originX, originY, overlayX, overlayY, offsetY },
156
+ {
157
+ originX: originFallbackX,
158
+ originY,
159
+ overlayX: overlayFallbackX,
160
+ overlayY,
161
+ offsetY,
162
+ },
163
+ {
164
+ originX,
165
+ originY: originFallbackY,
166
+ overlayX,
167
+ overlayY: overlayFallbackY,
168
+ offsetY: -offsetY,
169
+ },
170
+ {
171
+ originX: originFallbackX,
172
+ originY: originFallbackY,
173
+ overlayX: overlayFallbackX,
174
+ overlayY: overlayFallbackY,
175
+ offsetY: -offsetY,
176
+ },
177
+ ]);
178
+ }
179
+ /**
180
+ * Returns strategy for positioning the overlay depending on what type of
181
+ * device the picker is being shown on
182
+ */
183
+ _positionStrategy() {
184
+ if (this._clientOutput?.device !== 'touch') {
185
+ return this._desktopPositionStrategy();
186
+ }
187
+ return this._touchPositionStrategy();
188
+ }
189
+ /**
190
+ * Returns strategy for positioning the overlay for touch devices:
191
+ * Place centered in the screen.
192
+ */
193
+ _touchPositionStrategy() {
194
+ return this._overlay.position().global();
195
+ }
196
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteDatePickerTriggerForDirective, deps: [{ token: i1.Overlay }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i1.OverlayOutsideClickDispatcher }, { token: GRANITE_CLIENT_INPUT, optional: true }, { token: GRANITE_CLIENT_OUTPUT, optional: true }, { token: i2.Directionality, optional: true }, { token: i3.FocusMonitor }], target: i0.ɵɵFactoryTarget.Directive }); }
197
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: GraniteDatePickerTriggerForDirective, selector: "[graniteDatePickerTriggerFor]", inputs: { picker: ["graniteDatePickerTriggerFor", "picker"] }, host: { attributes: { "aria-haspopup": "true" }, listeners: { "keydown": "_handleKeydown($event)", "click": "_handleClick($event)" }, properties: { "attr.aria-expanded": "_isPickerOpen || null", "attr.aria-controls": "_isPickerOpen ? picker.panelId : null" }, classAttribute: "granite-date-picker-trigger" }, ngImport: i0 }); }
198
+ }
199
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GraniteDatePickerTriggerForDirective, decorators: [{
200
+ type: Directive,
201
+ args: [{
202
+ selector: `[graniteDatePickerTriggerFor]`,
203
+ host: {
204
+ class: 'granite-date-picker-trigger',
205
+ 'aria-haspopup': 'true',
206
+ '[attr.aria-expanded]': '_isPickerOpen || null',
207
+ '[attr.aria-controls]': '_isPickerOpen ? picker.panelId : null',
208
+ '(keydown)': '_handleKeydown($event)',
209
+ '(click)': '_handleClick($event)',
210
+ },
211
+ }]
212
+ }], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i1.OverlayOutsideClickDispatcher }, { type: undefined, decorators: [{
213
+ type: Inject,
214
+ args: [GRANITE_CLIENT_INPUT]
215
+ }, {
216
+ type: Optional
217
+ }] }, { type: undefined, decorators: [{
218
+ type: Inject,
219
+ args: [GRANITE_CLIENT_OUTPUT]
220
+ }, {
221
+ type: Optional
222
+ }] }, { type: i2.Directionality, decorators: [{
223
+ type: Optional
224
+ }] }, { type: i3.FocusMonitor }], propDecorators: { picker: [{
225
+ type: Input,
226
+ args: ['graniteDatePickerTriggerFor']
227
+ }] } });
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXItdHJpZ2dlci1mb3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvZGF0ZS1waWNrZXIvc3JjL2xpYi9kYXRlLXBpY2tlci10cmlnZ2VyLWZvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUdMLE9BQU8sRUFDUCxhQUFhLEVBQ2IsNkJBQTZCLEdBSTlCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXJELE9BQU8sRUFBRSxLQUFLLEVBQWMsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZELE9BQU8sRUFHTCxvQkFBb0IsRUFDcEIscUJBQXFCLEdBQ3RCLE1BQU0sOEJBQThCLENBQUM7Ozs7O0FBZXRDLE1BQU0sT0FBTyxvQ0FBb0M7SUFnQi9DLFlBQ1UsUUFBaUIsRUFDakIsUUFBaUMsRUFDakMsaUJBQW1DLEVBQ25DLHVCQUFzRDtJQUU5RCxzQ0FBc0M7SUFHL0IsWUFBa0M7SUFFekMsdUNBQXVDO0lBR2hDLGFBQW9DLEVBR25DLElBQW9CLEVBRXBCLGFBQTJCO1FBbEIzQixhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLGFBQVEsR0FBUixRQUFRLENBQXlCO1FBQ2pDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDbkMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUErQjtRQUt2RCxpQkFBWSxHQUFa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QUFFLGVBQWU7Z0JBQ3hCLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLE9BQU8sRUFBRSxDQUFDLE9BQU87YUFDbEI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssaUJBQWlCO1FBQ3ZCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDM0MsT0FBTyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssc0JBQXNCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMzQyxDQUFDOytHQTNPVSxvQ0FBb0MsZ0pBdUJyQyxvQkFBb0IsNkJBS3BCLHFCQUFxQjttR0E1QnBCLG9DQUFvQzs7NEZBQXBDLG9DQUFvQztrQkFYaEQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsK0JBQStCO29CQUN6QyxJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLDZCQUE2Qjt3QkFDcEMsZUFBZSxFQUFFLE1BQU07d0JBQ3ZCLHNCQUFzQixFQUFFLHVCQUF1Qjt3QkFDL0Msc0JBQXNCLEVBQUUsdUNBQXVDO3dCQUMvRCxXQUFXLEVBQUUsd0JBQXdCO3dCQUNyQyxTQUFTLEVBQUUsc0JBQXNCO3FCQUNsQztpQkFDRjs7MEJBd0JJLE1BQU07MkJBQUMsb0JBQW9COzswQkFDM0IsUUFBUTs7MEJBSVIsTUFBTTsyQkFBQyxxQkFBcUI7OzBCQUM1QixRQUFROzswQkFHUixRQUFRO29FQTFCWCxNQUFNO3NCQURMLEtBQUs7dUJBQUMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRm9jdXNNb25pdG9yLCBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHtcbiAgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LFxuICBIb3Jpem9udGFsQ29ubmVjdGlvblBvcyxcbiAgT3ZlcmxheSxcbiAgT3ZlcmxheUNvbmZpZyxcbiAgT3ZlcmxheU91dHNpZGVDbGlja0Rpc3BhdGNoZXIsXG4gIE92ZXJsYXlSZWYsXG4gIFBvc2l0aW9uU3RyYXRlZ3ksXG4gIFZlcnRpY2FsQ29ubmVjdGlvblBvcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcblxuaW1wb3J0IHsgbWVyZ2UsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBDbGllbnRJbnB1dEludGVyZmFjZSxcbiAgQ2xpZW50T3V0cHV0SW50ZXJmYWNlLFxuICBHUkFOSVRFX0NMSUVOVF9JTlBVVCxcbiAgR1JBTklURV9DTElFTlRfT1VUUFVULFxufSBmcm9tICdAaWZzd29ybGQvZ3Jhbml0ZS1jb21wb25lbnRzJztcbmltcG9ydCB7IEdyYW5pdGVEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlLXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3Jhbml0ZURhdGVSYW5nZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiBgW2dyYW5pdGVEYXRlUGlja2VyVHJpZ2dlckZvcl1gLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdncmFuaXRlLWRhdGUtcGlja2VyLXRyaWdnZXInLFxuICAgICdhcmlhLWhhc3BvcHVwJzogJ3RydWUnLFxuICAgICdbYXR0ci5hcmlhLWV4cGFuZGVkXSc6ICdfaXNQaWNrZXJPcGVuIHx8IG51bGwnLFxuICAgICdbYXR0ci5hcmlhLWNvbnRyb2xzXSc6ICdfaXNQaWNrZXJPcGVuID8gcGlja2VyLnBhbmVsSWQgOiBudWxsJyxcbiAgICAnKGtleWRvd24pJzogJ19oYW5kbGVLZXlkb3duKCRldmVudCknLFxuICAgICcoY2xpY2spJzogJ19oYW5kbGVDbGljaygkZXZlbnQpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgR3Jhbml0ZURhdGVQaWNrZXJUcmlnZ2VyRm9yRGlyZWN0aXZlXG4gIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95XG57XG4gIC8qKiBSZWZlcmVuY2VzIHRoZSBwaWNrZXIgaW5zdGFuY2UgdGhhdCB0aGUgdHJpZ2dlciBpcyBhc3NvY2lhdGVkIHdpdGguICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gIEBJbnB1dCgnZ3Jhbml0ZURhdGVQaWNrZXJUcmlnZ2VyRm9yJylcbiAgcGlja2VyOiBHcmFuaXRlRGF0ZVBpY2tlckNvbXBvbmVudCB8IEdyYW5pdGVEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQ7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGFzc29jaWF0ZWQgcGlja2VyIGlzIG9wZW4gKi9cbiAgX2lzUGlja2VyT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX3BpY2tlckNsb3NlU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gIHByaXZhdGUgX3BvcnRhbDogVGVtcGxhdGVQb3J0YWwgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX292ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcml2YXRlIF9vdXRzaWRlQ2xpY2tEaXNwYXRjaGVyOiBPdmVybGF5T3V0c2lkZUNsaWNrRGlzcGF0Y2hlcixcblxuICAgIC8qKiBDbGllbnQgaW5wdXQgZGV2aWNlIGluZm9ybWF0aW9uICovXG4gICAgQEluamVjdChHUkFOSVRFX0NMSUVOVF9JTlBVVClcbiAgICBAT3B0aW9uYWwoKVxuICAgIHB1YmxpYyBfY2xpZW50SW5wdXQ6IENsaWVudElucHV0SW50ZXJmYWNlLFxuXG4gICAgLyoqIENsaWVudCBvdXRwdXQgZGV2aWNlIGluZm9ybWF0aW9uICovXG4gICAgQEluamVjdChHUkFOSVRFX0NMSUVOVF9PVVRQVVQpXG4gICAgQE9wdGlvbmFsKClcbiAgICBwdWJsaWMgX2NsaWVudE91dHB1dDogQ2xpZW50T3V0cHV0SW50ZXJmYWNlLFxuXG4gICAgQE9wdGlvbmFsKClcbiAgICBwcml2YXRlIF9kaXI6IERpcmVjdGlvbmFsaXR5LFxuXG4gICAgcHJpdmF0ZSBfZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3JcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3Rpb25DaGFuZ2VkID0gdGhpcy5waWNrZXIuc2VsZWN0aW9uQ2hhbmdlZCBhcyBPYnNlcnZhYmxlPGFueT47XG4gICAgY29uc3QgY2xvc2VkID0gdGhpcy5waWNrZXIucGlja2VyQ2xvc2VkIGFzIE9ic2VydmFibGU8YW55PjtcblxuICAgIHRoaXMuX3BpY2tlckNsb3NlU3Vic2NyaXB0aW9uID0gbWVyZ2Uoc2VsZWN0aW9uQ2hhbmdlZCwgY2xvc2VkKS5zdWJzY3JpYmUoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xvc2VQaWNrZXIoKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZiA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuX3BpY2tlckNsb3NlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzUGlja2VyT3BlbjtcbiAgfVxuXG4gIG9wZW5QaWNrZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2lzUGlja2VyT3Blbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucGlja2VyLmRpcmVjdGlvbiA9IHRoaXMuX2Rpci52YWx1ZSA9PT0gJ3J0bCcgPyAncnRsJyA6ICdsdHInO1xuICAgIHRoaXMucGlja2VyLmNsaWVudElucHV0ID0gdGhpcy5fY2xpZW50SW5wdXQ7XG4gICAgdGhpcy5waWNrZXIuY2xpZW50T3V0cHV0ID0gdGhpcy5fY2xpZW50T3V0cHV0O1xuXG4gICAgY29uc3QgcGFuZWxDbGFzczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAodGhpcy5fY2xpZW50T3V0cHV0Py5kZXZpY2UgPT09ICd0b3VjaCcpIHtcbiAgICAgIHBhbmVsQ2xhc3MucHVzaCgnZ3Jhbml0ZS1vdmVybGF5LXBhbmUtY2VudGVyJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsU3RyYXRlZ3kgPVxuICAgICAgdGhpcy5fY2xpZW50T3V0cHV0Py5kZXZpY2UgIT09ICd0b3VjaCdcbiAgICAgICAgPyB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXG4gICAgICAgIDogdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKCk7XG5cbiAgICBjb25zdCBoYXNCYWNrZHJvcCA9IHRoaXMuX2NsaWVudE91dHB1dD8uZGV2aWNlID09PSAndG91Y2gnO1xuXG4gICAgaWYgKCF0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICBjb25zdCBjb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3koKSxcbiAgICAgICAgYmFja2Ryb3BDbGFzczogJ2dyYW5pdGUtb3ZlcmxheS1kYXJrLWdsYXNzLWJhY2tkcm9wJyxcbiAgICAgICAgc2Nyb2xsU3RyYXRlZ3ksXG4gICAgICAgIGRpcmVjdGlvbjogdGhpcy5fZGlyLFxuICAgICAgICBwYW5lbENsYXNzLFxuICAgICAgICBoYXNCYWNrZHJvcCxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUoY29uZmlnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX3BvcnRhbCB8fCB0aGlzLl9wb3J0YWwudGVtcGxhdGVSZWYgIT09IHRoaXMucGlja2VyLnRlbXBsYXRlUmVmKSB7XG4gICAgICB0aGlzLl9wb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwoXG4gICAgICAgIHRoaXMucGlja2VyLnRlbXBsYXRlUmVmLFxuICAgICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmXG4gICAgICApO1xuICAgIH1cbiAgICAvLyBBdHRhY2ggcG9ydGFsIHRvIG92ZXJsYXkgcmVmICh3aGljaCBpcyBhIHBvcnRhbCBvdXRsZXQpXG4gICAgdGhpcy5fb3ZlcmxheVJlZi5hdHRhY2godGhpcy5fcG9ydGFsKTtcbiAgICB0aGlzLl9vdXRzaWRlQ2xpY2tEaXNwYXRjaGVyLmFkZCh0aGlzLl9vdmVybGF5UmVmKTtcbiAgICB0aGlzLl9vdmVybGF5UmVmLm91dHNpZGVQb2ludGVyRXZlbnRzKCkuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB0aGlzLmNsb3NlUGlja2VyKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9pc1BpY2tlck9wZW4gPSB0cnVlO1xuICB9XG5cbiAgLyoqIFRvZ2dsZXMgdGhlIHBpY2tlciBiZXR3ZWVuIHRoZSBvcGVuIGFuZCBjbG9zZWQgc3RhdGVzLiAqL1xuICB0b2dnbGVQaWNrZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2lzUGlja2VyT3Blbikge1xuICAgICAgdGhpcy5jbG9zZVBpY2tlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW5QaWNrZXIoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2xvc2UgdGhlIGFzc29jaWF0ZWQgcGlja2VyICovXG4gIGNsb3NlUGlja2VyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fb3ZlcmxheVJlZiB8fCAhdGhpcy5faXNQaWNrZXJPcGVuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fb3V0c2lkZUNsaWNrRGlzcGF0Y2hlci5yZW1vdmUodGhpcy5fb3ZlcmxheVJlZik7XG4gICAgdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKTtcblxuICAgIHRoaXMuX3Jlc3RvcmVGb2N1cygpO1xuICAgIHRoaXMuX2lzUGlja2VyT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgLyoqIEhhbmRsZXMga2V5IHByZXNzZXMgb24gdGhlIHRyaWdnZXIuICovXG4gIF9oYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMudG9nZ2xlUGlja2VyKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEhhbmRsZXMgY2xpY2sgZXZlbnRzIG9uIHRoZSB0cmlnZ2VyLiAqL1xuICBfaGFuZGxlQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVQaWNrZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN0b3JlcyBmb2N1cyB0byB0aGUgZWxlbWVudCB0aGF0IHdhcyBmb2N1c2VkIGJlZm9yZSB0aGUgcGlja2VyIHdhcyBvcGVuLlxuICAgKi9cbiAgX3Jlc3RvcmVGb2N1cyhvcmlnaW46IEZvY3VzT3JpZ2luID0gJ3Byb2dyYW0nLCBvcHRpb25zPzogRm9jdXNPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2ZvY3VzTW9uaXRvcikge1xuICAgICAgdGhpcy5fZm9jdXNNb25pdG9yLmZvY3VzVmlhKHRoaXMuX2VsZW1lbnQsIG9yaWdpbiwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cyhvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBzdHJhdGVneSBmb3IgcG9zaXRpb25pbmcgdGhlIG92ZXJsYXkgZm9yIGRlc2t0b3AgZGV2aWNlczpcbiAgICovXG4gIHByaXZhdGUgX2Rlc2t0b3BQb3NpdGlvblN0cmF0ZWd5KCk6IFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3k6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSA9IHRoaXMuX292ZXJsYXlcbiAgICAgIC5wb3NpdGlvbigpXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLl9lbGVtZW50KVxuICAgICAgLndpdGhMb2NrZWRQb3NpdGlvbigpXG4gICAgICAud2l0aFRyYW5zZm9ybU9yaWdpbk9uKCcuZ3Jhbml0ZS1kYXRlLXBpY2tlcicpXG4gICAgICAud2l0aFB1c2goZmFsc2UpO1xuXG4gICAgdGhpcy5fc2V0UG9zaXRpb24ocG9zaXRpb25TdHJhdGVneSk7XG4gICAgcmV0dXJuIHBvc2l0aW9uU3RyYXRlZ3k7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYXBwcm9wcmlhdGUgcG9zaXRpb25zIG9uIGEgcG9zaXRpb24gc3RyYXRlZ3lcbiAgICogc28gdGhlIG92ZXJsYXkgY29ubmVjdHMgd2l0aCB0aGUgdHJpZ2dlciBjb3JyZWN0bHkuXG4gICAqIEBwYXJhbSBwb3NpdGlvblN0cmF0ZWd5IFN0cmF0ZWd5IHdob3NlIHBvc2l0aW9uIHRvIHVwZGF0ZS5cbiAgICovXG4gIHByaXZhdGUgX3NldFBvc2l0aW9uKHBvc2l0aW9uU3RyYXRlZ3k6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSkge1xuICAgIGNvbnN0IFtvcmlnaW5YLCBvcmlnaW5GYWxsYmFja1hdOiBIb3Jpem9udGFsQ29ubmVjdGlvblBvc1tdID1cbiAgICAgIHRoaXMucGlja2VyLnhQb3NpdGlvbiA9PT0gJ2JlZm9yZScgPyBbJ2VuZCcsICdzdGFydCddIDogWydzdGFydCcsICdlbmQnXTtcblxuICAgIGNvbnN0IFtvdmVybGF5WSwgb3ZlcmxheUZhbGxiYWNrWV06IFZlcnRpY2FsQ29ubmVjdGlvblBvc1tdID1cbiAgICAgIHRoaXMucGlja2VyLnlQb3NpdGlvbiA9PT0gJ2Fib3ZlJyA/IFsnYm90dG9tJywgJ3RvcCddIDogWyd0b3AnLCAnYm90dG9tJ107XG5cbiAgICBsZXQgW29yaWdpblksIG9yaWdpbkZhbGxiYWNrWV0gPSBbb3ZlcmxheVksIG92ZXJsYXlGYWxsYmFja1ldO1xuICAgIGNvbnN0IFtvdmVybGF5WCwgb3ZlcmxheUZhbGxiYWNrWF0gPSBbb3JpZ2luWCwgb3JpZ2luRmFsbGJhY2tYXTtcbiAgICBjb25zdCBvZmZzZXRZID0gMDtcblxuICAgIG9yaWdpblkgPSBvdmVybGF5WSA9PT0gJ3RvcCcgPyAnYm90dG9tJyA6ICd0b3AnO1xuICAgIG9yaWdpbkZhbGxiYWNrWSA9IG92ZXJsYXlGYWxsYmFja1kgPT09ICd0b3AnID8gJ2JvdHRvbScgOiAndG9wJztcblxuICAgIHBvc2l0aW9uU3RyYXRlZ3kud2l0aFBvc2l0aW9ucyhbXG4gICAgICB7IG9yaWdpblgsIG9yaWdpblksIG92ZXJsYXlYLCBvdmVybGF5WSwgb2Zmc2V0WSB9LFxuICAgICAge1xuICAgICAgICBvcmlnaW5YOiBvcmlnaW5GYWxsYmFja1gsXG4gICAgICAgIG9yaWdpblksXG4gICAgICAgIG92ZXJsYXlYOiBvdmVybGF5RmFsbGJhY2tYLFxuICAgICAgICBvdmVybGF5WSxcbiAgICAgICAgb2Zmc2V0WSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9yaWdpblgsXG4gICAgICAgIG9yaWdpblk6IG9yaWdpbkZhbGxiYWNrWSxcbiAgICAgICAgb3ZlcmxheVgsXG4gICAgICAgIG92ZXJsYXlZOiBvdmVybGF5RmFsbGJhY2tZLFxuICAgICAgICBvZmZzZXRZOiAtb2Zmc2V0WSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6IG9yaWdpbkZhbGxiYWNrWCxcbiAgICAgICAgb3JpZ2luWTogb3JpZ2luRmFsbGJhY2tZLFxuICAgICAgICBvdmVybGF5WDogb3ZlcmxheUZhbGxiYWNrWCxcbiAgICAgICAgb3ZlcmxheVk6IG92ZXJsYXlGYWxsYmFja1ksXG4gICAgICAgIG9mZnNldFk6IC1vZmZzZXRZLFxuICAgICAgfSxcbiAgICBdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHN0cmF0ZWd5IGZvciBwb3NpdGlvbmluZyB0aGUgb3ZlcmxheSBkZXBlbmRpbmcgb24gd2hhdCB0eXBlIG9mXG4gICAqIGRldmljZSB0aGUgcGlja2VyIGlzIGJlaW5nIHNob3duIG9uXG4gICAqL1xuICBwcml2YXRlIF9wb3NpdGlvblN0cmF0ZWd5KCk6IFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgIGlmICh0aGlzLl9jbGllbnRPdXRwdXQ/LmRldmljZSAhPT0gJ3RvdWNoJykge1xuICAgICAgcmV0dXJuIHRoaXMuX2Rlc2t0b3BQb3NpdGlvblN0cmF0ZWd5KCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl90b3VjaFBvc2l0aW9uU3RyYXRlZ3koKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHN0cmF0ZWd5IGZvciBwb3NpdGlvbmluZyB0aGUgb3ZlcmxheSBmb3IgdG91Y2ggZGV2aWNlczpcbiAgICogUGxhY2UgY2VudGVyZWQgaW4gdGhlIHNjcmVlbi5cbiAgICovXG4gIHByaXZhdGUgX3RvdWNoUG9zaXRpb25TdHJhdGVneSgpOiBQb3NpdGlvblN0cmF0ZWd5IHtcbiAgICByZXR1cm4gdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpO1xuICB9XG59XG4iXX0=