@nika-js/onlymap 0.6.4 → 0.6.7
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 +24 -0
- package/README.md +7 -5
- package/dist/{LercDecode.es-D5in29tf.js → LercDecode.es-BzboSQ2U.js} +1 -1
- package/dist/attribute-resolution.d.ts +84 -6
- package/dist/{basemap-C0pFT3AO.js → basemap-pWXbFGjp.js} +1 -1
- package/dist/ctx.d.ts +3 -1
- package/dist/declarative-filter.d.ts +14 -5
- package/dist/{geoparquet-By98JVB0.js → geoparquet-BPl1T2Or.js} +1 -1
- package/dist/{index-CqC4sW_k.js → index-B9a6f006.js} +1 -1
- package/dist/{index-olfncHIq.js → index-Bgx3CJru.js} +1 -1
- package/dist/{index-Cxo9mCw_.js → index-CAuq7wRs.js} +17610 -16941
- package/dist/{index-tnlYDALL.js → index-CqsQz9Bp.js} +2 -2
- package/dist/{index-Bx9GFkrn.js → index-iVMlGZS9.js} +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/ir-snapshot.d.ts +2 -1
- package/dist/ir.d.ts +47 -9
- package/dist/layer-registry.d.ts +7 -0
- package/dist/layers/marker-icons.d.ts +19 -0
- package/dist/layers/route-layer.d.ts +71 -0
- package/dist/layers/tracking-layer.d.ts +52 -0
- package/dist/{lerc-gKDDtc69.js → lerc-BgzbFAc7.js} +2 -2
- package/dist/license.d.ts +11 -14
- package/dist/onlymap.standalone.js +48997 -48328
- package/dist/onlymapjs.js +64 -61
- package/dist/programmatic.d.ts +6 -1
- package/dist/providers.d.ts +48 -0
- package/dist/{raster-Cl5m3KsC.js → raster-DtyMY54Z.js} +2 -2
- package/dist/{raster-pipeline-hJGxIwYx.js → raster-pipeline-BmHRCUEb.js} +1 -1
- package/dist/react/om-layer.d.ts +6 -2
- package/dist/react.js +54 -50
- package/dist/tracking-interpolation.d.ts +22 -0
- package/dist/version.d.ts +1 -1
- package/dist/{zarr-hRDavRGV.js → zarr-CTpFZo_m.js} +2 -2
- package/docs/routing.md +92 -0
- package/llms.txt +4 -3
- package/onlymapjs.html-data.json +61 -3
- package/package.json +1 -1
- package/skills/onlymapjs/SKILL.md +4 -2
- package/skills/onlymapjs/references/syntax.md +82 -4
|
@@ -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-
|
|
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-
|
|
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-CAuq7wRs.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-CAuq7wRs.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 { ak as Bt, ax as Xt, ay as Yt, az as Us } from "./index-
|
|
1
|
+
import { ak as Bt, ax as Xt, ay as Yt, az as Us } from "./index-CAuq7wRs.js";
|
|
2
2
|
import { w as gs, t as Hs, f as Ws, m as Qs } from "./mgrs-BY9bIvp4.js";
|
|
3
3
|
import { c as Xs } from "./convert-arrow-schema-DrAihRf9.js";
|
|
4
4
|
import { y as Ys, A as bt, a as Ks, z as Vs, R as Zs } from "./recordbatch-Bpc0uxFn.js";
|
package/dist/index.d.ts
CHANGED
|
@@ -32,6 +32,7 @@ import { registerWidget } from "./widget-registry";
|
|
|
32
32
|
import { registerAction } from "./actions";
|
|
33
33
|
import { registerBasemap, configureBasemap } from "./basemap-registry";
|
|
34
34
|
import { registerTerrain } from "./terrain";
|
|
35
|
+
import { registerRoutingProvider } from "./providers";
|
|
35
36
|
import { configureTelemetry } from "./telemetry";
|
|
36
37
|
import { configureLicense } from "./license";
|
|
37
38
|
import { validateManifestString } from "./validation";
|
|
@@ -40,7 +41,7 @@ import { snapshotDescriptorIR } from "./programmatic";
|
|
|
40
41
|
import { resolveImageOverlay } from "./image-overlay";
|
|
41
42
|
export { registerLayer, getLayerSchema } from "./layer-registry";
|
|
42
43
|
export type { LayerSchema, PropDescriptor, PropKind } from "./layer-registry";
|
|
43
|
-
export type { LayerIR, LayerMeta, LayerFilter, LayerData, ColumnarData, LayerAssetState } from "./ir";
|
|
44
|
+
export type { LayerIR, LayerMeta, LayerFilter, LayerCategoryFilter, LayerData, ColumnarData, LayerAssetState } from "./ir";
|
|
44
45
|
export { resolveImageOverlay, DRONE_SENSOR_DATABASE } from "./image-overlay";
|
|
45
46
|
export type { ImageBounds, DroneExifData, DroneImageMetadata, DroneSensorDimensions, ResolveImageOverlayOptions, ResolvedImageOverlay, } from "./image-overlay";
|
|
46
47
|
export { isColumnar, asRows, rowAt, normalizeData, arrowTableToColumnar } from "./data-layer";
|
|
@@ -58,6 +59,8 @@ export { LIGHTING_PRESET_NAMES, resolveLighting, solarAzElDegrees } from "./scen
|
|
|
58
59
|
export type { LightingIR, LightingOptions, LightingPresetName } from "./scene-lighting";
|
|
59
60
|
export { registerTerrain, getTerrain, parseTerrainAttrs } from "./terrain";
|
|
60
61
|
export type { TerrainPreset, TerrainIR, ElevationDecoder, LayerTerrainMode } from "./terrain";
|
|
62
|
+
export { registerRoutingProvider, getRoutingProvider, lineStringLengthMeters } from "./providers";
|
|
63
|
+
export type { RoutingProvider, Route, RouteRequest, RouteWaypoint, RouteLeg } from "./providers";
|
|
61
64
|
export type { SnapshotOptions } from "./snapshot";
|
|
62
65
|
export { configureTelemetry } from "./telemetry";
|
|
63
66
|
export type { IfcModel, IfcFeature, LoadIfcOptions } from "./ifc";
|
|
@@ -72,6 +75,8 @@ export type { Entitlements, LicenseIdentity } from "./license";
|
|
|
72
75
|
export type { RuntimeContext } from "./ctx";
|
|
73
76
|
export { MapController, descriptorToIR, snapshotDescriptorIR } from "./programmatic";
|
|
74
77
|
export type { LayerDescriptor, MapControllerOptions, CameraState, OverlayPositioner, PickListener } from "./programmatic";
|
|
78
|
+
/** Multi-dimension GPU filter entry (spec: "Filtering") — `LayerDescriptor.filterFields`' element type, and the React adapter's `OmLayer` twin. */
|
|
79
|
+
export type { LayerFilterFieldSpec, LayerCategoryFilterFieldSpec } from "./attribute-resolution";
|
|
75
80
|
export { releaseDataOwner } from "./data-layer";
|
|
76
81
|
export type { DataTransportOwner } from "./data-layer";
|
|
77
82
|
export { MANAGED_SLOTS, LEGACY_POSITION_ALIASES, ALL_POSITION_VALUES, FOLD_SIDES, resolveSlot, slotLayout, slotContainerStyle, foldSideForSlot, foldToggleSlot, foldDrawerStyle, foldPanelStyle, foldToggleStyle, resolveFoldBreakpointPx, shouldFoldAtWidth, DEFAULT_FOLD_BREAKPOINT_PX, FOLD_HYSTERESIS_PX, parseWidgetStyle, WIDGET_STYLE_KEY_NAMES, } from "./widget-layout";
|
|
@@ -125,6 +130,7 @@ export declare const OmMap: {
|
|
|
125
130
|
registerSource: typeof registerSource;
|
|
126
131
|
registerBasemap: typeof registerBasemap;
|
|
127
132
|
registerTerrain: typeof registerTerrain;
|
|
133
|
+
registerRoutingProvider: typeof registerRoutingProvider;
|
|
128
134
|
configureBasemap: typeof configureBasemap;
|
|
129
135
|
configureData: typeof configureData;
|
|
130
136
|
configureTelemetry: typeof configureTelemetry;
|
package/dist/ir-snapshot.d.ts
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* (snapshots are side-effect-free; a URL-backed layer shows the same empty
|
|
23
23
|
* placeholder the live Q6 pre-fetch state has).
|
|
24
24
|
*/
|
|
25
|
-
import type { LayerIR, LayerMeta, LayerFilter, LayerAssetState } from "./ir";
|
|
25
|
+
import type { LayerIR, LayerMeta, LayerFilter, LayerCategoryFilter, LayerAssetState } from "./ir";
|
|
26
26
|
import type { Shape } from "./expr";
|
|
27
27
|
export interface LayerIRSnapshot {
|
|
28
28
|
id: string;
|
|
@@ -38,6 +38,7 @@ export interface LayerIRSnapshot {
|
|
|
38
38
|
rows: number;
|
|
39
39
|
meta: LayerMeta;
|
|
40
40
|
filter?: LayerFilter;
|
|
41
|
+
categoryFilter?: LayerCategoryFilter;
|
|
41
42
|
/** Per-layer terrain mode when authored (`terrain` attribute) — absent = the type default. */
|
|
42
43
|
terrain?: "drape" | "offset" | "off";
|
|
43
44
|
/**
|
package/dist/ir.d.ts
CHANGED
|
@@ -30,18 +30,40 @@ export interface ColumnarData {
|
|
|
30
30
|
/** A layer's resolved data: row objects (flat/geojson) or columns (columnar). */
|
|
31
31
|
export type LayerData = unknown[] | ColumnarData;
|
|
32
32
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* (not just `meta`) because `ctx.stats`/`ctx.dataInViewport` apply it
|
|
38
|
-
* CPU-side by default (the "coherence rule") — it's operationally read, not
|
|
39
|
-
* just display metadata.
|
|
33
|
+
* One numeric dimension of the layer's active declarative filter (spec:
|
|
34
|
+
* "Filtering"). Carried on the IR (not just `meta`) because `ctx.stats`/
|
|
35
|
+
* `ctx.dataInViewport` apply it CPU-side by default (the "coherence rule")
|
|
36
|
+
* — it's operationally read, not just display metadata.
|
|
40
37
|
*/
|
|
41
|
-
export interface
|
|
38
|
+
export interface LayerFilterDimension {
|
|
42
39
|
field: string;
|
|
43
40
|
range: [number, number];
|
|
41
|
+
softRange?: [number, number];
|
|
44
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* The layer's active declarative filter — one entry per numeric dimension,
|
|
45
|
+
* up to 4 (deck.gl `DataFilterExtension`'s own `filterSize` ceiling; a
|
|
46
|
+
* GLSL compile-time define, verified against the extension's own source —
|
|
47
|
+
* see `applyFilterWiring`'s doc comment). The single-field case (the
|
|
48
|
+
* original, still-primary authoring path via `filter-field`/`filter-range`)
|
|
49
|
+
* is simply a one-entry array — every consumer treats N=1 the same as
|
|
50
|
+
* N>1, no special-casing.
|
|
51
|
+
*/
|
|
52
|
+
export type LayerFilter = LayerFilterDimension[];
|
|
53
|
+
/**
|
|
54
|
+
* One categorical dimension of the layer's active declarative filter — a
|
|
55
|
+
* discrete keep-list rather than a numeric range (deck.gl's `categorySize`
|
|
56
|
+
* slot, a SEPARATE bitmask mechanism from `filterSize`'s range test; values
|
|
57
|
+
* may be string or number). Carried on the IR for the same reason
|
|
58
|
+
* `LayerFilterDimension` is: `ctx.stats`/`ctx.dataInViewport` apply it
|
|
59
|
+
* CPU-side by default too.
|
|
60
|
+
*/
|
|
61
|
+
export interface LayerCategoryFilterDimension {
|
|
62
|
+
field: string;
|
|
63
|
+
categories: (string | number)[];
|
|
64
|
+
}
|
|
65
|
+
/** The layer's active categorical filter — one entry per dimension, up to 4 (categorySize's own ceiling). Independent of, and combinable with, the numeric `LayerFilter`. */
|
|
66
|
+
export type LayerCategoryFilter = LayerCategoryFilterDimension[];
|
|
45
67
|
/** Async non-row asset resolution carried by the IR (currently ImageOverlay EXIF only). */
|
|
46
68
|
export interface LayerAssetState {
|
|
47
69
|
kind: "image-overlay";
|
|
@@ -67,6 +89,20 @@ export interface LayerIR {
|
|
|
67
89
|
shape: Shape;
|
|
68
90
|
/** The raw `data` URL attribute, if any (ctx.layers metadata) — inline-JSON layers have none. */
|
|
69
91
|
dataUrl?: string;
|
|
92
|
+
/**
|
|
93
|
+
* The authored live-source options that select this layer's transport
|
|
94
|
+
* (spec: "Live & Streaming Data"), retained on the IR rather than consumed
|
|
95
|
+
* by `getData` alone. Both front-ends populate it, so anything asking "is
|
|
96
|
+
* this layer polling?" reads resolved state instead of querying the DOM —
|
|
97
|
+
* which only the HTML lane has (see telemetry's per-layer snapshot).
|
|
98
|
+
* Absent when the layer declares none.
|
|
99
|
+
*/
|
|
100
|
+
live?: {
|
|
101
|
+
source?: string;
|
|
102
|
+
key?: string;
|
|
103
|
+
flush?: string;
|
|
104
|
+
refresh?: string;
|
|
105
|
+
};
|
|
70
106
|
/**
|
|
71
107
|
* A `{z}/{x}/{y}` tile URL template (spec: "Tiled layers"): deck's `data`
|
|
72
108
|
* for TileLayer/MVTLayer. When set, the renderer passes THIS as `data`
|
|
@@ -81,8 +117,10 @@ export interface LayerIR {
|
|
|
81
117
|
*/
|
|
82
118
|
asset?: LayerAssetState;
|
|
83
119
|
meta: LayerMeta;
|
|
84
|
-
/** The layer's active declarative filter, if `filter-field`/`filter-
|
|
120
|
+
/** The layer's active declarative filter (one entry per dimension), if `filter-field`/`filter-fields` are present. */
|
|
85
121
|
filter?: LayerFilter;
|
|
122
|
+
/** The layer's active categorical filter (one entry per dimension), if `filter-category`/`filter-category-fields` are present. Independent of `filter`. */
|
|
123
|
+
categoryFilter?: LayerCategoryFilter;
|
|
86
124
|
/**
|
|
87
125
|
* Per-layer terrain mode (spec: "Terrain") — the `terrain` attribute:
|
|
88
126
|
* drape onto / sit on / ignore an active terrain surface. Absent = the
|
package/dist/layer-registry.d.ts
CHANGED
|
@@ -64,6 +64,13 @@ export interface LayerSchema {
|
|
|
64
64
|
* one-source-of-truth reasoning as `carriesTileset`.
|
|
65
65
|
*/
|
|
66
66
|
carriesGeoreference?: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Resolves its own route (spec: "Routing & Tracking") and supports the
|
|
69
|
+
* `onRouteResolved` deck prop — the runtime injects that hook only into
|
|
70
|
+
* these types (`Route`), same one-source-of-truth reasoning as
|
|
71
|
+
* `carriesTileset`. Drives `follow="fit-route"` camera behavior.
|
|
72
|
+
*/
|
|
73
|
+
carriesRoute?: boolean;
|
|
67
74
|
/** Layer-owned async asset resolver; keeps parse/runtime branching registry-driven rather than name-matched. */
|
|
68
75
|
assetResolver?: "image-overlay";
|
|
69
76
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Self-contained default marker icons (data: URIs) for Route/Tracking layers
|
|
3
|
+
* — no network fetch, no bundled asset, matching the library's own "sensible
|
|
4
|
+
* defaults" pillar (an author gets a working map with zero icon setup).
|
|
5
|
+
* Deliberately tiny/inline rather than a shared icon-atlas system: deck.gl's
|
|
6
|
+
* `IconLayer.getIcon` accepts a full per-object descriptor (`{url, width,
|
|
7
|
+
* height}`) and auto-packs it, so no `iconAtlas`/`iconMapping` is needed for
|
|
8
|
+
* this small a set.
|
|
9
|
+
*/
|
|
10
|
+
export interface IconDescriptor {
|
|
11
|
+
url: string;
|
|
12
|
+
width: number;
|
|
13
|
+
height: number;
|
|
14
|
+
anchorY?: number;
|
|
15
|
+
}
|
|
16
|
+
/** A dropped-pin marker (origin/destination waypoints on a `Route` layer). Anchored at its point (bottom of the pin), not its center. */
|
|
17
|
+
export declare function pinIcon(color: string): IconDescriptor;
|
|
18
|
+
/** A directional arrow marker (a `Tracking` layer's moving entity) — points "up" (north) at angle 0, rotated per-row via `getAngle`. */
|
|
19
|
+
export declare function arrowIcon(color: string): IconDescriptor;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RouteLayer — the Route half of "Routing & Tracking" (spec, v0.6.7).
|
|
3
|
+
* Expands into ordinary `PathLayer`/`IconLayer` instances, exactly the way
|
|
4
|
+
* `BIMLayer` expands into a `Tile3DLayer` — see that file's own doc comment
|
|
5
|
+
* for the pattern this mirrors (a `CompositeLayer` wrapping real deck.gl
|
|
6
|
+
* layers, not a new rendering path).
|
|
7
|
+
*
|
|
8
|
+
* Two authoring paths, mutually exclusive (`geometry` wins if both are
|
|
9
|
+
* present — validation.ts warns on the ambiguity):
|
|
10
|
+
*
|
|
11
|
+
* - `geometry` — an already-computed GeoJSON LineString. Resolves
|
|
12
|
+
* SYNCHRONOUSLY, no provider round-trip. Distance is derived locally
|
|
13
|
+
* (great-circle length); duration is left `NaN` — no speed model exists
|
|
14
|
+
* client-side, and a provider-computed route supplies its own.
|
|
15
|
+
* - `provider` + `origin` + `destination` (+ optional `waypoints`,
|
|
16
|
+
* `profile`) — resolves ASYNCHRONOUSLY via `RoutingProvider.computeRoute`
|
|
17
|
+
* (mirrors BIMLayer's `loadModel`: state, staleness checks, abort on
|
|
18
|
+
* supersede/teardown, `raiseError` on failure — see that file).
|
|
19
|
+
*
|
|
20
|
+
* `onRouteResolved` is injected by the runtime (`schema.carriesRoute`, the
|
|
21
|
+
* `onTilesetLoad`/`carriesTileset` precedent in runtime-core.ts) once a
|
|
22
|
+
* route is ready — that's what drives `follow="fit-route"` camera behavior.
|
|
23
|
+
* RouteLayer itself never touches the camera; camera side effects belong to
|
|
24
|
+
* runtime-core, not a deck.gl layer subclass.
|
|
25
|
+
*/
|
|
26
|
+
import { CompositeLayer } from "@deck.gl/core";
|
|
27
|
+
import type { Layer } from "@deck.gl/core";
|
|
28
|
+
import { type Route, type RouteWaypoint } from "../providers";
|
|
29
|
+
export interface RouteBounds {
|
|
30
|
+
bounds: [[number, number], [number, number]];
|
|
31
|
+
}
|
|
32
|
+
type LineStringGeometry = {
|
|
33
|
+
type: "LineString";
|
|
34
|
+
coordinates: [number, number][];
|
|
35
|
+
};
|
|
36
|
+
export interface RouteLayerProps {
|
|
37
|
+
geometry?: LineStringGeometry | string;
|
|
38
|
+
origin?: [number, number] | string;
|
|
39
|
+
destination?: [number, number] | string;
|
|
40
|
+
waypoints?: RouteWaypoint[] | string;
|
|
41
|
+
provider?: string;
|
|
42
|
+
profile?: "driving" | "walking" | "cycling";
|
|
43
|
+
color?: string;
|
|
44
|
+
casingColor?: string;
|
|
45
|
+
/** Injected by runtime-core.ts (schema.carriesRoute) — never authored. */
|
|
46
|
+
onRouteResolved?: (route: Route & RouteBounds) => void;
|
|
47
|
+
[prop: string]: unknown;
|
|
48
|
+
}
|
|
49
|
+
export declare class RouteLayer extends CompositeLayer<RouteLayerProps> {
|
|
50
|
+
static layerName: string;
|
|
51
|
+
static defaultProps: {
|
|
52
|
+
color: string;
|
|
53
|
+
casingColor: string;
|
|
54
|
+
profile: string;
|
|
55
|
+
};
|
|
56
|
+
state: {
|
|
57
|
+
route: Route | null;
|
|
58
|
+
loadingFor: string | null;
|
|
59
|
+
destroyed: boolean;
|
|
60
|
+
abort: AbortController | null;
|
|
61
|
+
};
|
|
62
|
+
initializeState(): void;
|
|
63
|
+
updateState({ props, oldProps }: {
|
|
64
|
+
props: RouteLayerProps;
|
|
65
|
+
oldProps: RouteLayerProps;
|
|
66
|
+
}): void;
|
|
67
|
+
finalizeState(): void;
|
|
68
|
+
private resolveRoute;
|
|
69
|
+
renderLayers(): Layer[];
|
|
70
|
+
}
|
|
71
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TrackingLayer — the Tracking half of "Routing & Tracking" (spec, v0.6.7).
|
|
3
|
+
* Wraps a single `IconLayer`: renders the CURRENT (or smoothly interpolating)
|
|
4
|
+
* position of one tracked entity, with bearing-derived rotation.
|
|
5
|
+
*
|
|
6
|
+
* v1 scope: ONE tracked entity per layer — the LAST row in `data` is "the"
|
|
7
|
+
* position. Fleet/multi-entity tracking on one layer is a documented
|
|
8
|
+
* follow-on, not built here (mirrors this codebase's own "v1 supports one,
|
|
9
|
+
* generalizing to many is a later tier" precedent — e.g. BIM model
|
|
10
|
+
* federation's "multiple co-registered models... NOT implemented").
|
|
11
|
+
*
|
|
12
|
+
* Position data arrives through the ORDINARY `data`/`source` mechanism (the
|
|
13
|
+
* design doc is explicit: a tracking feed is "a thin registerSource decoder
|
|
14
|
+
* over existing machinery", not a new subscription abstraction) —
|
|
15
|
+
* TrackingLayer itself knows nothing about where the data came from, same as
|
|
16
|
+
* any other curated layer reading `data`.
|
|
17
|
+
*
|
|
18
|
+
* Interpolation between updates and camera-follow are driven EXTERNALLY by
|
|
19
|
+
* `src/tracking-interpolation.ts` via the per-frame channel
|
|
20
|
+
* (`RuntimeCore.patchAnimatedProps`) — never inside this class, matching how
|
|
21
|
+
* RouteLayer never touches the camera itself either. When
|
|
22
|
+
* `interpolatedPosition` is present (injected only, never authored) it
|
|
23
|
+
* overrides the raw data-derived position; the un-interpolated fallback
|
|
24
|
+
* keeps this layer fully functional — just not smooth — even before the
|
|
25
|
+
* first interpolation frame lands (e.g. the very first fix, headless mode,
|
|
26
|
+
* or `prefers-reduced-motion`).
|
|
27
|
+
*/
|
|
28
|
+
import { CompositeLayer } from "@deck.gl/core";
|
|
29
|
+
import type { Layer } from "@deck.gl/core";
|
|
30
|
+
export interface TrackingLayerProps {
|
|
31
|
+
data?: readonly unknown[];
|
|
32
|
+
getPosition?: (d: unknown, info: {
|
|
33
|
+
index: number;
|
|
34
|
+
data: readonly unknown[];
|
|
35
|
+
}) => [number, number];
|
|
36
|
+
bearingField?: string;
|
|
37
|
+
color?: string;
|
|
38
|
+
size?: number;
|
|
39
|
+
/** Injected by src/tracking-interpolation.ts — never authored. */
|
|
40
|
+
interpolatedPosition?: [number, number];
|
|
41
|
+
interpolatedBearing?: number;
|
|
42
|
+
[prop: string]: unknown;
|
|
43
|
+
}
|
|
44
|
+
export declare class TrackingLayer extends CompositeLayer<TrackingLayerProps> {
|
|
45
|
+
static layerName: string;
|
|
46
|
+
static defaultProps: {
|
|
47
|
+
bearingField: string;
|
|
48
|
+
color: string;
|
|
49
|
+
size: number;
|
|
50
|
+
};
|
|
51
|
+
renderLayers(): Layer[];
|
|
52
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as a, D as s } from "./raster-
|
|
1
|
+
import { C as a, D as s } from "./raster-DtyMY54Z.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-
|
|
11
|
+
const e = await import("./LercDecode.es-BzboSQ2U.js");
|
|
12
12
|
return l || (await e.load(), l = !0), e;
|
|
13
13
|
}
|
|
14
14
|
async function i(e, r) {
|
package/dist/license.d.ts
CHANGED
|
@@ -15,20 +15,17 @@
|
|
|
15
15
|
* packaged-app `apps` claim — they MAY appear in markup, unlike data
|
|
16
16
|
* credentials.
|
|
17
17
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* contexts worth protecting already lift every cap as DEV contexts below.
|
|
30
|
-
* Both claims are deterrents that make reuse attributable via `keyId`;
|
|
31
|
-
* packaged-app enforcement is LEGAL, not technical (see LICENSE.md).
|
|
18
|
+
* Both claims are deployment SCOPING, not access control: keys are
|
|
19
|
+
* publishable by design, and commercial-use enforcement is LEGAL rather than
|
|
20
|
+
* technical (see LICENSE.md) — `keyId` is what makes a deployment
|
|
21
|
+
* attributable. `appId` reaches this module as a plain argument whose
|
|
22
|
+
* provenance it cannot verify, so a native host MUST source it from trusted
|
|
23
|
+
* platform build metadata and never from page script or bridge JSON.
|
|
24
|
+
*
|
|
25
|
+
* NOTE: this header is emitted verbatim into the published dist/license.d.ts.
|
|
26
|
+
* Keep it to the contract a consumer needs. Comparative analysis of how far
|
|
27
|
+
* each claim can be trusted, and why no origin heuristic guards the app
|
|
28
|
+
* claim, lives in agent-map-library-architecture.md (internal, not shipped).
|
|
32
29
|
*
|
|
33
30
|
* Decisions (spec, RESOLVED 2026-07-14; REVISED 2026-08-05): free tier =
|
|
34
31
|
* 5 layers / 25k rows per layer / 20 MB fetch; any paid plan hides the
|