@colijnit/corecomponents_v12 12.0.17 → 12.0.20

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 (145) hide show
  1. package/bundles/colijnit-corecomponents_v12.umd.js +807 -247
  2. package/bundles/colijnit-corecomponents_v12.umd.js.map +1 -1
  3. package/colijnit-corecomponents_v12.d.ts +9 -8
  4. package/colijnit-corecomponents_v12.metadata.json +1 -1
  5. package/esm2015/colijnit-corecomponents_v12.js +10 -9
  6. package/esm2015/lib/components/base/base-input.component.js +86 -14
  7. package/esm2015/lib/components/carousel-3d/carousel-3d.component.js +313 -0
  8. package/esm2015/lib/components/carousel-3d/carousel-3d.module.js +19 -0
  9. package/esm2015/lib/components/carousel-3d/carouselItem.js +54 -0
  10. package/esm2015/lib/components/co-dialog/co-dialog.module.js +1 -3
  11. package/esm2015/lib/components/drop-down-list/drop-down-list.component.js +30 -8
  12. package/esm2015/lib/components/drop-down-list/drop-down.module.js +9 -7
  13. package/esm2015/lib/components/form/form.component.js +3 -22
  14. package/esm2015/lib/components/form/form.module.js +4 -4
  15. package/esm2015/lib/components/input-checkbox/input-checkbox.component.js +15 -5
  16. package/esm2015/lib/components/input-checkbox-multi-select/input-checkbox-multi-select.component.js +6 -14
  17. package/esm2015/lib/components/input-combo-box/input-combo-box.component.js +24 -29
  18. package/esm2015/lib/components/input-date-picker/input-date-picker.component.js +10 -7
  19. package/esm2015/lib/components/input-listbox/input-listbox.component.js +27 -6
  20. package/esm2015/lib/components/input-number-picker/input-number-picker.component.js +9 -9
  21. package/esm2015/lib/components/input-radio-button/input-radio-button.component.js +13 -5
  22. package/esm2015/lib/components/input-text/input-text.component.js +21 -81
  23. package/esm2015/lib/components/input-text/input-text.module.js +16 -13
  24. package/esm2015/lib/components/input-textarea/input-textarea.component.js +62 -0
  25. package/esm2015/lib/components/input-textarea/input-textarea.module.js +23 -0
  26. package/esm2015/lib/components/multi-select-list/multi-select-list.component.js +37 -9
  27. package/esm2015/lib/components/multi-select-list/multi-select-list.module.js +9 -7
  28. package/esm2015/lib/components/validation-error/validation-error.component.js +35 -0
  29. package/esm2015/lib/components/validation-error/validation-error.module.js +21 -0
  30. package/esm2015/public-api.js +6 -1
  31. package/fesm2015/colijnit-corecomponents_v12.js +827 -269
  32. package/fesm2015/colijnit-corecomponents_v12.js.map +1 -1
  33. package/lib/components/base/base-input.component.d.ts +13 -3
  34. package/lib/components/button/style/_layout.scss +0 -1
  35. package/lib/components/button/style/_theme.scss +2 -3
  36. package/lib/components/button-drop-down/style/_layout.scss +0 -2
  37. package/lib/components/button-drop-down/style/_theme.scss +0 -2
  38. package/lib/components/button-drop-down/style/material.scss +1 -0
  39. package/lib/components/carousel-3d/carousel-3d.component.d.ts +55 -0
  40. package/lib/components/carousel-3d/carousel-3d.module.d.ts +2 -0
  41. package/lib/components/carousel-3d/carouselItem.d.ts +13 -0
  42. package/lib/components/carousel-3d/style/_layout.scss +62 -0
  43. package/lib/components/carousel-3d/style/_material-definition.scss +6 -0
  44. package/lib/components/carousel-3d/style/_theme.scss +4 -0
  45. package/lib/components/carousel-3d/style/material.scss +5 -0
  46. package/lib/components/co-dialog/style/_layout.scss +0 -3
  47. package/lib/components/co-dialog/style/_theme.scss +0 -3
  48. package/lib/components/co-dialog/style/material.scss +1 -0
  49. package/lib/components/co-kanban/style/_layout.scss +4 -3
  50. package/lib/components/co-kanban/style/_material-definition.scss +2 -0
  51. package/lib/components/co-kanban/style/_theme.scss +0 -4
  52. package/lib/components/co-kanban/style/material.scss +1 -0
  53. package/lib/components/co-rich-text-editor/style/_layout.scss +0 -2
  54. package/lib/components/co-rich-text-editor/style/_theme.scss +0 -2
  55. package/lib/components/co-rich-text-editor/style/material.scss +1 -0
  56. package/lib/components/collapsible/style/_layout.scss +0 -3
  57. package/lib/components/collapsible/style/_theme.scss +0 -4
  58. package/lib/components/collapsible/style/material.scss +1 -0
  59. package/lib/components/drop-down-list/drop-down-list.component.d.ts +12 -2
  60. package/lib/components/drop-down-list/style/_layout.scss +9 -3
  61. package/lib/components/drop-down-list/style/_material-definition.scss +2 -0
  62. package/lib/components/drop-down-list/style/_theme.scss +0 -2
  63. package/lib/components/drop-down-list/style/material.scss +2 -0
  64. package/lib/components/form/form.component.d.ts +2 -3
  65. package/lib/components/grid/style/_layout.scss +0 -2
  66. package/lib/components/grid/style/_theme.scss +0 -2
  67. package/lib/components/grid/style/material.scss +1 -0
  68. package/lib/components/input-checkbox/input-checkbox.component.d.ts +9 -2
  69. package/lib/components/input-checkbox/style/_layout.scss +0 -2
  70. package/lib/components/input-checkbox/style/_theme.scss +0 -2
  71. package/lib/components/input-checkbox/style/material.scss +1 -0
  72. package/lib/components/input-checkbox-multi-select/input-checkbox-multi-select.component.d.ts +4 -6
  73. package/lib/components/input-checkbox-multi-select/style/_layout.scss +5 -3
  74. package/lib/components/input-checkbox-multi-select/style/_material-definition.scss +2 -0
  75. package/lib/components/input-checkbox-multi-select/style/_theme.scss +0 -2
  76. package/lib/components/input-checkbox-multi-select/style/material.scss +1 -0
  77. package/lib/components/input-combo-box/input-combo-box.component.d.ts +6 -7
  78. package/lib/components/input-combo-box/style/_layout.scss +12 -3
  79. package/lib/components/input-combo-box/style/_material-definition.scss +2 -7
  80. package/lib/components/input-combo-box/style/_theme.scss +0 -2
  81. package/lib/components/input-combo-box/style/material.scss +9 -0
  82. package/lib/components/input-date-picker/input-date-picker.component.d.ts +4 -3
  83. package/lib/components/input-date-picker/style/_layout.scss +5 -3
  84. package/lib/components/input-date-picker/style/_material-definition.scss +4 -0
  85. package/lib/components/input-date-picker/style/_theme.scss +0 -2
  86. package/lib/components/input-date-picker/style/material.scss +2 -0
  87. package/lib/components/input-listbox/input-listbox.component.d.ts +12 -1
  88. package/lib/components/input-listbox/style/_layout.scss +1 -2
  89. package/lib/components/input-listbox/style/_material-definition.scss +2 -2
  90. package/lib/components/input-listbox/style/_theme.scss +0 -2
  91. package/lib/components/input-listbox/style/material.scss +2 -0
  92. package/lib/components/input-number-picker/input-number-picker.component.d.ts +5 -5
  93. package/lib/components/input-number-picker/style/_layout.scss +0 -2
  94. package/lib/components/input-number-picker/style/_theme.scss +0 -2
  95. package/lib/components/input-number-picker/style/material.scss +1 -0
  96. package/lib/components/input-radio-button/input-radio-button.component.d.ts +7 -2
  97. package/lib/components/input-radio-button/style/_layout.scss +0 -2
  98. package/lib/components/input-radio-button/style/_theme.scss +0 -2
  99. package/lib/components/input-radio-button/style/material.scss +1 -0
  100. package/lib/components/input-search/style/_layout.scss +0 -3
  101. package/lib/components/input-search/style/_theme.scss +0 -4
  102. package/lib/components/input-search/style/material.scss +1 -0
  103. package/lib/components/input-text/input-text.component.d.ts +6 -30
  104. package/lib/components/input-text/style/_layout.scss +14 -3
  105. package/lib/components/input-text/style/_material-definition.scss +4 -3
  106. package/lib/components/input-text/style/_theme.scss +5 -3
  107. package/lib/components/input-text/style/material.scss +3 -0
  108. package/lib/components/input-textarea/input-textarea.component.d.ts +18 -0
  109. package/lib/components/input-textarea/input-textarea.module.d.ts +2 -0
  110. package/lib/components/input-textarea/style/_layout.scss +20 -0
  111. package/lib/components/input-textarea/style/_material-definition.scss +4 -0
  112. package/lib/components/input-textarea/style/_theme.scss +9 -0
  113. package/lib/components/input-textarea/style/material.scss +7 -0
  114. package/lib/components/multi-select-list/multi-select-list.component.d.ts +13 -2
  115. package/lib/components/multi-select-list/style/_layout.scss +11 -3
  116. package/lib/components/multi-select-list/style/_material-definition.scss +2 -0
  117. package/lib/components/multi-select-list/style/_theme.scss +5 -3
  118. package/lib/components/multi-select-list/style/material.scss +2 -0
  119. package/lib/components/pivot/style/_layout.scss +0 -2
  120. package/lib/components/pivot/style/_theme.scss +0 -2
  121. package/lib/components/pivot/style/material.scss +1 -0
  122. package/lib/components/simple-grid/style/_layout.scss +0 -2
  123. package/lib/components/simple-grid/style/_theme.scss +0 -2
  124. package/lib/components/simple-grid/style/material.scss +1 -0
  125. package/lib/components/validation-error/style/_layout.scss +45 -0
  126. package/lib/components/validation-error/style/_material-definition.scss +9 -0
  127. package/lib/components/validation-error/style/_theme.scss +21 -0
  128. package/lib/components/validation-error/style/material.scss +5 -0
  129. package/lib/components/validation-error/validation-error.component.d.ts +10 -0
  130. package/lib/components/validation-error/validation-error.module.d.ts +2 -0
  131. package/lib/style/_input.mixins.scss +71 -281
  132. package/lib/style/_variables.scss +16 -1
  133. package/package.json +5 -2
  134. package/public-api.d.ts +5 -0
  135. package/esm2015/lib/core/enum/float-label-type.enum.js +0 -7
  136. package/esm2015/lib/core/enum/input-text-type.enum.js +0 -6
  137. package/esm2015/lib/core/model/numerical-range.js +0 -14
  138. package/lib/components/drop-down-list/drop-down-list.component.scss +0 -0
  139. package/lib/core/enum/float-label-type.enum.d.ts +0 -5
  140. package/lib/core/enum/input-text-type.enum.d.ts +0 -4
  141. package/lib/core/model/numerical-range.d.ts +0 -7
  142. package/lib/style/_extendables.scss +0 -32
  143. package/lib/style/_responsiveness.mixins.scss +0 -64
  144. package/lib/style/_responsiveness.scss +0 -4
  145. package/lib/style/_transition.mixins.scss +0 -21
@@ -0,0 +1,313 @@
1
+ import { Component, ContentChildren, ElementRef, EventEmitter, HostBinding, Input, Output, ViewChild, ViewEncapsulation } from "@angular/core";
2
+ import { AmbientLight, Box3, Color, Fog, Mesh, MeshPhongMaterial, PerspectiveCamera, PlaneGeometry, Scene, SpotLight, Vector2, Vector3, WebGLRenderer } from "three";
3
+ import { CarouselItem } from "./carouselItem";
4
+ import { CSS3DRenderer } from "three/examples/jsm/renderers/CSS3DRenderer";
5
+ import * as TWEEN from "@tweenjs/tween.js";
6
+ export class Carousel3dComponent {
7
+ constructor() {
8
+ this.cameraHeight = 50;
9
+ this.shadow = false;
10
+ this.selectedIndex = 0;
11
+ this.indexSelected = new EventEmitter();
12
+ this._cameraZoom = 0;
13
+ this._backgroundColor = 0xffffff;
14
+ this._ambientLight = true;
15
+ this._tileSize = new Vector2();
16
+ this._tileMargin = 20;
17
+ this._targetPositions = [];
18
+ this._tileElements = [];
19
+ this._tileOffset = 0;
20
+ this._tiles3D = [];
21
+ this._planeColor = 0xffffff;
22
+ this._planeHeight = -46;
23
+ this._spotLightPosition = new Vector3(0, 250, -200);
24
+ this._fullCircle = false;
25
+ this._initialized = false;
26
+ this._elementsCreated = false;
27
+ this.canNavigateLeft = false;
28
+ this.canNavigateRight = false;
29
+ }
30
+ set children(children) {
31
+ this._elementsCreated = false;
32
+ this._tileElements = children.toArray();
33
+ this._buildCarousel();
34
+ }
35
+ showClass() {
36
+ return true;
37
+ }
38
+ ngAfterViewInit() {
39
+ this._buildCarousel();
40
+ }
41
+ ngOnDestroy() {
42
+ this.canvasContainer = undefined;
43
+ this.carouselWrapper = undefined;
44
+ this._clearScenes();
45
+ }
46
+ handleButtonLeftClick() {
47
+ this._tileOffset -= 1;
48
+ this._rotate(400);
49
+ }
50
+ handleButtonRightClick() {
51
+ this._tileOffset += 1;
52
+ this._rotate(400);
53
+ }
54
+ _buildCarousel() {
55
+ if (!this._initialized) {
56
+ this._init();
57
+ }
58
+ if (this._initialized && !this._elementsCreated) {
59
+ this._createTiles();
60
+ }
61
+ this._checkNavigationButtons();
62
+ }
63
+ _init() {
64
+ if (!this.canvasContainer || !this.canvasContainer.nativeElement) {
65
+ return;
66
+ }
67
+ this._initCamera();
68
+ this._initScene();
69
+ this._initRenderer();
70
+ if (this.shadow) {
71
+ const geometry = new PlaneGeometry(10000, 10000);
72
+ const material = new MeshPhongMaterial({ color: this._planeColor, shininess: 100 });
73
+ const plane = new Mesh(geometry, material);
74
+ plane.receiveShadow = true;
75
+ plane.rotation.x = -Math.PI / 2;
76
+ plane.position.y = this._planeHeight;
77
+ this._scene.add(plane);
78
+ const spotLight = new SpotLight(0xffffff, 0.5);
79
+ spotLight.position.copy(this._spotLightPosition);
80
+ spotLight.castShadow = true;
81
+ spotLight.shadow.mapSize.width = 512;
82
+ spotLight.shadow.mapSize.height = 512;
83
+ spotLight.shadow.camera.near = 50;
84
+ spotLight.shadow.camera.far = 1200;
85
+ spotLight.shadow.camera.fov = 30;
86
+ spotLight.penumbra = 1;
87
+ this._scene.add(spotLight);
88
+ }
89
+ this.carouselWrapper.nativeElement.appendChild(this._rendererCss.domElement);
90
+ this.canvasContainer.nativeElement.appendChild(this.carouselWrapper.nativeElement);
91
+ this.canvasContainer.nativeElement.appendChild(this._renderer.domElement);
92
+ this._render();
93
+ this._animate();
94
+ window.addEventListener("resize", () => {
95
+ this._resizeCanvasToDisplaySize();
96
+ }, false);
97
+ this._initialized = true;
98
+ }
99
+ _initCamera() {
100
+ this._camera = new PerspectiveCamera(50, this.canvasContainer.nativeElement.clientWidth / this.canvasContainer.nativeElement.clientHeight, 1, 10000);
101
+ this._camera.position.z = 600 - this._cameraZoom;
102
+ this._camera.position.y = this.cameraHeight;
103
+ this._camera.lookAt(new Vector3());
104
+ }
105
+ _initScene() {
106
+ this._sceneCss = new Scene();
107
+ this._scene = new Scene();
108
+ this._scene.background = new Color(this._backgroundColor);
109
+ if (this._ambientLight) {
110
+ const light = new AmbientLight(0xaaaaaa); // soft white light
111
+ this._scene.add(light);
112
+ this._scene.fog = new Fog(this._backgroundColor, 70, 2500);
113
+ }
114
+ }
115
+ _initRenderer() {
116
+ this._rendererCss = new CSS3DRenderer();
117
+ this._rendererCss.setSize(this.canvasContainer.nativeElement.clientWidth, this.canvasContainer.nativeElement.clientHeight);
118
+ this._rendererCss.domElement.style.position = "absolute";
119
+ this._renderer = new WebGLRenderer({ antialias: true });
120
+ this._renderer.setPixelRatio(window.devicePixelRatio);
121
+ this._renderer.setSize(this.canvasContainer.nativeElement.clientWidth, this.canvasContainer.nativeElement.clientHeight);
122
+ this._renderer.shadowMap.enabled = true;
123
+ }
124
+ _disposeObject(obj) {
125
+ if (obj instanceof Mesh) {
126
+ if (obj.geometry) {
127
+ obj.geometry.dispose();
128
+ }
129
+ if (obj.material) {
130
+ Array.isArray(obj.material) ? obj.material.map(m => m.dispose()) : obj.material.dispose();
131
+ }
132
+ obj = undefined;
133
+ }
134
+ else {
135
+ obj.element = undefined;
136
+ obj = undefined;
137
+ }
138
+ }
139
+ _clearScenes() {
140
+ const meshes = this._tiles3D.map(t => t.mesh);
141
+ const cssObjs = this._tiles3D.map(t => t.object);
142
+ this._scene.remove(...meshes);
143
+ meshes.map(m => this._disposeObject(m));
144
+ meshes.length = 0;
145
+ this._sceneCss.remove(...cssObjs);
146
+ cssObjs.map(o => this._disposeObject(o));
147
+ cssObjs.length = 0;
148
+ this._tiles3D.length = 0;
149
+ this._targetPositions.length = 0;
150
+ }
151
+ _createTiles() {
152
+ this._clearScenes();
153
+ this._tileSize.x = this.tileWidth;
154
+ this._tileSize.y = this.tileHeight;
155
+ const tileWidth = this._tileSize.x + this._tileMargin;
156
+ const numItems = Math.max(this._tileElements.length, 20);
157
+ this._fullCircle = this._tileElements.length >= 20;
158
+ let angleTileDeg = 360 / numItems;
159
+ const circumference = numItems * tileWidth;
160
+ const radius = circumference / (Math.PI * 2);
161
+ const y = this.shadow ? 75 : 45;
162
+ const len = numItems;
163
+ let angleDeg = 90;
164
+ const position = new Vector3();
165
+ for (var i = 0; i < len; i++) {
166
+ const angle = angleDeg * (Math.PI / 180); // Radians
167
+ const x = radius * Math.cos(angle);
168
+ const z = -radius + radius * Math.sin(angle);
169
+ position.set(x, y, z);
170
+ this._targetPositions.push(position.clone());
171
+ if (i < this._tileElements.length) {
172
+ const tile = new CarouselItem({ tileSize: this._tileSize }, i, (idx) => this._rotateTo(idx));
173
+ tile.setPosition(position);
174
+ tile.setContent(this._tileElements[i].nativeElement);
175
+ this._scene.add(tile.mesh);
176
+ this._sceneCss.add(tile.object);
177
+ this._tiles3D.push(tile);
178
+ }
179
+ angleDeg = angleDeg - angleTileDeg; // CW instead of CCW
180
+ }
181
+ this._adjustCameraZoom();
182
+ this._tileOffset = this.selectedIndex;
183
+ this._rotate(0);
184
+ this._render();
185
+ }
186
+ _adjustCameraZoom() {
187
+ if (this._tiles3D.length === 0) {
188
+ return;
189
+ }
190
+ const object = this._tiles3D[0].mesh;
191
+ // offset = offset || 1.15;
192
+ // get bounding box of object - this will be used to setup controls and camera
193
+ const boundingBox = new Box3();
194
+ boundingBox.setFromObject(object);
195
+ const center = new Vector3();
196
+ boundingBox.getCenter(center);
197
+ const size = new Vector3();
198
+ boundingBox.getSize(size);
199
+ // get the max side of the bounding box (fits to width OR height as needed )
200
+ const maxDim = Math.max(size.x, size.y, size.z);
201
+ const fov = this._camera.fov * (Math.PI / 180);
202
+ // let cameraZ = Math.abs(maxDim / 4 * Math.tan(fov * 200));
203
+ let cameraZ = Math.abs((maxDim / 2) / Math.tan(fov / 2));
204
+ // cameraZ *= offset; // zoom out a little so that objects don't fill the screen
205
+ this._camera.position.z = cameraZ;
206
+ this._camera.lookAt(center);
207
+ }
208
+ _checkNavigationButtons() {
209
+ const currentIdx = this._getSelectedIndex();
210
+ this.canNavigateLeft = (currentIdx > 0) || this._fullCircle;
211
+ this.canNavigateRight = (currentIdx < this._tileElements.length - 1) || this._fullCircle;
212
+ }
213
+ _animate() {
214
+ TWEEN.update();
215
+ setTimeout(() => {
216
+ this._renderer.setAnimationLoop(() => this._animate());
217
+ }, 200);
218
+ }
219
+ _getSelectedIndex() {
220
+ return Math.max(0, Math.min(this.selectedIndex, this._tileElements.length - 1));
221
+ }
222
+ _rotate(duration) {
223
+ TWEEN.removeAll();
224
+ for (let i = 0; i < this._tiles3D.length; i++) {
225
+ const tile = this._tiles3D[i];
226
+ if (Math.abs(this._tileOffset) > this._targetPositions.length) { // full circle
227
+ this._tileOffset = this._tileOffset > 0 ? 1 : -1;
228
+ }
229
+ let positionIdx = i - this._tileOffset;
230
+ if (positionIdx > this._targetPositions.length - 1) {
231
+ positionIdx = positionIdx - this._targetPositions.length;
232
+ }
233
+ else if (positionIdx < 0) {
234
+ positionIdx = this._targetPositions.length + positionIdx;
235
+ }
236
+ const target = this._targetPositions[positionIdx];
237
+ new TWEEN.Tween(tile.object.position)
238
+ .to(target, duration)
239
+ .easing(TWEEN.Easing.Quartic.Out)
240
+ .start();
241
+ new TWEEN.Tween(tile.mesh.position)
242
+ .to(target, duration)
243
+ .easing(TWEEN.Easing.Quartic.Out)
244
+ .start();
245
+ }
246
+ new TWEEN.Tween()
247
+ .to({}, duration * 2)
248
+ .onUpdate(() => {
249
+ this._render();
250
+ })
251
+ .start();
252
+ this.selectedIndex = this._tileOffset;
253
+ this._checkNavigationButtons();
254
+ this.indexSelected.next(this._getSelectedIndex());
255
+ }
256
+ _rotateTo(index) {
257
+ const current = this._getSelectedIndex();
258
+ this._tileOffset += index - current;
259
+ this._rotate(800);
260
+ }
261
+ _resizeCanvasToDisplaySize() {
262
+ this._camera.aspect = this.canvasContainer.nativeElement.clientWidth / this.canvasContainer.nativeElement.clientHeight;
263
+ this._camera.updateProjectionMatrix();
264
+ this._rendererCss.setSize(this.canvasContainer.nativeElement.clientWidth, this.canvasContainer.nativeElement.clientHeight);
265
+ this._renderer.setSize(this.canvasContainer.nativeElement.clientWidth, this.canvasContainer.nativeElement.clientHeight);
266
+ this._render();
267
+ }
268
+ _render() {
269
+ this._rendererCss.render(this._sceneCss, this._camera);
270
+ this._renderer.render(this._scene, this._camera);
271
+ }
272
+ }
273
+ Carousel3dComponent.decorators = [
274
+ { type: Component, args: [{
275
+ selector: "co-carousel-3d",
276
+ template: `
277
+ <div class="carousel-3d-canvas-wrapper" #canvasContainer>
278
+ <div class="carousel-wrapper" #carouselWrapper>
279
+ <div class="carousel-navigate-button left">
280
+ <div class="carousel-navigate-button-wrapper" *ngIf="canNavigateLeft" (click)="handleButtonLeftClick()">
281
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 512">
282
+ <path
283
+ d="M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z"></path>
284
+ </svg>
285
+ </div>
286
+ </div>
287
+ <div class="carousel-navigate-button right">
288
+ <div class="carousel-navigate-button-wrapper" *ngIf="canNavigateRight" (click)="handleButtonRightClick()">
289
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 512">
290
+ <path
291
+ d="M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"></path>
292
+ </svg>
293
+ </div>
294
+ </div>
295
+ </div>
296
+ </div>
297
+ `,
298
+ encapsulation: ViewEncapsulation.None
299
+ },] }
300
+ ];
301
+ Carousel3dComponent.propDecorators = {
302
+ canvasContainer: [{ type: ViewChild, args: ["canvasContainer", { read: ElementRef },] }],
303
+ carouselWrapper: [{ type: ViewChild, args: ["carouselWrapper", { read: ElementRef },] }],
304
+ children: [{ type: ContentChildren, args: ["carouselItem", { read: ElementRef, descendants: true },] }],
305
+ tileWidth: [{ type: Input }],
306
+ tileHeight: [{ type: Input }],
307
+ cameraHeight: [{ type: Input }],
308
+ shadow: [{ type: Input }],
309
+ selectedIndex: [{ type: Input }],
310
+ indexSelected: [{ type: Output }],
311
+ showClass: [{ type: HostBinding, args: ["class.co-carousel-3d",] }]
312
+ };
313
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwtM2QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2Nhcm91c2VsLTNkL2Nhcm91c2VsLTNkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLFlBQVksRUFDWixJQUFJLEVBQ0osS0FBSyxFQUNMLEdBQUcsRUFDSCxJQUFJLEVBQ0osaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsS0FBSyxFQUNMLFNBQVMsRUFDVCxPQUFPLEVBQ1AsT0FBTyxFQUNQLGFBQWEsRUFDZCxNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQWMsYUFBYSxFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDdEYsT0FBTyxLQUFLLEtBQUssTUFBTSxtQkFBbUIsQ0FBQztBQTRCM0MsTUFBTSxPQUFPLG1CQUFtQjtJQTFCaEM7UUE4Q1MsaUJBQVksR0FBVyxFQUFFLENBQUM7UUFHMUIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUd4QixrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUcxQixrQkFBYSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBUWhFLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLHFCQUFnQixHQUFHLFFBQVEsQ0FBQztRQUs1QixrQkFBYSxHQUFZLElBQUksQ0FBQztRQUM5QixjQUFTLEdBQVksSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNuQyxnQkFBVyxHQUFXLEVBQUUs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QUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuRCxDQUFDOzs7WUFyV0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7OEJBRUUsU0FBUyxTQUFDLGlCQUFpQixFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQzs4QkFHL0MsU0FBUyxTQUFDLGlCQUFpQixFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQzt1QkFHL0MsZUFBZSxTQUFDLGNBQWMsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBQzt3QkFNckUsS0FBSzt5QkFHTCxLQUFLOzJCQUdMLEtBQUs7cUJBR0wsS0FBSzs0QkFHTCxLQUFLOzRCQUdMLE1BQU07d0JBR04sV0FBVyxTQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDb21wb25lbnQsXHJcbiAgQ29udGVudENoaWxkcmVuLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtcclxuICBBbWJpZW50TGlnaHQsXHJcbiAgQm94MyxcclxuICBDb2xvcixcclxuICBGb2csXHJcbiAgTWVzaCxcclxuICBNZXNoUGhvbmdNYXRlcmlhbCxcclxuICBQZXJzcGVjdGl2ZUNhbWVyYSxcclxuICBQbGFuZUdlb21ldHJ5LFxyXG4gIFNjZW5lLFxyXG4gIFNwb3RMaWdodCxcclxuICBWZWN0b3IyLFxyXG4gIFZlY3RvcjMsXHJcbiAgV2ViR0xSZW5kZXJlclxyXG59IGZyb20gXCJ0aHJlZVwiO1xyXG5pbXBvcnQge0Nhcm91c2VsSXRlbX0gZnJvbSBcIi4vY2Fyb3VzZWxJdGVtXCI7XHJcbmltcG9ydCB7Q1NTM0RPYmplY3QsIENTUzNEUmVuZGVyZXJ9IGZyb20gXCJ0aHJlZS9leGFtcGxlcy9qc20vcmVuZGVyZXJzL0NTUzNEUmVuZGVyZXJcIjtcclxuaW1wb3J0ICogYXMgVFdFRU4gZnJvbSBcIkB0d2VlbmpzL3R3ZWVuLmpzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjby1jYXJvdXNlbC0zZFwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtM2QtY2FudmFzLXdyYXBwZXJcIiAjY2FudmFzQ29udGFpbmVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtd3JhcHBlclwiICNjYXJvdXNlbFdyYXBwZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcm91c2VsLW5hdmlnYXRlLWJ1dHRvbiBsZWZ0XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtbmF2aWdhdGUtYnV0dG9uLXdyYXBwZXJcIiAqbmdJZj1cImNhbk5hdmlnYXRlTGVmdFwiIChjbGljayk9XCJoYW5kbGVCdXR0b25MZWZ0Q2xpY2soKVwiPlxyXG4gICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDI1NiA1MTJcIj5cclxuICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgZD1cIk0zMS43IDIzOWwxMzYtMTM2YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDIyLjYgMjIuNmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOUwxMjcuOSAyNTZsOTYuNCA5Ni40YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45TDIwMS43IDQwOWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTEzNi0xMzZjLTkuNS05LjQtOS41LTI0LjYtLjEtMzR6XCI+PC9wYXRoPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1uYXZpZ2F0ZS1idXR0b24gcmlnaHRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1uYXZpZ2F0ZS1idXR0b24td3JhcHBlclwiICpuZ0lmPVwiY2FuTmF2aWdhdGVSaWdodFwiIChjbGljayk9XCJoYW5kbGVCdXR0b25SaWdodENsaWNrKClcIj5cclxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyNTYgNTEyXCI+XHJcbiAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGQ9XCJNMjI0LjMgMjczbC0xMzYgMTM2Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtMjIuNi0yMi42Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWw5Ni40LTk2LjQtOTYuNC05Ni40Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOUw1NC4zIDEwM2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwxMzYgMTM2YzkuNSA5LjQgOS41IDI0LjYuMSAzNHpcIj48L3BhdGg+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYXJvdXNlbDNkQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKFwiY2FudmFzQ29udGFpbmVyXCIsIHtyZWFkOiBFbGVtZW50UmVmfSlcclxuICBwdWJsaWMgY2FudmFzQ29udGFpbmVyOiBFbGVtZW50UmVmO1xyXG5cclxuICBAVmlld0NoaWxkKFwiY2Fyb3VzZWxXcmFwcGVyXCIsIHtyZWFkOiBFbGVtZW50UmVmfSlcclxuICBwdWJsaWMgY2Fyb3VzZWxXcmFwcGVyOiBFbGVtZW50UmVmO1xyXG5cclxuICBAQ29udGVudENoaWxkcmVuKFwiY2Fyb3VzZWxJdGVtXCIsIHtyZWFkOiBFbGVtZW50UmVmLCBkZXNjZW5kYW50czogdHJ1ZX0pIHNldCBjaGlsZHJlbihjaGlsZHJlbikge1xyXG4gICAgdGhpcy5fZWxlbWVudHNDcmVhdGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLl90aWxlRWxlbWVudHMgPSBjaGlsZHJlbi50b0FycmF5KCk7XHJcbiAgICB0aGlzLl9idWlsZENhcm91c2VsKCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB0aWxlV2lkdGg6IG51bWJlcjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdGlsZUhlaWdodDogbnVtYmVyO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjYW1lcmFIZWlnaHQ6IG51bWJlciA9IDUwO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaGFkb3c6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2VsZWN0ZWRJbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGluZGV4U2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLWNhcm91c2VsLTNkXCIpXHJcbiAgcHVibGljIHNob3dDbGFzcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2FtZXJhOiBQZXJzcGVjdGl2ZUNhbWVyYTtcclxuICBwcml2YXRlIF9jYW1lcmFab29tOiBudW1iZXIgPSAwO1xyXG4gIHByaXZhdGUgX2JhY2tncm91bmRDb2xvciA9IDB4ZmZmZmZmO1xyXG4gIHByaXZhdGUgX3NjZW5lQ3NzOiBTY2VuZTtcclxuICBwcml2YXRlIF9zY2VuZTogU2NlbmU7XHJcbiAgcHJpdmF0ZSBfcmVuZGVyZXJDc3M6IENTUzNEUmVuZGVyZXI7XHJcbiAgcHJpdmF0ZSBfcmVuZGVyZXI6IFdlYkdMUmVuZGVyZXI7XHJcbiAgcHJpdmF0ZSBfYW1iaWVudExpZ2h0OiBib29sZWFuID0gdHJ1ZTtcclxuICBwcml2YXRlIF90aWxlU2l6ZTogVmVjdG9yMiA9IG5ldyBWZWN0b3IyKCk7XHJcbiAgcHJpdmF0ZSBfdGlsZU1hcmdpbjogbnVtYmVyID0gMjA7XHJcbiAgcHJpdmF0ZSBfdGFyZ2V0UG9zaXRpb25zID0gW107XHJcbiAgcHJpdmF0ZSBfdGlsZUVsZW1lbnRzOiBFbGVtZW50UmVmW10gPSBbXTtcclxuICBwcml2YXRlIF90aWxlT2Zmc2V0ID0gMDtcclxuICBwcml2YXRlIF90aWxlczNEOiBDYXJvdXNlbEl0ZW1bXSA9IFtdO1xyXG4gIHByaXZhdGUgX3BsYW5lQ29sb3IgPSAweGZmZmZmZjtcclxuICBwcml2YXRlIF9wbGFuZUhlaWdodCA9IC00NjtcclxuICBwcml2YXRlIF9zcG90TGlnaHRQb3NpdGlvbjogVmVjdG9yMyA9IG5ldyBWZWN0b3IzKDAsIDI1MCwgLTIwMCk7XHJcbiAgcHJpdmF0ZSBfZnVsbENpcmNsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2luaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfZWxlbWVudHNDcmVhdGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBjYW5OYXZpZ2F0ZUxlZnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgY2FuTmF2aWdhdGVSaWdodDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAgIHRoaXMuX2J1aWxkQ2Fyb3VzZWwoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYW52YXNDb250YWluZXIgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmNhcm91c2VsV3JhcHBlciA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuX2NsZWFyU2NlbmVzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQnV0dG9uTGVmdENsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdGlsZU9mZnNldCAtPSAxO1xyXG4gICAgdGhpcy5fcm90YXRlKDQwMCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQnV0dG9uUmlnaHRDbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuX3RpbGVPZmZzZXQgKz0gMTtcclxuICAgIHRoaXMuX3JvdGF0ZSg0MDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfYnVpbGRDYXJvdXNlbCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5faW5pdGlhbGl6ZWQpIHtcclxuICAgICAgdGhpcy5faW5pdCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX2luaXRpYWxpemVkICYmICF0aGlzLl9lbGVtZW50c0NyZWF0ZWQpIHtcclxuICAgICAgdGhpcy5fY3JlYXRlVGlsZXMoKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2NoZWNrTmF2aWdhdGlvbkJ1dHRvbnMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuY2FudmFzQ29udGFpbmVyIHx8ICF0aGlzLmNhbnZhc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9pbml0Q2FtZXJhKCk7XHJcbiAgICB0aGlzLl9pbml0U2NlbmUoKTtcclxuICAgIHRoaXMuX2luaXRSZW5kZXJlcigpO1xyXG5cclxuICAgIGlmICh0aGlzLnNoYWRvdykge1xyXG4gICAgICBjb25zdCBnZW9tZXRyeSA9IG5ldyBQbGFuZUdlb21ldHJ5KDEwMDAwLCAxMDAwMCk7XHJcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gbmV3IE1lc2hQaG9uZ01hdGVyaWFsKHtjb2xvcjogdGhpcy5fcGxhbmVDb2xvciwgc2hpbmluZXNzOiAxMDB9KTtcclxuICAgICAgY29uc3QgcGxhbmUgPSBuZXcgTWVzaChnZW9tZXRyeSwgbWF0ZXJpYWwpO1xyXG4gICAgICBwbGFuZS5yZWNlaXZlU2hhZG93ID0gdHJ1ZTtcclxuICAgICAgcGxhbmUucm90YXRpb24ueCA9IC1NYXRoLlBJIC8gMjtcclxuICAgICAgcGxhbmUucG9zaXRpb24ueSA9IHRoaXMuX3BsYW5lSGVpZ2h0O1xyXG4gICAgICB0aGlzLl9zY2VuZS5hZGQocGxhbmUpO1xyXG5cclxuICAgICAgY29uc3Qgc3BvdExpZ2h0ID0gbmV3IFNwb3RMaWdodCgweGZmZmZmZiwgMC41KTtcclxuICAgICAgc3BvdExpZ2h0LnBvc2l0aW9uLmNvcHkodGhpcy5fc3BvdExpZ2h0UG9zaXRpb24pO1xyXG4gICAgICBzcG90TGlnaHQuY2FzdFNoYWRvdyA9IHRydWU7XHJcbiAgICAgIHNwb3RMaWdodC5zaGFkb3cubWFwU2l6ZS53aWR0aCA9IDUxMjtcclxuICAgICAgc3BvdExpZ2h0LnNoYWRvdy5tYXBTaXplLmhlaWdodCA9IDUxMjtcclxuICAgICAgc3BvdExpZ2h0LnNoYWRvdy5jYW1lcmEubmVhciA9IDUwO1xyXG4gICAgICBzcG90TGlnaHQuc2hhZG93LmNhbWVyYS5mYXIgPSAxMjAwO1xyXG4gICAgICBzcG90TGlnaHQuc2hhZG93LmNhbWVyYS5mb3YgPSAzMDtcclxuICAgICAgc3BvdExpZ2h0LnBlbnVtYnJhID0gMTtcclxuICAgICAgdGhpcy5fc2NlbmUuYWRkKHNwb3RMaWdodCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jYXJvdXNlbFdyYXBwZXIubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9yZW5kZXJlckNzcy5kb21FbGVtZW50KTtcclxuICAgIHRoaXMuY2FudmFzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5jYXJvdXNlbFdyYXBwZXIubmF0aXZlRWxlbWVudCk7XHJcbiAgICB0aGlzLmNhbnZhc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3JlbmRlcmVyLmRvbUVsZW1lbnQpO1xyXG5cclxuICAgIHRoaXMuX3JlbmRlcigpO1xyXG4gICAgdGhpcy5fYW5pbWF0ZSgpO1xyXG5cclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsICgpID0+IHtcclxuICAgICAgdGhpcy5fcmVzaXplQ2FudmFzVG9EaXNwbGF5U2l6ZSgpO1xyXG4gICAgfSwgZmFsc2UpO1xyXG5cclxuICAgIHRoaXMuX2luaXRpYWxpemVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luaXRDYW1lcmEoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jYW1lcmEgPSBuZXcgUGVyc3BlY3RpdmVDYW1lcmEoNTAsIHRoaXMuY2FudmFzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGggLyB0aGlzLmNhbnZhc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCwgMSwgMTAwMDApO1xyXG4gICAgdGhpcy5fY2FtZXJhLnBvc2l0aW9uLnogPSA2MDAgLSB0aGlzLl9jYW1lcmFab29tO1xyXG4gICAgdGhpcy5fY2FtZXJhLnBvc2l0aW9uLnkgPSB0aGlzLmNhbWVyYUhlaWdodDtcclxuICAgIHRoaXMuX2NhbWVyYS5sb29rQXQobmV3IFZlY3RvcjMoKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0U2NlbmUoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zY2VuZUNzcyA9IG5ldyBTY2VuZSgpO1xyXG4gICAgdGhpcy5fc2NlbmUgPSBuZXcgU2NlbmUoKTtcclxuICAgIHRoaXMuX3NjZW5lLmJhY2tncm91bmQgPSBuZXcgQ29sb3IodGhpcy5fYmFja2dyb3VuZENvbG9yKTtcclxuXHJcbiAgICBpZiAodGhpcy5fYW1iaWVudExpZ2h0KSB7XHJcbiAgICAgIGNvbnN0IGxpZ2h0ID0gbmV3IEFtYmllbnRMaWdodCgweGFhYWFhYSk7IC8vIHNvZnQgd2hpdGUgbGlnaHRcclxuICAgICAgdGhpcy5fc2NlbmUuYWRkKGxpZ2h0KTtcclxuXHJcbiAgICAgIHRoaXMuX3NjZW5lLmZvZyA9IG5ldyBGb2codGhpcy5fYmFja2dyb3VuZENvbG9yLCA3MCwgMjUwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0UmVuZGVyZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZW5kZXJlckNzcyA9IG5ldyBDU1MzRFJlbmRlcmVyKCk7XHJcbiAgICB0aGlzLl9yZW5kZXJlckNzcy5zZXRTaXplKHRoaXMuY2FudmFzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgsIHRoaXMuY2FudmFzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0KTtcclxuICAgIHRoaXMuX3JlbmRlcmVyQ3NzLmRvbUVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XHJcblxyXG4gICAgdGhpcy5fcmVuZGVyZXIgPSBuZXcgV2ViR0xSZW5kZXJlcih7YW50aWFsaWFzOiB0cnVlfSk7XHJcbiAgICB0aGlzLl9yZW5kZXJlci5zZXRQaXhlbFJhdGlvKHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvKTtcclxuICAgIHRoaXMuX3JlbmRlcmVyLnNldFNpemUodGhpcy5jYW52YXNDb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCwgdGhpcy5jYW52YXNDb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQpO1xyXG4gICAgdGhpcy5fcmVuZGVyZXIuc2hhZG93TWFwLmVuYWJsZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZGlzcG9zZU9iamVjdChvYmo6IE1lc2ggfCBDU1MzRE9iamVjdCk6IHZvaWQge1xyXG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIE1lc2gpIHtcclxuICAgICAgaWYgKG9iai5nZW9tZXRyeSkge1xyXG4gICAgICAgIG9iai5nZW9tZXRyeS5kaXNwb3NlKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG9iai5tYXRlcmlhbCkge1xyXG4gICAgICAgIEFycmF5LmlzQXJyYXkob2JqLm1hdGVyaWFsKT8gb2JqLm1hdGVyaWFsLm1hcChtID0+IG0uZGlzcG9zZSgpKSA6IG9iai5tYXRlcmlhbC5kaXNwb3NlKCk7XHJcbiAgICAgIH1cclxuICAgICAgb2JqID0gdW5kZWZpbmVkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgb2JqLmVsZW1lbnQgPSB1bmRlZmluZWQ7XHJcbiAgICAgIG9iaiA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NsZWFyU2NlbmVzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgbWVzaGVzOiBNZXNoW10gPSB0aGlzLl90aWxlczNELm1hcCh0ID0+IHQubWVzaCk7XHJcbiAgICBjb25zdCBjc3NPYmpzOiBDU1MzRE9iamVjdFtdID0gdGhpcy5fdGlsZXMzRC5tYXAodCA9PiB0Lm9iamVjdCk7XHJcbiAgICB0aGlzLl9zY2VuZS5yZW1vdmUoLi4ubWVzaGVzKTtcclxuICAgIG1lc2hlcy5tYXAobSA9PiB0aGlzLl9kaXNwb3NlT2JqZWN0KG0pKTtcclxuICAgIG1lc2hlcy5sZW5ndGggPSAwO1xyXG4gICAgdGhpcy5fc2NlbmVDc3MucmVtb3ZlKC4uLmNzc09ianMpO1xyXG4gICAgY3NzT2Jqcy5tYXAobyA9PiB0aGlzLl9kaXNwb3NlT2JqZWN0KG8pKTtcclxuICAgIGNzc09ianMubGVuZ3RoID0gMDtcclxuICAgIHRoaXMuX3RpbGVzM0QubGVuZ3RoID0gMDtcclxuICAgIHRoaXMuX3RhcmdldFBvc2l0aW9ucy5sZW5ndGggPSAwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlVGlsZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jbGVhclNjZW5lcygpO1xyXG4gICAgdGhpcy5fdGlsZVNpemUueCA9IHRoaXMudGlsZVdpZHRoO1xyXG4gICAgdGhpcy5fdGlsZVNpemUueSA9IHRoaXMudGlsZUhlaWdodDtcclxuICAgIGNvbnN0IHRpbGVXaWR0aCA9IHRoaXMuX3RpbGVTaXplLnggKyB0aGlzLl90aWxlTWFyZ2luO1xyXG4gICAgY29uc3QgbnVtSXRlbXM6IG51bWJlciA9IE1hdGgubWF4KHRoaXMuX3RpbGVFbGVtZW50cy5sZW5ndGgsIDIwKTtcclxuICAgIHRoaXMuX2Z1bGxDaXJjbGUgPSB0aGlzLl90aWxlRWxlbWVudHMubGVuZ3RoID49IDIwO1xyXG4gICAgbGV0IGFuZ2xlVGlsZURlZzogbnVtYmVyID0gMzYwIC8gbnVtSXRlbXM7XHJcbiAgICBjb25zdCBjaXJjdW1mZXJlbmNlOiBudW1iZXIgPSBudW1JdGVtcyAqIHRpbGVXaWR0aDtcclxuICAgIGNvbnN0IHJhZGl1czogbnVtYmVyID0gY2lyY3VtZmVyZW5jZSAvIChNYXRoLlBJICogMik7XHJcbiAgICBjb25zdCB5ID0gdGhpcy5zaGFkb3cgPyA3NSA6IDQ1O1xyXG5cclxuICAgIGNvbnN0IGxlbjogbnVtYmVyID0gbnVtSXRlbXM7XHJcbiAgICBsZXQgYW5nbGVEZWc6IG51bWJlciA9IDkwO1xyXG4gICAgY29uc3QgcG9zaXRpb246IFZlY3RvcjMgPSBuZXcgVmVjdG9yMygpO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICBjb25zdCBhbmdsZSA9IGFuZ2xlRGVnICogKCBNYXRoLlBJIC8gMTgwICk7IC8vIFJhZGlhbnNcclxuICAgICAgY29uc3QgeCA9IHJhZGl1cyAqIE1hdGguY29zKGFuZ2xlKTtcclxuICAgICAgY29uc3QgeiA9IC1yYWRpdXMgKyByYWRpdXMgKiBNYXRoLnNpbihhbmdsZSk7XHJcbiAgICAgIHBvc2l0aW9uLnNldCh4LCB5LCB6KTtcclxuICAgICAgdGhpcy5fdGFyZ2V0UG9zaXRpb25zLnB1c2gocG9zaXRpb24uY2xvbmUoKSk7XHJcbiAgICAgIGlmIChpIDwgdGhpcy5fdGlsZUVsZW1lbnRzLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IHRpbGU6IENhcm91c2VsSXRlbSA9IG5ldyBDYXJvdXNlbEl0ZW0oe3RpbGVTaXplOiB0aGlzLl90aWxlU2l6ZX0sIGksIChpZHg6IG51bWJlcikgPT4gdGhpcy5fcm90YXRlVG8oaWR4KSk7XHJcbiAgICAgICAgdGlsZS5zZXRQb3NpdGlvbihwb3NpdGlvbik7XHJcbiAgICAgICAgdGlsZS5zZXRDb250ZW50KHRoaXMuX3RpbGVFbGVtZW50c1tpXS5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICB0aGlzLl9zY2VuZS5hZGQodGlsZS5tZXNoKTtcclxuICAgICAgICB0aGlzLl9zY2VuZUNzcy5hZGQodGlsZS5vYmplY3QpO1xyXG4gICAgICAgIHRoaXMuX3RpbGVzM0QucHVzaCh0aWxlKTtcclxuICAgICAgfVxyXG4gICAgICBhbmdsZURlZyA9IGFuZ2xlRGVnIC0gYW5nbGVUaWxlRGVnOyAvLyBDVyBpbnN0ZWFkIG9mIENDV1xyXG4gICAgfVxyXG4gICAgdGhpcy5fYWRqdXN0Q2FtZXJhWm9vbSgpO1xyXG4gICAgdGhpcy5fdGlsZU9mZnNldCA9IHRoaXMuc2VsZWN0ZWRJbmRleDtcclxuICAgIHRoaXMuX3JvdGF0ZSgwKTtcclxuICAgIHRoaXMuX3JlbmRlcigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfYWRqdXN0Q2FtZXJhWm9vbSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl90aWxlczNELmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBvYmplY3QgPSB0aGlzLl90aWxlczNEWzBdLm1lc2g7XHJcbiAgICAvLyBvZmZzZXQgPSBvZmZzZXQgfHwgMS4xNTtcclxuXHJcbiAgICAvLyBnZXQgYm91bmRpbmcgYm94IG9mIG9iamVjdCAtIHRoaXMgd2lsbCBiZSB1c2VkIHRvIHNldHVwIGNvbnRyb2xzIGFuZCBjYW1lcmFcclxuICAgIGNvbnN0IGJvdW5kaW5nQm94ID0gbmV3IEJveDMoKTtcclxuICAgIGJvdW5kaW5nQm94LnNldEZyb21PYmplY3Qob2JqZWN0KTtcclxuICAgIGNvbnN0IGNlbnRlcjogVmVjdG9yMyA9IG5ldyBWZWN0b3IzKCk7XHJcbiAgICBib3VuZGluZ0JveC5nZXRDZW50ZXIoY2VudGVyKTtcclxuICAgIGNvbnN0IHNpemU6IFZlY3RvcjMgPSBuZXcgVmVjdG9yMygpO1xyXG4gICAgYm91bmRpbmdCb3guZ2V0U2l6ZShzaXplKTtcclxuXHJcbiAgICAvLyBnZXQgdGhlIG1heCBzaWRlIG9mIHRoZSBib3VuZGluZyBib3ggKGZpdHMgdG8gd2lkdGggT1IgaGVpZ2h0IGFzIG5lZWRlZCApXHJcbiAgICBjb25zdCBtYXhEaW0gPSBNYXRoLm1heChzaXplLngsIHNpemUueSwgc2l6ZS56KTtcclxuXHJcbiAgICBjb25zdCBmb3Y6IG51bWJlciA9IHRoaXMuX2NhbWVyYS5mb3YgKiAoTWF0aC5QSSAvIDE4MCk7XHJcbiAgICAvLyBsZXQgY2FtZXJhWiA9IE1hdGguYWJzKG1heERpbSAvIDQgKiBNYXRoLnRhbihmb3YgKiAyMDApKTtcclxuICAgIGxldCBjYW1lcmFaID0gTWF0aC5hYnMoKG1heERpbSAvIDIpIC8gTWF0aC50YW4oZm92IC8gMikpO1xyXG4gICAgLy8gY2FtZXJhWiAqPSBvZmZzZXQ7IC8vIHpvb20gb3V0IGEgbGl0dGxlIHNvIHRoYXQgb2JqZWN0cyBkb24ndCBmaWxsIHRoZSBzY3JlZW5cclxuICAgIHRoaXMuX2NhbWVyYS5wb3NpdGlvbi56ID0gY2FtZXJhWjtcclxuICAgIHRoaXMuX2NhbWVyYS5sb29rQXQoY2VudGVyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NoZWNrTmF2aWdhdGlvbkJ1dHRvbnMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjdXJyZW50SWR4OiBudW1iZXIgPSB0aGlzLl9nZXRTZWxlY3RlZEluZGV4KCk7XHJcbiAgICB0aGlzLmNhbk5hdmlnYXRlTGVmdCA9IChjdXJyZW50SWR4ID4gMCkgfHwgdGhpcy5fZnVsbENpcmNsZTtcclxuICAgIHRoaXMuY2FuTmF2aWdhdGVSaWdodCA9IChjdXJyZW50SWR4IDwgdGhpcy5fdGlsZUVsZW1lbnRzLmxlbmd0aCAtIDEpIHx8IHRoaXMuX2Z1bGxDaXJjbGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9hbmltYXRlKCkge1xyXG4gICAgVFdFRU4udXBkYXRlKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0QW5pbWF0aW9uTG9vcCgoKSA9PiB0aGlzLl9hbmltYXRlKCkpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldFNlbGVjdGVkSW5kZXgoKSB7XHJcbiAgICByZXR1cm4gTWF0aC5tYXgoMCwgTWF0aC5taW4odGhpcy5zZWxlY3RlZEluZGV4LCB0aGlzLl90aWxlRWxlbWVudHMubGVuZ3RoIC0gMSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcm90YXRlKGR1cmF0aW9uKSB7XHJcbiAgICBUV0VFTi5yZW1vdmVBbGwoKTtcclxuXHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdGhpcy5fdGlsZXMzRC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCB0aWxlID0gdGhpcy5fdGlsZXMzRFtpXTtcclxuXHJcbiAgICAgIGlmIChNYXRoLmFicyh0aGlzLl90aWxlT2Zmc2V0KSA+IHRoaXMuX3RhcmdldFBvc2l0aW9ucy5sZW5ndGgpIHsgLy8gZnVsbCBjaXJjbGVcclxuICAgICAgICB0aGlzLl90aWxlT2Zmc2V0ID0gdGhpcy5fdGlsZU9mZnNldCA+IDAgPyAxIDogLTE7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBwb3NpdGlvbklkeDogbnVtYmVyID0gaSAtIHRoaXMuX3RpbGVPZmZzZXQ7XHJcbiAgICAgIGlmIChwb3NpdGlvbklkeCA+IHRoaXMuX3RhcmdldFBvc2l0aW9ucy5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgcG9zaXRpb25JZHggPSBwb3NpdGlvbklkeCAtIHRoaXMuX3RhcmdldFBvc2l0aW9ucy5sZW5ndGg7XHJcbiAgICAgIH0gZWxzZSBpZiAocG9zaXRpb25JZHggPCAwKSB7XHJcbiAgICAgICAgcG9zaXRpb25JZHggPSB0aGlzLl90YXJnZXRQb3NpdGlvbnMubGVuZ3RoICsgcG9zaXRpb25JZHg7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5fdGFyZ2V0UG9zaXRpb25zW3Bvc2l0aW9uSWR4XTtcclxuXHJcbiAgICAgIG5ldyBUV0VFTi5Ud2Vlbih0aWxlLm9iamVjdC5wb3NpdGlvbilcclxuICAgICAgICAudG8odGFyZ2V0LCBkdXJhdGlvbilcclxuICAgICAgICAuZWFzaW5nKFRXRUVOLkVhc2luZy5RdWFydGljLk91dClcclxuICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgbmV3IFRXRUVOLlR3ZWVuKHRpbGUubWVzaC5wb3NpdGlvbilcclxuICAgICAgICAudG8odGFyZ2V0LCBkdXJhdGlvbilcclxuICAgICAgICAuZWFzaW5nKFRXRUVOLkVhc2luZy5RdWFydGljLk91dClcclxuICAgICAgICAuc3RhcnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZXcgVFdFRU4uVHdlZW4oKVxyXG4gICAgICAudG8oe30sIGR1cmF0aW9uICogMilcclxuICAgICAgLm9uVXBkYXRlKCgpID0+IHtcclxuICAgICAgICB0aGlzLl9yZW5kZXIoKTtcclxuICAgICAgfSlcclxuICAgICAgLnN0YXJ0KCk7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gdGhpcy5fdGlsZU9mZnNldDtcclxuICAgIHRoaXMuX2NoZWNrTmF2aWdhdGlvbkJ1dHRvbnMoKTtcclxuICAgIHRoaXMuaW5kZXhTZWxlY3RlZC5uZXh0KHRoaXMuX2dldFNlbGVjdGVkSW5kZXgoKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yb3RhdGVUbyhpbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5fZ2V0U2VsZWN0ZWRJbmRleCgpO1xyXG4gICAgdGhpcy5fdGlsZU9mZnNldCArPSBpbmRleCAtIGN1cnJlbnQ7XHJcbiAgICB0aGlzLl9yb3RhdGUoODAwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Jlc2l6ZUNhbnZhc1RvRGlzcGxheVNpemUoKSB7XHJcbiAgICB0aGlzLl9jYW1lcmEuYXNwZWN0ID0gdGhpcy5jYW52YXNDb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCAvIHRoaXMuY2FudmFzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xyXG4gICAgdGhpcy5fY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcclxuXHJcbiAgICB0aGlzLl9yZW5kZXJlckNzcy5zZXRTaXplKHRoaXMuY2FudmFzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgsIHRoaXMuY2FudmFzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0KTtcclxuICAgIHRoaXMuX3JlbmRlcmVyLnNldFNpemUodGhpcy5jYW52YXNDb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCwgdGhpcy5jYW52YXNDb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQpO1xyXG4gICAgdGhpcy5fcmVuZGVyKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZW5kZXIoKSB7XHJcbiAgICB0aGlzLl9yZW5kZXJlckNzcy5yZW5kZXIodGhpcy5fc2NlbmVDc3MsIHRoaXMuX2NhbWVyYSk7XHJcbiAgICB0aGlzLl9yZW5kZXJlci5yZW5kZXIodGhpcy5fc2NlbmUsIHRoaXMuX2NhbWVyYSk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -0,0 +1,19 @@
1
+ import { NgModule } from "@angular/core";
2
+ import { CommonModule } from "@angular/common";
3
+ import { Carousel3dComponent } from "./carousel-3d.component";
4
+ export class Carousel3dModule {
5
+ }
6
+ Carousel3dModule.decorators = [
7
+ { type: NgModule, args: [{
8
+ imports: [
9
+ CommonModule
10
+ ],
11
+ declarations: [
12
+ Carousel3dComponent
13
+ ],
14
+ exports: [
15
+ Carousel3dComponent
16
+ ]
17
+ },] }
18
+ ];
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwtM2QubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2Nhcm91c2VsLTNkL2Nhcm91c2VsLTNkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQWE1RCxNQUFNLE9BQU8sZ0JBQWdCOzs7WUFYNUIsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxZQUFZO2lCQUNiO2dCQUNELFlBQVksRUFBRTtvQkFDWixtQkFBbUI7aUJBQ3BCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxtQkFBbUI7aUJBQ3BCO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge0Nhcm91c2VsM2RDb21wb25lbnR9IGZyb20gXCIuL2Nhcm91c2VsLTNkLmNvbXBvbmVudFwiO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGVcclxuICBdLFxyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgQ2Fyb3VzZWwzZENvbXBvbmVudFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgQ2Fyb3VzZWwzZENvbXBvbmVudFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENhcm91c2VsM2RNb2R1bGUge1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,54 @@
1
+ import { CSS3DObject } from "three/examples/jsm/renderers/CSS3DRenderer";
2
+ import { Mesh, PlaneBufferGeometry } from "three";
3
+ export class CarouselItem {
4
+ constructor(options, index, onClick) {
5
+ var _a, _b;
6
+ this._options = options || {};
7
+ this.index = index;
8
+ const width = ((_a = this._options.tileSize) === null || _a === void 0 ? void 0 : _a.x) || 0;
9
+ const height = ((_b = this._options.tileSize) === null || _b === void 0 ? void 0 : _b.y) || 0;
10
+ this._element = document.createElement('div');
11
+ // this._element.style.backgroundColor = this._options.tileBackgroundColor;
12
+ this._element.style.width = width + "px";
13
+ this._element.style.height = height + "px";
14
+ this._element.addEventListener("click", () => {
15
+ if (onClick) {
16
+ onClick(this.index);
17
+ }
18
+ }, false);
19
+ this.object = new CSS3DObject(this._element);
20
+ const geometry = new PlaneBufferGeometry(width, height);
21
+ this.mesh = new Mesh(geometry, options.tileMaterial);
22
+ this.mesh.castShadow = true;
23
+ }
24
+ setPosition(position) {
25
+ if (this.mesh) {
26
+ this.mesh.position.copy(position);
27
+ }
28
+ if (this.object) {
29
+ this.object.position.copy(position);
30
+ }
31
+ }
32
+ setContent(content) {
33
+ if (this._element) {
34
+ // remove any exising tile content before setting new content
35
+ while (this._element.lastElementChild) {
36
+ this._element.removeChild(this._element.lastElementChild);
37
+ }
38
+ try {
39
+ this._element.appendChild(content);
40
+ }
41
+ catch (err) {
42
+ }
43
+ }
44
+ }
45
+ setVisible(visible) {
46
+ if (this.mesh) {
47
+ this.mesh.visible = visible;
48
+ }
49
+ if (this.object) {
50
+ this.object.visible = visible;
51
+ }
52
+ }
53
+ }
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWxJdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2Nhcm91c2VsLTNkL2Nhcm91c2VsSXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDdkUsT0FBTyxFQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBbUIsTUFBTSxPQUFPLENBQUM7QUFFbEUsTUFBTSxPQUFPLFlBQVk7SUFjdkIsWUFBWSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU87O1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVuQixNQUFNLEtBQUssR0FBRyxDQUFBLE1BQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLDBDQUFFLENBQUMsS0FBSSxDQUFDLENBQUM7UUFDN0MsTUFBTSxNQUFNLEdBQUcsQ0FBQSxNQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSwwQ0FBRSxDQUFDLEtBQUksQ0FBQyxDQUFDO1FBRTlDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QywyRUFBMkU7UUFDM0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFFM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQzNDLElBQUksT0FBTyxFQUFFO2dCQUNYLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDckI7UUFDSCxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFVixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU3QyxNQUFNLFFBQVEsR0FBRyxJQUFJLG1CQUFtQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFFTSxXQUFXLENBQUMsUUFBaUI7UUFDbEMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztJQUVNLFVBQVUsQ0FBQyxPQUFPO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUVqQiw2REFBNkQ7WUFDN0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFO2dCQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUM7YUFDM0Q7WUFFRCxJQUFJO2dCQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3BDO1lBQ0QsT0FBTyxHQUFHLEVBQUU7YUFDWDtTQUNGO0lBQ0gsQ0FBQztJQUVNLFVBQVUsQ0FBQyxPQUFnQjtRQUNoQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7U0FDN0I7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7U0FDL0I7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NTUzNET2JqZWN0fSBmcm9tIFwidGhyZWUvZXhhbXBsZXMvanNtL3JlbmRlcmVycy9DU1MzRFJlbmRlcmVyXCI7XHJcbmltcG9ydCB7TWVzaCwgUGxhbmVCdWZmZXJHZW9tZXRyeSwgVmVjdG9yMiwgVmVjdG9yM30gZnJvbSBcInRocmVlXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgQ2Fyb3VzZWxJdGVtIHtcclxuXHJcbiAgcHVibGljIG9iamVjdDogQ1NTM0RPYmplY3Q7XHJcbiAgcHVibGljIG1lc2g6IE1lc2g7XHJcbiAgcHVibGljIGluZGV4OiBudW1iZXI7XHJcblxyXG4gIHByaXZhdGUgX29wdGlvbnM6IHtcclxuICAgIHRpbGVTaXplOiBWZWN0b3IyLFxyXG4gICAgdGlsZUJhY2tncm91bmRDb2xvcjogYW55LFxyXG4gICAgdGV4dFNlbGVjdGFibGU6IGJvb2xlYW4sXHJcbiAgICB0aWxlQm9yZGVyQ29sb3I6IGFueVxyXG4gIH07XHJcbiAgcHJpdmF0ZSBfZWxlbWVudDogSFRNTERpdkVsZW1lbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMsIGluZGV4LCBvbkNsaWNrKSB7XHJcbiAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcclxuICAgIHRoaXMuaW5kZXggPSBpbmRleDtcclxuXHJcbiAgICBjb25zdCB3aWR0aCA9IHRoaXMuX29wdGlvbnMudGlsZVNpemU/LnggfHwgMDtcclxuICAgIGNvbnN0IGhlaWdodCA9IHRoaXMuX29wdGlvbnMudGlsZVNpemU/LnkgfHwgMDtcclxuXHJcbiAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAvLyB0aGlzLl9lbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMuX29wdGlvbnMudGlsZUJhY2tncm91bmRDb2xvcjtcclxuICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUud2lkdGggPSB3aWR0aCArIFwicHhcIjtcclxuICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgXCJweFwiO1xyXG5cclxuICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgICAgaWYgKG9uQ2xpY2spIHtcclxuICAgICAgICBvbkNsaWNrKHRoaXMuaW5kZXgpO1xyXG4gICAgICB9XHJcbiAgICB9LCBmYWxzZSk7XHJcblxyXG4gICAgdGhpcy5vYmplY3QgPSBuZXcgQ1NTM0RPYmplY3QodGhpcy5fZWxlbWVudCk7XHJcblxyXG4gICAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgUGxhbmVCdWZmZXJHZW9tZXRyeSh3aWR0aCwgaGVpZ2h0KTtcclxuICAgIHRoaXMubWVzaCA9IG5ldyBNZXNoKGdlb21ldHJ5LCBvcHRpb25zLnRpbGVNYXRlcmlhbCk7XHJcbiAgICB0aGlzLm1lc2guY2FzdFNoYWRvdyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0UG9zaXRpb24ocG9zaXRpb246IFZlY3RvcjMpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm1lc2gpIHtcclxuICAgICAgdGhpcy5tZXNoLnBvc2l0aW9uLmNvcHkocG9zaXRpb24pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub2JqZWN0KSB7XHJcbiAgICAgIHRoaXMub2JqZWN0LnBvc2l0aW9uLmNvcHkocG9zaXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldENvbnRlbnQoY29udGVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2VsZW1lbnQpIHtcclxuXHJcbiAgICAgIC8vIHJlbW92ZSBhbnkgZXhpc2luZyB0aWxlIGNvbnRlbnQgYmVmb3JlIHNldHRpbmcgbmV3IGNvbnRlbnRcclxuICAgICAgd2hpbGUgKHRoaXMuX2VsZW1lbnQubGFzdEVsZW1lbnRDaGlsZCkge1xyXG4gICAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5fZWxlbWVudC5sYXN0RWxlbWVudENoaWxkKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdHJ5IHtcclxuICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGNvbnRlbnQpO1xyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFZpc2libGUodmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubWVzaCkge1xyXG4gICAgICB0aGlzLm1lc2gudmlzaWJsZSA9IHZpc2libGU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub2JqZWN0KSB7XHJcbiAgICAgIHRoaXMub2JqZWN0LnZpc2libGUgPSB2aXNpYmxlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -2,18 +2,16 @@ import { NgModule } from "@angular/core";
2
2
  import { CoDialogComponent } from "./co-dialog.component";
3
3
  import { IconModule } from "../icon/icon.module";
4
4
  import { CommonModule } from "@angular/common";
5
- import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
6
5
  export class CoDialogModule {
7
6
  }
8
7
  CoDialogModule.decorators = [
9
8
  { type: NgModule, args: [{
10
9
  imports: [
11
10
  CommonModule,
12
- BrowserAnimationsModule,
13
11
  IconModule
14
12
  ],
15
13
  declarations: [CoDialogComponent],
16
14
  exports: [CoDialogComponent]
17
15
  },] }
18
16
  ];
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY28tZGlhbG9nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmVjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jby1kaWFsb2cvY28tZGlhbG9nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFXN0UsTUFBTSxPQUFPLGNBQWM7OztZQVQxQixRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osdUJBQXVCO29CQUN2QixVQUFVO2lCQUNYO2dCQUNDLFlBQVksRUFBRSxDQUFDLGlCQUFpQixDQUFDO2dCQUNqQyxPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQzthQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7Q29EaWFsb2dDb21wb25lbnR9IGZyb20gXCIuL2NvLWRpYWxvZy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtJY29uTW9kdWxlfSBmcm9tIFwiLi4vaWNvbi9pY29uLm1vZHVsZVwiO1xyXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge0Jyb3dzZXJBbmltYXRpb25zTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zXCI7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEJyb3dzZXJBbmltYXRpb25zTW9kdWxlLFxyXG4gICAgSWNvbk1vZHVsZVxyXG4gIF0sXHJcbiAgICBkZWNsYXJhdGlvbnM6IFtDb0RpYWxvZ0NvbXBvbmVudF0sXHJcbiAgICBleHBvcnRzOiBbQ29EaWFsb2dDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb0RpYWxvZ01vZHVsZSB7XHJcbn1cclxuIl19
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY28tZGlhbG9nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmVjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jby1kaWFsb2cvY28tZGlhbG9nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFVN0MsTUFBTSxPQUFPLGNBQWM7OztZQVIxQixRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osVUFBVTtpQkFDWDtnQkFDQyxZQUFZLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDakMsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUM7YUFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NvRGlhbG9nQ29tcG9uZW50fSBmcm9tIFwiLi9jby1kaWFsb2cuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7SWNvbk1vZHVsZX0gZnJvbSBcIi4uL2ljb24vaWNvbi5tb2R1bGVcIjtcclxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgSWNvbk1vZHVsZVxyXG4gIF0sXHJcbiAgICBkZWNsYXJhdGlvbnM6IFtDb0RpYWxvZ0NvbXBvbmVudF0sXHJcbiAgICBleHBvcnRzOiBbQ29EaWFsb2dDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb0RpYWxvZ01vZHVsZSB7XHJcbn1cclxuIl19
@@ -1,15 +1,25 @@
1
- import { ChangeDetectionStrategy, Component, forwardRef, HostBinding, Input, ViewEncapsulation } from "@angular/core";
1
+ import { ChangeDetectorRef, Component, ComponentFactoryResolver, ElementRef, forwardRef, HostBinding, Input, Optional, ViewEncapsulation } from "@angular/core";
2
2
  import { COMPONENT_INTERFACE_NAME } from "../base/component-interface-name";
3
3
  import { BaseInputComponent } from "../base/base-input.component";
4
4
  import { CheckBoxSelectionService } from "@syncfusion/ej2-angular-dropdowns";
5
+ import { FormInputUserModelChangeListenerService } from "../../core/service/form-input-user-change-listener.service";
6
+ import { NgZoneWrapperService } from "../../core/service/ng-zone-wrapper.service";
7
+ import { FormComponent } from "../form/form.component";
5
8
  export class DropDownListComponent extends BaseInputComponent {
6
- constructor() {
7
- super(...arguments);
9
+ constructor(formComponent, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
10
+ super(changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef);
11
+ this.formComponent = formComponent;
12
+ this.changeDetector = changeDetector;
13
+ this.componentFactoryResolver = componentFactoryResolver;
14
+ this.formUserChangeListener = formUserChangeListener;
15
+ this.ngZoneWrapper = ngZoneWrapper;
16
+ this.elementRef = elementRef;
8
17
  /**
9
18
  * In the form { text: 'name', value: 'id' }
10
19
  * Where 'text' is showing in the dropdown and 'id' used for the model binding
11
20
  */
12
21
  this.fields = {};
22
+ super._markAsOnPush();
13
23
  }
14
24
  showClass() {
15
25
  return true;
@@ -28,15 +38,20 @@ DropDownListComponent.decorators = [
28
38
  [dataSource]="collection"
29
39
  [value]="model"
30
40
  [fields]="fields"
31
- [placeholder]="placeHolder"
32
- [cssClass]="'co-drop-down-list'"
41
+ [placeholder]="placeholder"
33
42
  [readonly]="readonly"
34
43
  [itemTemplate]="itemTemplate"
35
44
  [headerTemplate]="headerTemplate"
36
45
  [valueTemplate]="valueTemplate"
46
+ [ngModel]="model"
47
+ (ngModelChange)="modelChange.emit($event)"
37
48
  (valueChange)="handleValueChanged($event)"
49
+ showClearButton="true"
50
+ floatLabelType="Auto"
38
51
  >
39
52
  </ejs-dropdownlist>
53
+ <div class="required-indicator"></div>
54
+ <ng-template #validationError></ng-template>
40
55
  `,
41
56
  providers: [
42
57
  CheckBoxSelectionService,
@@ -45,17 +60,24 @@ DropDownListComponent.decorators = [
45
60
  useExisting: forwardRef(() => DropDownListComponent)
46
61
  }
47
62
  ],
48
- changeDetection: ChangeDetectionStrategy.OnPush,
49
63
  encapsulation: ViewEncapsulation.None
50
64
  },] }
51
65
  ];
66
+ DropDownListComponent.ctorParameters = () => [
67
+ { type: FormComponent, decorators: [{ type: Optional }] },
68
+ { type: ChangeDetectorRef },
69
+ { type: ComponentFactoryResolver },
70
+ { type: FormInputUserModelChangeListenerService },
71
+ { type: NgZoneWrapperService },
72
+ { type: ElementRef }
73
+ ];
52
74
  DropDownListComponent.propDecorators = {
53
75
  collection: [{ type: Input }],
54
76
  fields: [{ type: Input }],
55
- placeHolder: [{ type: Input }],
77
+ placeholder: [{ type: Input }],
56
78
  itemTemplate: [{ type: Input }],
57
79
  headerTemplate: [{ type: Input }],
58
80
  valueTemplate: [{ type: Input }],
59
81
  showClass: [{ type: HostBinding, args: ["class.co-drop-down-list",] }]
60
82
  };
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2Ryb3AtZG93bi1saXN0L2Ryb3AtZG93bi1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFlLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pJLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBNkIzRSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsa0JBQXVCO0lBM0JsRTs7UUFnQ0U7OztXQUdHO1FBRUksV0FBTSxHQUFXLEVBQUUsQ0FBQztJQXdCN0IsQ0FBQztJQVRRLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxLQUFVO1FBQ2xDLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUI7SUFDSCxDQUFDOzs7WUE1REYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7R0FjVDtnQkFDRCxTQUFTLEVBQUU7b0JBQ1Qsd0JBQXdCO29CQUN4Qjt3QkFDRSxPQUFPLEVBQUUsd0JBQXdCO3dCQUNqQyxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDO3FCQUNyRDtpQkFDRjtnQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7Ozt5QkFHRSxLQUFLO3FCQU9MLEtBQUs7MEJBR0wsS0FBSzsyQkFHTCxLQUFLOzZCQUdMLEtBQUs7NEJBR0wsS0FBSzt3QkFHTCxXQUFXLFNBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBIb3N0QmluZGluZywgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtDT01QT05FTlRfSU5URVJGQUNFX05BTUV9IGZyb20gXCIuLi9iYXNlL2NvbXBvbmVudC1pbnRlcmZhY2UtbmFtZVwiO1xyXG5pbXBvcnQge0Jhc2VJbnB1dENvbXBvbmVudH0gZnJvbSBcIi4uL2Jhc2UvYmFzZS1pbnB1dC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtDaGVja0JveFNlbGVjdGlvblNlcnZpY2V9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1kcm9wZG93bnNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNvLWRyb3AtZG93bi1saXN0XCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxlanMtZHJvcGRvd25saXN0XHJcbiAgICAgIFtkYXRhU291cmNlXT1cImNvbGxlY3Rpb25cIlxyXG4gICAgICBbdmFsdWVdPVwibW9kZWxcIlxyXG4gICAgICBbZmllbGRzXT1cImZpZWxkc1wiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZUhvbGRlclwiXHJcbiAgICAgIFtjc3NDbGFzc109XCInY28tZHJvcC1kb3duLWxpc3QnXCJcclxuICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgW2l0ZW1UZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGVcIlxyXG4gICAgICBbaGVhZGVyVGVtcGxhdGVdPVwiaGVhZGVyVGVtcGxhdGVcIlxyXG4gICAgICBbdmFsdWVUZW1wbGF0ZV09XCJ2YWx1ZVRlbXBsYXRlXCJcclxuICAgICAgKHZhbHVlQ2hhbmdlKT1cImhhbmRsZVZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDwvZWpzLWRyb3Bkb3dubGlzdD5cclxuICBgLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgQ2hlY2tCb3hTZWxlY3Rpb25TZXJ2aWNlLFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBDT01QT05FTlRfSU5URVJGQUNFX05BTUUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERyb3BEb3duTGlzdENvbXBvbmVudClcclxuICAgIH1cclxuICBdLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIERyb3BEb3duTGlzdENvbXBvbmVudCBleHRlbmRzIEJhc2VJbnB1dENvbXBvbmVudDxhbnk+IHtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY29sbGVjdGlvbjogYW55W107XHJcblxyXG4gIC8qKlxyXG4gICAqIEluIHRoZSBmb3JtIHsgdGV4dDogJ25hbWUnLCB2YWx1ZTogJ2lkJyB9XHJcbiAgICogV2hlcmUgJ3RleHQnIGlzIHNob3dpbmcgaW4gdGhlIGRyb3Bkb3duIGFuZCAnaWQnIHVzZWQgZm9yIHRoZSBtb2RlbCBiaW5kaW5nXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZmllbGRzOiBPYmplY3QgPSB7fTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcGxhY2VIb2xkZXI6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tZHJvcC1kb3duLWxpc3RcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlVmFsdWVDaGFuZ2VkKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5tb2RlbCkge1xyXG4gICAgICB0aGlzLm1vZGVsQ2hhbmdlLm5leHQodmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2Ryb3AtZG93bi1saXN0L2Ryb3AtZG93bi1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCx3QkFBd0IsRUFDeEIsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUNMLFFBQVEsRUFFUixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDMUUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDM0UsT0FBTyxFQUFDLHVDQUF1QyxFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDbkgsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDaEYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBaUNyRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsa0JBQXVCO0lBNkJoRSxZQUNxQixhQUE0QixFQUNyQyxjQUFpQyxFQUNqQyx3QkFBa0QsRUFDbEQsc0JBQWdFLEVBQ2hFLGFBQW9DLEVBQ3ZDLFVBQXVCO1FBRTlCLEtBQUssQ0FBQyxjQUFjLEVBQUUsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBUGhGLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ3JDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBMEM7UUFDaEUsa0JBQWEsR0FBYixhQUFhLENBQXVCO1FBQ3ZDLGVBQVUsR0FBVixVQUFVLENBQWE7UUE5QmhDOzs7V0FHRztRQUVJLFdBQU0sR0FBVyxFQUFFLENBQUM7UUE0QnpCLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBZE0sU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQWNNLGtCQUFrQixDQUFDLEtBQVU7UUFDbEMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRTtZQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM5QjtJQUNILENBQUM7OztZQTVFRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJUO2dCQUNELFNBQVMsRUFBRTtvQkFDVCx3QkFBd0I7b0JBQ3hCO3dCQUNFLE9BQU8sRUFBRSx3QkFBd0I7d0JBQ2pDLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUM7cUJBQ3JEO2lCQUNGO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUFoQ08sYUFBYSx1QkErRGhCLFFBQVE7WUEvRVgsaUJBQWlCO1lBRWpCLHdCQUF3QjtZQVlsQix1Q0FBdUM7WUFDdkMsb0JBQW9CO1lBWjFCLFVBQVU7Ozt5QkFnRFQsS0FBSztxQkFPTCxLQUFLOzBCQUdMLEtBQUs7MkJBR0wsS0FBSzs2QkFHTCxLQUFLOzRCQUdMLEtBQUs7d0JBR0wsV0FBVyxTQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICBFbGVtZW50UmVmLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NPTVBPTkVOVF9JTlRFUkZBQ0VfTkFNRX0gZnJvbSBcIi4uL2Jhc2UvY29tcG9uZW50LWludGVyZmFjZS1uYW1lXCI7XHJcbmltcG9ydCB7QmFzZUlucHV0Q29tcG9uZW50fSBmcm9tIFwiLi4vYmFzZS9iYXNlLWlucHV0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0NoZWNrQm94U2VsZWN0aW9uU2VydmljZX0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWRyb3Bkb3duc1wiO1xyXG5pbXBvcnQge0Zvcm1JbnB1dFVzZXJNb2RlbENoYW5nZUxpc3RlbmVyU2VydmljZX0gZnJvbSBcIi4uLy4uL2NvcmUvc2VydmljZS9mb3JtLWlucHV0LXVzZXItY2hhbmdlLWxpc3RlbmVyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtOZ1pvbmVXcmFwcGVyU2VydmljZX0gZnJvbSBcIi4uLy4uL2NvcmUvc2VydmljZS9uZy16b25lLXdyYXBwZXIuc2VydmljZVwiO1xyXG5pbXBvcnQge0Zvcm1Db21wb25lbnR9IGZyb20gXCIuLi9mb3JtL2Zvcm0uY29tcG9uZW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjby1kcm9wLWRvd24tbGlzdFwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZWpzLWRyb3Bkb3dubGlzdFxyXG4gICAgICBbZGF0YVNvdXJjZV09XCJjb2xsZWN0aW9uXCJcclxuICAgICAgW3ZhbHVlXT1cIm1vZGVsXCJcclxuICAgICAgW2ZpZWxkc109XCJmaWVsZHNcIlxyXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICBbaXRlbVRlbXBsYXRlXT1cIml0ZW1UZW1wbGF0ZVwiXHJcbiAgICAgIFtoZWFkZXJUZW1wbGF0ZV09XCJoZWFkZXJUZW1wbGF0ZVwiXHJcbiAgICAgIFt2YWx1ZVRlbXBsYXRlXT1cInZhbHVlVGVtcGxhdGVcIlxyXG4gICAgICBbbmdNb2RlbF09XCJtb2RlbFwiXHJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGVsQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVWYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgIHNob3dDbGVhckJ1dHRvbj1cInRydWVcIlxyXG4gICAgICBmbG9hdExhYmVsVHlwZT1cIkF1dG9cIlxyXG4gICAgPlxyXG4gICAgPC9lanMtZHJvcGRvd25saXN0PlxyXG4gICAgPGRpdiBjbGFzcz1cInJlcXVpcmVkLWluZGljYXRvclwiPjwvZGl2PlxyXG4gICAgPG5nLXRlbXBsYXRlICN2YWxpZGF0aW9uRXJyb3I+PC9uZy10ZW1wbGF0ZT5cclxuICBgLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgQ2hlY2tCb3hTZWxlY3Rpb25TZXJ2aWNlLFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBDT01QT05FTlRfSU5URVJGQUNFX05BTUUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERyb3BEb3duTGlzdENvbXBvbmVudClcclxuICAgIH1cclxuICBdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIERyb3BEb3duTGlzdENvbXBvbmVudCBleHRlbmRzIEJhc2VJbnB1dENvbXBvbmVudDxhbnk+IHtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY29sbGVjdGlvbjogYW55W107XHJcblxyXG4gIC8qKlxyXG4gICAqIEluIHRoZSBmb3JtIHsgdGV4dDogJ25hbWUnLCB2YWx1ZTogJ2lkJyB9XHJcbiAgICogV2hlcmUgJ3RleHQnIGlzIHNob3dpbmcgaW4gdGhlIGRyb3Bkb3duIGFuZCAnaWQnIHVzZWQgZm9yIHRoZSBtb2RlbCBiaW5kaW5nXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZmllbGRzOiBPYmplY3QgPSB7fTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcGxhY2Vob2xkZXI6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tZHJvcC1kb3duLWxpc3RcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBmb3JtQ29tcG9uZW50OiBGb3JtQ29tcG9uZW50LFxyXG4gICAgcHJvdGVjdGVkIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByb3RlY3RlZCBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIHByb3RlY3RlZCBmb3JtVXNlckNoYW5nZUxpc3RlbmVyPzogRm9ybUlucHV0VXNlck1vZGVsQ2hhbmdlTGlzdGVuZXJTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIG5nWm9uZVdyYXBwZXI/OiBOZ1pvbmVXcmFwcGVyU2VydmljZSxcclxuICAgIHB1YmxpYyBlbGVtZW50UmVmPzogRWxlbWVudFJlZixcclxuICApIHtcclxuICAgIHN1cGVyKGNoYW5nZURldGVjdG9yLCBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIGZvcm1Vc2VyQ2hhbmdlTGlzdGVuZXIsIG5nWm9uZVdyYXBwZXIsIGVsZW1lbnRSZWYpO1xyXG4gICAgc3VwZXIuX21hcmtBc09uUHVzaCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVZhbHVlQ2hhbmdlZCh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUgIT09IHRoaXMubW9kZWwpIHtcclxuICAgICAgdGhpcy5tb2RlbENoYW5nZS5uZXh0KHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -1,8 +1,9 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { BaseModule } from '../base/base.module';
4
- import { DropDownListComponent } from './drop-down-list.component';
5
- import { DropDownListModule, MultiSelectModule } from '@syncfusion/ej2-angular-dropdowns';
1
+ import { NgModule } from "@angular/core";
2
+ import { CommonModule } from "@angular/common";
3
+ import { BaseModule } from "../base/base.module";
4
+ import { DropDownListComponent } from "./drop-down-list.component";
5
+ import { DropDownListModule, MultiSelectModule } from "@syncfusion/ej2-angular-dropdowns";
6
+ import { FormsModule } from "@angular/forms";
6
7
  export class DropDownModule {
7
8
  }
8
9
  DropDownModule.decorators = [
@@ -11,10 +12,11 @@ DropDownModule.decorators = [
11
12
  BaseModule,
12
13
  CommonModule,
13
14
  DropDownListModule,
14
- MultiSelectModule
15
+ MultiSelectModule,
16
+ FormsModule
15
17
  ],
16
18
  declarations: [DropDownListComponent],
17
19
  exports: [DropDownListComponent]
18
20
  },] }
19
21
  ];
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmVjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kcm9wLWRvd24tbGlzdC9kcm9wLWRvd24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQVkxRixNQUFNLE9BQU8sY0FBYzs7O1lBVjFCLFFBQVEsU0FBQztnQkFDTixPQUFPLEVBQUU7b0JBQ0wsVUFBVTtvQkFDVixZQUFZO29CQUNaLGtCQUFrQjtvQkFDbEIsaUJBQWlCO2lCQUNwQjtnQkFDRCxZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDckMsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUM7YUFDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBCYXNlTW9kdWxlIH0gZnJvbSAnLi4vYmFzZS9iYXNlLm1vZHVsZSc7XHJcbmltcG9ydCB7IERyb3BEb3duTGlzdENvbXBvbmVudCB9IGZyb20gJy4vZHJvcC1kb3duLWxpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRHJvcERvd25MaXN0TW9kdWxlLCBNdWx0aVNlbGVjdE1vZHVsZSB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWRyb3Bkb3ducyc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIEJhc2VNb2R1bGUsXHJcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgICAgIERyb3BEb3duTGlzdE1vZHVsZSxcclxuICAgICAgICBNdWx0aVNlbGVjdE1vZHVsZVxyXG4gICAgXSxcclxuICAgIGRlY2xhcmF0aW9uczogW0Ryb3BEb3duTGlzdENvbXBvbmVudF0sXHJcbiAgICBleHBvcnRzOiBbRHJvcERvd25MaXN0Q29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJvcERvd25Nb2R1bGUge1xyXG59XHJcbiJdfQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmVjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kcm9wLWRvd24tbGlzdC9kcm9wLWRvd24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFhM0MsTUFBTSxPQUFPLGNBQWM7OztZQVgxQixRQUFRLFNBQUM7Z0JBQ04sT0FBTyxFQUFFO29CQUNMLFVBQVU7b0JBQ1YsWUFBWTtvQkFDWixrQkFBa0I7b0JBQ2xCLGlCQUFpQjtvQkFDakIsV0FBVztpQkFDZDtnQkFDRCxZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDckMsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUM7YUFDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge0Jhc2VNb2R1bGV9IGZyb20gXCIuLi9iYXNlL2Jhc2UubW9kdWxlXCI7XHJcbmltcG9ydCB7RHJvcERvd25MaXN0Q29tcG9uZW50fSBmcm9tIFwiLi9kcm9wLWRvd24tbGlzdC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtEcm9wRG93bkxpc3RNb2R1bGUsIE11bHRpU2VsZWN0TW9kdWxlfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItZHJvcGRvd25zXCI7XHJcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGltcG9ydHM6IFtcclxuICAgICAgICBCYXNlTW9kdWxlLFxyXG4gICAgICAgIENvbW1vbk1vZHVsZSxcclxuICAgICAgICBEcm9wRG93bkxpc3RNb2R1bGUsXHJcbiAgICAgICAgTXVsdGlTZWxlY3RNb2R1bGUsXHJcbiAgICAgICAgRm9ybXNNb2R1bGVcclxuICAgIF0sXHJcbiAgICBkZWNsYXJhdGlvbnM6IFtEcm9wRG93bkxpc3RDb21wb25lbnRdLFxyXG4gICAgZXhwb3J0czogW0Ryb3BEb3duTGlzdENvbXBvbmVudF1cclxufSlcclxuZXhwb3J0IGNsYXNzIERyb3BEb3duTW9kdWxlIHtcclxufVxyXG4iXX0=