@kispace-io/gs-lib 1.1.8 → 1.2.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/base-map-builder.d.ts.map +1 -1
- package/dist/gs-model.d.ts +6 -0
- package/dist/gs-model.d.ts.map +1 -1
- package/dist/index.d.ts +3 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +890 -288
- package/dist/index.js.map +1 -1
- package/dist/map-renderer.d.ts +94 -0
- package/dist/map-renderer.d.ts.map +1 -0
- package/dist/ml/gs-gs2ml.d.ts +96 -0
- package/dist/ml/gs-gs2ml.d.ts.map +1 -0
- package/dist/ml/gs-ml-adapters.d.ts +41 -0
- package/dist/ml/gs-ml-adapters.d.ts.map +1 -0
- package/dist/ml/gs-ml-lib.d.ts +17 -0
- package/dist/ml/gs-ml-lib.d.ts.map +1 -0
- package/dist/ml/gs-ml2gs.d.ts +10 -0
- package/dist/ml/gs-ml2gs.d.ts.map +1 -0
- package/dist/ml/gs-mlns.d.ts +10 -0
- package/dist/ml/gs-mlns.d.ts.map +1 -0
- package/dist/ml/index.d.ts +9 -0
- package/dist/ml/index.d.ts.map +1 -0
- package/dist/ml/maplibre-map-renderer.d.ts +66 -0
- package/dist/ml/maplibre-map-renderer.d.ts.map +1 -0
- package/dist/{gs-gs2ol.d.ts → ol/gs-gs2ol.d.ts} +2 -2
- package/dist/ol/gs-gs2ol.d.ts.map +1 -0
- package/dist/ol/gs-ol-adapters.d.ts.map +1 -0
- package/dist/{gs-lib.d.ts → ol/gs-ol-lib.d.ts} +4 -4
- package/dist/ol/gs-ol-lib.d.ts.map +1 -0
- package/dist/{gs-ol2gs.d.ts → ol/gs-ol2gs.d.ts} +1 -1
- package/dist/ol/gs-ol2gs.d.ts.map +1 -0
- package/dist/ol/gs-olns.d.ts.map +1 -0
- package/dist/ol/index.d.ts +9 -0
- package/dist/ol/index.d.ts.map +1 -0
- package/dist/ol/openlayers-map-renderer.d.ts +68 -0
- package/dist/ol/openlayers-map-renderer.d.ts.map +1 -0
- package/package.json +6 -2
- package/src/base-map-builder.ts +8 -9
- package/src/gs-model.ts +7 -1
- package/src/index.ts +12 -7
- package/src/map-renderer.ts +115 -0
- package/src/ml/gs-gs2ml.ts +717 -0
- package/src/ml/gs-ml-adapters.ts +134 -0
- package/src/ml/gs-ml-lib.ts +124 -0
- package/src/ml/gs-ml2gs.ts +66 -0
- package/src/ml/gs-mlns.ts +50 -0
- package/src/ml/index.ts +41 -0
- package/src/ml/maplibre-map-renderer.ts +428 -0
- package/src/{gs-gs2ol.ts → ol/gs-gs2ol.ts} +10 -4
- package/src/{gs-lib.ts → ol/gs-ol-lib.ts} +7 -6
- package/src/{gs-ol2gs.ts → ol/gs-ol2gs.ts} +1 -1
- package/src/ol/index.ts +21 -0
- package/src/ol/openlayers-map-renderer.ts +719 -0
- package/dist/gs-gs2ol.d.ts.map +0 -1
- package/dist/gs-lib.d.ts.map +0 -1
- package/dist/gs-ol-adapters.d.ts.map +0 -1
- package/dist/gs-ol2gs.d.ts.map +0 -1
- package/dist/gs-olns.d.ts.map +0 -1
- /package/dist/{gs-ol-adapters.d.ts → ol/gs-ol-adapters.d.ts} +0 -0
- /package/dist/{gs-olns.d.ts → ol/gs-olns.d.ts} +0 -0
- /package/src/{gs-ol-adapters.ts → ol/gs-ol-adapters.ts} +0 -0
- /package/src/{gs-olns.ts → ol/gs-olns.ts} +0 -0
package/src/index.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
// Core exports - renderer-agnostic model and utilities
|
|
2
|
+
// For renderer-specific functionality, import from '@kispace-io/gs-lib/ol' or '@kispace-io/gs-lib/ml'
|
|
1
3
|
export * from "./gs-model"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export * from "./
|
|
5
|
-
|
|
6
|
-
// Re-export OpenLayers for convenience
|
|
7
|
-
export * from "./gs-olns"
|
|
4
|
+
|
|
5
|
+
// Map renderer interface (no implementation)
|
|
6
|
+
export * from "./map-renderer"
|
|
7
|
+
|
|
8
8
|
// map-builder is only used by build service - export explicitly to avoid tree-shaking issues
|
|
9
9
|
export { buildMap, generateAppJs, processServiceWorker, processManifest, processHtml, bundleApp, type BuildOptions, type FileSystem, type GsLibFileCopier, type ProgressCallback } from "./base-map-builder"
|
|
10
10
|
|
|
@@ -12,4 +12,9 @@ export const rtUtils = {
|
|
|
12
12
|
async resolveUrl(url: string) {
|
|
13
13
|
return url
|
|
14
14
|
}
|
|
15
|
-
};
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export * from "./ol/index"
|
|
18
|
+
|
|
19
|
+
// Backward compatibility: export olLib as gsLib for generated build code
|
|
20
|
+
export { olLib as gsLib } from "./ol/gs-ol-lib"
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { GsMap, GsLayer, GsControl, GsOverlay } from "./gs-model";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Sync event types that describe what changed in the map
|
|
5
|
+
*/
|
|
6
|
+
export type MapSyncEvent =
|
|
7
|
+
| { type: 'viewChanged', view: { center: [number, number], zoom: number, rotation?: number, pitch?: number, bearing?: number } }
|
|
8
|
+
| { type: 'featuresChanged', layerUuid: string, features: any[] }
|
|
9
|
+
| { type: 'featureSelected', layerUuid: string, feature: any, metrics?: { length?: number, area?: number } }
|
|
10
|
+
| { type: 'featureDeselected' }
|
|
11
|
+
| { type: 'drawingDisabled' };
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Screenshot result from captureScreenshot
|
|
15
|
+
*/
|
|
16
|
+
export type ScreenshotResult =
|
|
17
|
+
| { success: true, dataUrl: string, width: number, height: number }
|
|
18
|
+
| { success: false, error: string };
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Abstract interface for map rendering
|
|
22
|
+
* The host app only knows about this interface and the GsMap domain model
|
|
23
|
+
*
|
|
24
|
+
* This interface is focused purely on rendering and map state management.
|
|
25
|
+
* For operations, use MapOperations interface instead.
|
|
26
|
+
*/
|
|
27
|
+
export interface MapRenderer {
|
|
28
|
+
render(container: string | HTMLElement): Promise<void>;
|
|
29
|
+
reattached?(): Promise<void>;
|
|
30
|
+
modelToUI(updatedGsMap?: GsMap): Promise<void>;
|
|
31
|
+
getViewExtent(): Promise<number[]>;
|
|
32
|
+
getOperations(): MapOperations;
|
|
33
|
+
setOnDirty(callback: () => void): void;
|
|
34
|
+
triggerDirty(): void;
|
|
35
|
+
setOnSync(callback: (event: MapSyncEvent) => void): void;
|
|
36
|
+
triggerSync(event: MapSyncEvent): void;
|
|
37
|
+
setOnClick?(callback: () => void): void;
|
|
38
|
+
captureScreenshot(): Promise<ScreenshotResult>;
|
|
39
|
+
destroy(): void;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function findLayerByUuid(gsMap: GsMap, uuid: string): GsLayer | undefined {
|
|
43
|
+
return gsMap.layers.find(layer => layer.uuid === uuid);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function findLayerIndexByUuid(gsMap: GsMap, uuid: string): number {
|
|
47
|
+
return gsMap.layers.findIndex(layer => layer.uuid === uuid);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function findControlByUuid(gsMap: GsMap, uuid: string): GsControl | undefined {
|
|
51
|
+
return gsMap.controls.find(control => control.uuid === uuid);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export function findControlIndexByUuid(gsMap: GsMap, uuid: string): number {
|
|
55
|
+
return gsMap.controls.findIndex(control => control.uuid === uuid);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export function findOverlayByUuid(gsMap: GsMap, uuid: string): GsOverlay | undefined {
|
|
59
|
+
return gsMap.overlays.find(overlay => overlay.uuid === uuid);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export function findOverlayIndexByUuid(gsMap: GsMap, uuid: string): number {
|
|
63
|
+
return gsMap.overlays.findIndex(overlay => overlay.uuid === uuid);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Map operations interface for high-level map commands
|
|
68
|
+
* These operations work with the domain model and are framework-agnostic
|
|
69
|
+
*/
|
|
70
|
+
export interface MapOperations {
|
|
71
|
+
// View operations
|
|
72
|
+
setZoom(zoom: number): Promise<void>;
|
|
73
|
+
setCenter(center: [number, number]): Promise<void>;
|
|
74
|
+
|
|
75
|
+
// Display operations
|
|
76
|
+
switchColorMode(mode?: 'dark' | 'light'): Promise<void>;
|
|
77
|
+
|
|
78
|
+
// Layer operations
|
|
79
|
+
addLayer(layer: any, isBasemap?: boolean): Promise<void>;
|
|
80
|
+
deleteLayer(uuid: string): Promise<void>;
|
|
81
|
+
renameLayer(uuid: string, newName: string): Promise<void>;
|
|
82
|
+
moveLayer(uuid: string, targetUuid?: string): Promise<void>;
|
|
83
|
+
setLayerVisible(uuid: string, visible: boolean): Promise<void>;
|
|
84
|
+
|
|
85
|
+
// Control operations
|
|
86
|
+
addControlFromModule(src: string): Promise<void>;
|
|
87
|
+
removeControl(uuid: string): Promise<void>;
|
|
88
|
+
|
|
89
|
+
// Overlay operations
|
|
90
|
+
addOverlayFromModule(src: string, position?: string): Promise<void>;
|
|
91
|
+
removeOverlay(uuid: string): Promise<void>;
|
|
92
|
+
|
|
93
|
+
// Drawing operations (UI-only, no domain model changes until features are added)
|
|
94
|
+
enableDrawing(geometryType: 'Point' | 'LineString' | 'Polygon', layerUuid: string): Promise<void>;
|
|
95
|
+
disableDrawing(): Promise<void>;
|
|
96
|
+
|
|
97
|
+
// Feature selection and deletion
|
|
98
|
+
enableFeatureSelection(): Promise<void>;
|
|
99
|
+
disableSelection(): Promise<void>;
|
|
100
|
+
deleteSelectedFeatures(): Promise<void>;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export const createProxy = (operations: MapOperations[]): MapOperations => {
|
|
104
|
+
return new Proxy({}, {
|
|
105
|
+
get: (_, prop: string) => {
|
|
106
|
+
return async (...args: any[]) => {
|
|
107
|
+
// Execute the operation on all registered operations
|
|
108
|
+
for (const operation of operations) {
|
|
109
|
+
await (operation as any)[prop](...args);
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
}) as MapOperations;
|
|
114
|
+
}
|
|
115
|
+
|