@edv4h/usketch-plugin-map 0.7.0 → 0.8.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/index.d.ts CHANGED
@@ -1,9 +1,12 @@
1
1
  export { BASE_MAP_TYPE, type BaseInfo, type BaseMapShapeData, } from "./base/base-map-shape.js";
2
2
  export { type BaseToolState, baseStateStore, useBaseState } from "./base/base-state.js";
3
3
  export { computeTerritory, type Territory } from "./base/territory.js";
4
+ export { type BaseGenParams, baseTerrainAt, DEFAULT_BASE_GEN } from "./base-terrain.js";
4
5
  export { type GenState, genStateStore, useGenState, type WorldRect } from "./gen-state.js";
6
+ export { resolveTilemap } from "./generate.js";
5
7
  export { GENERATORS, type GenContext, type GenParam, type MapGenerator, } from "./generators/index.js";
6
8
  export { ICONS, type IconCategory, type IconDef } from "./icons.js";
9
+ export { DEFAULT_INFINITE_SEED, disableInfiniteTerrain, type EnableInfiniteTerrainOptions, enableInfiniteTerrain, getInfiniteSeed, isInfiniteTerrainEnabled, setInfiniteSeed, } from "./infinite-terrain.js";
7
10
  export { MAP_ICON_TYPE, type MapIconShapeData } from "./map-icon-shape.js";
8
11
  export { MAP_TOOL_ID } from "./map-tool-id.js";
9
12
  export type { ColorMode } from "./palette.js";
@@ -12,6 +15,7 @@ export { type RangeEraseTargets, rangeEraseStore, useRangeEraseTargets, } from "
12
15
  export type { ReactiveStore } from "./reactive-store.js";
13
16
  export { type LineStyle, type MapRenderConfig, renderConfigStore, } from "./render-config.js";
14
17
  export { TERRAINS, type TerrainDef, type TerrainKey } from "./terrain.js";
15
- export { DEFAULT_TILE, TILEMAP_TYPE, type TileMapShapeData } from "./tilemap-shape.js";
18
+ export { DEFAULT_TILE, isTileMap, lowestTilemap, makeTileMap, seededTilemap, TILEMAP_TYPE, type TileMapShapeData, } from "./tilemap-shape.js";
16
19
  export { MAP_MODES, type MapMode, type MapToolState, toolStateStore, useMapToolState, } from "./tool-state.js";
20
+ export { type InfiniteTerrainControls, useInfiniteTerrain, } from "./use-infinite-terrain.js";
17
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,KAAK,QAAQ,EACb,KAAK,gBAAgB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,KAAK,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EACN,UAAU,EACV,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,YAAY,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EACN,KAAK,iBAAiB,EACtB,eAAe,EACf,oBAAoB,GACpB,MAAM,wBAAwB,CAAC;AAMhC,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACN,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,iBAAiB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EACN,SAAS,EACT,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,cAAc,EACd,eAAe,GACf,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,KAAK,QAAQ,EACb,KAAK,gBAAgB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,KAAK,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,EAAE,KAAK,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAK3F,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACN,UAAU,EACV,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,YAAY,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAMpE,OAAO,EACN,qBAAqB,EACrB,sBAAsB,EACtB,KAAK,4BAA4B,EACjC,qBAAqB,EACrB,eAAe,EACf,wBAAwB,EACxB,eAAe,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EACN,KAAK,iBAAiB,EACtB,eAAe,EACf,oBAAoB,GACpB,MAAM,wBAAwB,CAAC;AAMhC,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACN,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,iBAAiB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EACN,YAAY,EACZ,SAAS,EACT,aAAa,EACb,WAAW,EACX,aAAa,EACb,YAAY,EACZ,KAAK,gBAAgB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,SAAS,EACT,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,cAAc,EACd,eAAe,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,KAAK,uBAAuB,EAC5B,kBAAkB,GAClB,MAAM,2BAA2B,CAAC"}
package/dist/index.js CHANGED
@@ -1,15 +1,28 @@
1
1
  export { BASE_MAP_TYPE, } from "./base/base-map-shape.js";
2
2
  export { baseStateStore, useBaseState } from "./base/base-state.js";
3
3
  export { computeTerritory } from "./base/territory.js";
4
+ export { baseTerrainAt, DEFAULT_BASE_GEN } from "./base-terrain.js";
4
5
  export { genStateStore, useGenState } from "./gen-state.js";
6
+ // NOTE: `resolveTilemap` returns the FIRST tilemap in iteration order (or creates
7
+ // one) — NOT deterministic across synced peers when several tilemaps exist. For
8
+ // deterministic selection use `seededTilemap` / `lowestTilemap`, or the
9
+ // `enableInfiniteTerrain` API which already picks deterministically.
10
+ export { resolveTilemap } from "./generate.js";
5
11
  export { GENERATORS, } from "./generators/index.js";
6
12
  export { ICONS } from "./icons.js";
13
+ // ── Infinite base terrain public API (#946 / #937 follow-up) ──
14
+ // Enable/disable/seed the infinite base terrain from a host's own UI without the
15
+ // Control HUD. Same logic the HUD toggle runs; the seed lives on the tilemap
16
+ // shape (synced/persisted), so these take a BoardStore. Use the functions for
17
+ // imperative control, or `useInfiniteTerrain(store)` for a reactive React binding.
18
+ export { DEFAULT_INFINITE_SEED, disableInfiniteTerrain, enableInfiniteTerrain, getInfiniteSeed, isInfiniteTerrainEnabled, setInfiniteSeed, } from "./infinite-terrain.js";
7
19
  export { MAP_ICON_TYPE } from "./map-icon-shape.js";
8
20
  export { MAP_TOOL_ID } from "./map-tool-id.js";
9
21
  export { createMapPlugin } from "./plugin.js";
10
22
  export { rangeEraseStore, useRangeEraseTargets, } from "./range-erase-state.js";
11
23
  export { renderConfigStore, } from "./render-config.js";
12
24
  export { TERRAINS } from "./terrain.js";
13
- export { DEFAULT_TILE, TILEMAP_TYPE } from "./tilemap-shape.js";
25
+ export { DEFAULT_TILE, isTileMap, lowestTilemap, makeTileMap, seededTilemap, TILEMAP_TYPE, } from "./tilemap-shape.js";
14
26
  export { MAP_MODES, toolStateStore, useMapToolState, } from "./tool-state.js";
27
+ export { useInfiniteTerrain, } from "./use-infinite-terrain.js";
15
28
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,GAGb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAsB,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAkB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAiB,aAAa,EAAE,WAAW,EAAkB,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EACN,UAAU,GAIV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAmC,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,aAAa,EAAyB,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAyB,MAAM,aAAa,CAAC;AACrE,OAAO,EAEN,eAAe,EACf,oBAAoB,GACpB,MAAM,wBAAwB,CAAC;AAOhC,OAAO,EAGN,iBAAiB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAoC,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAyB,MAAM,oBAAoB,CAAC;AACvF,OAAO,EACN,SAAS,EAGT,cAAc,EACd,eAAe,GACf,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,GAGb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAsB,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAkB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAsB,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,EAAiB,aAAa,EAAE,WAAW,EAAkB,MAAM,gBAAgB,CAAC;AAC3F,kFAAkF;AAClF,gFAAgF;AAChF,wEAAwE;AACxE,qEAAqE;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACN,UAAU,GAIV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAmC,MAAM,YAAY,CAAC;AACpE,iEAAiE;AACjE,iFAAiF;AACjF,6EAA6E;AAC7E,8EAA8E;AAC9E,mFAAmF;AACnF,OAAO,EACN,qBAAqB,EACrB,sBAAsB,EAEtB,qBAAqB,EACrB,eAAe,EACf,wBAAwB,EACxB,eAAe,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAyB,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAyB,MAAM,aAAa,CAAC;AACrE,OAAO,EAEN,eAAe,EACf,oBAAoB,GACpB,MAAM,wBAAwB,CAAC;AAOhC,OAAO,EAGN,iBAAiB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAoC,MAAM,cAAc,CAAC;AAC1E,OAAO,EACN,YAAY,EACZ,SAAS,EACT,aAAa,EACb,WAAW,EACX,aAAa,EACb,YAAY,GAEZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,SAAS,EAGT,cAAc,EACd,eAAe,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEN,kBAAkB,GAClB,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { BoardStore } from "@edv4h/usketch-shared";
2
+ /** Seed used when enabling without an explicit one (matches the HUD default). */
3
+ export declare const DEFAULT_INFINITE_SEED = 12345;
4
+ export interface EnableInfiniteTerrainOptions {
5
+ /**
6
+ * Seed for the world. Rounded to an integer. Omitted → keep the current seed if
7
+ * already enabled, else {@link DEFAULT_INFINITE_SEED}.
8
+ */
9
+ seed?: number;
10
+ /** Tile size for a tilemap created on a blank board. Default {@link DEFAULT_TILE}. */
11
+ tile?: number;
12
+ }
13
+ /** The board's effective infinite-terrain seed, or `null` when disabled. */
14
+ export declare function getInfiniteSeed(store: BoardStore): number | null;
15
+ /** Whether the infinite base terrain is enabled on the board. */
16
+ export declare function isInfiniteTerrainEnabled(store: BoardStore): boolean;
17
+ /**
18
+ * Enable (or re-seed) the infinite base terrain — the same operation the HUD
19
+ * toggle runs. Stamps `baseSeed` + a frozen `baseGen` onto the deterministically
20
+ * chosen tilemap: an already-seeded one, else the lowest-id tilemap, else a freshly
21
+ * created one on a blank board. Persists + syncs (it's shape data). Returns the
22
+ * integer seed applied. Throws `RangeError` on a non-finite seed or a non-finite /
23
+ * non-positive `tile`.
24
+ */
25
+ export declare function enableInfiniteTerrain(store: BoardStore, opts?: EnableInfiniteTerrainOptions): number;
26
+ /** Disable the infinite base terrain (clears `baseSeed` on every seeded tilemap). */
27
+ export declare function disableInfiniteTerrain(store: BoardStore): void;
28
+ /**
29
+ * Set the seed: a number enables/re-seeds, `null` disables — the "reactive setter"
30
+ * ergonomics requested in #946 (`set({ seed })` / `set({ seed: null })`), backed by
31
+ * the functions above so behaviour is identical to the HUD.
32
+ */
33
+ export declare function setInfiniteSeed(store: BoardStore, seed: number | null): void;
34
+ //# sourceMappingURL=infinite-terrain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infinite-terrain.d.ts","sourceRoot":"","sources":["../src/infinite-terrain.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAWxD,iFAAiF;AACjF,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAE3C,MAAM,WAAW,4BAA4B;IAC5C;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sFAAsF;IACtF,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,4EAA4E;AAC5E,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAEhE;AAED,iEAAiE;AACjE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAEnE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,UAAU,EACjB,IAAI,GAAE,4BAAiC,GACrC,MAAM,CAyBR;AAED,qFAAqF;AACrF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAM9D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAG5E"}
@@ -0,0 +1,64 @@
1
+ import { DEFAULT_BASE_GEN } from "./base-terrain.js";
2
+ import { resolveTilemap } from "./generate.js";
3
+ import { DEFAULT_TILE, isTileMap, lowestTilemap, seededTilemap, } from "./tilemap-shape.js";
4
+ /** Seed used when enabling without an explicit one (matches the HUD default). */
5
+ export const DEFAULT_INFINITE_SEED = 12345;
6
+ /** The board's effective infinite-terrain seed, or `null` when disabled. */
7
+ export function getInfiniteSeed(store) {
8
+ return seededTilemap(store.getShapes().values())?.baseSeed ?? null;
9
+ }
10
+ /** Whether the infinite base terrain is enabled on the board. */
11
+ export function isInfiniteTerrainEnabled(store) {
12
+ return getInfiniteSeed(store) != null;
13
+ }
14
+ /**
15
+ * Enable (or re-seed) the infinite base terrain — the same operation the HUD
16
+ * toggle runs. Stamps `baseSeed` + a frozen `baseGen` onto the deterministically
17
+ * chosen tilemap: an already-seeded one, else the lowest-id tilemap, else a freshly
18
+ * created one on a blank board. Persists + syncs (it's shape data). Returns the
19
+ * integer seed applied. Throws `RangeError` on a non-finite seed or a non-finite /
20
+ * non-positive `tile`.
21
+ */
22
+ export function enableInfiniteTerrain(store, opts = {}) {
23
+ const raw = opts.seed ?? getInfiniteSeed(store) ?? DEFAULT_INFINITE_SEED;
24
+ const seed = Math.trunc(Number(raw));
25
+ if (!Number.isFinite(seed)) {
26
+ throw new RangeError(`enableInfiniteTerrain: seed must be a finite number, got ${String(raw)}`);
27
+ }
28
+ // Validate the tile size — it feeds cell math (move/viewport divide by tile), so
29
+ // a non-finite/non-positive value would later cause NaN/÷0 cells.
30
+ const tile = opts.tile ?? DEFAULT_TILE;
31
+ if (!Number.isFinite(tile) || tile <= 0) {
32
+ throw new RangeError(`enableInfiniteTerrain: tile must be a finite positive number, got ${String(opts.tile)}`);
33
+ }
34
+ // Deterministic target so every synced client agrees (see seededTilemap). Reuse
35
+ // the target's own recorded gen if present so re-enabling keeps the same world
36
+ // even after the default gen advances.
37
+ const target = seededTilemap(store.getShapes().values()) ?? lowestTilemap(store.getShapes().values());
38
+ const id = target?.id ?? resolveTilemap(store, tile).id;
39
+ store.updateShape(id, {
40
+ baseSeed: seed,
41
+ baseGen: target?.baseGen ?? DEFAULT_BASE_GEN,
42
+ });
43
+ return seed;
44
+ }
45
+ /** Disable the infinite base terrain (clears `baseSeed` on every seeded tilemap). */
46
+ export function disableInfiniteTerrain(store) {
47
+ for (const [id, s] of store.getShapes()) {
48
+ if (isTileMap(s) && s.baseSeed != null) {
49
+ store.updateShape(id, { baseSeed: undefined });
50
+ }
51
+ }
52
+ }
53
+ /**
54
+ * Set the seed: a number enables/re-seeds, `null` disables — the "reactive setter"
55
+ * ergonomics requested in #946 (`set({ seed })` / `set({ seed: null })`), backed by
56
+ * the functions above so behaviour is identical to the HUD.
57
+ */
58
+ export function setInfiniteSeed(store, seed) {
59
+ if (seed == null)
60
+ disableInfiniteTerrain(store);
61
+ else
62
+ enableInfiniteTerrain(store, { seed });
63
+ }
64
+ //# sourceMappingURL=infinite-terrain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infinite-terrain.js","sourceRoot":"","sources":["../src/infinite-terrain.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACN,YAAY,EACZ,SAAS,EACT,aAAa,EACb,aAAa,GAEb,MAAM,oBAAoB,CAAC;AAE5B,iFAAiF;AACjF,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAY3C,4EAA4E;AAC5E,MAAM,UAAU,eAAe,CAAC,KAAiB;IAChD,OAAO,aAAa,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,IAAI,IAAI,CAAC;AACpE,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,wBAAwB,CAAC,KAAiB;IACzD,OAAO,eAAe,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AACvC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACpC,KAAiB,EACjB,IAAI,GAAiC,EAAE;IAEvC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,qBAAqB,CAAC;IACzE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,UAAU,CAAC,4DAA4D,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjG,CAAC;IACD,iFAAiF;IACjF,kEAAkE;IAClE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,YAAY,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,UAAU,CACnB,qEAAqE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxF,CAAC;IACH,CAAC;IACD,gFAAgF;IAChF,+EAA+E;IAC/E,uCAAuC;IACvC,MAAM,MAAM,GACX,aAAa,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IACxF,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,IAAI,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;IACxD,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE;QACrB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,gBAAgB;KACf,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC;AACb,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,sBAAsB,CAAC,KAAiB;IACvD,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;QACzC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;YACxC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAA+B,CAAC,CAAC;QAC7E,CAAC;IACF,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAAiB,EAAE,IAAmB;IACrE,IAAI,IAAI,IAAI,IAAI;QAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC;;QAC3C,qBAAqB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAY1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAWzD,MAAM,WAAW,gBAAgB;IAChC,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B;;;;OAIG;IACH,YAAY,CAAC,EAAE,UAAU,CAAC;CAC1B;AAMD,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,aAAa,CAmL7E"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAgB1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAGzD,MAAM,WAAW,gBAAgB;IAChC,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B;;;;OAIG;IACH,YAAY,CAAC,EAAE,UAAU,CAAC;CAC1B;AAMD,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,aAAa,CAmK7E"}
package/dist/plugin.js CHANGED
@@ -2,10 +2,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { BaseAreaLayer } from "./base/base-layer.js";
3
3
  import { BASE_MAP_TYPE, createBaseMapShapeDefinition } from "./base/base-map-shape.js";
4
4
  import { EnterBanner } from "./base/enter-banner.js";
5
- import { DEFAULT_BASE_GEN } from "./base-terrain.js";
6
5
  import { genStateStore } from "./gen-state.js";
7
- import { resolveTilemap } from "./generate.js";
8
6
  import { registerMapHud } from "./hud/register-map-hud.js";
7
+ import { disableInfiniteTerrain, enableInfiniteTerrain, getInfiniteSeed, isInfiniteTerrainEnabled, } from "./infinite-terrain.js";
9
8
  import { MAP_ICON_TYPE, mapIconShapeDefinition } from "./map-icon-shape.js";
10
9
  import { MapTerrainLayer } from "./map-layer.js";
11
10
  import { createMapToolDefinition } from "./map-tool.js";
@@ -13,7 +12,7 @@ import { MAP_TOOL_ID } from "./map-tool-id.js";
13
12
  import { createRangeEraseToolDefinition, RANGE_ERASE_TOOL_ID } from "./range-erase-tool.js";
14
13
  import { renderConfigStore } from "./render-config.js";
15
14
  import { TERRAINS } from "./terrain.js";
16
- import { createTileMapShapeDefinition, DEFAULT_TILE, isTileMap, lowestTilemap, seededTilemap, TILEMAP_TYPE, } from "./tilemap-shape.js";
15
+ import { createTileMapShapeDefinition, DEFAULT_TILE, TILEMAP_TYPE } from "./tilemap-shape.js";
17
16
  const TERRAIN_LAYER_ID = "usketch-map:terrain";
18
17
  const BASE_LAYER_ID = "usketch-map:base";
19
18
  const ENTER_BANNER_ID = "usketch-map:enter-banner";
@@ -60,10 +59,6 @@ export function createMapPlugin(options = {}) {
60
59
  // ── Controls: all map operations live on the Control HUD (no bespoke
61
60
  // on-canvas palette). Toggle the HUD with the backtick key. ──
62
61
  const unregisterMapHud = registerMapHud(ctx, tile);
63
- // The infinite-terrain seed is read from the seeded tilemap shape (board
64
- // data — persisted + synced), not from app-local render config. Chosen
65
- // deterministically so the HUD agrees with the renderer and across clients.
66
- const currentBaseSeed = () => seededTilemap(ctx.store.getShapes().values())?.baseSeed ?? null;
67
62
  // ── Tweaks as declarative HUD settings ──
68
63
  const unregisterHud = ctx.hud.registerSettings({
69
64
  id: "usketch-map:tweaks",
@@ -108,9 +103,9 @@ export function createMapPlugin(options = {}) {
108
103
  // infinite/seed live on the tilemap SHAPE (persisted + synced), not on the
109
104
  // app-local render config — so the generated world survives reload.
110
105
  if (name === "infinite")
111
- return currentBaseSeed() != null;
106
+ return getInfiniteSeed(ctx.store) != null;
112
107
  if (name === "seed")
113
- return currentBaseSeed() ?? genStateStore.get().seed;
108
+ return getInfiniteSeed(ctx.store) ?? genStateStore.get().seed;
114
109
  return renderConfigStore.get()[name];
115
110
  },
116
111
  set: (name, value) => {
@@ -125,42 +120,33 @@ export function createMapPlugin(options = {}) {
125
120
  emptyTerrain: value === "none" ? null : value,
126
121
  });
127
122
  else if (name === "infinite") {
128
- const on = value === true || value === "true";
129
- if (on) {
130
- // Stamp the seed onto a tilemap so it persists + syncs. Target the
131
- // same shape every client would: an already-seeded tilemap if present,
132
- // else the lowest-id existing tilemap; only create one when the board
133
- // is blank. (resolveTilemap's insertion-order pick isn't stable across
134
- // synced peers, so it's the last resort.)
135
- const seed = currentBaseSeed() ?? genStateStore.get().seed;
136
- const target = seededTilemap(ctx.store.getShapes().values()) ??
137
- lowestTilemap(ctx.store.getShapes().values());
138
- const id = target?.id ?? resolveTilemap(ctx.store, tile).id;
139
- // Freeze the generation contract on the shape. Reuse the target's own
140
- // recorded gen if it has one (so an off→on toggle keeps the same world
141
- // even after the default advances); else stamp the current default.
142
- ctx.store.updateShape(id, {
143
- baseSeed: seed,
144
- baseGen: target?.baseGen ?? DEFAULT_BASE_GEN,
123
+ // Drive the public API (single source of truth for the enable logic —
124
+ // deterministic tilemap target, frozen baseGen, integer seed). Default
125
+ // to the gen UI's seed when turning on a board that has none yet.
126
+ if (value === true || value === "true") {
127
+ // Prefer the current/gen seed, but fall back to the API default when
128
+ // it's junk (enableInfiniteTerrain rejects non-finite seeds) so toggling
129
+ // ON always works, even on a corrupt store or bad init order.
130
+ const genSeed = getInfiniteSeed(ctx.store) ?? Math.trunc(Number(genStateStore.get().seed));
131
+ enableInfiniteTerrain(ctx.store, {
132
+ seed: Number.isFinite(genSeed) ? genSeed : undefined,
133
+ tile,
145
134
  });
146
135
  }
147
136
  else {
148
- for (const [id, s] of ctx.store.getShapes())
149
- if (isTileMap(s) && s.baseSeed != null)
150
- ctx.store.updateShape(id, { baseSeed: undefined });
137
+ disableInfiniteTerrain(ctx.store);
151
138
  }
152
139
  }
153
140
  else if (name === "seed") {
154
- // Coerce to a finite integer (matches step:1); ignore junk so a bad
155
- // value can't turn baseSeed into NaN → NaN elevations everywhere.
141
+ // Coerce to a finite integer (matches step:1); ignore junk.
156
142
  const seed = Math.trunc(Number(value));
157
143
  if (!Number.isFinite(seed))
158
144
  return;
159
- // Remember on the gen store, and re-seed any tilemap that already has a base.
145
+ // Remember on the gen store, and re-seed only when already enabled (the
146
+ // seed field shouldn't turn the infinite terrain on by itself).
160
147
  genStateStore.set({ seed });
161
- for (const [id, s] of ctx.store.getShapes())
162
- if (isTileMap(s) && s.baseSeed != null)
163
- ctx.store.updateShape(id, { baseSeed: seed });
148
+ if (isInfiniteTerrainEnabled(ctx.store))
149
+ enableInfiniteTerrain(ctx.store, { seed });
164
150
  }
165
151
  },
166
152
  // Re-read on look-and-feel changes (renderConfig) AND shape mutations (the
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,8BAA8B,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAAkB,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAmB,MAAM,cAAc,CAAC;AACzD,OAAO,EACN,4BAA4B,EAC5B,YAAY,EACZ,SAAS,EACT,aAAa,EACb,aAAa,EACb,YAAY,GAEZ,MAAM,oBAAoB,CAAC;AAe5B,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;AAC/C,MAAM,aAAa,GAAG,kBAAkB,CAAC;AACzC,MAAM,eAAe,GAAG,0BAA0B,CAAC;AAEnD,MAAM,UAAU,eAAe,CAAC,OAAO,GAAqB,EAAE;IAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC;IAC1C,IAAI,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QAClF,iBAAiB,CAAC,GAAG,CAAC;YACrB,SAAS,EAAE,OAAO,CAAC,gBAAgB;YACnC,SAAS,EAAE,OAAO,CAAC,gBAAgB;YACnC,YAAY,EAAE,OAAO,CAAC,YAAY;SAClC,CAAC,CAAC;IACJ,CAAC;IAED,OAAO;QACN,EAAE,EAAE,oBAAoB;QACxB,IAAI,EAAE,SAAS;QAEf,KAAK,CAAC,GAAkB;YACvB,kFAAkF;YAClF,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC;YACtE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC;YACvE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;YAE3D,6CAA6C;YAC7C,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACnB,EAAE,EAAE,gBAAgB;gBACpB,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CACjB,KAAC,eAAe,IAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,GAAI,CAC9E;aACD,CAAC,CAAC;YAEH,wEAAwE;YACxE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACnB,EAAE,EAAE,aAAa;gBACjB,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAC,aAAa,IAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,GAAI;aAClF,CAAC,CAAC;YACH,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACnB,EAAE,EAAE,eAAe;gBACnB,KAAK,EAAE,GAAG;gBACV,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,GAAG,EAAE,CAAC,KAAC,WAAW,IAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,GAAI;aAC3D,CAAC,CAAC;YAEH,cAAc;YACd,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/D,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,EAAE,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC;YAE9E,sEAAsE;YACtE,kEAAkE;YAClE,MAAM,gBAAgB,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAEnD,yEAAyE;YACzE,uEAAuE;YACvE,4EAA4E;YAC5E,MAAM,eAAe,GAAG,GAAkB,EAAE,CAC3C,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,IAAI,IAAI,CAAC;YAEjE,2CAA2C;YAC3C,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC;gBAC9C,EAAE,EAAE,oBAAoB;gBACxB,KAAK,EAAE,SAAS;gBAChB,MAAM,EAAE;oBACP;wBACC,IAAI,EAAE,WAAW;wBACjB,KAAK,EAAE,IAAI;wBACX,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACR,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE;4BACjC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;yBAChC;qBACD;oBACD;wBACC,IAAI,EAAE,WAAW;wBACjB,KAAK,EAAE,GAAG;wBACV,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACR,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE;4BACjC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE;yBACjC;qBACD;oBACD,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE;oBACnF;wBACC,IAAI,EAAE,cAAc;wBACpB,KAAK,EAAE,MAAM;wBACb,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACR,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;4BAC9B,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;yBACzD;qBACD;oBACD,oEAAoE;oBACpE,8DAA8D;oBAC9D,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;oBACpD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;iBAC5E;gBACD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;oBACb,IAAI,IAAI,KAAK,cAAc;wBAAE,OAAO,iBAAiB,CAAC,GAAG,EAAE,CAAC,YAAY,IAAI,MAAM,CAAC;oBACnF,2EAA2E;oBAC3E,oEAAoE;oBACpE,IAAI,IAAI,KAAK,UAAU;wBAAE,OAAO,eAAe,EAAE,IAAI,IAAI,CAAC;oBAC1D,IAAI,IAAI,KAAK,MAAM;wBAAE,OAAO,eAAe,EAAE,IAAI,aAAa,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;oBAC1E,OAAO,iBAAiB,CAAC,GAAG,EAAE,CAAC,IAAsD,CAAC,CAAC;gBACxF,CAAC;gBACD,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBACpB,IAAI,IAAI,KAAK,aAAa;wBAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;yBAC7E,IAAI,IAAI,KAAK,WAAW;wBAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,KAAkB,EAAE,CAAC,CAAC;yBACnF,IAAI,IAAI,KAAK,WAAW;wBAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,KAAkB,EAAE,CAAC,CAAC;yBACnF,IAAI,IAAI,KAAK,cAAc;wBAC/B,iBAAiB,CAAC,GAAG,CAAC;4BACrB,YAAY,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,KAAoB;yBAC7D,CAAC,CAAC;yBACC,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;wBAC9B,MAAM,EAAE,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,CAAC;wBAC9C,IAAI,EAAE,EAAE,CAAC;4BACR,mEAAmE;4BACnE,uEAAuE;4BACvE,sEAAsE;4BACtE,uEAAuE;4BACvE,0CAA0C;4BAC1C,MAAM,IAAI,GAAG,eAAe,EAAE,IAAI,aAAa,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;4BAC3D,MAAM,MAAM,GACX,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC;gCAC7C,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;4BAC/C,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;4BAC5D,sEAAsE;4BACtE,uEAAuE;4BACvE,oEAAoE;4BACpE,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE;gCACzB,QAAQ,EAAE,IAAI;gCACd,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,gBAAgB;6BACf,CAAC,CAAC;wBACjC,CAAC;6BAAM,CAAC;4BACP,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE;gCAC1C,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI;oCACrC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAA+B,CAAC,CAAC;wBACnF,CAAC;oBACF,CAAC;yBAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;wBAC5B,oEAAoE;wBACpE,kEAAkE;wBAClE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;wBACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;4BAAE,OAAO;wBACnC,8EAA8E;wBAC9E,aAAa,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC5B,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE;4BAC1C,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI;gCACrC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAA+B,CAAC,CAAC;oBAC9E,CAAC;gBACF,CAAC;gBACD,2EAA2E;gBAC3E,6EAA6E;gBAC7E,4EAA4E;gBAC5E,2EAA2E;gBAC3E,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE;oBACvB,MAAM,WAAW,GAAG,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBAC1D,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE;wBAC7C,IACC,CAAC,CAAC,IAAI,KAAK,aAAa;4BACxB,CAAC,CAAC,IAAI,KAAK,eAAe;4BAC1B,CAAC,CAAC,IAAI,KAAK,eAAe;4BAE1B,QAAQ,EAAE,CAAC;oBACb,CAAC,CAAC,CAAC;oBACH,OAAO,GAAG,EAAE;wBACX,WAAW,EAAE,CAAC;wBACd,UAAU,EAAE,CAAC;oBACd,CAAC,CAAC;gBACH,CAAC;aACD,CAAC,CAAC;YAEH,OAAO,GAAG,EAAE;gBACX,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;gBACxC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;gBACrC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;gBACvC,gBAAgB,EAAE,CAAC;gBACnB,aAAa,EAAE,CAAC;YACjB,CAAC,CAAC;QACH,CAAC;KACD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { BoardStore } from "@edv4h/usketch-shared";
2
+ import { type EnableInfiniteTerrainOptions } from "./infinite-terrain.js";
3
+ export interface InfiniteTerrainControls {
4
+ /** Current effective seed, or `null` when disabled. Reactive. */
5
+ seed: number | null;
6
+ enabled: boolean;
7
+ /** Enable / re-seed; returns the applied integer seed. */
8
+ enable: (opts?: EnableInfiniteTerrainOptions) => number;
9
+ disable: () => void;
10
+ /** Number enables/re-seeds, `null` disables. */
11
+ setSeed: (seed: number | null) => void;
12
+ }
13
+ /**
14
+ * Subscribe a component to the board's infinite-terrain seed and get controls to
15
+ * change it. Re-renders when the seed changes (incl. edits from another client),
16
+ * not on pan/zoom — it listens to shape mutations only.
17
+ */
18
+ export declare function useInfiniteTerrain(store: BoardStore): InfiniteTerrainControls;
19
+ //# sourceMappingURL=use-infinite-terrain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-infinite-terrain.d.ts","sourceRoot":"","sources":["../src/use-infinite-terrain.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,uBAAuB,CAAC;AAEpE,OAAO,EAEN,KAAK,4BAA4B,EAIjC,MAAM,uBAAuB,CAAC;AAG/B,MAAM,WAAW,uBAAuB;IACvC,iEAAiE;IACjE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,0DAA0D;IAC1D,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,4BAA4B,KAAK,MAAM,CAAC;IACxD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gDAAgD;IAChD,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CACvC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,uBAAuB,CAoC7E"}
@@ -0,0 +1,45 @@
1
+ import { useSyncExternalStore } from "react";
2
+ import { disableInfiniteTerrain, enableInfiniteTerrain, getInfiniteSeed, setInfiniteSeed, } from "./infinite-terrain.js";
3
+ import { isTileMap } from "./tilemap-shape.js";
4
+ /**
5
+ * Subscribe a component to the board's infinite-terrain seed and get controls to
6
+ * change it. Re-renders when the seed changes (incl. edits from another client),
7
+ * not on pan/zoom — it listens to shape mutations only.
8
+ */
9
+ export function useInfiniteTerrain(store) {
10
+ const seed = useSyncExternalStore((onChange) => store.onMutation((e) => {
11
+ // Only recompute the seed when something could actually change it — not on
12
+ // every edit (tile painting fires shape:updated on the tilemap constantly,
13
+ // changing cells/bounds but not baseSeed).
14
+ if (e.type === "shape:updated") {
15
+ const { before, after } = e.payload;
16
+ if (isTileMap(after)) {
17
+ const prev = isTileMap(before) ? before.baseSeed : undefined;
18
+ if (prev !== after.baseSeed)
19
+ onChange(); // baseSeed actually changed
20
+ }
21
+ }
22
+ else if (e.type === "shape:added") {
23
+ // A new tilemap affects the effective seed only if it already carries one.
24
+ const seededAdded = e.payload.ids.some((id) => {
25
+ const s = store.getShape(id);
26
+ return s != null && isTileMap(s) && s.baseSeed != null;
27
+ });
28
+ if (seededAdded)
29
+ onChange();
30
+ }
31
+ else if (e.type === "shape:removed") {
32
+ // The removed shapes are already gone (can't inspect); a removed seeded
33
+ // tilemap can change the effective seed, so recompute conservatively.
34
+ onChange();
35
+ }
36
+ }), () => getInfiniteSeed(store), () => getInfiniteSeed(store));
37
+ return {
38
+ seed,
39
+ enabled: seed != null,
40
+ enable: (opts) => enableInfiniteTerrain(store, opts),
41
+ disable: () => disableInfiniteTerrain(store),
42
+ setSeed: (s) => setInfiniteSeed(store, s),
43
+ };
44
+ }
45
+ //# sourceMappingURL=use-infinite-terrain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-infinite-terrain.js","sourceRoot":"","sources":["../src/use-infinite-terrain.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EACN,sBAAsB,EAEtB,qBAAqB,EACrB,eAAe,EACf,eAAe,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAa/C;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAiB;IACnD,MAAM,IAAI,GAAG,oBAAoB,CAChC,CAAC,QAAQ,EAAE,EAAE,CACZ,KAAK,CAAC,UAAU,CAAC,CAAC,CAAa,EAAE,EAAE;QAClC,2EAA2E;QAC3E,2EAA2E;QAC3E,2CAA2C;QAC3C,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAChC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC;YACpC,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC7D,IAAI,IAAI,KAAK,KAAK,CAAC,QAAQ;oBAAE,QAAQ,EAAE,CAAC,CAAC,4BAA4B;YACtE,CAAC;QACF,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACrC,2EAA2E;YAC3E,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC7C,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAC7B,OAAO,CAAC,IAAI,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC;YACxD,CAAC,CAAC,CAAC;YACH,IAAI,WAAW;gBAAE,QAAQ,EAAE,CAAC;QAC7B,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACvC,wEAAwE;YACxE,sEAAsE;YACtE,QAAQ,EAAE,CAAC;QACZ,CAAC;IACF,CAAC,CAAC,EACH,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAC5B,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAC5B,CAAC;IACF,OAAO;QACN,IAAI;QACJ,OAAO,EAAE,IAAI,IAAI,IAAI;QACrB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC;QACpD,OAAO,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,KAAK,CAAC;QAC5C,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC;KACzC,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edv4h/usketch-plugin-map",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",