@nika-js/onlymap 0.5.11 → 0.6.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/CHANGELOG.md +115 -0
- package/LICENSE.md +2 -0
- package/README.md +2 -1
- package/dist/{LercDecode.es-DgVQ-yzp.js → LercDecode.es-fbo6h5rt.js} +1 -1
- package/dist/{basemap-Q6WD4W1c.js → basemap-CprSan9q.js} +1 -1
- package/dist/{geoparquet-BUR3VCqE.js → geoparquet-Bm8pfxyo.js} +1 -1
- package/dist/{index-DTRXxe7D.js → index-Bz-rbmhj.js} +5182 -5162
- package/dist/{index-B59kDhQV.js → index-CCQttJzO.js} +2 -2
- package/dist/{index-E2LluXDY.js → index-DSRIZR81.js} +1 -1
- package/dist/{index-DBsR-e_U.js → index-GOwMjqm6.js} +1 -1
- package/dist/{index-BtVjjBff.js → index-UzmNhuS0.js} +1 -1
- package/dist/{lerc-Bl4IMkfo.js → lerc-CuifOkoA.js} +2 -2
- package/dist/license.d.ts +29 -5
- package/dist/onlymap.standalone.js +9596 -9576
- package/dist/onlymapjs.js +1 -1
- package/dist/{raster-B5dIvmBr.js → raster-dysYIQ_k.js} +2 -2
- package/dist/{raster-pipeline-Dzo5h6YY.js → raster-pipeline-ZdCOGfqV.js} +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/{zarr-DHOOSvXD.js → zarr-OewK7k2K.js} +2 -2
- package/docs/3d-assets.md +3 -3
- package/docs/live-data.md +2 -2
- package/docs/stories.md +1 -1
- package/llms.txt +1 -1
- package/onlymapjs.html-data.json +1 -1
- package/package.json +6 -2
- package/skills/onlymapjs/SKILL.md +1 -1
- package/skills/onlymapjs/references/syntax.md +4 -4
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `@nika-js/onlymap`, newest first. The full rationale for
|
|
4
|
+
each entry lives in the architecture doc's dated changelog; this is the concise,
|
|
5
|
+
version-by-version record.
|
|
6
|
+
|
|
7
|
+
Note: npm collapsed a few closely-spaced releases — the GPX/FlatGeobuf (0.5.4)
|
|
8
|
+
and GeoParquet (0.5.5) work shipped to npm together as **0.5.6**, so npm's
|
|
9
|
+
version list jumps 0.5.3 → 0.5.6. Each logical version is listed here regardless.
|
|
10
|
+
|
|
11
|
+
## 0.6.0 — unreleased
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
- **Licensing gate reworked: free-tier caps apply only on hosted http(s) pages.** In a dev context — localhost/loopback, `file://`, any non-web scheme, or headless — every cap (5 layers / 25k rows / 20 MB) lifts entirely. The attribution badge stays in all contexts. The exemption is a technical convenience, not a license grant: commercial deployment (hosted or packaged) still requires a commercial key — enforcement for shipped apps is legal, not technical (LICENSE.md §3).
|
|
15
|
+
|
|
16
|
+
## 0.5.12 — 2026-08-05
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
- This `CHANGELOG.md` — a version-by-version record, shipped in the package and mirror.
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
- **`highlight-color` was silently inert** with the library's own `highlighted-id` / `highlight-feature` selection: the auto-derive compiled it to a function accessor, but deck's `highlightedObjectIndex` path only honors a plain color array — selections rendered in deck's default navy. It now resolves as a constant color (array or hex), which drives both the programmatic-highlight and hover-highlight paths.
|
|
23
|
+
|
|
24
|
+
## 0.5.11 — 2026-08-05
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
- **`ZarrLayer`** — Zarr / GeoZarr raster layer: chunked N-dimensional array data (climate/weather grids, datacubes) rendered on the GPU (`@developmentseed/deck.gl-zarr` + zarrita, a lazy chunk). `variable` + `select="time=0, …"` pick the slice; a GeoZarr store georeferences itself, a plain Zarr takes manual `bounds`/`crs`/`spatial-dims`; `min`/`max`/`colormap`/`nodata` and the legend reuse the COGLayer pipeline. `src` can point at any public, CORS-enabled remote store — no server setup.
|
|
28
|
+
|
|
29
|
+
## 0.5.10 — 2026-08-04
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
- **Dashed lines** — `dash="[6, 3]"` (or SVG-style `dash="6 3"`, plus `dash-justified`) on path-stroking layers (PathLayer/GeoJsonLayer/PolygonLayer/TripsLayer), wired through deck's `PathStyleExtension`.
|
|
33
|
+
|
|
34
|
+
## 0.5.9 — 2026-08-04
|
|
35
|
+
|
|
36
|
+
### Fixed
|
|
37
|
+
- Layers now render across the antimeridian and when zoomed out past a single world copy (standalone maps set `MapView({ repeat: true })`). Previously, data near ±180° or a wide zoomed-out view went blank.
|
|
38
|
+
|
|
39
|
+
## 0.5.8 — 2026-08-04
|
|
40
|
+
|
|
41
|
+
### Fixed
|
|
42
|
+
- **COGLayer** works from a CDN / cross-origin build. Its decode worker is now inlined as a same-origin blob and asset paths are relative (`base: "./"`); previously it rendered nothing on any built page served from a CDN (present since 0.5.2).
|
|
43
|
+
|
|
44
|
+
## 0.5.7 — 2026-08-04
|
|
45
|
+
|
|
46
|
+
### Added
|
|
47
|
+
- **`ImageOverlay`** — georeferenced drone-JPEG overlay: reads GPS/EXIF + DJI-XMP, computes a flat-ground WGS84 footprint, bakes yaw/roll. `OmMap.resolveImageOverlay(fileOrUrl)` preprocesses once for persistence; explicit `bounds` reconstructs without re-reading EXIF.
|
|
48
|
+
|
|
49
|
+
## 0.5.6 — 2026-07-31
|
|
50
|
+
|
|
51
|
+
### Added
|
|
52
|
+
- **Safe date formatting** — `formatDate($time, 'datetime', 'UTC')` turns epoch-millisecond/ISO fields into readable `get-text` labels without enabling arbitrary JavaScript; the built-in filter widget shares the contract.
|
|
53
|
+
|
|
54
|
+
## 0.5.5 — 2026-07-31
|
|
55
|
+
|
|
56
|
+
### Added
|
|
57
|
+
- **GeoParquet** data format (`.parquet` / `.geoparquet`) — cloud-native columnar vector: all-Point files stay columnar, lines/polygons become GeoJSON features; requires the `geo` metadata (WKB) and CRS84/EPSG:4326.
|
|
58
|
+
|
|
59
|
+
## 0.5.4 — 2026-07-30
|
|
60
|
+
|
|
61
|
+
### Added
|
|
62
|
+
- **GPX** (`.gpx`, waypoints/tracks/routes, `#fragment` part selection) and **FlatGeobuf** (`.fgb`, cloud-native binary vector) data formats.
|
|
63
|
+
|
|
64
|
+
## 0.5.3 — 2026-07-30
|
|
65
|
+
|
|
66
|
+
### Added
|
|
67
|
+
- **`measure` widget** — geodesic distance and area with live per-segment/total labels, a metric/imperial/nautical units toggle, and an `om-measure` readout event.
|
|
68
|
+
|
|
69
|
+
### Changed
|
|
70
|
+
- Validation flags a data-driven expression (`$field`, `scale()`, …) placed on a scalar attribute — the silent "invisible layer / black squares" trap.
|
|
71
|
+
|
|
72
|
+
## 0.5.2 — 2026-07-29
|
|
73
|
+
|
|
74
|
+
### Changed
|
|
75
|
+
- Made `om-map-point` (raw map click/hover capture) discoverable by task in the skill and `llms.txt`, steering agents away from poking deck.gl internals.
|
|
76
|
+
|
|
77
|
+
## 0.5.1 — 2026-07-29
|
|
78
|
+
|
|
79
|
+
### Added
|
|
80
|
+
- **Tiled layers** — `{z}/{x}/{y}` `data` templates for `TileLayer`/`MVTLayer` (raster templates get a built-in `BitmapLayer` sublayer; MVT self-renders with `get-*` accessors on decoded features).
|
|
81
|
+
|
|
82
|
+
## 0.5.0 — 2026-07-28
|
|
83
|
+
|
|
84
|
+
### Added
|
|
85
|
+
- **CityJSON / CityJSONSeq** ingestion — semantic 3D city models decoded to extruded footprints, or per-face surfaces with `?om-surfaces=1`; national coordinate grids reproject automatically.
|
|
86
|
+
- First-shot layout guardrail: a bare `<om-map>` with no author height still renders (injected `display:block` default + 400px floor + an actionable console warning when it still collapses).
|
|
87
|
+
|
|
88
|
+
### Changed
|
|
89
|
+
- The free-tier per-layer row cap now truncates to the first rows with a dismissible on-map notice instead of hard-dropping the layer.
|
|
90
|
+
|
|
91
|
+
## 0.4.x — 2026-07-22…27
|
|
92
|
+
|
|
93
|
+
### Added
|
|
94
|
+
- Managed, adaptive **widget layout**: eight logical `position` slots, same-slot stacking with shared gaps, compact-button clustering, automatic folding into drawers on narrow maps, and the `check-layout` CLI that audits a manifest's widget layout in headless Chromium.
|
|
95
|
+
|
|
96
|
+
### Fixed
|
|
97
|
+
- Post-publication review hardening across the layout and widget features.
|
|
98
|
+
|
|
99
|
+
## 0.3.x — 2026-07-16…
|
|
100
|
+
|
|
101
|
+
### Added
|
|
102
|
+
- Native **GeoTIFF / Cloud-Optimized GeoTIFF raster** layer (`COGLayer`) with `min`/`max` rescale and bundled colormaps.
|
|
103
|
+
- A full 3D scene from attributes: `terrain`, scene `lighting`, and canvas `snapshot()`.
|
|
104
|
+
- CDN-delivery posture: a single-file standalone bundle plus raw-file-CDN guidance.
|
|
105
|
+
|
|
106
|
+
## 0.2.x
|
|
107
|
+
|
|
108
|
+
### Added
|
|
109
|
+
- The v0.2 format registry: CSV/TSV (typed columns), Shapefile (+`.dbf`), KML, and Apache Arrow / GeoArrow (a columnar fast path).
|
|
110
|
+
- First public npm release of `@nika-js/onlymap`.
|
|
111
|
+
|
|
112
|
+
## 0.1.x
|
|
113
|
+
|
|
114
|
+
### Added
|
|
115
|
+
- The initial declarative core: `<om-map>` / `<om-layer>` / `<om-widget>` / `<om-overlay>` / `<om-behavior>`, the manifest reconcile loop, the `get-*` accessor expression compiler, and MapLibre basemaps — no build step, no imperative deck.gl code.
|
package/LICENSE.md
CHANGED
|
@@ -35,6 +35,8 @@ The Software is commercial proprietary software.
|
|
|
35
35
|
|
|
36
36
|
**Commercial use.** Any use other than Non-Commercial Use requires a purchased and maintained valid commercial license from Licensor, unless Licensor has granted Licensee a separate written license.
|
|
37
37
|
|
|
38
|
+
**Technical limits are a convenience, not the grant.** The Software may enforce technical limits in some execution contexts and not others (for example, limits may be inactive during local development, when loaded from local files, or inside application shells). The presence, absence, or failure of any technical limit does not grant, extend, or modify any license right. In particular, distributing the Software inside a packaged or installable application (desktop, mobile, or otherwise), or any other Commercial use, requires a valid commercial license under this Section 3 regardless of whether technical limits were active.
|
|
39
|
+
|
|
38
40
|
Access to an npm package, repository, package tarball, source archive, or build artifact does not by itself grant any rights beyond the rights expressly granted in this Agreement.
|
|
39
41
|
|
|
40
42
|
If an Order Form states usage limits, seat limits, application limits, domain limits, revenue limits, territory limits, term dates, or other license scope terms, Licensee must comply with those terms. If there is a conflict between this Agreement and an Order Form, the Order Form controls only for that conflict.
|
package/README.md
CHANGED
|
@@ -281,7 +281,7 @@ Plus `OmMap.snapshotIR(html)` to lock down what a manifest *means* in a snapshot
|
|
|
281
281
|
|
|
282
282
|
## Free tier & licensing
|
|
283
283
|
|
|
284
|
-
**Non-commercial use is free with attribution** (LICENSE.md §3); commercial use requires a license. Without a license key, maps run on the **free plan**: up to **5 layers** and **25,000 rows per layer** (20 MB per data fetch), with a small "OnlyMap by NIKA. Free for non-commercial use." badge in the corner. Exceeding a limit never breaks the map. Past the **layer** cap the extra layer simply doesn't render; past the **row** cap the layer renders its first 25,000 rows (an arbitrary subset, in source order) rather than nothing, with a dismissible on-map notice saying the data is partial — so a capped map is still useful to look at without ever pretending it's complete. Either way the validation stream/error panel tells you exactly which limit, why, and how to lift it. Limits apply
|
|
284
|
+
**Non-commercial use is free with attribution** (LICENSE.md §3); commercial use requires a license. Without a license key, maps run on the **free plan**: up to **5 layers** and **25,000 rows per layer** (20 MB per data fetch), with a small "OnlyMap by NIKA. Free for non-commercial use." badge in the corner. Exceeding a limit never breaks the map. Past the **layer** cap the extra layer simply doesn't render; past the **row** cap the layer renders its first 25,000 rows (an arbitrary subset, in source order) rather than nothing, with a dismissible on-map notice saying the data is partial — so a capped map is still useful to look at without ever pretending it's complete. Either way the validation stream/error panel tells you exactly which limit, why, and how to lift it. **Limits apply only on hosted http(s) pages** — in a dev context (localhost, `file://`, or any non-web scheme) every cap lifts so you can build without friction; the attribution badge stays in all contexts. The exemption is a technical convenience, not a license grant: commercial deployment — hosted **or** shipped inside a packaged app — requires a commercial key regardless of whether the technical gates fired (LICENSE.md §3).
|
|
285
285
|
|
|
286
286
|
A license key lifts all limits and removes the badge:
|
|
287
287
|
|
|
@@ -307,5 +307,6 @@ Mapbox GL basemaps, depth-interleaved 3D compositing, globe projection, SSE tran
|
|
|
307
307
|
| | |
|
|
308
308
|
|---|---|
|
|
309
309
|
| [docs/react.md](docs/react.md) · [docs/basemaps.md](docs/basemaps.md) · [docs/testing.md](docs/testing.md) · [docs/live-data.md](docs/live-data.md) · [docs/image-overlays.md](docs/image-overlays.md) · [docs/3d-assets.md](docs/3d-assets.md) · [docs/stories.md](docs/stories.md) · [docs/telemetry.md](docs/telemetry.md) | Consumer guides |
|
|
310
|
+
| [CHANGELOG.md](CHANGELOG.md) | Version-by-version release notes |
|
|
310
311
|
| [llms.txt](llms.txt) | The agent-facing quick reference |
|
|
311
312
|
| `skills/onlymapjs` | Installable LLM skill for OnlyMapJS authoring |
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as ny, L as sy, M as oy, m as ay, c as ka, z as oc, a as Sd, G as sm, V as ly, W as cy, b as uy, g as hy, d as Vu, f as Ed, e as dy, l as py, u as fy, D as Qf, h as my } from "./index-
|
|
1
|
+
import { C as ny, L as sy, M as oy, m as ay, c as ka, z as oc, a as Sd, G as sm, V as ly, W as cy, b as uy, g as hy, d as Vu, f as Ed, e as dy, l as py, u as fy, D as Qf, h as my } from "./index-Bz-rbmhj.js";
|
|
2
2
|
const Cd = Math.PI / 180, gy = 180 / Math.PI;
|
|
3
3
|
function em(Pe, Q = 0) {
|
|
4
4
|
const me = Math.min(180, Pe) * Cd;
|