iflow-engine-base 3.12.1 → 3.12.4

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.
@@ -1,5 +1,5 @@
1
1
  import { n as R, at as S, h as E, aN as b, j as x, t as A, E as k, Q as F, p as I, W as y, a as v, T as f, i as P, Y as m, V as p, b as D } from "./three-vendor-Bx2tSp_D.js";
2
- import { C as L, W as w, E as T, c as z, r as _ } from "./sdk-runtime-Cfd1eUce.js";
2
+ import { C as L, W as w, E as T, c as z, r as _ } from "./sdk-runtime-B4l79tmQ.js";
3
3
  class V {
4
4
  scene;
5
5
  panoramaSphere = null;
@@ -1,5 +1,5 @@
1
1
  import { n as Js, C as st, t as Zs, V as v, b as N, O as $s, W as en, M as J, Q as ge, a as tn, f as qt, j as be, B as sn, h as ft, r as it, aO as ze, aP as Pt, aQ as at, X as Bt, aR as ms, aS as yn, aT as xn, aU as In, aV as Tn, U as wn, aW as En, aX as Bn, l as lt, aY as As, aZ as gs, a_ as vn, k as Cs, a$ as Fn, aw as Je, at as Ss, D as Kt, aj as bn, aN as ys, q as Dn, y as We, b0 as qe, aB as xs, s as Mn, b1 as Rn, a9 as Pn, b2 as On, b3 as nn, aD as Is, b4 as kn, ag as Ln, b5 as Ne, b6 as mt, p as Hn } from "./three-vendor-Bx2tSp_D.js";
2
- import { C as Un, c as zn, E as _n, r as Qn } from "./sdk-runtime-Cfd1eUce.js";
2
+ import { C as Un, c as zn, E as _n, r as Qn } from "./sdk-runtime-B4l79tmQ.js";
3
3
  var De = /* @__PURE__ */ ((m) => (m.LoadStart = "gaussian-load-start", m.LoadProgress = "gaussian-load-progress", m.Loaded = "gaussian-loaded", m.LoadError = "gaussian-load-error", m.SceneRemoved = "gaussian-scene-removed", m.FpsUpdated = "gaussian-fps-updated", m.ViewChanged = "gaussian-view-changed", m))(De || {});
4
4
  class Nn {
5
5
  listeners = /* @__PURE__ */ new Map();
@@ -1,6 +1,6 @@
1
- import { g as xX, J as KN } from "./sdk-vendor-COe7cTIJ.js";
1
+ import { g as xX, J as KN } from "./sdk-vendor-VZI0bEcg.js";
2
2
  import { b7 as Ii, b8 as TX } from "./three-vendor-Bx2tSp_D.js";
3
- import { l as vX, L as EX, E as CX, d as JN, e as wX, c as $C, a as SX, f as IX, r as DX, h as XC } from "./sdk-runtime-Cfd1eUce.js";
3
+ import { l as vX, L as EX, E as CX, d as JN, e as wX, c as $C, a as SX, f as IX, r as DX, h as XC } from "./sdk-runtime-B4l79tmQ.js";
4
4
  var QN = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
5
5
  function Fb(e) {
6
6
  return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
@@ -2,7 +2,7 @@ import { b9 as w } from "./three-vendor-Bx2tSp_D.js";
2
2
  const S = "__BIM_ENGINE_SDK_ASSET_BASE__", b = "__BIM_ENGINE_SDK_ASSET_FILE_MAP__", g = "__BIM_ENGINE_SDK_ASSET_FILE_URLS__", A = "__BIM_ENGINE_SDK_ASSET_FILE_SESSION__", j = "https://unpkg.com/iflow-engine-base@3.9.20/dist/", L = "https://__bim_engine_sdk_asset__/", M = ["assets/", "fonts/", "draco/", "basis/", "texture/", "prompt/"];
3
3
  let _ = null;
4
4
  async function R() {
5
- return _ || (_ = import("./sdk-vendor-COe7cTIJ.js").then((t) => t.j).then((t) => t.default ?? t)), _;
5
+ return _ || (_ = import("./sdk-vendor-VZI0bEcg.js").then((t) => t.j).then((t) => t.default ?? t)), _;
6
6
  }
7
7
  function a() {
8
8
  return typeof globalThis < "u" ? globalThis : null;
@@ -1,5 +1,5 @@
1
1
  import { R as ve, b as B, V as ce, t as Te, ba as Ce } from "./three-vendor-Bx2tSp_D.js";
2
- import { a as pe, J as ne, p as Ae, l as J } from "./sdk-vendor-COe7cTIJ.js";
2
+ import { a as pe, J as ne, p as Ae, l as J } from "./sdk-vendor-VZI0bEcg.js";
3
3
  class It {
4
4
  /**
5
5
  * 构造函数
@@ -1056,7 +1056,7 @@ class jt {
1056
1056
  e.stopImmediatePropagation();
1057
1057
  };
1058
1058
  }
1059
- const ot = "3.12.1", st = {
1059
+ const ot = "3.12.4", st = {
1060
1060
  version: ot
1061
1061
  }, V = st.version;
1062
1062
  function se() {
@@ -1,4 +1,4 @@
1
- import { c as ja, g as X0, a as f1 } from "./engine-gis-BqjUHNmF.js";
1
+ import { c as ja, g as X0, a as f1 } from "./engine-gis-j4GvT41d.js";
2
2
  function d1(t, e) {
3
3
  for (var r = 0; r < e.length; r++) {
4
4
  const i = e[r];
@@ -1 +1 @@
1
- .originRotate{width:10px;height:10px;background-color:red}.versionText{position:absolute;right:10px;color:#86d9ff;z-index:1000;bottom:10px;font-size:10px;background:transparent;pointer-events:none}.originDiv{position:absolute;top:100px;left:100px;width:30px;height:30px;border-radius:50%;z-index:1000;pointer-events:none}.tagDiv{color:gray;background:#fffc;padding:5px;font-size:12px}.catchPoint{pointer-events:none;stroke:#08dfd7;fill:transparent;stroke-width:2}.catchLine{position:absolute;width:10px;height:10px;pointer-events:none;background-color:green}.catchPlane{position:absolute;width:10px;height:10px;pointer-events:none;background-color:#ff0}.bim-mobile-roam-controls{position:absolute;left:0;right:0;bottom:max(40px,env(safe-area-inset-bottom));z-index:1200;display:flex;align-items:flex-end;justify-content:space-between;padding:0 60px;pointer-events:none;user-select:none;-webkit-user-select:none;touch-action:none}.bim-mobile-roam-pad,.bim-mobile-roam-look-group,.bim-mobile-roam-vertical-pad{pointer-events:auto}.engine-3d-search{position:absolute;inset:0;z-index:1500;display:none;pointer-events:none}.engine-3d-search--visible{display:block}.engine-3d-search__box{position:absolute;top:14%;left:50%;width:min(480px,calc(100% - 32px));transform:translate(-50%);overflow:hidden;border:1px solid rgba(148,163,184,.42);border-radius:10px;background:#0f172af5;box-shadow:0 18px 40px #00000059;color:#e2e8f0;pointer-events:auto}.engine-3d-search__input-row{display:flex;align-items:center;height:48px;gap:10px;padding:0 12px}.engine-3d-search__icon{display:flex;color:#93c5fd}.engine-3d-search__input{min-width:0;flex:1;border:0;outline:0;background:transparent;color:#f8fafc;font-size:14px}.engine-3d-search__input::placeholder{color:#94a3b8}.engine-3d-search__clear{width:24px;height:24px;border:0;border-radius:50%;background:#94a3b833;color:#e2e8f0;font-size:18px;cursor:pointer}.engine-3d-search__status{min-height:28px;box-sizing:border-box;padding:6px 14px;border-top:1px solid rgba(148,163,184,.16);color:#94a3b8;font-size:12px}.engine-3d-search__list{max-height:300px;margin:0;padding:4px 0;overflow:auto;list-style:none}.engine-3d-search__pagination{display:none;align-items:center;justify-content:space-between;padding:8px 12px;border-top:1px solid rgba(148,163,184,.16);color:#94a3b8;font-size:12px}.engine-3d-search__page-button{border:0;border-radius:4px;padding:4px 8px;background:#94a3b833;color:inherit;cursor:pointer;font-size:12px}.engine-3d-search__page-button:disabled{cursor:not-allowed;opacity:.38}.engine-3d-search__item{display:flex;align-items:center;gap:8px;padding:9px 14px;cursor:pointer}.engine-3d-search__item:hover,.engine-3d-search__item--active{background:#3b82f633}.engine-3d-search__badge{flex:0 0 auto;padding:2px 5px;border-radius:3px;background:#3b82f638;color:#93c5fd;font-size:11px}.engine-3d-search__name{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.engine-3d-search__id{flex:0 1 120px;overflow:hidden;color:#94a3b8;text-align:right;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.engine-3d-search--light .engine-3d-search__box{border-color:#47556947;background:#fffffff7;box-shadow:0 18px 40px #0f172a2e;color:#172554}.engine-3d-search--light .engine-3d-search__input{color:#0f172a}.engine-3d-search--light .engine-3d-search__input::placeholder,.engine-3d-search--light .engine-3d-search__status,.engine-3d-search--light .engine-3d-search__id{color:#64748b}.engine-3d-search--light .engine-3d-search__clear{background:#e2e8f0;color:#334155}.engine-3d-search--light .engine-3d-search__status{border-top-color:#47556924}.engine-3d-search--light .engine-3d-search__pagination{border-top-color:#47556924;color:#64748b}.engine-3d-search--light .engine-3d-search__page-button{background:#e2e8f0;color:#334155}.engine-3d-search--light .engine-3d-search__item:hover,.engine-3d-search--light .engine-3d-search__item--active{background:#e0f2fe}.engine-3d-search--light .engine-3d-search__badge{background:#dbeafe;color:#1d4ed8}.bim-mobile-roam-move-pad{width:116px;height:116px;border:1px solid rgba(255,255,255,.34);border-radius:50%;display:flex;align-items:center;justify-content:center;background:#14182073;box-shadow:0 4px 16px #0000003d inset,0 4px 14px #0003;touch-action:none}.bim-mobile-roam-button{width:44px;height:44px;border:1px solid rgba(255,255,255,.46);border-radius:8px;color:#fff;background:#14182094;box-shadow:0 4px 14px #00000038;font-size:15px;font-weight:600;line-height:1;touch-action:none}.bim-mobile-roam-button.is-round{width:48px;height:48px;border-radius:50%;font-size:20px;font-weight:700;display:flex;align-items:center;justify-content:center}.bim-mobile-roam-button.is-active{background:#267effc7;border-color:#ffffffb8}.bim-mobile-roam-move-pad.is-active{border-color:#267effd6;background:#142c4a8a}.bim-mobile-roam-look-group{display:flex;align-items:center;gap:12px}.bim-mobile-roam-vertical-pad{display:flex;flex-direction:column;gap:10px;align-items:center}.bim-mobile-roam-look-pad{width:116px;height:116px;border:1px solid rgba(255,255,255,.34);border-radius:50%;display:flex;align-items:center;justify-content:center;background:#14182073;box-shadow:0 4px 16px #0000003d inset,0 4px 14px #0003;touch-action:none}.bim-mobile-roam-look-pad.is-active{border-color:#267effd6;background:#142c4a8a}.bim-mobile-roam-look-knob,.bim-mobile-roam-move-knob{width:46px;height:46px;border-radius:50%;background:#ffffffb8;box-shadow:0 2px 10px #00000042}@media(max-width:520px){.bim-mobile-roam-controls{padding:0 14px;bottom:max(14px,env(safe-area-inset-bottom))}.bim-mobile-roam-move-pad{width:96px;height:96px}.bim-mobile-roam-button{width:38px;height:38px;font-size:13px}.bim-mobile-roam-button.is-round{width:42px;height:42px;font-size:18px}.bim-mobile-roam-look-pad{width:96px;height:96px}.bim-mobile-roam-look-knob,.bim-mobile-roam-move-knob{width:38px;height:38px}}.ViewCube{position:absolute;width:120px;height:120px;top:0;right:0;z-index:999}.homeViewWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-size:100% 100%;background-repeat:no-repeat;background-color:#fff0;color:#fff;top:10px;right:100;width:20px;height:20px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.viewSettingWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-size:100% 100%;background-repeat:no-repeat;font-weight:800;background-color:#fff0;color:#fff;top:30px;right:100;width:20px;height:20px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.cameraToggleWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-color:#ffffffe6;color:#333;font-size:26px;font-weight:700;display:none;align-items:center;justify-content:center;border-radius:4px;box-shadow:0 2px 4px #0003;transition:all .3s ease;top:70px;right:90px;width:44px;height:44px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.cameraToggleWrapper.show{display:flex}.cameraToggleWrapper:hover{background-color:#fff;box-shadow:0 3px 6px #0000004d;transform:scale(1.1)}.screenshotWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-color:#ffffffe6;color:#333;font-size:20px;display:none;align-items:center;justify-content:center;border-radius:4px;box-shadow:0 2px 4px #0003;transition:all .3s ease;top:120px;right:90px;width:44px;height:44px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.screenshotWrapper.show{display:flex}.screenshotWrapper:hover{background-color:#fff;box-shadow:0 3px 6px #0000004d;transform:scale(1.1)}.fullscreenWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-color:#ffffffe6;color:#333;font-size:26px;font-weight:700;display:none;align-items:center;justify-content:center;border-radius:4px;box-shadow:0 2px 4px #0003;transition:all .3s ease;top:170px;right:90px;width:44px;height:44px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.fullscreenWrapper.show{display:flex}.fullscreenWrapper:hover{background-color:#fff;box-shadow:0 3px 6px #0000004d;transform:scale(1.1)}.measure-elevation{position:absolute;pointer-events:none}.measureSvg{position:absolute;width:1920px;height:1080px}.catch-point{position:absolute;width:10px;height:10px;background-color:red;border-radius:50%;pointer-events:none}.annotation-container{position:absolute;pointer-events:none;top:0;left:0}.measureLine{position:absolute;pointer-events:none;stroke:#009bea;fill:#009bea;filter:drop-shadow(0px 0px 2px rgba(0,0,0,.3))}.measureBack{cursor:pointer;pointer-events:auto;fill:#fff;rx:5;ry:5;filter:drop-shadow(0px 0px 3px rgba(0,0,0,.3));text-align:center}.measureLabel{position:absolute;fill:#fff;font-family:tahoma;font-size:14px;stroke:#009bea;font-weight:200;pointer-events:none;text-anchor:middle}.measurePointer{fill:#009bea}.Hight{stroke:#fff;font-weight:500;filter:drop-shadow(0px 0px 2px rgb(0,195,255))}.allow-select{pointer-events:auto}.disallow-select{pointer-events:none}.angle-annotation{position:absolute;pointer-events:auto}.measure-2d-selected.measureLine{stroke:#fff;fill:#fff;filter:drop-shadow(0 0 3px rgb(0,195,255))}.measure-2d-selected.measurePointer{fill:#fff;stroke:#00c3ff;stroke-width:2px;filter:drop-shadow(0 0 3px rgb(0,195,255))}.measure-2d-selected.measureBack{fill:#009bea;stroke:#fff;stroke-width:1px;filter:drop-shadow(0 0 4px rgb(0,195,255))}.measure-2d-selected.measureLabel{fill:#fff;stroke:none;font-weight:600}polygon.measure-2d-selected{fill:#00c3ff38}.markup-2d-layer{position:absolute;inset:0;pointer-events:none;z-index:30}.markup-2d-svg{position:absolute;inset:0;overflow:visible;pointer-events:none}.markup-2d-toolbar{position:absolute;top:8px;left:50%;transform:translate(-50%);display:none;align-items:center;gap:6px;padding:6px;background:#fff;border:1px solid #d9d9d9;border-radius:8px;box-shadow:0 4px 14px #00000024;pointer-events:auto;-webkit-user-select:none;user-select:none;z-index:1300}.markup-2d-toolbar button,.markup-2d-toolbar input{height:28px;border:1px solid #d9d9d9;border-radius:4px;background:#fff;color:#1f2937;font-size:12px}.markup-2d-toolbar button{width:28px;min-width:28px;padding:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.markup-2d-toolbar button:hover,.markup-2d-toolbar button.active{color:#1677ff;border-color:#1677ff;background:#eef6ff}.markup-2d-toolbar input[type=color]{width:34px;padding:2px}.markup-2d-toolbar input[type=number]{width:54px;padding:0 4px}.markup-2d-icon-button img{width:16px;height:16px;display:block;pointer-events:none}.markup-2d-divider{width:1px;height:22px;background:#e5e7eb}.markup-2d-shape{pointer-events:auto;cursor:pointer}.markup-2d-shape.selected{filter:drop-shadow(0 0 4px rgba(22,119,255,.9))}.MapController{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.engine-2d-container{position:relative;width:100%;height:100%;overflow:hidden}.engine-2d-canvas{display:block;width:100%;height:100%;outline:none}.engine-2d-version-text{position:absolute;right:10px;bottom:0;z-index:1000;color:#86d9ff;font-size:10px;background:transparent;pointer-events:none}.engine-2d-cad-cursor{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden}.engine-2d-cad-cursor__h{position:absolute;left:0;width:100%;height:1px;background:var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translateY(-50%)}.engine-2d-cad-cursor__v{position:absolute;top:0;width:1px;height:100%;background:var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translate(-50%)}.engine-2d-cad-cursor__box{position:absolute;width:8px;height:8px;border:1px solid var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translate(-50%,-50%)}.engine-2d-cad-cursor--short-crosshair .engine-2d-cad-cursor__h{width:72px;left:0;transform:translate(-50%,-50%)}.engine-2d-cad-cursor--short-crosshair .engine-2d-cad-cursor__v{height:72px;top:0;transform:translate(-50%,-50%)}.engine-2d-context-menu{position:absolute;z-index:9999;min-width:140px;background:var(--e2d-bg2, #252526);border:1px solid var(--e2d-border, rgba(255, 255, 255, .12));border-radius:4px;box-shadow:0 4px 16px var(--e2d-shadow, rgba(0, 0, 0, .5));padding:4px 0;display:none;-webkit-user-select:none;user-select:none}.engine-2d-context-menu--visible{display:block}.engine-2d-context-menu__item{padding:7px 16px;font-size:13px;color:var(--e2d-text2, #cccccc);cursor:pointer;white-space:nowrap;transition:background .1s,color .1s}.engine-2d-context-menu__item:hover{background:var(--e2d-bg-accent, #094771);color:var(--e2d-text-accent, #ffffff)}.engine-2d-context-menu__divider{height:1px;background:var(--e2d-border, rgba(255, 255, 255, .1));margin:4px 0}.engine-2d-stats{position:absolute;top:10px;left:10px;background:var(--e2d-float-bg, rgba(0, 0, 0, .7));color:var(--e2d-text, #e0e0e0);padding:8px 12px;border-radius:4px;font-family:monospace;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none}.engine-2d-stats div{margin:2px 0}.engine-2d-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--e2d-float-bg, rgba(0, 0, 0, .8));color:var(--e2d-text, #e0e0e0);padding:20px 40px;border-radius:8px;font-size:16px;text-align:center}.engine-2d-loading-spinner{border:3px solid var(--e2d-border, rgba(255, 255, 255, .3));border-top:3px solid var(--e2d-accent, #4fc3f7);border-radius:50%;width:40px;height:40px;animation:engine-2d-spin 1s linear infinite;margin:0 auto 10px}@keyframes engine-2d-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.engine-2d-error{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#d32f2feb;color:#fff;padding:20px 40px;border-radius:8px;font-size:14px;max-width:80%;text-align:center}.engine-2d-controls-hint{position:absolute;bottom:10px;left:10px;background:var(--e2d-float-bg, rgba(0, 0, 0, .6));color:var(--e2d-text, #e0e0e0);border:1px solid var(--e2d-float-border, rgba(255, 255, 255, .08));padding:8px 12px;border-radius:4px;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none}.engine-2d-controls-hint kbd{background:var(--e2d-icon-bg, rgba(255, 255, 255, .2));color:var(--e2d-text, #e0e0e0);padding:2px 6px;border-radius:3px;font-family:monospace}.engine-2d-workspace-tabs{position:absolute;left:12px;bottom:10px;z-index:40;display:flex;align-items:center;max-width:calc(100% - 24px);overflow-x:auto;background:var(--e2d-bg2, rgba(28, 33, 40, .92));border:1px solid var(--e2d-border, rgba(255, 255, 255, .14));border-radius:4px;box-shadow:0 4px 14px var(--e2d-shadow, rgba(0, 0, 0, .28))}.engine-2d-workspace-tabs__item{flex:0 0 auto;max-width:180px;height:28px;padding:0 12px;border:0;border-right:1px solid var(--e2d-border2, rgba(255, 255, 255, .1));background:transparent;color:var(--e2d-text2, #d7dde4);font-size:12px;line-height:28px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.engine-2d-workspace-tabs__item:last-child{border-right:0}.engine-2d-workspace-tabs__item:hover:not(:disabled){background:var(--e2d-bg-hover, rgba(79, 195, 247, .12));color:var(--e2d-text-accent, #ffffff)}.engine-2d-workspace-tabs__item--active{background:var(--e2d-accent, #2f80ed);color:#fff;cursor:default}.engine-2d-workspace-tabs__item:disabled{opacity:.9}.engine-2d-search{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998;display:none}.engine-2d-search--visible{display:block}.engine-2d-search__box{position:absolute;top:14%;left:50%;transform:translate(-50%);width:480px;max-width:calc(100% - 40px);background:var(--e2d-bg, #1e1f22);border:1px solid var(--e2d-border, rgba(255, 255, 255, .14));border-radius:10px;box-shadow:0 8px 40px var(--e2d-shadow-lg, rgba(0, 0, 0, .65)),0 2px 8px var(--e2d-shadow, rgba(0, 0, 0, .4));overflow:hidden;pointer-events:auto;animation:engine-2d-search-in .18s cubic-bezier(.34,1.2,.64,1)}@keyframes engine-2d-search-in{0%{opacity:0;transform:translate(-50%) translateY(-8px) scale(.97)}to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}.engine-2d-search__input-row{display:flex;align-items:center;padding:0 12px;gap:8px;height:48px}.engine-2d-search__icon{flex-shrink:0;color:var(--e2d-icon, rgba(255, 255, 255, .4));display:flex;align-items:center}.engine-2d-search__input{flex:1;background:transparent;border:none;outline:none;color:var(--e2d-text, #e0e0e0);font-size:14px;line-height:1.4;caret-color:var(--e2d-accent, #4fc3f7)}.engine-2d-search__input::placeholder{color:var(--e2d-text3, rgba(255, 255, 255, .25))}.engine-2d-search__clear{flex-shrink:0;background:var(--e2d-icon-bg, rgba(255, 255, 255, .08));border:none;border-radius:4px;color:var(--e2d-icon, rgba(255, 255, 255, .5));cursor:pointer;display:flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;opacity:0;pointer-events:none;transition:opacity .15s,background .15s,color .15s}.engine-2d-search__clear:hover{background:var(--e2d-icon-bg-hover, rgba(255, 255, 255, .16));color:var(--e2d-close-hover, #ffffff)}.engine-2d-search__divider{height:1px;background:var(--e2d-border2, rgba(255, 255, 255, .08));display:none}.engine-2d-search__status{padding:6px 16px;font-size:11px;color:var(--e2d-text3, rgba(255, 255, 255, .35));display:none;-webkit-user-select:none;user-select:none}.engine-2d-search__list{list-style:none;margin:0;padding:4px 0;max-height:320px;overflow-y:auto;display:none;scrollbar-width:thin;scrollbar-color:var(--e2d-scrollbar, rgba(255, 255, 255, .15)) transparent}.engine-2d-search__list::-webkit-scrollbar{width:4px}.engine-2d-search__list::-webkit-scrollbar-track{background:transparent}.engine-2d-search__list::-webkit-scrollbar-thumb{background:var(--e2d-scrollbar, rgba(255, 255, 255, .15));border-radius:2px}.engine-2d-search__item{display:flex;align-items:center;gap:8px;padding:8px 14px;cursor:pointer;transition:background .1s;min-height:38px;flex-wrap:nowrap}.engine-2d-search__item:hover,.engine-2d-search__item--active{background:var(--e2d-bg-hover, rgba(79, 195, 247, .08))}.engine-2d-search__item-badge{flex-shrink:0;font-size:10px;font-weight:500;padding:2px 6px;border-radius:3px;letter-spacing:.03em;white-space:nowrap;color:var(--e2d-accent, #4fc3f7);background:#4fc3f71f}.engine-2d-search__item-name{flex:1;font-size:13px;color:var(--e2d-text, #e0e0e0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__item-layer{flex-shrink:0;font-size:11px;color:var(--e2d-text3, rgba(255, 255, 255, .3));white-space:nowrap;max-width:100px;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__item-desc{flex-shrink:0;font-size:11px;color:var(--e2d-text4, rgba(255, 255, 255, .25));white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__mark{background:transparent;color:var(--e2d-accent, #4fc3f7);font-weight:600}.engine-2d-mouse-coord{position:absolute;bottom:10px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;background:var(--e2d-float-bg, rgba(0, 0, 0, .65));color:var(--e2d-text, #e0e0e0);padding:5px 14px;border-radius:4px;font-family:monospace;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none;border:1px solid var(--e2d-float-border, rgba(255, 255, 255, .08))}.engine-2d-mouse-coord__label{color:var(--e2d-coord-label, rgba(255, 255, 255, .45));font-size:11px;letter-spacing:.05em}.engine-2d-mouse-coord__value{min-width:90px;color:var(--e2d-coord-value, #76c8ff)}.panorama-annotation-container{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1000;overflow:hidden}.panorama-annotation{position:absolute;pointer-events:auto;cursor:pointer;transform:translate(-50%,-50%);transition:opacity .2s ease,transform .2s ease;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.panorama-annotation:hover{z-index:1001;transform:translate(-50%,-50%) scale(1.1)}.panorama-annotation-icon{width:40px;height:40px}.panorama-annotation-icon img{width:100%;height:100%;object-fit:contain;display:block;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}.panorama-annotation-text{max-width:200px;text-align:center;line-height:1.4}.panorama-annotation-link{transition:background-color .2s ease,transform .2s ease}.panorama-annotation-link:hover{z-index:1002}.panorama-annotation-link img{display:block;flex-shrink:0}.panorama-annotation.hidden{display:none!important}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.panorama-annotation.loading{animation:pulse 1.5s ease-in-out infinite}@media(max-width:768px){.panorama-annotation-icon{width:32px;height:32px}.panorama-annotation-text,.panorama-annotation-link{font-size:12px!important;padding:6px 10px!important}}.cesium-svgPath-svg{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden}.cesium-button{display:inline-block;position:relative;background:#303336;border:1px solid #444;color:#edffff;fill:#edffff;border-radius:4px;padding:5px 12px;margin:2px 3px;cursor:pointer;overflow:hidden;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cesium-button:focus{color:#fff;fill:#fff;border-color:#ea4;outline:none}.cesium-button:hover{color:#fff;fill:#fff;background:#48b;border-color:#aef;box-shadow:0 0 8px #fff}.cesium-button:active{color:#000;fill:#000;background:#adf;border-color:#fff;box-shadow:0 0 8px #fff}.cesium-button:disabled,.cesium-button-disabled,.cesium-button-disabled:focus,.cesium-button-disabled:hover,.cesium-button-disabled:active{background:#303336;border-color:#444;color:#646464;fill:#646464;box-shadow:none;cursor:default}.cesium-button option{background-color:#000;color:#eee}.cesium-button option:disabled{color:#777}.cesium-button input,.cesium-button label{cursor:pointer}.cesium-button input{vertical-align:sub}.cesium-toolbar-button{box-sizing:border-box;width:32px;height:32px;border-radius:14%;padding:0;vertical-align:middle;z-index:0}.cesium-performanceDisplay-defaultContainer{position:absolute;top:50px;right:10px;text-align:right}.cesium-performanceDisplay{background-color:#282828b3;padding:7px;border-radius:5px;border:1px solid #444;font:700 12px sans-serif}.cesium-performanceDisplay-fps{color:#e52}.cesium-performanceDisplay-throttled{color:#a42}.cesium-performanceDisplay-ms{color:#de3}.cesium-animation-theme{visibility:hidden;display:block;position:absolute;z-index:-100}.cesium-animation-themeNormal{color:#222}.cesium-animation-themeHover{color:#4488b0}.cesium-animation-themeSelect{color:#242}.cesium-animation-themeDisabled{color:#333}.cesium-animation-themeKnob{color:#222}.cesium-animation-themePointer{color:#2e2}.cesium-animation-themeSwoosh{color:#8ac}.cesium-animation-themeSwooshHover{color:#aef}.cesium-animation-svgText{fill:#edffff;font-family:Sans-Serif;font-size:15px;text-anchor:middle}.cesium-animation-blank{fill:#000;fill-opacity:.01;stroke:none}.cesium-animation-rectButton{cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cesium-animation-rectButton .cesium-animation-buttonGlow{fill:#fff;stroke:none;display:none}.cesium-animation-rectButton:hover .cesium-animation-buttonGlow{display:block}.cesium-animation-rectButton .cesium-animation-buttonPath{fill:#edffff}.cesium-animation-rectButton .cesium-animation-buttonMain{stroke:#444;stroke-width:1.2}.cesium-animation-rectButton:hover .cesium-animation-buttonMain{stroke:#aef}.cesium-animation-rectButton:active .cesium-animation-buttonMain{fill:#abd6ff}.cesium-animation-buttonDisabled{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cesium-animation-buttonDisabled .cesium-animation-buttonMain{stroke:#555}.cesium-animation-buttonDisabled .cesium-animation-buttonPath{fill:#818181}.cesium-animation-buttonDisabled .cesium-animation-buttonGlow{display:none}.cesium-animation-buttonToggled .cesium-animation-buttonGlow{display:block;fill:#2e2}.cesium-animation-buttonToggled .cesium-animation-buttonMain{stroke:#2e2}.cesium-animation-buttonToggled:hover .cesium-animation-buttonGlow{fill:#fff}.cesium-animation-buttonToggled:hover .cesium-animation-buttonMain{stroke:#2e2}.cesium-animation-shuttleRingG,.cesium-animation-shuttleRingPointer,.cesium-animation-shuttleRingPausePointer{cursor:pointer}.cesium-animation-shuttleRingBack{fill:#181818;fill-opacity:.8;stroke:#333;stroke-width:1.2}.cesium-animation-shuttleRingSwoosh line{stroke:#8ac;stroke-width:3;stroke-opacity:.2;stroke-linecap:round}.cesium-animation-knobOuter{cursor:pointer;stroke:#444;stroke-width:1.2}.cesium-animation-knobInner{cursor:pointer}.cesium-baseLayerPicker-selected{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.cesium-baseLayerPicker-dropDown{display:block;position:absolute;box-sizing:content-box;top:auto;right:0;width:320px;max-height:500px;margin-top:5px;background-color:#262626bf;border:1px solid #444;padding:6px;overflow:auto;border-radius:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;transform:translateY(-20%);visibility:hidden;opacity:0;transition:visibility 0s .2s,opacity .2s ease-in,transform .2s ease-in}.cesium-baseLayerPicker-dropDown-visible{transform:translate(0);visibility:visible;opacity:1;transition:opacity .2s ease-out,transform .2s ease-out}.cesium-baseLayerPicker-sectionTitle{display:block;font-family:sans-serif;font-size:16pt;text-align:left;color:#edffff;margin-bottom:4px}.cesium-baseLayerPicker-choices{margin-bottom:5px}.cesium-baseLayerPicker-categoryTitle{color:#edffff;font-size:11pt}.cesium-baseLayerPicker-choices{display:block;border:1px solid #888;border-radius:5px;padding:5px 0}.cesium-baseLayerPicker-item{display:inline-block;vertical-align:top;margin:2px 5px;width:64px;text-align:center;cursor:pointer}.cesium-baseLayerPicker-itemLabel{display:block;font-family:sans-serif;font-size:8pt;text-align:center;vertical-align:middle;color:#edffff;cursor:pointer;word-wrap:break-word}.cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemLabel,.cesium-baseLayerPicker-item:focus .cesium-baseLayerPicker-itemLabel{text-decoration:underline}.cesium-baseLayerPicker-itemIcon{display:inline-block;position:relative;width:inherit;height:auto;background-size:100% 100%;border:solid 1px #444;border-radius:9px;color:#edffff;margin:0;padding:0;cursor:pointer;box-sizing:border-box}.cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemIcon{border-color:#fff;box-shadow:0 0 8px #fff,0 0 8px #fff}.cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemLabel{color:#bdecf8}.cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemIcon{border:double 4px rgb(189,236,248)}.cesium-widget{font-family:sans-serif;font-size:16px;overflow:hidden;display:block;position:relative;top:0;left:0;width:100%;height:100%}.cesium-widget,.cesium-widget canvas{width:100%;height:100%;touch-action:none}.cesium-widget-credits{display:block;position:absolute;bottom:0;left:0;color:#fff;font-size:10px;text-shadow:0px 0px 2px #000000;padding-right:5px}.cesium-widget-errorPanel{position:absolute;inset:0;text-align:center;background:#000000b3;z-index:99999}.cesium-widget-errorPanel:before{display:inline-block;vertical-align:middle;height:100%;content:""}.cesium-widget-errorPanel-content{width:75%;max-width:500px;display:inline-block;text-align:left;vertical-align:middle;border:1px solid #510c00;border-radius:7px;background-color:#f0d9d5;font-size:14px;color:#510c00}.cesium-widget-errorPanel-content.expanded{max-width:75%}.cesium-widget-errorPanel-header{font-size:18px;font-family:Open Sans,Verdana,Geneva,sans-serif;background:#d69d93;border-bottom:2px solid #510c00;border-radius:3px 3px 0 0;padding:15px}.cesium-widget-errorPanel-scroll{overflow:auto;font-family:Open Sans,Verdana,Geneva,sans-serif;white-space:pre-wrap;padding:0 15px;margin:10px 0 20px}.cesium-widget-errorPanel-buttonPanel{padding:0 15px;margin:10px 0 20px;text-align:right}.cesium-widget-errorPanel-buttonPanel button{border-color:#510c00;background:#d69d93;color:#202020;margin:0}.cesium-widget-errorPanel-buttonPanel button:focus{border-color:#510c00;background:#f0d9d5;color:#510c00}.cesium-widget-errorPanel-buttonPanel button:hover{border-color:#510c00;background:#f0d9d5;color:#510c00}.cesium-widget-errorPanel-buttonPanel button:active{border-color:#510c00;background:#b17b72;color:#510c00}.cesium-widget-errorPanel-more-details{text-decoration:underline;cursor:pointer}.cesium-widget-errorPanel-more-details:hover{color:#2b0700}.cesium-cesiumInspector{border-radius:5px;transition:width ease-in-out .25s;background:#303336cc;border:1px solid #444;color:#edffff;display:inline-block;position:relative;padding:4px 12px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden}.cesium-cesiumInspector-button{text-align:center;font-size:11pt}.cesium-cesiumInspector-visible .cesium-cesiumInspector-button{border-bottom:1px solid #aaa;padding-bottom:3px}.cesium-cesiumInspector input:enabled,.cesium-cesiumInspector-button{cursor:pointer}.cesium-cesiumInspector-visible{width:185px;height:auto}.cesium-cesiumInspector-hidden{width:122px;height:17px}.cesium-cesiumInspector-sectionContent{max-height:600px}.cesium-cesiumInspector-section-collapsed .cesium-cesiumInspector-sectionContent{max-height:0;padding:0!important;overflow:hidden}.cesium-cesiumInspector-dropDown{margin:5px 0;font-family:sans-serif;font-size:10pt;width:185px}.cesium-cesiumInspector-frustumStatistics{padding:5px;background-color:#505050bf}.cesium-cesiumInspector-pickButton{background-color:#0000004d;border:1px solid #444;color:#edffff;border-radius:5px;padding:3px 7px;cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;margin:0 auto}.cesium-cesiumInspector-pickButton:focus{outline:none}.cesium-cesiumInspector-pickButton:active,.cesium-cesiumInspector-pickButtonHighlight{color:#000;background:#adf;border-color:#fff;box-shadow:0 0 8px #fff}.cesium-cesiumInspector-center{text-align:center}.cesium-cesiumInspector-sectionHeader{font-weight:700;font-size:10pt;margin:0;cursor:pointer}.cesium-cesiumInspector-pickSection{border:1px solid #aaa;border-radius:5px;padding:3px;margin-bottom:5px}.cesium-cesiumInspector-sectionContent{margin-bottom:10px;transition:max-height .25s}.cesium-cesiumInspector-tileText{padding-bottom:10px;border-bottom:1px solid #aaa}.cesium-cesiumInspector-relativeText{padding-top:10px}.cesium-cesiumInspector-sectionHeader:before{margin-right:5px;content:"-";width:1ch;display:inline-block}.cesium-cesiumInspector-section-collapsed .cesium-cesiumInspector-sectionHeader:before{content:"+"}ul.cesium-cesiumInspector-statistics{margin:0;padding-top:3px;padding-bottom:3px}ul.cesium-cesiumInspector-statistics+ul.cesium-cesiumInspector-statistics{border-top:1px solid #aaa}.cesium-cesiumInspector-slider{margin-top:5px}.cesium-cesiumInspector-slider input[type=number]{text-align:left;background-color:#222;outline:none;border:1px solid #444;color:#edffff;width:100px;border-radius:3px;padding:1px;margin-left:10px;cursor:auto}.cesium-cesiumInspector-slider input[type=number]::-webkit-outer-spin-button,.cesium-cesiumInspector-slider input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.cesium-cesiumInspector-slider input[type=range]{margin-left:5px;vertical-align:middle}.cesium-cesiumInspector-hide .cesium-cesiumInspector-styleEditor{display:none}.cesium-cesiumInspector-styleEditor{padding:10px;border-radius:5px;background:#303336cc;border:1px solid #444}.cesium-cesiumInspector-styleEditor textarea{width:100%;height:300px;background:transparent;color:#edffff;border:none;padding:0;white-space:pre;overflow-wrap:normal;overflow-x:auto}.cesium-3DTilesInspector{width:300px;pointer-events:all}.cesium-3DTilesInspector-statistics{font-size:11px}.cesium-3DTilesInspector-disabledElementsInfo{margin:5px 0 0;padding:0 0 0 20px;color:#eed202}.cesium-3DTilesInspector div,.cesium-3DTilesInspector input[type=range]{width:100%;box-sizing:border-box}.cesium-cesiumInspector-error{color:#ff9e9e;overflow:auto}.cesium-3DTilesInspector .cesium-cesiumInspector-section{margin-top:3px}.cesium-3DTilesInspector .cesium-cesiumInspector-sectionHeader+.cesium-cesiumInspector-show{border-top:1px solid white}input.cesium-cesiumInspector-url{overflow:hidden;white-space:nowrap;overflow-x:scroll;background-color:transparent;color:#fff;outline:none;border:none;height:1em;width:100%}.cesium-cesiumInspector .field-group{display:table}.cesium-cesiumInspector .field-group>label{display:table-cell;font-weight:700}.cesium-cesiumInspector .field-group>.field{display:table-cell;width:100%}.cesium-VoxelInspector{width:300px;pointer-events:all}.cesium-VoxelInspector div,.cesium-VoxelInspector input[type=range]{width:100%;box-sizing:border-box}.cesium-VoxelInspector .cesium-cesiumInspector-section{margin-top:3px}.cesium-VoxelInspector .cesium-cesiumInspector-sectionHeader+.cesium-cesiumInspector-show{border-top:1px solid white}.cesium-button.cesium-fullscreenButton,.cesium-button.cesium-vrButton{display:block;width:100%;height:100%;margin:0;border-radius:0}.cesium-viewer-geocoderContainer .cesium-geocoder-input{border:solid 1px #444;background-color:#282828b3;color:#fff;display:inline-block;vertical-align:middle;width:0;height:32px;margin:0;padding:0 32px 0 0;border-radius:0;box-sizing:border-box;transition:width ease-in-out .25s,background-color .2s ease-in-out;-webkit-appearance:none}.cesium-viewer-geocoderContainer:hover .cesium-geocoder-input{border-color:#aef;box-shadow:0 0 8px #fff}.cesium-viewer-geocoderContainer .cesium-geocoder-input:focus{border-color:#ea4;background-color:#0f0f0fe6;box-shadow:none;outline:none}.cesium-viewer-geocoderContainer:hover .cesium-geocoder-input,.cesium-viewer-geocoderContainer .cesium-geocoder-input:focus,.cesium-viewer-geocoderContainer .cesium-geocoder-input-wide{padding-left:4px;width:250px}.cesium-viewer-geocoderContainer .search-results{position:absolute;background-color:#000;color:#eee;overflow-y:auto;opacity:.8;width:100%}.cesium-viewer-geocoderContainer .search-results ul{list-style-type:none;margin:0;padding:0}.cesium-viewer-geocoderContainer .search-results ul li{font-size:14px;padding:3px 10px}.cesium-viewer-geocoderContainer .search-results ul li:hover{cursor:pointer}.cesium-viewer-geocoderContainer .search-results ul li.active{background:#48b}.cesium-geocoder-searchButton{background-color:#303336;display:inline-block;position:absolute;cursor:pointer;width:32px;top:1px;right:1px;height:30px;vertical-align:middle;fill:#edffff}.cesium-geocoder-searchButton:hover{background-color:#48b}.cesium-infoBox{display:block;position:absolute;top:50px;right:0;width:40%;max-width:480px;background:#262626f2;color:#edffff;border:1px solid #444;border-right:none;border-top-left-radius:7px;border-bottom-left-radius:7px;box-shadow:0 0 10px 1px #000;transform:translate(100%);visibility:hidden;opacity:0;transition:visibility 0s .2s,opacity .2s ease-in,transform .2s ease-in}.cesium-infoBox-visible{transform:translate(0);visibility:visible;opacity:1;transition:opacity .2s ease-out,transform .2s ease-out}.cesium-infoBox-title{display:block;height:20px;padding:5px 30px 5px 25px;background:#545454;border-top-left-radius:7px;text-align:center;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;box-sizing:content-box}.cesium-infoBox-bodyless .cesium-infoBox-title{border-bottom-left-radius:7px}button.cesium-infoBox-camera{display:block;position:absolute;top:4px;left:4px;width:22px;height:22px;background:transparent;border-color:transparent;border-radius:3px;padding:0 5px;margin:0}button.cesium-infoBox-close{display:block;position:absolute;top:5px;right:5px;height:20px;background:transparent;border:none;border-radius:2px;font-weight:700;font-size:16px;padding:0 5px;margin:0;color:#edffff}button.cesium-infoBox-close:focus{background:#ee880070;outline:none}button.cesium-infoBox-close:hover{background:#888;color:#000}button.cesium-infoBox-close:active{background:#a00;color:#000}.cesium-infoBox-bodyless .cesium-infoBox-iframe{display:none}.cesium-infoBox-iframe{border:none;width:100%;width:calc(100% - 2px)}span.cesium-sceneModePicker-wrapper{display:inline-block;position:relative;margin:0 3px}.cesium-sceneModePicker-visible{visibility:visible;opacity:1;transition:opacity .25s linear}.cesium-sceneModePicker-hidden{visibility:hidden;opacity:0;transition:visibility 0s .25s,opacity .25s linear}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-none{display:none}.cesium-sceneModePicker-slide-svg{transition:left 2s;top:0;left:0}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-dropDown-icon{box-sizing:border-box;padding:0;margin:3px 0}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D,.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView,.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D{margin:0 0 3px}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-icon2D{left:100%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-iconColumbusView{left:200%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon3D{left:-200%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon2D,.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-icon3D{left:-100%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-iconColumbusView{left:100%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-selected{border-color:#2e2;box-shadow:0 0 8px #fff,0 0 8px #fff}span.cesium-projectionPicker-wrapper{display:inline-block;position:relative;margin:0 3px}.cesium-projectionPicker-visible{visibility:visible;opacity:1;transition:opacity .25s linear}.cesium-projectionPicker-hidden{visibility:hidden;opacity:0;transition:visibility 0s .25s,opacity .25s linear}.cesium-projectionPicker-wrapper .cesium-projectionPicker-none{display:none}.cesium-projectionPicker-wrapper .cesium-projectionPicker-dropDown-icon{box-sizing:border-box;padding:0;margin:3px 0}.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonPerspective,.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonOrthographic{margin:0 0 3px}.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonPerspective .cesium-projectionPicker-iconOrthographic{left:100%}.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonOrthographic .cesium-projectionPicker-iconPerspective{left:-100%}.cesium-projectionPicker-wrapper .cesium-projectionPicker-selected{border-color:#2e2;box-shadow:0 0 8px #fff,0 0 8px #fff}.cesium-performance-watchdog-message-area{position:relative;background-color:#ff0;color:#000;padding:10px}.cesium-performance-watchdog-message{margin-right:30px}.cesium-performance-watchdog-message-dismiss{position:absolute;right:0;margin:0 10px 0 0}.cesium-navigationHelpButton-wrapper{position:relative;display:inline-block}.cesium-navigation-help{visibility:hidden;position:absolute;top:38px;right:2px;width:250px;border-radius:10px;transform:scale(.01);transform-origin:234px -10px;transition:visibility 0s .25s,transform .25s ease-in}.cesium-navigation-help-visible{visibility:visible;transform:scale(1);transition:transform .25s ease-out}.cesium-navigation-help-instructions{border:1px solid #444;background-color:#262626bf;padding-bottom:5px;border-radius:0 0 10px 10px}.cesium-click-navigation-help{display:none}.cesium-touch-navigation-help{display:none;padding-top:5px}.cesium-click-navigation-help-visible,.cesium-touch-navigation-help-visible{display:block}.cesium-navigation-help-pan{color:#6cf;font-weight:700}.cesium-navigation-help-zoom{color:#65fd00;font-weight:700}.cesium-navigation-help-rotate{color:#ffd800;font-weight:700}.cesium-navigation-help-tilt{color:#d800d8;font-weight:700}.cesium-navigation-help-details{color:#fff}.cesium-navigation-button{color:#fff;background-color:transparent;border-bottom:none;border-top:1px solid #444;border-right:1px solid #444;margin:0;width:50%;cursor:pointer}.cesium-navigation-button-icon{vertical-align:middle;padding:5px 1px}.cesium-navigation-button:focus{outline:none}.cesium-navigation-button-left{border-radius:10px 0 0;border-left:1px solid #444}.cesium-navigation-button-right{border-radius:0 10px 0 0;border-left:none}.cesium-navigation-button-selected{background-color:#262626bf}.cesium-navigation-button-unselected{background-color:#000000bf}.cesium-navigation-button-unselected:hover{background-color:#4c4c4cbf}.cesium-selection-wrapper{position:absolute;width:160px;height:160px;pointer-events:none;visibility:hidden;opacity:0;transition:visibility 0s .2s,opacity .2s ease-in}.cesium-selection-wrapper-visible{visibility:visible;opacity:1;transition:opacity .2s ease-out}.cesium-selection-wrapper svg{fill:#2e2;stroke:#000;stroke-width:1.1px}.cesium-timeline-main{position:relative;left:0;bottom:0;overflow:hidden;border:solid 1px #888;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cesium-timeline-trackContainer{width:100%;overflow:auto;border-top:solid 1px #888;position:relative;top:0;left:0}.cesium-timeline-tracks{position:absolute;top:0;left:0;width:100%}.cesium-timeline-needle{position:absolute;left:0;top:1.7em;bottom:0;width:1px;background:red}.cesium-timeline-bar{position:relative;left:0;top:0;overflow:hidden;cursor:pointer;width:100%;height:1.7em;background:linear-gradient(to bottom,#747577cc,#3a4452cc 11%,#2e3238cc 46%,#353535cc 81% 100%)}.cesium-timeline-ruler{visibility:hidden;white-space:nowrap;font-size:80%;z-index:-200}.cesium-timeline-highlight{position:absolute;bottom:0;left:0;background:#08f}.cesium-timeline-ticLabel{position:absolute;top:0;left:0;white-space:nowrap;font-size:80%;color:#eee}.cesium-timeline-ticMain{position:absolute;bottom:0;left:0;width:1px;height:50%;background:#eee}.cesium-timeline-ticSub{position:absolute;bottom:0;left:0;width:1px;height:33%;background:#aaa}.cesium-timeline-ticTiny{position:absolute;bottom:0;left:0;width:1px;height:25%;background:#888}.cesium-timeline-icon16{display:block;position:absolute;width:16px;height:16px;background-image:url(data:text/plain;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAYAAAB3AH1ZAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sIDBITKIVzLEMAAAKNSURBVEjHxdXNSxRhHAfw7zzrqhuoWJnSkrippUVSEKsHI9BTUYdAJA/RoYMREV26rAdn6tAfUARi16hQqkOBQRgUEYFWEC3OwczMjdZd92VmdWfmeelgTjO7q7gb0VzmmZnn85vvPPPMM8B/3qTcE2PPpuTZKB1eWuUQACgXYACYwVFbCTTVeZXB/i55o4LFelcAZfStYD4vpAoPGAGo4GBcQEgSOAUMQyAezwK6iQfDPXnhS/FkHZ+/8VLMWxxqWkfH3gbMRNOYi2roavbja0zHQmoFPYf8ED4Ko4aivm9MOG/u9I8mwrafeK7a/tVrNc/bARYN5noadeq7q0342vXw9CIMU6BmW8rVP9cPBPe52uu+v3O/y9sB4gkTWs6Qsk0mj5ExXMelejvA8WafYmkmGPHanTijdtvif8rx5RiCjdWKs2Cp3jWRDl96KhrbqlBeJqBOLyLQXg0IgbkZDS0dO8EZxZfPSTA9jvDDK3mT0OmP1FXh3XwEEAKdTX5MRWLgjCK4pwH3xt/YnjgLHAv4lHTCAKMMu/wV+KZGob6PoKyMQ0+sgBpZVJZn0NterxQaVqef/DRn+/EXYds/mZx2eVeAW9d65dhCEsaKCb7K8HH0gqTevyh9GDkn0VULRiaLzJKGBu9swfdaiie5RVo9ESURN8E8BE0n7ggACJy8KzghSCzp6DmwWxkaCm24EBXr8wI8Hrkq06QBiRC0t24HALS11IBTCyJl4vb1AXmzpbVYTwoVOXN0h7L8Mwtm8bXPybIQ/5FCX3dA2cr6XowvGCA02CvztAnz9+JiZk1AMxG6fEreSoBiPNmoyNnuWiWVzAIAtISO08E6pZi/3N96AIDn4E3h3P8L/wshP+txtEs4JAAAAABJRU5ErkJggg==);background-repeat:no-repeat}.cesium-viewer{font-family:sans-serif;font-size:16px;overflow:hidden;display:block;position:relative;top:0;left:0;width:100%;height:100%}.cesium-viewer-cesiumWidgetContainer{width:100%;height:100%}.cesium-viewer-bottom{display:block;position:absolute;bottom:0;left:0;padding-right:5px}.cesium-viewer .cesium-widget-credits{display:inline;position:static;bottom:auto;left:auto;padding-right:0;color:#fff;font-size:10px;text-shadow:0 0 2px #000000}.cesium-viewer-timelineContainer{position:absolute;bottom:0;left:169px;right:29px;height:27px;padding:0;margin:0;overflow:hidden;font-size:14px}.cesium-viewer-animationContainer{position:absolute;bottom:0;left:0;padding:0;width:169px;height:112px}.cesium-viewer-fullscreenContainer,.cesium-viewer-vrContainer{position:absolute;bottom:0;right:0;padding:0;width:29px;height:29px;overflow:hidden}.cesium-viewer-toolbar{display:block;position:absolute;top:5px;right:5px}.cesium-viewer-cesiumInspectorContainer{display:block;position:absolute;top:50px;right:10px}.cesium-viewer-geocoderContainer{position:relative;display:inline-block;margin:0 3px}.cesium-viewer-cesium3DTilesInspectorContainer,.cesium-viewer-voxelInspectorContainer{display:block;position:absolute;top:50px;right:10px;max-height:calc(100% - 120px);box-sizing:border-box;overflow-y:auto;overflow-x:hidden}.cesium-viewer-i3s-explorer ul{list-style-type:none}.cesium-viewer-i3s-explorer .layersList{padding:0}.cesium-viewer-i3s-explorer input{margin:0 3px 0 0}.cesium-viewer-i3s-explorer .expandItem{cursor:pointer;-webkit-user-select:none;user-select:none;width:20px}.cesium-viewer-i3s-explorer .nested,.cesium-viewer-i3s-explorer #bsl-wrapper{display:none}.cesium-viewer-i3s-explorer .active{display:block}.cesium-viewer-i3s-explorer .li-wrapper{display:flex;flex-direction:row;align-content:center}.bim-engine-gis-container,.bim-engine-gis-container .cesium-viewer,.bim-engine-gis-container .cesium-viewer-cesiumWidgetContainer,.bim-engine-gis-container .cesium-widget,.bim-engine-gis-container canvas{width:100%;height:100%}.bim-engine-gis-container{position:relative;overflow:hidden;background:#111827}.bim-engine-gis-container .cesium-widget canvas{display:block}.bim-engine-gis-performance-monitor{position:absolute;top:8px;right:8px;z-index:1200;width:96px;padding:6px 8px;border:1px solid rgba(148,163,184,.32);border-radius:4px;background:#0f172ac7;color:#e5edf7;font-family:Consolas,Monaco,monospace;font-size:11px;line-height:15px;pointer-events:none;box-sizing:border-box}.bim-engine-gis-performance-row{display:flex;align-items:center;justify-content:space-between;gap:6px}.bim-engine-gis-performance-value{color:#7dd3fc;font-weight:700;text-align:right}
1
+ .originRotate{width:10px;height:10px;background-color:red}.versionText{position:absolute;right:10px;color:#86d9ff;z-index:1000;bottom:10px;font-size:10px;background:transparent;pointer-events:none}.originDiv{position:absolute;top:100px;left:100px;width:30px;height:30px;border-radius:50%;z-index:1000;pointer-events:none}.tagDiv{color:gray;background:#fffc;padding:5px;font-size:12px}.catchPoint{pointer-events:none;stroke:#08dfd7;fill:transparent;stroke-width:2}.catchLine{position:absolute;width:10px;height:10px;pointer-events:none;background-color:green}.catchPlane{position:absolute;width:10px;height:10px;pointer-events:none;background-color:#ff0}.bim-mobile-roam-controls{position:absolute;left:0;right:0;bottom:max(40px,env(safe-area-inset-bottom));z-index:1200;display:flex;align-items:flex-end;justify-content:space-between;padding:0 60px;pointer-events:none;user-select:none;-webkit-user-select:none;touch-action:none}.bim-mobile-roam-pad,.bim-mobile-roam-look-group,.bim-mobile-roam-vertical-pad{pointer-events:auto}.engine-3d-search{position:absolute;inset:0;z-index:1500;display:none;pointer-events:none}.engine-3d-search--visible{display:block}.engine-3d-search__box{position:absolute;top:14%;left:50%;width:min(480px,calc(100% - 32px));transform:translate(-50%);overflow:hidden;border:1px solid rgba(148,163,184,.42);border-radius:10px;background:#0f172af5;box-shadow:0 18px 40px #00000059;color:#e2e8f0;pointer-events:auto}.engine-3d-search__input-row{display:flex;align-items:center;height:48px;gap:10px;padding:0 12px}.engine-3d-search__icon{display:flex;color:#93c5fd}.engine-3d-search__input{min-width:0;flex:1;border:0;outline:0;background:transparent;color:#f8fafc;font-size:14px}.engine-3d-search__input::placeholder{color:#94a3b8}.engine-3d-search__clear{width:24px;height:24px;border:0;border-radius:50%;background:#94a3b833;color:#e2e8f0;font-size:18px;cursor:pointer}.engine-3d-search__status{min-height:28px;box-sizing:border-box;padding:6px 14px;border-top:1px solid rgba(148,163,184,.16);color:#94a3b8;font-size:12px}.engine-3d-search__list{max-height:300px;margin:0;padding:4px 0;overflow:auto;list-style:none}.engine-3d-search__pagination{display:none;align-items:center;justify-content:space-between;padding:8px 12px;border-top:1px solid rgba(148,163,184,.16);color:#94a3b8;font-size:12px}.engine-3d-search__page-button{border:0;border-radius:4px;padding:4px 8px;background:#94a3b833;color:inherit;cursor:pointer;font-size:12px}.engine-3d-search__page-button:disabled{cursor:not-allowed;opacity:.38}.engine-3d-search__item{display:flex;align-items:center;gap:8px;padding:9px 14px;cursor:pointer}.engine-3d-search__item:hover,.engine-3d-search__item--active{background:#3b82f633}.engine-3d-search__badge{flex:0 0 auto;padding:2px 5px;border-radius:3px;background:#3b82f638;color:#93c5fd;font-size:11px}.engine-3d-search__name{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.engine-3d-search__id{flex:0 1 120px;overflow:hidden;color:#94a3b8;text-align:right;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.engine-3d-search--light .engine-3d-search__box{border-color:#47556947;background:#fffffff7;box-shadow:0 18px 40px #0f172a2e;color:#172554}.engine-3d-search--light .engine-3d-search__input{color:#0f172a}.engine-3d-search--light .engine-3d-search__input::placeholder,.engine-3d-search--light .engine-3d-search__status,.engine-3d-search--light .engine-3d-search__id{color:#64748b}.engine-3d-search--light .engine-3d-search__clear{background:#e2e8f0;color:#334155}.engine-3d-search--light .engine-3d-search__status{border-top-color:#47556924}.engine-3d-search--light .engine-3d-search__pagination{border-top-color:#47556924;color:#64748b}.engine-3d-search--light .engine-3d-search__page-button{background:#e2e8f0;color:#334155}.engine-3d-search--light .engine-3d-search__item:hover,.engine-3d-search--light .engine-3d-search__item--active{background:#e0f2fe}.engine-3d-search--light .engine-3d-search__badge{background:#dbeafe;color:#1d4ed8}.bim-mobile-roam-move-pad{width:116px;height:116px;border:1px solid rgba(255,255,255,.34);border-radius:50%;display:flex;align-items:center;justify-content:center;background:#14182073;box-shadow:0 4px 16px #0000003d inset,0 4px 14px #0003;touch-action:none}.bim-mobile-roam-button{width:44px;height:44px;border:1px solid rgba(255,255,255,.46);border-radius:8px;color:#fff;background:#14182094;box-shadow:0 4px 14px #00000038;font-size:15px;font-weight:600;line-height:1;touch-action:none}.bim-mobile-roam-button.is-round{width:48px;height:48px;border-radius:50%;font-size:20px;font-weight:700;display:flex;align-items:center;justify-content:center}.bim-mobile-roam-button.is-active{background:#267effc7;border-color:#ffffffb8}.bim-mobile-roam-move-pad.is-active{border-color:#267effd6;background:#142c4a8a}.bim-mobile-roam-look-group{display:flex;align-items:center;gap:12px}.bim-mobile-roam-vertical-pad{display:flex;flex-direction:column;gap:10px;align-items:center}.bim-mobile-roam-look-pad{width:116px;height:116px;border:1px solid rgba(255,255,255,.34);border-radius:50%;display:flex;align-items:center;justify-content:center;background:#14182073;box-shadow:0 4px 16px #0000003d inset,0 4px 14px #0003;touch-action:none}.bim-mobile-roam-look-pad.is-active{border-color:#267effd6;background:#142c4a8a}.bim-mobile-roam-look-knob,.bim-mobile-roam-move-knob{width:46px;height:46px;border-radius:50%;background:#ffffffb8;box-shadow:0 2px 10px #00000042}@media(max-width:520px){.bim-mobile-roam-controls{padding:0 60px;bottom:max(40px,env(safe-area-inset-bottom))}.bim-mobile-roam-move-pad{width:96px;height:96px}.bim-mobile-roam-button{width:38px;height:38px;font-size:13px}.bim-mobile-roam-button.is-round{width:42px;height:42px;font-size:18px}.bim-mobile-roam-look-pad{width:96px;height:96px}.bim-mobile-roam-look-knob,.bim-mobile-roam-move-knob{width:38px;height:38px}}.ViewCube{position:absolute;width:120px;height:120px;top:0;right:0;z-index:999}.homeViewWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-size:100% 100%;background-repeat:no-repeat;background-color:#fff0;color:#fff;top:10px;right:100;width:20px;height:20px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.viewSettingWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-size:100% 100%;background-repeat:no-repeat;font-weight:800;background-color:#fff0;color:#fff;top:30px;right:100;width:20px;height:20px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.cameraToggleWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-color:#ffffffe6;color:#333;font-size:26px;font-weight:700;display:none;align-items:center;justify-content:center;border-radius:4px;box-shadow:0 2px 4px #0003;transition:all .3s ease;top:70px;right:90px;width:44px;height:44px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.cameraToggleWrapper.show{display:flex}.cameraToggleWrapper:hover{background-color:#fff;box-shadow:0 3px 6px #0000004d;transform:scale(1.1)}.screenshotWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-color:#ffffffe6;color:#333;font-size:20px;display:none;align-items:center;justify-content:center;border-radius:4px;box-shadow:0 2px 4px #0003;transition:all .3s ease;top:120px;right:90px;width:44px;height:44px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.screenshotWrapper.show{display:flex}.screenshotWrapper:hover{background-color:#fff;box-shadow:0 3px 6px #0000004d;transform:scale(1.1)}.fullscreenWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-color:#ffffffe6;color:#333;font-size:26px;font-weight:700;display:none;align-items:center;justify-content:center;border-radius:4px;box-shadow:0 2px 4px #0003;transition:all .3s ease;top:170px;right:90px;width:44px;height:44px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.fullscreenWrapper.show{display:flex}.fullscreenWrapper:hover{background-color:#fff;box-shadow:0 3px 6px #0000004d;transform:scale(1.1)}.measure-elevation{position:absolute;pointer-events:none}.measureSvg{position:absolute;width:1920px;height:1080px}.catch-point{position:absolute;width:10px;height:10px;background-color:red;border-radius:50%;pointer-events:none}.annotation-container{position:absolute;pointer-events:none;top:0;left:0}.measureLine{position:absolute;pointer-events:none;stroke:#009bea;fill:#009bea;filter:drop-shadow(0px 0px 2px rgba(0,0,0,.3))}.measureBack{cursor:pointer;pointer-events:auto;fill:#fff;rx:5;ry:5;filter:drop-shadow(0px 0px 3px rgba(0,0,0,.3));text-align:center}.measureLabel{position:absolute;fill:#fff;font-family:tahoma;font-size:14px;stroke:#009bea;font-weight:200;pointer-events:none;text-anchor:middle}.measurePointer{fill:#009bea}.Hight{stroke:#fff;font-weight:500;filter:drop-shadow(0px 0px 2px rgb(0,195,255))}.allow-select{pointer-events:auto}.disallow-select{pointer-events:none}.angle-annotation{position:absolute;pointer-events:auto}.measure-2d-selected.measureLine{stroke:#fff;fill:#fff;filter:drop-shadow(0 0 3px rgb(0,195,255))}.measure-2d-selected.measurePointer{fill:#fff;stroke:#00c3ff;stroke-width:2px;filter:drop-shadow(0 0 3px rgb(0,195,255))}.measure-2d-selected.measureBack{fill:#009bea;stroke:#fff;stroke-width:1px;filter:drop-shadow(0 0 4px rgb(0,195,255))}.measure-2d-selected.measureLabel{fill:#fff;stroke:none;font-weight:600}polygon.measure-2d-selected{fill:#00c3ff38}.markup-2d-layer{position:absolute;inset:0;pointer-events:none;z-index:30}.markup-2d-svg{position:absolute;inset:0;overflow:visible;pointer-events:none}.markup-2d-toolbar{position:absolute;top:8px;left:50%;transform:translate(-50%);display:none;align-items:center;gap:6px;padding:6px;background:#fff;border:1px solid #d9d9d9;border-radius:8px;box-shadow:0 4px 14px #00000024;pointer-events:auto;-webkit-user-select:none;user-select:none;z-index:1300}.markup-2d-toolbar button,.markup-2d-toolbar input{height:28px;border:1px solid #d9d9d9;border-radius:4px;background:#fff;color:#1f2937;font-size:12px}.markup-2d-toolbar button{width:28px;min-width:28px;padding:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.markup-2d-toolbar button:hover,.markup-2d-toolbar button.active{color:#1677ff;border-color:#1677ff;background:#eef6ff}.markup-2d-toolbar input[type=color]{width:34px;padding:2px}.markup-2d-toolbar input[type=number]{width:54px;padding:0 4px}.markup-2d-icon-button img{width:16px;height:16px;display:block;pointer-events:none}.markup-2d-divider{width:1px;height:22px;background:#e5e7eb}.markup-2d-shape{pointer-events:auto;cursor:pointer}.markup-2d-shape.selected{filter:drop-shadow(0 0 4px rgba(22,119,255,.9))}.MapController{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.engine-2d-container{position:relative;width:100%;height:100%;overflow:hidden}.engine-2d-canvas{display:block;width:100%;height:100%;outline:none}.engine-2d-version-text{position:absolute;right:10px;bottom:0;z-index:1000;color:#86d9ff;font-size:10px;background:transparent;pointer-events:none}.engine-2d-cad-cursor{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden}.engine-2d-cad-cursor__h{position:absolute;left:0;width:100%;height:1px;background:var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translateY(-50%)}.engine-2d-cad-cursor__v{position:absolute;top:0;width:1px;height:100%;background:var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translate(-50%)}.engine-2d-cad-cursor__box{position:absolute;width:8px;height:8px;border:1px solid var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translate(-50%,-50%)}.engine-2d-cad-cursor--short-crosshair .engine-2d-cad-cursor__h{width:72px;left:0;transform:translate(-50%,-50%)}.engine-2d-cad-cursor--short-crosshair .engine-2d-cad-cursor__v{height:72px;top:0;transform:translate(-50%,-50%)}.engine-2d-context-menu{position:absolute;z-index:9999;min-width:140px;background:var(--e2d-bg2, #252526);border:1px solid var(--e2d-border, rgba(255, 255, 255, .12));border-radius:4px;box-shadow:0 4px 16px var(--e2d-shadow, rgba(0, 0, 0, .5));padding:4px 0;display:none;-webkit-user-select:none;user-select:none}.engine-2d-context-menu--visible{display:block}.engine-2d-context-menu__item{padding:7px 16px;font-size:13px;color:var(--e2d-text2, #cccccc);cursor:pointer;white-space:nowrap;transition:background .1s,color .1s}.engine-2d-context-menu__item:hover{background:var(--e2d-bg-accent, #094771);color:var(--e2d-text-accent, #ffffff)}.engine-2d-context-menu__divider{height:1px;background:var(--e2d-border, rgba(255, 255, 255, .1));margin:4px 0}.engine-2d-stats{position:absolute;top:10px;left:10px;background:var(--e2d-float-bg, rgba(0, 0, 0, .7));color:var(--e2d-text, #e0e0e0);padding:8px 12px;border-radius:4px;font-family:monospace;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none}.engine-2d-stats div{margin:2px 0}.engine-2d-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--e2d-float-bg, rgba(0, 0, 0, .8));color:var(--e2d-text, #e0e0e0);padding:20px 40px;border-radius:8px;font-size:16px;text-align:center}.engine-2d-loading-spinner{border:3px solid var(--e2d-border, rgba(255, 255, 255, .3));border-top:3px solid var(--e2d-accent, #4fc3f7);border-radius:50%;width:40px;height:40px;animation:engine-2d-spin 1s linear infinite;margin:0 auto 10px}@keyframes engine-2d-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.engine-2d-error{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#d32f2feb;color:#fff;padding:20px 40px;border-radius:8px;font-size:14px;max-width:80%;text-align:center}.engine-2d-controls-hint{position:absolute;bottom:10px;left:10px;background:var(--e2d-float-bg, rgba(0, 0, 0, .6));color:var(--e2d-text, #e0e0e0);border:1px solid var(--e2d-float-border, rgba(255, 255, 255, .08));padding:8px 12px;border-radius:4px;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none}.engine-2d-controls-hint kbd{background:var(--e2d-icon-bg, rgba(255, 255, 255, .2));color:var(--e2d-text, #e0e0e0);padding:2px 6px;border-radius:3px;font-family:monospace}.engine-2d-workspace-tabs{position:absolute;left:12px;bottom:10px;z-index:40;display:flex;align-items:center;max-width:calc(100% - 24px);overflow-x:auto;background:var(--e2d-bg2, rgba(28, 33, 40, .92));border:1px solid var(--e2d-border, rgba(255, 255, 255, .14));border-radius:4px;box-shadow:0 4px 14px var(--e2d-shadow, rgba(0, 0, 0, .28))}.engine-2d-workspace-tabs__item{flex:0 0 auto;max-width:180px;height:28px;padding:0 12px;border:0;border-right:1px solid var(--e2d-border2, rgba(255, 255, 255, .1));background:transparent;color:var(--e2d-text2, #d7dde4);font-size:12px;line-height:28px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.engine-2d-workspace-tabs__item:last-child{border-right:0}.engine-2d-workspace-tabs__item:hover:not(:disabled){background:var(--e2d-bg-hover, rgba(79, 195, 247, .12));color:var(--e2d-text-accent, #ffffff)}.engine-2d-workspace-tabs__item--active{background:var(--e2d-accent, #2f80ed);color:#fff;cursor:default}.engine-2d-workspace-tabs__item:disabled{opacity:.9}.engine-2d-search{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998;display:none}.engine-2d-search--visible{display:block}.engine-2d-search__box{position:absolute;top:14%;left:50%;transform:translate(-50%);width:480px;max-width:calc(100% - 40px);background:var(--e2d-bg, #1e1f22);border:1px solid var(--e2d-border, rgba(255, 255, 255, .14));border-radius:10px;box-shadow:0 8px 40px var(--e2d-shadow-lg, rgba(0, 0, 0, .65)),0 2px 8px var(--e2d-shadow, rgba(0, 0, 0, .4));overflow:hidden;pointer-events:auto;animation:engine-2d-search-in .18s cubic-bezier(.34,1.2,.64,1)}@keyframes engine-2d-search-in{0%{opacity:0;transform:translate(-50%) translateY(-8px) scale(.97)}to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}.engine-2d-search__input-row{display:flex;align-items:center;padding:0 12px;gap:8px;height:48px}.engine-2d-search__icon{flex-shrink:0;color:var(--e2d-icon, rgba(255, 255, 255, .4));display:flex;align-items:center}.engine-2d-search__input{flex:1;background:transparent;border:none;outline:none;color:var(--e2d-text, #e0e0e0);font-size:14px;line-height:1.4;caret-color:var(--e2d-accent, #4fc3f7)}.engine-2d-search__input::placeholder{color:var(--e2d-text3, rgba(255, 255, 255, .25))}.engine-2d-search__clear{flex-shrink:0;background:var(--e2d-icon-bg, rgba(255, 255, 255, .08));border:none;border-radius:4px;color:var(--e2d-icon, rgba(255, 255, 255, .5));cursor:pointer;display:flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;opacity:0;pointer-events:none;transition:opacity .15s,background .15s,color .15s}.engine-2d-search__clear:hover{background:var(--e2d-icon-bg-hover, rgba(255, 255, 255, .16));color:var(--e2d-close-hover, #ffffff)}.engine-2d-search__divider{height:1px;background:var(--e2d-border2, rgba(255, 255, 255, .08));display:none}.engine-2d-search__status{padding:6px 16px;font-size:11px;color:var(--e2d-text3, rgba(255, 255, 255, .35));display:none;-webkit-user-select:none;user-select:none}.engine-2d-search__list{list-style:none;margin:0;padding:4px 0;max-height:320px;overflow-y:auto;display:none;scrollbar-width:thin;scrollbar-color:var(--e2d-scrollbar, rgba(255, 255, 255, .15)) transparent}.engine-2d-search__list::-webkit-scrollbar{width:4px}.engine-2d-search__list::-webkit-scrollbar-track{background:transparent}.engine-2d-search__list::-webkit-scrollbar-thumb{background:var(--e2d-scrollbar, rgba(255, 255, 255, .15));border-radius:2px}.engine-2d-search__item{display:flex;align-items:center;gap:8px;padding:8px 14px;cursor:pointer;transition:background .1s;min-height:38px;flex-wrap:nowrap}.engine-2d-search__item:hover,.engine-2d-search__item--active{background:var(--e2d-bg-hover, rgba(79, 195, 247, .08))}.engine-2d-search__item-badge{flex-shrink:0;font-size:10px;font-weight:500;padding:2px 6px;border-radius:3px;letter-spacing:.03em;white-space:nowrap;color:var(--e2d-accent, #4fc3f7);background:#4fc3f71f}.engine-2d-search__item-name{flex:1;font-size:13px;color:var(--e2d-text, #e0e0e0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__item-layer{flex-shrink:0;font-size:11px;color:var(--e2d-text3, rgba(255, 255, 255, .3));white-space:nowrap;max-width:100px;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__item-desc{flex-shrink:0;font-size:11px;color:var(--e2d-text4, rgba(255, 255, 255, .25));white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__mark{background:transparent;color:var(--e2d-accent, #4fc3f7);font-weight:600}.engine-2d-mouse-coord{position:absolute;bottom:10px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;background:var(--e2d-float-bg, rgba(0, 0, 0, .65));color:var(--e2d-text, #e0e0e0);padding:5px 14px;border-radius:4px;font-family:monospace;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none;border:1px solid var(--e2d-float-border, rgba(255, 255, 255, .08))}.engine-2d-mouse-coord__label{color:var(--e2d-coord-label, rgba(255, 255, 255, .45));font-size:11px;letter-spacing:.05em}.engine-2d-mouse-coord__value{min-width:90px;color:var(--e2d-coord-value, #76c8ff)}.panorama-annotation-container{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1000;overflow:hidden}.panorama-annotation{position:absolute;pointer-events:auto;cursor:pointer;transform:translate(-50%,-50%);transition:opacity .2s ease,transform .2s ease;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.panorama-annotation:hover{z-index:1001;transform:translate(-50%,-50%) scale(1.1)}.panorama-annotation-icon{width:40px;height:40px}.panorama-annotation-icon img{width:100%;height:100%;object-fit:contain;display:block;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}.panorama-annotation-text{max-width:200px;text-align:center;line-height:1.4}.panorama-annotation-link{transition:background-color .2s ease,transform .2s ease}.panorama-annotation-link:hover{z-index:1002}.panorama-annotation-link img{display:block;flex-shrink:0}.panorama-annotation.hidden{display:none!important}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.panorama-annotation.loading{animation:pulse 1.5s ease-in-out infinite}@media(max-width:768px){.panorama-annotation-icon{width:32px;height:32px}.panorama-annotation-text,.panorama-annotation-link{font-size:12px!important;padding:6px 10px!important}}.cesium-svgPath-svg{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden}.cesium-button{display:inline-block;position:relative;background:#303336;border:1px solid #444;color:#edffff;fill:#edffff;border-radius:4px;padding:5px 12px;margin:2px 3px;cursor:pointer;overflow:hidden;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cesium-button:focus{color:#fff;fill:#fff;border-color:#ea4;outline:none}.cesium-button:hover{color:#fff;fill:#fff;background:#48b;border-color:#aef;box-shadow:0 0 8px #fff}.cesium-button:active{color:#000;fill:#000;background:#adf;border-color:#fff;box-shadow:0 0 8px #fff}.cesium-button:disabled,.cesium-button-disabled,.cesium-button-disabled:focus,.cesium-button-disabled:hover,.cesium-button-disabled:active{background:#303336;border-color:#444;color:#646464;fill:#646464;box-shadow:none;cursor:default}.cesium-button option{background-color:#000;color:#eee}.cesium-button option:disabled{color:#777}.cesium-button input,.cesium-button label{cursor:pointer}.cesium-button input{vertical-align:sub}.cesium-toolbar-button{box-sizing:border-box;width:32px;height:32px;border-radius:14%;padding:0;vertical-align:middle;z-index:0}.cesium-performanceDisplay-defaultContainer{position:absolute;top:50px;right:10px;text-align:right}.cesium-performanceDisplay{background-color:#282828b3;padding:7px;border-radius:5px;border:1px solid #444;font:700 12px sans-serif}.cesium-performanceDisplay-fps{color:#e52}.cesium-performanceDisplay-throttled{color:#a42}.cesium-performanceDisplay-ms{color:#de3}.cesium-animation-theme{visibility:hidden;display:block;position:absolute;z-index:-100}.cesium-animation-themeNormal{color:#222}.cesium-animation-themeHover{color:#4488b0}.cesium-animation-themeSelect{color:#242}.cesium-animation-themeDisabled{color:#333}.cesium-animation-themeKnob{color:#222}.cesium-animation-themePointer{color:#2e2}.cesium-animation-themeSwoosh{color:#8ac}.cesium-animation-themeSwooshHover{color:#aef}.cesium-animation-svgText{fill:#edffff;font-family:Sans-Serif;font-size:15px;text-anchor:middle}.cesium-animation-blank{fill:#000;fill-opacity:.01;stroke:none}.cesium-animation-rectButton{cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cesium-animation-rectButton .cesium-animation-buttonGlow{fill:#fff;stroke:none;display:none}.cesium-animation-rectButton:hover .cesium-animation-buttonGlow{display:block}.cesium-animation-rectButton .cesium-animation-buttonPath{fill:#edffff}.cesium-animation-rectButton .cesium-animation-buttonMain{stroke:#444;stroke-width:1.2}.cesium-animation-rectButton:hover .cesium-animation-buttonMain{stroke:#aef}.cesium-animation-rectButton:active .cesium-animation-buttonMain{fill:#abd6ff}.cesium-animation-buttonDisabled{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cesium-animation-buttonDisabled .cesium-animation-buttonMain{stroke:#555}.cesium-animation-buttonDisabled .cesium-animation-buttonPath{fill:#818181}.cesium-animation-buttonDisabled .cesium-animation-buttonGlow{display:none}.cesium-animation-buttonToggled .cesium-animation-buttonGlow{display:block;fill:#2e2}.cesium-animation-buttonToggled .cesium-animation-buttonMain{stroke:#2e2}.cesium-animation-buttonToggled:hover .cesium-animation-buttonGlow{fill:#fff}.cesium-animation-buttonToggled:hover .cesium-animation-buttonMain{stroke:#2e2}.cesium-animation-shuttleRingG,.cesium-animation-shuttleRingPointer,.cesium-animation-shuttleRingPausePointer{cursor:pointer}.cesium-animation-shuttleRingBack{fill:#181818;fill-opacity:.8;stroke:#333;stroke-width:1.2}.cesium-animation-shuttleRingSwoosh line{stroke:#8ac;stroke-width:3;stroke-opacity:.2;stroke-linecap:round}.cesium-animation-knobOuter{cursor:pointer;stroke:#444;stroke-width:1.2}.cesium-animation-knobInner{cursor:pointer}.cesium-baseLayerPicker-selected{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.cesium-baseLayerPicker-dropDown{display:block;position:absolute;box-sizing:content-box;top:auto;right:0;width:320px;max-height:500px;margin-top:5px;background-color:#262626bf;border:1px solid #444;padding:6px;overflow:auto;border-radius:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;transform:translateY(-20%);visibility:hidden;opacity:0;transition:visibility 0s .2s,opacity .2s ease-in,transform .2s ease-in}.cesium-baseLayerPicker-dropDown-visible{transform:translate(0);visibility:visible;opacity:1;transition:opacity .2s ease-out,transform .2s ease-out}.cesium-baseLayerPicker-sectionTitle{display:block;font-family:sans-serif;font-size:16pt;text-align:left;color:#edffff;margin-bottom:4px}.cesium-baseLayerPicker-choices{margin-bottom:5px}.cesium-baseLayerPicker-categoryTitle{color:#edffff;font-size:11pt}.cesium-baseLayerPicker-choices{display:block;border:1px solid #888;border-radius:5px;padding:5px 0}.cesium-baseLayerPicker-item{display:inline-block;vertical-align:top;margin:2px 5px;width:64px;text-align:center;cursor:pointer}.cesium-baseLayerPicker-itemLabel{display:block;font-family:sans-serif;font-size:8pt;text-align:center;vertical-align:middle;color:#edffff;cursor:pointer;word-wrap:break-word}.cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemLabel,.cesium-baseLayerPicker-item:focus .cesium-baseLayerPicker-itemLabel{text-decoration:underline}.cesium-baseLayerPicker-itemIcon{display:inline-block;position:relative;width:inherit;height:auto;background-size:100% 100%;border:solid 1px #444;border-radius:9px;color:#edffff;margin:0;padding:0;cursor:pointer;box-sizing:border-box}.cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemIcon{border-color:#fff;box-shadow:0 0 8px #fff,0 0 8px #fff}.cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemLabel{color:#bdecf8}.cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemIcon{border:double 4px rgb(189,236,248)}.cesium-widget{font-family:sans-serif;font-size:16px;overflow:hidden;display:block;position:relative;top:0;left:0;width:100%;height:100%}.cesium-widget,.cesium-widget canvas{width:100%;height:100%;touch-action:none}.cesium-widget-credits{display:block;position:absolute;bottom:0;left:0;color:#fff;font-size:10px;text-shadow:0px 0px 2px #000000;padding-right:5px}.cesium-widget-errorPanel{position:absolute;inset:0;text-align:center;background:#000000b3;z-index:99999}.cesium-widget-errorPanel:before{display:inline-block;vertical-align:middle;height:100%;content:""}.cesium-widget-errorPanel-content{width:75%;max-width:500px;display:inline-block;text-align:left;vertical-align:middle;border:1px solid #510c00;border-radius:7px;background-color:#f0d9d5;font-size:14px;color:#510c00}.cesium-widget-errorPanel-content.expanded{max-width:75%}.cesium-widget-errorPanel-header{font-size:18px;font-family:Open Sans,Verdana,Geneva,sans-serif;background:#d69d93;border-bottom:2px solid #510c00;border-radius:3px 3px 0 0;padding:15px}.cesium-widget-errorPanel-scroll{overflow:auto;font-family:Open Sans,Verdana,Geneva,sans-serif;white-space:pre-wrap;padding:0 15px;margin:10px 0 20px}.cesium-widget-errorPanel-buttonPanel{padding:0 15px;margin:10px 0 20px;text-align:right}.cesium-widget-errorPanel-buttonPanel button{border-color:#510c00;background:#d69d93;color:#202020;margin:0}.cesium-widget-errorPanel-buttonPanel button:focus{border-color:#510c00;background:#f0d9d5;color:#510c00}.cesium-widget-errorPanel-buttonPanel button:hover{border-color:#510c00;background:#f0d9d5;color:#510c00}.cesium-widget-errorPanel-buttonPanel button:active{border-color:#510c00;background:#b17b72;color:#510c00}.cesium-widget-errorPanel-more-details{text-decoration:underline;cursor:pointer}.cesium-widget-errorPanel-more-details:hover{color:#2b0700}.cesium-cesiumInspector{border-radius:5px;transition:width ease-in-out .25s;background:#303336cc;border:1px solid #444;color:#edffff;display:inline-block;position:relative;padding:4px 12px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden}.cesium-cesiumInspector-button{text-align:center;font-size:11pt}.cesium-cesiumInspector-visible .cesium-cesiumInspector-button{border-bottom:1px solid #aaa;padding-bottom:3px}.cesium-cesiumInspector input:enabled,.cesium-cesiumInspector-button{cursor:pointer}.cesium-cesiumInspector-visible{width:185px;height:auto}.cesium-cesiumInspector-hidden{width:122px;height:17px}.cesium-cesiumInspector-sectionContent{max-height:600px}.cesium-cesiumInspector-section-collapsed .cesium-cesiumInspector-sectionContent{max-height:0;padding:0!important;overflow:hidden}.cesium-cesiumInspector-dropDown{margin:5px 0;font-family:sans-serif;font-size:10pt;width:185px}.cesium-cesiumInspector-frustumStatistics{padding:5px;background-color:#505050bf}.cesium-cesiumInspector-pickButton{background-color:#0000004d;border:1px solid #444;color:#edffff;border-radius:5px;padding:3px 7px;cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;margin:0 auto}.cesium-cesiumInspector-pickButton:focus{outline:none}.cesium-cesiumInspector-pickButton:active,.cesium-cesiumInspector-pickButtonHighlight{color:#000;background:#adf;border-color:#fff;box-shadow:0 0 8px #fff}.cesium-cesiumInspector-center{text-align:center}.cesium-cesiumInspector-sectionHeader{font-weight:700;font-size:10pt;margin:0;cursor:pointer}.cesium-cesiumInspector-pickSection{border:1px solid #aaa;border-radius:5px;padding:3px;margin-bottom:5px}.cesium-cesiumInspector-sectionContent{margin-bottom:10px;transition:max-height .25s}.cesium-cesiumInspector-tileText{padding-bottom:10px;border-bottom:1px solid #aaa}.cesium-cesiumInspector-relativeText{padding-top:10px}.cesium-cesiumInspector-sectionHeader:before{margin-right:5px;content:"-";width:1ch;display:inline-block}.cesium-cesiumInspector-section-collapsed .cesium-cesiumInspector-sectionHeader:before{content:"+"}ul.cesium-cesiumInspector-statistics{margin:0;padding-top:3px;padding-bottom:3px}ul.cesium-cesiumInspector-statistics+ul.cesium-cesiumInspector-statistics{border-top:1px solid #aaa}.cesium-cesiumInspector-slider{margin-top:5px}.cesium-cesiumInspector-slider input[type=number]{text-align:left;background-color:#222;outline:none;border:1px solid #444;color:#edffff;width:100px;border-radius:3px;padding:1px;margin-left:10px;cursor:auto}.cesium-cesiumInspector-slider input[type=number]::-webkit-outer-spin-button,.cesium-cesiumInspector-slider input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.cesium-cesiumInspector-slider input[type=range]{margin-left:5px;vertical-align:middle}.cesium-cesiumInspector-hide .cesium-cesiumInspector-styleEditor{display:none}.cesium-cesiumInspector-styleEditor{padding:10px;border-radius:5px;background:#303336cc;border:1px solid #444}.cesium-cesiumInspector-styleEditor textarea{width:100%;height:300px;background:transparent;color:#edffff;border:none;padding:0;white-space:pre;overflow-wrap:normal;overflow-x:auto}.cesium-3DTilesInspector{width:300px;pointer-events:all}.cesium-3DTilesInspector-statistics{font-size:11px}.cesium-3DTilesInspector-disabledElementsInfo{margin:5px 0 0;padding:0 0 0 20px;color:#eed202}.cesium-3DTilesInspector div,.cesium-3DTilesInspector input[type=range]{width:100%;box-sizing:border-box}.cesium-cesiumInspector-error{color:#ff9e9e;overflow:auto}.cesium-3DTilesInspector .cesium-cesiumInspector-section{margin-top:3px}.cesium-3DTilesInspector .cesium-cesiumInspector-sectionHeader+.cesium-cesiumInspector-show{border-top:1px solid white}input.cesium-cesiumInspector-url{overflow:hidden;white-space:nowrap;overflow-x:scroll;background-color:transparent;color:#fff;outline:none;border:none;height:1em;width:100%}.cesium-cesiumInspector .field-group{display:table}.cesium-cesiumInspector .field-group>label{display:table-cell;font-weight:700}.cesium-cesiumInspector .field-group>.field{display:table-cell;width:100%}.cesium-VoxelInspector{width:300px;pointer-events:all}.cesium-VoxelInspector div,.cesium-VoxelInspector input[type=range]{width:100%;box-sizing:border-box}.cesium-VoxelInspector .cesium-cesiumInspector-section{margin-top:3px}.cesium-VoxelInspector .cesium-cesiumInspector-sectionHeader+.cesium-cesiumInspector-show{border-top:1px solid white}.cesium-button.cesium-fullscreenButton,.cesium-button.cesium-vrButton{display:block;width:100%;height:100%;margin:0;border-radius:0}.cesium-viewer-geocoderContainer .cesium-geocoder-input{border:solid 1px #444;background-color:#282828b3;color:#fff;display:inline-block;vertical-align:middle;width:0;height:32px;margin:0;padding:0 32px 0 0;border-radius:0;box-sizing:border-box;transition:width ease-in-out .25s,background-color .2s ease-in-out;-webkit-appearance:none}.cesium-viewer-geocoderContainer:hover .cesium-geocoder-input{border-color:#aef;box-shadow:0 0 8px #fff}.cesium-viewer-geocoderContainer .cesium-geocoder-input:focus{border-color:#ea4;background-color:#0f0f0fe6;box-shadow:none;outline:none}.cesium-viewer-geocoderContainer:hover .cesium-geocoder-input,.cesium-viewer-geocoderContainer .cesium-geocoder-input:focus,.cesium-viewer-geocoderContainer .cesium-geocoder-input-wide{padding-left:4px;width:250px}.cesium-viewer-geocoderContainer .search-results{position:absolute;background-color:#000;color:#eee;overflow-y:auto;opacity:.8;width:100%}.cesium-viewer-geocoderContainer .search-results ul{list-style-type:none;margin:0;padding:0}.cesium-viewer-geocoderContainer .search-results ul li{font-size:14px;padding:3px 10px}.cesium-viewer-geocoderContainer .search-results ul li:hover{cursor:pointer}.cesium-viewer-geocoderContainer .search-results ul li.active{background:#48b}.cesium-geocoder-searchButton{background-color:#303336;display:inline-block;position:absolute;cursor:pointer;width:32px;top:1px;right:1px;height:30px;vertical-align:middle;fill:#edffff}.cesium-geocoder-searchButton:hover{background-color:#48b}.cesium-infoBox{display:block;position:absolute;top:50px;right:0;width:40%;max-width:480px;background:#262626f2;color:#edffff;border:1px solid #444;border-right:none;border-top-left-radius:7px;border-bottom-left-radius:7px;box-shadow:0 0 10px 1px #000;transform:translate(100%);visibility:hidden;opacity:0;transition:visibility 0s .2s,opacity .2s ease-in,transform .2s ease-in}.cesium-infoBox-visible{transform:translate(0);visibility:visible;opacity:1;transition:opacity .2s ease-out,transform .2s ease-out}.cesium-infoBox-title{display:block;height:20px;padding:5px 30px 5px 25px;background:#545454;border-top-left-radius:7px;text-align:center;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;box-sizing:content-box}.cesium-infoBox-bodyless .cesium-infoBox-title{border-bottom-left-radius:7px}button.cesium-infoBox-camera{display:block;position:absolute;top:4px;left:4px;width:22px;height:22px;background:transparent;border-color:transparent;border-radius:3px;padding:0 5px;margin:0}button.cesium-infoBox-close{display:block;position:absolute;top:5px;right:5px;height:20px;background:transparent;border:none;border-radius:2px;font-weight:700;font-size:16px;padding:0 5px;margin:0;color:#edffff}button.cesium-infoBox-close:focus{background:#ee880070;outline:none}button.cesium-infoBox-close:hover{background:#888;color:#000}button.cesium-infoBox-close:active{background:#a00;color:#000}.cesium-infoBox-bodyless .cesium-infoBox-iframe{display:none}.cesium-infoBox-iframe{border:none;width:100%;width:calc(100% - 2px)}span.cesium-sceneModePicker-wrapper{display:inline-block;position:relative;margin:0 3px}.cesium-sceneModePicker-visible{visibility:visible;opacity:1;transition:opacity .25s linear}.cesium-sceneModePicker-hidden{visibility:hidden;opacity:0;transition:visibility 0s .25s,opacity .25s linear}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-none{display:none}.cesium-sceneModePicker-slide-svg{transition:left 2s;top:0;left:0}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-dropDown-icon{box-sizing:border-box;padding:0;margin:3px 0}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D,.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView,.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D{margin:0 0 3px}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-icon2D{left:100%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-iconColumbusView{left:200%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon3D{left:-200%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon2D,.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-icon3D{left:-100%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-iconColumbusView{left:100%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-selected{border-color:#2e2;box-shadow:0 0 8px #fff,0 0 8px #fff}span.cesium-projectionPicker-wrapper{display:inline-block;position:relative;margin:0 3px}.cesium-projectionPicker-visible{visibility:visible;opacity:1;transition:opacity .25s linear}.cesium-projectionPicker-hidden{visibility:hidden;opacity:0;transition:visibility 0s .25s,opacity .25s linear}.cesium-projectionPicker-wrapper .cesium-projectionPicker-none{display:none}.cesium-projectionPicker-wrapper .cesium-projectionPicker-dropDown-icon{box-sizing:border-box;padding:0;margin:3px 0}.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonPerspective,.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonOrthographic{margin:0 0 3px}.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonPerspective .cesium-projectionPicker-iconOrthographic{left:100%}.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonOrthographic .cesium-projectionPicker-iconPerspective{left:-100%}.cesium-projectionPicker-wrapper .cesium-projectionPicker-selected{border-color:#2e2;box-shadow:0 0 8px #fff,0 0 8px #fff}.cesium-performance-watchdog-message-area{position:relative;background-color:#ff0;color:#000;padding:10px}.cesium-performance-watchdog-message{margin-right:30px}.cesium-performance-watchdog-message-dismiss{position:absolute;right:0;margin:0 10px 0 0}.cesium-navigationHelpButton-wrapper{position:relative;display:inline-block}.cesium-navigation-help{visibility:hidden;position:absolute;top:38px;right:2px;width:250px;border-radius:10px;transform:scale(.01);transform-origin:234px -10px;transition:visibility 0s .25s,transform .25s ease-in}.cesium-navigation-help-visible{visibility:visible;transform:scale(1);transition:transform .25s ease-out}.cesium-navigation-help-instructions{border:1px solid #444;background-color:#262626bf;padding-bottom:5px;border-radius:0 0 10px 10px}.cesium-click-navigation-help{display:none}.cesium-touch-navigation-help{display:none;padding-top:5px}.cesium-click-navigation-help-visible,.cesium-touch-navigation-help-visible{display:block}.cesium-navigation-help-pan{color:#6cf;font-weight:700}.cesium-navigation-help-zoom{color:#65fd00;font-weight:700}.cesium-navigation-help-rotate{color:#ffd800;font-weight:700}.cesium-navigation-help-tilt{color:#d800d8;font-weight:700}.cesium-navigation-help-details{color:#fff}.cesium-navigation-button{color:#fff;background-color:transparent;border-bottom:none;border-top:1px solid #444;border-right:1px solid #444;margin:0;width:50%;cursor:pointer}.cesium-navigation-button-icon{vertical-align:middle;padding:5px 1px}.cesium-navigation-button:focus{outline:none}.cesium-navigation-button-left{border-radius:10px 0 0;border-left:1px solid #444}.cesium-navigation-button-right{border-radius:0 10px 0 0;border-left:none}.cesium-navigation-button-selected{background-color:#262626bf}.cesium-navigation-button-unselected{background-color:#000000bf}.cesium-navigation-button-unselected:hover{background-color:#4c4c4cbf}.cesium-selection-wrapper{position:absolute;width:160px;height:160px;pointer-events:none;visibility:hidden;opacity:0;transition:visibility 0s .2s,opacity .2s ease-in}.cesium-selection-wrapper-visible{visibility:visible;opacity:1;transition:opacity .2s ease-out}.cesium-selection-wrapper svg{fill:#2e2;stroke:#000;stroke-width:1.1px}.cesium-timeline-main{position:relative;left:0;bottom:0;overflow:hidden;border:solid 1px #888;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cesium-timeline-trackContainer{width:100%;overflow:auto;border-top:solid 1px #888;position:relative;top:0;left:0}.cesium-timeline-tracks{position:absolute;top:0;left:0;width:100%}.cesium-timeline-needle{position:absolute;left:0;top:1.7em;bottom:0;width:1px;background:red}.cesium-timeline-bar{position:relative;left:0;top:0;overflow:hidden;cursor:pointer;width:100%;height:1.7em;background:linear-gradient(to bottom,#747577cc,#3a4452cc 11%,#2e3238cc 46%,#353535cc 81% 100%)}.cesium-timeline-ruler{visibility:hidden;white-space:nowrap;font-size:80%;z-index:-200}.cesium-timeline-highlight{position:absolute;bottom:0;left:0;background:#08f}.cesium-timeline-ticLabel{position:absolute;top:0;left:0;white-space:nowrap;font-size:80%;color:#eee}.cesium-timeline-ticMain{position:absolute;bottom:0;left:0;width:1px;height:50%;background:#eee}.cesium-timeline-ticSub{position:absolute;bottom:0;left:0;width:1px;height:33%;background:#aaa}.cesium-timeline-ticTiny{position:absolute;bottom:0;left:0;width:1px;height:25%;background:#888}.cesium-timeline-icon16{display:block;position:absolute;width:16px;height:16px;background-image:url(data:text/plain;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAYAAAB3AH1ZAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sIDBITKIVzLEMAAAKNSURBVEjHxdXNSxRhHAfw7zzrqhuoWJnSkrippUVSEKsHI9BTUYdAJA/RoYMREV26rAdn6tAfUARi16hQqkOBQRgUEYFWEC3OwczMjdZd92VmdWfmeelgTjO7q7gb0VzmmZnn85vvPPPMM8B/3qTcE2PPpuTZKB1eWuUQACgXYACYwVFbCTTVeZXB/i55o4LFelcAZfStYD4vpAoPGAGo4GBcQEgSOAUMQyAezwK6iQfDPXnhS/FkHZ+/8VLMWxxqWkfH3gbMRNOYi2roavbja0zHQmoFPYf8ED4Ko4aivm9MOG/u9I8mwrafeK7a/tVrNc/bARYN5noadeq7q0342vXw9CIMU6BmW8rVP9cPBPe52uu+v3O/y9sB4gkTWs6Qsk0mj5ExXMelejvA8WafYmkmGPHanTijdtvif8rx5RiCjdWKs2Cp3jWRDl96KhrbqlBeJqBOLyLQXg0IgbkZDS0dO8EZxZfPSTA9jvDDK3mT0OmP1FXh3XwEEAKdTX5MRWLgjCK4pwH3xt/YnjgLHAv4lHTCAKMMu/wV+KZGob6PoKyMQ0+sgBpZVJZn0NterxQaVqef/DRn+/EXYds/mZx2eVeAW9d65dhCEsaKCb7K8HH0gqTevyh9GDkn0VULRiaLzJKGBu9swfdaiie5RVo9ESURN8E8BE0n7ggACJy8KzghSCzp6DmwWxkaCm24EBXr8wI8Hrkq06QBiRC0t24HALS11IBTCyJl4vb1AXmzpbVYTwoVOXN0h7L8Mwtm8bXPybIQ/5FCX3dA2cr6XowvGCA02CvztAnz9+JiZk1AMxG6fEreSoBiPNmoyNnuWiWVzAIAtISO08E6pZi/3N96AIDn4E3h3P8L/wshP+txtEs4JAAAAABJRU5ErkJggg==);background-repeat:no-repeat}.cesium-viewer{font-family:sans-serif;font-size:16px;overflow:hidden;display:block;position:relative;top:0;left:0;width:100%;height:100%}.cesium-viewer-cesiumWidgetContainer{width:100%;height:100%}.cesium-viewer-bottom{display:block;position:absolute;bottom:0;left:0;padding-right:5px}.cesium-viewer .cesium-widget-credits{display:inline;position:static;bottom:auto;left:auto;padding-right:0;color:#fff;font-size:10px;text-shadow:0 0 2px #000000}.cesium-viewer-timelineContainer{position:absolute;bottom:0;left:169px;right:29px;height:27px;padding:0;margin:0;overflow:hidden;font-size:14px}.cesium-viewer-animationContainer{position:absolute;bottom:0;left:0;padding:0;width:169px;height:112px}.cesium-viewer-fullscreenContainer,.cesium-viewer-vrContainer{position:absolute;bottom:0;right:0;padding:0;width:29px;height:29px;overflow:hidden}.cesium-viewer-toolbar{display:block;position:absolute;top:5px;right:5px}.cesium-viewer-cesiumInspectorContainer{display:block;position:absolute;top:50px;right:10px}.cesium-viewer-geocoderContainer{position:relative;display:inline-block;margin:0 3px}.cesium-viewer-cesium3DTilesInspectorContainer,.cesium-viewer-voxelInspectorContainer{display:block;position:absolute;top:50px;right:10px;max-height:calc(100% - 120px);box-sizing:border-box;overflow-y:auto;overflow-x:hidden}.cesium-viewer-i3s-explorer ul{list-style-type:none}.cesium-viewer-i3s-explorer .layersList{padding:0}.cesium-viewer-i3s-explorer input{margin:0 3px 0 0}.cesium-viewer-i3s-explorer .expandItem{cursor:pointer;-webkit-user-select:none;user-select:none;width:20px}.cesium-viewer-i3s-explorer .nested,.cesium-viewer-i3s-explorer #bsl-wrapper{display:none}.cesium-viewer-i3s-explorer .active{display:block}.cesium-viewer-i3s-explorer .li-wrapper{display:flex;flex-direction:row;align-content:center}.bim-engine-gis-container,.bim-engine-gis-container .cesium-viewer,.bim-engine-gis-container .cesium-viewer-cesiumWidgetContainer,.bim-engine-gis-container .cesium-widget,.bim-engine-gis-container canvas{width:100%;height:100%}.bim-engine-gis-container{position:relative;overflow:hidden;background:#111827}.bim-engine-gis-container .cesium-widget canvas{display:block}.bim-engine-gis-performance-monitor{position:absolute;top:8px;right:8px;z-index:1200;width:96px;padding:6px 8px;border:1px solid rgba(148,163,184,.32);border-radius:4px;background:#0f172ac7;color:#e5edf7;font-family:Consolas,Monaco,monospace;font-size:11px;line-height:15px;pointer-events:none;box-sizing:border-box}.bim-engine-gis-performance-row{display:flex;align-items:center;justify-content:space-between;gap:6px}.bim-engine-gis-performance-value{color:#7dd3fc;font-weight:700;text-align:right}
package/dist/index.d.ts CHANGED
@@ -641,6 +641,8 @@ declare class CameraModule {
641
641
  perspectiveCamera: THREE.PerspectiveCamera;
642
642
  orthographicCamera: THREE.OrthographicCamera;
643
643
  constructor(engine: any);
644
+ /** 视图跳转前统一退出图钉查看态,避免批注锁定与相机动画冲突。 */
645
+ private exitDrawingPinView;
644
646
  private getCameraAspect;
645
647
  private getPerspectiveVisibleHeight;
646
648
  getOrthographicVisibleHeight(camera?: THREE.OrthographicCamera): number;
@@ -1528,6 +1530,11 @@ declare class DrawingPin {
1528
1530
  * 清空批注(便捷接口)
1529
1531
  */
1530
1532
  clearAnnotation(): void;
1533
+ /**
1534
+ * 退出图钉查看态,清理查看批注并恢复相机交互。
1535
+ * 视图跳转类功能可调用此接口与图钉查看态保持互斥。
1536
+ */
1537
+ exitViewMode(): boolean;
1531
1538
  /**
1532
1539
  * 图钉 view 模式下锁定相机控制,避免用户在只读查看阶段继续旋转视图。
1533
1540
  */
@@ -2473,6 +2480,8 @@ declare class EngineKernelV2 {
2473
2480
  modelPlace: ModelPlace;
2474
2481
  /** 基于当前引擎作为基准版本的模型差异比较器。 */
2475
2482
  modelComparison: ModelComparison;
2483
+ /** 管理模型炸开代理对象,并保持炸开后的构件交互身份。 */
2484
+ modelExplode: ModelExplode;
2476
2485
  models: any[];
2477
2486
  reactBoundingClientRect: {
2478
2487
  left: number;
@@ -4005,7 +4014,7 @@ declare class InteractionModule {
4005
4014
  private removeModelsFromHighlightState;
4006
4015
  private getNodeWorldBox;
4007
4016
  /**
4008
- * 获取 hover 用的构件网格;普通构件的缓存 mesh 未挂场景,需补齐模型根组变换。
4017
+ * 获取 hover 用的构件网格;实例节点可能同时保留 infos,必须优先按实例索引处理。
4009
4018
  */
4010
4019
  private getNodeCatchMeshes;
4011
4020
  private createInstanceCatchMesh;
@@ -4015,6 +4024,9 @@ declare class InteractionModule {
4015
4024
  private intersectsRect;
4016
4025
  private getMergedBox;
4017
4026
  private getSceneModel;
4027
+ /** 从射线命中的对象还原真实构件 ID,兼容炸开代理和普通模型对象。 */
4028
+ private getHitModelId;
4029
+ private getEngineNode;
4018
4030
  }
4019
4031
 
4020
4032
  declare class InteractionModule2d {
@@ -5539,6 +5551,9 @@ declare class ModelEdge {
5539
5551
  private indexes;
5540
5552
  private highlightIndexes;
5541
5553
  private highlightEdgeSyncVersion;
5554
+ private explodeHidden;
5555
+ private groupVisibleBeforeExplode;
5556
+ private highlightVisibleBeforeExplode;
5542
5557
  private getModelEntry;
5543
5558
  private getOrCreateItemIndex;
5544
5559
  private getEdgePointsByIndex;
@@ -5549,6 +5564,8 @@ declare class ModelEdge {
5549
5564
  disActive(): void;
5550
5565
  isEnabled(): boolean;
5551
5566
  getOpacity(): number;
5567
+ /** 炸开期间临时隐藏所有边线;退出炸开时恢复进入炸开前的可见状态。 */
5568
+ setExplodeHidden(hidden: boolean): void;
5552
5569
  update(): void;
5553
5570
  private hasPendingModelEdges;
5554
5571
  private loadZipJsonAsync;
@@ -5572,6 +5589,242 @@ declare class ModelEdge {
5572
5589
  showModelEdge(url: string, id: Number): void;
5573
5590
  }
5574
5591
 
5592
+ /**
5593
+ * 模型炸开管理器。
5594
+ *
5595
+ * 设计目标:
5596
+ * 1. 炸开期间不直接修改原始构件顶点,而是创建临时代理网格承载位移。
5597
+ * 2. 代理对象保留原始 url/id,点选、高亮、显隐、框选和双击定位仍按完整构件工作。
5598
+ * 3. 原始渲染对象被临时隐藏或拆分隐藏,避免原位模型与代理模型重复显示。
5599
+ * 4. 炸开期间临时隐藏边线,避免边线与代理模型出现错位。
5600
+ */
5601
+ declare class ModelExplode {
5602
+ private engine;
5603
+ /** 当前是否处于炸开模式;供外部滑块、交互模块判断是否需要走代理逻辑。 */
5604
+ private active;
5605
+ /** 当前炸开倍数。真实代理位移 = record.offsetLocal * factor。 */
5606
+ private factor;
5607
+ /** 本轮炸开创建的所有代理记录,按渲染片段保存。 */
5608
+ private records;
5609
+ /** 非空时表示动画仍在推进,EngineKernel 每帧会调用 update。 */
5610
+ private animation;
5611
+ /** 炸开期间被临时隐藏的高亮/透明/自定义颜色运行时对象,reset 时恢复可见性。 */
5612
+ private hiddenRuntimeObjects;
5613
+ /** 炸开代理专用高亮材质,避免复用原高亮对象导致位置不同步。 */
5614
+ private readonly highlightMaterial;
5615
+ /** 炸开代理专用半透明材质,与原模型透明状态保持一致。 */
5616
+ private readonly translucentMaterial;
5617
+ /** 初始化代理材质,并继承当前剖切平面配置。 */
5618
+ constructor(engine: any);
5619
+ /**
5620
+ * 启动炸开模式。
5621
+ *
5622
+ * 流程:
5623
+ * 1. 清理上一轮代理并恢复边线显示状态,保证重复调用不会叠加状态。
5624
+ * 2. 解析目标构件,未指定 targets 时默认对所有已加载模型执行整模型炸开。
5625
+ * 3. 基于目标包围盒计算每个构件的基础世界位移 offsetWorld。
5626
+ * 4. 为普通网格或实例网格创建代理对象,并隐藏对应原始渲染片段。
5627
+ * 5. 同步当前高亮、隐藏、半透明、自定义颜色状态,并在炸开期间隐藏边线。
5628
+ */
5629
+ explode(options?: ModelExplodeOptions): void;
5630
+ /**
5631
+ * 设置炸开系数,常用于外部滑杆实时控制。
5632
+ *
5633
+ * factor 只改变代理 position,不重新创建代理,因此拖动滑块时不会破坏
5634
+ * 构件的交互身份和材质状态。
5635
+ */
5636
+ setFactor(factor: number): void;
5637
+ /**
5638
+ * 每帧推进炸开动画;由 EngineKernel 的主渲染循环调用。
5639
+ * 动画本质上只是在 from/to 之间插值 factor,最终仍复用 setFactor 的统一同步链路。
5640
+ */
5641
+ update(): void;
5642
+ /**
5643
+ * 清理炸开代理并按当前构件状态恢复原始渲染对象。
5644
+ *
5645
+ * reset 不简单地把所有原对象显示出来,而是重新检查隐藏/高亮/半透明/自定义颜色状态,
5646
+ * 避免用户在炸开期间执行显隐或改色后,退出炸开时丢失业务状态。
5647
+ */
5648
+ reset(): void;
5649
+ /** 释放炸开管理器持有的专用材质,通常由 EngineKernel 销毁时调用。 */
5650
+ dispose(): void;
5651
+ /** 返回当前是否处于炸开模式。 */
5652
+ isActive(): boolean;
5653
+ /**
5654
+ * 判断某个构件是否已由炸开代理接管。
5655
+ * 八叉树、拾取和框选逻辑可据此跳过原位对象,避免命中已隐藏但仍存在于场景中的源构件。
5656
+ */
5657
+ hasRecord(url: string, id: any): boolean;
5658
+ /**
5659
+ * 从命中的代理对象还原真实构件 ID,避免 Object3D.name 字符串化造成 nodesMap 查询失败。
5660
+ */
5661
+ getObjectComponentId(object: any): string | number | null;
5662
+ /**
5663
+ * 返回炸开后用于悬浮高亮的代理网格。
5664
+ * 一个构件可能拆成多个代理片段,调用方应把返回数组整体当作一个完整构件处理。
5665
+ */
5666
+ getCatchMeshes(url: string, id: any): THREE.Mesh[];
5667
+ /**
5668
+ * 返回炸开后的构件世界包围盒,供框选、双击定位等交互使用。
5669
+ * 这里以代理对象的实时 matrixWorld 为准,因此滑块拖动和动画过程中也能得到正确位置。
5670
+ */
5671
+ getExplodedWorldBox(url: string, id: any): THREE.Box3 | null;
5672
+ /**
5673
+ * 对炸开代理做独立射线拾取;返回结构与 three.js Raycaster 结果兼容。
5674
+ * 调用方命中代理后,需要再通过 getObjectComponentId 还原真实构件 id。
5675
+ */
5676
+ raycast(raycaster: THREE.Raycaster): THREE.Intersection[];
5677
+ /**
5678
+ * 同步当前高亮、隐藏、半透明和自定义颜色状态到炸开代理。
5679
+ * 该方法在模型工具模块改变状态后调用,保证炸开期间仍支持完整构件交互。
5680
+ */
5681
+ syncVisualState(): void;
5682
+ private resolveTargets;
5683
+ /**
5684
+ * 构建本轮炸开需要的空间上下文。
5685
+ * 这里提前缓存整体包围盒、模型中心和分组包围盒,避免每个构件重复遍历 nodesMap。
5686
+ */
5687
+ private buildExplodeContext;
5688
+ /**
5689
+ * 计算单个构件或分组的基础世界位移。
5690
+ *
5691
+ * radial/type/major 模式按爆炸原点到构件中心的原始向量移动:
5692
+ * newCenter = origin + (center - origin) * (1 + factor),
5693
+ * 因此真正应用到代理上的位移是 (center - origin) * factor。
5694
+ */
5695
+ private computeOffset;
5696
+ /** 获取本模型的爆炸原点;优先使用业务传入的世界坐标 origin。 */
5697
+ private getExplodeCenter;
5698
+ /**
5699
+ * 根据构件索引创建一条炸开记录。
5700
+ * node.indexes 中的每一项对应一个普通合并网格 group 或一个 InstancedMesh 实例。
5701
+ */
5702
+ private createRecord;
5703
+ /** 为普通合并网格中的单个构件片段创建代理网格。 */
5704
+ private createMeshProxy;
5705
+ /**
5706
+ * 为 InstancedMesh 中的单个实例创建代理网格。
5707
+ * 实例矩阵会被烘焙进 geometry,后续炸开只移动代理 position,拾取也按普通 Mesh 处理。
5708
+ */
5709
+ private createInstanceProxy;
5710
+ /** 给代理对象写入稳定交互身份,避免依赖 name 的字符串化 id。 */
5711
+ private assignProxyIdentity;
5712
+ /**
5713
+ * 隐藏源渲染片段,避免与代理对象重复显示。
5714
+ * 普通合并网格通过重建 geometry groups 隐藏局部片段,实例网格通过零缩放矩阵隐藏单个实例。
5715
+ */
5716
+ private hideSource;
5717
+ /**
5718
+ * 恢复源渲染片段。
5719
+ * 如果构件在炸开期间仍处于隐藏、高亮、半透明或自定义颜色状态,实例源对象继续保持隐藏,
5720
+ * 由对应状态对象负责显示,避免 reset 后出现原模型和状态模型叠加。
5721
+ */
5722
+ private restoreSource;
5723
+ /**
5724
+ * 确保普通合并网格已进入可按构件片段控制的拆分状态。
5725
+ * 第一次拆分时保存原始片段状态,后续重复同步不覆盖 sourceState。
5726
+ */
5727
+ private ensureSplitState;
5728
+ /**
5729
+ * 根据每个构件片段的可见性和材质槽位重建 geometry groups。
5730
+ * 连续且材质一致的片段会被合并成一个 group,减少炸开期间状态切换带来的 draw call。
5731
+ */
5732
+ private rebuildSplitModelGroups;
5733
+ /**
5734
+ * 将业务状态映射到代理对象。
5735
+ * 代理对象不能依赖原场景中的高亮/透明临时对象,因为那些对象仍位于原模型位置。
5736
+ */
5737
+ private applyProxyVisualState;
5738
+ /**
5739
+ * 生成代理专用自定义颜色材质。
5740
+ * 颜色和透明度相同的请求复用 record.customMaterial,避免滑块或状态同步时反复创建材质。
5741
+ */
5742
+ private getCustomMaterial;
5743
+ /**
5744
+ * 隐藏原模型位置上的运行时状态对象。
5745
+ * 高亮、半透明和自定义颜色模块通常会创建额外 mesh;炸开时这些 mesh 不会自动跟随代理,
5746
+ * 因此这里临时隐藏它们,并由代理自己承载相同视觉状态。
5747
+ */
5748
+ private hideRuntimeObjectsForExplodedRecords;
5749
+ /** 恢复 hideRuntimeObjectsForExplodedRecords 临时隐藏的运行时对象。 */
5750
+ private restoreRuntimeObjects;
5751
+ /** 从场景中移除代理对象,并释放代理持有的 geometry 和材质资源。 */
5752
+ private removeProxy;
5753
+ /**
5754
+ * 克隆源材质用于代理。
5755
+ * 当前普通构件代理以主材质为准;高亮、半透明和自定义颜色会在 applyProxyVisualState 中覆盖。
5756
+ */
5757
+ private cloneProxyMaterial;
5758
+ /**
5759
+ * 读取构件节点的世界包围盒。
5760
+ * 节点 box 通常是模型局部坐标,返回前统一乘以模型组的 matrixWorld。
5761
+ */
5762
+ private getNodeWorldBox;
5763
+ /** 计算单个模型在世界坐标下的整体包围盒,作为默认爆炸原点的依据。 */
5764
+ private getModelWorldBox;
5765
+ /** 兼容数字 id 和字符串 id 的 nodesMap 查询。 */
5766
+ private getNode;
5767
+ /** 按 url 从引擎模型列表中查找模型条目。 */
5768
+ private getEngineModel;
5769
+ /**
5770
+ * 获取分组 key。
5771
+ * radial/axis 使用构件自身作为分组;level/type/major 使用映射信息让同组构件共享位移方向。
5772
+ */
5773
+ private getGroupKey;
5774
+ /**
5775
+ * 获取 InstancedMesh 单个实例的原始矩阵。
5776
+ * 优先读取加载器缓存的 matrixsClone/matrixs,避免 getMatrixAt 读到已被隐藏流程改写后的零矩阵。
5777
+ */
5778
+ private getInstanceMatrix;
5779
+ /**
5780
+ * 将世界坐标位移转换成某个父节点下的局部位移。
5781
+ * 代理对象挂在源 mesh 的父节点下,直接使用世界位移会在模型组存在变换时产生偏差。
5782
+ */
5783
+ private worldDeltaToLocalDelta;
5784
+ /** 判断构件当前是否处于高亮状态。 */
5785
+ private isHighlighted;
5786
+ /** 判断构件当前是否处于隐藏状态。 */
5787
+ private isHidden;
5788
+ /** 判断构件当前是否处于半透明状态。 */
5789
+ private isTranslucent;
5790
+ /**
5791
+ * reset 时判断实例源对象是否仍应保持隐藏。
5792
+ * 某些状态由独立运行时对象或代理承担显示,如果直接恢复原实例会造成重复显示。
5793
+ */
5794
+ private shouldKeepOriginalInstanceHidden;
5795
+ /** 统一比较构件 id,兼容业务侧传入数字或字符串。 */
5796
+ private isSameId;
5797
+ /** 归一化炸开系数,非法值按 0 处理,负数不允许反向收缩。 */
5798
+ private normalizeFactor;
5799
+ /** 将任意值转为稳定数字,用于 level 模式缺少可靠排序时生成确定性偏移。 */
5800
+ private getStableNumber;
5801
+ }
5802
+
5803
+ export declare type ModelExplodeAxis = 'x' | 'y' | 'z';
5804
+
5805
+ export declare type ModelExplodeMode = 'radial' | 'axis' | 'level' | 'type' | 'major';
5806
+
5807
+ /**
5808
+ * 炸开配置。
5809
+ * factor 表示炸开位移倍数:0 为原位,1 为基础位移,2 为基础位移的两倍。
5810
+ * origin 用世界坐标表达,未传时默认使用模型自身包围盒中心。
5811
+ */
5812
+ export declare type ModelExplodeOptions = {
5813
+ targets?: ModelExplodeTarget[];
5814
+ factor?: number;
5815
+ mode?: ModelExplodeMode;
5816
+ axis?: ModelExplodeAxis;
5817
+ origin?: THREE.Vector3;
5818
+ animate?: boolean;
5819
+ duration?: number;
5820
+ };
5821
+
5822
+ /** 炸开目标。未传 ids 时表示对该 url 下的所有构件执行炸开。 */
5823
+ export declare type ModelExplodeTarget = {
5824
+ url: string;
5825
+ ids?: Array<string | number>;
5826
+ };
5827
+
5575
5828
  /**
5576
5829
  * 通过 window CustomEvent 实现同页面内多个 3D 引擎实例的轻量联动。
5577
5830
  */
@@ -5900,6 +6153,8 @@ declare class ModelToolModule {
5900
6153
  private getModelGuids;
5901
6154
  private restoreSplitModelsOnIdle;
5902
6155
  getSceneModel(index: number): any;
6156
+ /** 炸开模式下,原模型状态变化后需要同步到代理构件,保证交互语义一致。 */
6157
+ private syncExplodeVisualState;
5903
6158
  getModelCenter(models?: any[]): THREE.Vector3 | null;
5904
6159
  updateMaterial(): void;
5905
6160
  private syncHighlightModelEdges;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iflow-engine-base",
3
- "version": "3.12.1",
3
+ "version": "3.12.4",
4
4
  "description": "BIM Engine SDK for Vue2, Vue3, React and HTML",
5
5
  "main": "./dist/bim-engine-sdk.umd.js",
6
6
  "module": "./dist/bim-engine-sdk.es.js",