@geolibre/core 3.3.0 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +339 -462
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +978 -6355
- package/dist/index.mjs.map +1 -1
- package/dist/{joins-CRZZcLqX.d.mts → project-diff-BD23T4xv.d.mts} +588 -3
- package/dist/project-diff-BD23T4xv.d.mts.map +1 -0
- package/dist/project-diff-Bua7fBME.mjs +8140 -0
- package/dist/project-diff-Bua7fBME.mjs.map +1 -0
- package/dist/worker-safe.d.mts +2 -2
- package/dist/worker-safe.mjs +2 -2
- package/package.json +1 -1
- package/dist/joins-CGcRoTpc.mjs +0 -1822
- package/dist/joins-CGcRoTpc.mjs.map +0 -1
- package/dist/joins-CRZZcLqX.d.mts.map +0 -1
|
@@ -994,7 +994,11 @@ interface LayerStyle {
|
|
|
994
994
|
markerShape: MarkerShape;
|
|
995
995
|
markerColor: string;
|
|
996
996
|
markerSize: number;
|
|
997
|
-
/**
|
|
997
|
+
/**
|
|
998
|
+
* The custom marker image used when {@link markerShape} is `"custom"`: raw
|
|
999
|
+
* SVG markup, a `data:` URL (SVG or a raster PNG/JPEG/GIF), or an `http(s)`
|
|
1000
|
+
* URL. Only SVG sources take {@link markerColor}; raster images draw as-is.
|
|
1001
|
+
*/
|
|
998
1002
|
markerSvg: string;
|
|
999
1003
|
/**
|
|
1000
1004
|
* When true, per-feature [simplestyle-spec](https://github.com/mapbox/simplestyle-spec)
|
|
@@ -1228,6 +1232,15 @@ interface AttributeFormFieldConfig {
|
|
|
1228
1232
|
required?: boolean;
|
|
1229
1233
|
/** Dropdown entries for the `valueMap` widget. */
|
|
1230
1234
|
valueMap?: AttributeFormValueMapEntry[];
|
|
1235
|
+
/**
|
|
1236
|
+
* Declared storage type of the field. When set, coercion follows it instead
|
|
1237
|
+
* of guessing from the value map (a text field whose codes are "1" and "2"
|
|
1238
|
+
* still stores strings), and validation rejects values of another type or,
|
|
1239
|
+
* for `integer`, fractional numbers. Service-derived configs (ArcGIS domains)
|
|
1240
|
+
* set it from the field's declared type; designer-authored configs leave it
|
|
1241
|
+
* unset.
|
|
1242
|
+
*/
|
|
1243
|
+
valueType?: "string" | "number" | "integer";
|
|
1231
1244
|
/** Lower bound for `number`/`range` widgets (inclusive). */
|
|
1232
1245
|
min?: number;
|
|
1233
1246
|
/** Upper bound for `number`/`range` widgets (inclusive). */
|
|
@@ -1973,6 +1986,11 @@ interface MapPreferences {
|
|
|
1973
1986
|
showPointerElevation: boolean;
|
|
1974
1987
|
/** Whether the built-in 3D terrain control and terrain surface are enabled. */
|
|
1975
1988
|
terrainEnabled: boolean;
|
|
1989
|
+
/**
|
|
1990
|
+
* Optional Cesium Ion terrain asset used by the globe when terrain is enabled.
|
|
1991
|
+
* Ignored by 2D renderers; absent means the renderer's normal global source.
|
|
1992
|
+
*/
|
|
1993
|
+
terrainIonAssetId?: number;
|
|
1976
1994
|
/** Mapbox-only style. New projects use Streets; absent follows the shared basemap. */
|
|
1977
1995
|
mapboxStyleUrl?: string;
|
|
1978
1996
|
/**
|
|
@@ -1983,6 +2001,14 @@ interface MapPreferences {
|
|
|
1983
2001
|
* basemap styles service requires one.
|
|
1984
2002
|
*/
|
|
1985
2003
|
arcgisBasemap?: string;
|
|
2004
|
+
/**
|
|
2005
|
+
* ArcGIS-only projection of the flat map, as a WKID the ArcGIS Maps SDK
|
|
2006
|
+
* resolves (`54099` Spilhaus, `54030` Robinson, ...). Absent means Web
|
|
2007
|
+
* Mercator. Vector layers are reprojected on the client; tiled layers and
|
|
2008
|
+
* basemaps cannot be, so they do not draw in another projection. The globe
|
|
2009
|
+
* (a `SceneView`) ignores it. See `arcgis-projection.ts`.
|
|
2010
|
+
*/
|
|
2011
|
+
arcgisWkid?: number;
|
|
1986
2012
|
/** Cesium imagery override; absent follows the shared project basemap. */
|
|
1987
2013
|
cesiumBasemap?: CesiumBasemapId;
|
|
1988
2014
|
/**
|
|
@@ -2401,6 +2427,40 @@ type DashboardWidgetAggregation = "count" | "sum" | "mean";
|
|
|
2401
2427
|
* keys are simply ignored, so the record stays flat and easy to hand-edit.
|
|
2402
2428
|
* Saved in the project file so a dashboard reopens with its widgets intact.
|
|
2403
2429
|
*/
|
|
2430
|
+
/**
|
|
2431
|
+
* A saved map view in the Bookmarks panel. Mirrors `MapBookmark` from
|
|
2432
|
+
* maplibre-gl-components so the panel can load it unchanged.
|
|
2433
|
+
*/
|
|
2434
|
+
interface ProjectBookmark {
|
|
2435
|
+
/** Unique within the project. */
|
|
2436
|
+
id: string;
|
|
2437
|
+
name: string;
|
|
2438
|
+
/** Camera center longitude, -180..180. */
|
|
2439
|
+
lng: number;
|
|
2440
|
+
/** Camera center latitude, -90..90. */
|
|
2441
|
+
lat: number;
|
|
2442
|
+
zoom: number;
|
|
2443
|
+
/** Camera tilt in degrees, 0..85. */
|
|
2444
|
+
pitch: number;
|
|
2445
|
+
/** Camera rotation in degrees. */
|
|
2446
|
+
bearing: number;
|
|
2447
|
+
/** Creation time, milliseconds since the epoch. */
|
|
2448
|
+
createdAt: number;
|
|
2449
|
+
/** The {@link ProjectBookmarkGroup} it belongs to; absent when ungrouped. */
|
|
2450
|
+
groupId?: string;
|
|
2451
|
+
/**
|
|
2452
|
+
* Host state captured with the view. GeoLibre stores `visibleLayerIds`
|
|
2453
|
+
* (the layers to show when the bookmark is opened).
|
|
2454
|
+
*/
|
|
2455
|
+
extra?: Record<string, unknown>;
|
|
2456
|
+
}
|
|
2457
|
+
/** A folder in the Bookmarks panel. Folders do not nest. */
|
|
2458
|
+
interface ProjectBookmarkGroup {
|
|
2459
|
+
id: string;
|
|
2460
|
+
name: string;
|
|
2461
|
+
/** Whether the folder is collapsed in the panel. */
|
|
2462
|
+
collapsed: boolean;
|
|
2463
|
+
}
|
|
2404
2464
|
interface DashboardWidget {
|
|
2405
2465
|
/** Stable id, unique within the project (React key and store key). */
|
|
2406
2466
|
id: string;
|
|
@@ -2579,8 +2639,23 @@ interface GeoLibreProject {
|
|
|
2579
2639
|
models?: ProcessingModel[];
|
|
2580
2640
|
/** Recorded processing tool runs (Processing History; issue #1292). */
|
|
2581
2641
|
processingHistory?: ProcessingRun[];
|
|
2642
|
+
/**
|
|
2643
|
+
* Object-Based Analysis workbench state and run provenance (issue #3053):
|
|
2644
|
+
* settings, classes, and the tool calls, parameters, seeds and engine
|
|
2645
|
+
* versions behind the last segmentation, measurement and classification.
|
|
2646
|
+
* A versioned JSON object owned by the desktop app; omitted until the
|
|
2647
|
+
* workbench is used.
|
|
2648
|
+
*/
|
|
2649
|
+
obia?: Record<string, unknown>;
|
|
2582
2650
|
/** Saved Dashboard panel chart widgets (issue #401). */
|
|
2583
2651
|
widgets?: DashboardWidget[];
|
|
2652
|
+
/**
|
|
2653
|
+
* Saved map views (the Bookmarks panel), in panel order. Omitted when there
|
|
2654
|
+
* are none. Before #2869 these lived only in the browser's localStorage.
|
|
2655
|
+
*/
|
|
2656
|
+
bookmarks?: ProjectBookmark[];
|
|
2657
|
+
/** Folders the {@link bookmarks} are organized into. Omitted when none. */
|
|
2658
|
+
bookmarkGroups?: ProjectBookmarkGroup[];
|
|
2584
2659
|
/** Number of columns in the Dashboard widget grid; omitted when default. */
|
|
2585
2660
|
dashboardColumns?: number;
|
|
2586
2661
|
/**
|
|
@@ -3214,5 +3289,515 @@ declare function cascadeLayerJoinRefresh(layers: GeoLibreLayer[], seedId: string
|
|
|
3214
3289
|
*/
|
|
3215
3290
|
declare function reapplyLayerJoins(layers: GeoLibreLayer[]): GeoLibreLayer[];
|
|
3216
3291
|
//#endregion
|
|
3217
|
-
|
|
3218
|
-
|
|
3292
|
+
//#region src/project.d.ts
|
|
3293
|
+
/** Placeholder name a project carries before the user names it. */
|
|
3294
|
+
declare const DEFAULT_PROJECT_NAME = "Untitled Project";
|
|
3295
|
+
interface CreateProjectOptions {
|
|
3296
|
+
basemapStyleUrl?: string;
|
|
3297
|
+
mapView?: MapViewState;
|
|
3298
|
+
/** Celestial body the project describes; defaults to Earth when omitted. */
|
|
3299
|
+
ellipsoidId?: string;
|
|
3300
|
+
}
|
|
3301
|
+
declare function normalizeBlankBackgroundColor(value: unknown): string | null;
|
|
3302
|
+
declare function createDefaultMapView(): MapViewState;
|
|
3303
|
+
declare function createEmptyProject(name?: string, options?: CreateProjectOptions): GeoLibreProject;
|
|
3304
|
+
/**
|
|
3305
|
+
* Serialize a project to `.geolibre.json` text: indented project structure with
|
|
3306
|
+
* compact (unindented) embedded GeoJSON. See {@link serializeProjectValue} for
|
|
3307
|
+
* why the two halves are formatted differently.
|
|
3308
|
+
*
|
|
3309
|
+
* @param project Project to serialize.
|
|
3310
|
+
* @returns The file contents to write.
|
|
3311
|
+
*/
|
|
3312
|
+
declare function serializeProject(project: GeoLibreProject): string;
|
|
3313
|
+
/**
|
|
3314
|
+
* Per-layer serialized text kept across {@link serializeProjectWithLayerCache}
|
|
3315
|
+
* calls, keyed by the layer record each entry was built from. A `WeakMap`, so a
|
|
3316
|
+
* layer the store has replaced or removed drops its text with it.
|
|
3317
|
+
*/
|
|
3318
|
+
type ProjectLayerSerializationCache = WeakMap<object, {
|
|
3319
|
+
index: number;
|
|
3320
|
+
text: string;
|
|
3321
|
+
}>;
|
|
3322
|
+
/** Create an empty {@link ProjectLayerSerializationCache}. */
|
|
3323
|
+
declare function createProjectLayerSerializationCache(): ProjectLayerSerializationCache;
|
|
3324
|
+
/**
|
|
3325
|
+
* Serialize a project exactly as {@link serializeProject} does, reusing the
|
|
3326
|
+
* text of every layer whose source record is unchanged since an earlier call.
|
|
3327
|
+
*
|
|
3328
|
+
* Feature data lives inside layer records, so re-stringifying every layer on
|
|
3329
|
+
* each autosave costs megabytes of main-thread work for a project with large
|
|
3330
|
+
* GeoJSON layers — even when only the camera moved (GeoLibre#2633). The store
|
|
3331
|
+
* replaces a layer object whenever it changes, so object identity is a sound
|
|
3332
|
+
* cache key: a camera move reuses every layer, and an edit to one layer
|
|
3333
|
+
* re-serializes only that one.
|
|
3334
|
+
*
|
|
3335
|
+
* `layerSources[i]` must be the record `project.layers[i]` was derived from
|
|
3336
|
+
* (e.g. the store's `layers`, before `projectFromStore` prepared them), and that
|
|
3337
|
+
* derivation must depend on the record alone — as `buildProjectSnapshot`'s does
|
|
3338
|
+
* — or a cached entry could outlive a change it should have reflected. When the
|
|
3339
|
+
* two arrays differ in length the cache is bypassed rather than trusted.
|
|
3340
|
+
*
|
|
3341
|
+
* @param project Project to serialize, as built from `layerSources`.
|
|
3342
|
+
* @param layerSources Immutable source record for each entry of
|
|
3343
|
+
* `project.layers`, in the same order, used as the cache key.
|
|
3344
|
+
* @param cache Cache shared between calls; see
|
|
3345
|
+
* {@link createProjectLayerSerializationCache}.
|
|
3346
|
+
* @returns The same text {@link serializeProject} returns for `project`.
|
|
3347
|
+
*/
|
|
3348
|
+
declare function serializeProjectWithLayerCache(project: GeoLibreProject, layerSources: readonly object[], cache: ProjectLayerSerializationCache): string;
|
|
3349
|
+
/**
|
|
3350
|
+
* {@link serializeProjectWithLayerCache} that hands the main thread back
|
|
3351
|
+
* between layers, so autosave on a project with several large layers is many
|
|
3352
|
+
* short tasks instead of one 300-400 ms freeze (GeoLibre#2869).
|
|
3353
|
+
*
|
|
3354
|
+
* The cache makes a camera move free, so the cost lands on the first autosave
|
|
3355
|
+
* and on edits to a big layer: each layer that misses the cache is serialized
|
|
3356
|
+
* in its own slice, and the thread is released once a slice has run longer than
|
|
3357
|
+
* a few milliseconds. A single huge layer is still one slice. The result is
|
|
3358
|
+
* identical to the synchronous call. `project` and `layerSources` must not be
|
|
3359
|
+
* mutated while this runs; the store replaces records rather than editing them,
|
|
3360
|
+
* so a snapshot taken from it stays valid.
|
|
3361
|
+
*
|
|
3362
|
+
* @param project Project to serialize, as built from `layerSources`.
|
|
3363
|
+
* @param layerSources Immutable source record for each entry of
|
|
3364
|
+
* `project.layers`, in the same order, used as the cache key.
|
|
3365
|
+
* @param cache Cache shared between calls.
|
|
3366
|
+
* @param yieldFn Hands the thread back; replaced in tests.
|
|
3367
|
+
* @returns The same text {@link serializeProject} returns for `project`.
|
|
3368
|
+
*/
|
|
3369
|
+
declare function serializeProjectWithLayerCacheAsync(project: GeoLibreProject, layerSources: readonly object[], cache: ProjectLayerSerializationCache, yieldFn?: () => Promise<void>): Promise<string>;
|
|
3370
|
+
declare function parseProject(json: string): GeoLibreProject;
|
|
3371
|
+
/**
|
|
3372
|
+
* Coerce an untrusted (possibly hand-edited) legend config into a valid
|
|
3373
|
+
* {@link LegendConfig}, dropping malformed entries. Returns undefined when no
|
|
3374
|
+
* usable config is present so the default is applied downstream.
|
|
3375
|
+
*/
|
|
3376
|
+
declare function normalizeLegendConfig(legend: unknown): LegendConfig | undefined;
|
|
3377
|
+
/**
|
|
3378
|
+
* Validate and coerce a story map loaded from an untrusted project file.
|
|
3379
|
+
*
|
|
3380
|
+
* Returns null when the value carries no chapters so empty story maps stay out
|
|
3381
|
+
* of the saved project, mirroring how plugins are only persisted when present.
|
|
3382
|
+
*
|
|
3383
|
+
* @param storymap Raw value read from the project JSON.
|
|
3384
|
+
* @returns A normalized story map, or null when there is nothing to keep.
|
|
3385
|
+
*/
|
|
3386
|
+
declare function normalizeStoryMap(storymap: unknown): StoryMap | null;
|
|
3387
|
+
/** Whether a story map carries chapters or any non-default setting. */
|
|
3388
|
+
declare function storyMapHasContent(story: StoryMap): boolean;
|
|
3389
|
+
/**
|
|
3390
|
+
* Coerce an untrusted (possibly hand-edited) `models` array into valid
|
|
3391
|
+
* {@link ProcessingModel} records. Drops models and steps without a usable id or
|
|
3392
|
+
* tool id, de-duplicates models by id, and keeps step `parameters` as a plain
|
|
3393
|
+
* object (the runner validates parameter values per tool at run time). Returns
|
|
3394
|
+
* `null` when there is nothing worth persisting, so a model-less project stays
|
|
3395
|
+
* free of the key.
|
|
3396
|
+
*
|
|
3397
|
+
* @param value Raw `models` value from the project JSON.
|
|
3398
|
+
* @returns Normalized models, or `null` when none survive.
|
|
3399
|
+
*/
|
|
3400
|
+
declare function normalizeModels(value: unknown): ProcessingModel[] | null;
|
|
3401
|
+
/**
|
|
3402
|
+
* Coerce an untrusted `graph` value into a {@link ProcessingModelGraph}. Drops
|
|
3403
|
+
* nodes without a usable id or an unknown kind, de-duplicates node ids, and
|
|
3404
|
+
* drops edges that do not connect two surviving nodes or that name an empty
|
|
3405
|
+
* port. Self-edges are dropped too, since a node cannot feed itself.
|
|
3406
|
+
*
|
|
3407
|
+
* Structural validity beyond this (cycles, type mismatches, missing required
|
|
3408
|
+
* inputs) is the runner's job — those depend on the tool registries, which the
|
|
3409
|
+
* project layer deliberately does not import.
|
|
3410
|
+
*
|
|
3411
|
+
* @param value Raw `graph` value from the project JSON.
|
|
3412
|
+
* @returns The normalized graph, or `null` when it has no usable nodes.
|
|
3413
|
+
*/
|
|
3414
|
+
declare function normalizeModelGraph(value: unknown): ProcessingModelGraph | null;
|
|
3415
|
+
/**
|
|
3416
|
+
* Coerce an untrusted (possibly hand-edited) `processingHistory` array into
|
|
3417
|
+
* valid {@link ProcessingRun} records. Drops entries without a usable id, tool
|
|
3418
|
+
* id, or known kind, de-duplicates by id, keeps `parameters` as a plain object,
|
|
3419
|
+
* and caps the list at {@link MAX_PROCESSING_HISTORY} (keeping the newest,
|
|
3420
|
+
* i.e. last, entries). Returns `null` when nothing survives, so a history-less
|
|
3421
|
+
* project stays free of the key.
|
|
3422
|
+
*
|
|
3423
|
+
* @param value Raw `processingHistory` value from the project JSON.
|
|
3424
|
+
* @returns Normalized runs, or `null` when none survive.
|
|
3425
|
+
*/
|
|
3426
|
+
/**
|
|
3427
|
+
* Accept the Object-Based Analysis workbench blob (`obia`) only as a plain,
|
|
3428
|
+
* JSON-serializable object carrying a numeric `version`. Its fields are owned
|
|
3429
|
+
* and validated by the desktop app, which treats anything it does not
|
|
3430
|
+
* recognise as absent; core only guarantees the shape survives a round trip.
|
|
3431
|
+
*
|
|
3432
|
+
* @param value Raw `obia` value from the project JSON.
|
|
3433
|
+
* @returns A detached copy, or `null` when absent or malformed.
|
|
3434
|
+
*/
|
|
3435
|
+
declare function normalizeObiaWorkbench(value: unknown): Record<string, unknown> | null;
|
|
3436
|
+
declare function normalizeProcessingHistory(value: unknown): ProcessingRun[] | null;
|
|
3437
|
+
/**
|
|
3438
|
+
* Coerce an untrusted (possibly hand-edited) camera object into a valid
|
|
3439
|
+
* {@link MapViewState}, falling back to the default view for missing parts.
|
|
3440
|
+
*/
|
|
3441
|
+
declare function normalizeMapViewState(value: unknown): MapViewState;
|
|
3442
|
+
/**
|
|
3443
|
+
* Coerce an untrusted `mapLayout` into a valid {@link MapGridLayout}. Returns
|
|
3444
|
+
* null when absent or effectively single-pane so default projects stay
|
|
3445
|
+
* byte-identical (the field is only written when the grid is larger than 1x1).
|
|
3446
|
+
*/
|
|
3447
|
+
declare function normalizeMapLayout(value: unknown): MapGridLayout | null;
|
|
3448
|
+
/**
|
|
3449
|
+
* Coerce an untrusted `primaryRenderer` into a known engine id (issue #2217).
|
|
3450
|
+
*
|
|
3451
|
+
* Returns null for the default 2D map — absent, unknown, or an explicit
|
|
3452
|
+
* `"maplibre"` — because the field is only written when it is not the default,
|
|
3453
|
+
* so a MapLibre project serializes byte-identically to before this existed.
|
|
3454
|
+
* The return type is narrowed to `"cesium" | "mapbox" | "arcgis" | null` rather
|
|
3455
|
+
* than the full {@link MapRendererKind} for that reason: `"maplibre"` is never a
|
|
3456
|
+
* result.
|
|
3457
|
+
*/
|
|
3458
|
+
declare function normalizePrimaryRenderer(value: unknown): "cesium" | "mapbox" | "arcgis" | null;
|
|
3459
|
+
/**
|
|
3460
|
+
* Coerce an untrusted `secondaryMapViews` array into valid
|
|
3461
|
+
* {@link SecondaryMapView} records, dropping entries without a usable id and
|
|
3462
|
+
* de-duplicating by id. Returns null when none are valid.
|
|
3463
|
+
*/
|
|
3464
|
+
declare function normalizeSecondaryMapViews(value: unknown): SecondaryMapView[] | null;
|
|
3465
|
+
/**
|
|
3466
|
+
* Reconcile a parsed grid layout with its secondary panes so the store invariant
|
|
3467
|
+
* holds: `secondaryMapViews.length === rows * cols - 1`. Surplus panes are
|
|
3468
|
+
* dropped; missing panes are filled by cloning the primary map. A null/absent
|
|
3469
|
+
* layout (or a 1x1 grid) collapses to the single-map default.
|
|
3470
|
+
*/
|
|
3471
|
+
declare function resolveMapGrid(layout: MapGridLayout | null, secondaryViews: SecondaryMapView[] | null, primary: {
|
|
3472
|
+
mapView: MapViewState;
|
|
3473
|
+
}): {
|
|
3474
|
+
mapLayout: MapGridLayout;
|
|
3475
|
+
secondaryMapViews: SecondaryMapView[];
|
|
3476
|
+
};
|
|
3477
|
+
/** Bookmarks kept per project, as the panel's own default limit allows. */
|
|
3478
|
+
declare const MAX_PROJECT_BOOKMARKS = 500;
|
|
3479
|
+
/**
|
|
3480
|
+
* Coerce an untrusted `bookmarkGroups` array into valid folders: drops entries
|
|
3481
|
+
* without a string id and de-duplicates by id. A missing name becomes
|
|
3482
|
+
* "Folder"; `collapsed` defaults to false.
|
|
3483
|
+
*
|
|
3484
|
+
* @param value Raw `bookmarkGroups` value from the project JSON.
|
|
3485
|
+
* @returns The folders (possibly empty).
|
|
3486
|
+
*/
|
|
3487
|
+
declare function normalizeBookmarkGroups(value: unknown): ProjectBookmarkGroup[];
|
|
3488
|
+
/**
|
|
3489
|
+
* Coerce an untrusted `bookmarks` array into valid saved views: drops entries
|
|
3490
|
+
* without a string id or a finite, in-range camera, de-duplicates by id, wraps
|
|
3491
|
+
* the bearing into 0-360, and drops a `groupId` that names no folder in
|
|
3492
|
+
* `groups`. Keeps at most {@link MAX_PROJECT_BOOKMARKS}.
|
|
3493
|
+
*
|
|
3494
|
+
* @param value Raw `bookmarks` value from the project JSON.
|
|
3495
|
+
* @param groups The project's (normalized) folders.
|
|
3496
|
+
* @returns The bookmarks (possibly empty).
|
|
3497
|
+
*/
|
|
3498
|
+
declare function normalizeBookmarks(value: unknown, groups?: readonly ProjectBookmarkGroup[]): ProjectBookmark[];
|
|
3499
|
+
/**
|
|
3500
|
+
* Coerce an untrusted (possibly hand-edited) `widgets` array into valid
|
|
3501
|
+
* {@link DashboardWidget} records. Drops widgets without a usable id, layer id,
|
|
3502
|
+
* or recognized chart type, de-duplicates by id, and keeps only the optional
|
|
3503
|
+
* keys that are present and well-typed (the Dashboard panel falls back to
|
|
3504
|
+
* sensible defaults for anything missing). Returns `null` when there is nothing
|
|
3505
|
+
* worth persisting, so a widget-less project stays free of the key.
|
|
3506
|
+
*
|
|
3507
|
+
* @param value Raw `widgets` value from the project JSON.
|
|
3508
|
+
* @returns Normalized widgets, or `null` when none survive.
|
|
3509
|
+
*/
|
|
3510
|
+
declare function normalizeWidgets(value: unknown): DashboardWidget[] | null;
|
|
3511
|
+
/**
|
|
3512
|
+
* Clamp an untrusted dashboard column count into the supported range, falling
|
|
3513
|
+
* back to the default for a missing or non-finite value.
|
|
3514
|
+
*
|
|
3515
|
+
* @param value Raw `dashboardColumns` value from the project JSON.
|
|
3516
|
+
* @returns An integer column count within [MIN, MAX].
|
|
3517
|
+
*/
|
|
3518
|
+
declare function normalizeDashboardColumns(value: unknown): number;
|
|
3519
|
+
/**
|
|
3520
|
+
* Coerce an untrusted `interaction` block into a {@link ProjectInteraction}.
|
|
3521
|
+
*
|
|
3522
|
+
* Layer ids are kept even when no such layer exists: the block is replayed
|
|
3523
|
+
* against whatever layers the project has when it opens, and the loader drops
|
|
3524
|
+
* the ones it cannot find. Control names are kept as written for the same
|
|
3525
|
+
* reason; the app ignores names it does not know.
|
|
3526
|
+
*
|
|
3527
|
+
* @param value - Raw `interaction` value from the project JSON or the store.
|
|
3528
|
+
* @returns The normalized block, or null when it carries nothing to apply.
|
|
3529
|
+
*/
|
|
3530
|
+
declare function normalizeProjectInteraction(value: unknown): ProjectInteraction | null;
|
|
3531
|
+
declare function isAllowedPluginManifestUrl(url: string): boolean;
|
|
3532
|
+
declare function normalizeProjectComments(rawComments: unknown): ProjectComment[];
|
|
3533
|
+
declare function projectFromStore(state: {
|
|
3534
|
+
projectName: string;
|
|
3535
|
+
mapView: MapViewState;
|
|
3536
|
+
basemapStyleUrl: string;
|
|
3537
|
+
basemapVisible: boolean;
|
|
3538
|
+
basemapOpacity: number;
|
|
3539
|
+
blankBackgroundColor?: string | null;
|
|
3540
|
+
layers: GeoLibreLayer[];
|
|
3541
|
+
selectedLayerId?: string | null;
|
|
3542
|
+
layerGroups?: LayerGroup[];
|
|
3543
|
+
preferences: ProjectPreferences;
|
|
3544
|
+
plugins?: ProjectPluginState | null;
|
|
3545
|
+
legend?: LegendConfig | null;
|
|
3546
|
+
printLayout?: PrintLayoutConfig | null;
|
|
3547
|
+
storymap?: StoryMap | null;
|
|
3548
|
+
models?: ProcessingModel[] | null;
|
|
3549
|
+
processingHistory?: ProcessingRun[] | null;
|
|
3550
|
+
obia?: Record<string, unknown> | null;
|
|
3551
|
+
widgets?: DashboardWidget[] | null;
|
|
3552
|
+
bookmarks?: ProjectBookmark[] | null;
|
|
3553
|
+
bookmarkGroups?: ProjectBookmarkGroup[] | null;
|
|
3554
|
+
dashboardColumns?: number;
|
|
3555
|
+
mapLayout?: MapGridLayout;
|
|
3556
|
+
secondaryMapViews?: SecondaryMapView[];
|
|
3557
|
+
primaryMapLabel?: string;
|
|
3558
|
+
primaryRenderer?: MapRendererKind;
|
|
3559
|
+
/** Project-scoped Style Manager entries (the store's `projectStyleLibrary`). */
|
|
3560
|
+
styleLibrary?: StyleLibraryEntry[] | null;
|
|
3561
|
+
comments?: ProjectComment[] | null;
|
|
3562
|
+
/** Startup interaction state loaded with the project, written back as-is. */
|
|
3563
|
+
interaction?: ProjectInteraction | null;
|
|
3564
|
+
metadata: Record<string, unknown>;
|
|
3565
|
+
}): GeoLibreProject;
|
|
3566
|
+
/**
|
|
3567
|
+
* Whether a layer lives only for the current session and is never written to a
|
|
3568
|
+
* project file. A plugin sets `metadata.sessionOnly` on a store row that mirrors
|
|
3569
|
+
* something it draws itself and cannot restore, such as a point cloud streamed
|
|
3570
|
+
* from a short-lived signed URL, so the row shows in the Layers panel while the
|
|
3571
|
+
* plugin runs but a reopened project carries no dead entry for it.
|
|
3572
|
+
*
|
|
3573
|
+
* @param layer - The layer to check.
|
|
3574
|
+
* @returns `true` when the layer must be left out of saved projects.
|
|
3575
|
+
*/
|
|
3576
|
+
declare function isSessionOnlyLayer(layer: GeoLibreLayer): boolean;
|
|
3577
|
+
/**
|
|
3578
|
+
* The plain HTTP(S) WMS template inside the desktop app's `geolibre-wms://`
|
|
3579
|
+
* wrapper (its CORS-exempt native fetcher), or the tile unchanged when it is
|
|
3580
|
+
* not wrapped or the wrapped URL is not HTTP(S). Shared by project export and
|
|
3581
|
+
* the ArcGIS engine's story-export templates.
|
|
3582
|
+
*
|
|
3583
|
+
* @param tile - A tile template, wrapped or not.
|
|
3584
|
+
* @returns The unwrapped template, or `tile` itself.
|
|
3585
|
+
*/
|
|
3586
|
+
declare function portableWmsTileUrl(tile: unknown): unknown;
|
|
3587
|
+
/**
|
|
3588
|
+
* The store form of one project layer: its style completed from
|
|
3589
|
+
* {@link DEFAULT_LAYER_STYLE} and the project's top-level `styles` entry.
|
|
3590
|
+
*
|
|
3591
|
+
* Legacy and externally-authored projects can carry a partial top-level style
|
|
3592
|
+
* alongside newer fields on the layer itself. Those layer fields are kept,
|
|
3593
|
+
* while the top-level copy stays authoritative where it explicitly supplies a
|
|
3594
|
+
* value.
|
|
3595
|
+
*
|
|
3596
|
+
* @param project - The project the layer belongs to (for its `styles` map).
|
|
3597
|
+
* @param layer - One of `project.layers`.
|
|
3598
|
+
* @returns A new layer record ready for the store.
|
|
3599
|
+
*/
|
|
3600
|
+
declare function hydrateProjectLayer(project: Pick<GeoLibreProject, "styles">, layer: GeoLibreLayer): GeoLibreLayer;
|
|
3601
|
+
declare function applyProjectToStore(project: GeoLibreProject): {
|
|
3602
|
+
projectName: string;
|
|
3603
|
+
mapView: MapViewState;
|
|
3604
|
+
basemapStyleUrl: string;
|
|
3605
|
+
basemapVisible: boolean;
|
|
3606
|
+
basemapOpacity: number;
|
|
3607
|
+
blankBackgroundColor: string | null;
|
|
3608
|
+
layers: GeoLibreLayer[];
|
|
3609
|
+
layerGroups: LayerGroup[];
|
|
3610
|
+
preferences: ProjectPreferences;
|
|
3611
|
+
projectPlugins: ProjectPluginState | null;
|
|
3612
|
+
legend: LegendConfig;
|
|
3613
|
+
printLayout: PrintLayoutConfig;
|
|
3614
|
+
storymap: StoryMap | null;
|
|
3615
|
+
models: ProcessingModel[];
|
|
3616
|
+
processingHistory: ProcessingRun[];
|
|
3617
|
+
obiaWorkbench: Record<string, unknown> | null;
|
|
3618
|
+
widgets: DashboardWidget[];
|
|
3619
|
+
bookmarks: ProjectBookmark[];
|
|
3620
|
+
bookmarkGroups: ProjectBookmarkGroup[];
|
|
3621
|
+
dashboardColumns: number;
|
|
3622
|
+
mapLayout: MapGridLayout;
|
|
3623
|
+
secondaryMapViews: SecondaryMapView[];
|
|
3624
|
+
primaryMapLabel: string;
|
|
3625
|
+
primaryRenderer: MapRendererKind;
|
|
3626
|
+
projectStyleLibrary: StyleLibraryEntry[];
|
|
3627
|
+
comments: ProjectComment[];
|
|
3628
|
+
projectInteraction: ProjectInteraction | null;
|
|
3629
|
+
metadata: Record<string, unknown>;
|
|
3630
|
+
};
|
|
3631
|
+
/**
|
|
3632
|
+
* Create an unlinked copy of a project, suffixed with "(copy)" by default and
|
|
3633
|
+
* stripped of share-specific metadata (shareId, shareUrl, etc.).
|
|
3634
|
+
*/
|
|
3635
|
+
declare function detachProjectCopy(project: GeoLibreProject, options?: {
|
|
3636
|
+
nameSuffix?: string;
|
|
3637
|
+
}): GeoLibreProject;
|
|
3638
|
+
/**
|
|
3639
|
+
* Create a template snapshot of a project. Optionally strips data layers while
|
|
3640
|
+
* keeping basemap, layer groups, styles, legend config, preferences, widgets, and
|
|
3641
|
+
* print layout.
|
|
3642
|
+
*/
|
|
3643
|
+
declare function createProjectTemplate(project: GeoLibreProject, options?: {
|
|
3644
|
+
name?: string;
|
|
3645
|
+
stripDataLayers?: boolean;
|
|
3646
|
+
}): GeoLibreProject;
|
|
3647
|
+
//#endregion
|
|
3648
|
+
//#region src/project-diff.d.ts
|
|
3649
|
+
/** One changed value, with bounded human-readable previews of each side. */
|
|
3650
|
+
interface ProjectValueChange {
|
|
3651
|
+
/** Dotted key path relative to the section, e.g. `fillColor` or `labels.field`. */
|
|
3652
|
+
path: string;
|
|
3653
|
+
/** Preview of the earlier value; `undefined` when the key was absent. */
|
|
3654
|
+
before?: string;
|
|
3655
|
+
/** Preview of the later value; `undefined` when the key is now absent. */
|
|
3656
|
+
after?: string;
|
|
3657
|
+
}
|
|
3658
|
+
/** Counts of embedded GeoJSON feature changes in one layer. */
|
|
3659
|
+
interface FeatureChangeSummary {
|
|
3660
|
+
added: number;
|
|
3661
|
+
removed: number;
|
|
3662
|
+
modified: number;
|
|
3663
|
+
unchanged: number;
|
|
3664
|
+
/**
|
|
3665
|
+
* How features were matched: `"id"` when every feature carries a unique
|
|
3666
|
+
* `id`, `"geometry"` when none does (matched by geometry hash), `"mixed"`
|
|
3667
|
+
* otherwise.
|
|
3668
|
+
*/
|
|
3669
|
+
matchedBy: "id" | "geometry" | "mixed";
|
|
3670
|
+
}
|
|
3671
|
+
/** Changes to one layer between the two projects. */
|
|
3672
|
+
interface LayerDiff {
|
|
3673
|
+
id: string;
|
|
3674
|
+
/** Layer name in the later project (or the earlier one when removed). */
|
|
3675
|
+
name: string;
|
|
3676
|
+
/** Layer type in the later project (or the earlier one when removed). */
|
|
3677
|
+
type: string;
|
|
3678
|
+
status: "added" | "removed" | "changed";
|
|
3679
|
+
/** Set when the layer was renamed. */
|
|
3680
|
+
renamed?: {
|
|
3681
|
+
before: string;
|
|
3682
|
+
after: string;
|
|
3683
|
+
};
|
|
3684
|
+
/**
|
|
3685
|
+
* Set when the layer changed position relative to the layers present in
|
|
3686
|
+
* both projects (bottom-to-top indexes in each project's `layers`).
|
|
3687
|
+
*/
|
|
3688
|
+
moved?: {
|
|
3689
|
+
before: number;
|
|
3690
|
+
after: number;
|
|
3691
|
+
};
|
|
3692
|
+
visibility?: {
|
|
3693
|
+
before: boolean;
|
|
3694
|
+
after: boolean;
|
|
3695
|
+
};
|
|
3696
|
+
opacity?: {
|
|
3697
|
+
before: number;
|
|
3698
|
+
after: number;
|
|
3699
|
+
};
|
|
3700
|
+
/** Style keys other than labels. */
|
|
3701
|
+
style: ProjectValueChange[];
|
|
3702
|
+
/** Label style keys (`style.labels.*`), without the `labels.` prefix. */
|
|
3703
|
+
labels: ProjectValueChange[];
|
|
3704
|
+
/** `filterExpression` and `quickFilters`. */
|
|
3705
|
+
filter: ProjectValueChange[];
|
|
3706
|
+
/** `type`, `source.*` and `sourcePath`. */
|
|
3707
|
+
source: ProjectValueChange[];
|
|
3708
|
+
/** Any other persisted layer field (popup, joins, metadata.*, ...). */
|
|
3709
|
+
other: ProjectValueChange[];
|
|
3710
|
+
/** Embedded GeoJSON feature changes; absent when the data is unchanged. */
|
|
3711
|
+
features?: FeatureChangeSummary;
|
|
3712
|
+
/** Feature count for an added or removed layer with embedded GeoJSON. */
|
|
3713
|
+
featureCount?: number;
|
|
3714
|
+
}
|
|
3715
|
+
/** Changes to one plugin's project state. */
|
|
3716
|
+
interface PluginDiff {
|
|
3717
|
+
id: string;
|
|
3718
|
+
/** `added`/`removed` mean the plugin was activated/deactivated. */
|
|
3719
|
+
status: "added" | "removed" | "changed";
|
|
3720
|
+
changes: ProjectValueChange[];
|
|
3721
|
+
}
|
|
3722
|
+
/** The full structured difference between two projects. */
|
|
3723
|
+
interface ProjectDiff {
|
|
3724
|
+
layers: {
|
|
3725
|
+
added: LayerDiff[];
|
|
3726
|
+
removed: LayerDiff[];
|
|
3727
|
+
changed: LayerDiff[];
|
|
3728
|
+
/** True when any layer present in both projects changed position. */
|
|
3729
|
+
reordered: boolean;
|
|
3730
|
+
};
|
|
3731
|
+
camera: ProjectValueChange[];
|
|
3732
|
+
basemap: ProjectValueChange[];
|
|
3733
|
+
/** Map projection (`preferences.map.projection`). */
|
|
3734
|
+
projection: ProjectValueChange[];
|
|
3735
|
+
/** Other project preferences (`preferences.*` minus the projection). */
|
|
3736
|
+
preferences: ProjectValueChange[];
|
|
3737
|
+
plugins: PluginDiff[];
|
|
3738
|
+
/** Plugin manifest URLs added to or removed from the project. */
|
|
3739
|
+
pluginManifests: {
|
|
3740
|
+
added: string[];
|
|
3741
|
+
removed: string[];
|
|
3742
|
+
};
|
|
3743
|
+
/** Project name (`name`), `metadata.description` and other metadata keys. */
|
|
3744
|
+
metadata: ProjectValueChange[];
|
|
3745
|
+
/** Other top-level sections that changed (`legend`, `storymap`, ...). */
|
|
3746
|
+
sections: string[];
|
|
3747
|
+
/** Total number of reported changes; 0 means the projects are equivalent. */
|
|
3748
|
+
changeCount: number;
|
|
3749
|
+
}
|
|
3750
|
+
/** Options for {@link diffProjects}. */
|
|
3751
|
+
interface ProjectDiffOptions {
|
|
3752
|
+
/** Maximum characters of a before/after preview (default 80). */
|
|
3753
|
+
maxPreviewLength?: number;
|
|
3754
|
+
}
|
|
3755
|
+
/**
|
|
3756
|
+
* Deep structural equality for JSON-like values. A key whose value is
|
|
3757
|
+
* `undefined` is treated as absent, so an in-memory record compares equal to
|
|
3758
|
+
* its JSON round trip.
|
|
3759
|
+
*
|
|
3760
|
+
* @param a - First value.
|
|
3761
|
+
* @param b - Second value.
|
|
3762
|
+
* @returns True when the two values are structurally equal.
|
|
3763
|
+
*/
|
|
3764
|
+
declare function jsonValuesEqual(a: unknown, b: unknown): boolean;
|
|
3765
|
+
/**
|
|
3766
|
+
* Render a bounded JSON-ish preview of a value without serializing more of it
|
|
3767
|
+
* than the preview can show, so a large array or object costs no more than
|
|
3768
|
+
* `maxLength` characters of work.
|
|
3769
|
+
*
|
|
3770
|
+
* @param value - The value to preview.
|
|
3771
|
+
* @param maxLength - Maximum preview length; longer output ends with `…`.
|
|
3772
|
+
* @returns The preview, or `undefined` for `undefined`.
|
|
3773
|
+
*/
|
|
3774
|
+
declare function previewValue(value: unknown, maxLength?: number): string | undefined;
|
|
3775
|
+
/**
|
|
3776
|
+
* Count the features added, removed and modified between two feature
|
|
3777
|
+
* collections. Features are matched by `id` when they carry one; id-less
|
|
3778
|
+
* features are matched by geometry hash, so a feature whose properties
|
|
3779
|
+
* changed but whose geometry did not counts as modified, while a moved
|
|
3780
|
+
* id-less feature counts as one removal plus one addition.
|
|
3781
|
+
*
|
|
3782
|
+
* @param before - Earlier collection (absent counts as empty).
|
|
3783
|
+
* @param after - Later collection (absent counts as empty).
|
|
3784
|
+
* @returns The change counts.
|
|
3785
|
+
*/
|
|
3786
|
+
declare function diffFeatureCollections(before: FeatureCollection | null | undefined, after: FeatureCollection | null | undefined): FeatureChangeSummary;
|
|
3787
|
+
/**
|
|
3788
|
+
* Compute a structured summary of what changed from `before` to `after`.
|
|
3789
|
+
*
|
|
3790
|
+
* Layers are matched by id. Embedded GeoJSON is compared per feature (by id,
|
|
3791
|
+
* falling back to geometry hash) and each feature is hashed once per object,
|
|
3792
|
+
* so diffing the same parsed project against several others reuses its
|
|
3793
|
+
* hashes; callers keep and pass the same parsed project objects to benefit.
|
|
3794
|
+
*
|
|
3795
|
+
* @param before - The earlier project (e.g. an autosave snapshot).
|
|
3796
|
+
* @param after - The later project (e.g. the current project).
|
|
3797
|
+
* @param options - Preview length and other tuning.
|
|
3798
|
+
* @returns The grouped change summary.
|
|
3799
|
+
*/
|
|
3800
|
+
declare function diffProjects(before: GeoLibreProject, after: GeoLibreProject, options?: ProjectDiffOptions): ProjectDiff;
|
|
3801
|
+
//#endregion
|
|
3802
|
+
export { collectTransitiveJoinSourceIds as $, LegendCustomEntry as $n, SQL_QUERY_SOURCE_KIND as $r, CollaborationParticipant as $t, normalizeMapViewState as A, scrubPrintLayoutForRemovedLayers as Ai, IndicatorAggregation as An, PopupFieldConfig as Ar, getActiveBodyRadiusRatio as At, normalizeWidgets as B, CesiumBasemapImagery as Bi, LayerGroup as Bn, ProjectBookmark as Br, AppCapabilities as Bt, isSessionOnlyLayer as C, PrintLayoutLegendEntry as Ci, EditorTrackingConfig as Cn, NonGeographicCoordinates as Cr, PLANET_SWITCHER_OPTIONS as Ct, normalizeDashboardColumns as D, normalizePrintLayoutConfig as Di, GeoLibreProject as Dn, ParticipantIdentity as Dr, bodyLengthToEarth as Dt, normalizeBookmarks as E, isDefaultPrintLayout as Ei, GeoLibreLayer as En, PROTOMAPS_BASEMAPS as Er, PlanetaryBasemapSectionId as Et, normalizeProcessingHistory as F, MultiPolygon as Fi, LabelStyle as Fn, ProcessingModelStep as Fr, getPlanetaryBasemapById as Ft, serializeProject as G, LayerMetadataLink as Gn, ProjectPluginState as Gr, AttributeFormValueMapEntry as Gt, portableWmsTileUrl as H, basemapToCesiumImagery as Hi, LayerJoinStats as Hn, ProjectComment as Hr, AppRole as Ht, normalizeProjectComments as I, Point as Ii, LabelTransform as In, ProcessingRerunRequest as Ir, getPlanetaryBasemapByStyleUrl as It, storyMapHasContent as J, LayerQuickFilter as Jn, QuickFilterDateKind as Jr, BLEND_MODES as Jt, serializeProjectWithLayerCache as K, LayerMetadataTemporalExtent as Kn, ProjectPreferences as Kr, AttributeFormWidget as Kt, normalizeProjectInteraction as L, Polygon as Li, LayerCapabilities as Ln, ProcessingRun as Lr, meanRadiusMeters as Lt, normalizeModels as M, FeatureCollection as Mi, LAYER_TYPES as Mn, PopupFieldKind as Mr, getActiveMeanRadiusMeters as Mt, normalizeObiaWorkbench as N, Geometry as Ni, LabelAnchor as Nn, ProcessingModel as Nr, getActiveSemiMajorAxisMeters as Nt, normalizeLegendConfig as O, printLayoutConfigsEqual as Oi, GeocodingPreferences as On, PointRenderer as Or, earthAreaToBody as Ot, normalizePrimaryRenderer as P, LineString as Pi, LabelDedupe as Pn, ProcessingModelGraph as Pr, getEllipsoid as Pt, cascadeLayerJoinRefresh as Q, LegendConfig as Qn, RuntimeEnvironmentVariable as Qr, CollaborationMode as Qt, normalizeSecondaryMapViews as R, CESIUM_BASEMAPS as Ri, LayerConnection as Rn, ProcessingRunKind as Rr, setActiveEllipsoidId as Rt, isAllowedPluginManifestUrl as S, PrintLayoutCorner as Si, DiagramType as Sn, NETCDF_IMAGE_SOURCE_KIND as Sr, PLANETARY_BASEMAP_SENTINEL_PREFIX as St, normalizeBookmarkGroups as T, createDefaultPrintLayout as Ti, FillPattern as Tn, PROJECT_VERSION as Tr, PlanetaryBasemapGroup as Tt, projectFromStore as U, normalizeCesiumBasemap as Ui, LayerLibraryEntry as Un, ProjectInteraction as Ur, AttributeFormConfig as Ut, parseProject as V, availableCesiumBasemap as Vi, LayerJoin as Vn, ProjectBookmarkGroup as Vr, AppPrivilege as Vt, resolveMapGrid as W, sameCesiumImagery as Wi, LayerMetadataContact as Wn, ProjectPluginControlPosition as Wr, AttributeFormFieldConfig as Wt, applyJoinsToLayer as X, LayerType as Xn, QuickFilterTextOperator as Xr, CollabInvite as Xt, ApplyLayerJoinsResult as Y, LayerStyle as Yn, QuickFilterKind as Yr, BlendMode as Yt, applyLayerJoins as Z, LayerVirtualField as Zn, RecentProjectEntry as Zr, CollaborationChatMessage as Zt, createEmptyProject as _, isDuckDBQueryLayer as _i, DashboardWidget as _n, ModelGraphNode as _r, ELLIPSOIDS as _t, ProjectDiffOptions as a, StoryChapterLocation as ai, CommentReply as an, MAX_DASHBOARD_COLUMNS as ar, batchDecodePolylines as at, detachProjectCopy as b, DEFAULT_PRINT_LAYOUT as bi, DiagramField as bn, ModelPortKind as br, PLANETARY_BASEMAPS as bt, diffProjects as c, StoryMap as ci, DEFAULT_DASHBOARD_COLUMNS as cn, MIN_DASHBOARD_COLUMNS as cr, encodePolyline as ct, CreateProjectOptions as d, StyleLibraryEntry as di, DEFAULT_MAP_GRID_LAYOUT as dn, MapProjection as dr, unescapePolyline as dt, SecondaryMapView as ei, CollaborationPresence as en, LegendCustomItem as er, layerJoinKey as et, DEFAULT_PROJECT_NAME as f, StyleLibraryEntryKind as fi, DEFAULT_PRIMARY_RENDERER as fn, MapRendererKind as fr, geojsonHasZCoordinates as ft, createDefaultMapView as g, detectNonGeographicCoordinates as gi, DUCKDB_VECTOR_ROUTE_BYTES as gn, ModelGraphEdge as gr, EARTH_MEAN_RADIUS_METERS as gt, applyProjectToStore as h, VectorStyleStop as hi, DUCKDB_VECTOR_FEATURE_WARN_COUNT as hn, MarkerShape as hr, DEFAULT_ELLIPSOID_ID as ht, ProjectDiff as i, StoryChapterAnimation as ii, CommentAuthor as in, LineDecoration as ir, PolylineDecodeResult as it, normalizeModelGraph as j, Feature as ji, LARGE_VECTOR_FEATURE_THRESHOLD as jn, PopupFieldFormat as jr, getActiveEllipsoid as jt, normalizeMapLayout as k, scrubPrintLayoutForLayers as ki, GeometryGeneratorType as kn, PopupDateFormat as kr, earthLengthToBody as kt, jsonValuesEqual as l, StorySlideMode as li, DEFAULT_LAYER_STYLE as ln, MapGridLayout as lr, geoJSONToPolylineStr as lt, ProjectLayerSerializationCache as m, VectorStyleMode as mi, DEFAULT_STORY_MAP as mn, MapViewState as mr, transformGeojsonElevation as mt, LayerDiff as n, StoryChapter as ni, CollaborationState as nn, LegendItemOverride as nr, stripJoinFields as nt, ProjectValueChange as o, StoryInsetPosition as oi, DEFAULT_BASEMAP as on, MAX_MAP_GRID_DIM as or, decodePolyline as ot, MAX_PROJECT_BOOKMARKS as p, VectorRule as pi, DEFAULT_PROJECT_PREFERENCES as pn, MapScaleUnit as pr, horizontalBbox as pt, serializeProjectWithLayerCacheAsync as q, LayerPopupConfig as qn, ProjectTemplateEntry as qr, BLANK_BASEMAP as qt, PluginDiff as r, StoryChapterAlignment as ri, CommentAnchor as rn, LegendPanelPosition as rr, PolylineBatchOptions as rt, diffFeatureCollections as s, StoryLayerOpacityChange as si, DEFAULT_BLEND_MODE as sn, MAX_PROCESSING_HISTORY as sr, decodePolylineDetailed as st, FeatureChangeSummary as t, StoryActiveSlideMode as ti, CollaborationRole as tn, LegendCustomShape as tr, reapplyLayerJoins as tt, previewValue as u, StrokeWidthUnit as ui, DEFAULT_LEGEND_CONFIG as un, MapPreferences as ur, polylineStrToGeoJSON as ut, createProjectLayerSerializationCache as v, shouldUseTiledRendering as vi, DashboardWidgetAggregation as vn, ModelGraphNodeKind as vr, Ellipsoid as vt, normalizeBlankBackgroundColor as w, PrintLayoutPageFilter as wi, FieldVisibility as wn, OPENFREEMAP_BASEMAPS as wr, PlanetaryBasemap as wt, hydrateProjectLayer as x, PrintLayoutConfig as xi, DiagramSizeMode as xn, ModelToolProvider as xr, PLANETARY_BASEMAP_GROUPS as xt, createProjectTemplate as y, styleValue as yi, DashboardWidgetType as yn, ModelGraphPort as yr, EllipsoidId as yt, normalizeStoryMap as z, CesiumBasemapId as zi, LayerDescriptiveMetadata as zn, ProcessingRunStatus as zr, AddTileLayerOptions as zt };
|
|
3803
|
+
//# sourceMappingURL=project-diff-BD23T4xv.d.mts.map
|