@geolibre/core 3.6.1 → 3.7.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.
@@ -1,3 +1,4 @@
1
+ import { A as LineString, D as GeoJSON$1, E as FeatureCollection, O as GeoJsonProperties, T as Feature, j as MultiLineString, k as Geometry } from "./ellipsoids-BdHOMRmm.mjs";
1
2
  /**
2
3
  * Maps the project's basemap onto imagery the Cesium globe can render.
3
4
  *
@@ -200,180 +201,6 @@ declare function sameCesiumImagery(a: CesiumBasemapImagery, b: CesiumBasemapImag
200
201
  * @returns What the globe should draw beneath the data layers.
201
202
  */
202
203
  declare function basemapToCesiumImagery(styleUrl: string | undefined, cesiumBasemap?: CesiumBasemapId): CesiumBasemapImagery;
203
- /**
204
- * The value values for the "type" property of GeoJSON Objects.
205
- * https://tools.ietf.org/html/rfc7946#section-1.4
206
- */
207
- type GeoJsonTypes = GeoJSON$1["type"];
208
- /**
209
- * Bounding box
210
- * https://tools.ietf.org/html/rfc7946#section-5
211
- */
212
- type BBox = [number, number, number, number] | [number, number, number, number, number, number];
213
- /**
214
- * A Position is an array of coordinates.
215
- * https://tools.ietf.org/html/rfc7946#section-3.1.1
216
- * Array should contain between two and three elements.
217
- * The previous GeoJSON specification allowed more elements (e.g., which could be used to represent M values),
218
- * but the current specification only allows X, Y, and (optionally) Z to be defined.
219
- *
220
- * Note: the type will not be narrowed down to `[number, number] | [number, number, number]` due to
221
- * marginal benefits and the large impact of breaking change.
222
- *
223
- * See previous discussions on the type narrowing:
224
- * - {@link https://github.com/DefinitelyTyped/DefinitelyTyped/pull/21590|Nov 2017}
225
- * - {@link https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/67773|Dec 2023}
226
- * - {@link https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/71441| Dec 2024}
227
- *
228
- * One can use a
229
- * {@link https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates|user-defined type guard that returns a type predicate}
230
- * to determine if a position is a 2D or 3D position.
231
- *
232
- * @example
233
- * import type { Position } from 'geojson';
234
- *
235
- * type StrictPosition = [x: number, y: number] | [x: number, y: number, z: number]
236
- *
237
- * function isStrictPosition(position: Position): position is StrictPosition {
238
- * return position.length === 2 || position.length === 3
239
- * };
240
- *
241
- * let position: Position = [-116.91, 45.54];
242
- *
243
- * let x: number;
244
- * let y: number;
245
- * let z: number | undefined;
246
- *
247
- * if (isStrictPosition(position)) {
248
- * // `tsc` would throw an error if we tried to destructure a fourth parameter
249
- * [x, y, z] = position;
250
- * } else {
251
- * throw new TypeError("Position is not a 2D or 3D point");
252
- * }
253
- */
254
- type Position = number[];
255
- /**
256
- * The base GeoJSON object.
257
- * https://tools.ietf.org/html/rfc7946#section-3
258
- * The GeoJSON specification also allows foreign members
259
- * (https://tools.ietf.org/html/rfc7946#section-6.1)
260
- * Developers should use "&" type in TypeScript or extend the interface
261
- * to add these foreign members.
262
- */
263
- interface GeoJsonObject {
264
- // Don't include foreign members directly into this type def.
265
- // in order to preserve type safety.
266
- // [key: string]: any;
267
- /**
268
- * Specifies the type of GeoJSON object.
269
- */
270
- type: GeoJsonTypes;
271
- /**
272
- * Bounding box of the coordinate range of the object's Geometries, Features, or Feature Collections.
273
- * The value of the bbox member is an array of length 2*n where n is the number of dimensions
274
- * represented in the contained geometries, with all axes of the most southwesterly point
275
- * followed by all axes of the more northeasterly point.
276
- * The axes order of a bbox follows the axes order of geometries.
277
- * https://tools.ietf.org/html/rfc7946#section-5
278
- */
279
- bbox?: BBox | undefined;
280
- }
281
- /**
282
- * Union of GeoJSON objects.
283
- */
284
- type GeoJSON$1<G extends Geometry | null = Geometry, P = GeoJsonProperties> = G | Feature<G, P> | FeatureCollection<G, P>;
285
- /**
286
- * Geometry object.
287
- * https://tools.ietf.org/html/rfc7946#section-3
288
- */
289
- type Geometry = Point | MultiPoint | LineString | MultiLineString | Polygon | MultiPolygon | GeometryCollection;
290
- /**
291
- * Point geometry object.
292
- * https://tools.ietf.org/html/rfc7946#section-3.1.2
293
- */
294
- interface Point extends GeoJsonObject {
295
- type: "Point";
296
- coordinates: Position;
297
- }
298
- /**
299
- * MultiPoint geometry object.
300
- * https://tools.ietf.org/html/rfc7946#section-3.1.3
301
- */
302
- interface MultiPoint extends GeoJsonObject {
303
- type: "MultiPoint";
304
- coordinates: Position[];
305
- }
306
- /**
307
- * LineString geometry object.
308
- * https://tools.ietf.org/html/rfc7946#section-3.1.4
309
- */
310
- interface LineString extends GeoJsonObject {
311
- type: "LineString";
312
- coordinates: Position[];
313
- }
314
- /**
315
- * MultiLineString geometry object.
316
- * https://tools.ietf.org/html/rfc7946#section-3.1.5
317
- */
318
- interface MultiLineString extends GeoJsonObject {
319
- type: "MultiLineString";
320
- coordinates: Position[][];
321
- }
322
- /**
323
- * Polygon geometry object.
324
- * https://tools.ietf.org/html/rfc7946#section-3.1.6
325
- */
326
- interface Polygon extends GeoJsonObject {
327
- type: "Polygon";
328
- coordinates: Position[][];
329
- }
330
- /**
331
- * MultiPolygon geometry object.
332
- * https://tools.ietf.org/html/rfc7946#section-3.1.7
333
- */
334
- interface MultiPolygon extends GeoJsonObject {
335
- type: "MultiPolygon";
336
- coordinates: Position[][][];
337
- }
338
- /**
339
- * Geometry Collection
340
- * https://tools.ietf.org/html/rfc7946#section-3.1.8
341
- */
342
- interface GeometryCollection<G extends Geometry = Geometry> extends GeoJsonObject {
343
- type: "GeometryCollection";
344
- geometries: G[];
345
- }
346
- type GeoJsonProperties = {
347
- [name: string]: any;
348
- } | null;
349
- /**
350
- * A feature object which contains a geometry and associated properties.
351
- * https://tools.ietf.org/html/rfc7946#section-3.2
352
- */
353
- interface Feature<G extends Geometry | null = Geometry, P = GeoJsonProperties> extends GeoJsonObject {
354
- type: "Feature";
355
- /**
356
- * The feature's geometry
357
- */
358
- geometry: G;
359
- /**
360
- * A value that uniquely identifies this feature in a
361
- * https://tools.ietf.org/html/rfc7946#section-3.2.
362
- */
363
- id?: string | number | undefined;
364
- /**
365
- * Properties associated with this feature.
366
- */
367
- properties: P;
368
- }
369
- /**
370
- * A collection of feature objects.
371
- * https://tools.ietf.org/html/rfc7946#section-3.3
372
- */
373
- interface FeatureCollection<G extends Geometry | null = Geometry, P = GeoJsonProperties> extends GeoJsonObject {
374
- type: "FeatureCollection";
375
- features: Array<Feature<G, P>>;
376
- }
377
204
  /** Supported GeoArrow geometry types. */
378
205
  type GeoArrowGeometryType = "Point" | "MultiPoint" | "LineString" | "MultiLineString" | "Polygon" | "MultiPolygon";
379
206
  /**
@@ -480,6 +307,10 @@ interface PrintLayoutConfig {
480
307
  customHeight: number;
481
308
  customUnit: "mm" | "px";
482
309
  pageMargin: "normal" | "narrow" | "none";
310
+ /** Colour of the page around the map: title block, footer row and margins. */
311
+ pageBackground: string;
312
+ /** Look of the panels over the map: white or dark. */
313
+ panelTheme: "light" | "dark";
483
314
  showPageBorder: boolean;
484
315
  pageBorderColor: string;
485
316
  pageBorderWidth: number;
@@ -781,6 +612,20 @@ type GeometryGeneratorType = "none" | "centroid" | "bounding-box" | "convex-hull
781
612
  * scale (zoom). See {@link LayerStyle.strokeWidthUnit}.
782
613
  */
783
614
  type StrokeWidthUnit = "pixels" | "meters";
615
+ /**
616
+ * The named dash patterns the Style panel offers for {@link LayerStyle.strokeDash},
617
+ * in MapLibre `line-dasharray` units (multiples of the line width). `solid` is
618
+ * the empty pattern. QGIS pen styles map onto the same names.
619
+ */
620
+ declare const STROKE_DASH_PRESETS: {
621
+ readonly solid: readonly [];
622
+ readonly dashed: readonly [4, 2];
623
+ readonly dotted: readonly [1, 2];
624
+ readonly "dash-dot": readonly [4, 2, 1, 2];
625
+ readonly "long-dash": readonly [8, 3];
626
+ };
627
+ /** A named entry of {@link STROKE_DASH_PRESETS}. */
628
+ type StrokeDashPreset = keyof typeof STROKE_DASH_PRESETS;
784
629
  /**
785
630
  * The chart drawn on top of each feature by the diagram renderer (QGIS-style
786
631
  * diagram symbology), or `"none"` when diagrams are off. Diagrams visualize
@@ -978,6 +823,21 @@ interface LayerStyle {
978
823
  * point/circle outlines remain pixel-based.
979
824
  */
980
825
  strokeWidthUnit: StrokeWidthUnit;
826
+ /**
827
+ * Opacity (0..1) of lines, polygon outlines and point outlines, applied on
828
+ * top of the layer opacity, so a translucent outline can sit over an opaque
829
+ * fill. A per-feature simplestyle `stroke-opacity` replaces it for features
830
+ * that carry one, as `fill-opacity` replaces {@link fillOpacity}.
831
+ */
832
+ strokeOpacity: number;
833
+ /**
834
+ * Dash pattern of lines and polygon outlines: alternating dash and gap
835
+ * lengths in multiples of the stroke width, as MapLibre's `line-dasharray`
836
+ * takes them. Empty draws a solid line. See {@link STROKE_DASH_PRESETS}.
837
+ */
838
+ strokeDash: number[];
839
+ /** Blur in pixels applied to lines and polygon outlines; 0 keeps them sharp. */
840
+ strokeBlur: number;
981
841
  fillOpacity: number;
982
842
  circleRadius: number;
983
843
  textColor: string;
@@ -991,9 +851,29 @@ interface LayerStyle {
991
851
  extrusionHeightProperty: string;
992
852
  extrusionHeightScale: number;
993
853
  extrusionBase: number;
854
+ /**
855
+ * Attribute whose value, times {@link extrusionBaseScale}, is added to
856
+ * {@link extrusionBase} per feature, so one layer can stack floors from a
857
+ * `level` field. Empty keeps the flat base. Like the height, the base is an
858
+ * altitude in metres, not a thickness: the roof still comes from the height.
859
+ */
860
+ extrusionBaseProperty: string;
861
+ /** Multiplier for {@link extrusionBaseProperty} (e.g. metres per floor). */
862
+ extrusionBaseScale: number;
863
+ /**
864
+ * When above 0, every feature is this many metres tall on top of its base
865
+ * (roof = base + floor height), and the height property and expression are
866
+ * ignored. 0 keeps the height as the roof's altitude.
867
+ */
868
+ extrusionFloorHeight: number;
994
869
  extrusionAdvancedStyleEnabled: boolean;
995
870
  extrusionColorExpression: string;
996
871
  extrusionHeightExpression: string;
872
+ /**
873
+ * Advanced-mode MapLibre expression for the extrusion base, as JSON. When it
874
+ * parses it wins over {@link extrusionBase} and {@link extrusionBaseProperty}.
875
+ */
876
+ extrusionBaseExpression: string;
997
877
  /**
998
878
  * When true, a vector layer whose coordinates carry Z values (e.g. a GPX
999
879
  * track with elevations) renders in true 3D through the shared deck.gl
@@ -1553,6 +1433,37 @@ interface LayerQuickFilter {
1553
1433
  /** `text`: the needle. Blank means no constraint. */
1554
1434
  text?: string;
1555
1435
  }
1436
+ /**
1437
+ * Floor picker (issue #3341): which floors of a multi-level layer are drawn.
1438
+ *
1439
+ * `all` (the default) draws every floor; `only` draws the chosen one; `below`
1440
+ * draws it and every floor under it, the cutaway view of a building with the
1441
+ * upper storeys lifted off.
1442
+ */
1443
+ type LevelFilterMode = "all" | "only" | "below";
1444
+ /**
1445
+ * A layer linked to the on-map floor picker. The picker lists the levels found
1446
+ * in {@link field} across every linked layer and writes the choice back here.
1447
+ *
1448
+ * {@link values} holds the raw attribute values that match the choice, so the
1449
+ * compiled filter is a plain `in` test every renderer evaluates the same way,
1450
+ * even for OpenStreetMap's multi-level values such as `"0;1"` or `"0-2"`.
1451
+ */
1452
+ interface LayerLevelFilter {
1453
+ /** The feature property that holds the floor, e.g. `level` or `ordinal`. */
1454
+ field: string;
1455
+ /** Which floors are drawn. Defaults to `all`. */
1456
+ mode?: LevelFilterMode;
1457
+ /** The chosen level, as the picker labels it (`"-1"`, `"0"`, `"G"`). */
1458
+ level?: string | null;
1459
+ /**
1460
+ * The raw `field` values that match {@link level} under {@link mode},
1461
+ * resolved from the layer's features when the choice is made. Ignored in
1462
+ * `all` mode. Absent while unresolved, which draws every floor until the
1463
+ * picker resolves it.
1464
+ */
1465
+ values?: (string | number)[];
1466
+ }
1556
1467
  /** Persisted refresh policy and most recent synchronization result for a layer. */
1557
1468
  interface LayerConnection {
1558
1469
  /** Owning layer id. Repeated here so records remain self-describing when exported. */
@@ -1735,6 +1646,13 @@ interface GeoLibreLayer {
1735
1646
  * a host page's filter and a user's filter narrow the layer together.
1736
1647
  */
1737
1648
  quickFilters?: LayerQuickFilter[];
1649
+ /**
1650
+ * Floor picker link (issue #3341). Persisted control state: the picker
1651
+ * compiles it into the layer's filter alongside {@link filterExpression} and
1652
+ * {@link quickFilters}, so it narrows the layer together with the Time Slider
1653
+ * window and every other filter.
1654
+ */
1655
+ levelFilter?: LayerLevelFilter;
1738
1656
  sourcePath?: string;
1739
1657
  /**
1740
1658
  * Id of the {@link LayerGroup} this layer belongs to, or `undefined` when the
@@ -2923,278 +2841,6 @@ interface NonGeographicCoordinates {
2923
2841
  * @returns Details when a coordinate is out of geographic range, else null.
2924
2842
  */
2925
2843
  declare function detectNonGeographicCoordinates(geojson: GeoJSON.FeatureCollection | undefined, sampleLimit?: number): NonGeographicCoordinates | null;
2926
- /**
2927
- * Celestial-body ellipsoids and the planetary basemaps that pair with them.
2928
- *
2929
- * GeoLibre is Earth-centric by construction: the default map is Web Mercator
2930
- * and all vector data is kept as lon/lat GeoJSON. This module does *not*
2931
- * change that (a map drawn in a body's own polar or simple-cylindrical CRS is
2932
- * `map-crs.ts`). What it adds is a per-project notion of *which body* the
2933
- * coordinates describe, so that:
2934
- *
2935
- * - distance / area / scale measurements use that body's radius instead of a
2936
- * hardcoded Earth radius, and
2937
- * - Moon / Mars basemaps (published in a Web-Mercator tiling scheme) can be
2938
- * selected like any other basemap.
2939
- *
2940
- * The active ellipsoid is a lightweight module-level singleton kept in sync with
2941
- * the project's map preferences (see the store's `setPreferences`). Measurement
2942
- * helpers read it lazily at call time, so callers in other packages don't need
2943
- * the value threaded through their signatures — a deliberate prototype-friendly
2944
- * shortcut over a full CRS/context refactor.
2945
- */
2946
- /** A biaxial (rotational) ellipsoid describing a celestial body. */
2947
- interface Ellipsoid {
2948
- /** Stable id persisted in the project (`map.ellipsoidId`). */
2949
- id: string;
2950
- /** Human-readable name shown in the UI. */
2951
- name: string;
2952
- /** Equatorial (semi-major) radius in metres — the "web mercator" radius. */
2953
- semiMajorAxisMeters: number;
2954
- /**
2955
- * Inverse flattening `1/f`. `0` denotes a perfect sphere (Moon), in which case
2956
- * the polar radius equals {@link semiMajorAxisMeters}.
2957
- */
2958
- inverseFlattening: number;
2959
- }
2960
- /**
2961
- * Built-in ellipsoids. Earth is WGS 84; every other body uses IAU-adopted
2962
- * figures. Only Earth and Mars are appreciably oblate; the rest are modelled as
2963
- * spheres (`inverseFlattening: 0`), which is how the IAU/USGS simple-cylindrical
2964
- * products treat them and is well within the accuracy MapLibre's unit-sphere
2965
- * rendering can represent anyway.
2966
- */
2967
- declare const ELLIPSOIDS: readonly [{
2968
- readonly id: "earth";
2969
- readonly name: "Earth (WGS 84)";
2970
- readonly semiMajorAxisMeters: 6378137;
2971
- readonly inverseFlattening: 298.257223563;
2972
- }, {
2973
- readonly id: "moon";
2974
- readonly name: "Moon";
2975
- readonly semiMajorAxisMeters: 1737400;
2976
- readonly inverseFlattening: 0;
2977
- }, {
2978
- readonly id: "mars";
2979
- readonly name: "Mars (IAU 2000)";
2980
- readonly semiMajorAxisMeters: 3396190;
2981
- readonly inverseFlattening: 169.894447;
2982
- }, {
2983
- readonly id: "mercury";
2984
- readonly name: "Mercury";
2985
- readonly semiMajorAxisMeters: 2439400;
2986
- readonly inverseFlattening: 0;
2987
- }, {
2988
- readonly id: "venus";
2989
- readonly name: "Venus";
2990
- readonly semiMajorAxisMeters: 6051800;
2991
- readonly inverseFlattening: 0;
2992
- }, {
2993
- readonly id: "io";
2994
- readonly name: "Io";
2995
- readonly semiMajorAxisMeters: 1821600;
2996
- readonly inverseFlattening: 0;
2997
- }, {
2998
- readonly id: "europa";
2999
- readonly name: "Europa";
3000
- readonly semiMajorAxisMeters: 1560800;
3001
- readonly inverseFlattening: 0;
3002
- }, {
3003
- readonly id: "ganymede";
3004
- readonly name: "Ganymede";
3005
- readonly semiMajorAxisMeters: 2631200;
3006
- readonly inverseFlattening: 0;
3007
- }, {
3008
- readonly id: "callisto";
3009
- readonly name: "Callisto";
3010
- readonly semiMajorAxisMeters: 2410300;
3011
- readonly inverseFlattening: 0;
3012
- }, {
3013
- readonly id: "titan";
3014
- readonly name: "Titan";
3015
- readonly semiMajorAxisMeters: 2574730;
3016
- readonly inverseFlattening: 0;
3017
- }, {
3018
- readonly id: "pluto";
3019
- readonly name: "Pluto";
3020
- readonly semiMajorAxisMeters: 1188300;
3021
- readonly inverseFlattening: 0;
3022
- }, {
3023
- readonly id: "charon";
3024
- readonly name: "Charon";
3025
- readonly semiMajorAxisMeters: 606000;
3026
- readonly inverseFlattening: 0;
3027
- }];
3028
- type EllipsoidId = (typeof ELLIPSOIDS)[number]["id"];
3029
- declare const DEFAULT_ELLIPSOID_ID: EllipsoidId;
3030
- /** Look an ellipsoid up by id, falling back to Earth for unknown ids. */
3031
- declare function getEllipsoid(id: string | undefined): Ellipsoid;
3032
- /**
3033
- * Mean radius `R = (2a + b) / 3` in metres, where `b` is the polar radius
3034
- * derived from the inverse flattening. This is the radius used for spherical
3035
- * (haversine) distance and area math.
3036
- */
3037
- declare function meanRadiusMeters(ellipsoid: Ellipsoid): number;
3038
- /** Earth's mean radius in metres — the radius Turf.js and MapLibre bake in. */
3039
- declare const EARTH_MEAN_RADIUS_METERS: number;
3040
- /**
3041
- * Point the measurement helpers at a body. Unknown ids fall back to Earth so a
3042
- * malformed project can never break measurements. Safe to call on every
3043
- * preferences change; it is a cheap assignment.
3044
- */
3045
- declare function setActiveEllipsoidId(id: string | undefined): void;
3046
- declare function getActiveEllipsoid(): Ellipsoid;
3047
- /** Mean radius (metres) of the active body — for haversine distance/area. */
3048
- declare function getActiveMeanRadiusMeters(): number;
3049
- /** Semi-major axis (metres) of the active body — for its Web-Mercator scale. */
3050
- declare function getActiveSemiMajorAxisMeters(): number;
3051
- /**
3052
- * The active body's mean radius as a fraction of Earth's — `R_body / R_earth`,
3053
- * and exactly `1` on Earth.
3054
- *
3055
- * Everything GeoLibre measures ultimately comes from lon/lat *angles*, and the
3056
- * only thing that turns an angle into a ground distance is the radius it is
3057
- * multiplied by. Turf.js hardcodes Earth's, with no per-call override (that is
3058
- * the "Turf is Earth-locked" half of GeoLibre#1128), so rather than patch or
3059
- * replace Turf we post-scale what it returns and pre-scale what we hand it. The
3060
- * result is exact for a sphere, which is how every non-Earth body GeoLibre
3061
- * offers is modelled anyway, and within Mars' 0.6% flattening at worst.
3062
- *
3063
- * Suggested by @thareUSGS (USGS Astrogeology) on GeoLibre#1128 as the practical
3064
- * workaround planetary web maps have long used on Earth-locked engines.
3065
- */
3066
- declare function getActiveBodyRadiusRatio(): number;
3067
- /**
3068
- * Convert a length Turf.js measured on Earth into the active body's true ground
3069
- * length. A no-op on Earth.
3070
- *
3071
- * Use on anything Turf *returns* — a distance, a length, a perimeter.
3072
- *
3073
- * The correction is a dimensionless ratio, so it is unit-agnostic: pass the
3074
- * length in whatever unit Turf gave it back (metres, kilometres, miles) and the
3075
- * result is in that same unit. There is no hidden unit conversion here.
3076
- */
3077
- declare function earthLengthToBody(length: number): number;
3078
- /**
3079
- * Convert a true ground length on the active body into the Earth-equivalent
3080
- * length to hand Turf.js. A no-op on Earth.
3081
- *
3082
- * Use on anything passed *into* Turf as a distance — a buffer width, a circle
3083
- * or sector radius, a search threshold — so the resulting geometry spans that
3084
- * distance on this body rather than on Earth.
3085
- *
3086
- * Unit-agnostic like {@link earthLengthToBody}: pass the length in whatever
3087
- * unit you are about to hand Turf alongside it, and the result is in that unit.
3088
- */
3089
- declare function bodyLengthToEarth(length: number): number;
3090
- /**
3091
- * Convert an area Turf.js measured on Earth into the active body's true ground
3092
- * area. A no-op on Earth.
3093
- *
3094
- * Areas scale with the *square* of the radius ratio, so this is not the same
3095
- * correction as {@link earthLengthToBody}. Unit-agnostic in the same way, for
3096
- * whatever squared unit the area is expressed in.
3097
- */
3098
- declare function earthAreaToBody(area: number): number;
3099
- /**
3100
- * A raster basemap for a celestial body — the Moon and Mars mosaics, plus the
3101
- * Earth satellite imagery the planet switcher pairs with Earth. The tiles are
3102
- * XYZ (or TMS, see {@link scheme}) images in that body's Web-Mercator scheme, so
3103
- * MapLibre renders them directly. The `styleUrl` is a `geolibre://basemap/<id>`
3104
- * sentinel; the map controller expands it into a raster style at apply time (it
3105
- * is not a fetchable URL).
3106
- */
3107
- interface PlanetaryBasemap {
3108
- id: string;
3109
- name: string;
3110
- /** Sentinel stored as the basemap style URL. */
3111
- styleUrl: string;
3112
- /** XYZ (or TMS, see {@link scheme}) tile template. */
3113
- tileUrl: string;
3114
- /**
3115
- * Tile row ordering. OpenPlanetaryMap's single-layer raster mosaics (the S3
3116
- * datasets) are published as **TMS** (tile origin bottom-left, Y flipped),
3117
- * whereas the CARTO `opmbuilder` named maps are standard **XYZ**. Omit for
3118
- * XYZ; MapLibre defaults to `"xyz"` when `scheme` is absent.
3119
- */
3120
- scheme?: "tms";
3121
- /** Max native zoom of the source (MapLibre overzooms beyond this). */
3122
- maxZoom: number;
3123
- /** Attribution shown on the map. */
3124
- attribution: string;
3125
- /** The body this basemap depicts, so selecting it can set the ellipsoid. */
3126
- ellipsoidId: EllipsoidId;
3127
- }
3128
- declare const PLANETARY_BASEMAP_SENTINEL_PREFIX = "geolibre://basemap/";
3129
- declare const PLANETARY_BASEMAPS: readonly PlanetaryBasemap[];
3130
- /**
3131
- * The section a planetary basemap is grouped under in the New Project and
3132
- * Change Basemap pickers. The Moon and Mars keep dedicated sections (they are
3133
- * the most-used bodies and each has several mosaics); every other body is
3134
- * collapsed into a single "other" section so the picker isn't a wall of
3135
- * one-item headings.
3136
- */
3137
- type PlanetaryBasemapSectionId = "moon" | "mars" | "other";
3138
- /** A picker section paired with the planetary basemaps it lists. */
3139
- interface PlanetaryBasemapGroup {
3140
- id: PlanetaryBasemapSectionId;
3141
- basemaps: readonly PlanetaryBasemap[];
3142
- }
3143
- /**
3144
- * {@link PLANETARY_BASEMAPS} grouped for the pickers: one section each for the
3145
- * Moon and Mars, then a single "Other celestial bodies" section for the rest,
3146
- * in {@link PLANETARY_BASEMAPS} order (grouped by body). Empty sections are
3147
- * dropped.
3148
- */
3149
- declare const PLANETARY_BASEMAP_GROUPS: readonly PlanetaryBasemapGroup[];
3150
- /** Resolve a `geolibre://basemap/<id>` sentinel to its planetary basemap. */
3151
- declare function getPlanetaryBasemapByStyleUrl(styleUrl: string | undefined): PlanetaryBasemap | undefined;
3152
- /** Look a planetary basemap up by its stable id. */
3153
- declare function getPlanetaryBasemapById(id: string): PlanetaryBasemap | undefined;
3154
- /**
3155
- * The celestial bodies offered by the Layers-panel planet switcher, in menu
3156
- * order (like Google Earth's planet dropdown). Each body is paired with the
3157
- * basemap the switcher applies for it — USGS satellite imagery for Earth, the
3158
- * OpenPlanetaryMap Hillshaded Albedo mosaic for the Moon, and the OpenPlanetaryMap
3159
- * Viking mosaic for Mars.
3160
- */
3161
- declare const PLANET_SWITCHER_OPTIONS: readonly [{
3162
- readonly ellipsoidId: "earth";
3163
- readonly basemapId: "earth-usgs-imagery";
3164
- }, {
3165
- readonly ellipsoidId: "moon";
3166
- readonly basemapId: "moon-hillshaded-albedo";
3167
- }, {
3168
- readonly ellipsoidId: "mars";
3169
- readonly basemapId: "mars-viking-mdim21";
3170
- }, {
3171
- readonly ellipsoidId: "callisto";
3172
- readonly basemapId: "callisto-galileo-voyager";
3173
- }, {
3174
- readonly ellipsoidId: "charon";
3175
- readonly basemapId: "charon-mosaic";
3176
- }, {
3177
- readonly ellipsoidId: "europa";
3178
- readonly basemapId: "europa-galileo-voyager";
3179
- }, {
3180
- readonly ellipsoidId: "ganymede";
3181
- readonly basemapId: "ganymede-galileo-voyager";
3182
- }, {
3183
- readonly ellipsoidId: "io";
3184
- readonly basemapId: "io-galileo-color";
3185
- }, {
3186
- readonly ellipsoidId: "mercury";
3187
- readonly basemapId: "mercury-messenger-color";
3188
- }, {
3189
- readonly ellipsoidId: "pluto";
3190
- readonly basemapId: "pluto-mosaic";
3191
- }, {
3192
- readonly ellipsoidId: "titan";
3193
- readonly basemapId: "titan-cassini";
3194
- }, {
3195
- readonly ellipsoidId: "venus";
3196
- readonly basemapId: "venus-magellan-color";
3197
- }];
3198
2844
  /**
3199
2845
  * Helpers for vector data whose coordinates carry a Z value (elevation), e.g.
3200
2846
  * GPX tracks with `<ele>` readings or LineStringZ/PointZ geometries. MapLibre's
@@ -3821,7 +3467,7 @@ interface LayerDiff {
3821
3467
  style: ProjectValueChange[];
3822
3468
  /** Label style keys (`style.labels.*`), without the `labels.` prefix. */
3823
3469
  labels: ProjectValueChange[];
3824
- /** `filterExpression` and `quickFilters`. */
3470
+ /** `filterExpression`, `quickFilters` and `levelFilter`. */
3825
3471
  filter: ProjectValueChange[];
3826
3472
  /** `type`, `source.*` and `sourcePath`. */
3827
3473
  source: ProjectValueChange[];
@@ -3918,5 +3564,5 @@ declare function diffFeatureCollections(before: FeatureCollection | null | undef
3918
3564
  * @returns The grouped change summary.
3919
3565
  */
3920
3566
  declare function diffProjects(before: GeoLibreProject, after: GeoLibreProject, options?: ProjectDiffOptions): ProjectDiff;
3921
- export { collectTransitiveJoinSourceIds as $, LegendConfig as $n, RecentProjectEntry as $r, CollaborationParticipant as $t, normalizeMapViewState as A, printLayoutConfigsEqual as Ai, GeometryGeneratorType as An, PopupDateFormat as Ar, getActiveBodyRadiusRatio as At, normalizeWidgets as B, FeatureCollection as Bi, LayerDescriptiveMetadata as Bn, ProcessingRunStatus as Br, AppCapabilities as Bt, isSessionOnlyLayer as C, PrintLayoutConfig as Ci, EditorTrackingConfig as Cn, NETCDF_IMAGE_SOURCE_KIND as Cr, PLANET_SWITCHER_OPTIONS as Ct, normalizeDashboardColumns as D, createDefaultPrintLayout as Di, GeoLibreProject as Dn, PROTOMAPS_BASEMAPS as Dr, bodyLengthToEarth as Dt, normalizeBookmarks as E, PrintLayoutPageFilter as Ei, GeoLibreLayer as En, PROJECT_VERSION as Er, PlanetaryBasemapSectionId as Et, normalizeProcessingHistory as F, computeGeoArrowBBox as Fi, LabelDedupe as Fn, ProcessingModelGraph as Fr, getPlanetaryBasemapById as Ft, serializeProject as G, Polygon as Gi, LayerMetadataContact as Gn, ProjectInteraction as Gr, AttributeFormValueMapEntry as Gt, portableWmsTileUrl as H, LineString as Hi, LayerJoin as Hn, ProjectBookmarkGroup as Hr, AppRole as Ht, normalizeProjectComments as I, featureCollectionToGeoArrow as Ii, LabelStyle as In, ProcessingModelStep as Ir, getPlanetaryBasemapByStyleUrl as It, storyMapHasContent as J, CesiumBasemapImagery as Ji, LayerPopupConfig as Jn, ProjectPreferences as Jr, BLEND_MODES as Jt, serializeProjectWithLayerCache as K, CESIUM_BASEMAPS as Ki, LayerMetadataLink as Kn, ProjectPluginControlPosition as Kr, AttributeFormWidget as Kt, normalizeProjectInteraction as L, geoArrowToFeatureCollection as Li, LabelTransform as Ln, ProcessingRerunRequest as Lr, meanRadiusMeters as Lt, normalizeModels as M, scrubPrintLayoutForRemovedLayers as Mi, LARGE_VECTOR_FEATURE_THRESHOLD as Mn, PopupFieldFormat as Mr, getActiveMeanRadiusMeters as Mt, normalizeObiaWorkbench as N, GeoArrowBatch as Ni, LAYER_TYPES as Nn, PopupFieldKind as Nr, getActiveSemiMajorAxisMeters as Nt, normalizeLegendConfig as O, isDefaultPrintLayout as Oi, GeocodingLocator as On, ParticipantIdentity as Or, earthAreaToBody as Ot, normalizePrimaryRenderer as P, GeoArrowGeometryType as Pi, LabelAnchor as Pn, ProcessingModel as Pr, getEllipsoid as Pt, cascadeLayerJoinRefresh as Q, sameCesiumImagery as Qi, LayerVirtualField as Qn, QuickFilterTextOperator as Qr, CollaborationMode as Qt, normalizeSecondaryMapViews as R, isGeoArrowBatch as Ri, LayerCapabilities as Rn, ProcessingRun as Rr, setActiveEllipsoidId as Rt, isAllowedPluginManifestUrl as S, DEFAULT_PRINT_LAYOUT as Si, DiagramType as Sn, ModelToolProvider as Sr, PLANETARY_BASEMAP_SENTINEL_PREFIX as St, normalizeBookmarkGroups as T, PrintLayoutLegendEntry as Ti, FillPattern as Tn, OPENFREEMAP_BASEMAPS as Tr, PlanetaryBasemapGroup as Tt, projectFromStore as U, MultiPolygon as Ui, LayerJoinStats as Un, ProjectComment as Ur, AttributeFormConfig as Ut, parseProject as V, Geometry as Vi, LayerGroup as Vn, ProjectBookmark as Vr, AppPrivilege as Vt, resolveMapGrid as W, Point as Wi, LayerLibraryEntry as Wn, ProjectControlSetting as Wr, AttributeFormFieldConfig as Wt, applyJoinsToLayer as X, basemapToCesiumImagery as Xi, LayerStyle as Xn, QuickFilterDateKind as Xr, CollabInvite as Xt, ApplyLayerJoinsResult as Y, availableCesiumBasemap as Yi, LayerQuickFilter as Yn, ProjectTemplateEntry as Yr, BlendMode as Yt, applyLayerJoins as Z, normalizeCesiumBasemap as Zi, LayerType as Zn, QuickFilterKind as Zr, CollaborationChatMessage as Zt, createEmptyProject as _, VectorStyleStop as _i, DashboardWidget as _n, ModelGraphEdge as _r, ELLIPSOIDS as _t, ProjectDiffOptions as a, StoryChapterAlignment as ai, CommentReply as an, LineDecoration as ar, batchDecodePolylines as at, detachProjectCopy as b, shouldUseTiledRendering as bi, DiagramField as bn, ModelGraphPort as br, PLANETARY_BASEMAPS as bt, diffProjects as c, StoryInsetPosition as ci, DEFAULT_DASHBOARD_COLUMNS as cn, MAX_PROCESSING_HISTORY as cr, encodePolyline as ct, CreateProjectOptions as d, StorySlideMode as di, DEFAULT_MAP_GRID_LAYOUT as dn, MapPreferences as dr, unescapePolyline as dt, RuntimeEnvironmentVariable as ei, CollaborationPresence as en, LegendCustomEntry as er, layerJoinKey as et, DEFAULT_PROJECT_NAME as f, StrokeWidthUnit as fi, DEFAULT_PRIMARY_RENDERER as fn, MapProjection as fr, geojsonHasZCoordinates as ft, createDefaultMapView as g, VectorStyleMode as gi, DUCKDB_VECTOR_ROUTE_BYTES as gn, MarkerShape as gr, EARTH_MEAN_RADIUS_METERS as gt, applyProjectToStore as h, VectorRule as hi, DUCKDB_VECTOR_FEATURE_WARN_COUNT as hn, MapViewState as hr, DEFAULT_ELLIPSOID_ID as ht, ProjectDiff as i, StoryChapter as ii, CommentAuthor as in, LegendPanelPosition as ir, PolylineDecodeResult as it, normalizeModelGraph as j, scrubPrintLayoutForLayers as ji, IndicatorAggregation as jn, PopupFieldConfig as jr, getActiveEllipsoid as jt, normalizeMapLayout as k, normalizePrintLayoutConfig as ki, GeocodingPreferences as kn, PointRenderer as kr, earthLengthToBody as kt, jsonValuesEqual as l, StoryLayerOpacityChange as li, DEFAULT_LAYER_STYLE as ln, MIN_DASHBOARD_COLUMNS as lr, geoJSONToPolylineStr as lt, ProjectLayerSerializationCache as m, StyleLibraryEntryKind as mi, DEFAULT_STORY_MAP as mn, MapScaleUnit as mr, transformGeojsonElevation as mt, LayerDiff as n, SecondaryMapView as ni, CollaborationState as nn, LegendCustomShape as nr, stripJoinFields as nt, ProjectValueChange as o, StoryChapterAnimation as oi, DEFAULT_BASEMAP as on, MAX_DASHBOARD_COLUMNS as or, decodePolyline as ot, MAX_PROJECT_BOOKMARKS as p, StyleLibraryEntry as pi, DEFAULT_PROJECT_PREFERENCES as pn, MapRendererKind as pr, horizontalBbox as pt, serializeProjectWithLayerCacheAsync as q, CesiumBasemapId as qi, LayerMetadataTemporalExtent as qn, ProjectPluginState as qr, BLANK_BASEMAP as qt, PluginDiff as r, StoryActiveSlideMode as ri, CommentAnchor as rn, LegendItemOverride as rr, PolylineBatchOptions as rt, diffFeatureCollections as s, StoryChapterLocation as si, DEFAULT_BLEND_MODE as sn, MAX_MAP_GRID_DIM as sr, decodePolylineDetailed as st, FeatureChangeSummary as t, SQL_QUERY_SOURCE_KIND as ti, CollaborationRole as tn, LegendCustomItem as tr, reapplyLayerJoins as tt, previewValue as u, StoryMap as ui, DEFAULT_LEGEND_CONFIG as un, MapGridLayout as ur, polylineStrToGeoJSON as ut, createProjectLayerSerializationCache as v, detectNonGeographicCoordinates as vi, DashboardWidgetAggregation as vn, ModelGraphNode as vr, Ellipsoid as vt, normalizeBlankBackgroundColor as w, PrintLayoutCorner as wi, FieldVisibility as wn, NonGeographicCoordinates as wr, PlanetaryBasemap as wt, hydrateProjectLayer as x, styleValue as xi, DiagramSizeMode as xn, ModelPortKind as xr, PLANETARY_BASEMAP_GROUPS as xt, createProjectTemplate as y, isDuckDBQueryLayer as yi, DashboardWidgetType as yn, ModelGraphNodeKind as yr, EllipsoidId as yt, normalizeStoryMap as z, Feature as zi, LayerConnection as zn, ProcessingRunKind as zr, AddTileLayerOptions as zt };
3922
- //# sourceMappingURL=project-diff-BJDslj2U.d.mts.map
3567
+ export { collectTransitiveJoinSourceIds as $, ModelPortKind as $n, isDuckDBQueryLayer as $r, EditorTrackingConfig as $t, normalizeMapViewState as A, LegendConfig as An, QuickFilterTextOperator as Ar, CollaborationPresence as At, normalizeWidgets as B, MAX_PROCESSING_HISTORY as Bn, StoryChapterLocation as Br, DEFAULT_LEGEND_CONFIG as Bt, isSessionOnlyLayer as C, basemapToCesiumImagery as Ci, LayerMetadataLink as Cn, ProjectInteraction as Cr, BLANK_BASEMAP as Ct, normalizeDashboardColumns as D, LayerStyle as Dn, ProjectTemplateEntry as Dr, CollaborationChatMessage as Dt, normalizeBookmarks as E, LayerQuickFilter as En, ProjectPreferences as Er, CollabInvite as Et, normalizeProcessingHistory as F, LegendPanelPosition as Fn, SecondaryMapView as Fr, CommentReply as Ft, serializeProject as G, MapRendererKind as Gn, StrokeDashPreset as Gr, DUCKDB_VECTOR_FEATURE_WARN_COUNT as Gt, portableWmsTileUrl as H, MapGridLayout as Hn, StoryLayerOpacityChange as Hr, DEFAULT_PRIMARY_RENDERER as Ht, normalizeProjectComments as I, LevelFilterMode as In, StoryActiveSlideMode as Ir, DEFAULT_BASEMAP as It, storyMapHasContent as J, MarkerShape as Jn, StyleLibraryEntryKind as Jr, DashboardWidgetAggregation as Jt, serializeProjectWithLayerCache as K, MapScaleUnit as Kn, StrokeWidthUnit as Kr, DUCKDB_VECTOR_ROUTE_BYTES as Kt, normalizeProjectInteraction as L, LineDecoration as Ln, StoryChapter as Lr, DEFAULT_BLEND_MODE as Lt, normalizeModels as M, LegendCustomItem as Mn, RuntimeEnvironmentVariable as Mr, CollaborationState as Mt, normalizeObiaWorkbench as N, LegendCustomShape as Nn, SQL_QUERY_SOURCE_KIND as Nr, CommentAnchor as Nt, normalizeLegendConfig as O, LayerType as On, QuickFilterDateKind as Or, CollaborationMode as Ot, normalizePrimaryRenderer as P, LegendItemOverride as Pn, STROKE_DASH_PRESETS as Pr, CommentAuthor as Pt, cascadeLayerJoinRefresh as Q, ModelGraphPort as Qn, detectNonGeographicCoordinates as Qr, DiagramType as Qt, normalizeSecondaryMapViews as R, MAX_DASHBOARD_COLUMNS as Rn, StoryChapterAlignment as Rr, DEFAULT_DASHBOARD_COLUMNS as Rt, isAllowedPluginManifestUrl as S, availableCesiumBasemap as Si, LayerMetadataContact as Sn, ProjectControlSetting as Sr, AttributeFormWidget as St, normalizeBookmarkGroups as T, sameCesiumImagery as Ti, LayerPopupConfig as Tn, ProjectPluginState as Tr, BlendMode as Tt, projectFromStore as U, MapPreferences as Un, StoryMap as Ur, DEFAULT_PROJECT_PREFERENCES as Ut, parseProject as V, MIN_DASHBOARD_COLUMNS as Vn, StoryInsetPosition as Vr, DEFAULT_MAP_GRID_LAYOUT as Vt, resolveMapGrid as W, MapProjection as Wn, StorySlideMode as Wr, DEFAULT_STORY_MAP as Wt, applyJoinsToLayer as X, ModelGraphNode as Xn, VectorStyleMode as Xr, DiagramField as Xt, ApplyLayerJoinsResult as Y, ModelGraphEdge as Yn, VectorRule as Yr, DashboardWidgetType as Yt, applyLayerJoins as Z, ModelGraphNodeKind as Zn, VectorStyleStop as Zr, DiagramSizeMode as Zt, createEmptyProject as _, geoArrowToFeatureCollection as _i, LayerGroup as _n, ProcessingRunKind as _r, AppPrivilege as _t, ProjectDiffOptions as a, PrintLayoutLegendEntry as ai, GeocodingPreferences as an, PROTOMAPS_BASEMAPS as ar, batchDecodePolylines as at, detachProjectCopy as b, CesiumBasemapId as bi, LayerLevelFilter as bn, ProjectBookmarkGroup as br, AttributeFormFieldConfig as bt, diffProjects as c, isDefaultPrintLayout as ci, LARGE_VECTOR_FEATURE_THRESHOLD as cn, PopupDateFormat as cr, encodePolyline as ct, CreateProjectOptions as d, scrubPrintLayoutForLayers as di, LabelDedupe as dn, PopupFieldKind as dr, unescapePolyline as dt, shouldUseTiledRendering as ei, FieldVisibility as en, ModelToolProvider as er, layerJoinKey as et, DEFAULT_PROJECT_NAME as f, scrubPrintLayoutForRemovedLayers as fi, LabelStyle as fn, ProcessingModel as fr, geojsonHasZCoordinates as ft, createDefaultMapView as g, featureCollectionToGeoArrow as gi, LayerDescriptiveMetadata as gn, ProcessingRun as gr, AppCapabilities as gt, applyProjectToStore as h, computeGeoArrowBBox as hi, LayerConnection as hn, ProcessingRerunRequest as hr, AddTileLayerOptions as ht, ProjectDiff as i, PrintLayoutCorner as ii, GeocodingLocator as in, PROJECT_VERSION as ir, PolylineDecodeResult as it, normalizeModelGraph as j, LegendCustomEntry as jn, RecentProjectEntry as jr, CollaborationRole as jt, normalizeMapLayout as k, LayerVirtualField as kn, QuickFilterKind as kr, CollaborationParticipant as kt, jsonValuesEqual as l, normalizePrintLayoutConfig as li, LAYER_TYPES as ln, PopupFieldConfig as lr, geoJSONToPolylineStr as lt, ProjectLayerSerializationCache as m, GeoArrowGeometryType as mi, LayerCapabilities as mn, ProcessingModelStep as mr, transformGeojsonElevation as mt, LayerDiff as n, DEFAULT_PRINT_LAYOUT as ni, GeoLibreLayer as nn, NonGeographicCoordinates as nr, stripJoinFields as nt, ProjectValueChange as o, PrintLayoutPageFilter as oi, GeometryGeneratorType as on, ParticipantIdentity as or, decodePolyline as ot, MAX_PROJECT_BOOKMARKS as p, GeoArrowBatch as pi, LabelTransform as pn, ProcessingModelGraph as pr, horizontalBbox as pt, serializeProjectWithLayerCacheAsync as q, MapViewState as qn, StyleLibraryEntry as qr, DashboardWidget as qt, PluginDiff as r, PrintLayoutConfig as ri, GeoLibreProject as rn, OPENFREEMAP_BASEMAPS as rr, PolylineBatchOptions as rt, diffFeatureCollections as s, createDefaultPrintLayout as si, IndicatorAggregation as sn, PointRenderer as sr, decodePolylineDetailed as st, FeatureChangeSummary as t, styleValue as ti, FillPattern as tn, NETCDF_IMAGE_SOURCE_KIND as tr, reapplyLayerJoins as tt, previewValue as u, printLayoutConfigsEqual as ui, LabelAnchor as un, PopupFieldFormat as ur, polylineStrToGeoJSON as ut, createProjectLayerSerializationCache as v, isGeoArrowBatch as vi, LayerJoin as vn, ProcessingRunStatus as vr, AppRole as vt, normalizeBlankBackgroundColor as w, normalizeCesiumBasemap as wi, LayerMetadataTemporalExtent as wn, ProjectPluginControlPosition as wr, BLEND_MODES as wt, hydrateProjectLayer as x, CesiumBasemapImagery as xi, LayerLibraryEntry as xn, ProjectComment as xr, AttributeFormValueMapEntry as xt, createProjectTemplate as y, CESIUM_BASEMAPS as yi, LayerJoinStats as yn, ProjectBookmark as yr, AttributeFormConfig as yt, normalizeStoryMap as z, MAX_MAP_GRID_DIM as zn, StoryChapterAnimation as zr, DEFAULT_LAYER_STYLE as zt };
3568
+ //# sourceMappingURL=project-diff-B6AfZk8o.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-diff-B6AfZk8o.d.mts","names":["_$__cesium_imagery0.CesiumBasemapId","GeoJSON"],"sources":["../src/cesium-imagery.ts","../src/geoarrow.ts","../src/print-layout-config.ts","../src/types.ts","../src/geojson-z.ts","../src/polyline.ts","../src/joins.ts","../src/project.ts","../src/project-diff.ts"],"mappings":"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"}