floor-editor-ts 1.3.10 → 1.3.12

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.
@@ -6472,7 +6472,7 @@ function addFurniture(catalogId, position) {
6472
6472
  }
6473
6473
  });
6474
6474
  }, `Added ${catalogId}`);
6475
- Promise.resolve().then(() => (init_onboarding_svelte(), onboarding_svelte_exports)).then((m) => m.triggerTip("first-furniture", position.x + 20, position.y + 20));
6475
+ if (!isAssignedCamerasSyncing()) Promise.resolve().then(() => (init_onboarding_svelte(), onboarding_svelte_exports)).then((m) => m.triggerTip("first-furniture", position.x + 20, position.y + 20));
6476
6476
  return id;
6477
6477
  }
6478
6478
  /** Move furniture without creating an undo snapshot on every call (used during drag).
@@ -57286,6 +57286,7 @@ function initAutoSave(onDispatch) {
57286
57286
  skipNext = false;
57287
57287
  return;
57288
57288
  }
57289
+ if (isAssignedCamerasSyncing()) return;
57289
57290
  if (!_p) return;
57290
57291
  markDirty(onDispatch);
57291
57292
  });
@@ -57333,6 +57334,12 @@ async function autoSave(onDispatch) {
57333
57334
  saveState.set("unsaved");
57334
57335
  }
57335
57336
  }
57337
+ /** Mark as saved without triggering dirty (e.g. after loadProject) */
57338
+ function markClean() {
57339
+ if (debounceTimer) clearTimeout(debounceTimer);
57340
+ saveState.set("saved");
57341
+ skipNext = true;
57342
+ }
57336
57343
  //#endregion
57337
57344
  //#region src/lib/components/toolbar/VersionHistoryPanel.svelte
57338
57345
  init_client();
@@ -65744,13 +65751,16 @@ function FloorPlanCanvas($$anchor, $$props) {
65744
65751
  };
65745
65752
  }
65746
65753
  user_effect(() => {
65747
- canvasZoom.set(get(zoom));
65754
+ const z = get(zoom);
65755
+ if (get$1(canvasZoom) !== z) canvasZoom.set(z);
65748
65756
  });
65749
65757
  user_effect(() => {
65750
- canvasCamX.set(get(camX));
65758
+ const x = get(camX);
65759
+ if (get$1(canvasCamX) !== x) canvasCamX.set(x);
65751
65760
  });
65752
65761
  user_effect(() => {
65753
- canvasCamY.set(get(camY));
65762
+ const y = get(camY);
65763
+ if (get$1(canvasCamY) !== y) canvasCamY.set(y);
65754
65764
  });
65755
65765
  let wallStart = /* @__PURE__ */ state(null);
65756
65766
  let wallSequenceFirst = /* @__PURE__ */ state(null);
@@ -65847,7 +65857,8 @@ function FloorPlanCanvas($$anchor, $$props) {
65847
65857
  }));
65848
65858
  let showFurniture = /* @__PURE__ */ user_derived(() => get(layerVis).furniture);
65849
65859
  user_effect(() => {
65850
- showFurnitureStore.set(get(layerVis).furniture);
65860
+ const on = get(layerVis).furniture;
65861
+ if (get$1(showFurnitureStore) !== on) showFurnitureStore.set(on);
65851
65862
  });
65852
65863
  let showDoors = /* @__PURE__ */ user_derived(() => get(layerVis).doors);
65853
65864
  let showWindows = /* @__PURE__ */ user_derived(() => get(layerVis).windows);
@@ -70844,17 +70855,18 @@ function OnboardingTooltip($$anchor, $$props) {
70844
70855
  let visible = /* @__PURE__ */ state(false);
70845
70856
  let autoTimer = null;
70846
70857
  user_effect(() => {
70847
- if (activeTipState.current) {
70848
- set(visible, false);
70858
+ const tip = activeTipState.current;
70859
+ if (tip) {
70860
+ if (get(visible)) set(visible, false);
70849
70861
  requestAnimationFrame(() => {
70850
- set(visible, true);
70862
+ if (activeTipState.current === tip) set(visible, true);
70851
70863
  });
70852
70864
  if (autoTimer) clearTimeout(autoTimer);
70853
70865
  autoTimer = setTimeout(() => {
70854
70866
  dismissTip();
70855
70867
  }, 8e3);
70856
70868
  } else {
70857
- set(visible, false);
70869
+ if (get(visible)) set(visible, false);
70858
70870
  if (autoTimer) {
70859
70871
  clearTimeout(autoTimer);
70860
70872
  autoTimer = null;
@@ -70912,10 +70924,31 @@ var lastRejectedKey = "";
70912
70924
  * (host may load a saved floor without passing assignedCameras).
70913
70925
  */
70914
70926
  var lastSyncedSerials = /* @__PURE__ */ new Set();
70927
+ /** Skip mutate when host assignment + floor cameras/zones already match. */
70928
+ var lastAppliedFingerprint = "";
70915
70929
  /** Call when host replaces floorData so load doesn't fight a stale sync set. */
70916
70930
  function resetAssignedCamerasSyncState() {
70917
70931
  lastSyncedSerials = /* @__PURE__ */ new Set();
70918
70932
  lastRejectedKey = "";
70933
+ lastAppliedFingerprint = "";
70934
+ }
70935
+ function assignmentFingerprint(assigned, floor) {
70936
+ var _floor$zones, _floor$walls$length, _floor$walls;
70937
+ const cams = getCameraFurniture(floor).map((f) => {
70938
+ var _f$props, _f$serial, _f$name;
70939
+ const props = (_f$props = f.props) !== null && _f$props !== void 0 ? _f$props : {};
70940
+ const keys = Object.keys(props).sort();
70941
+ return `${(_f$serial = f.serial) !== null && _f$serial !== void 0 ? _f$serial : ""}:${(_f$name = f.name) !== null && _f$name !== void 0 ? _f$name : ""}:${keys.map((k) => `${k}=${props[k]}`).join(",")}`;
70942
+ }).sort().join(";");
70943
+ const zones = ((_floor$zones = floor.zones) !== null && _floor$zones !== void 0 ? _floor$zones : []).map((z) => {
70944
+ var _z$cameraSerial, _z$points$length, _z$points;
70945
+ return `${(_z$cameraSerial = z.cameraSerial) !== null && _z$cameraSerial !== void 0 ? _z$cameraSerial : ""}:${z.name}:${z.color}:${(_z$points$length = (_z$points = z.points) === null || _z$points === void 0 ? void 0 : _z$points.length) !== null && _z$points$length !== void 0 ? _z$points$length : 0}`;
70946
+ }).sort().join(";");
70947
+ const host = assigned.map((c) => Object.keys(c).sort().map((k) => {
70948
+ var _c$k;
70949
+ return `${k}=${String((_c$k = c[k]) !== null && _c$k !== void 0 ? _c$k : "")}`;
70950
+ }).join("&")).sort().join("|");
70951
+ return `${floor.id}|w${(_floor$walls$length = (_floor$walls = floor.walls) === null || _floor$walls === void 0 ? void 0 : _floor$walls.length) !== null && _floor$walls$length !== void 0 ? _floor$walls$length : 0}|${host}|${cams}|${zones}`;
70919
70952
  }
70920
70953
  function getCameraFurniture(floor) {
70921
70954
  return floor.furniture.filter((f) => f.catalogId === "camera");
@@ -70980,17 +71013,18 @@ function applyCameraProps(id, cam) {
70980
71013
  * - If floor has no walls, rejects adds and emits camerasRejected
70981
71014
  */
70982
71015
  function syncAssignedCameras(assigned) {
70983
- var _floor$walls$length, _floor$walls;
71016
+ var _floor$walls$length2, _floor$walls2;
70984
71017
  const floor = get$1(activeFloor);
70985
71018
  const project = get$1(currentProject);
70986
71019
  if (!floor || !project) return;
70987
71020
  const normalized = assigned.filter((c) => c && typeof c.serial === "string" && String(c.serial).trim());
71021
+ if (assignmentFingerprint(normalized, floor) === lastAppliedFingerprint) return;
70988
71022
  const assignedBySerial = new Map(normalized.map((c) => [String(c.serial).trim(), c]));
70989
71023
  const existing = getCameraFurniture(floor);
70990
71024
  const existingBySerial = /* @__PURE__ */ new Map();
70991
71025
  for (const item of existing) if (item.serial) existingBySerial.set(item.serial, item);
70992
71026
  const toAdd = normalized.filter((c) => !existingBySerial.has(String(c.serial).trim()));
70993
- const hasFloorLayout = ((_floor$walls$length = (_floor$walls = floor.walls) === null || _floor$walls === void 0 ? void 0 : _floor$walls.length) !== null && _floor$walls$length !== void 0 ? _floor$walls$length : 0) > 0;
71027
+ const hasFloorLayout = ((_floor$walls$length2 = (_floor$walls2 = floor.walls) === null || _floor$walls2 === void 0 ? void 0 : _floor$walls2.length) !== null && _floor$walls$length2 !== void 0 ? _floor$walls$length2 : 0) > 0;
70994
71028
  function rejectNoFloor(cameras) {
70995
71029
  if (cameras.length === 0) return;
70996
71030
  const key = cameras.map((c) => String(c.serial).trim()).sort().join(",");
@@ -71023,6 +71057,8 @@ function syncAssignedCameras(assigned) {
71023
71057
  if (!hasFloorLayout) {
71024
71058
  syncZonesFromAssigned(assignedBySerial, hostDrivesAssignment);
71025
71059
  if (hostDrivesAssignment || newSerials.size > 0) lastSyncedSerials = newSerials;
71060
+ const f = get$1(activeFloor);
71061
+ if (f) lastAppliedFingerprint = assignmentFingerprint(normalized, f);
71026
71062
  return;
71027
71063
  }
71028
71064
  const center = getFloorCenter(floorAfterRemove);
@@ -71030,6 +71066,8 @@ function syncAssignedCameras(assigned) {
71030
71066
  rejectNoFloor(toAdd);
71031
71067
  syncZonesFromAssigned(assignedBySerial, hostDrivesAssignment);
71032
71068
  if (hostDrivesAssignment || newSerials.size > 0) lastSyncedSerials = newSerials;
71069
+ const f = get$1(activeFloor);
71070
+ if (f) lastAppliedFingerprint = assignmentFingerprint(normalized, f);
71033
71071
  return;
71034
71072
  }
71035
71073
  lastRejectedKey = "";
@@ -71042,16 +71080,18 @@ function syncAssignedCameras(assigned) {
71042
71080
  }
71043
71081
  syncZonesFromAssigned(assignedBySerial, hostDrivesAssignment);
71044
71082
  lastSyncedSerials = newSerials;
71083
+ const floorDone = get$1(activeFloor);
71084
+ if (floorDone) lastAppliedFingerprint = assignmentFingerprint(normalized, floorDone);
71045
71085
  } finally {
71046
71086
  setAssignedCamerasSyncing(false);
71047
71087
  }
71048
71088
  }
71049
71089
  /** Push area / areaColor onto linked zones; remove areas whose camera was unassigned. */
71050
71090
  function syncZonesFromAssigned(assignedBySerial, hostDrivesAssignment) {
71051
- var _floor$zones, _floor2$zones;
71091
+ var _floor$zones2, _floor2$zones;
71052
71092
  const floor = get$1(activeFloor);
71053
71093
  if (!floor) return;
71054
- if (hostDrivesAssignment && ((_floor$zones = floor.zones) === null || _floor$zones === void 0 ? void 0 : _floor$zones.length)) for (const z of [...floor.zones]) {
71094
+ if (hostDrivesAssignment && ((_floor$zones2 = floor.zones) === null || _floor$zones2 === void 0 ? void 0 : _floor$zones2.length)) for (const z of [...floor.zones]) {
71055
71095
  if (!z.cameraSerial) continue;
71056
71096
  if (!assignedBySerial.has(z.cameraSerial)) removeZone(z.id);
71057
71097
  }
@@ -71086,27 +71126,80 @@ function App($$anchor, $$props) {
71086
71126
  let config = /* @__PURE__ */ state(proxy({ ...DEFAULT_CONFIG }));
71087
71127
  let activeFloorId = /* @__PURE__ */ state(null);
71088
71128
  let activeFloorWallCount = /* @__PURE__ */ state(0);
71089
- (_$$props$stores = $$props.stores) === null || _$$props$stores === void 0 || _$$props$stores.floorData.subscribe((v) => set(floorData, v, true));
71090
- (_$$props$stores2 = $$props.stores) === null || _$$props$stores2 === void 0 || _$$props$stores2.config.subscribe((v) => set(config, normalizeConfig(v), true));
71129
+ /** Latest assignedCameras from host config — sync is NOT in $effect (avoids depth loops). */
71130
+ let latestAssigned = [];
71131
+ let assignedSyncTimer = null;
71132
+ let lastScheduledAssignKey = "";
71133
+ let lastScheduledFloorKey = "";
71134
+ let lastFloorDataKey = "";
71135
+ function assignedKey(list) {
71136
+ return list.map((c) => {
71137
+ if (!(c === null || c === void 0 ? void 0 : c.serial)) return "";
71138
+ return Object.keys(c).sort().map((k) => {
71139
+ var _c$k;
71140
+ return `${k}=${String((_c$k = c[k]) !== null && _c$k !== void 0 ? _c$k : "")}`;
71141
+ }).join("&");
71142
+ }).filter(Boolean).sort().join("|");
71143
+ }
71144
+ function scheduleAssignedCamerasSync(_reason) {
71145
+ var _$$get;
71146
+ const aKey = assignedKey(latestAssigned);
71147
+ const fKey = `${(_$$get = get(activeFloorId)) !== null && _$$get !== void 0 ? _$$get : ""}:${get(activeFloorWallCount)}`;
71148
+ if (aKey === lastScheduledAssignKey && fKey === lastScheduledFloorKey && assignedSyncTimer != null) return;
71149
+ lastScheduledAssignKey = aKey;
71150
+ lastScheduledFloorKey = fKey;
71151
+ if (assignedSyncTimer != null) clearTimeout(assignedSyncTimer);
71152
+ assignedSyncTimer = setTimeout(() => {
71153
+ assignedSyncTimer = null;
71154
+ syncAssignedCameras(latestAssigned);
71155
+ }, 0);
71156
+ }
71157
+ function applyFloorData(v) {
71158
+ set(floorData, v, true);
71159
+ let key = "";
71160
+ try {
71161
+ key = JSON.stringify(v !== null && v !== void 0 ? v : null);
71162
+ } catch (_unused) {
71163
+ key = String(Date.now());
71164
+ }
71165
+ if (key === lastFloorDataKey) return;
71166
+ lastFloorDataKey = key;
71167
+ resetAssignedCamerasSyncState();
71168
+ lastScheduledAssignKey = "";
71169
+ lastScheduledFloorKey = "";
71170
+ currentProject.set(normalizeFloorData(v));
71171
+ markClean();
71172
+ scheduleAssignedCamerasSync("floor");
71173
+ }
71174
+ (_$$props$stores = $$props.stores) === null || _$$props$stores === void 0 || _$$props$stores.floorData.subscribe((v) => applyFloorData(v));
71175
+ (_$$props$stores2 = $$props.stores) === null || _$$props$stores2 === void 0 || _$$props$stores2.config.subscribe((v) => {
71176
+ var _next$assignedCameras;
71177
+ const next = normalizeConfig(v);
71178
+ set(config, next, true);
71179
+ latestAssigned = (_next$assignedCameras = next.assignedCameras) !== null && _next$assignedCameras !== void 0 ? _next$assignedCameras : [];
71180
+ if (next.cameraThumbnailOpacity != null && get$1(cameraThumbnailOpacity) !== next.cameraThumbnailOpacity) cameraThumbnailOpacity.set(next.cameraThumbnailOpacity);
71181
+ if (next.projectName) {
71182
+ const proj = get$1(currentProject);
71183
+ if (proj && proj.name !== next.projectName) currentProject.update((p) => p ? {
71184
+ ...p,
71185
+ name: next.projectName
71186
+ } : p);
71187
+ }
71188
+ scheduleAssignedCamerasSync("config");
71189
+ });
71091
71190
  activeFloor.subscribe((f) => {
71092
71191
  var _f$id, _f$walls$length, _f$walls;
71093
- set(activeFloorId, (_f$id = f === null || f === void 0 ? void 0 : f.id) !== null && _f$id !== void 0 ? _f$id : null, true);
71094
- set(activeFloorWallCount, (_f$walls$length = f === null || f === void 0 || (_f$walls = f.walls) === null || _f$walls === void 0 ? void 0 : _f$walls.length) !== null && _f$walls$length !== void 0 ? _f$walls$length : 0, true);
71192
+ const id = (_f$id = f === null || f === void 0 ? void 0 : f.id) !== null && _f$id !== void 0 ? _f$id : null;
71193
+ const walls = (_f$walls$length = f === null || f === void 0 || (_f$walls = f.walls) === null || _f$walls === void 0 ? void 0 : _f$walls.length) !== null && _f$walls$length !== void 0 ? _f$walls$length : 0;
71194
+ const floorChanged = id !== get(activeFloorId) || walls !== get(activeFloorWallCount);
71195
+ if (id !== get(activeFloorId)) set(activeFloorId, id, true);
71196
+ if (walls !== get(activeFloorWallCount)) set(activeFloorWallCount, walls, true);
71197
+ if (floorChanged) scheduleAssignedCamerasSync("floor");
71095
71198
  });
71096
71199
  user_effect(() => {
71097
71200
  setFloorCallbackDispatcher($$props.onDispatch ? (eventName, detail) => $$props.onDispatch(eventName, detail) : null);
71098
71201
  return () => setFloorCallbackDispatcher(null);
71099
71202
  });
71100
- user_effect(() => {
71101
- if (get(config).cameraThumbnailOpacity != null) cameraThumbnailOpacity.set(get(config).cameraThumbnailOpacity);
71102
- });
71103
- user_effect(() => {
71104
- var _$$get$assignedCamera;
71105
- const assigned = (_$$get$assignedCamera = get(config).assignedCameras) !== null && _$$get$assignedCamera !== void 0 ? _$$get$assignedCamera : [];
71106
- get(activeFloorId);
71107
- get(activeFloorWallCount);
71108
- syncAssignedCameras(assigned);
71109
- });
71110
71203
  let commandPaletteOpen = /* @__PURE__ */ state(false);
71111
71204
  let printOpen = /* @__PURE__ */ state(false);
71112
71205
  let mode = /* @__PURE__ */ state("2d");
@@ -71115,27 +71208,18 @@ function App($$anchor, $$props) {
71115
71208
  viewMode.subscribe((m) => {
71116
71209
  set(mode, m, true);
71117
71210
  });
71118
- user_effect(() => {
71119
- resetAssignedCamerasSyncState();
71120
- currentProject.set(normalizeFloorData(get(floorData)));
71121
- });
71122
- user_effect(() => {
71123
- if (!get(config).projectName) return;
71124
- currentProject.update((p) => p ? {
71125
- ...p,
71126
- name: get(config).projectName
71127
- } : p);
71128
- });
71129
71211
  onMount(() => {
71130
71212
  let saveTimeout;
71131
71213
  const unsub = currentProject.subscribe((p) => {
71132
71214
  if (!p) return;
71215
+ if (isAssignedCamerasSyncing()) return;
71133
71216
  clearTimeout(saveTimeout);
71134
71217
  saveTimeout = setTimeout(() => localStore.save(p), 500);
71135
71218
  });
71136
71219
  return () => {
71137
71220
  unsub();
71138
71221
  clearTimeout(saveTimeout);
71222
+ if (assignedSyncTimer != null) clearTimeout(assignedSyncTimer);
71139
71223
  };
71140
71224
  });
71141
71225
  var fragment = root();
@@ -71221,8 +71305,8 @@ function App($$anchor, $$props) {
71221
71305
  append($$anchor, div_2);
71222
71306
  };
71223
71307
  if_block(node_1, ($$render) => {
71224
- var _$$get;
71225
- if (get(mode) === "2d" && !((_$$get = get(config)) === null || _$$get === void 0 ? void 0 : _$$get.viewOnly)) $$render(consequent_1);
71308
+ var _$$get2;
71309
+ if (get(mode) === "2d" && !((_$$get2 = get(config)) === null || _$$get2 === void 0 ? void 0 : _$$get2.viewOnly)) $$render(consequent_1);
71226
71310
  });
71227
71311
  var div_4 = sibling(node_1, 2);
71228
71312
  var node_3 = child(div_4);
@@ -71231,56 +71315,56 @@ function App($$anchor, $$props) {
71231
71315
  var node_4 = first_child(fragment_2);
71232
71316
  {
71233
71317
  let $0 = /* @__PURE__ */ user_derived(() => {
71234
- var _$$get2;
71235
- return (_$$get2 = get(config)) === null || _$$get2 === void 0 ? void 0 : _$$get2.viewOnly;
71318
+ var _$$get3;
71319
+ return (_$$get3 = get(config)) === null || _$$get3 === void 0 ? void 0 : _$$get3.viewOnly;
71236
71320
  });
71237
71321
  let $1 = /* @__PURE__ */ user_derived(() => {
71238
- var _$$get3;
71239
- return (_$$get3 = get(config)) === null || _$$get3 === void 0 ? void 0 : _$$get3.floorMaxWidth;
71322
+ var _$$get4;
71323
+ return (_$$get4 = get(config)) === null || _$$get4 === void 0 ? void 0 : _$$get4.floorMaxWidth;
71240
71324
  });
71241
71325
  let $2 = /* @__PURE__ */ user_derived(() => {
71242
- var _$$get4;
71243
- return (_$$get4 = get(config)) === null || _$$get4 === void 0 ? void 0 : _$$get4.floorMaxHeight;
71326
+ var _$$get5;
71327
+ return (_$$get5 = get(config)) === null || _$$get5 === void 0 ? void 0 : _$$get5.floorMaxHeight;
71244
71328
  });
71245
71329
  let $3 = /* @__PURE__ */ user_derived(() => {
71246
- var _$$get5;
71247
- return (_$$get5 = get(config)) === null || _$$get5 === void 0 ? void 0 : _$$get5.heatmapMatrix;
71330
+ var _$$get6;
71331
+ return (_$$get6 = get(config)) === null || _$$get6 === void 0 ? void 0 : _$$get6.heatmapMatrix;
71248
71332
  });
71249
71333
  let $4 = /* @__PURE__ */ user_derived(() => {
71250
- var _$$get6;
71251
- return (_$$get6 = get(config)) === null || _$$get6 === void 0 ? void 0 : _$$get6.heatmapEnabled;
71334
+ var _$$get7;
71335
+ return (_$$get7 = get(config)) === null || _$$get7 === void 0 ? void 0 : _$$get7.heatmapEnabled;
71252
71336
  });
71253
71337
  let $5 = /* @__PURE__ */ user_derived(() => {
71254
- var _$$get7;
71255
- return (_$$get7 = get(config)) === null || _$$get7 === void 0 ? void 0 : _$$get7.heatmapColorScale;
71338
+ var _$$get8;
71339
+ return (_$$get8 = get(config)) === null || _$$get8 === void 0 ? void 0 : _$$get8.heatmapColorScale;
71256
71340
  });
71257
71341
  let $6 = /* @__PURE__ */ user_derived(() => {
71258
- var _$$get8;
71259
- return (_$$get8 = get(config)) === null || _$$get8 === void 0 ? void 0 : _$$get8.selectedCameraSerial;
71342
+ var _$$get9;
71343
+ return (_$$get9 = get(config)) === null || _$$get9 === void 0 ? void 0 : _$$get9.selectedCameraSerial;
71260
71344
  });
71261
71345
  let $7 = /* @__PURE__ */ user_derived(() => {
71262
- var _$$get9;
71263
- return (_$$get9 = get(config)) === null || _$$get9 === void 0 ? void 0 : _$$get9.showCameraCones;
71346
+ var _$$get10;
71347
+ return (_$$get10 = get(config)) === null || _$$get10 === void 0 ? void 0 : _$$get10.showCameraCones;
71264
71348
  });
71265
71349
  let $8 = /* @__PURE__ */ user_derived(() => {
71266
- var _$$get10;
71267
- return (_$$get10 = get(config)) === null || _$$get10 === void 0 ? void 0 : _$$get10.showCameraLabels;
71350
+ var _$$get11;
71351
+ return (_$$get11 = get(config)) === null || _$$get11 === void 0 ? void 0 : _$$get11.showCameraLabels;
71268
71352
  });
71269
71353
  let $9 = /* @__PURE__ */ user_derived(() => {
71270
- var _$$get11;
71271
- return (_$$get11 = get(config)) === null || _$$get11 === void 0 ? void 0 : _$$get11.cameraHeatmapMatrix;
71354
+ var _$$get12;
71355
+ return (_$$get12 = get(config)) === null || _$$get12 === void 0 ? void 0 : _$$get12.cameraHeatmapMatrix;
71272
71356
  });
71273
71357
  let $10 = /* @__PURE__ */ user_derived(() => {
71274
- var _$$get12;
71275
- return ((_$$get12 = get(config)) === null || _$$get12 === void 0 ? void 0 : _$$get12.cameraThumbnail) || "";
71358
+ var _$$get13;
71359
+ return ((_$$get13 = get(config)) === null || _$$get13 === void 0 ? void 0 : _$$get13.cameraThumbnail) || "";
71276
71360
  });
71277
71361
  let $11 = /* @__PURE__ */ user_derived(() => {
71278
- var _$$get13;
71279
- return (_$$get13 = get(config)) === null || _$$get13 === void 0 ? void 0 : _$$get13.canvasBackground;
71362
+ var _$$get14;
71363
+ return (_$$get14 = get(config)) === null || _$$get14 === void 0 ? void 0 : _$$get14.canvasBackground;
71280
71364
  });
71281
71365
  let $12 = /* @__PURE__ */ user_derived(() => {
71282
- var _$$get14;
71283
- return (_$$get14 = get(config)) === null || _$$get14 === void 0 ? void 0 : _$$get14.floorPlateBackground;
71366
+ var _$$get15;
71367
+ return (_$$get15 = get(config)) === null || _$$get15 === void 0 ? void 0 : _$$get15.floorPlateBackground;
71284
71368
  });
71285
71369
  FloorPlanCanvas(node_4, {
71286
71370
  get viewOnly() {
@@ -71349,12 +71433,12 @@ function App($$anchor, $$props) {
71349
71433
  {
71350
71434
  let $0 = /* @__PURE__ */ user_derived(() => get(mode) === "3d");
71351
71435
  let $1 = /* @__PURE__ */ user_derived(() => {
71352
- var _$$get$siteCameras, _$$get15;
71353
- return (_$$get$siteCameras = (_$$get15 = get(config)) === null || _$$get15 === void 0 ? void 0 : _$$get15.siteCameras) !== null && _$$get$siteCameras !== void 0 ? _$$get$siteCameras : [];
71436
+ var _$$get$siteCameras, _$$get16;
71437
+ return (_$$get$siteCameras = (_$$get16 = get(config)) === null || _$$get16 === void 0 ? void 0 : _$$get16.siteCameras) !== null && _$$get$siteCameras !== void 0 ? _$$get$siteCameras : [];
71354
71438
  });
71355
71439
  let $2 = /* @__PURE__ */ user_derived(() => {
71356
- var _$$get$cameraThumbnai, _$$get16;
71357
- return (_$$get$cameraThumbnai = (_$$get16 = get(config)) === null || _$$get16 === void 0 ? void 0 : _$$get16.cameraThumbnail) !== null && _$$get$cameraThumbnai !== void 0 ? _$$get$cameraThumbnai : "";
71440
+ var _$$get$cameraThumbnai, _$$get17;
71441
+ return (_$$get$cameraThumbnai = (_$$get17 = get(config)) === null || _$$get17 === void 0 ? void 0 : _$$get17.cameraThumbnail) !== null && _$$get$cameraThumbnai !== void 0 ? _$$get$cameraThumbnai : "";
71358
71442
  });
71359
71443
  PropertiesPanel($$anchor, {
71360
71444
  get is3D() {