@phila/layerboard 3.0.0-beta.2 → 3.0.0-beta.21
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/README.md +184 -37
- package/dist/components/LayerCheckboxSet.vue.d.ts +36 -0
- package/dist/components/LayerPanel.vue.d.ts +63 -0
- package/dist/components/LayerRadioButtonSet.vue.d.ts +39 -0
- package/dist/components/Layerboard.vue.d.ts +332 -0
- package/dist/components/MapPanel.vue.d.ts +45 -0
- package/dist/components/TopicAccordion.vue.d.ts +39 -0
- package/dist/components/index.d.ts +6 -0
- package/dist/composables/index.d.ts +4 -0
- package/dist/composables/useApiDataSources.d.ts +38 -0
- package/dist/composables/useDataSource.d.ts +340 -0
- package/dist/composables/useLayerConfig.d.ts +45 -0
- package/dist/composables/useLayerboard.d.ts +211 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +2 -2
- package/dist/index.mjs +1831 -1570
- package/dist/layerboard.css +1 -1
- package/dist/services/index.d.ts +1 -0
- package/dist/services/layerConfigService.d.ts +40 -0
- package/dist/types/config.d.ts +76 -0
- package/dist/types/dataSource.d.ts +40 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/layer.d.ts +122 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/webmap-transformer.d.ts +222 -0
- package/package.json +18 -12
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
/**
|
|
3
|
+
* Bounding box for spatial queries
|
|
4
|
+
*/
|
|
5
|
+
export interface Bounds {
|
|
6
|
+
north: number;
|
|
7
|
+
south: number;
|
|
8
|
+
east: number;
|
|
9
|
+
west: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Configuration for a data source
|
|
13
|
+
*/
|
|
14
|
+
export interface DataSourceConfig {
|
|
15
|
+
/** ArcGIS FeatureServer URL */
|
|
16
|
+
url: string;
|
|
17
|
+
/** Optional where clause for filtering features */
|
|
18
|
+
where?: string;
|
|
19
|
+
/** Maximum features per request (default: 2000) */
|
|
20
|
+
pageSize?: number;
|
|
21
|
+
/** Whether to clip geometries to viewport bounds */
|
|
22
|
+
clipToViewport?: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Options for fetch operations
|
|
26
|
+
*/
|
|
27
|
+
export interface FetchOptions {
|
|
28
|
+
/** Spatial bounds for the query */
|
|
29
|
+
bounds?: Bounds;
|
|
30
|
+
/** Override where clause */
|
|
31
|
+
where?: string;
|
|
32
|
+
/** Output spatial reference (default: 4326) */
|
|
33
|
+
outSR?: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Composable for fetching data from ArcGIS Feature Services.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const { data, isLoading, error, fetch } = useDataSource({
|
|
41
|
+
* url: 'https://services.arcgis.com/.../FeatureServer/0',
|
|
42
|
+
* where: "STATUS = 'Active'"
|
|
43
|
+
* })
|
|
44
|
+
*
|
|
45
|
+
* // Fetch with spatial bounds
|
|
46
|
+
* await fetch({ bounds: { north: 40, south: 39, east: -75, west: -76 } })
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export declare function useDataSource(config: DataSourceConfig): {
|
|
50
|
+
data: Readonly<Ref<{
|
|
51
|
+
readonly type: "FeatureCollection";
|
|
52
|
+
readonly features: readonly {
|
|
53
|
+
readonly type: "Feature";
|
|
54
|
+
readonly geometry: {
|
|
55
|
+
readonly type: "Point";
|
|
56
|
+
readonly coordinates: readonly number[];
|
|
57
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
58
|
+
} | {
|
|
59
|
+
readonly type: "MultiPoint";
|
|
60
|
+
readonly coordinates: readonly (readonly number[])[];
|
|
61
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
62
|
+
} | {
|
|
63
|
+
readonly type: "LineString";
|
|
64
|
+
readonly coordinates: readonly (readonly number[])[];
|
|
65
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
66
|
+
} | {
|
|
67
|
+
readonly type: "MultiLineString";
|
|
68
|
+
readonly coordinates: readonly (readonly (readonly number[])[])[];
|
|
69
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
70
|
+
} | {
|
|
71
|
+
readonly type: "Polygon";
|
|
72
|
+
readonly coordinates: readonly (readonly (readonly number[])[])[];
|
|
73
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
74
|
+
} | {
|
|
75
|
+
readonly type: "MultiPolygon";
|
|
76
|
+
readonly coordinates: readonly (readonly (readonly (readonly number[])[])[])[];
|
|
77
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
78
|
+
} | {
|
|
79
|
+
readonly type: "GeometryCollection";
|
|
80
|
+
readonly geometries: readonly ({
|
|
81
|
+
readonly type: "Point";
|
|
82
|
+
readonly coordinates: readonly number[];
|
|
83
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
84
|
+
} | {
|
|
85
|
+
readonly type: "MultiPoint";
|
|
86
|
+
readonly coordinates: readonly (readonly number[])[];
|
|
87
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
88
|
+
} | {
|
|
89
|
+
readonly type: "LineString";
|
|
90
|
+
readonly coordinates: readonly (readonly number[])[];
|
|
91
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
92
|
+
} | {
|
|
93
|
+
readonly type: "MultiLineString";
|
|
94
|
+
readonly coordinates: readonly (readonly (readonly number[])[])[];
|
|
95
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
96
|
+
} | {
|
|
97
|
+
readonly type: "Polygon";
|
|
98
|
+
readonly coordinates: readonly (readonly (readonly number[])[])[];
|
|
99
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
100
|
+
} | {
|
|
101
|
+
readonly type: "MultiPolygon";
|
|
102
|
+
readonly coordinates: readonly (readonly (readonly (readonly number[])[])[])[];
|
|
103
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
104
|
+
} | /*elided*/ any)[];
|
|
105
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
106
|
+
};
|
|
107
|
+
readonly id?: string | number | undefined | undefined;
|
|
108
|
+
readonly properties: {
|
|
109
|
+
readonly [x: string]: any;
|
|
110
|
+
} | null;
|
|
111
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
112
|
+
}[];
|
|
113
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
114
|
+
} | null, {
|
|
115
|
+
readonly type: "FeatureCollection";
|
|
116
|
+
readonly features: readonly {
|
|
117
|
+
readonly type: "Feature";
|
|
118
|
+
readonly geometry: {
|
|
119
|
+
readonly type: "Point";
|
|
120
|
+
readonly coordinates: readonly number[];
|
|
121
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
122
|
+
} | {
|
|
123
|
+
readonly type: "MultiPoint";
|
|
124
|
+
readonly coordinates: readonly (readonly number[])[];
|
|
125
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
126
|
+
} | {
|
|
127
|
+
readonly type: "LineString";
|
|
128
|
+
readonly coordinates: readonly (readonly number[])[];
|
|
129
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
130
|
+
} | {
|
|
131
|
+
readonly type: "MultiLineString";
|
|
132
|
+
readonly coordinates: readonly (readonly (readonly number[])[])[];
|
|
133
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
134
|
+
} | {
|
|
135
|
+
readonly type: "Polygon";
|
|
136
|
+
readonly coordinates: readonly (readonly (readonly number[])[])[];
|
|
137
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
138
|
+
} | {
|
|
139
|
+
readonly type: "MultiPolygon";
|
|
140
|
+
readonly coordinates: readonly (readonly (readonly (readonly number[])[])[])[];
|
|
141
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
142
|
+
} | {
|
|
143
|
+
readonly type: "GeometryCollection";
|
|
144
|
+
readonly geometries: readonly ({
|
|
145
|
+
readonly type: "Point";
|
|
146
|
+
readonly coordinates: readonly number[];
|
|
147
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
148
|
+
} | {
|
|
149
|
+
readonly type: "MultiPoint";
|
|
150
|
+
readonly coordinates: readonly (readonly number[])[];
|
|
151
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
152
|
+
} | {
|
|
153
|
+
readonly type: "LineString";
|
|
154
|
+
readonly coordinates: readonly (readonly number[])[];
|
|
155
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
156
|
+
} | {
|
|
157
|
+
readonly type: "MultiLineString";
|
|
158
|
+
readonly coordinates: readonly (readonly (readonly number[])[])[];
|
|
159
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
160
|
+
} | {
|
|
161
|
+
readonly type: "Polygon";
|
|
162
|
+
readonly coordinates: readonly (readonly (readonly number[])[])[];
|
|
163
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
164
|
+
} | {
|
|
165
|
+
readonly type: "MultiPolygon";
|
|
166
|
+
readonly coordinates: readonly (readonly (readonly (readonly number[])[])[])[];
|
|
167
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
168
|
+
} | /*elided*/ any)[];
|
|
169
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
170
|
+
};
|
|
171
|
+
readonly id?: string | number | undefined | undefined;
|
|
172
|
+
readonly properties: {
|
|
173
|
+
readonly [x: string]: any;
|
|
174
|
+
} | null;
|
|
175
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
176
|
+
}[];
|
|
177
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
178
|
+
} | null>>;
|
|
179
|
+
isLoading: Readonly<Ref<boolean, boolean>>;
|
|
180
|
+
error: Readonly<Ref<Error | null, Error | null>>;
|
|
181
|
+
totalFeatures: Readonly<Ref<number, number>>;
|
|
182
|
+
config: DataSourceConfig;
|
|
183
|
+
fetch: (options?: FetchOptions) => Promise<GeoJSON.FeatureCollection>;
|
|
184
|
+
refetch: (options?: FetchOptions) => Promise<GeoJSON.FeatureCollection>;
|
|
185
|
+
clear: () => void;
|
|
186
|
+
};
|
|
187
|
+
/**
|
|
188
|
+
* Create a reactive data source that refetches when a trigger changes.
|
|
189
|
+
*
|
|
190
|
+
* @example
|
|
191
|
+
* ```typescript
|
|
192
|
+
* const address = ref({ lat: 39.9526, lng: -75.1652 })
|
|
193
|
+
* const { data, isLoading } = useReactiveDataSource(
|
|
194
|
+
* { url: 'https://services.arcgis.com/.../FeatureServer/0' },
|
|
195
|
+
* address,
|
|
196
|
+
* (addr) => ({ bounds: boundsFromAddress(addr) })
|
|
197
|
+
* )
|
|
198
|
+
* // Data refetches automatically when address changes
|
|
199
|
+
* ```
|
|
200
|
+
*/
|
|
201
|
+
export declare function useReactiveDataSource<T>(config: DataSourceConfig, trigger: Ref<T>, optionsFn: (value: T) => FetchOptions): {
|
|
202
|
+
data: Readonly<Ref<{
|
|
203
|
+
readonly type: "FeatureCollection";
|
|
204
|
+
readonly features: readonly {
|
|
205
|
+
readonly type: "Feature";
|
|
206
|
+
readonly geometry: {
|
|
207
|
+
readonly type: "Point";
|
|
208
|
+
readonly coordinates: readonly number[];
|
|
209
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
210
|
+
} | {
|
|
211
|
+
readonly type: "MultiPoint";
|
|
212
|
+
readonly coordinates: readonly (readonly number[])[];
|
|
213
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
214
|
+
} | {
|
|
215
|
+
readonly type: "LineString";
|
|
216
|
+
readonly coordinates: readonly (readonly number[])[];
|
|
217
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
218
|
+
} | {
|
|
219
|
+
readonly type: "MultiLineString";
|
|
220
|
+
readonly coordinates: readonly (readonly (readonly number[])[])[];
|
|
221
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
222
|
+
} | {
|
|
223
|
+
readonly type: "Polygon";
|
|
224
|
+
readonly coordinates: readonly (readonly (readonly number[])[])[];
|
|
225
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
226
|
+
} | {
|
|
227
|
+
readonly type: "MultiPolygon";
|
|
228
|
+
readonly coordinates: readonly (readonly (readonly (readonly number[])[])[])[];
|
|
229
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
230
|
+
} | {
|
|
231
|
+
readonly type: "GeometryCollection";
|
|
232
|
+
readonly geometries: readonly ({
|
|
233
|
+
readonly type: "Point";
|
|
234
|
+
readonly coordinates: readonly number[];
|
|
235
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
236
|
+
} | {
|
|
237
|
+
readonly type: "MultiPoint";
|
|
238
|
+
readonly coordinates: readonly (readonly number[])[];
|
|
239
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
240
|
+
} | {
|
|
241
|
+
readonly type: "LineString";
|
|
242
|
+
readonly coordinates: readonly (readonly number[])[];
|
|
243
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
244
|
+
} | {
|
|
245
|
+
readonly type: "MultiLineString";
|
|
246
|
+
readonly coordinates: readonly (readonly (readonly number[])[])[];
|
|
247
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
248
|
+
} | {
|
|
249
|
+
readonly type: "Polygon";
|
|
250
|
+
readonly coordinates: readonly (readonly (readonly number[])[])[];
|
|
251
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
252
|
+
} | {
|
|
253
|
+
readonly type: "MultiPolygon";
|
|
254
|
+
readonly coordinates: readonly (readonly (readonly (readonly number[])[])[])[];
|
|
255
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
256
|
+
} | /*elided*/ any)[];
|
|
257
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
258
|
+
};
|
|
259
|
+
readonly id?: string | number | undefined | undefined;
|
|
260
|
+
readonly properties: {
|
|
261
|
+
readonly [x: string]: any;
|
|
262
|
+
} | null;
|
|
263
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
264
|
+
}[];
|
|
265
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
266
|
+
} | null, {
|
|
267
|
+
readonly type: "FeatureCollection";
|
|
268
|
+
readonly features: readonly {
|
|
269
|
+
readonly type: "Feature";
|
|
270
|
+
readonly geometry: {
|
|
271
|
+
readonly type: "Point";
|
|
272
|
+
readonly coordinates: readonly number[];
|
|
273
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
274
|
+
} | {
|
|
275
|
+
readonly type: "MultiPoint";
|
|
276
|
+
readonly coordinates: readonly (readonly number[])[];
|
|
277
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
278
|
+
} | {
|
|
279
|
+
readonly type: "LineString";
|
|
280
|
+
readonly coordinates: readonly (readonly number[])[];
|
|
281
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
282
|
+
} | {
|
|
283
|
+
readonly type: "MultiLineString";
|
|
284
|
+
readonly coordinates: readonly (readonly (readonly number[])[])[];
|
|
285
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
286
|
+
} | {
|
|
287
|
+
readonly type: "Polygon";
|
|
288
|
+
readonly coordinates: readonly (readonly (readonly number[])[])[];
|
|
289
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
290
|
+
} | {
|
|
291
|
+
readonly type: "MultiPolygon";
|
|
292
|
+
readonly coordinates: readonly (readonly (readonly (readonly number[])[])[])[];
|
|
293
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
294
|
+
} | {
|
|
295
|
+
readonly type: "GeometryCollection";
|
|
296
|
+
readonly geometries: readonly ({
|
|
297
|
+
readonly type: "Point";
|
|
298
|
+
readonly coordinates: readonly number[];
|
|
299
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
300
|
+
} | {
|
|
301
|
+
readonly type: "MultiPoint";
|
|
302
|
+
readonly coordinates: readonly (readonly number[])[];
|
|
303
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
304
|
+
} | {
|
|
305
|
+
readonly type: "LineString";
|
|
306
|
+
readonly coordinates: readonly (readonly number[])[];
|
|
307
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
308
|
+
} | {
|
|
309
|
+
readonly type: "MultiLineString";
|
|
310
|
+
readonly coordinates: readonly (readonly (readonly number[])[])[];
|
|
311
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
312
|
+
} | {
|
|
313
|
+
readonly type: "Polygon";
|
|
314
|
+
readonly coordinates: readonly (readonly (readonly number[])[])[];
|
|
315
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
316
|
+
} | {
|
|
317
|
+
readonly type: "MultiPolygon";
|
|
318
|
+
readonly coordinates: readonly (readonly (readonly (readonly number[])[])[])[];
|
|
319
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
320
|
+
} | /*elided*/ any)[];
|
|
321
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
322
|
+
};
|
|
323
|
+
readonly id?: string | number | undefined | undefined;
|
|
324
|
+
readonly properties: {
|
|
325
|
+
readonly [x: string]: any;
|
|
326
|
+
} | null;
|
|
327
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
328
|
+
}[];
|
|
329
|
+
readonly bbox?: readonly [number, number, number, number] | readonly [number, number, number, number, number, number] | undefined;
|
|
330
|
+
} | null>>;
|
|
331
|
+
isLoading: Readonly<Ref<boolean, boolean>>;
|
|
332
|
+
error: Readonly<Ref<Error | null, Error | null>>;
|
|
333
|
+
totalFeatures: Readonly<Ref<number, number>>;
|
|
334
|
+
config: DataSourceConfig;
|
|
335
|
+
fetch: (options?: FetchOptions) => Promise<GeoJSON.FeatureCollection>;
|
|
336
|
+
refetch: (options?: FetchOptions) => Promise<GeoJSON.FeatureCollection>;
|
|
337
|
+
clear: () => void;
|
|
338
|
+
};
|
|
339
|
+
/** Type for the return value of useDataSource */
|
|
340
|
+
export type UseDataSourceReturn = ReturnType<typeof useDataSource>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { LayerConfig } from '../types';
|
|
2
|
+
export declare function useLayerConfig(): {
|
|
3
|
+
layers: import('vue').ComputedRef<{
|
|
4
|
+
id: string;
|
|
5
|
+
title: string;
|
|
6
|
+
type: "fill" | "line" | "circle";
|
|
7
|
+
url: string;
|
|
8
|
+
where?: string | undefined;
|
|
9
|
+
minZoom?: number | undefined;
|
|
10
|
+
maxZoom?: number | undefined;
|
|
11
|
+
opacity: number;
|
|
12
|
+
paint?: Record<string, unknown> | undefined;
|
|
13
|
+
outlinePaint?: Record<string, unknown> | undefined;
|
|
14
|
+
legend: {
|
|
15
|
+
type: "fill" | "line" | "circle";
|
|
16
|
+
color: string;
|
|
17
|
+
label: string;
|
|
18
|
+
width?: number | undefined;
|
|
19
|
+
radius?: number | undefined;
|
|
20
|
+
}[];
|
|
21
|
+
popup: {
|
|
22
|
+
title: string;
|
|
23
|
+
fields: {
|
|
24
|
+
field: string;
|
|
25
|
+
label: string;
|
|
26
|
+
format?: {
|
|
27
|
+
dateFormat?: string | undefined;
|
|
28
|
+
digitSeparator?: boolean | undefined;
|
|
29
|
+
places?: number | undefined;
|
|
30
|
+
} | undefined;
|
|
31
|
+
}[];
|
|
32
|
+
showTime?: boolean | undefined;
|
|
33
|
+
} | null;
|
|
34
|
+
displayOptions?: {
|
|
35
|
+
shouldShowCheckbox?: boolean | undefined;
|
|
36
|
+
shouldShowSlider?: boolean | undefined;
|
|
37
|
+
shouldShowLegendBox?: boolean | undefined;
|
|
38
|
+
layerNameChange?: string | undefined;
|
|
39
|
+
} | undefined;
|
|
40
|
+
}[]>;
|
|
41
|
+
visibleLayerIds: import('vue').ComputedRef<Set<string> & Omit<Set<string>, keyof Set<any>>>;
|
|
42
|
+
loadingLayerIds: import('vue').ComputedRef<Set<string> & Omit<Set<string>, keyof Set<any>>>;
|
|
43
|
+
toggleLayer: (layerId: string) => void;
|
|
44
|
+
setLayers: (newLayers: LayerConfig[]) => void;
|
|
45
|
+
};
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { LayerboardConfig } from '../types/config';
|
|
2
|
+
/**
|
|
3
|
+
* Main composable for initializing and managing the layerboard framework.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* const {
|
|
8
|
+
* layerConfigs,
|
|
9
|
+
* visibleLayers,
|
|
10
|
+
* isLoading,
|
|
11
|
+
* error,
|
|
12
|
+
* toggleLayer,
|
|
13
|
+
* setLayerOpacity,
|
|
14
|
+
* filterLayers
|
|
15
|
+
* } = useLayerboard({
|
|
16
|
+
* webMapId: '1596df70df0349e293ceec46a06ccc50',
|
|
17
|
+
* mode: 'dynamic',
|
|
18
|
+
* panelMode: 'flat'
|
|
19
|
+
* })
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare function useLayerboard(config: LayerboardConfig): {
|
|
23
|
+
layerConfigs: Readonly<import('vue').Ref<readonly {
|
|
24
|
+
readonly id: string;
|
|
25
|
+
readonly title: string;
|
|
26
|
+
readonly type: "fill" | "line" | "circle";
|
|
27
|
+
readonly url: string;
|
|
28
|
+
readonly where?: string | undefined;
|
|
29
|
+
readonly minZoom?: number | undefined;
|
|
30
|
+
readonly maxZoom?: number | undefined;
|
|
31
|
+
readonly opacity: number;
|
|
32
|
+
readonly paint?: {
|
|
33
|
+
readonly [x: string]: Readonly<unknown>;
|
|
34
|
+
} | undefined;
|
|
35
|
+
readonly outlinePaint?: {
|
|
36
|
+
readonly [x: string]: Readonly<unknown>;
|
|
37
|
+
} | undefined;
|
|
38
|
+
readonly legend: readonly {
|
|
39
|
+
readonly type: "fill" | "line" | "circle";
|
|
40
|
+
readonly color: string;
|
|
41
|
+
readonly label: string;
|
|
42
|
+
readonly width?: number | undefined;
|
|
43
|
+
readonly radius?: number | undefined;
|
|
44
|
+
}[];
|
|
45
|
+
readonly popup: {
|
|
46
|
+
readonly title: string;
|
|
47
|
+
readonly fields: readonly {
|
|
48
|
+
readonly field: string;
|
|
49
|
+
readonly label: string;
|
|
50
|
+
readonly format?: {
|
|
51
|
+
readonly dateFormat?: string | undefined;
|
|
52
|
+
readonly digitSeparator?: boolean | undefined;
|
|
53
|
+
readonly places?: number | undefined;
|
|
54
|
+
} | undefined;
|
|
55
|
+
}[];
|
|
56
|
+
readonly showTime?: boolean | undefined;
|
|
57
|
+
} | null;
|
|
58
|
+
readonly displayOptions?: {
|
|
59
|
+
readonly shouldShowCheckbox?: boolean | undefined;
|
|
60
|
+
readonly shouldShowSlider?: boolean | undefined;
|
|
61
|
+
readonly shouldShowLegendBox?: boolean | undefined;
|
|
62
|
+
readonly layerNameChange?: string | undefined;
|
|
63
|
+
} | undefined;
|
|
64
|
+
}[], readonly {
|
|
65
|
+
readonly id: string;
|
|
66
|
+
readonly title: string;
|
|
67
|
+
readonly type: "fill" | "line" | "circle";
|
|
68
|
+
readonly url: string;
|
|
69
|
+
readonly where?: string | undefined;
|
|
70
|
+
readonly minZoom?: number | undefined;
|
|
71
|
+
readonly maxZoom?: number | undefined;
|
|
72
|
+
readonly opacity: number;
|
|
73
|
+
readonly paint?: {
|
|
74
|
+
readonly [x: string]: Readonly<unknown>;
|
|
75
|
+
} | undefined;
|
|
76
|
+
readonly outlinePaint?: {
|
|
77
|
+
readonly [x: string]: Readonly<unknown>;
|
|
78
|
+
} | undefined;
|
|
79
|
+
readonly legend: readonly {
|
|
80
|
+
readonly type: "fill" | "line" | "circle";
|
|
81
|
+
readonly color: string;
|
|
82
|
+
readonly label: string;
|
|
83
|
+
readonly width?: number | undefined;
|
|
84
|
+
readonly radius?: number | undefined;
|
|
85
|
+
}[];
|
|
86
|
+
readonly popup: {
|
|
87
|
+
readonly title: string;
|
|
88
|
+
readonly fields: readonly {
|
|
89
|
+
readonly field: string;
|
|
90
|
+
readonly label: string;
|
|
91
|
+
readonly format?: {
|
|
92
|
+
readonly dateFormat?: string | undefined;
|
|
93
|
+
readonly digitSeparator?: boolean | undefined;
|
|
94
|
+
readonly places?: number | undefined;
|
|
95
|
+
} | undefined;
|
|
96
|
+
}[];
|
|
97
|
+
readonly showTime?: boolean | undefined;
|
|
98
|
+
} | null;
|
|
99
|
+
readonly displayOptions?: {
|
|
100
|
+
readonly shouldShowCheckbox?: boolean | undefined;
|
|
101
|
+
readonly shouldShowSlider?: boolean | undefined;
|
|
102
|
+
readonly shouldShowLegendBox?: boolean | undefined;
|
|
103
|
+
readonly layerNameChange?: string | undefined;
|
|
104
|
+
} | undefined;
|
|
105
|
+
}[]>>;
|
|
106
|
+
visibleLayers: Readonly<import('vue').Ref<ReadonlySet<string>, ReadonlySet<string>>>;
|
|
107
|
+
layerOpacities: Readonly<import('vue').Ref<{
|
|
108
|
+
readonly [x: string]: number;
|
|
109
|
+
}, {
|
|
110
|
+
readonly [x: string]: number;
|
|
111
|
+
}>>;
|
|
112
|
+
loadingLayers: Readonly<import('vue').Ref<ReadonlySet<string>, ReadonlySet<string>>>;
|
|
113
|
+
layerErrors: Readonly<import('vue').Ref<{
|
|
114
|
+
readonly [x: string]: string;
|
|
115
|
+
}, {
|
|
116
|
+
readonly [x: string]: string;
|
|
117
|
+
}>>;
|
|
118
|
+
searchQuery: Readonly<import('vue').Ref<string, string>>;
|
|
119
|
+
isLoading: Readonly<import('vue').Ref<boolean, boolean>>;
|
|
120
|
+
isInitialized: Readonly<import('vue').Ref<boolean, boolean>>;
|
|
121
|
+
error: Readonly<import('vue').Ref<Error | null, Error | null>>;
|
|
122
|
+
filteredLayerConfigs: import('vue').ComputedRef<{
|
|
123
|
+
id: string;
|
|
124
|
+
title: string;
|
|
125
|
+
type: "fill" | "line" | "circle";
|
|
126
|
+
url: string;
|
|
127
|
+
where?: string | undefined;
|
|
128
|
+
minZoom?: number | undefined;
|
|
129
|
+
maxZoom?: number | undefined;
|
|
130
|
+
opacity: number;
|
|
131
|
+
paint?: Record<string, unknown> | undefined;
|
|
132
|
+
outlinePaint?: Record<string, unknown> | undefined;
|
|
133
|
+
legend: {
|
|
134
|
+
type: "fill" | "line" | "circle";
|
|
135
|
+
color: string;
|
|
136
|
+
label: string;
|
|
137
|
+
width?: number | undefined;
|
|
138
|
+
radius?: number | undefined;
|
|
139
|
+
}[];
|
|
140
|
+
popup: {
|
|
141
|
+
title: string;
|
|
142
|
+
fields: {
|
|
143
|
+
field: string;
|
|
144
|
+
label: string;
|
|
145
|
+
format?: {
|
|
146
|
+
dateFormat?: string | undefined;
|
|
147
|
+
digitSeparator?: boolean | undefined;
|
|
148
|
+
places?: number | undefined;
|
|
149
|
+
} | undefined;
|
|
150
|
+
}[];
|
|
151
|
+
showTime?: boolean | undefined;
|
|
152
|
+
} | null;
|
|
153
|
+
displayOptions?: {
|
|
154
|
+
shouldShowCheckbox?: boolean | undefined;
|
|
155
|
+
shouldShowSlider?: boolean | undefined;
|
|
156
|
+
shouldShowLegendBox?: boolean | undefined;
|
|
157
|
+
layerNameChange?: string | undefined;
|
|
158
|
+
} | undefined;
|
|
159
|
+
}[]>;
|
|
160
|
+
layerList: import('vue').ComputedRef<{
|
|
161
|
+
config: {
|
|
162
|
+
id: string;
|
|
163
|
+
title: string;
|
|
164
|
+
type: "fill" | "line" | "circle";
|
|
165
|
+
url: string;
|
|
166
|
+
where?: string | undefined;
|
|
167
|
+
minZoom?: number | undefined;
|
|
168
|
+
maxZoom?: number | undefined;
|
|
169
|
+
opacity: number;
|
|
170
|
+
paint?: Record<string, unknown> | undefined;
|
|
171
|
+
outlinePaint?: Record<string, unknown> | undefined;
|
|
172
|
+
legend: {
|
|
173
|
+
type: "fill" | "line" | "circle";
|
|
174
|
+
color: string;
|
|
175
|
+
label: string;
|
|
176
|
+
width?: number | undefined;
|
|
177
|
+
radius?: number | undefined;
|
|
178
|
+
}[];
|
|
179
|
+
popup: {
|
|
180
|
+
title: string;
|
|
181
|
+
fields: {
|
|
182
|
+
field: string;
|
|
183
|
+
label: string;
|
|
184
|
+
format?: {
|
|
185
|
+
dateFormat?: string | undefined;
|
|
186
|
+
digitSeparator?: boolean | undefined;
|
|
187
|
+
places?: number | undefined;
|
|
188
|
+
} | undefined;
|
|
189
|
+
}[];
|
|
190
|
+
showTime?: boolean | undefined;
|
|
191
|
+
} | null;
|
|
192
|
+
displayOptions?: {
|
|
193
|
+
shouldShowCheckbox?: boolean | undefined;
|
|
194
|
+
shouldShowSlider?: boolean | undefined;
|
|
195
|
+
shouldShowLegendBox?: boolean | undefined;
|
|
196
|
+
layerNameChange?: string | undefined;
|
|
197
|
+
} | undefined;
|
|
198
|
+
};
|
|
199
|
+
component: "fill" | "line" | "circle";
|
|
200
|
+
}[]>;
|
|
201
|
+
config: LayerboardConfig;
|
|
202
|
+
initialize: () => Promise<void>;
|
|
203
|
+
toggleLayer: (layerId: string) => void;
|
|
204
|
+
setLayerOpacity: (layerId: string, opacity: number) => void;
|
|
205
|
+
filterLayers: (query: string) => void;
|
|
206
|
+
setLayerLoading: (layerId: string, loading: boolean) => void;
|
|
207
|
+
setLayerError: (layerId: string, errorMessage: string | null) => void;
|
|
208
|
+
reset: () => void;
|
|
209
|
+
};
|
|
210
|
+
/** Type for the return value of useLayerboard */
|
|
211
|
+
export type UseLayerboardReturn = ReturnType<typeof useLayerboard>;
|
package/dist/index.d.ts
ADDED