bruce-cesium 7.7.6 → 7.7.8
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/dist/bruce-cesium.es5.js +2313 -69
- package/dist/bruce-cesium.es5.js.map +1 -1
- package/dist/bruce-cesium.umd.js +2292 -66
- package/dist/bruce-cesium.umd.js.map +1 -1
- package/dist/lib/bruce-cesium.js +6 -1
- package/dist/lib/bruce-cesium.js.map +1 -1
- package/dist/lib/rendering/entity-render-engine-model3d.js +2 -2
- package/dist/lib/rendering/entity-render-engine-model3d.js.map +1 -1
- package/dist/lib/rendering/entity-render-engine-polygon.js +26 -4
- package/dist/lib/rendering/entity-render-engine-polygon.js.map +1 -1
- package/dist/lib/rendering/entity-render-engine-polyline.js +2 -1
- package/dist/lib/rendering/entity-render-engine-polyline.js.map +1 -1
- package/dist/lib/rendering/render-managers/common/entity-simulation.js +1 -1
- package/dist/lib/rendering/render-managers/common/entity-simulation.js.map +1 -1
- package/dist/lib/rendering/tileset-render-engine.js +47 -14
- package/dist/lib/rendering/tileset-render-engine.js.map +1 -1
- package/dist/lib/rendering/view-render-engine.js +30 -24
- package/dist/lib/rendering/view-render-engine.js.map +1 -1
- package/dist/lib/rendering/visuals-register.js +93 -8
- package/dist/lib/rendering/visuals-register.js.map +1 -1
- package/dist/lib/rendering/xgrids-render-engine.js +20 -3
- package/dist/lib/rendering/xgrids-render-engine.js.map +1 -1
- package/dist/lib/utils/cesium-map-grid.js +807 -0
- package/dist/lib/utils/cesium-map-grid.js.map +1 -0
- package/dist/lib/utils/device-profile.js +302 -0
- package/dist/lib/utils/device-profile.js.map +1 -0
- package/dist/lib/utils/gltf-generator.js +307 -0
- package/dist/lib/utils/gltf-generator.js.map +1 -0
- package/dist/lib/utils/gltf-gizmo.js +136 -0
- package/dist/lib/utils/gltf-gizmo.js.map +1 -0
- package/dist/lib/utils/view-utils.js +9 -0
- package/dist/lib/utils/view-utils.js.map +1 -1
- package/dist/lib/viewer/camera-controls.js +544 -0
- package/dist/lib/viewer/camera-controls.js.map +1 -0
- package/dist/lib/viewer/viewer-utils.js +9 -1
- package/dist/lib/viewer/viewer-utils.js.map +1 -1
- package/dist/types/bruce-cesium.d.ts +6 -1
- package/dist/types/rendering/tileset-render-engine.d.ts +10 -2
- package/dist/types/rendering/view-render-engine.d.ts +4 -0
- package/dist/types/rendering/visuals-register.d.ts +4 -0
- package/dist/types/rendering/xgrids-render-engine.d.ts +2 -0
- package/dist/types/utils/cesium-map-grid.d.ts +23 -0
- package/dist/types/utils/device-profile.d.ts +84 -0
- package/dist/types/utils/gltf-generator.d.ts +104 -0
- package/dist/types/utils/gltf-gizmo.d.ts +18 -0
- package/dist/types/utils/view-utils.d.ts +4 -0
- package/dist/types/viewer/camera-controls.d.ts +19 -0
- package/dist/types/viewer/viewer-utils.d.ts +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1,544 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CameraControls = void 0;
|
|
4
|
+
const Cesium = require("cesium");
|
|
5
|
+
const CESIUM_CAMERA_CONTROLS_KEY = "_nextspace_camera_controls";
|
|
6
|
+
// How far a wheel notch or its drag equivalent moves the camera, as a share of the distance to what it points at.
|
|
7
|
+
const ZOOM_SHARE = 0.18;
|
|
8
|
+
// The distance a zoom step treats anything closer as, so the camera keeps moving through a surface instead of stalling.
|
|
9
|
+
const MIN_ZOOM_DISTANCE = 4;
|
|
10
|
+
// How far from the origin zooming out may take a model-space camera, beyond which the scene is a dot on a planet.
|
|
11
|
+
const MODEL_SPACE_MAX_RANGE = 250000;
|
|
12
|
+
// Above this height a geospatial scene is a planet, which CesiumJS's own controller navigates better.
|
|
13
|
+
const GEO_HANDOFF_HEIGHT = 15000;
|
|
14
|
+
// The furthest a depth pick is trusted from a camera close to the ground; further up the limit grows with height.
|
|
15
|
+
const PLAUSIBLE_PICK_FLOOR = 1000;
|
|
16
|
+
// Pixels of right drag that make one wheel notch.
|
|
17
|
+
const DRAG_PIXELS_PER_NOTCH = 40;
|
|
18
|
+
// Share of the outstanding wheel movement applied each animation frame.
|
|
19
|
+
const ZOOM_EASE = 0.35;
|
|
20
|
+
// A pan plane seen closer to edge on than this (sine of the angle) is swapped for one facing the camera.
|
|
21
|
+
const GRAZING_SINE = 0.12;
|
|
22
|
+
// Closest the view may get to straight up or down while orbiting, in radians, so the camera never flips over.
|
|
23
|
+
const ORBIT_POLE_MARGIN = Cesium.Math.toRadians(1);
|
|
24
|
+
var EDrag;
|
|
25
|
+
(function (EDrag) {
|
|
26
|
+
EDrag["Pan"] = "pan";
|
|
27
|
+
EDrag["Orbit"] = "orbit";
|
|
28
|
+
EDrag["Zoom"] = "zoom";
|
|
29
|
+
})(EDrag || (EDrag = {}));
|
|
30
|
+
/**
|
|
31
|
+
* Mouse navigation that keeps moving near, through and below the ground, where CesiumJS's own controller stalls.
|
|
32
|
+
*/
|
|
33
|
+
var CameraControls;
|
|
34
|
+
(function (CameraControls) {
|
|
35
|
+
/**
|
|
36
|
+
* Takes over mouse drag and wheel navigation close to the ground; CesiumJS keeps planet scale, pinch and look.
|
|
37
|
+
*/
|
|
38
|
+
function Attach(viewer) {
|
|
39
|
+
var _a, _b, _c;
|
|
40
|
+
if (!viewer || viewer.isDestroyed() || viewer[CESIUM_CAMERA_CONTROLS_KEY]) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const scene = viewer.scene;
|
|
44
|
+
const controller = scene === null || scene === void 0 ? void 0 : scene.screenSpaceCameraController;
|
|
45
|
+
if (!controller || !scene.canvas || !scene.preUpdate) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const state = {
|
|
49
|
+
viewer,
|
|
50
|
+
getModelSpaceFrame: null,
|
|
51
|
+
drag: null,
|
|
52
|
+
touches: new Set(),
|
|
53
|
+
pendingZoom: new Cesium.Cartesian3(),
|
|
54
|
+
zoomFrame: null,
|
|
55
|
+
zoomPosition: null,
|
|
56
|
+
lastDistance: 100,
|
|
57
|
+
saved: {
|
|
58
|
+
rotateEventTypes: controller.rotateEventTypes,
|
|
59
|
+
zoomEventTypes: controller.zoomEventTypes,
|
|
60
|
+
tiltEventTypes: controller.tiltEventTypes,
|
|
61
|
+
enableCollisionDetection: controller.enableCollisionDetection,
|
|
62
|
+
backFaceAlpha: (_b = (_a = scene.globe) === null || _a === void 0 ? void 0 : _a.translucency) === null || _b === void 0 ? void 0 : _b.backFaceAlpha,
|
|
63
|
+
showSkirts: (_c = scene.globe) === null || _c === void 0 ? void 0 : _c.showSkirts
|
|
64
|
+
},
|
|
65
|
+
ours: false,
|
|
66
|
+
removals: []
|
|
67
|
+
};
|
|
68
|
+
viewer[CESIUM_CAMERA_CONTROLS_KEY] = state;
|
|
69
|
+
// The camera may go below the ground; zooming slows near a surface, so it takes a deliberate push.
|
|
70
|
+
controller.enableCollisionDetection = false;
|
|
71
|
+
const canvas = scene.canvas;
|
|
72
|
+
const listen = (target, type, handler, options) => {
|
|
73
|
+
target.addEventListener(type, handler, options);
|
|
74
|
+
state.removals.push(() => target.removeEventListener(type, handler, options));
|
|
75
|
+
};
|
|
76
|
+
listen(canvas, "pointerdown", (e) => onPointerDown(state, e));
|
|
77
|
+
listen(window, "pointermove", (e) => onPointerMove(state, e));
|
|
78
|
+
listen(window, "pointerup", (e) => onPointerUp(state, e));
|
|
79
|
+
listen(window, "pointercancel", (e) => onPointerUp(state, e));
|
|
80
|
+
listen(canvas, "wheel", (e) => onWheel(state, e), { passive: true });
|
|
81
|
+
state.removals.push(scene.preUpdate.addEventListener(() => syncController(state)));
|
|
82
|
+
syncController(state);
|
|
83
|
+
scene.requestRender();
|
|
84
|
+
}
|
|
85
|
+
CameraControls.Attach = Attach;
|
|
86
|
+
/**
|
|
87
|
+
* Hands navigation back to CesiumJS's own camera controller, as it was before Attach.
|
|
88
|
+
*/
|
|
89
|
+
function Detach(viewer) {
|
|
90
|
+
const state = viewer === null || viewer === void 0 ? void 0 : viewer[CESIUM_CAMERA_CONTROLS_KEY];
|
|
91
|
+
if (!state) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
SetModelSpace(viewer, null);
|
|
95
|
+
viewer[CESIUM_CAMERA_CONTROLS_KEY] = null;
|
|
96
|
+
state.removals.forEach((removal) => removal());
|
|
97
|
+
state.removals = [];
|
|
98
|
+
if (state.zoomFrame != null) {
|
|
99
|
+
cancelAnimationFrame(state.zoomFrame);
|
|
100
|
+
}
|
|
101
|
+
if (viewer.isDestroyed()) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
restoreCesiumGestures(state);
|
|
105
|
+
viewer.scene.screenSpaceCameraController.enableCollisionDetection = state.saved.enableCollisionDetection;
|
|
106
|
+
viewer.scene.requestRender();
|
|
107
|
+
}
|
|
108
|
+
CameraControls.Detach = Detach;
|
|
109
|
+
function IsAttached(viewer) {
|
|
110
|
+
return Boolean(viewer === null || viewer === void 0 ? void 0 : viewer[CESIUM_CAMERA_CONTROLS_KEY]);
|
|
111
|
+
}
|
|
112
|
+
CameraControls.IsAttached = IsAttached;
|
|
113
|
+
/**
|
|
114
|
+
* Switches to navigating model-space measured from the frame getFrame returns, or back to geospatial with null.
|
|
115
|
+
*/
|
|
116
|
+
function SetModelSpace(viewer, getFrame) {
|
|
117
|
+
const state = viewer === null || viewer === void 0 ? void 0 : viewer[CESIUM_CAMERA_CONTROLS_KEY];
|
|
118
|
+
if (!state || viewer.isDestroyed()) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
const wasModelSpace = Boolean(state.getModelSpaceFrame);
|
|
122
|
+
state.getModelSpaceFrame = getFrame !== null && getFrame !== void 0 ? getFrame : null;
|
|
123
|
+
syncController(state);
|
|
124
|
+
if (wasModelSpace === Boolean(getFrame)) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
const globe = viewer.scene.globe;
|
|
128
|
+
const translucency = globe === null || globe === void 0 ? void 0 : globe.translucency;
|
|
129
|
+
if (getFrame) {
|
|
130
|
+
// The ground is see-through from below, so what stands on it stays in view underground.
|
|
131
|
+
if (translucency && typeof translucency.backFaceAlpha === "number") {
|
|
132
|
+
translucency.backFaceAlpha = 0.5;
|
|
133
|
+
}
|
|
134
|
+
// Skirts hide seams flat model-space ground never has, and below it they are walls.
|
|
135
|
+
if (typeof state.saved.showSkirts === "boolean") {
|
|
136
|
+
globe.showSkirts = false;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
if (translucency && typeof state.saved.backFaceAlpha === "number") {
|
|
141
|
+
translucency.backFaceAlpha = state.saved.backFaceAlpha;
|
|
142
|
+
}
|
|
143
|
+
if (typeof state.saved.showSkirts === "boolean") {
|
|
144
|
+
globe.showSkirts = state.saved.showSkirts;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
viewer.scene.requestRender();
|
|
148
|
+
}
|
|
149
|
+
CameraControls.SetModelSpace = SetModelSpace;
|
|
150
|
+
})(CameraControls = exports.CameraControls || (exports.CameraControls = {}));
|
|
151
|
+
function restoreCesiumGestures(state) {
|
|
152
|
+
const controller = state.viewer.scene.screenSpaceCameraController;
|
|
153
|
+
controller.rotateEventTypes = state.saved.rotateEventTypes;
|
|
154
|
+
controller.zoomEventTypes = state.saved.zoomEventTypes;
|
|
155
|
+
controller.tiltEventTypes = state.saved.tiltEventTypes;
|
|
156
|
+
}
|
|
157
|
+
/*
|
|
158
|
+
* Decides each frame who has the mouse: these controls near the ground, CesiumJS for planets, orthographic and tracking.
|
|
159
|
+
*/
|
|
160
|
+
function syncController(state) {
|
|
161
|
+
const viewer = state.viewer;
|
|
162
|
+
if (viewer.isDestroyed() || state.drag) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
const ours = shouldControl(state);
|
|
166
|
+
if (ours === state.ours) {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
state.ours = ours;
|
|
170
|
+
if (ours) {
|
|
171
|
+
const controller = viewer.scene.screenSpaceCameraController;
|
|
172
|
+
controller.rotateEventTypes = [];
|
|
173
|
+
controller.zoomEventTypes = [Cesium.CameraEventType.PINCH];
|
|
174
|
+
controller.tiltEventTypes = [Cesium.CameraEventType.PINCH];
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
restoreCesiumGestures(state);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
function shouldControl(state) {
|
|
181
|
+
const viewer = state.viewer;
|
|
182
|
+
const camera = viewer.camera;
|
|
183
|
+
if (viewer.scene.mode !== Cesium.SceneMode.SCENE3D || camera.frustum instanceof Cesium.OrthographicFrustum) {
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
// A camera following something is CesiumJS's to move.
|
|
187
|
+
if (!Cesium.Matrix4.equals(camera.transform, Cesium.Matrix4.IDENTITY)) {
|
|
188
|
+
return false;
|
|
189
|
+
}
|
|
190
|
+
if (state.getModelSpaceFrame) {
|
|
191
|
+
return true;
|
|
192
|
+
}
|
|
193
|
+
return heightOf(state, camera.positionWC) < GEO_HANDOFF_HEIGHT;
|
|
194
|
+
}
|
|
195
|
+
function ellipsoidOf(state) {
|
|
196
|
+
var _a, _b;
|
|
197
|
+
return (_b = (_a = state.viewer.scene.globe) === null || _a === void 0 ? void 0 : _a.ellipsoid) !== null && _b !== void 0 ? _b : Cesium.Ellipsoid.WGS84;
|
|
198
|
+
}
|
|
199
|
+
function heightOf(state, position) {
|
|
200
|
+
const carto = ellipsoidOf(state).cartesianToCartographic(position);
|
|
201
|
+
return carto ? carto.height : Number.POSITIVE_INFINITY;
|
|
202
|
+
}
|
|
203
|
+
function canvasPosition(viewer, e) {
|
|
204
|
+
const rect = viewer.scene.canvas.getBoundingClientRect();
|
|
205
|
+
return new Cesium.Cartesian2(e.clientX - rect.left, e.clientY - rect.top);
|
|
206
|
+
}
|
|
207
|
+
/*
|
|
208
|
+
* Up at a point: the model-space frame's up in model-space, else the ellipsoid's surface normal there.
|
|
209
|
+
*/
|
|
210
|
+
function upAt(state, position) {
|
|
211
|
+
if (state.getModelSpaceFrame) {
|
|
212
|
+
const up = Cesium.Matrix4.multiplyByPointAsVector(state.getModelSpaceFrame(), Cesium.Cartesian3.UNIT_Z, new Cesium.Cartesian3());
|
|
213
|
+
return Cesium.Cartesian3.normalize(up, up);
|
|
214
|
+
}
|
|
215
|
+
return ellipsoidOf(state).geodeticSurfaceNormal(position, new Cesium.Cartesian3());
|
|
216
|
+
}
|
|
217
|
+
/*
|
|
218
|
+
* The level plane standing in for the ground when nothing is drawn under the cursor.
|
|
219
|
+
*/
|
|
220
|
+
function groundPlane(state) {
|
|
221
|
+
if (state.getModelSpaceFrame) {
|
|
222
|
+
const frame = state.getModelSpaceFrame();
|
|
223
|
+
return Cesium.Plane.fromPointNormal(Cesium.Matrix4.getTranslation(frame, new Cesium.Cartesian3()), upAt(state, null));
|
|
224
|
+
}
|
|
225
|
+
const camera = state.viewer.camera;
|
|
226
|
+
const ellipsoid = ellipsoidOf(state);
|
|
227
|
+
const surface = ellipsoid.scaleToGeodeticSurface(camera.positionWC, new Cesium.Cartesian3());
|
|
228
|
+
if (!surface) {
|
|
229
|
+
return null;
|
|
230
|
+
}
|
|
231
|
+
return Cesium.Plane.fromPointNormal(surface, ellipsoid.geodeticSurfaceNormal(surface, new Cesium.Cartesian3()));
|
|
232
|
+
}
|
|
233
|
+
/*
|
|
234
|
+
* How far away a depth pick is believable, since below ground the depth buffer can hold the globe's inside.
|
|
235
|
+
*/
|
|
236
|
+
function plausibleDistance(state) {
|
|
237
|
+
const camera = state.viewer.camera;
|
|
238
|
+
if (state.getModelSpaceFrame) {
|
|
239
|
+
const origin = Cesium.Matrix4.getTranslation(state.getModelSpaceFrame(), new Cesium.Cartesian3());
|
|
240
|
+
return Math.max(PLAUSIBLE_PICK_FLOOR, Cesium.Cartesian3.distance(camera.positionWC, origin) * 10);
|
|
241
|
+
}
|
|
242
|
+
const height = Math.abs(heightOf(state, camera.positionWC) - (Number(state.viewer.scene.globeHeight) || 0));
|
|
243
|
+
const horizon = Math.sqrt(2 * ellipsoidOf(state).maximumRadius * Math.max(height, 0));
|
|
244
|
+
return Math.max(PLAUSIBLE_PICK_FLOOR, height * 10, horizon * 1.5);
|
|
245
|
+
}
|
|
246
|
+
/*
|
|
247
|
+
* The point under a screen position: what is drawn there, else the ground plane, else a point at the last distance.
|
|
248
|
+
*/
|
|
249
|
+
function pickTarget(state, position) {
|
|
250
|
+
const viewer = state.viewer;
|
|
251
|
+
const scene = viewer.scene;
|
|
252
|
+
const camera = viewer.camera;
|
|
253
|
+
const ray = camera.getPickRay(position);
|
|
254
|
+
if (!ray) {
|
|
255
|
+
return null;
|
|
256
|
+
}
|
|
257
|
+
let picked;
|
|
258
|
+
if (scene.pickPositionSupported) {
|
|
259
|
+
try {
|
|
260
|
+
picked = scene.pickPosition(position);
|
|
261
|
+
}
|
|
262
|
+
catch (e) {
|
|
263
|
+
picked = null;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
const plausible = plausibleDistance(state);
|
|
267
|
+
if (isAhead(camera, picked) && Cesium.Cartesian3.distance(picked, camera.positionWC) < plausible) {
|
|
268
|
+
return picked;
|
|
269
|
+
}
|
|
270
|
+
const ground = groundPlane(state);
|
|
271
|
+
const onGround = ground ? Cesium.IntersectionTests.rayPlane(ray, ground) : null;
|
|
272
|
+
if (isAhead(camera, onGround) && Cesium.Cartesian3.distance(onGround, camera.positionWC) < plausible) {
|
|
273
|
+
return onGround;
|
|
274
|
+
}
|
|
275
|
+
return Cesium.Ray.getPoint(ray, state.lastDistance);
|
|
276
|
+
}
|
|
277
|
+
function isAhead(camera, point) {
|
|
278
|
+
if (!point || !Number.isFinite(point.x) || !Number.isFinite(point.y) || !Number.isFinite(point.z)) {
|
|
279
|
+
return false;
|
|
280
|
+
}
|
|
281
|
+
const toPoint = Cesium.Cartesian3.subtract(point, camera.positionWC, new Cesium.Cartesian3());
|
|
282
|
+
return Cesium.Cartesian3.dot(toPoint, camera.directionWC) > 0;
|
|
283
|
+
}
|
|
284
|
+
/*
|
|
285
|
+
* Picks which gesture a button and its modifiers start, matching CesiumJS's own mapping.
|
|
286
|
+
*/
|
|
287
|
+
function dragKind(e) {
|
|
288
|
+
if (e.shiftKey) {
|
|
289
|
+
// Shift drag looks around, which CesiumJS still handles.
|
|
290
|
+
return null;
|
|
291
|
+
}
|
|
292
|
+
if (e.button === 1 || (e.ctrlKey && (e.button === 0 || e.button === 2))) {
|
|
293
|
+
return EDrag.Orbit;
|
|
294
|
+
}
|
|
295
|
+
if (e.button === 0) {
|
|
296
|
+
return EDrag.Pan;
|
|
297
|
+
}
|
|
298
|
+
if (e.button === 2) {
|
|
299
|
+
return EDrag.Zoom;
|
|
300
|
+
}
|
|
301
|
+
return null;
|
|
302
|
+
}
|
|
303
|
+
function allows(state, kind) {
|
|
304
|
+
const controller = state.viewer.scene.screenSpaceCameraController;
|
|
305
|
+
if (!controller.enableInputs) {
|
|
306
|
+
return false;
|
|
307
|
+
}
|
|
308
|
+
switch (kind) {
|
|
309
|
+
case EDrag.Pan:
|
|
310
|
+
return controller.enableRotate;
|
|
311
|
+
case EDrag.Orbit:
|
|
312
|
+
return controller.enableTilt;
|
|
313
|
+
case EDrag.Zoom:
|
|
314
|
+
return controller.enableZoom;
|
|
315
|
+
}
|
|
316
|
+
return false;
|
|
317
|
+
}
|
|
318
|
+
function onPointerDown(state, e) {
|
|
319
|
+
const viewer = state.viewer;
|
|
320
|
+
if (viewer.isDestroyed() || !state.ours) {
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
if (e.pointerType === "touch") {
|
|
324
|
+
state.touches.add(e.pointerId);
|
|
325
|
+
// A second finger makes it a pinch, which CesiumJS handles.
|
|
326
|
+
if (state.touches.size > 1) {
|
|
327
|
+
endDrag(state);
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
const kind = dragKind(e);
|
|
332
|
+
if (!kind || !allows(state, kind)) {
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
const position = canvasPosition(viewer, e);
|
|
336
|
+
const target = pickTarget(state, position);
|
|
337
|
+
if (!target) {
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
const camera = viewer.camera;
|
|
341
|
+
const distance = Cesium.Cartesian3.distance(camera.positionWC, target);
|
|
342
|
+
state.lastDistance = Math.max(distance, MIN_ZOOM_DISTANCE);
|
|
343
|
+
const drag = { kind, pointerId: e.pointerId, last: position, target, up: upAt(state, target), distance };
|
|
344
|
+
if (kind === EDrag.Pan) {
|
|
345
|
+
drag.plane = panPlane(camera, target, drag.up);
|
|
346
|
+
}
|
|
347
|
+
else if (kind === EDrag.Zoom) {
|
|
348
|
+
drag.direction = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(target, camera.positionWC, new Cesium.Cartesian3()), new Cesium.Cartesian3());
|
|
349
|
+
}
|
|
350
|
+
state.drag = drag;
|
|
351
|
+
}
|
|
352
|
+
/*
|
|
353
|
+
* A level plane through the grabbed point, or one facing the camera when the level one is seen edge on.
|
|
354
|
+
*/
|
|
355
|
+
function panPlane(camera, target, up) {
|
|
356
|
+
if (Math.abs(Cesium.Cartesian3.dot(camera.directionWC, up)) > GRAZING_SINE) {
|
|
357
|
+
return Cesium.Plane.fromPointNormal(target, up);
|
|
358
|
+
}
|
|
359
|
+
return Cesium.Plane.fromPointNormal(target, Cesium.Cartesian3.negate(camera.directionWC, new Cesium.Cartesian3()));
|
|
360
|
+
}
|
|
361
|
+
function onPointerMove(state, e) {
|
|
362
|
+
const drag = state.drag;
|
|
363
|
+
const viewer = state.viewer;
|
|
364
|
+
if (!drag || drag.pointerId !== e.pointerId || viewer.isDestroyed()) {
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
if (!allows(state, drag.kind)) {
|
|
368
|
+
endDrag(state);
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
const position = canvasPosition(viewer, e);
|
|
372
|
+
const dx = position.x - drag.last.x;
|
|
373
|
+
const dy = position.y - drag.last.y;
|
|
374
|
+
if (dx === 0 && dy === 0) {
|
|
375
|
+
return;
|
|
376
|
+
}
|
|
377
|
+
switch (drag.kind) {
|
|
378
|
+
case EDrag.Pan:
|
|
379
|
+
pan(state, drag, position);
|
|
380
|
+
break;
|
|
381
|
+
case EDrag.Orbit:
|
|
382
|
+
orbit(state, drag, dx, dy);
|
|
383
|
+
break;
|
|
384
|
+
case EDrag.Zoom:
|
|
385
|
+
// Dragging down zooms in, as it does in CesiumJS.
|
|
386
|
+
moveAlong(state, drag.direction, drag.target, dy / DRAG_PIXELS_PER_NOTCH);
|
|
387
|
+
break;
|
|
388
|
+
}
|
|
389
|
+
drag.last = position;
|
|
390
|
+
viewer.scene.requestRender();
|
|
391
|
+
}
|
|
392
|
+
function onPointerUp(state, e) {
|
|
393
|
+
var _a;
|
|
394
|
+
state.touches.delete(e.pointerId);
|
|
395
|
+
if (((_a = state.drag) === null || _a === void 0 ? void 0 : _a.pointerId) === e.pointerId) {
|
|
396
|
+
endDrag(state);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
function endDrag(state) {
|
|
400
|
+
state.drag = null;
|
|
401
|
+
}
|
|
402
|
+
/*
|
|
403
|
+
* Slides the camera so the grabbed point stays under the cursor.
|
|
404
|
+
*/
|
|
405
|
+
function pan(state, drag, position) {
|
|
406
|
+
const camera = state.viewer.camera;
|
|
407
|
+
const ray = camera.getPickRay(position);
|
|
408
|
+
const hit = ray ? Cesium.IntersectionTests.rayPlane(ray, drag.plane) : null;
|
|
409
|
+
if (!isAhead(camera, hit)) {
|
|
410
|
+
return;
|
|
411
|
+
}
|
|
412
|
+
const delta = Cesium.Cartesian3.subtract(drag.target, hit, new Cesium.Cartesian3());
|
|
413
|
+
// Near the horizon a pixel covers kilometres, so one move is capped at a few times the grab distance.
|
|
414
|
+
const limit = Math.max(drag.distance, MIN_ZOOM_DISTANCE) * 3;
|
|
415
|
+
const length = Cesium.Cartesian3.magnitude(delta);
|
|
416
|
+
if (length > limit) {
|
|
417
|
+
Cesium.Cartesian3.multiplyByScalar(delta, limit / length, delta);
|
|
418
|
+
}
|
|
419
|
+
Cesium.Cartesian3.add(camera.position, delta, camera.position);
|
|
420
|
+
}
|
|
421
|
+
/*
|
|
422
|
+
* Turns the camera around the grabbed point: sideways about up there, and up or down about the camera's right.
|
|
423
|
+
*/
|
|
424
|
+
function orbit(state, drag, dx, dy) {
|
|
425
|
+
const viewer = state.viewer;
|
|
426
|
+
const camera = viewer.camera;
|
|
427
|
+
const canvas = viewer.scene.canvas;
|
|
428
|
+
const up = drag.up;
|
|
429
|
+
const heading = -dx / Math.max(canvas.clientWidth, 1) * Math.PI * 2;
|
|
430
|
+
// Dragging down looks further down, as CesiumJS's own tilt does.
|
|
431
|
+
let pitch = -dy / Math.max(canvas.clientHeight, 1) * Math.PI;
|
|
432
|
+
// Keeps the view from tipping past straight up or down, where it would flip over.
|
|
433
|
+
const elevation = Math.asin(Cesium.Math.clamp(Cesium.Cartesian3.dot(camera.direction, up), -1, 1));
|
|
434
|
+
const limit = Math.PI / 2 - ORBIT_POLE_MARGIN;
|
|
435
|
+
pitch = Cesium.Math.clamp(elevation + pitch, -limit, limit) - elevation;
|
|
436
|
+
rotateAbout(camera, drag.target, up, heading);
|
|
437
|
+
const right = Cesium.Cartesian3.cross(camera.direction, up, new Cesium.Cartesian3());
|
|
438
|
+
if (Cesium.Cartesian3.magnitude(right) > Cesium.Math.EPSILON6) {
|
|
439
|
+
Cesium.Cartesian3.normalize(right, right);
|
|
440
|
+
rotateAbout(camera, drag.target, right, pitch);
|
|
441
|
+
}
|
|
442
|
+
levelCamera(camera, upAt(state, camera.position));
|
|
443
|
+
}
|
|
444
|
+
function rotateAbout(camera, pivot, axis, angle) {
|
|
445
|
+
if (!angle) {
|
|
446
|
+
return;
|
|
447
|
+
}
|
|
448
|
+
const rotation = Cesium.Matrix3.fromQuaternion(Cesium.Quaternion.fromAxisAngle(axis, angle));
|
|
449
|
+
const offset = Cesium.Cartesian3.subtract(camera.position, pivot, new Cesium.Cartesian3());
|
|
450
|
+
Cesium.Matrix3.multiplyByVector(rotation, offset, offset);
|
|
451
|
+
Cesium.Cartesian3.add(pivot, offset, camera.position);
|
|
452
|
+
Cesium.Matrix3.multiplyByVector(rotation, camera.direction, camera.direction);
|
|
453
|
+
Cesium.Matrix3.multiplyByVector(rotation, camera.up, camera.up);
|
|
454
|
+
Cesium.Matrix3.multiplyByVector(rotation, camera.right, camera.right);
|
|
455
|
+
}
|
|
456
|
+
/*
|
|
457
|
+
* Takes any roll out, so the horizon stays level however the camera has turned.
|
|
458
|
+
*/
|
|
459
|
+
function levelCamera(camera, up) {
|
|
460
|
+
const direction = Cesium.Cartesian3.normalize(camera.direction, camera.direction);
|
|
461
|
+
const right = Cesium.Cartesian3.cross(direction, up, new Cesium.Cartesian3());
|
|
462
|
+
if (Cesium.Cartesian3.magnitude(right) < Cesium.Math.EPSILON6) {
|
|
463
|
+
return;
|
|
464
|
+
}
|
|
465
|
+
Cesium.Cartesian3.normalize(right, camera.right);
|
|
466
|
+
Cesium.Cartesian3.cross(camera.right, direction, camera.up);
|
|
467
|
+
Cesium.Cartesian3.normalize(camera.up, camera.up);
|
|
468
|
+
}
|
|
469
|
+
function onWheel(state, e) {
|
|
470
|
+
const viewer = state.viewer;
|
|
471
|
+
if (viewer.isDestroyed() || !state.ours || !allows(state, EDrag.Zoom)) {
|
|
472
|
+
return;
|
|
473
|
+
}
|
|
474
|
+
let notches = e.deltaMode === 1 ? e.deltaY / 3 : e.deltaMode === 2 ? e.deltaY : e.deltaY / 100;
|
|
475
|
+
notches = Cesium.Math.clamp(-notches, -3, 3);
|
|
476
|
+
if (!notches) {
|
|
477
|
+
return;
|
|
478
|
+
}
|
|
479
|
+
const position = canvasPosition(viewer, e);
|
|
480
|
+
const camera = viewer.camera;
|
|
481
|
+
const target = pickTarget(state, position);
|
|
482
|
+
const ray = camera.getPickRay(position);
|
|
483
|
+
if (!target || !ray) {
|
|
484
|
+
return;
|
|
485
|
+
}
|
|
486
|
+
const step = zoomStep(state, ray.direction, target, notches);
|
|
487
|
+
Cesium.Cartesian3.add(state.pendingZoom, step, state.pendingZoom);
|
|
488
|
+
state.zoomPosition = Cesium.Cartesian3.clone(camera.position);
|
|
489
|
+
if (state.zoomFrame == null) {
|
|
490
|
+
state.zoomFrame = requestAnimationFrame(() => easeZoom(state));
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
/*
|
|
494
|
+
* Applies part of the outstanding wheel movement each frame, so a notch glides rather than jumps.
|
|
495
|
+
*/
|
|
496
|
+
function easeZoom(state) {
|
|
497
|
+
state.zoomFrame = null;
|
|
498
|
+
const viewer = state.viewer;
|
|
499
|
+
if (viewer.isDestroyed() || !viewer[CESIUM_CAMERA_CONTROLS_KEY]) {
|
|
500
|
+
return;
|
|
501
|
+
}
|
|
502
|
+
// A tool locking the camera mid glide (walkthrough, a camera lock) owns it from then on.
|
|
503
|
+
if (!allows(state, EDrag.Zoom) ||
|
|
504
|
+
!state.zoomPosition ||
|
|
505
|
+
!Cesium.Cartesian3.equalsEpsilon(viewer.camera.position, state.zoomPosition, 0, 1e-3)) {
|
|
506
|
+
state.pendingZoom = new Cesium.Cartesian3();
|
|
507
|
+
return;
|
|
508
|
+
}
|
|
509
|
+
const remaining = Cesium.Cartesian3.magnitude(state.pendingZoom);
|
|
510
|
+
const share = remaining < 0.01 ? 1 : ZOOM_EASE;
|
|
511
|
+
const step = Cesium.Cartesian3.multiplyByScalar(state.pendingZoom, share, new Cesium.Cartesian3());
|
|
512
|
+
Cesium.Cartesian3.subtract(state.pendingZoom, step, state.pendingZoom);
|
|
513
|
+
Cesium.Cartesian3.add(viewer.camera.position, step, viewer.camera.position);
|
|
514
|
+
state.zoomPosition = Cesium.Cartesian3.clone(viewer.camera.position);
|
|
515
|
+
viewer.scene.requestRender();
|
|
516
|
+
if (share < 1) {
|
|
517
|
+
state.zoomFrame = requestAnimationFrame(() => easeZoom(state));
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
function moveAlong(state, direction, target, notches) {
|
|
521
|
+
const step = zoomStep(state, direction, target, notches);
|
|
522
|
+
Cesium.Cartesian3.add(state.viewer.camera.position, step, state.viewer.camera.position);
|
|
523
|
+
}
|
|
524
|
+
/*
|
|
525
|
+
* The move for some notches toward a target along a direction, a share of the distance with a floor so it never stalls.
|
|
526
|
+
*/
|
|
527
|
+
function zoomStep(state, direction, target, notches) {
|
|
528
|
+
const camera = state.viewer.camera;
|
|
529
|
+
const distance = Math.max(Cesium.Cartesian3.distance(camera.positionWC, target), MIN_ZOOM_DISTANCE);
|
|
530
|
+
state.lastDistance = distance;
|
|
531
|
+
let length = distance * ZOOM_SHARE * notches;
|
|
532
|
+
// A geospatial camera zooming out hands over to CesiumJS once it is high enough, so only model-space is capped.
|
|
533
|
+
if (length < 0 && state.getModelSpaceFrame) {
|
|
534
|
+
const origin = Cesium.Matrix4.getTranslation(state.getModelSpaceFrame(), new Cesium.Cartesian3());
|
|
535
|
+
const pending = Cesium.Cartesian3.add(camera.positionWC, state.pendingZoom, new Cesium.Cartesian3());
|
|
536
|
+
const range = Cesium.Cartesian3.distance(pending, origin);
|
|
537
|
+
length = Math.max(length, range - MODEL_SPACE_MAX_RANGE);
|
|
538
|
+
if (length >= 0) {
|
|
539
|
+
return new Cesium.Cartesian3();
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
return Cesium.Cartesian3.multiplyByScalar(Cesium.Cartesian3.normalize(direction, new Cesium.Cartesian3()), length, new Cesium.Cartesian3());
|
|
543
|
+
}
|
|
544
|
+
//# sourceMappingURL=camera-controls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"camera-controls.js","sourceRoot":"","sources":["../../../src/viewer/camera-controls.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ const widget_info_view_1 = require("../widgets/widget-info-view");
|
|
|
14
14
|
const widget_left_panel_1 = require("../widgets/widget-left-panel");
|
|
15
15
|
const widget_nav_compass_1 = require("../widgets/widget-nav-compass");
|
|
16
16
|
const viewer_event_tracker_1 = require("./viewer-event-tracker");
|
|
17
|
+
const camera_controls_1 = require("./camera-controls");
|
|
17
18
|
const CESIUM_VIEWER_MANAGER_KEY = "_cesiumViewerManager";
|
|
18
19
|
const CESIUM_VIEWER_EVENT_TRACKER_KEY = "_cesiumViewerEventTracker";
|
|
19
20
|
const BACKGROUND_RENDERING_KEY = "_backgroundRendering";
|
|
@@ -72,7 +73,7 @@ var ViewerUtils;
|
|
|
72
73
|
* @param viewer
|
|
73
74
|
*/
|
|
74
75
|
function InitViewer(params) {
|
|
75
|
-
const { viewer, destroyWidgets, styleContainer, nextspaceWidgets, widgetParams } = params;
|
|
76
|
+
const { viewer, destroyWidgets, styleContainer, nextspaceWidgets, widgetParams, cameraControls } = params;
|
|
76
77
|
const data = { widgets: {} };
|
|
77
78
|
if (destroyWidgets != false) {
|
|
78
79
|
try {
|
|
@@ -99,6 +100,12 @@ var ViewerUtils;
|
|
|
99
100
|
// Newer cesium is much dimmer by default so we shift brightness a bit.
|
|
100
101
|
view_utils_1.ViewUtils.ApplyDefaultBrightness(viewer);
|
|
101
102
|
backgroundRendering(viewer);
|
|
103
|
+
if (cameraControls != false) {
|
|
104
|
+
camera_controls_1.CameraControls.Attach(viewer);
|
|
105
|
+
if (view_utils_1.ViewUtils.GetModelSpace(viewer)) {
|
|
106
|
+
camera_controls_1.CameraControls.SetModelSpace(viewer, () => view_utils_1.ViewUtils.GetModelSpaceFrame(viewer));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
102
109
|
// Capturing the destroy call to destroy all widgets.
|
|
103
110
|
const olDestroy = viewer.destroy;
|
|
104
111
|
viewer.destroy = () => {
|
|
@@ -107,6 +114,7 @@ var ViewerUtils;
|
|
|
107
114
|
}
|
|
108
115
|
try {
|
|
109
116
|
ViewerUtils.DisposeNextspaceWidgets(viewer);
|
|
117
|
+
camera_controls_1.CameraControls.Detach(viewer);
|
|
110
118
|
}
|
|
111
119
|
// We don't want the actual destroy to fail.
|
|
112
120
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewer-utils.js","sourceRoot":"","sources":["../../../src/viewer/viewer-utils.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAChD,+CAAoE;AAEpE,gEAA2D;AAC3D,sEAAiE;AACjE,8CAA2C;AAC3C,kEAA8D;AAC9D,gEAA4D;AAC5D,kEAA8D;AAC9D,oFAA8E;AAC9E,kEAA6D;AAC7D,oEAA+D;AAC/D,sEAAiE;AACjE,iEAA4D;
|
|
1
|
+
{"version":3,"file":"viewer-utils.js","sourceRoot":"","sources":["../../../src/viewer/viewer-utils.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAChD,+CAAoE;AAEpE,gEAA2D;AAC3D,sEAAiE;AACjE,8CAA2C;AAC3C,kEAA8D;AAC9D,gEAA4D;AAC5D,kEAA8D;AAC9D,oFAA8E;AAC9E,kEAA6D;AAC7D,oEAA+D;AAC/D,sEAAiE;AACjE,iEAA4D;AAC5D,uDAAmD;AAQnD,MAAM,yBAAyB,GAAG,sBAAsB,CAAC;AACzD,MAAM,+BAA+B,GAAG,2BAA2B,CAAC;AAEpE,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;AACxD,4DAA4D;AAC5D,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC;;GAEG;AACH,SAAS,mBAAmB,CAAC,MAAqB;IAC9C,IAAI,MAAM,CAAC,wBAAwB,CAAC,EAAE;QAClC,OAAO;KACV;IACD,MAAM,CAAC,wBAAwB,CAAC,GAAG,IAAI,CAAC;IACxC,yGAAyG;IACzG,IAAI,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IACrC,sGAAsG;IACtG,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,EAAE;QACjE,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACjC,UAAU,GAAG,SAAS,CAAC;QACvB,SAAS,GAAG,KAAK,CAAC;IACtB,CAAC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;;QAC9B,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,CAAA,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAA,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE;YACjE,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxB,cAAc,EAAE,CAAC;YACjB,OAAO;SACV;QACD,gEAAgE;QAChE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAA,MAAC,MAAM,CAAC,SAAyB,CAAC,KAAK,0CAAE,OAAO,KAAI,MAAM,EAAE;YACjF,OAAO;SACV;QACD,IAAI,UAAU,IAAI,SAAS,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,YAAY,GAAG,mBAAmB,EAAE;YACnF,OAAO;SACV;QACD,IAAI;YACA,4FAA4F;YAC5F,IAAI,QAAQ,CAAC,QAAQ,EAAE,EAAE;gBACrB,SAAS,GAAG,IAAI,CAAC;gBACjB,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;aAChC;SACJ;QACD,OAAO,CAAC,EAAE;YACN,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;SAC3C;IACL,CAAC,EAAE,IAAI,CAAC,CAAC;AACb,CAAC;AAED,qCAAqC;AACrC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAG/B,IAAiB,WAAW,CA2U3B;AA3UD,WAAiB,WAAW;IACxB;;;OAGG;IACH,SAAgB,UAAU,CAAC,MAgB1B;QAGG,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC;QAC1G,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC7B,IAAI,cAAc,IAAI,KAAK,EAAE;YACzB,IAAI;gBACA,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC3C,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC3C,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;gBAClD,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC7C,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;gBACnD,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;aACrD;YACD,OAAO,CAAC,EAAE;gBACN,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aACpB;SACJ;QACD,IAAI,cAAc,IAAI,KAAK,EAAE;YACzB,WAAW,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;SAC1C;QACD,IAAI,gBAAgB,IAAI,KAAK,EAAE;YAC3B,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,aAAa,CAAC;gBACrC,GAAG,YAAY;gBACf,MAAM;aACT,CAAC,CAAC;SACN;QAED,uEAAuE;QACvE,sBAAS,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAEzC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAE5B,IAAI,cAAc,IAAI,KAAK,EAAE;YACzB,gCAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC9B,IAAI,sBAAS,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;gBACjC,gCAAc,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,sBAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;aACpF;SACJ;QAED,qDAAqD;QACrD,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC;QACjC,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE;gBACjC,OAAO;aACV;YACD,IAAI;gBACA,WAAW,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;gBAC5C,gCAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACjC;YACD,4CAA4C;YAC5C,OAAO,CAAC,EAAE;gBACN,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aACpB;YACD,IAAI,SAAS,EAAE;gBACX,iDAAiD;gBACjD,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC1B;QACL,CAAC,CAAC;QAEF,OAAO,IAAI,CAAC;IAChB,CAAC;IA7Ee,sBAAU,aA6EzB,CAAA;IAED;;;;OAIG;IACH,SAAgB,uBAAuB,CAAC,MAAqB;QACzD,eAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACvC,MAAM,CAAC,OAAO,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACP,CAAC;IAJe,mCAAuB,0BAItC,CAAA;IAED,SAAgB,aAAa,CAAC,MAAe;QACzC,mGAAmG;QACnG,+DAA+D;QAC/D,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,SAAS,EAAE;YACrD,MAAM,CAAC,OAAO,EAAE,CAAC;SACpB;IACL,CAAC;IANe,yBAAa,gBAM5B,CAAA;IAED;;;OAGG;IACH,SAAgB,cAAc,CAAC,MAE9B;;QACG,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QAC1B,MAAM,SAAS,GAAG,MAAM,CAAC,SAAwB,CAAC;QAClD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE;YAC3B,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;SACzC;QAED,MAAM,YAAY,GAAG,MAAA,SAAS,CAAC,sBAAsB,CAAC,eAAe,CAAC,0CAAG,CAAC,CAAC,CAAC;QAC5E,IAAI,YAAY,EAAE;YACd,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;YACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAgB,CAAC;gBACzC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,qCAAqC,CAAC,EAAE;oBAClE,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;iBAChC;aACJ;SACJ;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAqB,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAE7B,MAAM,MAAM,GAAG,MAAM,CAAC,aAA4B,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC;QAElC,MAAM,eAAe,GAAG,MAAM,CAAC,aAA4B,CAAC;QAC5D,eAAe,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QACrC,eAAe,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAEtC,MAAM,eAAe,GAAG,eAAe,CAAC,aAA4B,CAAC;QACrE,eAAe,CAAC,KAAK,CAAC,UAAU,GAAG,YAAY,CAAC;QAChD,eAAe,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;QACxC,eAAe,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1C,eAAe,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QACxC,eAAe,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC5C,eAAe,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;QAChC,eAAe,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;QACjC,eAAe,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QACrC,eAAe,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IAC1C,CAAC;IA3Ce,0BAAc,iBA2C7B,CAAA;IAED;;;;;OAKG;IACH,SAAgB,UAAU,CAAC,MAK1B;QACG,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QACpD,IAAI,MAAM,CAAC,yBAAyB,CAAC,EAAE;YACnC,OAAO,MAAM,CAAC,yBAAyB,CAAC,CAAC;SAC5C;aACI,IAAI,eAAe,IAAI,KAAK,EAAE;YAC/B,MAAM,OAAO,GAAG,IAAI,mCAAe,CAAC,OAAO,CAAC;gBACxC,MAAM;gBACN,OAAO;aACV,CAAC,CAAC;YACH,MAAM,CAAC,yBAAyB,CAAC,GAAG,OAAO,CAAC;YAC5C,OAAO,OAAO,CAAC;SAClB;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAnBe,sBAAU,aAmBzB,CAAA;IAED;;;;OAIG;IACH,SAAgB,aAAa,CAAC,MA8B7B;QACG,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;QAC7K,MAAM,OAAO,GAAgC,EAAE,CAAC;QAChD,IAAI,CAAC,MAAM,IAAI,OAAO,EAAE;YACpB,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;SAC3B;QACD,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE;YACpB,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;SAChD;QACD,IAAI,CAAC,SAAS,IAAI,MAAM,EAAE;YACtB,SAAS,GAAG,MAAM,CAAC,SAAwB,CAAC;SAC/C;QACD,IAAI,CAAC,UAAU,EAAE;YACb,UAAU,GAAG,0BAAW,CAAC,GAAG,EAAE,CAAC;SAClC;QACD,IAAI,YAAY,IAAI,IAAI,EAAE;YACtB,YAAY,GAAG,IAAI,CAAC;SACvB;QACD,MAAM,YAAY,GAAG;YACjB,MAAM;YACN,SAAS;YACT,UAAU,EAAE,UAAU;YACtB,OAAO;SACV,CAAC;QACF,IAAI,CAAC,OAAO,UAAU,IAAI,SAAS,IAAI,UAAU,CAAC,IAAI,YAAY,EAAE;YAChE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,qCAAgB,CAAC,YAAY,CAAC,CAAC;SAC9D;QACD,IAAI,CAAC,OAAO,QAAQ,IAAI,SAAS,IAAI,QAAQ,CAAC,IAAI,YAAY,EAAE;YAC5D,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,gCAAc,CAAC,YAAY,CAAC,CAAC;SAC7D;QACD,IAAI,CAAC,OAAO,SAAS,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,YAAY,EAAE;YAC9D,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,kCAAe,CAAC,YAAY,CAAC,CAAC;SAC5D;QAED;QACI,2BAA2B;QAC3B,OAAO,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,CAC5B,SAAS,CACZ,CAAC,CAAC,CAAC;QACA,kBAAkB;QAClB,OAAO,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,CAC1B,OAAO,CACV,CAAC,CAAC,CAAC;QACA,YAAY;QACZ,YAAY,CACf,CACJ,EACH;YACE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,+BAAa,CAAC,YAAY,CAAC,CAAC;SACxD;QAED,IAAI,CAAC,OAAO,SAAS,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,EAAE;YAC9E,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,kCAAe,CAAC;gBACvC,GAAG,YAAY;gBACf,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;aAC5C,CAAC,CAAC;SACN;QACD,IAAI,CAAC,CAAC,OAAO,SAAS,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,SAAS,EAAE;YAC5D,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,mCAAe,CAAC;gBACvC,GAAG,YAAY;gBACf,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;aAC5C,CAAC,CAAC;SACN;QACD,IAAI,CAAC,OAAO,QAAQ,IAAI,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,gBAAgB,CAAC,EAAE;YACnF,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,iCAAc,CAAC,YAAY,CAAC,CAAC;SAC1D;QACD,IAAI,CAAC,CAAC,OAAO,QAAQ,IAAI,SAAS,IAAI,QAAQ,CAAC,IAAI,gBAAgB,EAAE;YACjE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI,kDAAsB,CAAC;gBACrD,GAAG,YAAY;aAClB,CAAC,CAAC;SACN;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAxGe,yBAAa,gBAwG5B,CAAA;IAED;;;;;;OAMG;IACI,KAAK,UAAU,cAAc,CAAC,KAAa;QAC9C,IAAI,CAAC,KAAK,EAAE;YACR,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,mBAAmB,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE;YACpC,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;SACrC;QACD,IAAI;YACA,MAAM,GAAG,GAAG,4DAA4D,KAAK,EAAE,CAAC;YAChF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,mBAAmB,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,GAAG,CAAC,CAAC;YAChD,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;SACrC;QACD,OAAO,CAAC,EAAE;YACN,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,mBAAmB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;SACtC;IACL,CAAC;IAlBqB,0BAAc,iBAkBnC,CAAA;IAED;;;;;OAKG;IACH,SAAgB,eAAe,CAAC,MAAqB;QACjD,IAAI,OAAO,GAAG,MAAM,CAAC,+BAA+B,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,EAAE;YACV,OAAO,GAAG,IAAI,yCAAkB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;SAC1D;QACD,MAAM,CAAC,+BAA+B,CAAC,GAAG,OAAO,CAAC;QAClD,OAAO,OAAO,CAAC;IACnB,CAAC;IAPe,2BAAe,kBAO9B,CAAA;AACL,CAAC,EA3UgB,WAAW,GAAX,mBAAW,KAAX,mBAAW,QA2U3B"}
|