diff --git a/src/lib/components/modules/MapWidget.svelte b/src/lib/components/modules/MapWidget.svelte
index 98e78a1..05cfbea 100644
--- a/src/lib/components/modules/MapWidget.svelte
+++ b/src/lib/components/modules/MapWidget.svelte
@@ -1008,39 +1008,46 @@
return;
}
- const layerId = payload.new?.layer_id ?? payload.old?.layer_id;
- if (!layerId) return;
+ let layerId = payload.new?.layer_id ?? payload.old?.layer_id;
- if (payload.event === "INSERT") {
- layers = layers.map((l) =>
- l.id === layerId
- ? {
- ...l,
- pins: [
- ...l.pins.filter((p) => p.id !== id),
- payload.new,
- ],
- }
- : l,
- );
- } else if (payload.event === "UPDATE") {
- layers = layers.map((l) =>
- l.id === layerId
- ? {
- ...l,
- pins: l.pins.map((p) =>
- p.id === id ? payload.new : p,
- ),
- }
- : l,
- );
- } else if (payload.event === "DELETE") {
+ if (payload.event === "DELETE") {
+ if (!layerId)
+ layerId = layers.find((l) =>
+ l.pins.some((p) => p.id === id),
+ )?.id;
+ if (!layerId) return;
layers = layers.map((l) =>
l.id === layerId
? { ...l, pins: l.pins.filter((p) => p.id !== id) }
: l,
);
if (selectedObjectId === id) deselectAll();
+ } else {
+ if (!layerId) return;
+ if (payload.event === "INSERT") {
+ layers = layers.map((l) =>
+ l.id === layerId
+ ? {
+ ...l,
+ pins: [
+ ...l.pins.filter((p) => p.id !== id),
+ payload.new,
+ ],
+ }
+ : l,
+ );
+ } else if (payload.event === "UPDATE") {
+ layers = layers.map((l) =>
+ l.id === layerId
+ ? {
+ ...l,
+ pins: l.pins.map((p) =>
+ p.id === id ? payload.new : p,
+ ),
+ }
+ : l,
+ );
+ }
}
const layerIdx = layers.findIndex((l) => l.id === layerId);
@@ -1055,33 +1062,14 @@
return;
}
- const layerId = payload.new?.layer_id ?? payload.old?.layer_id;
- if (!layerId) return;
+ let layerId = payload.new?.layer_id ?? payload.old?.layer_id;
- if (payload.event === "INSERT") {
- layers = layers.map((l) =>
- l.id === layerId
- ? {
- ...l,
- shapes: [
- ...(l.shapes ?? []).filter((s) => s.id !== id),
- payload.new,
- ],
- }
- : l,
- );
- } else if (payload.event === "UPDATE") {
- layers = layers.map((l) =>
- l.id === layerId
- ? {
- ...l,
- shapes: (l.shapes ?? []).map((s) =>
- s.id === id ? payload.new : s,
- ),
- }
- : l,
- );
- } else if (payload.event === "DELETE") {
+ if (payload.event === "DELETE") {
+ if (!layerId)
+ layerId = layers.find((l) =>
+ (l.shapes ?? []).some((s) => s.id === id),
+ )?.id;
+ if (!layerId) return;
layers = layers.map((l) =>
l.id === layerId
? {
@@ -1091,6 +1079,34 @@
: l,
);
if (selectedObjectId === id) deselectAll();
+ } else {
+ if (!layerId) return;
+ if (payload.event === "INSERT") {
+ layers = layers.map((l) =>
+ l.id === layerId
+ ? {
+ ...l,
+ shapes: [
+ ...(l.shapes ?? []).filter(
+ (s) => s.id !== id,
+ ),
+ payload.new,
+ ],
+ }
+ : l,
+ );
+ } else if (payload.event === "UPDATE") {
+ layers = layers.map((l) =>
+ l.id === layerId
+ ? {
+ ...l,
+ shapes: (l.shapes ?? []).map((s) =>
+ s.id === id ? payload.new : s,
+ ),
+ }
+ : l,
+ );
+ }
}
const layerIdx = layers.findIndex((l) => l.id === layerId);
@@ -1439,7 +1455,7 @@
>
closedelete
{/if}
@@ -1510,7 +1526,7 @@
>
closedelete
{/if}