@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.
@@ -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>;
@@ -0,0 +1,6 @@
1
+ export * from './components';
2
+ export * from './composables';
3
+ export * from './services';
4
+ export * from './utils';
5
+ export * from './types';
6
+ export type { CyclomediaConfig, PictometryCredentials, AisGeocodeResult } from '@phila/phila-ui-map-core';