@geolibre/core 3.6.1 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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
@@ -1259,7 +1139,34 @@ interface LayerJoin {
1259
1139
  stats?: LayerJoinStats;
1260
1140
  }
1261
1141
  /** Edit-widget kinds the Attribute Form designer can assign to a field. */
1262
- type AttributeFormWidget = "text" | "number" | "range" | "checkbox" | "date" | "valueMap";
1142
+ type AttributeFormWidget = "text" | "number" | "range" | "checkbox" | "date" | "valueMap" | "attachment";
1143
+ /**
1144
+ * Where a dropdown reads its entries from when they are another layer's rows
1145
+ * (a QGIS Value Relation or Relation Reference). Resolved against that
1146
+ * layer's current features each time a form is shown, so a record added to
1147
+ * the referenced layer is selectable at once.
1148
+ */
1149
+ interface AttributeFormValueRelation {
1150
+ /** Id of the referenced layer in the same project. */
1151
+ layerId: string;
1152
+ /** Property of the referenced features that is stored on this field. */
1153
+ keyField: string;
1154
+ /** Property shown as the entry's label. */
1155
+ labelField?: string;
1156
+ /**
1157
+ * QGIS expression evaluated per referenced feature for the label, used when
1158
+ * there is no {@link labelField} (a Relation Reference shows the referenced
1159
+ * layer's display expression).
1160
+ */
1161
+ labelExpression?: string;
1162
+ }
1163
+ /** A run of fields in a form: a tab or group box in QGIS, or the fields between two. */
1164
+ interface AttributeFormSection {
1165
+ /** Heading shown above the run; empty for none. */
1166
+ title: string;
1167
+ /** Field names, in the order they are shown. */
1168
+ fields: string[];
1169
+ }
1263
1170
  /** One selectable entry of a `valueMap` widget (stored value + display label). */
1264
1171
  interface AttributeFormValueMapEntry {
1265
1172
  /** The value written to the feature property (compared as a string). */
@@ -1286,8 +1193,14 @@ interface AttributeFormFieldConfig {
1286
1193
  * exempt: unchecked is a valid state, not a missing value.
1287
1194
  */
1288
1195
  required?: boolean;
1289
- /** Dropdown entries for the `valueMap` widget. */
1196
+ /**
1197
+ * Dropdown entries for the `valueMap` widget. With a {@link valueRelation}
1198
+ * these are only the fallback used while the referenced layer is missing or
1199
+ * has not loaded.
1200
+ */
1290
1201
  valueMap?: AttributeFormValueMapEntry[];
1202
+ /** Read the dropdown's entries from another layer's features. */
1203
+ valueRelation?: AttributeFormValueRelation;
1291
1204
  /**
1292
1205
  * Declared storage type of the field. When set, coercion follows it instead
1293
1206
  * of guessing from the value map (a text field whose codes are "1" and "2"
@@ -1318,10 +1231,25 @@ interface AttributeFormFieldConfig {
1318
1231
  * Empty/invalid expressions fail open so a typo cannot hide data entry.
1319
1232
  */
1320
1233
  visibilityExpression?: string;
1234
+ /**
1235
+ * Expression that pre-fills the field when a new feature is captured, in
1236
+ * the QGIS expression subset `qgis-expression.ts` evaluates: `now()`,
1237
+ * `uuid()`, `"site" || '-' || format_date(now(), 'yyyyMMdd')`, or a GPS
1238
+ * variable such as `@position_horizontal_accuracy`. An expression that
1239
+ * cannot be evaluated leaves the field empty.
1240
+ */
1241
+ defaultValue?: string;
1321
1242
  }
1322
1243
  /** The Attribute Form designer's whole per-layer configuration. */
1323
1244
  interface AttributeFormConfig {
1324
1245
  fields: AttributeFormFieldConfig[];
1246
+ /**
1247
+ * Runs of fields the capture form shows in order, each under its title. A
1248
+ * run with an empty title has no heading (fields that sit between two
1249
+ * groups). A field no section lists is shown after them. Absent means one
1250
+ * flat list.
1251
+ */
1252
+ sections?: AttributeFormSection[];
1325
1253
  }
1326
1254
  /** Point of contact recorded in a layer's {@link LayerDescriptiveMetadata}. */
1327
1255
  interface LayerMetadataContact {
@@ -1553,6 +1481,37 @@ interface LayerQuickFilter {
1553
1481
  /** `text`: the needle. Blank means no constraint. */
1554
1482
  text?: string;
1555
1483
  }
1484
+ /**
1485
+ * Floor picker (issue #3341): which floors of a multi-level layer are drawn.
1486
+ *
1487
+ * `all` (the default) draws every floor; `only` draws the chosen one; `below`
1488
+ * draws it and every floor under it, the cutaway view of a building with the
1489
+ * upper storeys lifted off.
1490
+ */
1491
+ type LevelFilterMode = "all" | "only" | "below";
1492
+ /**
1493
+ * A layer linked to the on-map floor picker. The picker lists the levels found
1494
+ * in {@link field} across every linked layer and writes the choice back here.
1495
+ *
1496
+ * {@link values} holds the raw attribute values that match the choice, so the
1497
+ * compiled filter is a plain `in` test every renderer evaluates the same way,
1498
+ * even for OpenStreetMap's multi-level values such as `"0;1"` or `"0-2"`.
1499
+ */
1500
+ interface LayerLevelFilter {
1501
+ /** The feature property that holds the floor, e.g. `level` or `ordinal`. */
1502
+ field: string;
1503
+ /** Which floors are drawn. Defaults to `all`. */
1504
+ mode?: LevelFilterMode;
1505
+ /** The chosen level, as the picker labels it (`"-1"`, `"0"`, `"G"`). */
1506
+ level?: string | null;
1507
+ /**
1508
+ * The raw `field` values that match {@link level} under {@link mode},
1509
+ * resolved from the layer's features when the choice is made. Ignored in
1510
+ * `all` mode. Absent while unresolved, which draws every floor until the
1511
+ * picker resolves it.
1512
+ */
1513
+ values?: (string | number)[];
1514
+ }
1556
1515
  /** Persisted refresh policy and most recent synchronization result for a layer. */
1557
1516
  interface LayerConnection {
1558
1517
  /** Owning layer id. Repeated here so records remain self-describing when exported. */
@@ -1735,6 +1694,13 @@ interface GeoLibreLayer {
1735
1694
  * a host page's filter and a user's filter narrow the layer together.
1736
1695
  */
1737
1696
  quickFilters?: LayerQuickFilter[];
1697
+ /**
1698
+ * Floor picker link (issue #3341). Persisted control state: the picker
1699
+ * compiles it into the layer's filter alongside {@link filterExpression} and
1700
+ * {@link quickFilters}, so it narrows the layer together with the Time Slider
1701
+ * window and every other filter.
1702
+ */
1703
+ levelFilter?: LayerLevelFilter;
1738
1704
  sourcePath?: string;
1739
1705
  /**
1740
1706
  * Id of the {@link LayerGroup} this layer belongs to, or `undefined` when the
@@ -1838,6 +1804,30 @@ declare const SQL_QUERY_SOURCE_KIND = "sql-query";
1838
1804
  * readout, and the spectral profile) share one value.
1839
1805
  */
1840
1806
  declare const NETCDF_IMAGE_SOURCE_KIND = "netcdf-image";
1807
+ /**
1808
+ * Metadata `sourceKind` marking an ArcGIS ImageServer drawn as a `raster` layer.
1809
+ *
1810
+ * Defined here so the plugin that adds these layers and `@geolibre/map` (whose
1811
+ * Identify reads their pixel values through the service's `/identify`) share
1812
+ * one value.
1813
+ */
1814
+ declare const ARCGIS_IMAGE_SERVICE_SOURCE_KIND = "arcgis-image-service";
1815
+ /**
1816
+ * Metadata `sourceKind` marking a Microsoft Planetary Computer raster layer
1817
+ * (one STAC item, or a mosaic of many) drawn by the Planetary Computer panel.
1818
+ *
1819
+ * Defined here so the plugin that adds these layers, the Layer Library's
1820
+ * restore dispatch, and `@geolibre/map` (whose Identify reads their pixel
1821
+ * values through the application's raster bridge) share one value.
1822
+ */
1823
+ declare const PLANETARY_COMPUTER_SOURCE_KIND = "planetary-computer-raster";
1824
+ /**
1825
+ * Whether a layer is a Planetary Computer raster the panel's control draws.
1826
+ *
1827
+ * @param layer - The layer to test.
1828
+ * @returns True for a control-drawn Planetary Computer item or mosaic layer.
1829
+ */
1830
+ declare function isPlanetaryComputerLayer(layer: GeoLibreLayer): boolean;
1841
1831
  /**
1842
1832
  * Detect a DuckDB query layer rendered through the plugin's external deck.gl
1843
1833
  * overlay. Shared by `@geolibre/map`, `@geolibre/plugins`, and the desktop
@@ -2056,6 +2046,17 @@ interface MapPreferences {
2056
2046
  * Ignored by 2D renderers; absent means the renderer's normal global source.
2057
2047
  */
2058
2048
  terrainIonAssetId?: number;
2049
+ /**
2050
+ * Vertical exaggeration of the 3D terrain, as set in Terrain settings.
2051
+ * Absent means the renderer default (1).
2052
+ */
2053
+ terrainExaggeration?: number;
2054
+ /**
2055
+ * HTTP(S) URL of the Cloud Optimized GeoTIFF DEM the 3D terrain is drawn
2056
+ * from. Absent means the renderer's built-in global terrain. A DEM opened
2057
+ * from a local file has no URL to save, so it is not kept.
2058
+ */
2059
+ terrainSource?: string;
2059
2060
  /** Mapbox-only style. New projects use Streets; absent follows the shared basemap. */
2060
2061
  mapboxStyleUrl?: string;
2061
2062
  /**
@@ -2923,278 +2924,6 @@ interface NonGeographicCoordinates {
2923
2924
  * @returns Details when a coordinate is out of geographic range, else null.
2924
2925
  */
2925
2926
  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
2927
  /**
3199
2928
  * Helpers for vector data whose coordinates carry a Z value (elevation), e.g.
3200
2929
  * GPX tracks with `<ele>` readings or LineStringZ/PointZ geometries. MapLibre's
@@ -3651,6 +3380,20 @@ declare function normalizeDashboardColumns(value: unknown): number;
3651
3380
  */
3652
3381
  declare function normalizeProjectInteraction(value: unknown): ProjectInteraction | null;
3653
3382
  declare function isAllowedPluginManifestUrl(url: string): boolean;
3383
+ /**
3384
+ * Re-file a 3D Tiles record whose URL is an ArcGIS scene service as an I3S
3385
+ * scene layer (issue #3377).
3386
+ *
3387
+ * The app draws a scene layer only when its source kind is `arcgis-i3s`. The
3388
+ * Python `add_3d_tiles()` used to write a SceneServer URL as a plain tileset
3389
+ * (`3d-tiles-url`), which the 3D Tiles control then loads as a `tileset.json`,
3390
+ * so nothing drew. This gives such a record the shape the app's 3D Tiles panel
3391
+ * writes (`createArcgisI3sStoreLayer`), keeping its id, name and settings.
3392
+ *
3393
+ * @param layer - A layer from a project file.
3394
+ * @returns The layer, re-filed as an I3S scene layer when it is a misfiled one.
3395
+ */
3396
+ declare function withI3sSceneLayerKind(layer: GeoLibreLayer): GeoLibreLayer;
3654
3397
  declare function normalizeProjectComments(rawComments: unknown): ProjectComment[];
3655
3398
  declare function projectFromStore(state: {
3656
3399
  projectName: string;
@@ -3821,7 +3564,7 @@ interface LayerDiff {
3821
3564
  style: ProjectValueChange[];
3822
3565
  /** Label style keys (`style.labels.*`), without the `labels.` prefix. */
3823
3566
  labels: ProjectValueChange[];
3824
- /** `filterExpression` and `quickFilters`. */
3567
+ /** `filterExpression`, `quickFilters` and `levelFilter`. */
3825
3568
  filter: ProjectValueChange[];
3826
3569
  /** `type`, `source.*` and `sourcePath`. */
3827
3570
  source: ProjectValueChange[];
@@ -3918,5 +3661,5 @@ declare function diffFeatureCollections(before: FeatureCollection | null | undef
3918
3661
  * @returns The grouped change summary.
3919
3662
  */
3920
3663
  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
3664
+ export { cascadeLayerJoinRefresh as $, ModelGraphEdge as $n, StyleLibraryEntryKind as $r, DashboardWidgetType as $t, normalizeMapViewState as A, normalizeCesiumBasemap as Ai, LayerQuickFilter as An, ProjectPluginState as Ar, CollabInvite as At, normalizeWidgets as B, LevelFilterMode as Bn, SecondaryMapView as Br, DEFAULT_BASEMAP as Bt, isSessionOnlyLayer as C, geoArrowToFeatureCollection as Ci, LayerJoinStats as Cn, ProcessingRunStatus as Cr, AttributeFormSection as Ct, normalizeDashboardColumns as D, CesiumBasemapImagery as Di, LayerMetadataLink as Dn, ProjectControlSetting as Dr, BLANK_BASEMAP as Dt, normalizeBookmarks as E, CesiumBasemapId as Ei, LayerMetadataContact as En, ProjectComment as Er, AttributeFormWidget as Et, normalizeProcessingHistory as F, LegendCustomEntry as Fn, QuickFilterTextOperator as Fr, CollaborationRole as Ft, serializeProject as G, MIN_DASHBOARD_COLUMNS as Gn, StoryChapterLocation as Gr, DEFAULT_MAP_GRID_LAYOUT as Gt, portableWmsTileUrl as H, MAX_DASHBOARD_COLUMNS as Hn, StoryChapter as Hr, DEFAULT_DASHBOARD_COLUMNS as Ht, normalizeProjectComments as I, LegendCustomItem as In, RecentProjectEntry as Ir, CollaborationState as It, storyMapHasContent as J, MapProjection as Jn, StoryMap as Jr, DEFAULT_STORY_MAP as Jt, serializeProjectWithLayerCache as K, MapGridLayout as Kn, StoryInsetPosition as Kr, DEFAULT_PRIMARY_RENDERER as Kt, normalizeProjectInteraction as L, LegendCustomShape as Ln, RuntimeEnvironmentVariable as Lr, CommentAnchor as Lt, normalizeModels as M, LayerType as Mn, ProjectTemplateEntry as Mr, CollaborationMode as Mt, normalizeObiaWorkbench as N, LayerVirtualField as Nn, QuickFilterDateKind as Nr, CollaborationParticipant as Nt, normalizeLegendConfig as O, availableCesiumBasemap as Oi, LayerMetadataTemporalExtent as On, ProjectInteraction as Or, BLEND_MODES as Ot, normalizePrimaryRenderer as P, LegendConfig as Pn, QuickFilterKind as Pr, CollaborationPresence as Pt, applyLayerJoins as Q, MarkerShape as Qn, StyleLibraryEntry as Qr, DashboardWidgetAggregation as Qt, normalizeSecondaryMapViews as R, LegendItemOverride as Rn, SQL_QUERY_SOURCE_KIND as Rr, CommentAuthor as Rt, isAllowedPluginManifestUrl as S, featureCollectionToGeoArrow as Si, LayerJoin as Sn, ProcessingRunKind as Sr, AttributeFormFieldConfig as St, normalizeBookmarkGroups as T, CESIUM_BASEMAPS as Ti, LayerLibraryEntry as Tn, ProjectBookmarkGroup as Tr, AttributeFormValueRelation as Tt, projectFromStore as U, MAX_MAP_GRID_DIM as Un, StoryChapterAlignment as Ur, DEFAULT_LAYER_STYLE as Ut, parseProject as V, LineDecoration as Vn, StoryActiveSlideMode as Vr, DEFAULT_BLEND_MODE as Vt, resolveMapGrid as W, MAX_PROCESSING_HISTORY as Wn, StoryChapterAnimation as Wr, DEFAULT_LEGEND_CONFIG as Wt, ApplyLayerJoinsResult as X, MapScaleUnit as Xn, StrokeDashPreset as Xr, DUCKDB_VECTOR_ROUTE_BYTES as Xt, withI3sSceneLayerKind as Y, MapRendererKind as Yn, StorySlideMode as Yr, DUCKDB_VECTOR_FEATURE_WARN_COUNT as Yt, applyJoinsToLayer as Z, MapViewState as Zn, StrokeWidthUnit as Zr, DashboardWidget as Zt, createEmptyProject as _, scrubPrintLayoutForLayers as _i, LabelTransform as _n, ProcessingModel as _r, AddTileLayerOptions as _t, ProjectDiffOptions as a, isPlanetaryComputerLayer as ai, FillPattern as an, NETCDF_IMAGE_SOURCE_KIND as ar, PolylineDecodeResult as at, detachProjectCopy as b, GeoArrowGeometryType as bi, LayerDescriptiveMetadata as bn, ProcessingRerunRequest as br, AppRole as bt, diffProjects as c, DEFAULT_PRINT_LAYOUT as ci, GeocodingLocator as cn, PLANETARY_COMPUTER_SOURCE_KIND as cr, decodePolylineDetailed as ct, CreateProjectOptions as d, PrintLayoutLegendEntry as di, IndicatorAggregation as dn, ParticipantIdentity as dr, polylineStrToGeoJSON as dt, VectorRule as ei, DiagramField as en, ModelGraphNode as er, collectTransitiveJoinSourceIds as et, DEFAULT_PROJECT_NAME as f, PrintLayoutPageFilter as fi, LARGE_VECTOR_FEATURE_THRESHOLD as fn, PointRenderer as fr, unescapePolyline as ft, createDefaultMapView as g, printLayoutConfigsEqual as gi, LabelStyle as gn, PopupFieldKind as gr, ARCGIS_IMAGE_SERVICE_SOURCE_KIND as gt, applyProjectToStore as h, normalizePrintLayoutConfig as hi, LabelDedupe as hn, PopupFieldFormat as hr, transformGeojsonElevation as ht, ProjectDiff as i, isDuckDBQueryLayer as ii, FieldVisibility as in, ModelToolProvider as ir, PolylineBatchOptions as it, normalizeModelGraph as j, sameCesiumImagery as ji, LayerStyle as jn, ProjectPreferences as jr, CollaborationChatMessage as jt, normalizeMapLayout as k, basemapToCesiumImagery as ki, LayerPopupConfig as kn, ProjectPluginControlPosition as kr, BlendMode as kt, jsonValuesEqual as l, PrintLayoutConfig as li, GeocodingPreferences as ln, PROJECT_VERSION as lr, encodePolyline as lt, ProjectLayerSerializationCache as m, isDefaultPrintLayout as mi, LabelAnchor as mn, PopupFieldConfig as mr, horizontalBbox as mt, LayerDiff as n, VectorStyleStop as ni, DiagramType as nn, ModelGraphPort as nr, reapplyLayerJoins as nt, ProjectValueChange as o, shouldUseTiledRendering as oi, GeoLibreLayer as on, NonGeographicCoordinates as or, batchDecodePolylines as ot, MAX_PROJECT_BOOKMARKS as p, createDefaultPrintLayout as pi, LAYER_TYPES as pn, PopupDateFormat as pr, geojsonHasZCoordinates as pt, serializeProjectWithLayerCacheAsync as q, MapPreferences as qn, StoryLayerOpacityChange as qr, DEFAULT_PROJECT_PREFERENCES as qt, PluginDiff as r, detectNonGeographicCoordinates as ri, EditorTrackingConfig as rn, ModelPortKind as rr, stripJoinFields as rt, diffFeatureCollections as s, styleValue as si, GeoLibreProject as sn, OPENFREEMAP_BASEMAPS as sr, decodePolyline as st, FeatureChangeSummary as t, VectorStyleMode as ti, DiagramSizeMode as tn, ModelGraphNodeKind as tr, layerJoinKey as tt, previewValue as u, PrintLayoutCorner as ui, GeometryGeneratorType as un, PROTOMAPS_BASEMAPS as ur, geoJSONToPolylineStr as ut, createProjectLayerSerializationCache as v, scrubPrintLayoutForRemovedLayers as vi, LayerCapabilities as vn, ProcessingModelGraph as vr, AppCapabilities as vt, normalizeBlankBackgroundColor as w, isGeoArrowBatch as wi, LayerLevelFilter as wn, ProjectBookmark as wr, AttributeFormValueMapEntry as wt, hydrateProjectLayer as x, computeGeoArrowBBox as xi, LayerGroup as xn, ProcessingRun as xr, AttributeFormConfig as xt, createProjectTemplate as y, GeoArrowBatch as yi, LayerConnection as yn, ProcessingModelStep as yr, AppPrivilege as yt, normalizeStoryMap as z, LegendPanelPosition as zn, STROKE_DASH_PRESETS as zr, CommentReply as zt };
3665
+ //# sourceMappingURL=project-diff-BksHN-qY.d.mts.map