oasys-lib 2.5.0 → 2.6.0-rc.0

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 (138) hide show
  1. package/fesm2022/oasys-lib.mjs +275 -275
  2. package/fesm2022/oasys-lib.mjs.map +1 -1
  3. package/package.json +3 -5
  4. package/src/assets/bloomandwild/variables.css +1 -1
  5. package/src/assets/bloomon/variables.css +1 -1
  6. package/src/assets/global/scss-breakpoints.scss +1 -1
  7. package/esm2022/lib/components/alert/alert-cancel.directive.mjs +0 -22
  8. package/esm2022/lib/components/alert/alert-confirm.directive.mjs +0 -22
  9. package/esm2022/lib/components/alert/alert-content.directive.mjs +0 -14
  10. package/esm2022/lib/components/alert/alert-title.directive.mjs +0 -14
  11. package/esm2022/lib/components/alert/alert.component.mjs +0 -78
  12. package/esm2022/lib/components/alert/alert.module.mjs +0 -40
  13. package/esm2022/lib/components/alert/index.mjs +0 -7
  14. package/esm2022/lib/components/banner/banner.component.mjs +0 -62
  15. package/esm2022/lib/components/banner/banner.module.mjs +0 -16
  16. package/esm2022/lib/components/banner/index.mjs +0 -3
  17. package/esm2022/lib/components/button/button.component.mjs +0 -120
  18. package/esm2022/lib/components/button/button.mjs +0 -2
  19. package/esm2022/lib/components/button/button.module.mjs +0 -16
  20. package/esm2022/lib/components/button/index.mjs +0 -4
  21. package/esm2022/lib/components/button-group/button-group.component.mjs +0 -55
  22. package/esm2022/lib/components/button-group/button-group.module.mjs +0 -16
  23. package/esm2022/lib/components/button-group/index.mjs +0 -3
  24. package/esm2022/lib/components/card/card.component.mjs +0 -87
  25. package/esm2022/lib/components/card/card.mjs +0 -2
  26. package/esm2022/lib/components/card/card.module.mjs +0 -16
  27. package/esm2022/lib/components/card/index.mjs +0 -3
  28. package/esm2022/lib/components/carousel/carousel.component.mjs +0 -289
  29. package/esm2022/lib/components/carousel/carousel.module.mjs +0 -16
  30. package/esm2022/lib/components/carousel/index.mjs +0 -3
  31. package/esm2022/lib/components/divider/divider.component.mjs +0 -22
  32. package/esm2022/lib/components/divider/divider.mjs +0 -2
  33. package/esm2022/lib/components/divider/divider.module.mjs +0 -16
  34. package/esm2022/lib/components/divider/index.mjs +0 -3
  35. package/esm2022/lib/components/form/checkbox/checkbox.component.mjs +0 -81
  36. package/esm2022/lib/components/form/checkbox/checkbox.module.mjs +0 -16
  37. package/esm2022/lib/components/form/checkbox/index.mjs +0 -3
  38. package/esm2022/lib/components/form/chip/chip.component.mjs +0 -88
  39. package/esm2022/lib/components/form/chip/chip.module.mjs +0 -16
  40. package/esm2022/lib/components/form/chip/index.mjs +0 -3
  41. package/esm2022/lib/components/form/combobox/combobox.component.mjs +0 -478
  42. package/esm2022/lib/components/form/combobox/combobox.mjs +0 -2
  43. package/esm2022/lib/components/form/combobox/combobox.module.mjs +0 -82
  44. package/esm2022/lib/components/form/combobox/index.mjs +0 -3
  45. package/esm2022/lib/components/form/errors/form-errors.component.mjs +0 -26
  46. package/esm2022/lib/components/form/errors/form-errors.module.mjs +0 -16
  47. package/esm2022/lib/components/form/errors/index.mjs +0 -3
  48. package/esm2022/lib/components/form/errors-summary/errors-summary-item/form-errors-summary-item.component.mjs +0 -47
  49. package/esm2022/lib/components/form/errors-summary/errors-summary-title/form-errors-summary-title.component.mjs +0 -21
  50. package/esm2022/lib/components/form/errors-summary/form-errors-summary.component.mjs +0 -30
  51. package/esm2022/lib/components/form/errors-summary/index.mjs +0 -4
  52. package/esm2022/lib/components/form/form-group/form-group.component.mjs +0 -32
  53. package/esm2022/lib/components/form/form-group/form-group.module.mjs +0 -16
  54. package/esm2022/lib/components/form/form-group/index.mjs +0 -3
  55. package/esm2022/lib/components/form/forms.mjs +0 -2
  56. package/esm2022/lib/components/form/radio/index.mjs +0 -3
  57. package/esm2022/lib/components/form/radio/radio.component.mjs +0 -80
  58. package/esm2022/lib/components/form/radio/radio.module.mjs +0 -16
  59. package/esm2022/lib/components/form/text-input/index.mjs +0 -3
  60. package/esm2022/lib/components/form/text-input/text-input.component.mjs +0 -185
  61. package/esm2022/lib/components/form/text-input/text-input.mjs +0 -2
  62. package/esm2022/lib/components/form/text-input/text-input.module.mjs +0 -16
  63. package/esm2022/lib/components/heading/heading.component.mjs +0 -107
  64. package/esm2022/lib/components/heading/heading.mjs +0 -2
  65. package/esm2022/lib/components/heading/heading.module.mjs +0 -16
  66. package/esm2022/lib/components/heading/index.mjs +0 -3
  67. package/esm2022/lib/components/hero/hero.component.mjs +0 -109
  68. package/esm2022/lib/components/hero/hero.module.mjs +0 -16
  69. package/esm2022/lib/components/hero/index.mjs +0 -3
  70. package/esm2022/lib/components/icon/icon.component.mjs +0 -61
  71. package/esm2022/lib/components/icon/icon.mjs +0 -2
  72. package/esm2022/lib/components/icon/icon.module.mjs +0 -16
  73. package/esm2022/lib/components/icon/index.mjs +0 -4
  74. package/esm2022/lib/components/image/image.component.mjs +0 -154
  75. package/esm2022/lib/components/image/image.mjs +0 -2
  76. package/esm2022/lib/components/image/image.module.mjs +0 -16
  77. package/esm2022/lib/components/image/index.mjs +0 -3
  78. package/esm2022/lib/components/label/index.mjs +0 -3
  79. package/esm2022/lib/components/label/label.component.mjs +0 -69
  80. package/esm2022/lib/components/label/label.module.mjs +0 -16
  81. package/esm2022/lib/components/layout/Layout.mjs +0 -2
  82. package/esm2022/lib/components/layout/box/box.component.mjs +0 -183
  83. package/esm2022/lib/components/layout/box/box.mjs +0 -3
  84. package/esm2022/lib/components/layout/container/container.component.mjs +0 -44
  85. package/esm2022/lib/components/layout/grid/grid-column.component.mjs +0 -55
  86. package/esm2022/lib/components/layout/grid/grid.component.mjs +0 -53
  87. package/esm2022/lib/components/layout/index.mjs +0 -8
  88. package/esm2022/lib/components/layout/layout.module.mjs +0 -40
  89. package/esm2022/lib/components/layout/stack/stack.component.mjs +0 -64
  90. package/esm2022/lib/components/navigation/breadcrumbs/breadcrumbs.component.mjs +0 -37
  91. package/esm2022/lib/components/navigation/breadcrumbs/breadcrumbs.module.mjs +0 -16
  92. package/esm2022/lib/components/navigation/breadcrumbs/index.mjs +0 -3
  93. package/esm2022/lib/components/navigation/tabs/tab/tab.component.mjs +0 -33
  94. package/esm2022/lib/components/navigation/tabs/tab-active/tab-active.component.mjs +0 -19
  95. package/esm2022/lib/components/navigation/tabs/tab-group/index.mjs +0 -4
  96. package/esm2022/lib/components/navigation/tabs/tab-group/tab-group.component.mjs +0 -38
  97. package/esm2022/lib/components/navigation/tabs/tab-group/tab-group.module.mjs +0 -27
  98. package/esm2022/lib/components/navigation/tabs/tab-header/tab-header.component.mjs +0 -70
  99. package/esm2022/lib/components/pill/index.mjs +0 -3
  100. package/esm2022/lib/components/pill/pill.component.mjs +0 -21
  101. package/esm2022/lib/components/pill/pill.mjs +0 -2
  102. package/esm2022/lib/components/pill/pill.module.mjs +0 -16
  103. package/esm2022/lib/components/pill-group/index.mjs +0 -3
  104. package/esm2022/lib/components/pill-group/pill-group.component.mjs +0 -41
  105. package/esm2022/lib/components/pill-group/pill-group.module.mjs +0 -16
  106. package/esm2022/lib/components/price/index.mjs +0 -3
  107. package/esm2022/lib/components/price/price.component.mjs +0 -32
  108. package/esm2022/lib/components/price/price.module.mjs +0 -16
  109. package/esm2022/lib/components/progress-bar/index.mjs +0 -2
  110. package/esm2022/lib/components/progress-bar/progress-bar.component.mjs +0 -23
  111. package/esm2022/lib/components/promo-card/index.mjs +0 -3
  112. package/esm2022/lib/components/promo-card/promo-card.component.mjs +0 -87
  113. package/esm2022/lib/components/promo-card/promo-card.module.mjs +0 -16
  114. package/esm2022/lib/components/section/index.mjs +0 -3
  115. package/esm2022/lib/components/section/section.component.mjs +0 -119
  116. package/esm2022/lib/components/section/section.module.mjs +0 -16
  117. package/esm2022/lib/components/select-card/index.mjs +0 -3
  118. package/esm2022/lib/components/select-card/select-card.component.mjs +0 -94
  119. package/esm2022/lib/components/select-card/select-card.module.mjs +0 -16
  120. package/esm2022/lib/components/seo-block/index.mjs +0 -3
  121. package/esm2022/lib/components/seo-block/seo-block.component.mjs +0 -84
  122. package/esm2022/lib/components/seo-block/seo-block.module.mjs +0 -16
  123. package/esm2022/lib/components/text/index.mjs +0 -3
  124. package/esm2022/lib/components/text/text.component.mjs +0 -29
  125. package/esm2022/lib/components/text/text.mjs +0 -2
  126. package/esm2022/lib/components/text/text.module.mjs +0 -16
  127. package/esm2022/lib/directives/autofocus/autofocus.directive.mjs +0 -31
  128. package/esm2022/lib/directives/emphasis/emphasis.directive.mjs +0 -38
  129. package/esm2022/lib/directives/href/href.directive.mjs +0 -26
  130. package/esm2022/lib/services/breakpoint.service.mjs +0 -49
  131. package/esm2022/lib/services/image.service.mjs +0 -68
  132. package/esm2022/lib/services/index.mjs +0 -4
  133. package/esm2022/lib/services/media-base-url.provider.mjs +0 -3
  134. package/esm2022/lib/services/routing-handler.provider.mjs +0 -3
  135. package/esm2022/lib/services/swiper.provider.mjs +0 -13
  136. package/esm2022/lib/services/token.service.mjs +0 -71
  137. package/esm2022/oasys-lib.mjs +0 -5
  138. package/esm2022/public-api.mjs +0 -38
@@ -1,289 +0,0 @@
1
- import { DOCUMENT, NgClass, NgIf } from '@angular/common';
2
- import { Component, ElementRef, Input, ViewChild, ViewEncapsulation, Inject, EventEmitter, Output, CUSTOM_ELEMENTS_SCHEMA, inject, } from '@angular/core';
3
- import { TokenService } from '../../services/token.service';
4
- import { LayoutBoxComponent } from '../layout/box/box.component';
5
- import { LayoutStackComponent } from '../layout/stack/stack.component';
6
- import { OasysButtonComponent } from '../button/button.component';
7
- import { SWIPER_PROVIDER_TOKEN } from '../../services';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "../../services/token.service";
10
- /* This component wraps around the swiper.js library WebComponent */
11
- export class CarouselComponent {
12
- tokenService;
13
- document;
14
- element;
15
- // The swiper instance
16
- swiper;
17
- carouselscrollbarplaceholder;
18
- carouselctastack;
19
- // Rewinds the slides back to the start when the user reaches the end when set to true
20
- rewind = false;
21
- carousel_overflow = false;
22
- carousel_gap = 'default';
23
- carousel_pagination = 'none';
24
- carousel_slides_per_view_desktop = 4;
25
- carousel_slides_per_view_laptop = 3;
26
- carousel_slides_per_view_tablet = 2.5;
27
- carousel_slides_per_view_mobile = 1.25;
28
- text_for_left_arrow = 'previous slide';
29
- text_for_right_arrow = 'next slide';
30
- carousel_rows_per_row_mobile = 1; // Required for CATEGORY_CARD experiment. Remove if experiment fails.
31
- carousel_loading = 'lazy'; // If we don't have multiple carousels on page and want to prioritise UI loading on time
32
- carousel_free_mode = false; // Enables scrolling with mousewheel / smoother momentum swiping experience
33
- center_insufficient_slides = true; // Centers the slides if there are not enough to fill the space
34
- center_active_slide = false; // Centers the active slide
35
- start_slide = 0; // Start slide index
36
- offset_scrollbar_top = false; // Offset the scrollbar to the top of the carousel
37
- activeIndexOnSlideChange = new EventEmitter();
38
- constructor(tokenService, document, element) {
39
- this.tokenService = tokenService;
40
- this.document = document;
41
- this.element = element;
42
- inject(SWIPER_PROVIDER_TOKEN).ensureSwiperRegistered();
43
- }
44
- ngOnInit() {
45
- if (this.carousel_loading === 'lazy') {
46
- this.setUpIntersectionObserver();
47
- }
48
- else {
49
- this.initSwiper();
50
- }
51
- }
52
- /**
53
- * Set up the intersection observer with the relevant options
54
- */
55
- setUpIntersectionObserver() {
56
- // Set IntersectionObserver options
57
- const options = {
58
- root: null,
59
- rootMargin: '0px',
60
- threshold: 0.5,
61
- once: true,
62
- };
63
- // Set up the IntersectionObserver
64
- const observer = new IntersectionObserver(this.onIntersection.bind(this), options);
65
- observer.observe(this.element.nativeElement);
66
- }
67
- /**
68
- * This function gets called just before the user scrolls this component into view
69
- * @param entries - An array of interswection observer entries
70
- * @param observer - Intersection observer
71
- */
72
- onIntersection(entries, observer) {
73
- entries.forEach((entry) => {
74
- if (entry.isIntersecting) {
75
- // Initialise swiper
76
- this.initSwiper();
77
- observer.unobserve(entry.target);
78
- }
79
- });
80
- }
81
- getStyle(element, style) {
82
- return this.document.defaultView.getComputedStyle(element, null).getPropertyValue(style);
83
- }
84
- /**
85
- * Set the scrollbar placement and width based on carouselscrollbarplaceholder and carouselctastack
86
- */
87
- setupScrollbarLayoutProperties() {
88
- if (this.carousel_pagination === 'none') {
89
- return;
90
- }
91
- const carouselStack = this.carouselctastack?.nativeElement;
92
- const scrollbarElement = this.carouselscrollbarplaceholder?.nativeElement;
93
- const scrollbarHeight = this.document.defaultView
94
- .getComputedStyle(document.documentElement)
95
- .getPropertyValue('--swiper-scrollbar-size');
96
- if (carouselStack && this.carousel_pagination === 'scroll-arrows') {
97
- this.element?.nativeElement?.style?.setProperty('--ui-carousel-scrollbar-width', `${scrollbarElement?.offsetWidth - parseInt(this.getStyle(carouselStack, 'gap'), 10)}px`);
98
- this.element?.nativeElement?.style?.setProperty('--ui-carousel-scrollbar-offset-top', `${parseInt(this.getStyle(carouselStack, 'gap'), 10) + scrollbarElement?.offsetHeight / 2 + parseInt(scrollbarHeight, 10) / 2}px`);
99
- this.element?.nativeElement?.style?.setProperty('--ui-carousel-scrollbar-height', '2px');
100
- }
101
- if (carouselStack && this.carousel_pagination === 'scroll-bar') {
102
- this.element?.nativeElement?.style?.setProperty('--ui-carousel-scrollbar-width', '100%');
103
- this.element?.nativeElement?.style?.setProperty('--ui-carousel-scrollbar-offset-top', `${this.offset_scrollbar_top ? parseInt(this.getStyle(carouselStack, 'gap'), 10) + 'px' : '0px'}`);
104
- this.element?.nativeElement?.style?.setProperty('--ui-carousel-scrollbar-height', '4px');
105
- this.element?.nativeElement?.style?.setProperty('--ui-carousel-scrollbar-left', '0px');
106
- }
107
- }
108
- /**
109
- * Set the dynamic swiper params and initialise the swiper instance
110
- */
111
- // eslint-disable-next-line complexity
112
- initSwiper() {
113
- // Colour overides
114
- const scrollbarBackgroundColour = this.tokenService.getTokenValue('--oasys-color-linen-grey-200');
115
- const scrollbarSliderColour = this.tokenService.getTokenValue('--oasys-color-brand-foreground-primary');
116
- // swiper element
117
- const swiperEl = this.swiper.nativeElement;
118
- const carouselGap = this.tokenService.getTokenValue(`--oasys-spacing-${this.carousel_gap}`);
119
- // swiper parameters
120
- const swiperParams = {
121
- rewind: this.rewind,
122
- grabCursor: true,
123
- spaceBetween: parseInt(carouselGap.replace('.', ''), 10) || 0,
124
- centeredSlides: this.center_active_slide,
125
- initialSlide: this.start_slide,
126
- scrollbar: {
127
- enabled: this.carousel_pagination === 'scroll-arrows' || this.carousel_pagination === 'scroll-bar',
128
- draggable: true,
129
- },
130
- centerInsufficientSlides: this.center_insufficient_slides,
131
- freeMode: this.carousel_free_mode
132
- ? {
133
- enabled: true,
134
- sticky: true,
135
- momentumVelocityRatio: 0.75,
136
- momentumRatio: 0.75,
137
- }
138
- : false,
139
- mousewheel: this.carousel_free_mode
140
- ? {
141
- forceToAxis: true,
142
- }
143
- : false,
144
- injectStyles: [
145
- `
146
- .swiper {
147
- overflow: ${this.carousel_overflow ? 'visible' : 'hidden'} !important;
148
- }
149
-
150
- .swiper-scrollbar.swiper-scrollbar-horizontal {
151
- position: relative;
152
- top: var(--ui-carousel-scrollbar-offset-top);
153
- width: var(--ui-carousel-scrollbar-width);
154
- height: var(--ui-carousel-scrollbar-height);
155
- left: ${this.carousel_pagination === 'scroll-bar' ? 'var(--ui-carousel-scrollbar-left)' : '1%'};
156
- background: ${scrollbarBackgroundColour}
157
- }
158
-
159
- .swiper-scrollbar-drag {
160
- background: ${scrollbarSliderColour}
161
- }`,
162
- ],
163
- breakpoints: {
164
- 0: {
165
- scrollbar: {
166
- enabled: this.carousel_pagination === 'scroll-arrows' ||
167
- this.carousel_pagination === 'scroll-bar',
168
- draggable: true,
169
- },
170
- slidesPerView: this.carousel_slides_per_view_mobile,
171
- grid: {
172
- rows: this.carousel_rows_per_row_mobile,
173
- fill: 'row',
174
- },
175
- },
176
- 767: {
177
- scrollbar: {
178
- enabled: this.carousel_pagination === 'scroll-arrows' ||
179
- this.carousel_pagination === 'scroll-bar',
180
- draggable: true,
181
- },
182
- slidesPerView: this.carousel_slides_per_view_tablet,
183
- },
184
- 1080: {
185
- scrollbar: {
186
- enabled: this.carousel_pagination === 'scroll-arrows' ||
187
- this.carousel_pagination === 'scroll-bar',
188
- draggable: true,
189
- },
190
- slidesPerView: this.carousel_slides_per_view_laptop,
191
- },
192
- 1440: {
193
- scrollbar: {
194
- enabled: this.carousel_pagination === 'scroll-arrows' ||
195
- this.carousel_pagination === 'scroll-bar',
196
- draggable: true,
197
- },
198
- slidesPerView: this.carousel_slides_per_view_desktop,
199
- },
200
- },
201
- on: {
202
- slideChange: this.onSlideChange.bind(this),
203
- },
204
- };
205
- // now we need to assign all parameters to the Swiper element
206
- Object.assign(swiperEl, swiperParams);
207
- // and now initialize it
208
- swiperEl.initialize();
209
- // Set up scrollbar and ensure this is recalculated on resize events
210
- this.setupScrollbarLayoutProperties();
211
- swiperEl.addEventListener('resize', () => {
212
- this.setupScrollbarLayoutProperties();
213
- });
214
- }
215
- /**
216
- * Move the carousel on to the next slide
217
- */
218
- nextSlide() {
219
- this.swiper.nativeElement.swiper.slideNext();
220
- }
221
- /**
222
- * Move the carousel back to the previous slide
223
- */
224
- previousSlide() {
225
- this.swiper.nativeElement.swiper.slidePrev();
226
- }
227
- /**
228
- * Emit event when the slide changes
229
- * @param swiper
230
- */
231
- onSlideChange(swiper) {
232
- this.activeIndexOnSlideChange.emit(swiper.activeIndex);
233
- }
234
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CarouselComponent, deps: [{ token: i1.TokenService }, { token: DOCUMENT }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
235
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CarouselComponent, isStandalone: true, selector: "ui-carousel", inputs: { rewind: "rewind", carousel_overflow: "carousel_overflow", carousel_gap: "carousel_gap", carousel_pagination: "carousel_pagination", carousel_slides_per_view_desktop: "carousel_slides_per_view_desktop", carousel_slides_per_view_laptop: "carousel_slides_per_view_laptop", carousel_slides_per_view_tablet: "carousel_slides_per_view_tablet", carousel_slides_per_view_mobile: "carousel_slides_per_view_mobile", text_for_left_arrow: "text_for_left_arrow", text_for_right_arrow: "text_for_right_arrow", carousel_rows_per_row_mobile: "carousel_rows_per_row_mobile", carousel_loading: "carousel_loading", carousel_free_mode: "carousel_free_mode", center_insufficient_slides: "center_insufficient_slides", center_active_slide: "center_active_slide", start_slide: "start_slide", offset_scrollbar_top: "offset_scrollbar_top" }, outputs: { activeIndexOnSlideChange: "activeIndexOnSlideChange" }, providers: [TokenService], viewQueries: [{ propertyName: "swiper", first: true, predicate: ["swiper"], descendants: true, static: true }, { propertyName: "carouselscrollbarplaceholder", first: true, predicate: ["carouselscrollbarplaceholder"], descendants: true, read: ElementRef }, { propertyName: "carouselctastack", first: true, predicate: ["carouselctastack"], descendants: true, read: ElementRef }], ngImport: i0, template: "<ui-box\n class=\"ui-carousel\"\n [ngClass]=\"{ 'ui-carousel-overflow': carousel_overflow }\"\n box_align_y=\"center\"\n box_space=\"none\"\n [box_content_fill_width]=\"true\"\n box_background=\"transparent\"\n>\n <ui-stack #carouselctastack>\n <!-- Custom navigation buttons -->\n <ui-stack\n *ngIf=\"carousel_pagination === 'small-arrows'\"\n stack_direction=\"x\"\n stack_align=\"center\"\n stack_distribute=\"end\"\n >\n <ui-box\n box_space=\"none\"\n box_fill_mode=\"fit\"\n box_space_bottom=\"none\"\n [box_space_right]=\"{ mobile: 'tight', tablet: 'none', laptop: 'none', desktop: 'none' }\"\n box_background=\"transparent\"\n >\n <div\n *ngIf=\"!(swiper?.swiper?.isBeginning && swiper?.swiper?.isEnd)\"\n class=\"ui-carousel__small-arrows\"\n >\n <!-- Previous button-->\n <ui-button\n class=\"ui-carousel__previous\"\n button_size=\"small\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-left\"\n button_type=\"tertiary\"\n [aria_label]=\"text_for_left_arrow\"\n (clicked)=\"previousSlide()\"\n >\n Prevous slide\n </ui-button>\n <!-- Next button-->\n <ui-button\n class=\"ui-carousel__next\"\n button_size=\"small\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-right\"\n button_type=\"tertiary\"\n [aria_label]=\"text_for_right_arrow\"\n (clicked)=\"nextSlide()\"\n >\n Next slide\n </ui-button>\n </div>\n </ui-box>\n </ui-stack>\n\n <!-- Swiper WebComponent-->\n <swiper-container\n #swiper\n init=\"false\"\n touch-start-prevent-default=\"false\"\n prevent-clicks-propagation=\"true\"\n >\n <ng-content></ng-content>\n </swiper-container>\n\n <!-- Custom navigation buttons -->\n <ui-stack\n stack_direction=\"x\"\n stack_align=\"center\"\n *ngIf=\"carousel_pagination === 'scroll-arrows' || carousel_pagination === 'scroll-bar'\"\n >\n <div class=\"ui-carousel-scrollbar-placeholder\" #carouselscrollbarplaceholder></div>\n <ui-box\n *ngIf=\"carousel_pagination === 'scroll-arrows'\"\n box_space=\"none\"\n box_fill_mode=\"fit\"\n [box_space_right]=\"{ mobile: 'tight', tablet: 'none', laptop: 'none', desktop: 'none' }\"\n box_background=\"transparent\"\n >\n <ui-stack\n *ngIf=\"!(swiper?.swiper?.isBeginning && swiper?.swiper?.isEnd)\"\n stack_direction=\"x\"\n stack_gap=\"near\"\n >\n <!-- Previous button-->\n <ui-button\n class=\"ui-carousel__previous\"\n button_size=\"large\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-left\"\n button_type=\"secondary\"\n [aria_label]=\"text_for_left_arrow\"\n (clicked)=\"previousSlide()\"\n >\n Prevous slide\n </ui-button>\n <!-- Next button-->\n <ui-button\n class=\"ui-carousel__next\"\n button_size=\"large\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-right\"\n button_type=\"secondary\"\n [aria_label]=\"text_for_right_arrow\"\n (clicked)=\"nextSlide()\"\n >\n Next slide\n </ui-button>\n </ui-stack>\n </ui-box>\n </ui-stack>\n </ui-stack>\n</ui-box>\n", styles: [":root{--swiper-scrollbar-size: 4px}.ui-carousel{touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.ui-carousel swiper-container{width:100%}.ui-carousel .ui-carousel-scrollbar-placeholder{width:100%;display:flex;align-self:stretch}.ui-carousel swiper-slide img{-webkit-user-drag:none}.ui-carousel__small-arrows{align-items:center;display:flex;flex-direction:row;gap:var(--oasys-spacing-near);justify-content:center}@media only screen and (max-width: 767px){.ui-carousel__small-arrows{gap:var(--oasys-spacing-tight)}}\n"], dependencies: [{ kind: "component", type: LayoutBoxComponent, selector: "ui-box", inputs: ["box_space", "box_space_top", "box_space_right", "box_space_bottom", "box_space_left", "box_align_x", "box_align_y", "box_fill_mode", "box_background", "box_content_fill_width", "box_border_color", "box_border_width", "box_border_style", "box_border_radius"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: LayoutStackComponent, selector: "ui-stack", inputs: ["stack_gap", "stack_align", "stack_direction", "stack_distribute", "stack_wrap", "stack_collapse_below"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: OasysButtonComponent, selector: "ui-button", inputs: ["button_icon", "button_icon_placement", "button_size", "button_type", "button_full_width", "button_event_type", "button_disabled", "button_selected", "button_text_nowrap", "aria_label", "aria_role", "href"], outputs: ["clicked"] }], encapsulation: i0.ViewEncapsulation.None });
236
- }
237
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CarouselComponent, decorators: [{
238
- type: Component,
239
- args: [{ selector: 'ui-carousel', encapsulation: ViewEncapsulation.None, standalone: true, imports: [LayoutBoxComponent, NgClass, LayoutStackComponent, NgIf, OasysButtonComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [TokenService], template: "<ui-box\n class=\"ui-carousel\"\n [ngClass]=\"{ 'ui-carousel-overflow': carousel_overflow }\"\n box_align_y=\"center\"\n box_space=\"none\"\n [box_content_fill_width]=\"true\"\n box_background=\"transparent\"\n>\n <ui-stack #carouselctastack>\n <!-- Custom navigation buttons -->\n <ui-stack\n *ngIf=\"carousel_pagination === 'small-arrows'\"\n stack_direction=\"x\"\n stack_align=\"center\"\n stack_distribute=\"end\"\n >\n <ui-box\n box_space=\"none\"\n box_fill_mode=\"fit\"\n box_space_bottom=\"none\"\n [box_space_right]=\"{ mobile: 'tight', tablet: 'none', laptop: 'none', desktop: 'none' }\"\n box_background=\"transparent\"\n >\n <div\n *ngIf=\"!(swiper?.swiper?.isBeginning && swiper?.swiper?.isEnd)\"\n class=\"ui-carousel__small-arrows\"\n >\n <!-- Previous button-->\n <ui-button\n class=\"ui-carousel__previous\"\n button_size=\"small\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-left\"\n button_type=\"tertiary\"\n [aria_label]=\"text_for_left_arrow\"\n (clicked)=\"previousSlide()\"\n >\n Prevous slide\n </ui-button>\n <!-- Next button-->\n <ui-button\n class=\"ui-carousel__next\"\n button_size=\"small\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-right\"\n button_type=\"tertiary\"\n [aria_label]=\"text_for_right_arrow\"\n (clicked)=\"nextSlide()\"\n >\n Next slide\n </ui-button>\n </div>\n </ui-box>\n </ui-stack>\n\n <!-- Swiper WebComponent-->\n <swiper-container\n #swiper\n init=\"false\"\n touch-start-prevent-default=\"false\"\n prevent-clicks-propagation=\"true\"\n >\n <ng-content></ng-content>\n </swiper-container>\n\n <!-- Custom navigation buttons -->\n <ui-stack\n stack_direction=\"x\"\n stack_align=\"center\"\n *ngIf=\"carousel_pagination === 'scroll-arrows' || carousel_pagination === 'scroll-bar'\"\n >\n <div class=\"ui-carousel-scrollbar-placeholder\" #carouselscrollbarplaceholder></div>\n <ui-box\n *ngIf=\"carousel_pagination === 'scroll-arrows'\"\n box_space=\"none\"\n box_fill_mode=\"fit\"\n [box_space_right]=\"{ mobile: 'tight', tablet: 'none', laptop: 'none', desktop: 'none' }\"\n box_background=\"transparent\"\n >\n <ui-stack\n *ngIf=\"!(swiper?.swiper?.isBeginning && swiper?.swiper?.isEnd)\"\n stack_direction=\"x\"\n stack_gap=\"near\"\n >\n <!-- Previous button-->\n <ui-button\n class=\"ui-carousel__previous\"\n button_size=\"large\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-left\"\n button_type=\"secondary\"\n [aria_label]=\"text_for_left_arrow\"\n (clicked)=\"previousSlide()\"\n >\n Prevous slide\n </ui-button>\n <!-- Next button-->\n <ui-button\n class=\"ui-carousel__next\"\n button_size=\"large\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-right\"\n button_type=\"secondary\"\n [aria_label]=\"text_for_right_arrow\"\n (clicked)=\"nextSlide()\"\n >\n Next slide\n </ui-button>\n </ui-stack>\n </ui-box>\n </ui-stack>\n </ui-stack>\n</ui-box>\n", styles: [":root{--swiper-scrollbar-size: 4px}.ui-carousel{touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.ui-carousel swiper-container{width:100%}.ui-carousel .ui-carousel-scrollbar-placeholder{width:100%;display:flex;align-self:stretch}.ui-carousel swiper-slide img{-webkit-user-drag:none}.ui-carousel__small-arrows{align-items:center;display:flex;flex-direction:row;gap:var(--oasys-spacing-near);justify-content:center}@media only screen and (max-width: 767px){.ui-carousel__small-arrows{gap:var(--oasys-spacing-tight)}}\n"] }]
240
- }], ctorParameters: () => [{ type: i1.TokenService }, { type: Document, decorators: [{
241
- type: Inject,
242
- args: [DOCUMENT]
243
- }] }, { type: i0.ElementRef }], propDecorators: { swiper: [{
244
- type: ViewChild,
245
- args: ['swiper', { static: true }]
246
- }], carouselscrollbarplaceholder: [{
247
- type: ViewChild,
248
- args: ['carouselscrollbarplaceholder', { static: false, read: ElementRef }]
249
- }], carouselctastack: [{
250
- type: ViewChild,
251
- args: ['carouselctastack', { static: false, read: ElementRef }]
252
- }], rewind: [{
253
- type: Input
254
- }], carousel_overflow: [{
255
- type: Input
256
- }], carousel_gap: [{
257
- type: Input
258
- }], carousel_pagination: [{
259
- type: Input
260
- }], carousel_slides_per_view_desktop: [{
261
- type: Input
262
- }], carousel_slides_per_view_laptop: [{
263
- type: Input
264
- }], carousel_slides_per_view_tablet: [{
265
- type: Input
266
- }], carousel_slides_per_view_mobile: [{
267
- type: Input
268
- }], text_for_left_arrow: [{
269
- type: Input
270
- }], text_for_right_arrow: [{
271
- type: Input
272
- }], carousel_rows_per_row_mobile: [{
273
- type: Input
274
- }], carousel_loading: [{
275
- type: Input
276
- }], carousel_free_mode: [{
277
- type: Input
278
- }], center_insufficient_slides: [{
279
- type: Input
280
- }], center_active_slide: [{
281
- type: Input
282
- }], start_slide: [{
283
- type: Input
284
- }], offset_scrollbar_top: [{
285
- type: Input
286
- }], activeIndexOnSlideChange: [{
287
- type: Output
288
- }] } });
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2FzeXMtbGliL3NyYy9saWIvY29tcG9uZW50cy9jYXJvdXNlbC9jYXJvdXNlbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vYXN5cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Nhcm91c2VsL2Nhcm91c2VsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFFTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixZQUFZLEVBQ1osTUFBTSxFQUNOLHNCQUFzQixFQUN0QixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFFdkQsb0VBQW9FO0FBWXBFLE1BQU0sT0FBTyxpQkFBaUI7SUFtQ2xCO0lBQ2tCO0lBQ2xCO0lBcENWLHNCQUFzQjtJQUNpQixNQUFNLENBQThCO0lBRTNFLDRCQUE0QixDQUFhO0lBQzJCLGdCQUFnQixDQUFhO0lBRWpHLHNGQUFzRjtJQUM3RSxNQUFNLEdBQVksS0FBSyxDQUFDO0lBRXhCLGlCQUFpQixHQUFZLEtBQUssQ0FBQztJQUVuQyxZQUFZLEdB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RUFBRSxVQUFVLEVBQUU7Z0JBR3pELE1BQU07c0JBQWQsS0FBSztnQkFFRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUcsZ0NBQWdDO3NCQUF4QyxLQUFLO2dCQUNHLCtCQUErQjtzQkFBdkMsS0FBSztnQkFDRywrQkFBK0I7c0JBQXZDLEtBQUs7Z0JBQ0csK0JBQStCO3NCQUF2QyxLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUcsNEJBQTRCO3NCQUFwQyxLQUFLO2dCQUVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csMEJBQTBCO3NCQUFsQyxLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFSSx3QkFBd0I7c0JBQWpDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCwgTmdDbGFzcywgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIEluamVjdCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPdXRwdXQsXG4gIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgU3dpcGVyIGZyb20gJ3N3aXBlcic7XG5pbXBvcnQgeyBTd2lwZXJPcHRpb25zIH0gZnJvbSAnc3dpcGVyL3R5cGVzJztcbmltcG9ydCB7IFRva2VuU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Rva2VuLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3dpcGVyQ29udGFpbmVyIH0gZnJvbSAnc3dpcGVyL2VsZW1lbnQnO1xuaW1wb3J0IHsgTGF5b3V0Qm94Q29tcG9uZW50IH0gZnJvbSAnLi4vbGF5b3V0L2JveC9ib3guY29tcG9uZW50JztcbmltcG9ydCB7IExheW91dFN0YWNrQ29tcG9uZW50IH0gZnJvbSAnLi4vbGF5b3V0L3N0YWNrL3N0YWNrLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPYXN5c0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IFNXSVBFUl9QUk9WSURFUl9UT0tFTiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcblxuLyogVGhpcyBjb21wb25lbnQgd3JhcHMgYXJvdW5kIHRoZSBzd2lwZXIuanMgbGlicmFyeSBXZWJDb21wb25lbnQgKi9cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndWktY2Fyb3VzZWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2Fyb3VzZWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXJvdXNlbC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTGF5b3V0Qm94Q29tcG9uZW50LCBOZ0NsYXNzLCBMYXlvdXRTdGFja0NvbXBvbmVudCwgTmdJZiwgT2FzeXNCdXR0b25Db21wb25lbnRdLFxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG4gIHByb3ZpZGVyczogW1Rva2VuU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIENhcm91c2VsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLy8gVGhlIHN3aXBlciBpbnN0YW5jZVxuICBAVmlld0NoaWxkKCdzd2lwZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBzd2lwZXI6IEVsZW1lbnRSZWY8U3dpcGVyQ29udGFpbmVyPjtcbiAgQFZpZXdDaGlsZCgnY2Fyb3VzZWxzY3JvbGxiYXJwbGFjZWhvbGRlcicsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBjYXJvdXNlbHNjcm9sbGJhcnBsYWNlaG9sZGVyOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdjYXJvdXNlbGN0YXN0YWNrJywgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBFbGVtZW50UmVmIH0pIGNhcm91c2VsY3Rhc3RhY2s6IEVsZW1lbnRSZWY7XG5cbiAgLy8gUmV3aW5kcyB0aGUgc2xpZGVzIGJhY2sgdG8gdGhlIHN0YXJ0IHdoZW4gdGhlIHVzZXIgcmVhY2hlcyB0aGUgZW5kIHdoZW4gc2V0IHRvIHRydWVcbiAgQElucHV0KCkgcmV3aW5kOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgY2Fyb3VzZWxfb3ZlcmZsb3c6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBjYXJvdXNlbF9nYXA6ICdkZWZhdWx0JyB8ICd0aWdodCcgfCAnbmVhcicgfCAnbm9uZScgPSAnZGVmYXVsdCc7XG5cbiAgQElucHV0KCkgY2Fyb3VzZWxfcGFnaW5hdGlvbjogJ3Njcm9sbC1hcnJvd3MnIHwgJ25vbmUnIHwgJ3Njcm9sbC1iYXInIHwgJ3NtYWxsLWFycm93cycgPSAnbm9uZSc7XG5cbiAgQElucHV0KCkgY2Fyb3VzZWxfc2xpZGVzX3Blcl92aWV3X2Rlc2t0b3A6IG51bWJlciA9IDQ7XG4gIEBJbnB1dCgpIGNhcm91c2VsX3NsaWRlc19wZXJfdmlld19sYXB0b3A6IG51bWJlciA9IDM7XG4gIEBJbnB1dCgpIGNhcm91c2VsX3NsaWRlc19wZXJfdmlld190YWJsZXQ6IG51bWJlciA9IDIuNTtcbiAgQElucHV0KCkgY2Fyb3VzZWxfc2xpZGVzX3Blcl92aWV3X21vYmlsZTogbnVtYmVyID0gMS4yNTtcbiAgQElucHV0KCkgdGV4dF9mb3JfbGVmdF9hcnJvdzogc3RyaW5nID0gJ3ByZXZpb3VzIHNsaWRlJztcbiAgQElucHV0KCkgdGV4dF9mb3JfcmlnaHRfYXJyb3c6IHN0cmluZyA9ICduZXh0IHNsaWRlJztcblxuICBASW5wdXQoKSBjYXJvdXNlbF9yb3dzX3Blcl9yb3dfbW9iaWxlOiAxIHwgMiA9IDE7IC8vIFJlcXVpcmVkIGZvciBDQVRFR09SWV9DQVJEIGV4cGVyaW1lbnQuIFJlbW92ZSBpZiBleHBlcmltZW50IGZhaWxzLlxuXG4gIEBJbnB1dCgpIGNhcm91c2VsX2xvYWRpbmc6ICdsYXp5JyB8ICdlYWdlcicgPSAnbGF6eSc7IC8vIElmIHdlIGRvbid0IGhhdmUgbXVsdGlwbGUgY2Fyb3VzZWxzIG9uIHBhZ2UgYW5kIHdhbnQgdG8gcHJpb3JpdGlzZSBVSSBsb2FkaW5nIG9uIHRpbWVcbiAgQElucHV0KCkgY2Fyb3VzZWxfZnJlZV9tb2RlOiBib29sZWFuID0gZmFsc2U7IC8vIEVuYWJsZXMgc2Nyb2xsaW5nIHdpdGggbW91c2V3aGVlbCAvIHNtb290aGVyIG1vbWVudHVtIHN3aXBpbmcgZXhwZXJpZW5jZVxuICBASW5wdXQoKSBjZW50ZXJfaW5zdWZmaWNpZW50X3NsaWRlczogYm9vbGVhbiA9IHRydWU7IC8vIENlbnRlcnMgdGhlIHNsaWRlcyBpZiB0aGVyZSBhcmUgbm90IGVub3VnaCB0byBmaWxsIHRoZSBzcGFjZVxuICBASW5wdXQoKSBjZW50ZXJfYWN0aXZlX3NsaWRlOiBib29sZWFuID0gZmFsc2U7IC8vIENlbnRlcnMgdGhlIGFjdGl2ZSBzbGlkZVxuICBASW5wdXQoKSBzdGFydF9zbGlkZTogbnVtYmVyID0gMDsgLy8gU3RhcnQgc2xpZGUgaW5kZXhcbiAgQElucHV0KCkgb2Zmc2V0X3Njcm9sbGJhcl90b3A6IGJvb2xlYW4gPSBmYWxzZTsgLy8gT2Zmc2V0IHRoZSBzY3JvbGxiYXIgdG8gdGhlIHRvcCBvZiB0aGUgY2Fyb3VzZWxcblxuICBAT3V0cHV0KCkgYWN0aXZlSW5kZXhPblNsaWRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0b2tlblNlcnZpY2U6IFRva2VuU2VydmljZSxcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICkge1xuICAgIGluamVjdChTV0lQRVJfUFJPVklERVJfVE9LRU4pLmVuc3VyZVN3aXBlclJlZ2lzdGVyZWQoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhcm91c2VsX2xvYWRpbmcgPT09ICdsYXp5Jykge1xuICAgICAgdGhpcy5zZXRVcEludGVyc2VjdGlvbk9ic2VydmVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdFN3aXBlcigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdXAgdGhlIGludGVyc2VjdGlvbiBvYnNlcnZlciB3aXRoIHRoZSByZWxldmFudCBvcHRpb25zXG4gICAqL1xuICBzZXRVcEludGVyc2VjdGlvbk9ic2VydmVyKCk6IHZvaWQge1xuICAgIC8vIFNldCBJbnRlcnNlY3Rpb25PYnNlcnZlciBvcHRpb25zXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3Q6IG51bGwsXG4gICAgICByb290TWFyZ2luOiAnMHB4JyxcbiAgICAgIHRocmVzaG9sZDogMC41LFxuICAgICAgb25jZTogdHJ1ZSxcbiAgICB9O1xuICAgIC8vIFNldCB1cCB0aGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcih0aGlzLm9uSW50ZXJzZWN0aW9uLmJpbmQodGhpcyksIG9wdGlvbnMpO1xuICAgIG9ic2VydmVyLm9ic2VydmUodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gZ2V0cyBjYWxsZWQganVzdCBiZWZvcmUgdGhlIHVzZXIgc2Nyb2xscyB0aGlzIGNvbXBvbmVudCBpbnRvIHZpZXdcbiAgICogQHBhcmFtIGVudHJpZXMgLSBBbiBhcnJheSBvZiBpbnRlcnN3ZWN0aW9uIG9ic2VydmVyIGVudHJpZXNcbiAgICogQHBhcmFtIG9ic2VydmVyIC0gSW50ZXJzZWN0aW9uIG9ic2VydmVyXG4gICAqL1xuICBvbkludGVyc2VjdGlvbihlbnRyaWVzOiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5W10sIG9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlcik6IHZvaWQge1xuICAgIGVudHJpZXMuZm9yRWFjaCgoZW50cnkpOiB2b2lkID0+IHtcbiAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZykge1xuICAgICAgICAvLyBJbml0aWFsaXNlIHN3aXBlclxuICAgICAgICB0aGlzLmluaXRTd2lwZXIoKTtcbiAgICAgICAgb2JzZXJ2ZXIudW5vYnNlcnZlKGVudHJ5LnRhcmdldCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRTdHlsZShlbGVtZW50OiBIVE1MRWxlbWVudCwgc3R5bGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKHN0eWxlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHNjcm9sbGJhciBwbGFjZW1lbnQgYW5kIHdpZHRoIGJhc2VkIG9uIGNhcm91c2Vsc2Nyb2xsYmFycGxhY2Vob2xkZXIgYW5kIGNhcm91c2VsY3Rhc3RhY2tcbiAgICovXG4gIHNldHVwU2Nyb2xsYmFyTGF5b3V0UHJvcGVydGllcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYXJvdXNlbF9wYWdpbmF0aW9uID09PSAnbm9uZScpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjYXJvdXNlbFN0YWNrOiBIVE1MRWxlbWVudCA9IHRoaXMuY2Fyb3VzZWxjdGFzdGFjaz8ubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBzY3JvbGxiYXJFbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuY2Fyb3VzZWxzY3JvbGxiYXJwbGFjZWhvbGRlcj8ubmF0aXZlRWxlbWVudDtcblxuICAgIGNvbnN0IHNjcm9sbGJhckhlaWdodCA9IHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXdcbiAgICAgIC5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudClcbiAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKCctLXN3aXBlci1zY3JvbGxiYXItc2l6ZScpO1xuXG4gICAgaWYgKGNhcm91c2VsU3RhY2sgJiYgdGhpcy5jYXJvdXNlbF9wYWdpbmF0aW9uID09PSAnc2Nyb2xsLWFycm93cycpIHtcbiAgICAgIHRoaXMuZWxlbWVudD8ubmF0aXZlRWxlbWVudD8uc3R5bGU/LnNldFByb3BlcnR5KFxuICAgICAgICAnLS11aS1jYXJvdXNlbC1zY3JvbGxiYXItd2lkdGgnLFxuICAgICAgICBgJHtzY3JvbGxiYXJFbGVtZW50Py5vZmZzZXRXaWR0aCAtIHBhcnNlSW50KHRoaXMuZ2V0U3R5bGUoY2Fyb3VzZWxTdGFjaywgJ2dhcCcpLCAxMCl9cHhgLFxuICAgICAgKTtcblxuICAgICAgdGhpcy5lbGVtZW50Py5uYXRpdmVFbGVtZW50Py5zdHlsZT8uc2V0UHJvcGVydHkoXG4gICAgICAgICctLXVpLWNhcm91c2VsLXNjcm9sbGJhci1vZmZzZXQtdG9wJyxcbiAgICAgICAgYCR7cGFyc2VJbnQodGhpcy5nZXRTdHlsZShjYXJvdXNlbFN0YWNrLCAnZ2FwJyksIDEwKSArIHNjcm9sbGJhckVsZW1lbnQ/Lm9mZnNldEhlaWdodCAvIDIgKyBwYXJzZUludChzY3JvbGxiYXJIZWlnaHQsIDEwKSAvIDJ9cHhgLFxuICAgICAgKTtcblxuICAgICAgdGhpcy5lbGVtZW50Py5uYXRpdmVFbGVtZW50Py5zdHlsZT8uc2V0UHJvcGVydHkoJy0tdWktY2Fyb3VzZWwtc2Nyb2xsYmFyLWhlaWdodCcsICcycHgnKTtcbiAgICB9XG5cbiAgICBpZiAoY2Fyb3VzZWxTdGFjayAmJiB0aGlzLmNhcm91c2VsX3BhZ2luYXRpb24gPT09ICdzY3JvbGwtYmFyJykge1xuICAgICAgdGhpcy5lbGVtZW50Py5uYXRpdmVFbGVtZW50Py5zdHlsZT8uc2V0UHJvcGVydHkoJy0tdWktY2Fyb3VzZWwtc2Nyb2xsYmFyLXdpZHRoJywgJzEwMCUnKTtcblxuICAgICAgdGhpcy5lbGVtZW50Py5uYXRpdmVFbGVtZW50Py5zdHlsZT8uc2V0UHJvcGVydHkoXG4gICAgICAgICctLXVpLWNhcm91c2VsLXNjcm9sbGJhci1vZmZzZXQtdG9wJyxcbiAgICAgICAgYCR7dGhpcy5vZmZzZXRfc2Nyb2xsYmFyX3RvcCA/IHBhcnNlSW50KHRoaXMuZ2V0U3R5bGUoY2Fyb3VzZWxTdGFjaywgJ2dhcCcpLCAxMCkgKyAncHgnIDogJzBweCd9YCxcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuZWxlbWVudD8ubmF0aXZlRWxlbWVudD8uc3R5bGU/LnNldFByb3BlcnR5KCctLXVpLWNhcm91c2VsLXNjcm9sbGJhci1oZWlnaHQnLCAnNHB4Jyk7XG5cbiAgICAgIHRoaXMuZWxlbWVudD8ubmF0aXZlRWxlbWVudD8uc3R5bGU/LnNldFByb3BlcnR5KCctLXVpLWNhcm91c2VsLXNjcm9sbGJhci1sZWZ0JywgJzBweCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGR5bmFtaWMgc3dpcGVyIHBhcmFtcyBhbmQgaW5pdGlhbGlzZSB0aGUgc3dpcGVyIGluc3RhbmNlXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuICBpbml0U3dpcGVyKCk6IHZvaWQge1xuICAgIC8vIENvbG91ciBvdmVyaWRlc1xuICAgIGNvbnN0IHNjcm9sbGJhckJhY2tncm91bmRDb2xvdXIgPSB0aGlzLnRva2VuU2VydmljZS5nZXRUb2tlblZhbHVlKFxuICAgICAgJy0tb2FzeXMtY29sb3ItbGluZW4tZ3JleS0yMDAnLFxuICAgICk7XG4gICAgY29uc3Qgc2Nyb2xsYmFyU2xpZGVyQ29sb3VyID0gdGhpcy50b2tlblNlcnZpY2UuZ2V0VG9rZW5WYWx1ZShcbiAgICAgICctLW9hc3lzLWNvbG9yLWJyYW5kLWZvcmVncm91bmQtcHJpbWFyeScsXG4gICAgKTtcblxuICAgIC8vIHN3aXBlciBlbGVtZW50XG4gICAgY29uc3Qgc3dpcGVyRWwgPSB0aGlzLnN3aXBlci5uYXRpdmVFbGVtZW50O1xuXG4gICAgY29uc3QgY2Fyb3VzZWxHYXAgPSB0aGlzLnRva2VuU2VydmljZS5nZXRUb2tlblZhbHVlKGAtLW9hc3lzLXNwYWNpbmctJHt0aGlzLmNhcm91c2VsX2dhcH1gKTtcblxuICAgIC8vIHN3aXBlciBwYXJhbWV0ZXJzXG4gICAgY29uc3Qgc3dpcGVyUGFyYW1zOiBTd2lwZXJPcHRpb25zID0ge1xuICAgICAgcmV3aW5kOiB0aGlzLnJld2luZCxcbiAgICAgIGdyYWJDdXJzb3I6IHRydWUsXG4gICAgICBzcGFjZUJldHdlZW46IHBhcnNlSW50KGNhcm91c2VsR2FwLnJlcGxhY2UoJy4nLCAnJyksIDEwKSB8fCAwLFxuICAgICAgY2VudGVyZWRTbGlkZXM6IHRoaXMuY2VudGVyX2FjdGl2ZV9zbGlkZSxcbiAgICAgIGluaXRpYWxTbGlkZTogdGhpcy5zdGFydF9zbGlkZSxcbiAgICAgIHNjcm9sbGJhcjoge1xuICAgICAgICBlbmFibGVkOlxuICAgICAgICAgIHRoaXMuY2Fyb3VzZWxfcGFnaW5hdGlvbiA9PT0gJ3Njcm9sbC1hcnJvd3MnIHx8IHRoaXMuY2Fyb3VzZWxfcGFnaW5hdGlvbiA9PT0gJ3Njcm9sbC1iYXInLFxuICAgICAgICBkcmFnZ2FibGU6IHRydWUsXG4gICAgICB9LFxuICAgICAgY2VudGVySW5zdWZmaWNpZW50U2xpZGVzOiB0aGlzLmNlbnRlcl9pbnN1ZmZpY2llbnRfc2xpZGVzLFxuICAgICAgZnJlZU1vZGU6IHRoaXMuY2Fyb3VzZWxfZnJlZV9tb2RlXG4gICAgICAgID8ge1xuICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgIHN0aWNreTogdHJ1ZSxcbiAgICAgICAgICAgIG1vbWVudHVtVmVsb2NpdHlSYXRpbzogMC43NSxcbiAgICAgICAgICAgIG1vbWVudHVtUmF0aW86IDAuNzUsXG4gICAgICAgICAgfVxuICAgICAgICA6IGZhbHNlLFxuICAgICAgbW91c2V3aGVlbDogdGhpcy5jYXJvdXNlbF9mcmVlX21vZGVcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBmb3JjZVRvQXhpczogdHJ1ZSxcbiAgICAgICAgICB9XG4gICAgICAgIDogZmFsc2UsXG4gICAgICBpbmplY3RTdHlsZXM6IFtcbiAgICAgICAgYFxuICAgICAgICAuc3dpcGVyIHtcbiAgICAgICAgICBvdmVyZmxvdzogJHt0aGlzLmNhcm91c2VsX292ZXJmbG93ID8gJ3Zpc2libGUnIDogJ2hpZGRlbid9ICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuc3dpcGVyLXNjcm9sbGJhci5zd2lwZXItc2Nyb2xsYmFyLWhvcml6b250YWwge1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICB0b3A6IHZhcigtLXVpLWNhcm91c2VsLXNjcm9sbGJhci1vZmZzZXQtdG9wKTtcbiAgICAgICAgICB3aWR0aDogdmFyKC0tdWktY2Fyb3VzZWwtc2Nyb2xsYmFyLXdpZHRoKTtcbiAgICAgICAgICBoZWlnaHQ6IHZhcigtLXVpLWNhcm91c2VsLXNjcm9sbGJhci1oZWlnaHQpO1xuICAgICAgICAgIGxlZnQ6ICR7dGhpcy5jYXJvdXNlbF9wYWdpbmF0aW9uID09PSAnc2Nyb2xsLWJhcicgPyAndmFyKC0tdWktY2Fyb3VzZWwtc2Nyb2xsYmFyLWxlZnQpJyA6ICcxJSd9O1xuICAgICAgICAgIGJhY2tncm91bmQ6ICR7c2Nyb2xsYmFyQmFja2dyb3VuZENvbG91cn1cbiAgICAgICAgfVxuXG4gICAgICAgIC5zd2lwZXItc2Nyb2xsYmFyLWRyYWcge1xuICAgICAgICAgIGJhY2tncm91bmQ6ICR7c2Nyb2xsYmFyU2xpZGVyQ29sb3VyfVxuICAgICAgICB9YCxcbiAgICAgIF0sXG4gICAgICBicmVha3BvaW50czoge1xuICAgICAgICAwOiB7XG4gICAgICAgICAgc2Nyb2xsYmFyOiB7XG4gICAgICAgICAgICBlbmFibGVkOlxuICAgICAgICAgICAgICB0aGlzLmNhcm91c2VsX3BhZ2luYXRpb24gPT09ICdzY3JvbGwtYXJyb3dzJyB8fFxuICAgICAgICAgICAgICB0aGlzLmNhcm91c2VsX3BhZ2luYXRpb24gPT09ICdzY3JvbGwtYmFyJyxcbiAgICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNsaWRlc1BlclZpZXc6IHRoaXMuY2Fyb3VzZWxfc2xpZGVzX3Blcl92aWV3X21vYmlsZSxcbiAgICAgICAgICBncmlkOiB7XG4gICAgICAgICAgICByb3dzOiB0aGlzLmNhcm91c2VsX3Jvd3NfcGVyX3Jvd19tb2JpbGUsXG4gICAgICAgICAgICBmaWxsOiAncm93JyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICA3Njc6IHtcbiAgICAgICAgICBzY3JvbGxiYXI6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6XG4gICAgICAgICAgICAgIHRoaXMuY2Fyb3VzZWxfcGFnaW5hdGlvbiA9PT0gJ3Njcm9sbC1hcnJvd3MnIHx8XG4gICAgICAgICAgICAgIHRoaXMuY2Fyb3VzZWxfcGFnaW5hdGlvbiA9PT0gJ3Njcm9sbC1iYXInLFxuICAgICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2xpZGVzUGVyVmlldzogdGhpcy5jYXJvdXNlbF9zbGlkZXNfcGVyX3ZpZXdfdGFibGV0LFxuICAgICAgICB9LFxuICAgICAgICAxMDgwOiB7XG4gICAgICAgICAgc2Nyb2xsYmFyOiB7XG4gICAgICAgICAgICBlbmFibGVkOlxuICAgICAgICAgICAgICB0aGlzLmNhcm91c2VsX3BhZ2luYXRpb24gPT09ICdzY3JvbGwtYXJyb3dzJyB8fFxuICAgICAgICAgICAgICB0aGlzLmNhcm91c2VsX3BhZ2luYXRpb24gPT09ICdzY3JvbGwtYmFyJyxcbiAgICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNsaWRlc1BlclZpZXc6IHRoaXMuY2Fyb3VzZWxfc2xpZGVzX3Blcl92aWV3X2xhcHRvcCxcbiAgICAgICAgfSxcbiAgICAgICAgMTQ0MDoge1xuICAgICAgICAgIHNjcm9sbGJhcjoge1xuICAgICAgICAgICAgZW5hYmxlZDpcbiAgICAgICAgICAgICAgdGhpcy5jYXJvdXNlbF9wYWdpbmF0aW9uID09PSAnc2Nyb2xsLWFycm93cycgfHxcbiAgICAgICAgICAgICAgdGhpcy5jYXJvdXNlbF9wYWdpbmF0aW9uID09PSAnc2Nyb2xsLWJhcicsXG4gICAgICAgICAgICBkcmFnZ2FibGU6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzbGlkZXNQZXJWaWV3OiB0aGlzLmNhcm91c2VsX3NsaWRlc19wZXJfdmlld19kZXNrdG9wLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIHNsaWRlQ2hhbmdlOiB0aGlzLm9uU2xpZGVDaGFuZ2UuYmluZCh0aGlzKSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIC8vIG5vdyB3ZSBuZWVkIHRvIGFzc2lnbiBhbGwgcGFyYW1ldGVycyB0byB0aGUgU3dpcGVyIGVsZW1lbnRcbiAgICBPYmplY3QuYXNzaWduKHN3aXBlckVsLCBzd2lwZXJQYXJhbXMpO1xuXG4gICAgLy8gYW5kIG5vdyBpbml0aWFsaXplIGl0XG4gICAgc3dpcGVyRWwuaW5pdGlhbGl6ZSgpO1xuXG4gICAgLy8gU2V0IHVwIHNjcm9sbGJhciBhbmQgZW5zdXJlIHRoaXMgaXMgcmVjYWxjdWxhdGVkIG9uIHJlc2l6ZSBldmVudHNcbiAgICB0aGlzLnNldHVwU2Nyb2xsYmFyTGF5b3V0UHJvcGVydGllcygpO1xuXG4gICAgc3dpcGVyRWwuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCk6IHZvaWQgPT4ge1xuICAgICAgdGhpcy5zZXR1cFNjcm9sbGJhckxheW91dFByb3BlcnRpZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlIHRoZSBjYXJvdXNlbCBvbiB0byB0aGUgbmV4dCBzbGlkZVxuICAgKi9cbiAgbmV4dFNsaWRlKCk6IHZvaWQge1xuICAgIHRoaXMuc3dpcGVyLm5hdGl2ZUVsZW1lbnQuc3dpcGVyLnNsaWRlTmV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1vdmUgdGhlIGNhcm91c2VsIGJhY2sgdG8gdGhlIHByZXZpb3VzIHNsaWRlXG4gICAqL1xuICBwcmV2aW91c1NsaWRlKCk6IHZvaWQge1xuICAgIHRoaXMuc3dpcGVyLm5hdGl2ZUVsZW1lbnQuc3dpcGVyLnNsaWRlUHJldigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXQgZXZlbnQgd2hlbiB0aGUgc2xpZGUgY2hhbmdlc1xuICAgKiBAcGFyYW0gc3dpcGVyXG4gICAqL1xuICBvblNsaWRlQ2hhbmdlKHN3aXBlcjogU3dpcGVyKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVJbmRleE9uU2xpZGVDaGFuZ2UuZW1pdChzd2lwZXIuYWN0aXZlSW5kZXgpO1xuICB9XG59XG4iLCI8dWktYm94XG4gIGNsYXNzPVwidWktY2Fyb3VzZWxcIlxuICBbbmdDbGFzc109XCJ7ICd1aS1jYXJvdXNlbC1vdmVyZmxvdyc6IGNhcm91c2VsX292ZXJmbG93IH1cIlxuICBib3hfYWxpZ25feT1cImNlbnRlclwiXG4gIGJveF9zcGFjZT1cIm5vbmVcIlxuICBbYm94X2NvbnRlbnRfZmlsbF93aWR0aF09XCJ0cnVlXCJcbiAgYm94X2JhY2tncm91bmQ9XCJ0cmFuc3BhcmVudFwiXG4+XG4gIDx1aS1zdGFjayAjY2Fyb3VzZWxjdGFzdGFjaz5cbiAgICA8IS0tIEN1c3RvbSBuYXZpZ2F0aW9uIGJ1dHRvbnMgLS0+XG4gICAgPHVpLXN0YWNrXG4gICAgICAqbmdJZj1cImNhcm91c2VsX3BhZ2luYXRpb24gPT09ICdzbWFsbC1hcnJvd3MnXCJcbiAgICAgIHN0YWNrX2RpcmVjdGlvbj1cInhcIlxuICAgICAgc3RhY2tfYWxpZ249XCJjZW50ZXJcIlxuICAgICAgc3RhY2tfZGlzdHJpYnV0ZT1cImVuZFwiXG4gICAgPlxuICAgICAgPHVpLWJveFxuICAgICAgICBib3hfc3BhY2U9XCJub25lXCJcbiAgICAgICAgYm94X2ZpbGxfbW9kZT1cImZpdFwiXG4gICAgICAgIGJveF9zcGFjZV9ib3R0b209XCJub25lXCJcbiAgICAgICAgW2JveF9zcGFjZV9yaWdodF09XCJ7IG1vYmlsZTogJ3RpZ2h0JywgdGFibGV0OiAnbm9uZScsIGxhcHRvcDogJ25vbmUnLCBkZXNrdG9wOiAnbm9uZScgfVwiXG4gICAgICAgIGJveF9iYWNrZ3JvdW5kPVwidHJhbnNwYXJlbnRcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCIhKHN3aXBlcj8uc3dpcGVyPy5pc0JlZ2lubmluZyAmJiBzd2lwZXI/LnN3aXBlcj8uaXNFbmQpXCJcbiAgICAgICAgICBjbGFzcz1cInVpLWNhcm91c2VsX19zbWFsbC1hcnJvd3NcIlxuICAgICAgICA+XG4gICAgICAgICAgPCEtLSBQcmV2aW91cyBidXR0b24tLT5cbiAgICAgICAgICA8dWktYnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cInVpLWNhcm91c2VsX19wcmV2aW91c1wiXG4gICAgICAgICAgICBidXR0b25fc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgIGJ1dHRvbl9pY29uX3BsYWNlbWVudD1cImljb25Pbmx5XCJcbiAgICAgICAgICAgIGJ1dHRvbl9pY29uPVwiYXJyb3ctbGVmdFwiXG4gICAgICAgICAgICBidXR0b25fdHlwZT1cInRlcnRpYXJ5XCJcbiAgICAgICAgICAgIFthcmlhX2xhYmVsXT1cInRleHRfZm9yX2xlZnRfYXJyb3dcIlxuICAgICAgICAgICAgKGNsaWNrZWQpPVwicHJldmlvdXNTbGlkZSgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBQcmV2b3VzIHNsaWRlXG4gICAgICAgICAgPC91aS1idXR0b24+XG4gICAgICAgICAgPCEtLSBOZXh0IGJ1dHRvbi0tPlxuICAgICAgICAgIDx1aS1idXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwidWktY2Fyb3VzZWxfX25leHRcIlxuICAgICAgICAgICAgYnV0dG9uX3NpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICBidXR0b25faWNvbl9wbGFjZW1lbnQ9XCJpY29uT25seVwiXG4gICAgICAgICAgICBidXR0b25faWNvbj1cImFycm93LXJpZ2h0XCJcbiAgICAgICAgICAgIGJ1dHRvbl90eXBlPVwidGVydGlhcnlcIlxuICAgICAgICAgICAgW2FyaWFfbGFiZWxdPVwidGV4dF9mb3JfcmlnaHRfYXJyb3dcIlxuICAgICAgICAgICAgKGNsaWNrZWQpPVwibmV4dFNsaWRlKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIE5leHQgc2xpZGVcbiAgICAgICAgICA8L3VpLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3VpLWJveD5cbiAgICA8L3VpLXN0YWNrPlxuXG4gICAgPCEtLSBTd2lwZXIgV2ViQ29tcG9uZW50LS0+XG4gICAgPHN3aXBlci1jb250YWluZXJcbiAgICAgICNzd2lwZXJcbiAgICAgIGluaXQ9XCJmYWxzZVwiXG4gICAgICB0b3VjaC1zdGFydC1wcmV2ZW50LWRlZmF1bHQ9XCJmYWxzZVwiXG4gICAgICBwcmV2ZW50LWNsaWNrcy1wcm9wYWdhdGlvbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L3N3aXBlci1jb250YWluZXI+XG5cbiAgICA8IS0tIEN1c3RvbSBuYXZpZ2F0aW9uIGJ1dHRvbnMgLS0+XG4gICAgPHVpLXN0YWNrXG4gICAgICBzdGFja19kaXJlY3Rpb249XCJ4XCJcbiAgICAgIHN0YWNrX2FsaWduPVwiY2VudGVyXCJcbiAgICAgICpuZ0lmPVwiY2Fyb3VzZWxfcGFnaW5hdGlvbiA9PT0gJ3Njcm9sbC1hcnJvd3MnIHx8IGNhcm91c2VsX3BhZ2luYXRpb24gPT09ICdzY3JvbGwtYmFyJ1wiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInVpLWNhcm91c2VsLXNjcm9sbGJhci1wbGFjZWhvbGRlclwiICNjYXJvdXNlbHNjcm9sbGJhcnBsYWNlaG9sZGVyPjwvZGl2PlxuICAgICAgPHVpLWJveFxuICAgICAgICAqbmdJZj1cImNhcm91c2VsX3BhZ2luYXRpb24gPT09ICdzY3JvbGwtYXJyb3dzJ1wiXG4gICAgICAgIGJveF9zcGFjZT1cIm5vbmVcIlxuICAgICAgICBib3hfZmlsbF9tb2RlPVwiZml0XCJcbiAgICAgICAgW2JveF9zcGFjZV9yaWdodF09XCJ7IG1vYmlsZTogJ3RpZ2h0JywgdGFibGV0OiAnbm9uZScsIGxhcHRvcDogJ25vbmUnLCBkZXNrdG9wOiAnbm9uZScgfVwiXG4gICAgICAgIGJveF9iYWNrZ3JvdW5kPVwidHJhbnNwYXJlbnRcIlxuICAgICAgPlxuICAgICAgICA8dWktc3RhY2tcbiAgICAgICAgICAqbmdJZj1cIiEoc3dpcGVyPy5zd2lwZXI/LmlzQmVnaW5uaW5nICYmIHN3aXBlcj8uc3dpcGVyPy5pc0VuZClcIlxuICAgICAgICAgIHN0YWNrX2RpcmVjdGlvbj1cInhcIlxuICAgICAgICAgIHN0YWNrX2dhcD1cIm5lYXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPCEtLSBQcmV2aW91cyBidXR0b24tLT5cbiAgICAgICAgICA8dWktYnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cInVpLWNhcm91c2VsX19wcmV2aW91c1wiXG4gICAgICAgICAgICBidXR0b25fc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgIGJ1dHRvbl9pY29uX3BsYWNlbWVudD1cImljb25Pbmx5XCJcbiAgICAgICAgICAgIGJ1dHRvbl9pY29uPVwiYXJyb3ctbGVmdFwiXG4gICAgICAgICAgICBidXR0b25fdHlwZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICBbYXJpYV9sYWJlbF09XCJ0ZXh0X2Zvcl9sZWZ0X2Fycm93XCJcbiAgICAgICAgICAgIChjbGlja2VkKT1cInByZXZpb3VzU2xpZGUoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgUHJldm91cyBzbGlkZVxuICAgICAgICAgIDwvdWktYnV0dG9uPlxuICAgICAgICAgIDwhLS0gTmV4dCBidXR0b24tLT5cbiAgICAgICAgICA8dWktYnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cInVpLWNhcm91c2VsX19uZXh0XCJcbiAgICAgICAgICAgIGJ1dHRvbl9zaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgYnV0dG9uX2ljb25fcGxhY2VtZW50PVwiaWNvbk9ubHlcIlxuICAgICAgICAgICAgYnV0dG9uX2ljb249XCJhcnJvdy1yaWdodFwiXG4gICAgICAgICAgICBidXR0b25fdHlwZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICBbYXJpYV9sYWJlbF09XCJ0ZXh0X2Zvcl9yaWdodF9hcnJvd1wiXG4gICAgICAgICAgICAoY2xpY2tlZCk9XCJuZXh0U2xpZGUoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgTmV4dCBzbGlkZVxuICAgICAgICAgIDwvdWktYnV0dG9uPlxuICAgICAgICA8L3VpLXN0YWNrPlxuICAgICAgPC91aS1ib3g+XG4gICAgPC91aS1zdGFjaz5cbiAgPC91aS1zdGFjaz5cbjwvdWktYm94PlxuIl19
@@ -1,16 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CarouselComponent } from './carousel.component';
3
- import * as i0 from "@angular/core";
4
- export class OasysCarouselModule {
5
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OasysCarouselModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: OasysCarouselModule, imports: [CarouselComponent], exports: [CarouselComponent] });
7
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OasysCarouselModule });
8
- }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OasysCarouselModule, decorators: [{
10
- type: NgModule,
11
- args: [{
12
- imports: [CarouselComponent],
13
- exports: [CarouselComponent],
14
- }]
15
- }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2FzeXMtbGliL3NyYy9saWIvY29tcG9uZW50cy9jYXJvdXNlbC9jYXJvdXNlbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFNekQsTUFBTSxPQUFPLG1CQUFtQjt3R0FBbkIsbUJBQW1CO3lHQUFuQixtQkFBbUIsWUFIcEIsaUJBQWlCLGFBQ2pCLGlCQUFpQjt5R0FFaEIsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQUovQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixDQUFDO29CQUM1QixPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztpQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2Fyb3VzZWxDb21wb25lbnQgfSBmcm9tICcuL2Nhcm91c2VsLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDYXJvdXNlbENvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtDYXJvdXNlbENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIE9hc3lzQ2Fyb3VzZWxNb2R1bGUge31cbiJdfQ==
@@ -1,3 +0,0 @@
1
- export * from './carousel.component';
2
- export * from './carousel.module';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vYXN5cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Nhcm91c2VsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2Fyb3VzZWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY2Fyb3VzZWwubW9kdWxlJztcbiJdfQ==
@@ -1,22 +0,0 @@
1
- import { Input, ViewEncapsulation } from '@angular/core';
2
- import { Component } from '@angular/core';
3
- import { LayoutBoxComponent } from '../layout/box/box.component';
4
- import { NgClass } from '@angular/common';
5
- import * as i0 from "@angular/core";
6
- export class DividerComponent {
7
- divider_type = 'secondary';
8
- getClass() {
9
- return this.divider_type === 'secondary'
10
- ? `ui-divider--type-${this.divider_type}`
11
- : `ui-divider--type-${this.divider_type}`;
12
- }
13
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DividerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DividerComponent, isStandalone: true, selector: "ui-divider", inputs: { divider_type: "divider_type" }, ngImport: i0, template: "<ui-box\n box_fill_mode=\"fill\"\n box_space=\"none\"\n box_background=\"core-secondary\"\n [ngClass]=\"getClass()\"\n></ui-box>\n", styles: ["ui-divider{display:block;width:100%}ui-divider ui-box.ui-divider--type-secondary:after{content:\"\";display:block;height:var(--oasys-size-unit-1);width:100%}ui-divider ui-box.ui-divider--type-primary:after{content:\"\";display:block;height:var(--oasys-size-unit-8);width:100%}\n"], dependencies: [{ kind: "component", type: LayoutBoxComponent, selector: "ui-box", inputs: ["box_space", "box_space_top", "box_space_right", "box_space_bottom", "box_space_left", "box_align_x", "box_align_y", "box_fill_mode", "box_background", "box_content_fill_width", "box_border_color", "box_border_width", "box_border_style", "box_border_radius"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], encapsulation: i0.ViewEncapsulation.None });
15
- }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DividerComponent, decorators: [{
17
- type: Component,
18
- args: [{ selector: 'ui-divider', encapsulation: ViewEncapsulation.None, standalone: true, imports: [LayoutBoxComponent, NgClass], template: "<ui-box\n box_fill_mode=\"fill\"\n box_space=\"none\"\n box_background=\"core-secondary\"\n [ngClass]=\"getClass()\"\n></ui-box>\n", styles: ["ui-divider{display:block;width:100%}ui-divider ui-box.ui-divider--type-secondary:after{content:\"\";display:block;height:var(--oasys-size-unit-1);width:100%}ui-divider ui-box.ui-divider--type-primary:after{content:\"\";display:block;height:var(--oasys-size-unit-8);width:100%}\n"] }]
19
- }], propDecorators: { divider_type: [{
20
- type: Input
21
- }] } });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGl2aWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vYXN5cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2RpdmlkZXIvZGl2aWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vYXN5cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2RpdmlkZXIvZGl2aWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQVUxQyxNQUFNLE9BQU8sZ0JBQWdCO0lBRTNCLFlBQVksR0FBZ0IsV0FBVyxDQUFDO0lBRXhDLFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxZQUFZLEtBQUssV0FBVztZQUN0QyxDQUFDLENBQUMsb0JBQW9CLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDekMsQ0FBQyxDQUFDLG9CQUFvQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDOUMsQ0FBQzt3R0FSVSxnQkFBZ0I7NEZBQWhCLGdCQUFnQixnSENkN0Isd0lBTUEsZ1ZETVksa0JBQWtCLGdVQUFFLE9BQU87OzRGQUUxQixnQkFBZ0I7a0JBUjVCLFNBQVM7K0JBQ0UsWUFBWSxpQkFHUCxpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCLElBQUksV0FDUCxDQUFDLGtCQUFrQixFQUFFLE9BQU8sQ0FBQzs4QkFJdEMsWUFBWTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpdmlkZXJUeXBlIH0gZnJvbSAnLi9kaXZpZGVyJztcbmltcG9ydCB7IExheW91dEJveENvbXBvbmVudCB9IGZyb20gJy4uL2xheW91dC9ib3gvYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndWktZGl2aWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kaXZpZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGl2aWRlci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTGF5b3V0Qm94Q29tcG9uZW50LCBOZ0NsYXNzXSxcbn0pXG5leHBvcnQgY2xhc3MgRGl2aWRlckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIGRpdmlkZXJfdHlwZTogRGl2aWRlclR5cGUgPSAnc2Vjb25kYXJ5JztcblxuICBnZXRDbGFzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRpdmlkZXJfdHlwZSA9PT0gJ3NlY29uZGFyeSdcbiAgICAgID8gYHVpLWRpdmlkZXItLXR5cGUtJHt0aGlzLmRpdmlkZXJfdHlwZX1gXG4gICAgICA6IGB1aS1kaXZpZGVyLS10eXBlLSR7dGhpcy5kaXZpZGVyX3R5cGV9YDtcbiAgfVxufVxuIiwiPHVpLWJveFxuICBib3hfZmlsbF9tb2RlPVwiZmlsbFwiXG4gIGJveF9zcGFjZT1cIm5vbmVcIlxuICBib3hfYmFja2dyb3VuZD1cImNvcmUtc2Vjb25kYXJ5XCJcbiAgW25nQ2xhc3NdPVwiZ2V0Q2xhc3MoKVwiXG4+PC91aS1ib3g+XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGl2aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29hc3lzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZGl2aWRlci9kaXZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBEaXZpZGVyVHlwZSA9ICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknO1xuIl19
@@ -1,16 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { DividerComponent } from './divider.component';
3
- import * as i0 from "@angular/core";
4
- export class OasysDividerModule {
5
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OasysDividerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: OasysDividerModule, imports: [DividerComponent], exports: [DividerComponent] });
7
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OasysDividerModule });
8
- }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OasysDividerModule, decorators: [{
10
- type: NgModule,
11
- args: [{
12
- imports: [DividerComponent],
13
- exports: [DividerComponent],
14
- }]
15
- }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGl2aWRlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vYXN5cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2RpdmlkZXIvZGl2aWRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFNdkQsTUFBTSxPQUFPLGtCQUFrQjt3R0FBbEIsa0JBQWtCO3lHQUFsQixrQkFBa0IsWUFIbkIsZ0JBQWdCLGFBQ2hCLGdCQUFnQjt5R0FFZixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBSjlCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNCLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO2lCQUM1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEaXZpZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9kaXZpZGVyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtEaXZpZGVyQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0RpdmlkZXJDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBPYXN5c0RpdmlkZXJNb2R1bGUge31cbiJdfQ==
@@ -1,3 +0,0 @@
1
- export * from './divider.component';
2
- export * from './divider.module';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vYXN5cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2RpdmlkZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kaXZpZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2RpdmlkZXIubW9kdWxlJztcbiJdfQ==