@smartnet360/svelte-components 0.0.101 → 0.0.103

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 (81) hide show
  1. package/dist/apps/antenna-pattern/index.d.ts +1 -0
  2. package/dist/apps/antenna-pattern/index.js +1 -0
  3. package/dist/apps/antenna-pattern/utils/load-static-antennas.d.ts +17 -0
  4. package/dist/apps/antenna-pattern/utils/load-static-antennas.js +83 -0
  5. package/dist/apps/site-check/SiteCheck.svelte +4 -6
  6. package/dist/core/Charts/ChartCard.svelte +122 -12
  7. package/dist/core/Charts/ChartCard.svelte.d.ts +2 -0
  8. package/dist/core/Charts/ChartComponent.svelte +8 -6
  9. package/dist/core/CoverageMap/ai/AITools.d.ts +117 -0
  10. package/dist/core/CoverageMap/ai/AITools.js +380 -0
  11. package/dist/core/CoverageMap/core/CoverageCalculator.d.ts +138 -0
  12. package/dist/core/CoverageMap/core/CoverageCalculator.js +375 -0
  13. package/dist/core/CoverageMap/core/GridCalculator.d.ts +115 -0
  14. package/dist/core/CoverageMap/core/GridCalculator.js +484 -0
  15. package/dist/core/CoverageMap/core/PathLossModels.d.ts +253 -0
  16. package/dist/core/CoverageMap/core/PathLossModels.js +380 -0
  17. package/dist/core/CoverageMap/core/SignalProcessor.d.ts +288 -0
  18. package/dist/core/CoverageMap/core/SignalProcessor.js +424 -0
  19. package/dist/core/CoverageMap/data/AntennaStore.d.ts +165 -0
  20. package/dist/core/CoverageMap/data/AntennaStore.js +327 -0
  21. package/dist/core/CoverageMap/data/SiteStore.d.ts +155 -0
  22. package/dist/core/CoverageMap/data/SiteStore.js +355 -0
  23. package/dist/core/CoverageMap/index.d.ts +74 -0
  24. package/dist/core/CoverageMap/index.js +103 -0
  25. package/dist/core/CoverageMap/types.d.ts +252 -0
  26. package/dist/core/CoverageMap/types.js +7 -0
  27. package/dist/core/CoverageMap/utils/geoUtils.d.ts +223 -0
  28. package/dist/core/CoverageMap/utils/geoUtils.js +374 -0
  29. package/dist/core/CoverageMap/utils/rfUtils.d.ts +329 -0
  30. package/dist/core/CoverageMap/utils/rfUtils.js +434 -0
  31. package/dist/core/CoverageMap/visualization/ColorSchemes.d.ts +149 -0
  32. package/dist/core/CoverageMap/visualization/ColorSchemes.js +377 -0
  33. package/dist/core/TreeView/index.d.ts +4 -4
  34. package/dist/core/TreeView/index.js +5 -5
  35. package/dist/core/TreeView/tree-utils.d.ts +12 -0
  36. package/dist/core/TreeView/tree-utils.js +115 -6
  37. package/dist/core/TreeView/tree.store.svelte.d.ts +94 -0
  38. package/dist/core/TreeView/tree.store.svelte.js +274 -0
  39. package/dist/map-v2/features/cells/controls/CellFilterControl.svelte +16 -27
  40. package/dist/map-v2/features/cells/utils/cellGeoJSON.js +1 -0
  41. package/dist/map-v2/features/repeaters/controls/RepeaterFilterControl.svelte +33 -42
  42. package/dist/map-v2/features/sites/controls/SiteFilterControl.svelte +12 -19
  43. package/dist/map-v3/core/components/Map.svelte +4 -0
  44. package/dist/map-v3/core/stores/map.store.svelte.js +2 -0
  45. package/dist/map-v3/demo/DemoMap.svelte +31 -5
  46. package/dist/map-v3/demo/demo-cells.js +51 -22
  47. package/dist/map-v3/features/cells/components/CellFilterControl.svelte +24 -30
  48. package/dist/map-v3/features/cells/layers/CellsLayer.svelte +29 -9
  49. package/dist/map-v3/features/cells/logic/geometry.js +3 -0
  50. package/dist/map-v3/features/cells/stores/cell.data.svelte.d.ts +27 -0
  51. package/dist/map-v3/features/cells/stores/cell.data.svelte.js +65 -0
  52. package/dist/map-v3/features/coverage/index.d.ts +12 -0
  53. package/dist/map-v3/features/coverage/index.js +16 -0
  54. package/dist/map-v3/features/coverage/layers/CoverageLayer.svelte +198 -0
  55. package/dist/map-v3/features/coverage/layers/CoverageLayer.svelte.d.ts +10 -0
  56. package/dist/map-v3/features/coverage/logic/coloring.d.ts +28 -0
  57. package/dist/map-v3/features/coverage/logic/coloring.js +77 -0
  58. package/dist/map-v3/features/coverage/logic/geometry.d.ts +33 -0
  59. package/dist/map-v3/features/coverage/logic/geometry.js +112 -0
  60. package/dist/map-v3/features/coverage/stores/coverage.data.svelte.d.ts +46 -0
  61. package/dist/map-v3/features/coverage/stores/coverage.data.svelte.js +95 -0
  62. package/dist/map-v3/features/coverage/stores/coverage.display.svelte.d.ts +33 -0
  63. package/dist/map-v3/features/coverage/stores/coverage.display.svelte.js +90 -0
  64. package/dist/map-v3/features/coverage/types.d.ts +52 -0
  65. package/dist/map-v3/features/coverage/types.js +7 -0
  66. package/dist/map-v3/features/repeaters/components/RepeaterFilterControl.svelte +14 -20
  67. package/dist/map-v3/features/selection/components/FeatureSelectionControl.svelte +82 -65
  68. package/dist/map-v3/features/selection/components/FeatureSelectionControl.svelte.d.ts +5 -9
  69. package/dist/map-v3/features/selection/index.d.ts +1 -2
  70. package/dist/map-v3/features/selection/index.js +0 -1
  71. package/dist/map-v3/features/selection/stores/selection.store.svelte.d.ts +44 -15
  72. package/dist/map-v3/features/selection/stores/selection.store.svelte.js +163 -40
  73. package/dist/map-v3/features/selection/types.d.ts +4 -2
  74. package/dist/map-v3/features/sites/components/SiteFilterControl.svelte +23 -33
  75. package/dist/map-v3/index.d.ts +4 -0
  76. package/dist/map-v3/index.js +5 -0
  77. package/package.json +2 -2
  78. package/dist/core/TreeView/tree.store.d.ts +0 -10
  79. package/dist/core/TreeView/tree.store.js +0 -320
  80. package/dist/map-v3/features/selection/layers/SelectionHighlightLayers.svelte +0 -209
  81. package/dist/map-v3/features/selection/layers/SelectionHighlightLayers.svelte.d.ts +0 -13
@@ -1,320 +0,0 @@
1
- /**
2
- * Tree Store
3
- * Svelte writable store for managing tree state with persistence
4
- */
5
- import { writable } from 'svelte/store';
6
- import { flattenTree, buildInitialState, calculateIndeterminateStates, getDescendantPaths, getParentPath, getAncestorPaths, saveStateToStorage, loadStateFromStorage, clearStorageForNamespace } from './tree-utils';
7
- import { log } from '../logger';
8
- /**
9
- * Create a tree store with state management and persistence
10
- */
11
- export function createTreeStore(config) {
12
- log('🌲 Creating TreeStore', {
13
- namespace: config.namespace,
14
- nodeCount: config.nodes.length,
15
- persistState: config.persistState,
16
- defaultExpandAll: config.defaultExpandAll
17
- });
18
- const separator = config.pathSeparator || ':';
19
- // Flatten tree structure
20
- const nodesMap = flattenTree(config.nodes, config);
21
- log('📊 Tree flattened', {
22
- totalNodes: nodesMap.size,
23
- separator
24
- });
25
- // Build initial state
26
- let state = buildInitialState(nodesMap, config);
27
- log('🔧 Initial state built', {
28
- checkedPaths: state.checkedPaths.size,
29
- expandedPaths: state.expandedPaths.size
30
- });
31
- // Load persisted state if enabled
32
- if (config.persistState && config.namespace) {
33
- const persistedState = loadStateFromStorage(config.namespace, state);
34
- state = { ...state, ...persistedState };
35
- log('💾 Loaded persisted state', {
36
- namespace: config.namespace,
37
- checkedPaths: state.checkedPaths.size,
38
- expandedPaths: state.expandedPaths.size
39
- });
40
- }
41
- // Create writable store
42
- const store = writable({
43
- state,
44
- config,
45
- toggle: () => { },
46
- toggleExpand: () => { },
47
- expandAll: () => { },
48
- collapseAll: () => { },
49
- checkAll: () => { },
50
- uncheckAll: () => { },
51
- getCheckedPaths: () => [],
52
- getCheckedLeafPaths: () => [],
53
- clearStorage: () => { }
54
- });
55
- /**
56
- * Update state and trigger reactivity
57
- */
58
- function updateState(updater) {
59
- store.update(current => {
60
- const newState = updater(current.state);
61
- // Persist if enabled
62
- if (config.persistState && config.namespace) {
63
- saveStateToStorage(config.namespace, newState);
64
- }
65
- return {
66
- ...current,
67
- state: newState
68
- };
69
- });
70
- }
71
- /**
72
- * Toggle a node's checked state (with cascading)
73
- *
74
- * Logic:
75
- * 1. Toggle the clicked node
76
- * 2. Cascade DOWN to all descendants (check/uncheck all children)
77
- * 3. Propagate UP to all ancestors (update based on their children's states)
78
- */
79
- function toggle(path) {
80
- log('🔄 Toggling node', { path });
81
- updateState(state => {
82
- const nodeState = state.nodes.get(path);
83
- if (!nodeState) {
84
- log('⚠️ Node not found', { path });
85
- return state;
86
- }
87
- const newChecked = !state.checkedPaths.has(path);
88
- const newCheckedPaths = new Set(state.checkedPaths);
89
- log('📌 Toggle action', { path, newChecked });
90
- // STEP 0: If singleRootSelect mode and this is a root node being checked, uncheck all other roots
91
- if (config.singleRootSelect && newChecked && nodeState.level === 0) {
92
- log('🔘 Single root select mode: unchecking other roots', { path });
93
- // Uncheck all root nodes and their descendants
94
- state.rootPaths.forEach(rootPath => {
95
- if (rootPath !== path) {
96
- newCheckedPaths.delete(rootPath);
97
- // Also uncheck all descendants of this root
98
- const rootDescendants = getDescendantPaths(rootPath, state.nodes, separator);
99
- rootDescendants.forEach(descendantPath => {
100
- newCheckedPaths.delete(descendantPath);
101
- });
102
- }
103
- });
104
- }
105
- // STEP 0.5: If singleLevel1Select mode and this is a Level 1 node being checked, uncheck sibling Level 1 nodes
106
- if (config.singleLevel1Select && newChecked && nodeState.level === 1) {
107
- log('🔘 Single Level 1 select mode: unchecking sibling Level 1 nodes', { path });
108
- const parentPath = nodeState.parentPath;
109
- // Find and uncheck all Level 1 siblings (same parent, same level, different path)
110
- state.nodes.forEach((node, nodePath) => {
111
- if (node.level === 1 &&
112
- node.parentPath === parentPath &&
113
- nodePath !== path) {
114
- newCheckedPaths.delete(nodePath);
115
- // Also uncheck all descendants of this sibling
116
- const siblingDescendants = getDescendantPaths(nodePath, state.nodes, separator);
117
- siblingDescendants.forEach(descendantPath => {
118
- newCheckedPaths.delete(descendantPath);
119
- });
120
- }
121
- });
122
- }
123
- // STEP 1: Update this node
124
- if (newChecked) {
125
- newCheckedPaths.add(path);
126
- }
127
- else {
128
- newCheckedPaths.delete(path);
129
- }
130
- // STEP 2: CASCADE DOWN - Update all descendants to match
131
- const descendants = getDescendantPaths(path, state.nodes, separator);
132
- log('⬇️ Cascading to descendants', {
133
- path,
134
- descendantCount: descendants.length,
135
- newChecked
136
- });
137
- descendants.forEach(descendantPath => {
138
- if (newChecked) {
139
- newCheckedPaths.add(descendantPath);
140
- }
141
- else {
142
- newCheckedPaths.delete(descendantPath);
143
- }
144
- });
145
- // STEP 3: PROPAGATE UP - Update all ancestors based on their children
146
- // We need to update from the deepest ancestor up to the root
147
- const ancestorPaths = getAncestorPaths(path, separator);
148
- log('⬆️ Propagating to ancestors', {
149
- path,
150
- ancestorCount: ancestorPaths.length,
151
- ancestors: ancestorPaths
152
- });
153
- // Process ancestors from deepest to shallowest (reverse order)
154
- // This ensures we calculate states correctly as we go up
155
- for (let i = ancestorPaths.length - 1; i >= 0; i--) {
156
- const ancestorPath = ancestorPaths[i];
157
- const ancestor = state.nodes.get(ancestorPath);
158
- if (!ancestor)
159
- continue;
160
- // Count how many direct children are checked
161
- const checkedChildrenCount = ancestor.childPaths.filter(childPath => newCheckedPaths.has(childPath)).length;
162
- const totalChildren = ancestor.childPaths.length;
163
- log('👨‍👧‍👦 Checking ancestor children', {
164
- ancestorPath,
165
- checkedChildrenCount,
166
- totalChildren
167
- });
168
- // Update ancestor based on children states:
169
- // - All children checked → check parent
170
- // - No children checked → uncheck parent
171
- // - Some children checked → uncheck parent (will show indeterminate)
172
- if (checkedChildrenCount === totalChildren) {
173
- newCheckedPaths.add(ancestorPath);
174
- log('✅ All children checked, checking parent', { ancestorPath });
175
- }
176
- else {
177
- newCheckedPaths.delete(ancestorPath);
178
- if (checkedChildrenCount > 0) {
179
- log('➖ Some children checked, parent will be indeterminate', { ancestorPath });
180
- }
181
- else {
182
- log('❌ No children checked, unchecking parent', { ancestorPath });
183
- }
184
- }
185
- }
186
- // STEP 4: Recalculate indeterminate states
187
- const newIndeterminatePaths = calculateIndeterminateStates(state.nodes, newCheckedPaths);
188
- log('✅ Toggle complete', {
189
- path,
190
- newChecked,
191
- totalChecked: newCheckedPaths.size,
192
- indeterminate: newIndeterminatePaths.size
193
- });
194
- return {
195
- ...state,
196
- checkedPaths: newCheckedPaths,
197
- indeterminatePaths: newIndeterminatePaths
198
- };
199
- });
200
- }
201
- /**
202
- * Toggle expanded/collapsed state
203
- */
204
- function toggleExpand(path) {
205
- updateState(state => {
206
- const newExpandedPaths = new Set(state.expandedPaths);
207
- if (newExpandedPaths.has(path)) {
208
- newExpandedPaths.delete(path);
209
- }
210
- else {
211
- newExpandedPaths.add(path);
212
- }
213
- return {
214
- ...state,
215
- expandedPaths: newExpandedPaths
216
- };
217
- });
218
- }
219
- /**
220
- * Expand all nodes
221
- */
222
- function expandAll() {
223
- updateState(state => {
224
- const newExpandedPaths = new Set();
225
- // Add all nodes with children
226
- state.nodes.forEach((nodeState, path) => {
227
- if (nodeState.childPaths.length > 0) {
228
- newExpandedPaths.add(path);
229
- }
230
- });
231
- return {
232
- ...state,
233
- expandedPaths: newExpandedPaths
234
- };
235
- });
236
- }
237
- /**
238
- * Collapse all nodes
239
- */
240
- function collapseAll() {
241
- updateState(state => ({
242
- ...state,
243
- expandedPaths: new Set()
244
- }));
245
- }
246
- /**
247
- * Check all nodes
248
- */
249
- function checkAll() {
250
- log('✅ Check all nodes');
251
- updateState(state => {
252
- const newCheckedPaths = new Set();
253
- state.nodes.forEach((_, path) => {
254
- newCheckedPaths.add(path);
255
- });
256
- log('✅ All nodes checked', { totalChecked: newCheckedPaths.size });
257
- return {
258
- ...state,
259
- checkedPaths: newCheckedPaths,
260
- indeterminatePaths: new Set() // No indeterminate when all checked
261
- };
262
- });
263
- }
264
- /**
265
- * Uncheck all nodes
266
- */
267
- function uncheckAll() {
268
- log('❌ Uncheck all nodes');
269
- updateState(state => ({
270
- ...state,
271
- checkedPaths: new Set(),
272
- indeterminatePaths: new Set()
273
- }));
274
- }
275
- /**
276
- * Get all checked paths
277
- */
278
- function getCheckedPaths() {
279
- let result = [];
280
- store.subscribe(value => {
281
- result = Array.from(value.state.checkedPaths);
282
- })();
283
- return result;
284
- }
285
- /**
286
- * Get only checked leaf paths (nodes without children)
287
- */
288
- function getCheckedLeafPaths() {
289
- let result = [];
290
- store.subscribe(value => {
291
- result = Array.from(value.state.checkedPaths).filter(path => {
292
- const node = value.state.nodes.get(path);
293
- return node && node.childPaths.length === 0;
294
- });
295
- })();
296
- return result;
297
- }
298
- /**
299
- * Clear localStorage
300
- */
301
- function clearStorage() {
302
- if (config.namespace) {
303
- clearStorageForNamespace(config.namespace);
304
- }
305
- }
306
- // Initialize store with methods
307
- store.update(current => ({
308
- ...current,
309
- toggle,
310
- toggleExpand,
311
- expandAll,
312
- collapseAll,
313
- checkAll,
314
- uncheckAll,
315
- getCheckedPaths,
316
- getCheckedLeafPaths,
317
- clearStorage
318
- }));
319
- return store;
320
- }
@@ -1,209 +0,0 @@
1
- <script lang="ts">
2
- import { getContext } from 'svelte';
3
- import type { MapStore } from '../../../core/stores/map.store.svelte';
4
- import type { CellDataStore } from '../../cells/stores/cell.data.svelte';
5
- import type { CellDisplayStore } from '../../cells/stores/cell.display.svelte';
6
- import type { SelectedFeature } from '../types';
7
- import { generateCellArc, calculateRadiusInMeters } from '../../cells/logic/geometry';
8
- import type mapboxgl from 'mapbox-gl';
9
-
10
- interface Props {
11
- selectedFeatures: SelectedFeature[];
12
- cellDataStore?: CellDataStore;
13
- cellDisplayStore?: CellDisplayStore;
14
- highlightColor?: string;
15
- highlightWidth?: number;
16
- }
17
-
18
- let {
19
- selectedFeatures,
20
- cellDataStore,
21
- cellDisplayStore,
22
- highlightColor = '#FF6B00',
23
- highlightWidth = 4
24
- }: Props = $props();
25
-
26
- const mapStore = getContext<MapStore>('MAP_CONTEXT');
27
-
28
- let cellsSourceId = 'cells-selection-source';
29
- let cellsLayerId = 'cells-selection-highlight';
30
- let sitesSourceId = 'sites-selection-source';
31
- let sitesLayerId = 'sites-selection-highlight';
32
-
33
- // Track current zoom level for radius calculation
34
- let currentZoom = $state(13);
35
- let centerLat = $state(0);
36
-
37
- // Update zoom level when map changes
38
- $effect(() => {
39
- const map = mapStore.map;
40
- if (!map) return;
41
-
42
- const updateZoom = () => {
43
- currentZoom = map.getZoom();
44
- centerLat = map.getCenter().lat;
45
- };
46
-
47
- updateZoom();
48
- map.on('zoom', updateZoom);
49
- map.on('move', updateZoom);
50
-
51
- return () => {
52
- map.off('zoom', updateZoom);
53
- map.off('move', updateZoom);
54
- };
55
- });
56
-
57
- // Derive highlighted cells based on selected features
58
- let highlightedCells = $derived.by(() => {
59
- if (!cellDataStore) return [];
60
-
61
- const cellIds = selectedFeatures
62
- .filter(f => f.layerId === 'cells-layer')
63
- .map(f => f.id);
64
-
65
- if (cellIds.length === 0) return [];
66
-
67
- return cellDataStore.filteredCells.filter(cell =>
68
- cellIds.includes(cell.siteId) ||
69
- cellIds.includes(cell.cellName) ||
70
- cellIds.includes(cell.cellID)
71
- );
72
- });
73
-
74
- // Derive highlighted sites based on selected features
75
- // TODO: Add site highlighting when SiteDataStore is available
76
- let highlightedSites = $derived.by(() => {
77
- return [];
78
- });
79
-
80
- // Generate GeoJSON for cell highlights
81
- let cellHighlightGeoJSON = $derived.by(() => {
82
- if (!cellDisplayStore || highlightedCells.length === 0) {
83
- return { type: 'FeatureCollection', features: [] };
84
- }
85
-
86
- // Calculate radius for current zoom level (same as CellsLayer does)
87
- const radiusMeters = calculateRadiusInMeters(centerLat, currentZoom, cellDisplayStore.targetPixelSize);
88
-
89
- const features = highlightedCells.map(cell =>
90
- generateCellArc(cell, radiusMeters, 100, highlightColor)
91
- );
92
-
93
- return {
94
- type: 'FeatureCollection' as const,
95
- features
96
- };
97
- });
98
-
99
- // Generate GeoJSON for site highlights
100
- let siteHighlightGeoJSON = $derived.by(() => {
101
- if (highlightedSites.length === 0) {
102
- return { type: 'FeatureCollection', features: [] };
103
- }
104
-
105
- const features = highlightedSites.map((site: any) => ({
106
- type: 'Feature' as const,
107
- geometry: {
108
- type: 'Point' as const,
109
- coordinates: [site.longitude, site.latitude]
110
- },
111
- properties: { siteId: site.siteId }
112
- }));
113
-
114
- return {
115
- type: 'FeatureCollection' as const,
116
- features
117
- };
118
- });
119
-
120
- // Initialize and manage layers
121
- $effect(() => {
122
- const map = mapStore.map;
123
- if (!map) return;
124
-
125
- const addLayers = () => {
126
- // Cell Selection Highlight Layer
127
- if (!map.getSource(cellsSourceId)) {
128
- map.addSource(cellsSourceId, {
129
- type: 'geojson',
130
- data: { type: 'FeatureCollection', features: [] }
131
- });
132
- }
133
-
134
- if (!map.getLayer(cellsLayerId)) {
135
- map.addLayer({
136
- id: cellsLayerId,
137
- type: 'line',
138
- source: cellsSourceId,
139
- paint: {
140
- 'line-color': highlightColor,
141
- 'line-width': highlightWidth,
142
- 'line-opacity': 1
143
- }
144
- });
145
- }
146
-
147
- // Site Selection Highlight Layer
148
- if (!map.getSource(sitesSourceId)) {
149
- map.addSource(sitesSourceId, {
150
- type: 'geojson',
151
- data: { type: 'FeatureCollection', features: [] }
152
- });
153
- }
154
-
155
- if (!map.getLayer(sitesLayerId)) {
156
- map.addLayer({
157
- id: sitesLayerId,
158
- type: 'circle',
159
- source: sitesSourceId,
160
- paint: {
161
- 'circle-radius': 12,
162
- 'circle-color': 'transparent',
163
- 'circle-stroke-color': highlightColor,
164
- 'circle-stroke-width': highlightWidth,
165
- 'circle-stroke-opacity': 1
166
- }
167
- });
168
- }
169
- };
170
-
171
- // Initial setup
172
- addLayers();
173
-
174
- // Events
175
- map.on('style.load', addLayers);
176
-
177
- // Cleanup
178
- return () => {
179
- map.off('style.load', addLayers);
180
-
181
- if (map.getLayer(cellsLayerId)) map.removeLayer(cellsLayerId);
182
- if (map.getLayer(sitesLayerId)) map.removeLayer(sitesLayerId);
183
- if (map.getSource(cellsSourceId)) map.removeSource(cellsSourceId);
184
- if (map.getSource(sitesSourceId)) map.removeSource(sitesSourceId);
185
- };
186
- });
187
-
188
- // Update cell highlight source
189
- $effect(() => {
190
- const map = mapStore.map;
191
- if (!map) return;
192
-
193
- const source = map.getSource(cellsSourceId) as mapboxgl.GeoJSONSource;
194
- if (source) {
195
- source.setData(cellHighlightGeoJSON as any);
196
- }
197
- });
198
-
199
- // Update site highlight source
200
- $effect(() => {
201
- const map = mapStore.map;
202
- if (!map) return;
203
-
204
- const source = map.getSource(sitesSourceId) as mapboxgl.GeoJSONSource;
205
- if (source) {
206
- source.setData(siteHighlightGeoJSON as any);
207
- }
208
- });
209
- </script>
@@ -1,13 +0,0 @@
1
- import type { CellDataStore } from '../../cells/stores/cell.data.svelte';
2
- import type { CellDisplayStore } from '../../cells/stores/cell.display.svelte';
3
- import type { SelectedFeature } from '../types';
4
- interface Props {
5
- selectedFeatures: SelectedFeature[];
6
- cellDataStore?: CellDataStore;
7
- cellDisplayStore?: CellDisplayStore;
8
- highlightColor?: string;
9
- highlightWidth?: number;
10
- }
11
- declare const SelectionHighlightLayers: import("svelte").Component<Props, {}, "">;
12
- type SelectionHighlightLayers = ReturnType<typeof SelectionHighlightLayers>;
13
- export default SelectionHighlightLayers;