zenit-sdk 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-R73LRYVJ.mjs +3060 -0
- package/dist/chunk-R73LRYVJ.mjs.map +1 -0
- package/dist/{chat.service-Dr9qCnuT.d.mts → index-Da0hFqDL.d.mts} +187 -1
- package/dist/{chat.service-Dr9qCnuT.d.ts → index-Da0hFqDL.d.ts} +187 -1
- package/dist/index.d.mts +5 -2
- package/dist/index.d.ts +5 -2
- package/dist/index.js +2764 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +51 -3
- package/dist/index.mjs.map +1 -1
- package/dist/react/index.d.mts +3 -183
- package/dist/react/index.d.ts +3 -183
- package/dist/react/index.js +38 -35
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +25 -2712
- package/dist/react/index.mjs.map +1 -1
- package/package.json +27 -7
- package/dist/chunk-4Y7JCMGR.mjs +0 -330
- package/dist/chunk-4Y7JCMGR.mjs.map +0 -1
package/dist/react/index.d.mts
CHANGED
|
@@ -1,184 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import L, { PathOptions } from 'leaflet';
|
|
3
|
-
import { d as ZenitClient, a as GeoJsonFeatureCollection, a4 as EffectiveLayerState, B as Bbox, c as GeoJsonPolygon, L as LayerFilters, af as SuggestedAction, a8 as ChatServiceConfig, ae as ChatRequestDto, a9 as ChatRequestOptions, ag as ChatResponseDto } from '../chat.service-Dr9qCnuT.mjs';
|
|
1
|
+
export { an as FloatingChatBox, ao as FloatingChatBoxProps, aj as LayerSnapshot, ar as LayerStyle, am as ZenitFeatureFilterPanel, al as ZenitLayerManager, ah as ZenitMap, ak as ZenitMapProps, ai as ZenitMapRef, aw as ZoomOpacityOptions, ax as clampNumber, ay as clampOpacity, av as getAccentByLayerId, aC as getEffectiveLayerOpacity, at as getLayerColor, aB as getLayerZoomOpacityFactor, au as getStyleByLayerId, aA as getZoomOpacityFactor, az as isPolygonLayer, as as resolveLayerAccent, ap as useSendMessage, aq as useSendMessageStream } from '../index-Da0hFqDL.mjs';
|
|
4
2
|
export { ChevronLeft, ChevronRight, Eye, EyeOff, Layers, Upload, X, ZoomIn } from 'lucide-react';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
color?: string;
|
|
8
|
-
weight?: number;
|
|
9
|
-
fillColor?: string;
|
|
10
|
-
fillOpacity?: number;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Resuelve el color de acento para una capa basado en su estilo.
|
|
14
|
-
* Prioridad: fillColor → color → null
|
|
15
|
-
*/
|
|
16
|
-
declare function resolveLayerAccent(style?: LayerStyle$1 | null): string | null;
|
|
17
|
-
/**
|
|
18
|
-
* Obtiene el color de acento para una capa, con fallback a un color neutral.
|
|
19
|
-
* @param style - El estilo de la capa
|
|
20
|
-
* @param fallback - Color de fallback (por defecto gris neutral)
|
|
21
|
-
*/
|
|
22
|
-
declare function getLayerColor(style?: LayerStyle$1 | null, fallback?: string): string;
|
|
23
|
-
/**
|
|
24
|
-
* Busca el estilo de una capa en un arreglo de mapLayers por su layerId.
|
|
25
|
-
*/
|
|
26
|
-
declare function getStyleByLayerId(layerId: string | number, mapLayers?: Array<{
|
|
27
|
-
layerId: number | string;
|
|
28
|
-
style?: LayerStyle$1 | null;
|
|
29
|
-
}>): LayerStyle$1 | null;
|
|
30
|
-
/**
|
|
31
|
-
* Obtiene el color de acento de una capa por su layerId.
|
|
32
|
-
*/
|
|
33
|
-
declare function getAccentByLayerId(layerId: string | number, mapLayers?: Array<{
|
|
34
|
-
layerId: number | string;
|
|
35
|
-
style?: LayerStyle$1 | null;
|
|
36
|
-
}>): string | null;
|
|
37
|
-
|
|
38
|
-
interface LayerSnapshot {
|
|
39
|
-
layerId: number | string;
|
|
40
|
-
visible: boolean;
|
|
41
|
-
opacity: number;
|
|
42
|
-
}
|
|
43
|
-
interface ZenitMapRef {
|
|
44
|
-
setLayerOpacity: (layerId: number | string, opacity: number) => void;
|
|
45
|
-
setLayerVisibility: (layerId: number | string, visible: boolean) => void;
|
|
46
|
-
fitBounds: (bbox: Bbox, options?: {
|
|
47
|
-
padding?: [number, number];
|
|
48
|
-
animate?: boolean;
|
|
49
|
-
}) => void;
|
|
50
|
-
setView: (coordinates: {
|
|
51
|
-
lat: number;
|
|
52
|
-
lon: number;
|
|
53
|
-
}, zoom?: number) => void;
|
|
54
|
-
getLayerSnapshot: () => LayerSnapshot[];
|
|
55
|
-
restoreLayerSnapshot: (snapshot: LayerSnapshot[]) => void;
|
|
56
|
-
highlightFeature: (layerId: number | string, featureId?: number | string) => void;
|
|
57
|
-
getMapInstance: () => L.Map | null;
|
|
58
|
-
}
|
|
59
|
-
interface ZenitMapProps {
|
|
60
|
-
client: ZenitClient;
|
|
61
|
-
mapId: number;
|
|
62
|
-
height?: string;
|
|
63
|
-
width?: string;
|
|
64
|
-
initialZoom?: number;
|
|
65
|
-
initialCenter?: [number, number];
|
|
66
|
-
showLayerPanel?: boolean;
|
|
67
|
-
overlayGeojson?: GeoJsonFeatureCollection | null;
|
|
68
|
-
overlayStyle?: PathOptions;
|
|
69
|
-
layerControls?: Array<{
|
|
70
|
-
layerId: number | string;
|
|
71
|
-
visible?: boolean;
|
|
72
|
-
opacity?: number;
|
|
73
|
-
}>;
|
|
74
|
-
layerStates?: EffectiveLayerState[];
|
|
75
|
-
layerGeojson?: Record<string | number, GeoJsonFeatureCollection | null | undefined>;
|
|
76
|
-
onLayerStateChange?: (states: EffectiveLayerState[]) => void;
|
|
77
|
-
onError?: (error: unknown, ctx: 'map') => void;
|
|
78
|
-
onLoadingChange?: (ctx: 'map', loading: boolean) => void;
|
|
79
|
-
onFeatureClick?: (feature: any, layerId?: number | string) => void;
|
|
80
|
-
onFeatureHover?: (feature: any, layerId?: number | string) => void;
|
|
81
|
-
featureInfoMode?: 'popup' | 'none';
|
|
82
|
-
mapLayers?: Array<{
|
|
83
|
-
layerId: number | string;
|
|
84
|
-
style?: LayerStyle$1 | null;
|
|
85
|
-
}>;
|
|
86
|
-
zoomToBbox?: Bbox | null;
|
|
87
|
-
zoomToGeojson?: GeoJsonFeatureCollection | null;
|
|
88
|
-
onZoomChange?: (zoom: number) => void;
|
|
89
|
-
onMapReady?: (map: L.Map) => void;
|
|
90
|
-
}
|
|
91
|
-
declare const ZenitMap: React.ForwardRefExoticComponent<ZenitMapProps & React.RefAttributes<ZenitMapRef>>;
|
|
92
|
-
|
|
93
|
-
interface LayerStyle {
|
|
94
|
-
color?: string;
|
|
95
|
-
weight?: number;
|
|
96
|
-
fillColor?: string;
|
|
97
|
-
fillOpacity?: number;
|
|
98
|
-
}
|
|
99
|
-
interface ZenitLayerManagerProps {
|
|
100
|
-
client: ZenitClient;
|
|
101
|
-
mapId: number | string;
|
|
102
|
-
side?: 'left' | 'right';
|
|
103
|
-
className?: string;
|
|
104
|
-
style?: React.CSSProperties;
|
|
105
|
-
height?: string;
|
|
106
|
-
layerStates?: EffectiveLayerState[];
|
|
107
|
-
onLayerStatesChange?: (states: EffectiveLayerState[]) => void;
|
|
108
|
-
mapZoom?: number;
|
|
109
|
-
autoOpacityOnZoom?: boolean;
|
|
110
|
-
autoOpacityConfig?: {
|
|
111
|
-
minZoom?: number;
|
|
112
|
-
maxZoom?: number;
|
|
113
|
-
minOpacity?: number;
|
|
114
|
-
maxOpacity?: number;
|
|
115
|
-
};
|
|
116
|
-
showUploadTab?: boolean;
|
|
117
|
-
showLayerVisibilityIcon?: boolean;
|
|
118
|
-
layerFeatureCounts?: Record<string | number, number | null | undefined>;
|
|
119
|
-
mapLayers?: Array<{
|
|
120
|
-
layerId: number | string;
|
|
121
|
-
geometryType?: string | null;
|
|
122
|
-
layerType?: string | null;
|
|
123
|
-
name?: string | null;
|
|
124
|
-
style?: LayerStyle | null;
|
|
125
|
-
bboxGeometry?: GeoJsonPolygon | null;
|
|
126
|
-
displayOrder?: number | null;
|
|
127
|
-
}>;
|
|
128
|
-
onZoomToLayer?: (layerId: number | string, bboxGeometry?: GeoJsonPolygon | null) => void;
|
|
129
|
-
}
|
|
130
|
-
declare const ZenitLayerManager: React.FC<ZenitLayerManagerProps>;
|
|
131
|
-
|
|
132
|
-
interface ZenitFeatureFilterPanelProps {
|
|
133
|
-
title?: string;
|
|
134
|
-
description?: string;
|
|
135
|
-
className?: string;
|
|
136
|
-
style?: React.CSSProperties;
|
|
137
|
-
filters?: LayerFilters;
|
|
138
|
-
onChange?: (filters: LayerFilters) => void;
|
|
139
|
-
children?: React.ReactNode;
|
|
140
|
-
}
|
|
141
|
-
declare const ZenitFeatureFilterPanel: React.FC<ZenitFeatureFilterPanelProps>;
|
|
142
|
-
|
|
143
|
-
interface FloatingChatBoxProps {
|
|
144
|
-
mapId?: number;
|
|
145
|
-
filteredLayerIds?: number[];
|
|
146
|
-
filters?: Record<string, unknown>;
|
|
147
|
-
userId?: number | null;
|
|
148
|
-
baseUrl?: string;
|
|
149
|
-
accessToken?: string;
|
|
150
|
-
getAccessToken?: () => string | Promise<string>;
|
|
151
|
-
onActionClick?: (action: SuggestedAction) => void;
|
|
152
|
-
}
|
|
153
|
-
declare const FloatingChatBox: React.FC<FloatingChatBoxProps>;
|
|
154
|
-
|
|
155
|
-
declare const useSendMessage: (config?: ChatServiceConfig) => {
|
|
156
|
-
sendMessage: (mapId: number, request: ChatRequestDto, options?: ChatRequestOptions) => Promise<ChatResponseDto>;
|
|
157
|
-
isLoading: boolean;
|
|
158
|
-
error: unknown;
|
|
159
|
-
};
|
|
160
|
-
declare const useSendMessageStream: (config?: ChatServiceConfig) => {
|
|
161
|
-
sendMessage: (mapId: number, request: ChatRequestDto, options?: ChatRequestOptions) => Promise<ChatResponseDto>;
|
|
162
|
-
isStreaming: boolean;
|
|
163
|
-
streamingText: string;
|
|
164
|
-
completeResponse: ChatResponseDto | null;
|
|
165
|
-
error: unknown;
|
|
166
|
-
reset: () => void;
|
|
167
|
-
};
|
|
168
|
-
|
|
169
|
-
interface ZoomOpacityOptions {
|
|
170
|
-
minZoom?: number;
|
|
171
|
-
maxZoom?: number;
|
|
172
|
-
minFactor?: number;
|
|
173
|
-
maxFactor?: number;
|
|
174
|
-
minOpacity?: number;
|
|
175
|
-
maxOpacity?: number;
|
|
176
|
-
}
|
|
177
|
-
declare function clampNumber(value: number, min: number, max: number): number;
|
|
178
|
-
declare function clampOpacity(value: number): number;
|
|
179
|
-
declare function isPolygonLayer(layerType?: string, geometryType?: string): boolean;
|
|
180
|
-
declare function getZoomOpacityFactor(zoom: number, options?: ZoomOpacityOptions): number;
|
|
181
|
-
declare function getLayerZoomOpacityFactor(zoom: number, layerType?: string, geometryType?: string, options?: ZoomOpacityOptions): number;
|
|
182
|
-
declare function getEffectiveLayerOpacity(baseOpacity: number, zoom: number, layerType?: string, geometryType?: string, options?: ZoomOpacityOptions): number;
|
|
183
|
-
|
|
184
|
-
export { FloatingChatBox, type FloatingChatBoxProps, type LayerSnapshot, type LayerStyle$1 as LayerStyle, ZenitFeatureFilterPanel, ZenitLayerManager, ZenitMap, type ZenitMapProps, type ZenitMapRef, type ZoomOpacityOptions, clampNumber, clampOpacity, getAccentByLayerId, getEffectiveLayerOpacity, getLayerColor, getLayerZoomOpacityFactor, getStyleByLayerId, getZoomOpacityFactor, isPolygonLayer, resolveLayerAccent, useSendMessage, useSendMessageStream };
|
|
3
|
+
import 'react';
|
|
4
|
+
import 'leaflet';
|
package/dist/react/index.d.ts
CHANGED
|
@@ -1,184 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import L, { PathOptions } from 'leaflet';
|
|
3
|
-
import { d as ZenitClient, a as GeoJsonFeatureCollection, a4 as EffectiveLayerState, B as Bbox, c as GeoJsonPolygon, L as LayerFilters, af as SuggestedAction, a8 as ChatServiceConfig, ae as ChatRequestDto, a9 as ChatRequestOptions, ag as ChatResponseDto } from '../chat.service-Dr9qCnuT.js';
|
|
1
|
+
export { an as FloatingChatBox, ao as FloatingChatBoxProps, aj as LayerSnapshot, ar as LayerStyle, am as ZenitFeatureFilterPanel, al as ZenitLayerManager, ah as ZenitMap, ak as ZenitMapProps, ai as ZenitMapRef, aw as ZoomOpacityOptions, ax as clampNumber, ay as clampOpacity, av as getAccentByLayerId, aC as getEffectiveLayerOpacity, at as getLayerColor, aB as getLayerZoomOpacityFactor, au as getStyleByLayerId, aA as getZoomOpacityFactor, az as isPolygonLayer, as as resolveLayerAccent, ap as useSendMessage, aq as useSendMessageStream } from '../index-Da0hFqDL.js';
|
|
4
2
|
export { ChevronLeft, ChevronRight, Eye, EyeOff, Layers, Upload, X, ZoomIn } from 'lucide-react';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
color?: string;
|
|
8
|
-
weight?: number;
|
|
9
|
-
fillColor?: string;
|
|
10
|
-
fillOpacity?: number;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Resuelve el color de acento para una capa basado en su estilo.
|
|
14
|
-
* Prioridad: fillColor → color → null
|
|
15
|
-
*/
|
|
16
|
-
declare function resolveLayerAccent(style?: LayerStyle$1 | null): string | null;
|
|
17
|
-
/**
|
|
18
|
-
* Obtiene el color de acento para una capa, con fallback a un color neutral.
|
|
19
|
-
* @param style - El estilo de la capa
|
|
20
|
-
* @param fallback - Color de fallback (por defecto gris neutral)
|
|
21
|
-
*/
|
|
22
|
-
declare function getLayerColor(style?: LayerStyle$1 | null, fallback?: string): string;
|
|
23
|
-
/**
|
|
24
|
-
* Busca el estilo de una capa en un arreglo de mapLayers por su layerId.
|
|
25
|
-
*/
|
|
26
|
-
declare function getStyleByLayerId(layerId: string | number, mapLayers?: Array<{
|
|
27
|
-
layerId: number | string;
|
|
28
|
-
style?: LayerStyle$1 | null;
|
|
29
|
-
}>): LayerStyle$1 | null;
|
|
30
|
-
/**
|
|
31
|
-
* Obtiene el color de acento de una capa por su layerId.
|
|
32
|
-
*/
|
|
33
|
-
declare function getAccentByLayerId(layerId: string | number, mapLayers?: Array<{
|
|
34
|
-
layerId: number | string;
|
|
35
|
-
style?: LayerStyle$1 | null;
|
|
36
|
-
}>): string | null;
|
|
37
|
-
|
|
38
|
-
interface LayerSnapshot {
|
|
39
|
-
layerId: number | string;
|
|
40
|
-
visible: boolean;
|
|
41
|
-
opacity: number;
|
|
42
|
-
}
|
|
43
|
-
interface ZenitMapRef {
|
|
44
|
-
setLayerOpacity: (layerId: number | string, opacity: number) => void;
|
|
45
|
-
setLayerVisibility: (layerId: number | string, visible: boolean) => void;
|
|
46
|
-
fitBounds: (bbox: Bbox, options?: {
|
|
47
|
-
padding?: [number, number];
|
|
48
|
-
animate?: boolean;
|
|
49
|
-
}) => void;
|
|
50
|
-
setView: (coordinates: {
|
|
51
|
-
lat: number;
|
|
52
|
-
lon: number;
|
|
53
|
-
}, zoom?: number) => void;
|
|
54
|
-
getLayerSnapshot: () => LayerSnapshot[];
|
|
55
|
-
restoreLayerSnapshot: (snapshot: LayerSnapshot[]) => void;
|
|
56
|
-
highlightFeature: (layerId: number | string, featureId?: number | string) => void;
|
|
57
|
-
getMapInstance: () => L.Map | null;
|
|
58
|
-
}
|
|
59
|
-
interface ZenitMapProps {
|
|
60
|
-
client: ZenitClient;
|
|
61
|
-
mapId: number;
|
|
62
|
-
height?: string;
|
|
63
|
-
width?: string;
|
|
64
|
-
initialZoom?: number;
|
|
65
|
-
initialCenter?: [number, number];
|
|
66
|
-
showLayerPanel?: boolean;
|
|
67
|
-
overlayGeojson?: GeoJsonFeatureCollection | null;
|
|
68
|
-
overlayStyle?: PathOptions;
|
|
69
|
-
layerControls?: Array<{
|
|
70
|
-
layerId: number | string;
|
|
71
|
-
visible?: boolean;
|
|
72
|
-
opacity?: number;
|
|
73
|
-
}>;
|
|
74
|
-
layerStates?: EffectiveLayerState[];
|
|
75
|
-
layerGeojson?: Record<string | number, GeoJsonFeatureCollection | null | undefined>;
|
|
76
|
-
onLayerStateChange?: (states: EffectiveLayerState[]) => void;
|
|
77
|
-
onError?: (error: unknown, ctx: 'map') => void;
|
|
78
|
-
onLoadingChange?: (ctx: 'map', loading: boolean) => void;
|
|
79
|
-
onFeatureClick?: (feature: any, layerId?: number | string) => void;
|
|
80
|
-
onFeatureHover?: (feature: any, layerId?: number | string) => void;
|
|
81
|
-
featureInfoMode?: 'popup' | 'none';
|
|
82
|
-
mapLayers?: Array<{
|
|
83
|
-
layerId: number | string;
|
|
84
|
-
style?: LayerStyle$1 | null;
|
|
85
|
-
}>;
|
|
86
|
-
zoomToBbox?: Bbox | null;
|
|
87
|
-
zoomToGeojson?: GeoJsonFeatureCollection | null;
|
|
88
|
-
onZoomChange?: (zoom: number) => void;
|
|
89
|
-
onMapReady?: (map: L.Map) => void;
|
|
90
|
-
}
|
|
91
|
-
declare const ZenitMap: React.ForwardRefExoticComponent<ZenitMapProps & React.RefAttributes<ZenitMapRef>>;
|
|
92
|
-
|
|
93
|
-
interface LayerStyle {
|
|
94
|
-
color?: string;
|
|
95
|
-
weight?: number;
|
|
96
|
-
fillColor?: string;
|
|
97
|
-
fillOpacity?: number;
|
|
98
|
-
}
|
|
99
|
-
interface ZenitLayerManagerProps {
|
|
100
|
-
client: ZenitClient;
|
|
101
|
-
mapId: number | string;
|
|
102
|
-
side?: 'left' | 'right';
|
|
103
|
-
className?: string;
|
|
104
|
-
style?: React.CSSProperties;
|
|
105
|
-
height?: string;
|
|
106
|
-
layerStates?: EffectiveLayerState[];
|
|
107
|
-
onLayerStatesChange?: (states: EffectiveLayerState[]) => void;
|
|
108
|
-
mapZoom?: number;
|
|
109
|
-
autoOpacityOnZoom?: boolean;
|
|
110
|
-
autoOpacityConfig?: {
|
|
111
|
-
minZoom?: number;
|
|
112
|
-
maxZoom?: number;
|
|
113
|
-
minOpacity?: number;
|
|
114
|
-
maxOpacity?: number;
|
|
115
|
-
};
|
|
116
|
-
showUploadTab?: boolean;
|
|
117
|
-
showLayerVisibilityIcon?: boolean;
|
|
118
|
-
layerFeatureCounts?: Record<string | number, number | null | undefined>;
|
|
119
|
-
mapLayers?: Array<{
|
|
120
|
-
layerId: number | string;
|
|
121
|
-
geometryType?: string | null;
|
|
122
|
-
layerType?: string | null;
|
|
123
|
-
name?: string | null;
|
|
124
|
-
style?: LayerStyle | null;
|
|
125
|
-
bboxGeometry?: GeoJsonPolygon | null;
|
|
126
|
-
displayOrder?: number | null;
|
|
127
|
-
}>;
|
|
128
|
-
onZoomToLayer?: (layerId: number | string, bboxGeometry?: GeoJsonPolygon | null) => void;
|
|
129
|
-
}
|
|
130
|
-
declare const ZenitLayerManager: React.FC<ZenitLayerManagerProps>;
|
|
131
|
-
|
|
132
|
-
interface ZenitFeatureFilterPanelProps {
|
|
133
|
-
title?: string;
|
|
134
|
-
description?: string;
|
|
135
|
-
className?: string;
|
|
136
|
-
style?: React.CSSProperties;
|
|
137
|
-
filters?: LayerFilters;
|
|
138
|
-
onChange?: (filters: LayerFilters) => void;
|
|
139
|
-
children?: React.ReactNode;
|
|
140
|
-
}
|
|
141
|
-
declare const ZenitFeatureFilterPanel: React.FC<ZenitFeatureFilterPanelProps>;
|
|
142
|
-
|
|
143
|
-
interface FloatingChatBoxProps {
|
|
144
|
-
mapId?: number;
|
|
145
|
-
filteredLayerIds?: number[];
|
|
146
|
-
filters?: Record<string, unknown>;
|
|
147
|
-
userId?: number | null;
|
|
148
|
-
baseUrl?: string;
|
|
149
|
-
accessToken?: string;
|
|
150
|
-
getAccessToken?: () => string | Promise<string>;
|
|
151
|
-
onActionClick?: (action: SuggestedAction) => void;
|
|
152
|
-
}
|
|
153
|
-
declare const FloatingChatBox: React.FC<FloatingChatBoxProps>;
|
|
154
|
-
|
|
155
|
-
declare const useSendMessage: (config?: ChatServiceConfig) => {
|
|
156
|
-
sendMessage: (mapId: number, request: ChatRequestDto, options?: ChatRequestOptions) => Promise<ChatResponseDto>;
|
|
157
|
-
isLoading: boolean;
|
|
158
|
-
error: unknown;
|
|
159
|
-
};
|
|
160
|
-
declare const useSendMessageStream: (config?: ChatServiceConfig) => {
|
|
161
|
-
sendMessage: (mapId: number, request: ChatRequestDto, options?: ChatRequestOptions) => Promise<ChatResponseDto>;
|
|
162
|
-
isStreaming: boolean;
|
|
163
|
-
streamingText: string;
|
|
164
|
-
completeResponse: ChatResponseDto | null;
|
|
165
|
-
error: unknown;
|
|
166
|
-
reset: () => void;
|
|
167
|
-
};
|
|
168
|
-
|
|
169
|
-
interface ZoomOpacityOptions {
|
|
170
|
-
minZoom?: number;
|
|
171
|
-
maxZoom?: number;
|
|
172
|
-
minFactor?: number;
|
|
173
|
-
maxFactor?: number;
|
|
174
|
-
minOpacity?: number;
|
|
175
|
-
maxOpacity?: number;
|
|
176
|
-
}
|
|
177
|
-
declare function clampNumber(value: number, min: number, max: number): number;
|
|
178
|
-
declare function clampOpacity(value: number): number;
|
|
179
|
-
declare function isPolygonLayer(layerType?: string, geometryType?: string): boolean;
|
|
180
|
-
declare function getZoomOpacityFactor(zoom: number, options?: ZoomOpacityOptions): number;
|
|
181
|
-
declare function getLayerZoomOpacityFactor(zoom: number, layerType?: string, geometryType?: string, options?: ZoomOpacityOptions): number;
|
|
182
|
-
declare function getEffectiveLayerOpacity(baseOpacity: number, zoom: number, layerType?: string, geometryType?: string, options?: ZoomOpacityOptions): number;
|
|
183
|
-
|
|
184
|
-
export { FloatingChatBox, type FloatingChatBoxProps, type LayerSnapshot, type LayerStyle$1 as LayerStyle, ZenitFeatureFilterPanel, ZenitLayerManager, ZenitMap, type ZenitMapProps, type ZenitMapRef, type ZoomOpacityOptions, clampNumber, clampOpacity, getAccentByLayerId, getEffectiveLayerOpacity, getLayerColor, getLayerZoomOpacityFactor, getStyleByLayerId, getZoomOpacityFactor, isPolygonLayer, resolveLayerAccent, useSendMessage, useSendMessageStream };
|
|
3
|
+
import 'react';
|
|
4
|
+
import 'leaflet';
|
package/dist/react/index.js
CHANGED
|
@@ -2330,6 +2330,11 @@ var styles = {
|
|
|
2330
2330
|
height: 56,
|
|
2331
2331
|
padding: 0
|
|
2332
2332
|
},
|
|
2333
|
+
floatingButtonMobile: {
|
|
2334
|
+
width: 56,
|
|
2335
|
+
height: 56,
|
|
2336
|
+
padding: 0
|
|
2337
|
+
},
|
|
2333
2338
|
// Panel (expandable)
|
|
2334
2339
|
panel: {
|
|
2335
2340
|
position: "fixed",
|
|
@@ -2579,7 +2584,9 @@ var FloatingChatBox = ({
|
|
|
2579
2584
|
baseUrl,
|
|
2580
2585
|
accessToken,
|
|
2581
2586
|
getAccessToken,
|
|
2582
|
-
onActionClick
|
|
2587
|
+
onActionClick,
|
|
2588
|
+
onOpenChange,
|
|
2589
|
+
hideButton
|
|
2583
2590
|
}) => {
|
|
2584
2591
|
const [open, setOpen] = (0, import_react4.useState)(false);
|
|
2585
2592
|
const [expanded, setExpanded] = (0, import_react4.useState)(false);
|
|
@@ -2598,6 +2605,14 @@ var FloatingChatBox = ({
|
|
|
2598
2605
|
}, [accessToken, baseUrl, getAccessToken]);
|
|
2599
2606
|
const { sendMessage: sendMessage2, isStreaming, streamingText, completeResponse } = useSendMessageStream(chatConfig);
|
|
2600
2607
|
const canSend = Boolean(mapId) && Boolean(baseUrl) && inputValue.trim().length > 0 && !isStreaming;
|
|
2608
|
+
(0, import_react4.useEffect)(() => {
|
|
2609
|
+
onOpenChange?.(open);
|
|
2610
|
+
}, [open, onOpenChange]);
|
|
2611
|
+
(0, import_react4.useEffect)(() => {
|
|
2612
|
+
if (open && isMobile) {
|
|
2613
|
+
setExpanded(true);
|
|
2614
|
+
}
|
|
2615
|
+
}, [open, isMobile]);
|
|
2601
2616
|
const scrollToBottom = (0, import_react4.useCallback)(() => {
|
|
2602
2617
|
if (messagesEndRef.current) {
|
|
2603
2618
|
messagesEndRef.current.scrollIntoView({ behavior: "smooth" });
|
|
@@ -2619,8 +2634,9 @@ var FloatingChatBox = ({
|
|
|
2619
2634
|
}, [messages, streamingText, scrollToBottom]);
|
|
2620
2635
|
(0, import_react4.useEffect)(() => {
|
|
2621
2636
|
if (!open) return;
|
|
2637
|
+
if (isMobile && expanded) return;
|
|
2622
2638
|
const handleClickOutside = (event) => {
|
|
2623
|
-
if (
|
|
2639
|
+
if (chatBoxRef.current && !chatBoxRef.current.contains(event.target)) {
|
|
2624
2640
|
setOpen(false);
|
|
2625
2641
|
}
|
|
2626
2642
|
};
|
|
@@ -2628,7 +2644,7 @@ var FloatingChatBox = ({
|
|
|
2628
2644
|
return () => {
|
|
2629
2645
|
document.removeEventListener("mousedown", handleClickOutside);
|
|
2630
2646
|
};
|
|
2631
|
-
}, [open]);
|
|
2647
|
+
}, [open, isMobile, expanded]);
|
|
2632
2648
|
(0, import_react4.useEffect)(() => {
|
|
2633
2649
|
if (typeof window === "undefined") return;
|
|
2634
2650
|
const mediaQuery = window.matchMedia("(max-width: 768px)");
|
|
@@ -2648,31 +2664,13 @@ var FloatingChatBox = ({
|
|
|
2648
2664
|
};
|
|
2649
2665
|
}, []);
|
|
2650
2666
|
(0, import_react4.useEffect)(() => {
|
|
2651
|
-
if (typeof
|
|
2652
|
-
|
|
2653
|
-
|
|
2654
|
-
const updateOverflow = () => {
|
|
2655
|
-
if (open && expanded && mediaQuery.matches) {
|
|
2656
|
-
document.body.style.overflow = "hidden";
|
|
2657
|
-
} else {
|
|
2658
|
-
document.body.style.overflow = originalOverflow;
|
|
2659
|
-
}
|
|
2660
|
-
};
|
|
2661
|
-
updateOverflow();
|
|
2662
|
-
if (mediaQuery.addEventListener) {
|
|
2663
|
-
mediaQuery.addEventListener("change", updateOverflow);
|
|
2664
|
-
} else {
|
|
2665
|
-
mediaQuery.addListener(updateOverflow);
|
|
2666
|
-
}
|
|
2667
|
+
if (typeof document === "undefined") return;
|
|
2668
|
+
if (!open || !isMobile) return;
|
|
2669
|
+
document.body.style.overflow = "hidden";
|
|
2667
2670
|
return () => {
|
|
2668
|
-
|
|
2669
|
-
mediaQuery.removeEventListener("change", updateOverflow);
|
|
2670
|
-
} else {
|
|
2671
|
-
mediaQuery.removeListener(updateOverflow);
|
|
2672
|
-
}
|
|
2673
|
-
document.body.style.overflow = originalOverflow;
|
|
2671
|
+
document.body.style.overflow = "";
|
|
2674
2672
|
};
|
|
2675
|
-
}, [open,
|
|
2673
|
+
}, [open, isMobile]);
|
|
2676
2674
|
const addMessage = (0, import_react4.useCallback)((message) => {
|
|
2677
2675
|
setMessages((prev) => [...prev, message]);
|
|
2678
2676
|
}, []);
|
|
@@ -2881,13 +2879,18 @@ var FloatingChatBox = ({
|
|
|
2881
2879
|
display: flex !important;
|
|
2882
2880
|
flex-direction: column !important;
|
|
2883
2881
|
overflow: hidden !important;
|
|
2884
|
-
z-index:
|
|
2882
|
+
z-index: 100000 !important;
|
|
2885
2883
|
padding-top: env(safe-area-inset-top);
|
|
2886
|
-
padding-bottom: env(safe-area-inset-bottom);
|
|
2887
2884
|
}
|
|
2888
2885
|
.zenit-chat-panel.zenit-chat-panel--fullscreen .zenit-ai-body {
|
|
2889
2886
|
flex: 1;
|
|
2890
|
-
|
|
2887
|
+
min-height: 0;
|
|
2888
|
+
overflow-y: auto;
|
|
2889
|
+
-webkit-overflow-scrolling: touch;
|
|
2890
|
+
}
|
|
2891
|
+
.zenit-chat-panel.zenit-chat-panel--fullscreen .zenit-ai-input-area {
|
|
2892
|
+
flex-shrink: 0;
|
|
2893
|
+
padding-bottom: max(14px, env(safe-area-inset-bottom));
|
|
2891
2894
|
}
|
|
2892
2895
|
.zenit-ai-button.zenit-ai-button--hidden-mobile {
|
|
2893
2896
|
display: none !important;
|
|
@@ -2898,7 +2901,7 @@ var FloatingChatBox = ({
|
|
|
2898
2901
|
"div",
|
|
2899
2902
|
{
|
|
2900
2903
|
ref: chatBoxRef,
|
|
2901
|
-
className: `zenit-chat-panel${expanded ? " zenit-chat-panel--expanded" : ""}${
|
|
2904
|
+
className: `zenit-chat-panel${expanded ? " zenit-chat-panel--expanded" : ""}${isMobile ? " zenit-chat-panel--fullscreen" : ""}`,
|
|
2902
2905
|
style: {
|
|
2903
2906
|
...styles.panel,
|
|
2904
2907
|
...expanded ? styles.panelExpanded : styles.panelNormal
|
|
@@ -2998,7 +3001,7 @@ var FloatingChatBox = ({
|
|
|
2998
3001
|
),
|
|
2999
3002
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { ref: messagesEndRef })
|
|
3000
3003
|
] }),
|
|
3001
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { style: styles.inputWrapper, children: [
|
|
3004
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "zenit-ai-input-area", style: styles.inputWrapper, children: [
|
|
3002
3005
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
3003
3006
|
"textarea",
|
|
3004
3007
|
{
|
|
@@ -3035,20 +3038,20 @@ var FloatingChatBox = ({
|
|
|
3035
3038
|
]
|
|
3036
3039
|
}
|
|
3037
3040
|
),
|
|
3038
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
3041
|
+
!(hideButton && !open) && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
3039
3042
|
"button",
|
|
3040
3043
|
{
|
|
3041
3044
|
type: "button",
|
|
3042
|
-
className: `zenit-ai-button ${open ? "open" : ""}${open &&
|
|
3045
|
+
className: `zenit-ai-button ${open ? "open" : ""}${open && isMobile ? " zenit-ai-button--hidden-mobile" : ""}`,
|
|
3043
3046
|
style: {
|
|
3044
3047
|
...styles.floatingButton,
|
|
3045
|
-
...open ? styles.floatingButtonOpen : styles.floatingButtonClosed
|
|
3048
|
+
...open ? styles.floatingButtonOpen : isMobile ? styles.floatingButtonMobile : styles.floatingButtonClosed
|
|
3046
3049
|
},
|
|
3047
3050
|
onClick: () => setOpen((prev) => !prev),
|
|
3048
3051
|
"aria-label": open ? "Cerrar asistente" : "Abrir asistente Zenit AI",
|
|
3049
3052
|
children: open ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(CloseIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
|
|
3050
3053
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(ChatIcon, {}),
|
|
3051
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { children: "Asistente IA" })
|
|
3054
|
+
!isMobile && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { children: "Asistente IA" })
|
|
3052
3055
|
] })
|
|
3053
3056
|
}
|
|
3054
3057
|
)
|