@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.
- package/bundles/colijnit-corecomponents_v12.umd.js +807 -247
- package/bundles/colijnit-corecomponents_v12.umd.js.map +1 -1
- package/colijnit-corecomponents_v12.d.ts +9 -8
- package/colijnit-corecomponents_v12.metadata.json +1 -1
- package/esm2015/colijnit-corecomponents_v12.js +10 -9
- package/esm2015/lib/components/base/base-input.component.js +86 -14
- package/esm2015/lib/components/carousel-3d/carousel-3d.component.js +313 -0
- package/esm2015/lib/components/carousel-3d/carousel-3d.module.js +19 -0
- package/esm2015/lib/components/carousel-3d/carouselItem.js +54 -0
- package/esm2015/lib/components/co-dialog/co-dialog.module.js +1 -3
- package/esm2015/lib/components/drop-down-list/drop-down-list.component.js +30 -8
- package/esm2015/lib/components/drop-down-list/drop-down.module.js +9 -7
- package/esm2015/lib/components/form/form.component.js +3 -22
- package/esm2015/lib/components/form/form.module.js +4 -4
- package/esm2015/lib/components/input-checkbox/input-checkbox.component.js +15 -5
- package/esm2015/lib/components/input-checkbox-multi-select/input-checkbox-multi-select.component.js +6 -14
- package/esm2015/lib/components/input-combo-box/input-combo-box.component.js +24 -29
- package/esm2015/lib/components/input-date-picker/input-date-picker.component.js +10 -7
- package/esm2015/lib/components/input-listbox/input-listbox.component.js +27 -6
- package/esm2015/lib/components/input-number-picker/input-number-picker.component.js +9 -9
- package/esm2015/lib/components/input-radio-button/input-radio-button.component.js +13 -5
- package/esm2015/lib/components/input-text/input-text.component.js +21 -81
- package/esm2015/lib/components/input-text/input-text.module.js +16 -13
- package/esm2015/lib/components/input-textarea/input-textarea.component.js +62 -0
- package/esm2015/lib/components/input-textarea/input-textarea.module.js +23 -0
- package/esm2015/lib/components/multi-select-list/multi-select-list.component.js +37 -9
- package/esm2015/lib/components/multi-select-list/multi-select-list.module.js +9 -7
- package/esm2015/lib/components/validation-error/validation-error.component.js +35 -0
- package/esm2015/lib/components/validation-error/validation-error.module.js +21 -0
- package/esm2015/public-api.js +6 -1
- package/fesm2015/colijnit-corecomponents_v12.js +827 -269
- package/fesm2015/colijnit-corecomponents_v12.js.map +1 -1
- package/lib/components/base/base-input.component.d.ts +13 -3
- package/lib/components/button/style/_layout.scss +0 -1
- package/lib/components/button/style/_theme.scss +2 -3
- package/lib/components/button-drop-down/style/_layout.scss +0 -2
- package/lib/components/button-drop-down/style/_theme.scss +0 -2
- package/lib/components/button-drop-down/style/material.scss +1 -0
- package/lib/components/carousel-3d/carousel-3d.component.d.ts +55 -0
- package/lib/components/carousel-3d/carousel-3d.module.d.ts +2 -0
- package/lib/components/carousel-3d/carouselItem.d.ts +13 -0
- package/lib/components/carousel-3d/style/_layout.scss +62 -0
- package/lib/components/carousel-3d/style/_material-definition.scss +6 -0
- package/lib/components/carousel-3d/style/_theme.scss +4 -0
- package/lib/components/carousel-3d/style/material.scss +5 -0
- package/lib/components/co-dialog/style/_layout.scss +0 -3
- package/lib/components/co-dialog/style/_theme.scss +0 -3
- package/lib/components/co-dialog/style/material.scss +1 -0
- package/lib/components/co-kanban/style/_layout.scss +4 -3
- package/lib/components/co-kanban/style/_material-definition.scss +2 -0
- package/lib/components/co-kanban/style/_theme.scss +0 -4
- package/lib/components/co-kanban/style/material.scss +1 -0
- package/lib/components/co-rich-text-editor/style/_layout.scss +0 -2
- package/lib/components/co-rich-text-editor/style/_theme.scss +0 -2
- package/lib/components/co-rich-text-editor/style/material.scss +1 -0
- package/lib/components/collapsible/style/_layout.scss +0 -3
- package/lib/components/collapsible/style/_theme.scss +0 -4
- package/lib/components/collapsible/style/material.scss +1 -0
- package/lib/components/drop-down-list/drop-down-list.component.d.ts +12 -2
- package/lib/components/drop-down-list/style/_layout.scss +9 -3
- package/lib/components/drop-down-list/style/_material-definition.scss +2 -0
- package/lib/components/drop-down-list/style/_theme.scss +0 -2
- package/lib/components/drop-down-list/style/material.scss +2 -0
- package/lib/components/form/form.component.d.ts +2 -3
- package/lib/components/grid/style/_layout.scss +0 -2
- package/lib/components/grid/style/_theme.scss +0 -2
- package/lib/components/grid/style/material.scss +1 -0
- package/lib/components/input-checkbox/input-checkbox.component.d.ts +9 -2
- package/lib/components/input-checkbox/style/_layout.scss +0 -2
- package/lib/components/input-checkbox/style/_theme.scss +0 -2
- package/lib/components/input-checkbox/style/material.scss +1 -0
- package/lib/components/input-checkbox-multi-select/input-checkbox-multi-select.component.d.ts +4 -6
- package/lib/components/input-checkbox-multi-select/style/_layout.scss +5 -3
- package/lib/components/input-checkbox-multi-select/style/_material-definition.scss +2 -0
- package/lib/components/input-checkbox-multi-select/style/_theme.scss +0 -2
- package/lib/components/input-checkbox-multi-select/style/material.scss +1 -0
- package/lib/components/input-combo-box/input-combo-box.component.d.ts +6 -7
- package/lib/components/input-combo-box/style/_layout.scss +12 -3
- package/lib/components/input-combo-box/style/_material-definition.scss +2 -7
- package/lib/components/input-combo-box/style/_theme.scss +0 -2
- package/lib/components/input-combo-box/style/material.scss +9 -0
- package/lib/components/input-date-picker/input-date-picker.component.d.ts +4 -3
- package/lib/components/input-date-picker/style/_layout.scss +5 -3
- package/lib/components/input-date-picker/style/_material-definition.scss +4 -0
- package/lib/components/input-date-picker/style/_theme.scss +0 -2
- package/lib/components/input-date-picker/style/material.scss +2 -0
- package/lib/components/input-listbox/input-listbox.component.d.ts +12 -1
- package/lib/components/input-listbox/style/_layout.scss +1 -2
- package/lib/components/input-listbox/style/_material-definition.scss +2 -2
- package/lib/components/input-listbox/style/_theme.scss +0 -2
- package/lib/components/input-listbox/style/material.scss +2 -0
- package/lib/components/input-number-picker/input-number-picker.component.d.ts +5 -5
- package/lib/components/input-number-picker/style/_layout.scss +0 -2
- package/lib/components/input-number-picker/style/_theme.scss +0 -2
- package/lib/components/input-number-picker/style/material.scss +1 -0
- package/lib/components/input-radio-button/input-radio-button.component.d.ts +7 -2
- package/lib/components/input-radio-button/style/_layout.scss +0 -2
- package/lib/components/input-radio-button/style/_theme.scss +0 -2
- package/lib/components/input-radio-button/style/material.scss +1 -0
- package/lib/components/input-search/style/_layout.scss +0 -3
- package/lib/components/input-search/style/_theme.scss +0 -4
- package/lib/components/input-search/style/material.scss +1 -0
- package/lib/components/input-text/input-text.component.d.ts +6 -30
- package/lib/components/input-text/style/_layout.scss +14 -3
- package/lib/components/input-text/style/_material-definition.scss +4 -3
- package/lib/components/input-text/style/_theme.scss +5 -3
- package/lib/components/input-text/style/material.scss +3 -0
- package/lib/components/input-textarea/input-textarea.component.d.ts +18 -0
- package/lib/components/input-textarea/input-textarea.module.d.ts +2 -0
- package/lib/components/input-textarea/style/_layout.scss +20 -0
- package/lib/components/input-textarea/style/_material-definition.scss +4 -0
- package/lib/components/input-textarea/style/_theme.scss +9 -0
- package/lib/components/input-textarea/style/material.scss +7 -0
- package/lib/components/multi-select-list/multi-select-list.component.d.ts +13 -2
- package/lib/components/multi-select-list/style/_layout.scss +11 -3
- package/lib/components/multi-select-list/style/_material-definition.scss +2 -0
- package/lib/components/multi-select-list/style/_theme.scss +5 -3
- package/lib/components/multi-select-list/style/material.scss +2 -0
- package/lib/components/pivot/style/_layout.scss +0 -2
- package/lib/components/pivot/style/_theme.scss +0 -2
- package/lib/components/pivot/style/material.scss +1 -0
- package/lib/components/simple-grid/style/_layout.scss +0 -2
- package/lib/components/simple-grid/style/_theme.scss +0 -2
- package/lib/components/simple-grid/style/material.scss +1 -0
- package/lib/components/validation-error/style/_layout.scss +45 -0
- package/lib/components/validation-error/style/_material-definition.scss +9 -0
- package/lib/components/validation-error/style/_theme.scss +21 -0
- package/lib/components/validation-error/style/material.scss +5 -0
- package/lib/components/validation-error/validation-error.component.d.ts +10 -0
- package/lib/components/validation-error/validation-error.module.d.ts +2 -0
- package/lib/style/_input.mixins.scss +71 -281
- package/lib/style/_variables.scss +16 -1
- package/package.json +5 -2
- package/public-api.d.ts +5 -0
- package/esm2015/lib/core/enum/float-label-type.enum.js +0 -7
- package/esm2015/lib/core/enum/input-text-type.enum.js +0 -6
- package/esm2015/lib/core/model/numerical-range.js +0 -14
- package/lib/components/drop-down-list/drop-down-list.component.scss +0 -0
- package/lib/core/enum/float-label-type.enum.d.ts +0 -5
- package/lib/core/enum/input-text-type.enum.d.ts +0 -4
- package/lib/core/model/numerical-range.d.ts +0 -7
- package/lib/style/_extendables.scss +0 -32
- package/lib/style/_responsiveness.mixins.scss +0 -64
- package/lib/style/_responsiveness.scss +0 -4
- 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,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY28tZGlhbG9nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmVjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jby1kaWFsb2cvY28tZGlhbG9nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFVN0MsTUFBTSxPQUFPLGNBQWM7OztZQVIxQixRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osVUFBVTtpQkFDWDtnQkFDQyxZQUFZLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDakMsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUM7YUFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NvRGlhbG9nQ29tcG9uZW50fSBmcm9tIFwiLi9jby1kaWFsb2cuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7SWNvbk1vZHVsZX0gZnJvbSBcIi4uL2ljb24vaWNvbi5tb2R1bGVcIjtcclxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgSWNvbk1vZHVsZVxyXG4gIF0sXHJcbiAgICBkZWNsYXJhdGlvbnM6IFtDb0RpYWxvZ0NvbXBvbmVudF0sXHJcbiAgICBleHBvcnRzOiBbQ29EaWFsb2dDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb0RpYWxvZ01vZHVsZSB7XHJcbn1cclxuIl19
|
|
@@ -1,15 +1,25 @@
|
|
|
1
|
-
import {
|
|
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(
|
|
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]="
|
|
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
|
-
|
|
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,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2Ryb3AtZG93bi1saXN0L2Ryb3AtZG93bi1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCx3QkFBd0IsRUFDeEIsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUNMLFFBQVEsRUFFUixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDMUUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDM0UsT0FBTyxFQUFDLHVDQUF1QyxFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDbkgsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDaEYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBaUNyRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsa0JBQXVCO0lBNkJoRSxZQUNxQixhQUE0QixFQUNyQyxjQUFpQyxFQUNqQyx3QkFBa0QsRUFDbEQsc0JBQWdFLEVBQ2hFLGFBQW9DLEVBQ3ZDLFVBQXVCO1FBRTlCLEtBQUssQ0FBQyxjQUFjLEVBQUUsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBUGhGLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ3JDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBMEM7UUFDaEUsa0JBQWEsR0FBYixhQUFhLENBQXVCO1FBQ3ZDLGVBQVUsR0FBVixVQUFVLENBQWE7UUE5QmhDOzs7V0FHRztRQUVJLFdBQU0sR0FBVyxFQUFFLENBQUM7UUE0QnpCLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBZE0sU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQWNNLGtCQUFrQixDQUFDLEtBQVU7UUFDbEMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRTtZQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM5QjtJQUNILENBQUM7OztZQTVFRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJUO2dCQUNELFNBQVMsRUFBRTtvQkFDVCx3QkFBd0I7b0JBQ3hCO3dCQUNFLE9BQU8sRUFBRSx3QkFBd0I7d0JBQ2pDLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUM7cUJBQ3JEO2lCQUNGO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7WUFoQ08sYUFBYSx1QkErRGhCLFFBQVE7WUEvRVgsaUJBQWlCO1lBRWpCLHdCQUF3QjtZQVlsQix1Q0FBdUM7WUFDdkMsb0JBQW9CO1lBWjFCLFVBQVU7Ozt5QkFnRFQsS0FBSztxQkFPTCxLQUFLOzBCQUdMLEtBQUs7MkJBR0wsS0FBSzs2QkFHTCxLQUFLOzRCQUdMLEtBQUs7d0JBR0wsV0FBVyxTQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICBFbGVtZW50UmVmLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NPTVBPTkVOVF9JTlRFUkZBQ0VfTkFNRX0gZnJvbSBcIi4uL2Jhc2UvY29tcG9uZW50LWludGVyZmFjZS1uYW1lXCI7XHJcbmltcG9ydCB7QmFzZUlucHV0Q29tcG9uZW50fSBmcm9tIFwiLi4vYmFzZS9iYXNlLWlucHV0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0NoZWNrQm94U2VsZWN0aW9uU2VydmljZX0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWRyb3Bkb3duc1wiO1xyXG5pbXBvcnQge0Zvcm1JbnB1dFVzZXJNb2RlbENoYW5nZUxpc3RlbmVyU2VydmljZX0gZnJvbSBcIi4uLy4uL2NvcmUvc2VydmljZS9mb3JtLWlucHV0LXVzZXItY2hhbmdlLWxpc3RlbmVyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtOZ1pvbmVXcmFwcGVyU2VydmljZX0gZnJvbSBcIi4uLy4uL2NvcmUvc2VydmljZS9uZy16b25lLXdyYXBwZXIuc2VydmljZVwiO1xyXG5pbXBvcnQge0Zvcm1Db21wb25lbnR9IGZyb20gXCIuLi9mb3JtL2Zvcm0uY29tcG9uZW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjby1kcm9wLWRvd24tbGlzdFwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZWpzLWRyb3Bkb3dubGlzdFxyXG4gICAgICBbZGF0YVNvdXJjZV09XCJjb2xsZWN0aW9uXCJcclxuICAgICAgW3ZhbHVlXT1cIm1vZGVsXCJcclxuICAgICAgW2ZpZWxkc109XCJmaWVsZHNcIlxyXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICBbaXRlbVRlbXBsYXRlXT1cIml0ZW1UZW1wbGF0ZVwiXHJcbiAgICAgIFtoZWFkZXJUZW1wbGF0ZV09XCJoZWFkZXJUZW1wbGF0ZVwiXHJcbiAgICAgIFt2YWx1ZVRlbXBsYXRlXT1cInZhbHVlVGVtcGxhdGVcIlxyXG4gICAgICBbbmdNb2RlbF09XCJtb2RlbFwiXHJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGVsQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVWYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgIHNob3dDbGVhckJ1dHRvbj1cInRydWVcIlxyXG4gICAgICBmbG9hdExhYmVsVHlwZT1cIkF1dG9cIlxyXG4gICAgPlxyXG4gICAgPC9lanMtZHJvcGRvd25saXN0PlxyXG4gICAgPGRpdiBjbGFzcz1cInJlcXVpcmVkLWluZGljYXRvclwiPjwvZGl2PlxyXG4gICAgPG5nLXRlbXBsYXRlICN2YWxpZGF0aW9uRXJyb3I+PC9uZy10ZW1wbGF0ZT5cclxuICBgLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgQ2hlY2tCb3hTZWxlY3Rpb25TZXJ2aWNlLFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBDT01QT05FTlRfSU5URVJGQUNFX05BTUUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERyb3BEb3duTGlzdENvbXBvbmVudClcclxuICAgIH1cclxuICBdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIERyb3BEb3duTGlzdENvbXBvbmVudCBleHRlbmRzIEJhc2VJbnB1dENvbXBvbmVudDxhbnk+IHtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY29sbGVjdGlvbjogYW55W107XHJcblxyXG4gIC8qKlxyXG4gICAqIEluIHRoZSBmb3JtIHsgdGV4dDogJ25hbWUnLCB2YWx1ZTogJ2lkJyB9XHJcbiAgICogV2hlcmUgJ3RleHQnIGlzIHNob3dpbmcgaW4gdGhlIGRyb3Bkb3duIGFuZCAnaWQnIHVzZWQgZm9yIHRoZSBtb2RlbCBiaW5kaW5nXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZmllbGRzOiBPYmplY3QgPSB7fTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcGxhY2Vob2xkZXI6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tZHJvcC1kb3duLWxpc3RcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBmb3JtQ29tcG9uZW50OiBGb3JtQ29tcG9uZW50LFxyXG4gICAgcHJvdGVjdGVkIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByb3RlY3RlZCBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIHByb3RlY3RlZCBmb3JtVXNlckNoYW5nZUxpc3RlbmVyPzogRm9ybUlucHV0VXNlck1vZGVsQ2hhbmdlTGlzdGVuZXJTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIG5nWm9uZVdyYXBwZXI/OiBOZ1pvbmVXcmFwcGVyU2VydmljZSxcclxuICAgIHB1YmxpYyBlbGVtZW50UmVmPzogRWxlbWVudFJlZixcclxuICApIHtcclxuICAgIHN1cGVyKGNoYW5nZURldGVjdG9yLCBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIGZvcm1Vc2VyQ2hhbmdlTGlzdGVuZXIsIG5nWm9uZVdyYXBwZXIsIGVsZW1lbnRSZWYpO1xyXG4gICAgc3VwZXIuX21hcmtBc09uUHVzaCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVZhbHVlQ2hhbmdlZCh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUgIT09IHRoaXMubW9kZWwpIHtcclxuICAgICAgdGhpcy5tb2RlbENoYW5nZS5uZXh0KHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { NgModule } from
|
|
2
|
-
import { CommonModule } from
|
|
3
|
-
import { BaseModule } from
|
|
4
|
-
import { DropDownListComponent } from
|
|
5
|
-
import { DropDownListModule, MultiSelectModule } from
|
|
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,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmVjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kcm9wLWRvd24tbGlzdC9kcm9wLWRvd24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFhM0MsTUFBTSxPQUFPLGNBQWM7OztZQVgxQixRQUFRLFNBQUM7Z0JBQ04sT0FBTyxFQUFFO29CQUNMLFVBQVU7b0JBQ1YsWUFBWTtvQkFDWixrQkFBa0I7b0JBQ2xCLGlCQUFpQjtvQkFDakIsV0FBVztpQkFDZDtnQkFDRCxZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDckMsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUM7YUFDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge0Jhc2VNb2R1bGV9IGZyb20gXCIuLi9iYXNlL2Jhc2UubW9kdWxlXCI7XHJcbmltcG9ydCB7RHJvcERvd25MaXN0Q29tcG9uZW50fSBmcm9tIFwiLi9kcm9wLWRvd24tbGlzdC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtEcm9wRG93bkxpc3RNb2R1bGUsIE11bHRpU2VsZWN0TW9kdWxlfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItZHJvcGRvd25zXCI7XHJcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGltcG9ydHM6IFtcclxuICAgICAgICBCYXNlTW9kdWxlLFxyXG4gICAgICAgIENvbW1vbk1vZHVsZSxcclxuICAgICAgICBEcm9wRG93bkxpc3RNb2R1bGUsXHJcbiAgICAgICAgTXVsdGlTZWxlY3RNb2R1bGUsXHJcbiAgICAgICAgRm9ybXNNb2R1bGVcclxuICAgIF0sXHJcbiAgICBkZWNsYXJhdGlvbnM6IFtEcm9wRG93bkxpc3RDb21wb25lbnRdLFxyXG4gICAgZXhwb3J0czogW0Ryb3BEb3duTGlzdENvbXBvbmVudF1cclxufSlcclxuZXhwb3J0IGNsYXNzIERyb3BEb3duTW9kdWxlIHtcclxufVxyXG4iXX0=
|