@faclon-labs/app-sdk 0.1.0 → 0.3.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.
Files changed (183) hide show
  1. package/README.md +39 -1
  2. package/dist/IOSenseApp.js +26 -6
  3. package/dist/SignIn.js +2 -2
  4. package/dist/auth.d.ts +7 -0
  5. package/dist/auth.js +35 -1
  6. package/dist/config.d.ts +5 -0
  7. package/dist/config.js +1 -0
  8. package/dist/index.d.ts +1 -1
  9. package/dist/index.js +1 -1
  10. package/dist/map/globe.d.ts +5 -0
  11. package/dist/map/globe.js +5 -0
  12. package/dist/map/index.d.ts +21 -0
  13. package/dist/map/index.js +21 -0
  14. package/dist/map/source.d.ts +48 -0
  15. package/dist/map/source.js +73 -0
  16. package/dist/map/testing.d.ts +5 -0
  17. package/dist/map/testing.js +5 -0
  18. package/dist/session.d.ts +1 -1
  19. package/dist/session.js +1 -1
  20. package/package.json +55 -5
  21. package/vendor/SOURCE.txt +1 -0
  22. package/vendor/map-engine/cesium/camera.d.ts +10 -0
  23. package/vendor/map-engine/cesium/camera.js +25 -0
  24. package/vendor/map-engine/cesium/index.d.ts +2 -0
  25. package/vendor/map-engine/cesium/index.js +2 -0
  26. package/vendor/map-engine/cesium/renderer.d.ts +149 -0
  27. package/vendor/map-engine/cesium/renderer.js +837 -0
  28. package/vendor/map-engine/commands/index.d.ts +2 -0
  29. package/vendor/map-engine/commands/index.js +2 -0
  30. package/vendor/map-engine/commands/post-message.d.ts +32 -0
  31. package/vendor/map-engine/commands/post-message.js +77 -0
  32. package/vendor/map-engine/commands/webmcp.d.ts +17 -0
  33. package/vendor/map-engine/commands/webmcp.js +59 -0
  34. package/vendor/map-engine/core/commands.d.ts +82 -0
  35. package/vendor/map-engine/core/commands.js +46 -0
  36. package/vendor/map-engine/core/emitter.d.ts +9 -0
  37. package/vendor/map-engine/core/emitter.js +38 -0
  38. package/vendor/map-engine/core/equal.d.ts +2 -0
  39. package/vendor/map-engine/core/equal.js +28 -0
  40. package/vendor/map-engine/core/errors.d.ts +20 -0
  41. package/vendor/map-engine/core/errors.js +34 -0
  42. package/vendor/map-engine/core/geometry-family.d.ts +3 -0
  43. package/vendor/map-engine/core/geometry-family.js +13 -0
  44. package/vendor/map-engine/core/index.d.ts +4 -0
  45. package/vendor/map-engine/core/index.js +3 -0
  46. package/vendor/map-engine/core/types.d.ts +709 -0
  47. package/vendor/map-engine/core/types.js +7 -0
  48. package/vendor/map-engine/data/annotations.d.ts +3 -0
  49. package/vendor/map-engine/data/annotations.js +63 -0
  50. package/vendor/map-engine/data/contracts.d.ts +172 -0
  51. package/vendor/map-engine/data/contracts.js +12 -0
  52. package/vendor/map-engine/data/index.d.ts +4 -0
  53. package/vendor/map-engine/data/index.js +3 -0
  54. package/vendor/map-engine/data/schema.d.ts +7 -0
  55. package/vendor/map-engine/data/schema.js +40 -0
  56. package/vendor/map-engine/geofence/evaluator.d.ts +35 -0
  57. package/vendor/map-engine/geofence/evaluator.js +172 -0
  58. package/vendor/map-engine/geofence/history.d.ts +9 -0
  59. package/vendor/map-engine/geofence/history.js +19 -0
  60. package/vendor/map-engine/geofence/index.d.ts +2 -0
  61. package/vendor/map-engine/geofence/index.js +2 -0
  62. package/vendor/map-engine/index.d.ts +27 -0
  63. package/vendor/map-engine/index.js +14 -0
  64. package/vendor/map-engine/layers/index.d.ts +1 -0
  65. package/vendor/map-engine/layers/index.js +1 -0
  66. package/vendor/map-engine/layers/layers.d.ts +49 -0
  67. package/vendor/map-engine/layers/layers.js +316 -0
  68. package/vendor/map-engine/maplibre/deck-host.d.ts +105 -0
  69. package/vendor/map-engine/maplibre/deck-host.js +401 -0
  70. package/vendor/map-engine/maplibre/icons.d.ts +17 -0
  71. package/vendor/map-engine/maplibre/icons.js +65 -0
  72. package/vendor/map-engine/maplibre/index.d.ts +3 -0
  73. package/vendor/map-engine/maplibre/index.js +2 -0
  74. package/vendor/map-engine/maplibre/map-like.d.ts +56 -0
  75. package/vendor/map-engine/maplibre/map-like.js +1 -0
  76. package/vendor/map-engine/maplibre/renderer.d.ts +173 -0
  77. package/vendor/map-engine/maplibre/renderer.js +889 -0
  78. package/vendor/map-engine/maplibre/style.d.ts +84 -0
  79. package/vendor/map-engine/maplibre/style.js +493 -0
  80. package/vendor/map-engine/present/decorations.d.ts +25 -0
  81. package/vendor/map-engine/present/decorations.js +115 -0
  82. package/vendor/map-engine/present/index.d.ts +2 -0
  83. package/vendor/map-engine/present/index.js +2 -0
  84. package/vendor/map-engine/present/present.d.ts +47 -0
  85. package/vendor/map-engine/present/present.js +149 -0
  86. package/vendor/map-engine/query/index.d.ts +1 -0
  87. package/vendor/map-engine/query/index.js +1 -0
  88. package/vendor/map-engine/query/planner.d.ts +26 -0
  89. package/vendor/map-engine/query/planner.js +47 -0
  90. package/vendor/map-engine/react/MapView.d.ts +87 -0
  91. package/vendor/map-engine/react/MapView.js +270 -0
  92. package/vendor/map-engine/react/context.d.ts +39 -0
  93. package/vendor/map-engine/react/context.js +94 -0
  94. package/vendor/map-engine/react/index.d.ts +2 -0
  95. package/vendor/map-engine/react/index.js +2 -0
  96. package/vendor/map-engine/react/store.d.ts +19 -0
  97. package/vendor/map-engine/react/store.js +18 -0
  98. package/vendor/map-engine/realtime/apply.d.ts +74 -0
  99. package/vendor/map-engine/realtime/apply.js +155 -0
  100. package/vendor/map-engine/realtime/index.d.ts +1 -0
  101. package/vendor/map-engine/realtime/index.js +1 -0
  102. package/vendor/map-engine/render/index.d.ts +1 -0
  103. package/vendor/map-engine/render/index.js +1 -0
  104. package/vendor/map-engine/render/offline.d.ts +8 -0
  105. package/vendor/map-engine/render/offline.js +47 -0
  106. package/vendor/map-engine/render/renderer.d.ts +74 -0
  107. package/vendor/map-engine/render/renderer.js +1 -0
  108. package/vendor/map-engine/render/terrarium.d.ts +48 -0
  109. package/vendor/map-engine/render/terrarium.js +110 -0
  110. package/vendor/map-engine/runtime/drawing.d.ts +28 -0
  111. package/vendor/map-engine/runtime/drawing.js +58 -0
  112. package/vendor/map-engine/runtime/index.d.ts +5 -0
  113. package/vendor/map-engine/runtime/index.js +2 -0
  114. package/vendor/map-engine/runtime/offline.d.ts +24 -0
  115. package/vendor/map-engine/runtime/offline.js +37 -0
  116. package/vendor/map-engine/runtime/overlays.d.ts +25 -0
  117. package/vendor/map-engine/runtime/overlays.js +65 -0
  118. package/vendor/map-engine/runtime/runtime.d.ts +4 -0
  119. package/vendor/map-engine/runtime/runtime.js +2105 -0
  120. package/vendor/map-engine/runtime/types.d.ts +407 -0
  121. package/vendor/map-engine/runtime/types.js +1 -0
  122. package/vendor/map-engine/scene/index.d.ts +1 -0
  123. package/vendor/map-engine/scene/index.js +1 -0
  124. package/vendor/map-engine/scene/scene.d.ts +31 -0
  125. package/vendor/map-engine/scene/scene.js +216 -0
  126. package/vendor/map-engine/selection/index.d.ts +1 -0
  127. package/vendor/map-engine/selection/index.js +1 -0
  128. package/vendor/map-engine/selection/selection.d.ts +12 -0
  129. package/vendor/map-engine/selection/selection.js +28 -0
  130. package/vendor/map-engine/spatial/geojson.d.ts +15 -0
  131. package/vendor/map-engine/spatial/geojson.js +83 -0
  132. package/vendor/map-engine/spatial/geometry.d.ts +13 -0
  133. package/vendor/map-engine/spatial/geometry.js +206 -0
  134. package/vendor/map-engine/spatial/import.d.ts +27 -0
  135. package/vendor/map-engine/spatial/import.js +96 -0
  136. package/vendor/map-engine/spatial/index.d.ts +38 -0
  137. package/vendor/map-engine/spatial/index.js +37 -0
  138. package/vendor/map-engine/spatial/line-of-sight.d.ts +35 -0
  139. package/vendor/map-engine/spatial/line-of-sight.js +43 -0
  140. package/vendor/map-engine/spatial/measure.d.ts +28 -0
  141. package/vendor/map-engine/spatial/measure.js +90 -0
  142. package/vendor/map-engine/spatial/operations.d.ts +21 -0
  143. package/vendor/map-engine/spatial/operations.js +171 -0
  144. package/vendor/map-engine/spatial/query.d.ts +17 -0
  145. package/vendor/map-engine/spatial/query.js +88 -0
  146. package/vendor/map-engine/spatial/spatial-index.d.ts +24 -0
  147. package/vendor/map-engine/spatial/spatial-index.js +36 -0
  148. package/vendor/map-engine/spatial/volume-mesh.d.ts +19 -0
  149. package/vendor/map-engine/spatial/volume-mesh.js +56 -0
  150. package/vendor/map-engine/temporal/index.d.ts +3 -0
  151. package/vendor/map-engine/temporal/index.js +3 -0
  152. package/vendor/map-engine/temporal/journal.d.ts +20 -0
  153. package/vendor/map-engine/temporal/journal.js +34 -0
  154. package/vendor/map-engine/temporal/playback.d.ts +41 -0
  155. package/vendor/map-engine/temporal/playback.js +80 -0
  156. package/vendor/map-engine/temporal/tracks.d.ts +33 -0
  157. package/vendor/map-engine/temporal/tracks.js +119 -0
  158. package/vendor/map-engine/testing/annotation-store.d.ts +24 -0
  159. package/vendor/map-engine/testing/annotation-store.js +43 -0
  160. package/vendor/map-engine/testing/contracts.d.ts +41 -0
  161. package/vendor/map-engine/testing/contracts.js +328 -0
  162. package/vendor/map-engine/testing/fixtures-monitoring.d.ts +22 -0
  163. package/vendor/map-engine/testing/fixtures-monitoring.js +103 -0
  164. package/vendor/map-engine/testing/fixtures.d.ts +18 -0
  165. package/vendor/map-engine/testing/fixtures.js +28 -0
  166. package/vendor/map-engine/testing/index.d.ts +7 -0
  167. package/vendor/map-engine/testing/index.js +7 -0
  168. package/vendor/map-engine/testing/mock-ontology.d.ts +13 -0
  169. package/vendor/map-engine/testing/mock-ontology.js +24 -0
  170. package/vendor/map-engine/testing/mock-provider.d.ts +97 -0
  171. package/vendor/map-engine/testing/mock-provider.js +369 -0
  172. package/vendor/map-engine/testing/test-renderer.d.ts +72 -0
  173. package/vendor/map-engine/testing/test-renderer.js +153 -0
  174. package/vendor/map-engine/viewport/index.d.ts +1 -0
  175. package/vendor/map-engine/viewport/index.js +1 -0
  176. package/vendor/map-engine/viewport/viewport.d.ts +19 -0
  177. package/vendor/map-engine/viewport/viewport.js +102 -0
  178. package/vendor/map-provider-uns/client.d.ts +75 -0
  179. package/vendor/map-provider-uns/client.js +111 -0
  180. package/vendor/map-provider-uns/index.d.ts +2 -0
  181. package/vendor/map-provider-uns/index.js +2 -0
  182. package/vendor/map-provider-uns/provider.d.ts +131 -0
  183. package/vendor/map-provider-uns/provider.js +561 -0
@@ -0,0 +1,173 @@
1
+ import type { BasemapConfig, MapConfig, MapViewport, RendererCapabilities, TerrainConfig, Position, ScenePatch, SceneState, Size, Unsubscribe } from '../core/types.js';
2
+ import type { MapClickEvent, PickEvent, Renderer, RendererOptions } from '../render/renderer.js';
3
+ import type { MapLibreModuleLike } from './map-like.js';
4
+ import { type DeckModules } from './deck-host.js';
5
+ import { type RendererTheme } from './style.js';
6
+ export interface MapLibreRendererOptions {
7
+ /** Inject the module (tests, or apps that already loaded it). Default: lazy `import('maplibre-gl')`. */
8
+ maplibre?: MapLibreModuleLike;
9
+ theme?: Partial<RendererTheme>;
10
+ /** Pixels around the pointer that count as a hit. Default 4. */
11
+ hitTolerance?: number;
12
+ /** Reject initialize() if the style has not loaded by then. Default 15 s. */
13
+ loadTimeoutMs?: number;
14
+ /**
15
+ * URL of `maplibre-gl-worker.mjs` (MapLibre v6). Needed when a bundler separates the module from its worker
16
+ * (for example Vite pre-bundling). With Vite: `import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?url'`.
17
+ */
18
+ workerUrl?: string;
19
+ /** Extra MapLibre Map options (controls, interaction). Engine-owned keys win. */
20
+ mapOptions?: Record<string, unknown>;
21
+ /**
22
+ * After the first objects are written, how long their data may take to load before the renderer reports that
23
+ * MapLibre's web worker is probably not wired (the map would otherwise stay silently empty). Default 8000 ms.
24
+ */
25
+ workerCheckMs?: number;
26
+ /** deck.gl for 3D layers (phase 3C). Default: lazy-loaded the first time a map has such a layer. Tests inject a fake. */
27
+ deck?: DeckModules;
28
+ /** Fetch used to read a style-URL basemap (so the label font can be added to it). Default: global fetch. */
29
+ fetch?: (url: string) => Promise<{
30
+ ok: boolean;
31
+ status: number;
32
+ json(): Promise<unknown>;
33
+ }>;
34
+ /** Reads one DEM tile's pixels for sampleElevation. Default: fetch + decode in the browser. Tests inject one. */
35
+ loadDemTile?: (url: string) => Promise<{
36
+ rgba: Uint8ClampedArray | Uint8Array;
37
+ size: number;
38
+ } | undefined>;
39
+ }
40
+ type Listener<T> = (value: T) => void;
41
+ export declare class MapLibreRenderer implements Renderer {
42
+ private readonly options;
43
+ /**
44
+ * Globe, terrain and ground heights (3B); heights and models through deck.gl, extrusions natively (3C).
45
+ * Known limit: with MapLibre v6 and deck.gl 9.4, deck.gl layers do not draw in the globe projection — so in globe
46
+ * mode heights and models are not claimed (the runtime reports the gap) and those layers are drawn flat by
47
+ * MapLibre instead of disappearing. A full 3D globe is the Cesium renderer's job (phase 3D).
48
+ */
49
+ get capabilities(): RendererCapabilities;
50
+ /** The layers last given by the scene (before any globe-mode flattening). */
51
+ private sceneLayers;
52
+ /** deck.gl host for layers at a height and models (created with the map, loads deck.gl on first use). */
53
+ private deckHost;
54
+ private fontName;
55
+ private groundRefresh;
56
+ private projection;
57
+ private terrain;
58
+ private dem;
59
+ private map;
60
+ private lib;
61
+ private offline;
62
+ /** Image layers: per layer, per object, the image source drawn (doc 28 G12). */
63
+ private readonly images;
64
+ /** Contour tiles from the terrain's DEM (doc 28 G11), created on first use. */
65
+ private contourDem;
66
+ private readonly theme;
67
+ private readonly layers;
68
+ private readonly features;
69
+ private readonly mapHandlers;
70
+ private hoverKey;
71
+ private hasFont;
72
+ private warnedNoFont;
73
+ /** Bumped by destroy(): an initialize() or setBasemap() that started before it is stale. */
74
+ private gen;
75
+ /** Rejects the style load being waited for (destroy() during initialize or a basemap swap). */
76
+ private cancelWait;
77
+ /** The one-off check that engine data really reached MapLibre's worker (see workerCheckMs). */
78
+ private workerCheck;
79
+ private workerChecked;
80
+ private readonly listeners;
81
+ constructor(options?: MapLibreRendererOptions);
82
+ initialize(container: HTMLElement, options: RendererOptions): Promise<void>;
83
+ setProjection(projection: NonNullable<MapConfig['projection']>): void;
84
+ /**
85
+ * The layer as this renderer can draw it now: in globe mode, layers at a height and models are drawn flat by
86
+ * MapLibre (see `capabilities`), so their objects stay visible.
87
+ */
88
+ private drawable;
89
+ setTerrain(terrain: TerrainConfig | null): void;
90
+ /** pmtiles:// archives (offline tile packs, doc 28 G14): the protocol is loaded the first time a URL uses it. */
91
+ private ensurePmtiles;
92
+ /**
93
+ * Ground heights from the terrain the map shows. MapLibre answers only where terrain tiles are loaded (null
94
+ * elsewhere) and multiplies by the exaggeration; the engine reports true metres, so that is divided out.
95
+ */
96
+ /**
97
+ * True heights from the DEM tiles, decoded by the engine. Not MapLibre's queryTerrainElevation: it answers 0 (sea
98
+ * level, not "unknown") wherever the view has no tile loaded, so a line of sight off screen came out flat.
99
+ */
100
+ sampleElevation(positions: Position[]): Promise<Array<number | null>>;
101
+ /**
102
+ * Projection, terrain (3D surface + hillshade) and sky — the map's environment, under every engine layer.
103
+ * Applied after load and again after a basemap swap (a new style drops them).
104
+ */
105
+ private applyEnvironment;
106
+ /** Contour lines from the terrain's DEM tiles (doc 28 G11), under every engine layer; removed when off. */
107
+ private applyContours;
108
+ /** The first engine style layer in draw order, so environment layers can go beneath it. */
109
+ private firstEngineLayer;
110
+ /**
111
+ * A style swap (MapLibre setStyle): the camera, canvas and GPU context stay. Every engine source and layer goes
112
+ * with the old style, so the caller renders the full scene again afterwards (Renderer contract).
113
+ */
114
+ setBasemap(basemap: BasemapConfig): Promise<void>;
115
+ /** The style for a basemap. A street-map style brings its own glyph server; engine labels use the app font, so it is added. */
116
+ private resolveStyle;
117
+ /** Waits for a style to load ('load' first time, 'style.load' after a swap); destroy() cancels the wait. */
118
+ private waitFor;
119
+ setViewport(viewport: MapViewport, options?: {
120
+ animate?: boolean;
121
+ }): void;
122
+ render(scene: SceneState): void;
123
+ update(patch: ScenePatch): void;
124
+ resize(): void;
125
+ project(position: Position): {
126
+ x: number;
127
+ y: number;
128
+ } | null;
129
+ onCameraMove(l: () => void): Unsubscribe;
130
+ getSize(): Size;
131
+ destroy(): void;
132
+ onViewportChange(l: Listener<MapViewport>): Unsubscribe;
133
+ onPick(l: Listener<PickEvent>): Unsubscribe;
134
+ onMapClick(l: Listener<MapClickEvent>): Unsubscribe;
135
+ onHover(l: Listener<PickEvent | null>): Unsubscribe;
136
+ onError(l: Listener<Error>): Unsubscribe;
137
+ /** Adds, removes, restyles, shows/hides and reorders engine layers. Basemap layers are never touched. */
138
+ private applyLayers;
139
+ private imageId;
140
+ private imageLayerIds;
141
+ /** One image source and raster layer per object, placed by its corners; follows moves, image changes and removal. */
142
+ private syncImages;
143
+ private dropImages;
144
+ /** Registers the icon images a layer uses (built-in shapes synchronously, URLs when they load). */
145
+ private ensureImages;
146
+ private removeEngineLayer;
147
+ private applyObjects;
148
+ /**
149
+ * Hands deck.gl the layers it draws; a layer that moves back to MapLibre (its height removed) gets its features
150
+ * written to its source again, since they were not kept there while deck.gl drew it.
151
+ */
152
+ private syncDeck;
153
+ /** The shape, plus for labelled areas its one label point (an area is labelled once, not once per map tile). */
154
+ private featuresOf;
155
+ private feature;
156
+ /**
157
+ * MapLibre's v6 module needs its worker bundled by the app; without it nothing errors, the map just stays empty.
158
+ * Once, after the first objects are written, check that their source finished loading — and name the fix if not.
159
+ */
160
+ private watchWorker;
161
+ private writeSource;
162
+ private source;
163
+ private bindMapEvents;
164
+ private setHover;
165
+ /** Top-most engine feature under the pointer: an object (stable objectId) or a cluster bubble. Heatmaps are not pickable. */
166
+ private hitTest;
167
+ /** A click on a cluster bubble zooms to where it splits; the camera move then reaches the engine as usual. */
168
+ private zoomIntoCluster;
169
+ private currentViewport;
170
+ private emitError;
171
+ private add;
172
+ }
173
+ export {};