{{ code() }}
+ {{ code() }}
+
Twenty tiles, each a static size: height in pixels, width in whole columns via
Every button below mutates the source array and nothing else. Item order is derived from the
DOM at layout time, so a prepend really lands first — the ordering bug that makes other
diff --git a/projects/demo/src/app/examples/gallery.ts b/projects/demo/src/app/examples/gallery.ts
index f2a1c24..52ee4c0 100644
--- a/projects/demo/src/app/examples/gallery.ts
+++ b/projects/demo/src/app/examples/gallery.ts
@@ -16,7 +16,11 @@ type SizingMode = 'breakpoints' | 'fixed' | 'columnWidth';
imports: [NG_MASONRY_GRID, DecimalPipe, DemoExample],
changeDetection: ChangeDetectionStrategy.OnPush,
template: `
-
Column count follows the container width through a breakpoint map —
Solve time is measured across the whole pass — reading measurements, running the solver and
writing every transform. Sizes arrive pre-computed from one shared
diff --git a/projects/demo/src/app/examples/spans.ts b/projects/demo/src/app/examples/spans.ts
index c4d5386..7ae49ff 100644
--- a/projects/demo/src/app/examples/spans.ts
+++ b/projects/demo/src/app/examples/spans.ts
@@ -13,7 +13,11 @@ import { makeCards, type DemoCard } from './cards';
imports: [NG_MASONRY_GRID, DemoExample],
changeDetection: ChangeDetectionStrategy.OnPush,
template: `
-
masonryColSpan. No body is rendered up front — every one sits behind
diff --git a/projects/demo/src/app/examples/dynamic.ts b/projects/demo/src/app/examples/dynamic.ts
index 069731b..31b9be2 100644
--- a/projects/demo/src/app/examples/dynamic.ts
+++ b/projects/demo/src/app/examples/dynamic.ts
@@ -19,7 +19,11 @@ const OPTIONS: MasonryGridOptions = {
imports: [NG_MASONRY_GRID, DemoExample],
changeDetection: ChangeDetectionStrategy.OnPush,
template: `
- { xs: 1, sm: 2, md: 3, xl: 4, '2xl': 5 }, named against the default
diff --git a/projects/demo/src/app/examples/performance.ts b/projects/demo/src/app/examples/performance.ts
index 4765011..e384d5f 100644
--- a/projects/demo/src/app/examples/performance.ts
+++ b/projects/demo/src/app/examples/performance.ts
@@ -26,7 +26,11 @@ function makeTiles(count: number): Tile[] {
imports: [NG_MASONRY_GRID, DecimalPipe, DemoExample],
changeDetection: ChangeDetectionStrategy.OnPush,
template: `
- masonryColSpan widens an item across whole columns; the solver drops it into
the group of columns with the lowest shared top edge. A
diff --git a/projects/demo/src/index.html b/projects/demo/src/index.html
index 92182bf..cd58c16 100644
--- a/projects/demo/src/index.html
+++ b/projects/demo/src/index.html
@@ -5,7 +5,8 @@