@nika-js/onlymap 0.6.22 → 0.6.23

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.
@@ -1,5 +1,5 @@
1
- import { i as E, j as S, k as R, o as N, p as h, q as w, s as O, t as W, v as x, w as I, x as B, y as _, A as P, B as k, E as $, F as z, H as v, I as F, J as C, K as U, N as p, O as M } from "./index-Ddn4yvyL.js";
2
- import { P as $e, R as ze, _ as ve, Q as Ce, S as Ue, T as Me, U as je, X as De, Y as Je, Z as qe, $ as He, a0 as Ve, a1 as Ge, a2 as Ke, a3 as Qe, a4 as Xe, a5 as Ye, a6 as Ze, a7 as et, a8 as tt, a9 as nt, aa as rt, ab as at, ac as st, ad as ot } from "./index-Ddn4yvyL.js";
1
+ import { i as E, j as S, k as R, o as N, p as h, q as w, s as O, t as W, v as x, w as I, x as B, y as _, A as P, B as k, E as $, F as z, H as v, I as F, J as C, K as U, N as p, O as M } from "./index-DncpMROY.js";
2
+ import { P as $e, R as ze, _ as ve, Q as Ce, S as Ue, T as Me, U as je, X as De, Y as Je, Z as qe, $ as He, a0 as Ve, a1 as Ge, a2 as Ke, a3 as Qe, a4 as Xe, a5 as Ye, a6 as Ze, a7 as et, a8 as tt, a9 as nt, aa as rt, ab as at, ac as st, ad as ot } from "./index-DncpMROY.js";
3
3
  import { g as j, i as D } from "./table-accessors-CYWTzpQI.js";
4
4
  async function J(t, e, n = {}, r = {}) {
5
5
  const a = E(t), s = S.getWorkerFarm(n), { source: o } = n, c = { name: a, source: o };
@@ -1,4 +1,4 @@
1
- import { C as a, D as s } from "./raster-DBB0kjvs.js";
1
+ import { C as a, D as s } from "./raster-BBShuKWm.js";
2
2
  const D = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
3
3
  __proto__: null
4
4
  }, Symbol.toStringTag, { value: "Module" }));
@@ -8,7 +8,7 @@ var t;
8
8
  })(t || (t = {}));
9
9
  let l = !1;
10
10
  async function d() {
11
- const e = await import("./LercDecode.es-Cm-Ah1Pr.js");
11
+ const e = await import("./LercDecode.es-D8gAmIiR.js");
12
12
  return l || (await e.load(), l = !0), e;
13
13
  }
14
14
  async function i(e, r) {
@@ -93774,9 +93774,9 @@ class CfA {
93774
93774
  * consumers rendering exports must add provider credits themselves.
93775
93775
  * Headless rejects (no renderer); pre-ready rejects (await map.ready).
93776
93776
  */
93777
- /** The basemap's own settle state (style + tiles for the current view) — true when standalone/headless or the chunk hasn't landed. */
93777
+ /** The basemap's own settle state (style + tiles for the current view) — true when standalone/headless. NOT vacuously true while a basemap-mode adapter is absent (initial chunk load, a determinism-flip remount): a settle or paced gate polling that window must hold until the mount lands, not capture a frame with no basemap canvas. */
93778
93778
  basemapIdle() {
93779
- return this.basemap?.isIdle?.() ?? !0;
93779
+ return this.mode === "basemap" && !this.basemap ? !1 : this.basemap?.isIdle?.() ?? !0;
93780
93780
  }
93781
93781
  /** deck's own per-layer readiness (async layer/pipeline init) — whenSettled gates on this too; a capture before it is stably missing content (issue #37's flaky first frame). Headless/basemap-pending count as ready. */
93782
93782
  layersReady() {
@@ -94176,7 +94176,7 @@ class CfA {
94176
94176
  * pitch/bearing are a documented not-yet gap there.
94177
94177
  */
94178
94178
  setDeterministic(A) {
94179
- this.deterministic = A;
94179
+ this.deterministic !== A && (this.deterministic = A, this.basemap && !this.headless && !this.destroyed && (this.viewState = { ...this.getViewState() }, this.teardownRenderer(), this.initRenderer(this.basemapAttr), this.applyLayers()));
94180
94180
  }
94181
94181
  isDeterministic() {
94182
94182
  return this.deterministic;
@@ -94930,7 +94930,7 @@ function DfA({ layerIRs: e, core: A, mapEl: t, selection: i, history: r, feature
94930
94930
  }
94931
94931
  };
94932
94932
  }
94933
- const SfA = "0.6.22", zEe = "https://om-api.nika.eco/v1/t", PE = { endpoint: zEe };
94933
+ const SfA = "0.6.23", zEe = "https://om-api.nika.eco/v1/t", PE = { endpoint: zEe };
94934
94934
  function jEe(e) {
94935
94935
  for (const A of Object.keys(e))
94936
94936
  PE[A] = e[A];
@@ -97232,6 +97232,10 @@ class jue extends Su {
97232
97232
  getLiveTilesetsInternal() {
97233
97233
  return this.core?.getLiveTilesets() ?? /* @__PURE__ */ new Map();
97234
97234
  }
97235
+ /** The basemap's event-latched settle state — the paced driver's per-frame gate consults it beside the tileset loop (remotion §5: MapLibre throttles symbol placement while the camera moves, so a gate that only watches 3D tilesets records moving takes with no labels). True when standalone/headless. */
97236
+ basemapIdleInternal() {
97237
+ return this.core?.basemapIdle() ?? !0;
97238
+ }
97235
97239
  /** Rendered viewport size — the paced driver's fly-to arc math needs real dims (undefined until the renderer has one). */
97236
97240
  getViewportSizeInternal() {
97237
97241
  if (this.clientWidth > 0 && this.clientHeight > 0) return { width: this.clientWidth, height: this.clientHeight };
@@ -98127,6 +98131,7 @@ class BQe extends Su {
98127
98131
  advance: (a) => (this.advanceBy(a), { t: this.elapsed, done: this.stateValue === "ended" }),
98128
98132
  setCamera: (a) => A.setViewInternal(bP(r, i, a, s.width, s.height)),
98129
98133
  tilesetsLoaded: () => {
98134
+ if (!A.basemapIdleInternal()) return !1;
98130
98135
  for (const a of A.getLiveTilesetsInternal().values())
98131
98136
  if (a.isLoaded?.() === !1) return !1;
98132
98137
  return !0;
package/dist/onlymapjs.js CHANGED
@@ -1,4 +1,4 @@
1
- import { aA as e, aB as r, aC as t, aD as o, aE as b, aF as i, ap as l, aG as n, aH as S, aI as g, aJ as c, aK as E, aL as L, aM as T, aN as A, aO as d, aP as p, aQ as m, aR as _, aS as I, aT as u, aU as M, aV as y, aW as D, ao as O, aX as R, aw as f, aY as N, aZ as P, a_ as h, W as F, a$ as B, b0 as C, b1 as v, b2 as G, b3 as U, b4 as W, b5 as w, b6 as x, b7 as Y, b8 as H, b9 as X, ba as k, bb as J, bc as K, bd as V, be as z, bf as Q, bg as Z, bh as $, bi as j, bj as q, bk as aa, bl as sa, bm as ea, bn as ra, bo as ta, bp as oa, bq as ba, br as ia, bs as la, bt as na, bu as Sa, bv as ga, bw as ca, bx as Ea, by as La, bz as Ta, bA as Aa, bB as da, bC as pa, bD as ma, bE as _a, bF as Ia, bG as ua, bH as Ma, bI as ya, bJ as Da, bK as Oa, bL as Ra, bM as fa, bN as Na, bO as Pa, bP as ha, bQ as Fa, bR as Ba, bS as Ca, bT as va, bU as Ga, bV as Ua, bW as Wa, bX as wa, bY as xa, bZ as Ya, b_ as Ha, b$ as Xa, c0 as ka, c1 as Ja, c2 as Ka, c3 as Va, c4 as za, c5 as Qa, c6 as Za } from "./index-Ddn4yvyL.js";
1
+ import { aA as e, aB as r, aC as t, aD as o, aE as b, aF as i, ap as l, aG as n, aH as S, aI as g, aJ as c, aK as E, aL as L, aM as T, aN as A, aO as d, aP as p, aQ as m, aR as _, aS as I, aT as u, aU as M, aV as y, aW as D, ao as O, aX as R, aw as f, aY as N, aZ as P, a_ as h, W as F, a$ as B, b0 as C, b1 as v, b2 as G, b3 as U, b4 as W, b5 as w, b6 as x, b7 as Y, b8 as H, b9 as X, ba as k, bb as J, bc as K, bd as V, be as z, bf as Q, bg as Z, bh as $, bi as j, bj as q, bk as aa, bl as sa, bm as ea, bn as ra, bo as ta, bp as oa, bq as ba, br as ia, bs as la, bt as na, bu as Sa, bv as ga, bw as ca, bx as Ea, by as La, bz as Ta, bA as Aa, bB as da, bC as pa, bD as ma, bE as _a, bF as Ia, bG as ua, bH as Ma, bI as ya, bJ as Da, bK as Oa, bL as Ra, bM as fa, bN as Na, bO as Pa, bP as ha, bQ as Fa, bR as Ba, bS as Ca, bT as va, bU as Ga, bV as Ua, bW as Wa, bX as wa, bY as xa, bZ as Ya, b_ as Ha, b$ as Xa, c0 as ka, c1 as Ja, c2 as Ka, c3 as Va, c4 as za, c5 as Qa, c6 as Za } from "./index-DncpMROY.js";
2
2
  export {
3
3
  e as ALL_POSITION_VALUES,
4
4
  r as AUDIT_EXEMPTIONS,
@@ -1,4 +1,4 @@
1
- import { c as re, t as Ae, i as nt, a as Re, s as rt, C as ot, b as it, F as at, A as st, d as lt, R as he, e as ct, p as ut, m as dt, f as ht, g as pt, h as gt } from "./raster-pipeline-C9FDdaMd.js";
1
+ import { c as re, t as Ae, i as nt, a as Re, s as rt, C as ot, b as it, F as at, A as st, d as lt, R as he, e as ct, p as ut, m as dt, f as ht, g as pt, h as gt } from "./raster-pipeline-GF1IWgfR.js";
2
2
  import pe from "./index-CW1n5LdO.js";
3
3
  function mt(e, t) {
4
4
  const n = e.length / 3, r = new Uint8ClampedArray(n * 4), o = 0, i = n, a = n * 2;
@@ -1069,7 +1069,7 @@ A.set(m.Zstd, () => import("./zstd-jXobGRcq.js").then((e) => e.decode));
1069
1069
  A.set(m.Jpeg, () => Promise.resolve(oe));
1070
1070
  A.set(m.Jpeg6, () => Promise.resolve(oe));
1071
1071
  A.set(m.Webp, () => Promise.resolve(oe));
1072
- A.set(m.Lerc, () => import("./lerc-Dt2MXtZG.js").then((e) => e.l).then((e) => e.decode));
1072
+ A.set(m.Lerc, () => import("./lerc-CGMS_bHf.js").then((e) => e.l).then((e) => e.decode));
1073
1073
  async function ie(e, t, n) {
1074
1074
  const r = A.get(t);
1075
1075
  if (!r)
@@ -1,5 +1,5 @@
1
1
  import { w as ae } from "./mgrs-BY9bIvp4.js";
2
- import { am as ce, an as le, ao as ee, ap as te, aq as ue, b as he, ar as de, l as Z, as as fe, d as pe, at as me, au as ge, av as ve, aw as ne } from "./index-Ddn4yvyL.js";
2
+ import { am as ce, an as le, ao as ee, ap as te, aq as ue, b as he, ar as de, l as Z, as as fe, d as pe, at as me, au as ge, av as ve, aw as ne } from "./index-DncpMROY.js";
3
3
  function Pe(o, e, t) {
4
4
  const { projectedCorners: n } = e, { topLeft: s, topRight: r, bottomRight: a, bottomLeft: i } = n, c = t(s[0], s[1]), u = t(r[0], r[1]), l = t(a[0], a[1]), d = t(i[0], i[1]), f = [
5
5
  c,
@@ -521,7 +521,7 @@ export declare class RuntimeCore {
521
521
  * consumers rendering exports must add provider credits themselves.
522
522
  * Headless rejects (no renderer); pre-ready rejects (await map.ready).
523
523
  */
524
- /** The basemap's own settle state (style + tiles for the current view) — true when standalone/headless or the chunk hasn't landed. */
524
+ /** The basemap's own settle state (style + tiles for the current view) — true when standalone/headless. NOT vacuously true while a basemap-mode adapter is absent (initial chunk load, a determinism-flip remount): a settle or paced gate polling that window must hold until the mount lands, not capture a frame with no basemap canvas. */
525
525
  basemapIdle(): boolean;
526
526
  /** deck's own per-layer readiness (async layer/pipeline init) — whenSettled gates on this too; a capture before it is stably missing content (issue #37's flaky first frame). Headless/basemap-pending count as ready. */
527
527
  layersReady(): boolean;
package/dist/version.d.ts CHANGED
@@ -5,4 +5,4 @@
5
5
  * the build rootDir, and a `define` would need repeating across vite/vitest/
6
6
  * vite-node configs.
7
7
  */
8
- export declare const LIBRARY_VERSION = "0.6.22";
8
+ export declare const LIBRARY_VERSION = "0.6.23";
@@ -1,5 +1,5 @@
1
- import { A as ur, d as lr, R as zt, e as fr, m as dr, p as St, f as hr, g as pr, h as mr } from "./raster-pipeline-C9FDdaMd.js";
2
- import { ap as gr } from "./index-Ddn4yvyL.js";
1
+ import { A as ur, d as lr, R as zt, e as fr, m as dr, p as St, f as hr, g as pr, h as mr } from "./raster-pipeline-GF1IWgfR.js";
2
+ import { ap as gr } from "./index-DncpMROY.js";
3
3
  import $t from "./index-CW1n5LdO.js";
4
4
  var Et;
5
5
  function h(e, t, n) {
package/docs/stories.md CHANGED
@@ -135,6 +135,8 @@ Each paced frame emits `om-paced-tick` on the story (`detail = {t, waitedMs}`);
135
135
 
136
136
  Effect verbs animate on the **story clock** during a paced run: `fade`, `pulse`, `trace`, and `populate` are evaluated as functions of story time, so a 2 s trace spans exactly 2 s of output frames — half-drawn outlines and mid-fade opacities land in the frames exactly as authored, however long each frame takes to capture. (One exception: `trace follow` is skipped while the story drives the camera — the paced route owns it.)
137
137
 
138
+ Paced frames also wait for the **basemap** to settle — camera done, tiles loaded, label placement converged — so recorded basemap takes carry their labels on every frame, not just static ones. For exactly reproducible first frames, author a start camera (`center`/`zoom` on `<om-map>`): without one, the initial pose is "wherever the camera is at first capture", which can land differently between runs.
139
+
138
140
  ### Recording a story to video
139
141
 
140
142
  ```bash
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nika-js/onlymap",
3
- "version": "0.6.22",
3
+ "version": "0.6.23",
4
4
  "description": "Declarative deck.gl maps for HTML and React — interactive WebGL mapping with GeoJSON/CSV/Arrow data, MapLibre basemaps, widgets, popups, and live streams from a custom-element manifest or typed React components. TypeScript, no build step.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "publishConfig": {
@@ -23,7 +23,7 @@ Use OnlyMapJS as a declarative HTML map library. Write custom elements such as `
23
23
  </script>
24
24
  ```
25
25
 
26
- For no-build CDN pages, use the single-file standalone bundle from a raw-file CDN — `https://unpkg.com/@nika-js/onlymap@0.6.22` (the bare package URL serves `dist/onlymap.standalone.js`) — plus `<link rel="stylesheet" href="https://unpkg.com/@nika-js/onlymap@0.6.22/dist/onlymapjs.css">`. Never a rebundling CDN (esm.sh, skypack): re-bundling duplicates the deck.gl/luma.gl runtime and every layer fails shader compilation.
26
+ For no-build CDN pages, use the single-file standalone bundle from a raw-file CDN — `https://unpkg.com/@nika-js/onlymap@0.6.23` (the bare package URL serves `dist/onlymap.standalone.js`) — plus `<link rel="stylesheet" href="https://unpkg.com/@nika-js/onlymap@0.6.23/dist/onlymapjs.css">`. Never a rebundling CDN (esm.sh, skypack): re-bundling duplicates the deck.gl/luma.gl runtime and every layer fails shader compilation.
27
27
 
28
28
  ## React Projects
29
29
 
@@ -16,8 +16,8 @@ Vite/npm project:
16
16
  Static CDN page (raw-file CDNs only — unpkg/jsDelivr; never esm.sh or another rebundling CDN, which duplicates the WebGL runtime and breaks layer shaders):
17
17
 
18
18
  ```html
19
- <link rel="stylesheet" href="https://unpkg.com/@nika-js/onlymap@0.6.22/dist/onlymapjs.css">
20
- <script type="module" src="https://unpkg.com/@nika-js/onlymap@0.6.22"></script>
19
+ <link rel="stylesheet" href="https://unpkg.com/@nika-js/onlymap@0.6.23/dist/onlymapjs.css">
20
+ <script type="module" src="https://unpkg.com/@nika-js/onlymap@0.6.23"></script>
21
21
  ```
22
22
 
23
23
  Always include `onlymapjs.css` — it carries the MapLibre basemap styles and the no-JS fallback rules (`<om-fallback>` / default banner). For the fallback to work in script-disabled previews it must load without JavaScript: a real `<link rel="stylesheet">` or inlined `<style>` on no-build pages (a bundler-emitted stylesheet is fine in npm projects).