Skip to content

Commit

Permalink
chore(web): fix overriding layer structure (#818)
Browse files Browse the repository at this point in the history
  • Loading branch information
keiya01 committed Nov 16, 2023
1 parent 0305284 commit 034e984
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 6 deletions.
29 changes: 24 additions & 5 deletions web/src/beta/lib/core/Map/Layers/hooks.ts
Expand Up @@ -339,15 +339,34 @@ export default function useHooks({
res.data.value = dataValue;
}

const rawLayer = compat(res);
const property = layer?.property;
const rawLayer = compat({
...(originalLayer.compat && property
? {
type: originalLayer.type === "group" ? "group" : "item",
extensionId: originalLayer.compat.extensionId,
property: {
default: {
...(originalLayer.compat.property?.default || {}),
...(property.default || {}),
},
},
}
: {}),
...(!originalLayer.compat && property ? { property } : {}),
...res,
});

if (!rawLayer) return;

if (
rawLayer.type === "simple" &&
rawLayer.data?.value &&
originalLayer.type === "simple" &&
originalLayer.data?.value &&
// If data isn't cachable, reuse layer id for performance.
DATA_CACHE_KEYS.some(k => !rawLayer.data?.[k]) &&
Object.isExtensible(rawLayer.data.value)
DATA_CACHE_KEYS.some(k => !originalLayer.data?.[k]) &&
Object.isExtensible(originalLayer.data.value) &&
rawLayer.type === "simple" &&
rawLayer?.data?.value
) {
// If layer property is overridden, feature is legacy layer.
// So we can set layer id to prevent unnecessary render.
Expand Down
4 changes: 3 additions & 1 deletion web/src/beta/lib/core/mantle/evaluator/simple/index.ts
Expand Up @@ -62,7 +62,9 @@ export function evalLayerAppearances(
}

return Object.fromEntries(
Object.entries(appearance).map(([k, v]) => [k, recursiveValEval(v, layer, feature)]),
Object.entries(appearance)
.map(([k, v]) => (v ? [k, recursiveValEval(v, layer, feature)] : undefined))
.filter((v): v is [keyof LayerAppearanceTypes, LayerAppearanceTypes] => !!v),
);
}

Expand Down

0 comments on commit 034e984

Please sign in to comment.