diff --git a/frontend-react/src/App.tsx b/frontend-react/src/App.tsx index 88d33e0..7cd90dc 100644 --- a/frontend-react/src/App.tsx +++ b/frontend-react/src/App.tsx @@ -133,7 +133,7 @@ export function App() { switch (action.id) { case "compile": { - const result = await compile(payload); + const result = await compile(payload, { preserve_placement: true }); actionsApi.setCompileResult(result); } break; diff --git a/src/layout.js b/src/layout.js index a4bfd96..1b72928 100644 --- a/src/layout.js +++ b/src/layout.js @@ -2404,9 +2404,9 @@ function layoutAndRouteNative(model, options = {}) { const renderMode = options.render_mode === "explicit" ? "explicit" : DEFAULT_RENDER_MODE; const respectLocks = options.respect_locks ?? true; const autoRotate = options.auto_rotate ?? true; - const preservePlacement = options.preserve_placement === true; + const preservePlacement = options.preserve_placement !== false; const placed = preservePlacement - ? preservePlacedInstances(model, { respectLocks, autoRotate: false }) + ? preservePlacedInstances(model, { respectLocks, autoRotate }) : placeInstances(model, { respectLocks, autoRotate }).placed; const placedMap = new Map(placed.map((inst) => [inst.ref, inst])); const bounds = buildBounds(model, placed); diff --git a/src/server.js b/src/server.js index 8ce0d9f..f288981 100644 --- a/src/server.js +++ b/src/server.js @@ -339,7 +339,12 @@ export function createRequestHandler() { api_version: API_VERSION, schema_version: SCHEMA_VERSION, model: laidOut, - compile: withEnvelopeMeta(compile(laidOut, parsed.options)) + compile: withEnvelopeMeta( + compile(laidOut, { + ...(parsed.options ?? {}), + preserve_placement: true + }) + ) }); } catch (err) { if (err?.code === "PAYLOAD_TOO_LARGE") { @@ -372,7 +377,12 @@ export function createRequestHandler() { api_version: API_VERSION, schema_version: SCHEMA_VERSION, model: laidOut, - compile: withEnvelopeMeta(compile(laidOut, parsed.options)) + compile: withEnvelopeMeta( + compile(laidOut, { + ...(parsed.options ?? {}), + preserve_placement: true + }) + ) }); } catch (err) { if (err?.code === "PAYLOAD_TOO_LARGE") { diff --git a/tests/baselines/ui/dense-analog.png b/tests/baselines/ui/dense-analog.png index 09245a8..2e9de6f 100644 Binary files a/tests/baselines/ui/dense-analog.png and b/tests/baselines/ui/dense-analog.png differ diff --git a/tests/baselines/ui/explicit-mode-auto-tidy.png b/tests/baselines/ui/explicit-mode-auto-tidy.png index a476e08..11f1709 100644 Binary files a/tests/baselines/ui/explicit-mode-auto-tidy.png and b/tests/baselines/ui/explicit-mode-auto-tidy.png differ diff --git a/tests/baselines/ui/laptop-viewport.png b/tests/baselines/ui/laptop-viewport.png index ae2aea7..bdd6edf 100644 Binary files a/tests/baselines/ui/laptop-viewport.png and b/tests/baselines/ui/laptop-viewport.png differ diff --git a/tests/baselines/ui/post-migration-apply.png b/tests/baselines/ui/post-migration-apply.png index 97b09b7..dffd89f 100644 Binary files a/tests/baselines/ui/post-migration-apply.png and b/tests/baselines/ui/post-migration-apply.png differ