@juo/blocks 1.13.0 → 1.14.0
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.
- package/dist/ExtensionRoot-CRJx0Dtr.js +378 -0
- package/dist/block.d.ts.map +1 -1
- package/dist/{bridge-w5KQ-czl.js → bridge-D838SWmN.js} +146 -32
- package/dist/context.d.ts.map +1 -1
- package/dist/core.js +775 -35
- package/dist/{juo-workflow-BlG9CcAG.js → css-runtime-DWytAzZ5.js} +466 -611
- package/dist/editor/bridge.d.ts +8 -0
- package/dist/editor/bridge.d.ts.map +1 -1
- package/dist/editor/canvas-mode-signal.d.ts +22 -0
- package/dist/editor/canvas-mode-signal.d.ts.map +1 -0
- package/dist/editor/canvas-mode.d.ts +15 -0
- package/dist/editor/canvas-mode.d.ts.map +1 -0
- package/dist/editor/canvas-mode.test.d.ts +2 -0
- package/dist/editor/canvas-mode.test.d.ts.map +1 -0
- package/dist/editor/components.d.ts +113 -0
- package/dist/editor/components.d.ts.map +1 -1
- package/dist/editor/components.test.d.ts.map +1 -1
- package/dist/editor/handler.d.ts.map +1 -1
- package/dist/editor/handler.test.d.ts +2 -0
- package/dist/editor/handler.test.d.ts.map +1 -0
- package/dist/editor/layout-command-emitter.d.ts +31 -0
- package/dist/editor/layout-command-emitter.d.ts.map +1 -0
- package/dist/editor/layout-command-emitter.test.d.ts +2 -0
- package/dist/editor/layout-command-emitter.test.d.ts.map +1 -0
- package/dist/editor/layout-system-signal.d.ts +21 -0
- package/dist/editor/layout-system-signal.d.ts.map +1 -0
- package/dist/editor/main.d.ts +1 -0
- package/dist/editor/main.d.ts.map +1 -1
- package/dist/editor/messages.d.ts +90 -3
- package/dist/editor/messages.d.ts.map +1 -1
- package/dist/editor/messages.test.d.ts +2 -0
- package/dist/editor/messages.test.d.ts.map +1 -0
- package/dist/editor/surface-context.d.ts +7 -0
- package/dist/editor/surface-context.d.ts.map +1 -0
- package/dist/editor/surface-context.test.d.ts +2 -0
- package/dist/editor/surface-context.test.d.ts.map +1 -0
- package/dist/editor/wrapper-shared.d.ts +31 -0
- package/dist/editor/wrapper-shared.d.ts.map +1 -0
- package/dist/editor.js +863 -45
- package/dist/gridstack-adapter-DreG3XnB.js +5490 -0
- package/dist/layout/css-runtime.d.ts +41 -0
- package/dist/layout/css-runtime.d.ts.map +1 -0
- package/dist/layout/css-runtime.test.d.ts +2 -0
- package/dist/layout/css-runtime.test.d.ts.map +1 -0
- package/dist/layout/derive.d.ts +4 -0
- package/dist/layout/derive.d.ts.map +1 -0
- package/dist/layout/derive.test.d.ts +2 -0
- package/dist/layout/derive.test.d.ts.map +1 -0
- package/dist/layout/dividers.d.ts +34 -0
- package/dist/layout/dividers.d.ts.map +1 -0
- package/dist/layout/dividers.test.d.ts +2 -0
- package/dist/layout/dividers.test.d.ts.map +1 -0
- package/dist/layout/engine.d.ts +3 -0
- package/dist/layout/engine.d.ts.map +1 -0
- package/dist/layout/engine.test.d.ts +2 -0
- package/dist/layout/engine.test.d.ts.map +1 -0
- package/dist/layout/grid-utils.d.ts +57 -0
- package/dist/layout/grid-utils.d.ts.map +1 -0
- package/dist/layout/grid-utils.test.d.ts +2 -0
- package/dist/layout/grid-utils.test.d.ts.map +1 -0
- package/dist/layout/index.d.ts +12 -0
- package/dist/layout/index.d.ts.map +1 -0
- package/dist/layout/index.test.d.ts +2 -0
- package/dist/layout/index.test.d.ts.map +1 -0
- package/dist/layout/insert.d.ts +31 -0
- package/dist/layout/insert.d.ts.map +1 -0
- package/dist/layout/insert.test.d.ts +2 -0
- package/dist/layout/insert.test.d.ts.map +1 -0
- package/dist/layout/project-css.d.ts +6 -0
- package/dist/layout/project-css.d.ts.map +1 -0
- package/dist/layout/project-css.test.d.ts +2 -0
- package/dist/layout/project-css.test.d.ts.map +1 -0
- package/dist/layout/project-gridstack.d.ts +50 -0
- package/dist/layout/project-gridstack.d.ts.map +1 -0
- package/dist/layout/project-gridstack.test.d.ts +2 -0
- package/dist/layout/project-gridstack.test.d.ts.map +1 -0
- package/dist/layout/reconcile.d.ts +22 -0
- package/dist/layout/reconcile.d.ts.map +1 -0
- package/dist/layout/reconcile.test.d.ts +2 -0
- package/dist/layout/reconcile.test.d.ts.map +1 -0
- package/dist/layout/types.d.ts +118 -0
- package/dist/layout/types.d.ts.map +1 -0
- package/dist/layout-mode-adapter-BBd4JRQd.js +21 -0
- package/dist/main.d.ts +7 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/morph-Dj-xvrwt.js +182 -0
- package/dist/preact.js +1 -1
- package/dist/project-gridstack-DYLMKSH1.js +52 -0
- package/dist/react.js +1 -1
- package/dist/theme-state.d.ts +16 -0
- package/dist/theme-state.d.ts.map +1 -1
- package/dist/theme-state.layout.test.d.ts +2 -0
- package/dist/theme-state.layout.test.d.ts.map +1 -0
- package/dist/theme-state.test.d.ts +2 -0
- package/dist/theme-state.test.d.ts.map +1 -0
- package/dist/vue.js +1 -1
- package/dist/web-components/ExtensionRoot.d.ts +50 -2
- package/dist/web-components/ExtensionRoot.d.ts.map +1 -1
- package/dist/web-components/editor/ExtensionRoot.d.ts +11 -0
- package/dist/web-components/editor/ExtensionRoot.d.ts.map +1 -0
- package/dist/web-components/editor/ExtensionRoot.test.d.ts +2 -0
- package/dist/web-components/editor/ExtensionRoot.test.d.ts.map +1 -0
- package/dist/web-components/editor/InlineText.d.ts +1 -0
- package/dist/web-components/editor/InlineText.d.ts.map +1 -1
- package/dist/web-components/editor/editor-layout-controller.d.ts +28 -0
- package/dist/web-components/editor/editor-layout-controller.d.ts.map +1 -0
- package/dist/web-components/editor/gridstack-adapter.d.ts +3 -0
- package/dist/web-components/editor/gridstack-adapter.d.ts.map +1 -0
- package/dist/web-components/editor/gridstack-adapter.test.d.ts +2 -0
- package/dist/web-components/editor/gridstack-adapter.test.d.ts.map +1 -0
- package/dist/web-components/editor/morph.d.ts +32 -0
- package/dist/web-components/editor/morph.d.ts.map +1 -0
- package/dist/web-components/editor/morph.test.d.ts +2 -0
- package/dist/web-components/editor/morph.test.d.ts.map +1 -0
- package/dist/web-components/layout/layout-controller.d.ts +55 -0
- package/dist/web-components/layout/layout-controller.d.ts.map +1 -0
- package/dist/web-components/layout/view-layout-controller.d.ts +17 -0
- package/dist/web-components/layout/view-layout-controller.d.ts.map +1 -0
- package/dist/web-components/layout/view-layout-controller.test.d.ts +2 -0
- package/dist/web-components/layout/view-layout-controller.test.d.ts.map +1 -0
- package/dist/web-components/layout-grid.d.ts +47 -0
- package/dist/web-components/layout-grid.d.ts.map +1 -0
- package/dist/web-components/layout-grid.test.d.ts +2 -0
- package/dist/web-components/layout-grid.test.d.ts.map +1 -0
- package/dist/web-components/layout-mode-adapter.d.ts +51 -0
- package/dist/web-components/layout-mode-adapter.d.ts.map +1 -0
- package/dist/web-components/layout-mode-adapter.test.d.ts +2 -0
- package/dist/web-components/layout-mode-adapter.test.d.ts.map +1 -0
- package/dist/web-components-editor.js +125 -17
- package/dist/web-components-runtime.js +4 -3
- package/package.json +3 -2
- package/dist/ExtensionRoot-2xTGTu3K.js +0 -219
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { LayoutDocument } from './types';
|
|
2
|
+
/** Attribute that scopes a runtime grid container's generated stylesheet. */
|
|
3
|
+
export declare const LAYOUT_SCOPE_ATTR = "data-juo-layout";
|
|
4
|
+
/** CSS attribute selector for a given grid scope id. */
|
|
5
|
+
export declare function layoutScopeSelector(scopeId: string): string;
|
|
6
|
+
/**
|
|
7
|
+
* Build the scoped CSS Grid stylesheet for a layout, reconciled against the
|
|
8
|
+
* block ids actually being rendered (prune orphans / autofill unplaced).
|
|
9
|
+
* Pure: no DOM access.
|
|
10
|
+
*/
|
|
11
|
+
export declare function buildLayoutCss(layout: LayoutDocument, blockIds: string[], scopeId: string): string;
|
|
12
|
+
export type GridLayoutRuntime = {
|
|
13
|
+
css: string;
|
|
14
|
+
/**
|
|
15
|
+
* Leader block ids (leftmost block of each divider row) — draw the full-width
|
|
16
|
+
* bare-style divider line above their row.
|
|
17
|
+
*/
|
|
18
|
+
dividerBlockIds: Set<string>;
|
|
19
|
+
/**
|
|
20
|
+
* Every block on a divider row — get the extra divider-row spacing so the gap
|
|
21
|
+
* grows (gap | divider | gap) only where a divider is drawn.
|
|
22
|
+
*/
|
|
23
|
+
dividerRowBlockIds: Set<string>;
|
|
24
|
+
/**
|
|
25
|
+
* Blocks with the sticky `fill` flag set. Used to reflect the "fill" toggle's
|
|
26
|
+
* active/pressed state onto the block wrapper chrome (only the block the
|
|
27
|
+
* merchant filled — never its neighbours).
|
|
28
|
+
*/
|
|
29
|
+
fullWidthBlockIds: Set<string>;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Reconcile layout, emit scoped CSS, and classify bare-style row dividers in
|
|
33
|
+
* one pass (avoids double reconciliation in ExtensionRoot).
|
|
34
|
+
*
|
|
35
|
+
* Empty-block collapse is handled entirely in CSS (see `collapseRule` in
|
|
36
|
+
* project-css): an empty block sets `display:none` and, because row spacing is a
|
|
37
|
+
* per-item bottom margin rather than row-gap, its row closes up with no ghost
|
|
38
|
+
* gap — no runtime re-projection needed.
|
|
39
|
+
*/
|
|
40
|
+
export declare function buildGridLayout(layout: LayoutDocument, blockIds: string[], scopeId: string): GridLayoutRuntime;
|
|
41
|
+
//# sourceMappingURL=css-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css-runtime.d.ts","sourceRoot":"","sources":["../../src/layout/css-runtime.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,oBAAoB,CAAC;AAEnD,wDAAwD;AACxD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,EAAE,MAAM,GACd,MAAM,CAMR;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B;;;OAGG;IACH,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC;;;;OAIG;IACH,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAChC,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,EAAE,MAAM,GACd,iBAAiB,CAsBnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css-runtime.test.d.ts","sourceRoot":"","sources":["../../src/layout/css-runtime.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { BreakpointDef, LayoutDocument, LayoutForBreakpoint } from './types';
|
|
2
|
+
export declare function deriveLayout(base: LayoutForBreakpoint, target: BreakpointDef): LayoutForBreakpoint;
|
|
3
|
+
export declare function resolveLayout(doc: LayoutDocument, breakpointId: string): LayoutForBreakpoint;
|
|
4
|
+
//# sourceMappingURL=derive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../src/layout/derive.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAY,cAAc,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE5F,wBAAgB,YAAY,CAC1B,IAAI,EAAE,mBAAmB,EACzB,MAAM,EAAE,aAAa,GACpB,mBAAmB,CAWrB;AAED,wBAAgB,aAAa,CAC3B,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,MAAM,GACnB,mBAAmB,CAYrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derive.test.d.ts","sourceRoot":"","sources":["../../src/layout/derive.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { GridRect } from './types';
|
|
2
|
+
export type RowDividerClassification = {
|
|
3
|
+
/**
|
|
4
|
+
* Leftmost block (reading order) of each divider row — draws the full-width
|
|
5
|
+
* horizontal divider line above its row. A subset of `rowBlockIds`.
|
|
6
|
+
*/
|
|
7
|
+
leaderBlockIds: Set<string>;
|
|
8
|
+
/**
|
|
9
|
+
* Every block belonging to a divider row. These receive the extra
|
|
10
|
+
* divider-row spacing (a top margin) so the boundary grows to
|
|
11
|
+
* gap | divider | gap ONLY where a divider is actually drawn — boundaries
|
|
12
|
+
* without a divider keep the regular single row-gap. Tagging all members
|
|
13
|
+
* (not just the leader) keeps side-by-side blocks on the same row aligned.
|
|
14
|
+
*/
|
|
15
|
+
rowBlockIds: Set<string>;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Classify "divider rows": grid rows below the first whose top boundary is a
|
|
19
|
+
* clean full-width break (not crossed by any spanning block). Such a boundary
|
|
20
|
+
* gets a horizontal divider line plus extra breathing room.
|
|
21
|
+
*
|
|
22
|
+
* Rules:
|
|
23
|
+
* 1. The first row is never a divider row (no divider above the content top).
|
|
24
|
+
* 2. If any block spans across a row boundary (a tall block with
|
|
25
|
+
* `r < boundary < r + h`), that boundary is NOT a clean break — drawing a
|
|
26
|
+
* full-width line there would slice through the spanning block, and the
|
|
27
|
+
* rows beside it should read as a single band. Such rows are skipped, so
|
|
28
|
+
* they keep the regular gap with no divider (e.g. a tall "Upcoming items"
|
|
29
|
+
* next to a stacked "Upcoming renewal" / "Subscription notifications").
|
|
30
|
+
* 3. Only the leftmost block of a divider row leads the line (drawn once,
|
|
31
|
+
* full canvas width); every block on that row gets the spacing margin.
|
|
32
|
+
*/
|
|
33
|
+
export declare function classifyRowDividers(items: Record<string, GridRect>, blockIds: readonly string[]): RowDividerClassification;
|
|
34
|
+
//# sourceMappingURL=dividers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dividers.d.ts","sourceRoot":"","sources":["../../src/layout/dividers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,MAAM,wBAAwB,GAAG;IACrC;;;OAGG;IACH,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B;;;;;;OAMG;IACH,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC1B,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC/B,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,wBAAwB,CA8B1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dividers.test.d.ts","sourceRoot":"","sources":["../../src/layout/dividers.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/layout/engine.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,YAAY,EAElB,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,YAAY,EAAE,YAiG1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.test.d.ts","sourceRoot":"","sources":["../../src/layout/engine.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { GridRect } from './types';
|
|
2
|
+
export declare function clampRect(rect: GridRect, cols: number): GridRect;
|
|
3
|
+
export declare function rectsOverlap(a: GridRect, b: GridRect): boolean;
|
|
4
|
+
export declare function readingOrder(items: Record<string, GridRect>): string[];
|
|
5
|
+
/**
|
|
6
|
+
* Compact items with GridStack `float:false` gravity: pull every block up as
|
|
7
|
+
* far as it fits, preserving its column (`c`) and size (`w`/`h`), in reading
|
|
8
|
+
* order (row then column). This:
|
|
9
|
+
* - removes vertical gaps (e.g. left behind by a deleted block), and
|
|
10
|
+
* - resolves overlaps (e.g. after a block is stretched to full width over its
|
|
11
|
+
* row-mates) by pushing later blocks down instead of letting them overlay.
|
|
12
|
+
*
|
|
13
|
+
* The result is deterministic and idempotent for an already-compact layout, so
|
|
14
|
+
* it matches what layout mode (GridStack) shows and is safe to re-run.
|
|
15
|
+
*/
|
|
16
|
+
export declare function compactItems(items: Record<string, GridRect>, cols: number): Record<string, GridRect>;
|
|
17
|
+
/**
|
|
18
|
+
* Compute the free horizontal span available to `target` within its row band
|
|
19
|
+
* (the rows it vertically overlaps), given the other blocks in `items`.
|
|
20
|
+
*
|
|
21
|
+
* - `left` = the right edge (c + w) of the nearest block sitting to the left of
|
|
22
|
+
* `target` in the same band, or 0 if none.
|
|
23
|
+
* - `right` = the left edge (c) of the nearest block sitting to the right of
|
|
24
|
+
* `target` in the same band, or `cols` if none.
|
|
25
|
+
*
|
|
26
|
+
* Blocks that don't share any row with `target`, and the target itself
|
|
27
|
+
* (`target.id` compared via reference is not possible here, so pass `excludeId`),
|
|
28
|
+
* are ignored. This defines the maximum width a block can grow to WITHOUT moving
|
|
29
|
+
* any neighbour — the basis for the "fill" toggle.
|
|
30
|
+
*/
|
|
31
|
+
export declare function rowBandBounds(items: Record<string, GridRect>, target: GridRect, cols: number, excludeId?: string): {
|
|
32
|
+
left: number;
|
|
33
|
+
right: number;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Re-apply every sticky `fill` block's layout. Fill blocks that share a row band
|
|
37
|
+
* and the same free segment (the span between the non-fill blocks that bound
|
|
38
|
+
* them) split that segment EQUALLY, laid left→right in reading order. As a
|
|
39
|
+
* neighbour is stretched the segment shrinks and the fill blocks squeeze down
|
|
40
|
+
* together; once a block's equal share would fall below the minimum width
|
|
41
|
+
* (`ceil(cols / MAX_BLOCKS_PER_ROW)`) it can no longer squeeze, so the overflow
|
|
42
|
+
* blocks wrap to their own fresh full-width rows below the band.
|
|
43
|
+
*
|
|
44
|
+
* When nothing overflows, non-fill blocks are never moved and no compaction runs
|
|
45
|
+
* — fill only ever consumes empty columns in place, so it can't create overlaps.
|
|
46
|
+
* When a block wraps, the layout is compacted so the vacated/added rows close up.
|
|
47
|
+
*
|
|
48
|
+
* Run after any mutation (drag, delete, resize, reflow) so filled blocks reclaim
|
|
49
|
+
* the space a neighbour vacates and re-equalise as row-mates come and go.
|
|
50
|
+
*/
|
|
51
|
+
export declare function applyFillExpansion(items: Record<string, GridRect>, cols: number): Record<string, GridRect>;
|
|
52
|
+
/** Finds the first free cell scanning rows top-to-bottom, columns left-to-right. @param cols must be >= 1. */
|
|
53
|
+
export declare function findFreeRect(items: Record<string, GridRect>, size: {
|
|
54
|
+
w: number;
|
|
55
|
+
h: number;
|
|
56
|
+
}, cols: number): GridRect;
|
|
57
|
+
//# sourceMappingURL=grid-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grid-utils.d.ts","sourceRoot":"","sources":["../../src/layout/grid-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAY5D,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAOhE;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAO9D;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,EAAE,CAOtE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC/B,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAe1B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC/B,MAAM,EAAE,QAAQ,EAChB,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,MAAM,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAejC;AAmCD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC/B,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CA6E1B;AAED,8GAA8G;AAC9G,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC/B,IAAI,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAC9B,IAAI,EAAE,MAAM,GACX,QAAQ,CAYV"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grid-utils.test.d.ts","sourceRoot":"","sources":["../../src/layout/grid-utils.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type { BreakpointId, GridRect, GridConfig, ContainerQuery, BreakpointDef, LayoutForBreakpoint, LayoutDocument, GridCtx, LayoutCommand, LayoutEngine, LayoutEngineId, } from './types';
|
|
2
|
+
export { GRID_V1_ENGINE_ID, DEFAULT_GRID, DEFAULT_BREAKPOINTS, PAGE_ROOT_SLOT, } from './types';
|
|
3
|
+
export { clampRect, rectsOverlap, readingOrder, findFreeRect, compactItems, } from './grid-utils';
|
|
4
|
+
export { gridV1Engine } from './engine';
|
|
5
|
+
export { deriveLayout, resolveLayout } from './derive';
|
|
6
|
+
export { projectToCss } from './project-css';
|
|
7
|
+
export { projectToGridStack, type GridStackProjection, type GridStackWidgetProjection, } from './project-gridstack';
|
|
8
|
+
export { createDefaultLayoutDocument, reconcileLayout, compactLayoutDocument, expandFillLayoutDocument, } from './reconcile';
|
|
9
|
+
export { classifyRowDividers, type RowDividerClassification, } from './dividers';
|
|
10
|
+
export { DEFAULT_NEW_BLOCK_HEIGHT, insertRectRelative, type InsertPosition, } from './insert';
|
|
11
|
+
export { LAYOUT_SCOPE_ATTR, layoutScopeSelector, buildLayoutCss, buildGridLayout, type GridLayoutRuntime, } from './css-runtime';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,OAAO,EACP,aAAa,EACb,YAAY,EACZ,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,GACb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,GAC/B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,2BAA2B,EAC3B,eAAe,EACf,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,cAAc,GACpB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,KAAK,iBAAiB,GACvB,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../src/layout/index.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { LayoutDocument } from './types';
|
|
2
|
+
export type InsertPosition = "before" | "after";
|
|
3
|
+
/**
|
|
4
|
+
* Default height (in row units) for a freshly added block. `1` row (= rowUnit,
|
|
5
|
+
* 40px by default) is too short for the layout-mode skeleton's icon + name +
|
|
6
|
+
* lines and clips the label, so new blocks start a few rows tall. The merchant
|
|
7
|
+
* can still resize down in layout mode.
|
|
8
|
+
*/
|
|
9
|
+
export declare const DEFAULT_NEW_BLOCK_HEIGHT = 4;
|
|
10
|
+
/**
|
|
11
|
+
* Insert a rect for `blockId` adjacent to `targetId` in the base breakpoint of
|
|
12
|
+
* `doc`, so a block added via the editor's add buttons lands directly
|
|
13
|
+
* above/below the block it was added relative to — not at the end of the grid.
|
|
14
|
+
*
|
|
15
|
+
* The new block inherits the target's column (`c`) and width (`w`) so it appears
|
|
16
|
+
* in the same lane the user added it from (full-width when the target is
|
|
17
|
+
* full-width). Every block at or below the insertion row is shifted down by the
|
|
18
|
+
* new block's height so reading order is preserved regardless of GridStack's
|
|
19
|
+
* compaction.
|
|
20
|
+
*
|
|
21
|
+
* Returns a NEW document; the input is never mutated. If the base breakpoint or
|
|
22
|
+
* the target's rect is missing (layout not reconciled yet), the document is
|
|
23
|
+
* returned unchanged — `reconcileLayout` then falls back to its default
|
|
24
|
+
* end-of-grid placement.
|
|
25
|
+
*/
|
|
26
|
+
export declare function insertRectRelative(doc: LayoutDocument, args: {
|
|
27
|
+
blockId: string;
|
|
28
|
+
targetId: string;
|
|
29
|
+
position: InsertPosition;
|
|
30
|
+
}): LayoutDocument;
|
|
31
|
+
//# sourceMappingURL=insert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["../../src/layout/insert.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAE5D,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,cAAc,CAAA;CAAE,GACpE,cAAc,CA8BhB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insert.test.d.ts","sourceRoot":"","sources":["../../src/layout/insert.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-css.d.ts","sourceRoot":"","sources":["../../src/layout/project-css.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAwB,cAAc,EAAuB,MAAM,SAAS,CAAC;AAsMzF,wBAAgB,YAAY,CAC1B,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC3C,MAAM,CAqBR"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-css.test.d.ts","sourceRoot":"","sources":["../../src/layout/project-css.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { LayoutDocument } from './types';
|
|
2
|
+
export { MAX_BLOCKS_PER_ROW } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Minimum height (in row units) the merchant may resize a block to in layout
|
|
5
|
+
* mode. Below this the layout-mode skeleton's icon + name label gets clipped
|
|
6
|
+
* and the block becomes unidentifiable, so we floor the resize handle here
|
|
7
|
+
* (enforced via GridStack's per-widget `minH`).
|
|
8
|
+
*/
|
|
9
|
+
export declare const MIN_BLOCK_ROWS = 2;
|
|
10
|
+
/**
|
|
11
|
+
* Minimum width (in CSS px) the merchant may resize a block to in layout mode.
|
|
12
|
+
* Sized so a block can shrink to a third of the grid (≈4 of 12 columns) at
|
|
13
|
+
* realistic canvas widths, letting three blocks sit alongside each other — the
|
|
14
|
+
* previous 320px "mobile block" floor forced blocks to ~half the grid, capping
|
|
15
|
+
* a row at two. Columns are a fraction of the grid width, so this is converted
|
|
16
|
+
* to a per-widget `minW` (column count) by the adapter, which is the only place
|
|
17
|
+
* that knows the live pixel width.
|
|
18
|
+
*/
|
|
19
|
+
export declare const MIN_BLOCK_PX = 200;
|
|
20
|
+
export type GridStackWidgetProjection = {
|
|
21
|
+
id: string;
|
|
22
|
+
x: number;
|
|
23
|
+
y: number;
|
|
24
|
+
w: number;
|
|
25
|
+
h: number;
|
|
26
|
+
minH: number;
|
|
27
|
+
/** True when the block already fills the free span of its row band. */
|
|
28
|
+
filled: boolean;
|
|
29
|
+
};
|
|
30
|
+
export type GridStackProjection = {
|
|
31
|
+
options: {
|
|
32
|
+
column: number;
|
|
33
|
+
cellHeight: number;
|
|
34
|
+
margin: number;
|
|
35
|
+
float: boolean;
|
|
36
|
+
sizeToContent: boolean;
|
|
37
|
+
};
|
|
38
|
+
widgets: GridStackWidgetProjection[];
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Resolve which breakpoint a container of `containerWidthPx` renders, mirroring
|
|
42
|
+
* the CSS `@container (max-width:N)` cascade in `project-css.ts`: start at the
|
|
43
|
+
* base (widest) breakpoint and let each narrower breakpoint whose `maxWidth`
|
|
44
|
+
* query matches override it (document order = widest→narrowest, so the last
|
|
45
|
+
* match — the narrowest applicable — wins). Returns the base id when the width
|
|
46
|
+
* can't be measured (0 / jsdom), so layout mode defaults to desktop.
|
|
47
|
+
*/
|
|
48
|
+
export declare function resolveActiveBreakpoint(doc: LayoutDocument, containerWidthPx: number): string;
|
|
49
|
+
export declare function projectToGridStack(doc: LayoutDocument, breakpointId: string): GridStackProjection;
|
|
50
|
+
//# sourceMappingURL=project-gridstack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-gridstack.d.ts","sourceRoot":"","sources":["../../src/layout/project-gridstack.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C;;;;;GAKG;AACH,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,MAAM,CAAC;AAEhC,MAAM,MAAM,yBAAyB,GAAG;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,OAAO,CAAC;QACf,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC;IACF,OAAO,EAAE,yBAAyB,EAAE,CAAC;CACtC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,cAAc,EACnB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAQR;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,MAAM,GACnB,mBAAmB,CAgCrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-gridstack.test.d.ts","sourceRoot":"","sources":["../../src/layout/project-gridstack.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { LayoutDocument } from './types';
|
|
2
|
+
export declare function createDefaultLayoutDocument(blockIds: string[]): LayoutDocument;
|
|
3
|
+
export declare function reconcileLayout(doc: LayoutDocument | null | undefined, blockIds: string[]): LayoutDocument;
|
|
4
|
+
/**
|
|
5
|
+
* Compact the base (authored) breakpoint of a layout document with
|
|
6
|
+
* `float:false` gravity (see `compactItems`). Used after mutations that can
|
|
7
|
+
* leave the settled CSS-grid view out of sync with the GridStack model — most
|
|
8
|
+
* notably deleting a block (which otherwise leaves a vertical gap) or stretching
|
|
9
|
+
* one to full width (which otherwise overlays its row-mates). Narrower
|
|
10
|
+
* breakpoints are derived at projection time and need no compaction here.
|
|
11
|
+
*/
|
|
12
|
+
export declare function compactLayoutDocument(doc: LayoutDocument | null | undefined): LayoutDocument | null | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Re-apply sticky `fill` expansion to the base (authored) breakpoint of a layout
|
|
15
|
+
* document (see `applyFillExpansion`). Mutations routed through the block tree
|
|
16
|
+
* (e.g. deleting or adding a block) reconcile + compact the layout but do NOT go
|
|
17
|
+
* through the grid engine's command pipeline, so without this a fill block never
|
|
18
|
+
* reclaims the columns a deleted row-mate vacates. Kept document-level to mirror
|
|
19
|
+
* `compactLayoutDocument` and run right after it.
|
|
20
|
+
*/
|
|
21
|
+
export declare function expandFillLayoutDocument(doc: LayoutDocument | null | undefined): LayoutDocument | null | undefined;
|
|
22
|
+
//# sourceMappingURL=reconcile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../src/layout/reconcile.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,cAAc,EAEpB,MAAM,SAAS,CAAC;AAEjB,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,cAAc,CAa9E;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,EACtC,QAAQ,EAAE,MAAM,EAAE,GACjB,cAAc,CA4BhB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GACrC,cAAc,GAAG,IAAI,GAAG,SAAS,CAUnC;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GACrC,cAAc,GAAG,IAAI,GAAG,SAAS,CAUnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconcile.test.d.ts","sourceRoot":"","sources":["../../src/layout/reconcile.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
export type BreakpointId = string;
|
|
2
|
+
/**
|
|
3
|
+
* 0-indexed cell coordinates (c/r) and spans (w/h).
|
|
4
|
+
*
|
|
5
|
+
* `fill` is a sticky per-block flag: when true the block consumes all the free
|
|
6
|
+
* space in its row band (up to full width) and keeps doing so as neighbours move
|
|
7
|
+
* — see {@link applyFillExpansion}. It's toggled by the `fillWidth` command and
|
|
8
|
+
* cleared when the merchant manually resizes the block's width.
|
|
9
|
+
*/
|
|
10
|
+
export type GridRect = {
|
|
11
|
+
c: number;
|
|
12
|
+
r: number;
|
|
13
|
+
w: number;
|
|
14
|
+
h: number;
|
|
15
|
+
fill?: boolean;
|
|
16
|
+
};
|
|
17
|
+
export type GridConfig = {
|
|
18
|
+
cols: number;
|
|
19
|
+
gap: number;
|
|
20
|
+
rowUnit: number;
|
|
21
|
+
};
|
|
22
|
+
export type ContainerQuery = {
|
|
23
|
+
maxWidth: number;
|
|
24
|
+
};
|
|
25
|
+
export type BreakpointDef = {
|
|
26
|
+
id: BreakpointId;
|
|
27
|
+
cols: number;
|
|
28
|
+
/** Absent for the base (widest) breakpoint; present for narrower ones. */
|
|
29
|
+
query?: ContainerQuery;
|
|
30
|
+
};
|
|
31
|
+
export type LayoutForBreakpoint = {
|
|
32
|
+
grid: GridConfig;
|
|
33
|
+
/** Keyed by Block.id — the ONLY thing the renderer reads. */
|
|
34
|
+
items: Record<string, GridRect>;
|
|
35
|
+
/** Engine-private (future zones/stacks/groups) — opaque to model/renderer. */
|
|
36
|
+
data?: unknown;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Identifier of a real layout-document engine format (the shape a persisted
|
|
40
|
+
* {@link LayoutDocument} is authored in). This is the canonical registry of
|
|
41
|
+
* engines — add `"grid-v2"` etc. here. It intentionally does NOT include
|
|
42
|
+
* `"legacy"`: legacy is the *absence* of the layout system, not a document
|
|
43
|
+
* format, so no doc is ever tagged `"legacy"`. The theme-level opt-in
|
|
44
|
+
* (`GlobalStyles.layoutEngine`) layers `"legacy"` on top of this set.
|
|
45
|
+
*/
|
|
46
|
+
export type LayoutEngineId = "grid-v1";
|
|
47
|
+
export type LayoutDocument = {
|
|
48
|
+
version: 1;
|
|
49
|
+
engine: LayoutEngineId;
|
|
50
|
+
/** Ordered widest → narrowest; index 0 is the authored base. */
|
|
51
|
+
breakpoints: BreakpointDef[];
|
|
52
|
+
layouts: Partial<Record<BreakpointId, LayoutForBreakpoint>>;
|
|
53
|
+
};
|
|
54
|
+
/** Runtime context passed to engine methods: the resolved GridConfig plus the active breakpoint id. */
|
|
55
|
+
export type GridCtx = {
|
|
56
|
+
breakpoint: BreakpointId;
|
|
57
|
+
cols: number;
|
|
58
|
+
gap: number;
|
|
59
|
+
rowUnit: number;
|
|
60
|
+
};
|
|
61
|
+
export type LayoutCommand = {
|
|
62
|
+
kind: "add";
|
|
63
|
+
blockId: string;
|
|
64
|
+
rect?: GridRect;
|
|
65
|
+
} | {
|
|
66
|
+
kind: "move";
|
|
67
|
+
blockId: string;
|
|
68
|
+
to: {
|
|
69
|
+
c: number;
|
|
70
|
+
r: number;
|
|
71
|
+
};
|
|
72
|
+
} | {
|
|
73
|
+
kind: "resize";
|
|
74
|
+
blockId: string;
|
|
75
|
+
size: {
|
|
76
|
+
w: number;
|
|
77
|
+
h: number;
|
|
78
|
+
};
|
|
79
|
+
} | {
|
|
80
|
+
kind: "remove";
|
|
81
|
+
blockId: string;
|
|
82
|
+
} | {
|
|
83
|
+
kind: "setRects";
|
|
84
|
+
rects: Record<string, GridRect>;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Toggle a block's sticky `fill` flag. When enabled the block expands to
|
|
88
|
+
* consume the free space in its row band (and re-expands as neighbours move);
|
|
89
|
+
* when disabled it keeps its current width.
|
|
90
|
+
*/
|
|
91
|
+
| {
|
|
92
|
+
kind: "fillWidth";
|
|
93
|
+
blockId: string;
|
|
94
|
+
};
|
|
95
|
+
export interface LayoutEngine {
|
|
96
|
+
id: LayoutEngineId;
|
|
97
|
+
applyCommand(doc: LayoutDocument, cmd: LayoutCommand, ctx: GridCtx): LayoutDocument;
|
|
98
|
+
reflow(doc: LayoutDocument, ctx: GridCtx): LayoutDocument;
|
|
99
|
+
}
|
|
100
|
+
export declare const GRID_V1_ENGINE_ID: LayoutEngineId;
|
|
101
|
+
/**
|
|
102
|
+
* The slot whose children the MVP LayoutDocument governs (the "page-root
|
|
103
|
+
* slot"). The editor's getLayoutBlockIds and the runtime ExtensionRoot
|
|
104
|
+
* grid container both key off this so they govern the SAME block set.
|
|
105
|
+
*/
|
|
106
|
+
export declare const PAGE_ROOT_SLOT = "content";
|
|
107
|
+
export declare const DEFAULT_GRID: Readonly<GridConfig>;
|
|
108
|
+
/**
|
|
109
|
+
* Maximum number of blocks allowed side by side in a single row. Fill blocks
|
|
110
|
+
* split their free row-band space equally down to a floor of
|
|
111
|
+
* `ceil(cols / MAX_BLOCKS_PER_ROW)` columns; below that they wrap to a new
|
|
112
|
+
* full-width row (see `applyFillExpansion` in grid-utils). The GridStack
|
|
113
|
+
* adapter uses the same floor for per-widget `minW`, capping a row at this many
|
|
114
|
+
* blocks regardless of the live canvas width.
|
|
115
|
+
*/
|
|
116
|
+
export declare const MAX_BLOCKS_PER_ROW = 3;
|
|
117
|
+
export declare const DEFAULT_BREAKPOINTS: readonly BreakpointDef[];
|
|
118
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/layout/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const LAYOUT_INTERACTION_START = "juo-layout-interaction-start";
|
|
2
|
+
const LAYOUT_INTERACTION_END = "juo-layout-interaction-end";
|
|
3
|
+
const LAYOUT_POP_CLASS = "juo-layout-pop";
|
|
4
|
+
let current = null;
|
|
5
|
+
function registerLayoutModeAdapter(adapter) {
|
|
6
|
+
current = adapter;
|
|
7
|
+
}
|
|
8
|
+
function getLayoutModeAdapter() {
|
|
9
|
+
return current;
|
|
10
|
+
}
|
|
11
|
+
function clearLayoutModeAdapter() {
|
|
12
|
+
current = null;
|
|
13
|
+
}
|
|
14
|
+
export {
|
|
15
|
+
LAYOUT_INTERACTION_END,
|
|
16
|
+
LAYOUT_INTERACTION_START,
|
|
17
|
+
LAYOUT_POP_CLASS,
|
|
18
|
+
clearLayoutModeAdapter,
|
|
19
|
+
getLayoutModeAdapter,
|
|
20
|
+
registerLayoutModeAdapter
|
|
21
|
+
};
|
package/dist/main.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export type { Block, BlockInstance, BlockDefinition, BlockLocaleFile, BlockRenderer, BlockPreset, BlockPresets, } from './block';
|
|
2
2
|
export { attachEmptyTracking, backfillInstanceDefaults, createBlockInstance, createBlockInstanceFromJSON, createBlockInstanceFromObject, createCeRenderer, defineBlock, defineBlockRuntime, getDefinedBlocks, hasRenderedContent, isStubDefinition, withWrapper, registerBlock, SelectedBlockContext, createSelectedBlock, BlockWrapperEvent, serializeBlocks, onRegisterBlock, } from './block';
|
|
3
|
-
export { ThemeStateContext, createThemeState, indexOverrides, type TranslationCatalogs, type TranslationMode, type TranslationScope, type TranslationOverride, type ThemeLocaleState, type ThemeState, type ThemeSurface, type ThemeSurfaceState, type GlobalStyles, type GlobalStyleColors, type ThemeType, DEFAULT_GLOBAL_STYLES, } from './theme-state';
|
|
3
|
+
export { ThemeStateContext, createThemeState, indexOverrides, type TranslationCatalogs, type TranslationMode, type TranslationScope, type TranslationOverride, type ThemeLocaleState, type ThemeState, type ThemeSurface, type ThemeSurfaceState, type GlobalStyles, type GlobalStyleColors, type ThemeType, type LayoutEngine, DEFAULT_GLOBAL_STYLES, } from './theme-state';
|
|
4
4
|
export { TranslationContext, createTranslationService, type TranslationServiceOptions, type TranslationService, } from './translation';
|
|
5
5
|
export { ContextRequestEvent, ContextProvideEvent, type ContextCallback, createContext, injectContext, provideContext, subscribeContext, type ContextType, type UnknownContext, } from './context';
|
|
6
6
|
export { StateContext, createState } from './state';
|
|
@@ -8,5 +8,11 @@ export { waitForDevBlocksUrl, loadBlockRegistry } from './registry';
|
|
|
8
8
|
export * from './utils';
|
|
9
9
|
export * from './services';
|
|
10
10
|
export * from './flows';
|
|
11
|
+
export * from './layout';
|
|
12
|
+
export { registerLayoutModeAdapter, getLayoutModeAdapter, clearLayoutModeAdapter, type LayoutModeAdapter, type LayoutModeMountInputs, type LayoutModeRectsChange, } from './web-components/layout-mode-adapter';
|
|
13
|
+
export { canvasMode } from './editor/canvas-mode-signal';
|
|
14
|
+
export { layoutSystemEnabled, setLayoutSystemEnabled, } from './editor/layout-system-signal';
|
|
15
|
+
export { setActiveSurfaceContext, getActiveSurfaceContext, clearAllSurfaceContexts, } from './editor/surface-context';
|
|
16
|
+
export { setLayoutCommandEmitter, emitLayoutSetRects, setLayoutCommandDispatcher, emitLayoutCommand, type LayoutCommandEmitter, type LayoutSetRectsEvent, type LayoutCommandDispatcher, type LayoutCommandEvent, } from './editor/layout-command-emitter';
|
|
11
17
|
export { Signal, signal, effect, computed, untracked, } from '@preact/signals-core';
|
|
12
18
|
//# sourceMappingURL=main.d.ts.map
|
package/dist/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,KAAK,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC3B,6BAA6B,EAC7B,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,eAAe,GAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,eAAe,EACpB,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,cAAc,GACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpE,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,KAAK,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC3B,6BAA6B,EAC7B,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,eAAe,GAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,eAAe,EACpB,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,cAAc,GACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpE,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AAEzB,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,sBAAsB,EACtB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,sCAAsC,CAAC;AAO9C,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,0BAA0B,EAC1B,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,GACxB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,MAAM,EACN,MAAM,EACN,MAAM,EACN,QAAQ,EACR,SAAS,GACV,MAAM,sBAAsB,CAAC"}
|