@json_1013/core-geografico-isa-mapa 0.1.0-poc

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 (121) hide show
  1. package/README.md +90 -0
  2. package/dist-lib/estilos.css +3 -0
  3. package/dist-lib/index.js +7722 -0
  4. package/dist-lib/index.js.map +1 -0
  5. package/dist-lib/standalone.js +16810 -0
  6. package/dist-lib/standalone.js.map +1 -0
  7. package/dist-lib/tipos/features/maps/components/ArbolCapas.d.ts +20 -0
  8. package/dist-lib/tipos/features/maps/components/BarraHerramientas.d.ts +17 -0
  9. package/dist-lib/tipos/features/maps/components/BotonTridimensional.d.ts +10 -0
  10. package/dist-lib/tipos/features/maps/components/ComboBuscable.d.ts +23 -0
  11. package/dist-lib/tipos/features/maps/components/ControlesEscritorio.d.ts +80 -0
  12. package/dist-lib/tipos/features/maps/components/ControlesResponsive.d.ts +37 -0
  13. package/dist-lib/tipos/features/maps/components/LecturaCoordenadas.d.ts +9 -0
  14. package/dist-lib/tipos/features/maps/components/LeyendaCapa.d.ts +5 -0
  15. package/dist-lib/tipos/features/maps/components/ListaMapasBase.d.ts +11 -0
  16. package/dist-lib/tipos/features/maps/components/ListadoOpciones.d.ts +25 -0
  17. package/dist-lib/tipos/features/maps/components/MapaView.d.ts +19 -0
  18. package/dist-lib/tipos/features/maps/components/MenuOpcionesServicio.d.ts +13 -0
  19. package/dist-lib/tipos/features/maps/components/MiniaturaBasemap.d.ts +9 -0
  20. package/dist-lib/tipos/features/maps/components/ModalAlerta.d.ts +22 -0
  21. package/dist-lib/tipos/features/maps/components/ModalConsulta.d.ts +34 -0
  22. package/dist-lib/tipos/features/maps/components/ModalCoordenadas.d.ts +10 -0
  23. package/dist-lib/tipos/features/maps/components/ModalMedicion.d.ts +25 -0
  24. package/dist-lib/tipos/features/maps/components/ModalProyeccion.d.ts +16 -0
  25. package/dist-lib/tipos/features/maps/components/PanelCapas.d.ts +18 -0
  26. package/dist-lib/tipos/features/maps/components/PanelInferior.d.ts +12 -0
  27. package/dist-lib/tipos/features/maps/components/PanelMetadata.d.ts +10 -0
  28. package/dist-lib/tipos/features/maps/components/SelectorBasemap.d.ts +17 -0
  29. package/dist-lib/tipos/features/maps/components/SelectorDesplegable.d.ts +33 -0
  30. package/dist-lib/tipos/features/maps/components/TablaResultadosConsulta.d.ts +29 -0
  31. package/dist-lib/tipos/features/maps/components/Tooltip.d.ts +32 -0
  32. package/dist-lib/tipos/features/maps/components/VisorMapa.d.ts +18 -0
  33. package/dist-lib/tipos/features/maps/components/VisorMapaSkeleton.d.ts +4 -0
  34. package/dist-lib/tipos/features/maps/components/iconos.d.ts +51 -0
  35. package/dist-lib/tipos/features/maps/context/alertas.context.d.ts +32 -0
  36. package/dist-lib/tipos/features/maps/context/configuracion.context.d.ts +6 -0
  37. package/dist-lib/tipos/features/maps/hooks/useCoordenadasPuntero.d.ts +11 -0
  38. package/dist-lib/tipos/features/maps/hooks/useCoordenadasSeleccion.d.ts +4 -0
  39. package/dist-lib/tipos/features/maps/hooks/useElevarSuperficies.d.ts +10 -0
  40. package/dist-lib/tipos/features/maps/hooks/useEstadosCapas.d.ts +16 -0
  41. package/dist-lib/tipos/features/maps/hooks/useGestorCapas.d.ts +16 -0
  42. package/dist-lib/tipos/features/maps/hooks/useHerramientaActiva.d.ts +14 -0
  43. package/dist-lib/tipos/features/maps/hooks/useListbox.d.ts +53 -0
  44. package/dist-lib/tipos/features/maps/hooks/useMarcadorPunto.d.ts +15 -0
  45. package/dist-lib/tipos/features/maps/hooks/useModalArrastrable.d.ts +33 -0
  46. package/dist-lib/tipos/features/maps/hooks/useModoResponsive.d.ts +14 -0
  47. package/dist-lib/tipos/features/maps/hooks/usePanelesInferiores.d.ts +10 -0
  48. package/dist-lib/tipos/features/maps/hooks/useRenovacionToken.d.ts +3 -0
  49. package/dist-lib/tipos/features/maps/hooks/useResaltadoConsulta.d.ts +19 -0
  50. package/dist-lib/tipos/features/maps/hooks/useResultadosConsulta.d.ts +31 -0
  51. package/dist-lib/tipos/features/maps/hooks/useVistaArcgis.d.ts +17 -0
  52. package/dist-lib/tipos/features/maps/providers/ProveedorAlertas.d.ts +3 -0
  53. package/dist-lib/tipos/features/maps/providers/ProveedorConfiguracion.d.ts +14 -0
  54. package/dist-lib/tipos/features/maps/services/configuracion-aplicacion.d.ts +10 -0
  55. package/dist-lib/tipos/features/maps/services/entorno.d.ts +8 -0
  56. package/dist-lib/tipos/features/maps/services/formato-coordenadas.d.ts +4 -0
  57. package/dist-lib/tipos/features/maps/services/layers/arcgis.factory.d.ts +8 -0
  58. package/dist-lib/tipos/features/maps/services/layers/consulta-arcgis.d.ts +20 -0
  59. package/dist-lib/tipos/features/maps/services/layers/consulta-capa-activa.d.ts +56 -0
  60. package/dist-lib/tipos/features/maps/services/layers/consulta-wfs.d.ts +20 -0
  61. package/dist-lib/tipos/features/maps/services/layers/consulta.constantes.d.ts +5 -0
  62. package/dist-lib/tipos/features/maps/services/layers/descarga-capa.d.ts +46 -0
  63. package/dist-lib/tipos/features/maps/services/layers/error-servicio.d.ts +2 -0
  64. package/dist-lib/tipos/features/maps/services/layers/geoserver.d.ts +5 -0
  65. package/dist-lib/tipos/features/maps/services/layers/gestor-capas.d.ts +62 -0
  66. package/dist-lib/tipos/features/maps/services/layers/identity-manager.d.ts +5 -0
  67. package/dist-lib/tipos/features/maps/services/layers/leyenda.d.ts +25 -0
  68. package/dist-lib/tipos/features/maps/services/layers/simbolos-consulta.d.ts +19 -0
  69. package/dist-lib/tipos/features/maps/services/layers/types.d.ts +19 -0
  70. package/dist-lib/tipos/features/maps/services/layers/url-sin-query.d.ts +2 -0
  71. package/dist-lib/tipos/features/maps/services/layers/wms.factory.d.ts +4 -0
  72. package/dist-lib/tipos/features/maps/services/layers/xml-utils.d.ts +4 -0
  73. package/dist-lib/tipos/features/maps/services/parametros-generales.d.ts +12 -0
  74. package/dist-lib/tipos/features/maps/services/proveedor-token.d.ts +20 -0
  75. package/dist-lib/tipos/features/maps/services/proyeccion.d.ts +37 -0
  76. package/dist-lib/tipos/features/maps/services/tools/acciones.registry.d.ts +25 -0
  77. package/dist-lib/tipos/features/maps/services/tools/agrupar-herramientas.d.ts +3 -0
  78. package/dist-lib/tipos/features/maps/services/tools/grupos-barra.d.ts +13 -0
  79. package/dist-lib/tipos/features/maps/services/tools/herramientas.registry.d.ts +8 -0
  80. package/dist-lib/tipos/features/maps/services/tools/identify.tool.d.ts +27 -0
  81. package/dist-lib/tipos/features/maps/services/tools/medicion.tool.d.ts +69 -0
  82. package/dist-lib/tipos/features/maps/services/tools/types.d.ts +24 -0
  83. package/dist-lib/tipos/features/maps/styles/alertas.estilos.d.ts +15 -0
  84. package/dist-lib/tipos/features/maps/styles/controles.estilos.d.ts +20 -0
  85. package/dist-lib/tipos/features/maps/styles/modales.estilos.d.ts +11 -0
  86. package/dist-lib/tipos/features/maps/styles/raiz.estilos.d.ts +6 -0
  87. package/dist-lib/tipos/features/maps/types/aplicacion.types.d.ts +7 -0
  88. package/dist-lib/tipos/features/maps/types/capas.types.d.ts +14 -0
  89. package/dist-lib/tipos/features/maps/types/configuracion-aplicacion.types.d.ts +14 -0
  90. package/dist-lib/tipos/features/maps/types/consulta.types.d.ts +57 -0
  91. package/dist-lib/tipos/features/maps/types/galeria.types.d.ts +7 -0
  92. package/dist-lib/tipos/features/maps/types/herramienta.types.d.ts +20 -0
  93. package/dist-lib/tipos/features/maps/types/index.d.ts +11 -0
  94. package/dist-lib/tipos/features/maps/types/leyenda.types.d.ts +10 -0
  95. package/dist-lib/tipos/features/maps/types/mapa.types.d.ts +33 -0
  96. package/dist-lib/tipos/features/maps/types/parametros-generales.types.d.ts +51 -0
  97. package/dist-lib/tipos/features/maps/types/responsive.types.d.ts +6 -0
  98. package/dist-lib/tipos/features/maps/types/servicio.types.d.ts +63 -0
  99. package/dist-lib/tipos/features/maps/utils/basemap-imagenes.d.ts +2 -0
  100. package/dist-lib/tipos/features/maps/utils/capas-activas.d.ts +6 -0
  101. package/dist-lib/tipos/features/maps/utils/filtrar-barra.d.ts +6 -0
  102. package/dist-lib/tipos/features/maps/utils/mapa-helpers.d.ts +5 -0
  103. package/dist-lib/tipos/features/maps/utils/resolver-servicios.d.ts +5 -0
  104. package/dist-lib/tipos/lib/MapaCoreIsa.d.ts +31 -0
  105. package/dist-lib/tipos/lib/index.d.ts +15 -0
  106. package/dist-lib/tipos/lib/standalone.d.ts +20 -0
  107. package/dist-lib/tipos/shared/components/MensajeError.d.ts +8 -0
  108. package/dist-lib/tipos/shared/components/Skeleton.d.ts +4 -0
  109. package/dist-lib/tipos/shared/entorno.d.ts +19 -0
  110. package/dist-lib/tipos/shared/helpers/descargar-archivo.d.ts +2 -0
  111. package/dist-lib/tipos/shared/helpers/formato-duracion.d.ts +2 -0
  112. package/dist-lib/tipos/shared/helpers/http.d.ts +7 -0
  113. package/dist-lib/tipos/shared/hooks/useCerrarAlClicFuera.d.ts +3 -0
  114. package/dist-lib/tipos/shared/hooks/useDesbordado.d.ts +2 -0
  115. package/dist-lib/tipos/shared/hooks/useHojaInferiorArrastrable.d.ts +21 -0
  116. package/dist-lib/tipos/shared/hooks/useObservadorTamano.d.ts +11 -0
  117. package/dist-lib/tipos/shared/hooks/useRecursoAsync.d.ts +12 -0
  118. package/dist-lib/tipos/shared/hooks/useTamanoContenedor.d.ts +2 -0
  119. package/dist-lib/tipos/shared/lib/cn.d.ts +2 -0
  120. package/dist-lib/tipos/shared/types.d.ts +5 -0
  121. package/package.json +89 -0
@@ -0,0 +1,62 @@
1
+ import type ArcGISMap from "@arcgis/core/Map";
2
+ import type Extent from "@arcgis/core/geometry/Extent";
3
+ import type SpatialReference from "@arcgis/core/geometry/SpatialReference";
4
+ import type { CampoConsulta, CapaServicio, FiltroConsulta, ItemLeyenda, ParametrosConsulta, ParametrosDescarga, ResultadoConsultaCapa, ServicioGis, ValoresDistintosCampo } from "../../types";
5
+ import type { ResultadoDescargaCapa } from "./descarga-capa";
6
+ /** Fallo de carga asociado al servicio que lo produjo. */
7
+ export interface FalloServicio {
8
+ servicio: ServicioGis;
9
+ error: unknown;
10
+ }
11
+ type ReportarFallos = (fallos: readonly FalloServicio[]) => void;
12
+ /** Administra las capas del mapa (visibilidad y opacidad) sin depender de React. */
13
+ export declare class GestorCapasMapa {
14
+ private readonly mapa;
15
+ private readonly reportarFallos?;
16
+ private registros;
17
+ private visibilidadServicios;
18
+ private opacidades;
19
+ private visibilidadCapas;
20
+ private opacidadesCapas;
21
+ private readonly consultas;
22
+ constructor(mapa: ArcGISMap, reportarFallos?: ReportarFallos);
23
+ /** Reemplaza todas las capas administradas según la lista de servicios. */
24
+ establecer(servicios: readonly ServicioGis[]): void;
25
+ /** Muestra u oculta un servicio completo. */
26
+ cambiaVisibilidadDelServicio(nombre: string, visible: boolean): void;
27
+ /** Ajusta la opacidad de todas las capas raíz de un servicio. */
28
+ cambiarOpacidadServicio(nombre: string, opacidad: number): void;
29
+ /** Ajusta la opacidad de una subcapa concreta. */
30
+ cambiarOpacidadCapa(nombreServicio: string, identificador: string, opacidad: number): void;
31
+ /** Muestra u oculta una subcapa concreta de un servicio. */
32
+ cambiarVisibilidadCapa(nombreServicio: string, identificador: string, visible: boolean): void;
33
+ /** Renueva las credenciales sin reconstruir las capas ni perder su estado. */
34
+ actualizarCredenciales(servicios: readonly ServicioGis[]): void;
35
+ /** Descubre y devuelve por servicio las subcapas que el contrato no declara. */
36
+ descubrirCapasNoDeclaradas(): Promise<Map<string, CapaServicio[]>>;
37
+ /** Retira del mapa todas las capas administradas por esta instancia. */
38
+ destruir(): void;
39
+ /** Extensión para "zoom a la capa" (ver `ConsultaCapaActiva.extentDeCapa`). */
40
+ extentDeCapa(nombreServicio: string, identificador: string, outSpatialReference?: SpatialReference): Promise<Extent | null>;
41
+ /** Descarga en GeoJSON una subcapa (ver `ConsultaCapaActiva.descargarCapa`). */
42
+ descargarCapa(nombreServicio: string, identificador: string, extent: Extent, parametros: ParametrosDescarga,
43
+ /** Solo WFS: pregunta si continuar cuando el conteo previo indica una zona densa. */
44
+ onDescargaGrande?: (cantidad: number) => Promise<boolean>): Promise<ResultadoDescargaCapa>;
45
+ /** Leyenda de una capa activa (ver `ConsultaCapaActiva.leyendaDeCapa`). */
46
+ leyendaDeCapa(nombreServicio: string, identificador: string, etiquetaCapa: string): Promise<ItemLeyenda[]>;
47
+ /** Campos consultables de una capa activa (ver `ConsultaCapaActiva.camposDeCapa`). */
48
+ camposDeCapa(nombreServicio: string, identificador: string): Promise<CampoConsulta[]>;
49
+ /** Valores distintos de un campo (ver `ConsultaCapaActiva.valoresDistintosDeCampo`). */
50
+ valoresDistintosDeCampo(nombreServicio: string, identificador: string, campo: string, parametros: ParametrosConsulta): Promise<ValoresDistintosCampo>;
51
+ /** Consulta por atributos (ver `ConsultaCapaActiva.ejecutarConsulta`). */
52
+ ejecutarConsulta(nombreServicio: string, identificador: string, filtro: FiltroConsulta, parametros: ParametrosConsulta, outSpatialReference?: SpatialReference): Promise<ResultadoConsultaCapa>;
53
+ /** Siembra el estado de las subcapas de un servicio: todas arrancan desactivadas. */
54
+ private sembrarEstadoCapas;
55
+ /** Devuelve el registro de un servicio administrado o lanza si no existe. */
56
+ private buscar;
57
+ /** Aplica a las capas del servicio la combinación de su estado y el de cada subcapa. */
58
+ private aplicarVisibilidad;
59
+ /** Quita del mapa las capas administradas y resetea el estado interno. */
60
+ private limpiar;
61
+ }
62
+ export {};
@@ -0,0 +1,5 @@
1
+ import type { ServicioGis } from "../../types";
2
+ /** Registra el token ArcGIS del servicio antes de crear sus capas. */
3
+ export declare function registrarTokenArcgis(servicio: ServicioGis): void;
4
+ /** Indica si el token informado por el backend ya expiró (epoch ms). */
5
+ export declare function tokenVencido(servicio: ServicioGis): boolean;
@@ -0,0 +1,25 @@
1
+ import type FeatureLayer from "@arcgis/core/layers/FeatureLayer";
2
+ import type { ItemLeyenda, ServicioGis } from "../../types";
3
+ /** Un elemento de leyenda tal como lo entrega el recurso REST `/legend`. */
4
+ interface ElementoLeyendaArcgis {
5
+ label?: string;
6
+ contentType: string;
7
+ imageData: string;
8
+ }
9
+ /** Respuesta del recurso REST `/legend?f=json` de un servicio de mapas ArcGIS. */
10
+ export interface RespuestaLeyendaArcgis {
11
+ layers: {
12
+ layerId: number;
13
+ legend: ElementoLeyendaArcgis[];
14
+ }[];
15
+ }
16
+ /**
17
+ * Leyenda de un MapServer/TileServer ArcGIS vía REST `/legend`, emparejada por
18
+ * `layerId` y cacheada por URL. Sin `label`, usa `etiquetaCapa`.
19
+ */
20
+ export declare function obtenerLeyendaMapaImagen(urlServicio: string, layerId: number, etiquetaCapa: string, token: string | undefined, cache: Map<string, Promise<RespuestaLeyendaArcgis | null>>): Promise<ItemLeyenda[]>;
21
+ /** Leyenda de una `FeatureLayer` a partir de su `renderer`, sin llamada de red. */
22
+ export declare function obtenerLeyendaFeature(capa: FeatureLayer): Promise<ItemLeyenda[]>;
23
+ /** Leyenda WMS vía `GetLegendGraphic`: la URL va directo al `<img>`; la etiqueta es el nombre. */
24
+ export declare function obtenerLeyendaWms(servicio: ServicioGis, identificador: string, etiquetaCapa: string): ItemLeyenda[];
25
+ export {};
@@ -0,0 +1,19 @@
1
+ import SimpleFillSymbol from "@arcgis/core/symbols/SimpleFillSymbol";
2
+ import SimpleLineSymbol from "@arcgis/core/symbols/SimpleLineSymbol";
3
+ import SimpleMarkerSymbol from "@arcgis/core/symbols/SimpleMarkerSymbol";
4
+ /**
5
+ * Símbolos (ámbar) con los que `useResaltadoConsulta` dibuja los resultados de
6
+ * Consultar, distintos del marcador azul de "Proyectar".
7
+ */
8
+ /** Geometrías a las que se les puede dibujar un símbolo de estos. */
9
+ type SimboloConsulta = SimpleMarkerSymbol | SimpleLineSymbol | SimpleFillSymbol;
10
+ export declare const SIMBOLO_CONSULTA_PUNTO: SimpleMarkerSymbol;
11
+ export declare const SIMBOLO_CONSULTA_LINEA: SimpleLineSymbol;
12
+ export declare const SIMBOLO_CONSULTA_POLIGONO: SimpleFillSymbol;
13
+ /** Variantes "seleccionadas" (rojo, más gruesas), para la fila activa de la tabla. */
14
+ export declare const SIMBOLO_CONSULTA_PUNTO_SELECCIONADO: SimpleMarkerSymbol;
15
+ export declare const SIMBOLO_CONSULTA_LINEA_SELECCIONADA: SimpleLineSymbol;
16
+ export declare const SIMBOLO_CONSULTA_POLIGONO_SELECCIONADO: SimpleFillSymbol;
17
+ /** Símbolo por tipo de geometría (`multipoint` usa el de punto), o `null` si no se dibuja. */
18
+ export declare function simboloConsultaPara(tipoGeometria: string | undefined, seleccionado: boolean): SimboloConsulta | null;
19
+ export {};
@@ -0,0 +1,19 @@
1
+ import type Layer from "@arcgis/core/layers/Layer";
2
+ /** Resultado de la fábrica de capas para un servicio GIS. */
3
+ export interface CapasServicioConstruidas {
4
+ /** Capas raíz que se agregan al mapa (en el orden declarado). */
5
+ readonly capasRaiz: readonly Layer[];
6
+ /**
7
+ * Control de subcapas internas de un único servicio raíz
8
+ * (p. ej. MapImageLayer o WMSLayer).
9
+ */
10
+ readonly subcapas?: {
11
+ establecerVisible(identificador: string, visible: boolean): void;
12
+ establecerOpacidad(identificador: string, opacidad: number): void;
13
+ };
14
+ /**
15
+ * Capas independientes mapeadas por identificador
16
+ * (p. ej. una FeatureLayer por capa configurada).
17
+ */
18
+ readonly individuales?: ReadonlyMap<string, Layer>;
19
+ }
@@ -0,0 +1,2 @@
1
+ /** Recorta una URL a origin + pathname para loguearla sin credenciales; si no es URL, la deja igual. */
2
+ export declare function urlSinQuery(url: string): string;
@@ -0,0 +1,4 @@
1
+ import type { ServicioGis } from "../../types";
2
+ import type { CapasServicioConstruidas } from "./types";
3
+ /** OGC_WMS: un único WMSLayer por servicio; sus subcapas declaradas se controlan por nombre. */
4
+ export declare function crearWms(servicio: ServicioGis): CapasServicioConstruidas;
@@ -0,0 +1,4 @@
1
+ /** Elementos descendientes por nombre local, tolere o no el parser el namespace. */
2
+ export declare function descendientes(contexto: Document | Element, etiqueta: string): Element[];
3
+ /** Nombre local sin el prefijo de workspace (`movi:torre` → `torre`). */
4
+ export declare function sinPrefijo(valor: string): string;
@@ -0,0 +1,12 @@
1
+ import type { ParametrosConsulta, ParametrosDescarga, ParametrosIdentificar, ParametrosProyeccion } from "../types";
2
+ /** No se pudieron obtener los parámetros generales: el endpoint falló o el JSON es inválido. */
3
+ export declare class ParametrosGeneralesError extends Error {
4
+ }
5
+ /** Parámetros de la herramienta Descargar (grupo `descarga`). */
6
+ export declare function obtenerParametrosDescarga(): Promise<ParametrosDescarga>;
7
+ /** Parámetros de la consulta por atributos (grupo `consulta`). */
8
+ export declare function obtenerParametrosConsulta(): Promise<ParametrosConsulta>;
9
+ /** Parámetros de la herramienta Identificar (grupo `identificar`). */
10
+ export declare function obtenerParametrosIdentificar(): Promise<ParametrosIdentificar>;
11
+ /** Parámetros de la herramienta Proyectar (grupo `proyeccion`). */
12
+ export declare function obtenerParametrosProyeccion(): Promise<ParametrosProyeccion>;
@@ -0,0 +1,20 @@
1
+ import type { ProveedorTokenAcceso } from "./configuracion-aplicacion";
2
+ /** Por qué no se pudo obtener o usar el token de acceso. */
3
+ export type MotivoErrorToken = "sin-configurar" | "controlador" | "vacio" | "rechazado";
4
+ /** Error de token: el visor no carga sin un JWT válido (no hay respaldo). */
5
+ export declare class ErrorToken extends Error {
6
+ readonly motivo: MotivoErrorToken;
7
+ constructor(motivo: MotivoErrorToken, mensaje: string, opciones?: ErrorOptions);
8
+ }
9
+ /** De dónde sale el token: la URL del controlador del anfitrión o una función propia. */
10
+ export interface OrigenToken {
11
+ /** Controlador que emite el JWT: recibe `POST { clientId }` y responde `{ token }`. */
12
+ urlToken?: string;
13
+ /** Alternativa a `urlToken` para controlar la llamada (headers, cookies, etc.). */
14
+ getAccessToken?: ProveedorTokenAcceso;
15
+ }
16
+ /**
17
+ * Arma el proveedor de tokens del visor. Sin `urlToken` ni `getAccessToken`
18
+ * el proveedor falla siempre: el mapa no carga sin token.
19
+ */
20
+ export declare function crearProveedorToken({ urlToken, getAccessToken }: OrigenToken): ProveedorTokenAcceso;
@@ -0,0 +1,37 @@
1
+ import Point from "@arcgis/core/geometry/Point";
2
+ import type { GeometryUnion, GeometryWithoutMeshUnion } from "@arcgis/core/geometry/types";
3
+ /** Rango válido de X/Y (o longitud/latitud) de un sistema de referencia. */
4
+ export interface RangoCoordenadas {
5
+ readonly xMin: number;
6
+ readonly xMax: number;
7
+ readonly yMin: number;
8
+ readonly yMax: number;
9
+ }
10
+ /** Sistema de referencia con nombre legible, para los selectores de la herramienta. */
11
+ export interface SistemaReferencia {
12
+ /** Well-Known ID (código EPSG). */
13
+ readonly wkid: number;
14
+ /** Nombre para mostrar en español. */
15
+ readonly nombre: string;
16
+ /** `"geografica"`: lat/lon en grados. `"proyectada"`: este/norte en metros. */
17
+ readonly tipo: "geografica" | "proyectada";
18
+ /** Área de uso del EPSG (epsg.io) para validar coordenadas. Sin ella, no se valida rango. */
19
+ readonly rango?: RangoCoordenadas;
20
+ }
21
+ /**
22
+ * Sistemas de referencia de Colombia, en el orden de los selectores de `ModalProyeccion`.
23
+ * `rango` sale de epsg.io; en 3115/3116/3117 y 21897 cubre todo el país, así que
24
+ * detecta menos errores que en 9377.
25
+ */
26
+ export declare const SRIDS_COLOMBIA: readonly SistemaReferencia[];
27
+ /** Eje (`"x"`/`"y"`) fuera del rango de `sistema`, o `null`. Sin `rango`, se asume válido. */
28
+ export declare function ejeFueraDeRango(x: number, y: number, sistema: SistemaReferencia): "x" | "y" | null;
29
+ /** Crea un punto de ArcGIS en el sistema de referencia indicado. */
30
+ export declare function crearPunto(x: number, y: number, wkid: number): Point;
31
+ /** Proyecta una geometría a `wkidDestino` en el cliente (sin Geometry Service). */
32
+ export declare function proyectar(geometria: GeometryUnion, wkidDestino: number): Promise<GeometryWithoutMeshUnion>;
33
+ /** Proyecta un par de coordenadas de `wkidOrigen` a `wkidDestino` (modal «Proyectar»). */
34
+ export declare function proyectarCoordenadas(x: number, y: number, wkidOrigen: number, wkidDestino: number): Promise<{
35
+ x: number;
36
+ y: number;
37
+ }>;
@@ -0,0 +1,25 @@
1
+ import type { ConfiguracionHerramienta, VistaMapa } from "../../types";
2
+ /** Recursos que el visor entrega a una acción instantánea del mapa. */
3
+ export interface ContextoAccion {
4
+ readonly vista: VistaMapa;
5
+ /** Regresa el mapa a la vista inicial configurada. */
6
+ readonly irAInicio: () => void;
7
+ /** Cancela la herramienta activa y limpia dibujos/mediciones/selecciones. */
8
+ readonly limpiar: () => void;
9
+ /** Alterna la visibilidad del panel de capas. */
10
+ readonly togglePanelCapas: () => void;
11
+ /** Alterna la visibilidad de la modal de herramientas de medición. */
12
+ readonly toggleModalMedicion: () => void;
13
+ /** Alterna la visibilidad de la modal de proyección de coordenadas. */
14
+ readonly toggleModalProyeccion: () => void;
15
+ /** Alterna la visibilidad de la modal de consulta por atributos. */
16
+ readonly toggleModalConsulta: () => void;
17
+ /** Alterna la visibilidad del panel de metadatos del mapa. */
18
+ readonly togglePanelMetadata: () => void;
19
+ /** Alterna entre la vista 2D (`MapView`) y la vista 3D (`SceneView`). */
20
+ readonly alternarTridimensional: () => void;
21
+ }
22
+ /** Indica si un código de herramienta es una acción instantánea soportada. */
23
+ export declare function esAccion(codigo: string): boolean;
24
+ /** Ejecuta la acción asociada al código; no hace nada si no está registrada. */
25
+ export declare function ejecutarAccion(codigo: string, contexto: ContextoAccion, configuracion: ConfiguracionHerramienta): void;
@@ -0,0 +1,3 @@
1
+ import type { HerramientaMapa } from "../../types";
2
+ /** Anida las mediciones como `hijos` de `measurement-tools` para mostrarlas en un desplegable. */
3
+ export declare function agruparHerramientasMedicion(herramientas: readonly HerramientaMapa[]): HerramientaMapa[];
@@ -0,0 +1,13 @@
1
+ import type { CodigoHerramienta } from "../../types";
2
+ /** Grupo de herramientas contiguas dentro de la barra. */
3
+ export interface GrupoBarra {
4
+ codigos: readonly CodigoHerramienta[];
5
+ /** Se dibuja dentro de su propia píldora tenue, separada del resto. */
6
+ encapsulado?: boolean;
7
+ }
8
+ /** Orden y agrupación visual de las herramientas en la barra de escritorio. */
9
+ export declare const GRUPOS_BARRA_ESCRITORIO: readonly GrupoBarra[];
10
+ /** Barra reducida (responsive): capas, home y zoom. "Mapa base" y "3D" van aparte. */
11
+ export declare const GRUPOS_BARRA_RESPONSIVE: readonly GrupoBarra[];
12
+ /** Códigos de la barra reducida, derivados de `GRUPOS_BARRA_RESPONSIVE`. */
13
+ export declare const CODIGOS_BARRA_RESPONSIVE: ReadonlySet<CodigoHerramienta>;
@@ -0,0 +1,8 @@
1
+ import type { HerramientaMapa } from "../../types";
2
+ import type { ControladorHerramienta } from "./types";
3
+ /** Indica si un código de herramienta tiene implementación registrada. */
4
+ export declare function estaSoportada(codigo: string): boolean;
5
+ /** Si un código es soportado, directo o como sub-herramienta de un padre registrado. */
6
+ export declare function estaSoportadaConHijos(codigo: string, herramientas: readonly HerramientaMapa[]): boolean;
7
+ /** Crea el controlador de la herramienta; undefined (con aviso) si no tiene implementación. */
8
+ export declare function crearControlador(herramienta: HerramientaMapa): ControladorHerramienta | undefined;
@@ -0,0 +1,27 @@
1
+ import type { ContextoHerramienta, ControladorHerramienta } from "./types";
2
+ /** Sanea el HTML de `GetFeatureInfo` (scripts, iframes, `on*`, URLs ejecutables…). */
3
+ export declare function sanitizarHtml(html: string): string;
4
+ /**
5
+ * Identificar: consulta las capas visibles en el punto clicado y muestra el
6
+ * resultado en el popup (`identify` REST, GetFeatureInfo o `hitTest`).
7
+ */
8
+ export declare class HerramientaIdentificar implements ControladorHerramienta {
9
+ private vista;
10
+ private manejadores;
11
+ activar(contexto: ContextoHerramienta): void;
12
+ desactivar(): void;
13
+ /**
14
+ * Lanza una consulta por capa y abre el popup con las promesas pendientes. La
15
+ * tolerancia y el tope de entidades se piden a BD en cada clic (sin caché).
16
+ */
17
+ private identificar;
18
+ /** FeatureLayer: entidades ya dibujadas bajo el puntero (hitTest en cliente). */
19
+ private consultarFeatureLayers;
20
+ /** MapImageLayer: identify REST sobre las subcapas encendidas en el cliente. */
21
+ private consultarMapImage;
22
+ /**
23
+ * WMSLayer (GeoServer): GetFeatureInfo en HTML. Se muestra como lista de campos
24
+ * y, si la tabla no calza, como HTML saneado.
25
+ */
26
+ private consultarWms;
27
+ }
@@ -0,0 +1,69 @@
1
+ import type { ControladorHerramienta, ContextoHerramienta } from "./types";
2
+ /** Medición cruda que publica el `viewModel` (valores en la unidad activa). */
3
+ export type MedicionCruda = {
4
+ readonly length: number;
5
+ } | {
6
+ readonly area: number;
7
+ readonly perimeter: number;
8
+ } | null;
9
+ /** Lectura normalizada para la UI. */
10
+ export interface LecturaMedicion {
11
+ readonly distancia?: number;
12
+ readonly area?: number;
13
+ readonly perimetro?: number;
14
+ }
15
+ /**
16
+ * Medición de distancia y área (solo 2D). Al alternar oculta/muestra los widgets
17
+ * sin destruirlos, así se conserva la medición previa.
18
+ */
19
+ export declare class MeasurementTools implements ControladorHerramienta {
20
+ private vista;
21
+ private contenedorUI;
22
+ private distancia;
23
+ private area;
24
+ private containerDistancia;
25
+ private containerArea;
26
+ private activo;
27
+ /** Crea el `div` contenedor de un widget. */
28
+ private static crearContainer;
29
+ /** Devuelve el widget de distancia, creándolo la primera vez. */
30
+ private obtenerDistancia;
31
+ /** Devuelve el widget de área, creándolo la primera vez. */
32
+ private obtenerArea;
33
+ /** Muestra la sub-herramienta indicada (distancia por defecto). */
34
+ activar(contexto: ContextoHerramienta, subCodigo?: string): void;
35
+ /** Cambia entre distancia y área sin destruir los widgets. */
36
+ alternarSubHerramienta(subCodigo: string): void;
37
+ /** Reinicia la medición del sub-widget activo (botón «Restablecer medida»). */
38
+ restablecerMedida(): void;
39
+ /** Widget de la sub-herramienta activa (o `null` si no hay ninguna). */
40
+ private widgetActivo;
41
+ /** Unidades disponibles para la sub-herramienta activa (códigos ArcGIS). */
42
+ unidades(): readonly string[];
43
+ /** Unidad seleccionada en la sub-herramienta activa. */
44
+ unidadActual(): string | null;
45
+ /** Cambia la unidad de la sub-herramienta activa. */
46
+ establecerUnidad(codigo: string): void;
47
+ /** Valores de la medición en curso, normalizados; `null` si aún no hay. */
48
+ lectura(): LecturaMedicion | null;
49
+ /**
50
+ * Observa cambios de medición y de unidad de la sub-herramienta activa.
51
+ * Devuelve una función para cancelar la observación.
52
+ */
53
+ observar(callback: () => void): () => void;
54
+ /** Muestra el widget de distancia e inicia una medición si hace falta. */
55
+ private mostrarDistancia;
56
+ /** Oculta el contenedor del widget de distancia. */
57
+ private ocultarDistancia;
58
+ /** Muestra el widget de área e inicia una medición si hace falta. */
59
+ private mostrarArea;
60
+ /**
61
+ * Inicia una medición solo si el widget no tiene una en curso ni terminada,
62
+ * para conservar lo ya dibujado al volver a esta sub-herramienta.
63
+ */
64
+ private static iniciarSiHaceFalta;
65
+ /** Oculta el contenedor del widget de área. */
66
+ private ocultarArea;
67
+ /** Destruye ambos widgets y limpia referencias. */
68
+ desactivar(): void;
69
+ }
@@ -0,0 +1,24 @@
1
+ import type { ConfiguracionHerramienta, VistaMapa } from "../../types";
2
+ /** Recursos que el visor entrega a cada herramienta al activarse. */
3
+ export interface ContextoHerramienta {
4
+ readonly vista: VistaMapa;
5
+ /** Contenedor flotante donde la herramienta puede montar su propia UI. */
6
+ readonly contenedorUI: HTMLDivElement;
7
+ }
8
+ /** Ciclo de vida de una herramienta activable sobre el mapa. */
9
+ export interface ControladorHerramienta {
10
+ /** `subCodigo` identifica la sub-herramienta activa cuando el padre agrupa varias (ej: `measurement-tools`). */
11
+ activar(contexto: ContextoHerramienta, subCodigo?: string): void;
12
+ desactivar(): void;
13
+ /**
14
+ * Cambia la sub-herramienta activa sin recrear el controlador. Solo la
15
+ * implementan los controladores que agrupan varias (ej: `measurement-tools`).
16
+ */
17
+ alternarSubHerramienta?(subCodigo: string): void;
18
+ }
19
+ /** Construye un controlador recibiendo los parámetros del backend. */
20
+ export type FabricaHerramienta = (configuracion: ConfiguracionHerramienta) => ControladorHerramienta;
21
+ /** Manejador mínimo de eventos ArcGIS para liberarlos al desactivar. */
22
+ export type ManejadorEvento = {
23
+ remove(): void;
24
+ };
@@ -0,0 +1,15 @@
1
+ /** Estilos de `ModalAlerta`, réplica de `DialogoConfirmacion`; los colores van en hex. */
2
+ /** Fondo oscurecido a pantalla completa, por encima de todo (modales del visor: z-40). */
3
+ export declare const CLASES_FONDO_ALERTA = "fixed inset-0 z-50 flex items-center justify-center bg-[#1f2733]/40 p-4";
4
+ /** Tarjeta blanca centrada (~308×137, ref. diseño de formularios). */
5
+ export declare const CLASES_TARJETA_ALERTA: string;
6
+ /** Botón de cerrar (aspa) de la esquina superior derecha. */
7
+ export declare const CLASES_CERRAR_ALERTA: string;
8
+ /** Título centrado de la cabecera. */
9
+ export declare const CLASES_TITULO_ALERTA = "px-4 text-center text-sm font-bold text-[#1f2733]";
10
+ /** Texto del cuerpo del aviso. */
11
+ export declare const CLASES_MENSAJE_ALERTA = "text-xs leading-snug text-[#6b7280]";
12
+ /** Botón principal ("Entendido" o "Sí" en modo confirmación), con el degradado de acento. */
13
+ export declare const CLASES_BOTON_ALERTA: string;
14
+ /** Botón secundario ("No"), solo en modo confirmación: mismo azul, en contorno. */
15
+ export declare const CLASES_BOTON_ALERTA_SECUNDARIO: string;
@@ -0,0 +1,20 @@
1
+ /** Realce de los botones del visor: se elevan en hover y vuelven al pulsar. */
2
+ export declare const CLASES_REALCE_BOTON = "transition duration-200 ease-out hover:-translate-y-0.5 active:translate-y-0";
3
+ /** Botón flotante de control (mapa base y 3D); sin borde, el fondo lo aporta el estado. */
4
+ export declare const CLASES_BOTON_CONTROL = "grid size-10 place-items-center rounded-xl text-[#9EA0A2] transition duration-200 ease-out hover:-translate-y-0.5 active:translate-y-0";
5
+ /** Botón de control en reposo: sombra difusa que se nota y, al pasar el puntero, azul como el activo. */
6
+ export declare const CLASES_BOTON_CONTROL_REPOSO = "bg-white shadow-[0px_4px_20px_0px_rgba(0,0,0,0.35)] hover:bg-[#8DCEFF] hover:text-slate-600";
7
+ /** Botón de la barra en estado seleccionado (chip 30×30, radio 8, azul claro). */
8
+ export declare const CLASES_BOTON_BARRA_SELECCIONADO = "rounded-lg bg-[#8DCEFF] shadow-inner hover:bg-[#8DCEFF]";
9
+ /** Botón de control en estado seleccionado. */
10
+ export declare const CLASES_BOTON_CONTROL_SELECCIONADO = "rounded-lg bg-[#8DCEFF] shadow-inner hover:bg-[#8DCEFF]";
11
+ /** Botón redondo de cierre («X») de paneles y modales. */
12
+ export declare const CLASES_BOTON_CERRAR = "grid size-6 shrink-0 place-items-center rounded-full text-slate-400 transition duration-200 ease-out hover:-translate-y-0.5 active:translate-y-0 hover:bg-slate-100 hover:text-slate-600";
13
+ /** Ancho mínimo (px) del contenedor para el layout de escritorio (ver `useModoResponsive`). */
14
+ export declare const ANCHO_MINIMO_ESCRITORIO_PX = 640;
15
+ /** Puntos de anclaje (fracción del alto del mapa) de la hoja inferior responsive. */
16
+ export declare const PUNTOS_ANCLAJE_HOJA_INFERIOR: readonly [0.18, 0.5, 0.9];
17
+ /** Asa de arrastre superior de la hoja inferior. */
18
+ export declare const CLASES_ASA_HOJA_INFERIOR = "flex w-full shrink-0 cursor-grab touch-none items-center justify-center py-2 active:cursor-grabbing";
19
+ /** Contenedor de la hoja inferior fija (mapa base / capas en responsive). */
20
+ export declare const CLASES_HOJA_INFERIOR: string;
@@ -0,0 +1,11 @@
1
+ /** Estilos compartidos de las modales de herramienta arrastrables. */
2
+ /** Ancho fijo del diseño (px). La altura la decide cada modal. */
3
+ export declare const ANCHO_MODAL_HERRAMIENTA = 337.7;
4
+ /** Ancho de la vista de resultados de "Consultar", más ancha para la tabla. */
5
+ export declare const ANCHO_MODAL_RESULTADOS_CONSULTA = 632;
6
+ /** Alto máximo de la vista de resultados de "Consultar" (px): la tabla hace scroll propio dentro. */
7
+ export declare const ALTO_MODAL_RESULTADOS_CONSULTA = 443;
8
+ /** Reserva inferior (px) para que la modal no tape la barra de herramientas. */
9
+ export declare const MARGEN_BARRA_HERRAMIENTAS = 110;
10
+ /** Contenedor flotante de la modal. */
11
+ export declare const CLASES_MODAL_HERRAMIENTA: string;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Clase raíz del visor: acota el reset y el tema de la librería (`estilos.css`)
3
+ * para no tocar el resto de la página anfitriona. La llevan la raíz del visor
4
+ * y cada portal a `document.body` (que queda fuera de esa raíz).
5
+ */
6
+ export declare const CLASE_RAIZ_MAPA = "core-isa-mapa";
@@ -0,0 +1,7 @@
1
+ /** Información general de la aplicación anfitriona del visor. */
2
+ export interface AplicacionInfo {
3
+ nombre: string;
4
+ descripcion: string;
5
+ /** Pares clave/valor libres que el backend adjunta a la aplicación. */
6
+ metadatos?: Record<string, unknown>;
7
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Estado de visibilidad/opacidad de servicios y subcapas en memoria. Es de
3
+ * presentación; lo comparten `useEstadosCapas` y `PanelCapas`.
4
+ */
5
+ export interface EstadosCapas {
6
+ /** Visibilidad por nombre de servicio. */
7
+ servicios: Record<string, boolean>;
8
+ /** Opacidad (0–1) por nombre de servicio. */
9
+ opacidades: Record<string, number>;
10
+ /** Opacidad por subcapa: `servicio -> identificadorCapa -> opacidad`. */
11
+ opacidadesCapas?: Record<string, Record<string, number>>;
12
+ /** Visibilidad de subcapas: `servicio -> identificadorCapa -> visible`. */
13
+ capas: Record<string, Record<string, boolean>>;
14
+ }
@@ -0,0 +1,14 @@
1
+ import type { AplicacionInfo } from "./aplicacion.types";
2
+ import type { ItemGaleriaMapas } from "./galeria.types";
3
+ import type { DefinicionMapa } from "./mapa.types";
4
+ import type { GrupoServicios } from "./servicio.types";
5
+ /**
6
+ * Contrato completo entregado por el backend para configurar el visor.
7
+ * Corresponde 1:1 con el JSON acordado con el backend `.NET`.
8
+ */
9
+ export interface ConfiguracionAplicacion {
10
+ aplicacion: AplicacionInfo;
11
+ mapas: DefinicionMapa[];
12
+ galeriaMapas: ItemGaleriaMapas[];
13
+ gruposServicios: GrupoServicios[];
14
+ }
@@ -0,0 +1,57 @@
1
+ import type Extent from "@arcgis/core/geometry/Extent";
2
+ import type Graphic from "@arcgis/core/Graphic";
3
+ import type { CapaServicio, ServicioGis } from "./servicio.types";
4
+ /** Capa activa (visible) que puede consultarse por atributos. */
5
+ export interface CapaConsultable {
6
+ servicio: ServicioGis;
7
+ capa: CapaServicio;
8
+ }
9
+ /** Tipo general de un campo consultable: decide cómo se arma su filtro. */
10
+ export type TipoCampoConsulta = "texto" | "numero" | "fecha" | "otro";
11
+ /** Campo consultable de una capa, descubierto desde el servicio en vivo. */
12
+ export interface CampoConsulta {
13
+ /** Nombre real del campo, tal como lo espera el `where`/`CQL_FILTER`. */
14
+ nombre: string;
15
+ /** Texto a mostrar en el combo de campos. */
16
+ alias: string;
17
+ tipo: TipoCampoConsulta;
18
+ }
19
+ /** Operadores del filtro por atributos (campo + operador + valor). */
20
+ export type OperadorBasico = "=" | "<>" | ">" | "<" | ">=" | "<=" | "LIKE";
21
+ /** Filtro armado por el usuario en el formulario de consulta. */
22
+ export type FiltroConsulta = {
23
+ modo: "basica";
24
+ campo: string;
25
+ operador: OperadorBasico;
26
+ valor: string;
27
+ };
28
+ /** Resultado de ejecutar una consulta por atributos sobre una capa. */
29
+ export interface ResultadoConsultaCapa {
30
+ campos: CampoConsulta[];
31
+ /** Un `Graphic` por entidad encontrada, venga de ArcGIS REST o de WFS. */
32
+ graficos: Graphic[];
33
+ extent: Extent | null;
34
+ /** Entidades traídas (no el total del servidor); con `incompleto`, se avisa del recorte. */
35
+ filasDevueltas: number;
36
+ /** El servidor recortó el resultado por el tope de filas de la consulta. */
37
+ incompleto: boolean;
38
+ }
39
+ /** Valores distintos de un campo, para el combo buscable de "Valores". */
40
+ export interface ValoresDistintosCampo {
41
+ valores: string[];
42
+ /** No se trajeron todos los valores reales (tope alcanzado). */
43
+ truncado: boolean;
44
+ }
45
+ /** Clave estable de una capa consultable ("servicio::identificador"). */
46
+ export type ClaveCapaConsultable = string;
47
+ /** Un resultado ya obtenido, ligado a la capa que lo produjo. */
48
+ export interface ResultadoConsultaCapaEntrada {
49
+ clave: ClaveCapaConsultable;
50
+ capa: CapaConsultable;
51
+ resultado: ResultadoConsultaCapa;
52
+ }
53
+ /** Resultados por capa (una pestaña por entrada, ej. Línea y Torre a la vez) y cuál está activa. */
54
+ export interface ResultadosConsultaCapas {
55
+ entradas: ResultadoConsultaCapaEntrada[];
56
+ activa: ClaveCapaConsultable | null;
57
+ }
@@ -0,0 +1,7 @@
1
+ /** Mapa base disponible para el selector de la galería. */
2
+ export interface ItemGaleriaMapas {
3
+ /** Código ArcGIS (p. ej. `streets-vector`, `osm`). */
4
+ codigo: string;
5
+ nombre: string;
6
+ descripcion: string;
7
+ }
@@ -0,0 +1,20 @@
1
+ /** Códigos de herramienta soportados; los demás se ocultan hasta tener implementación. */
2
+ export type CodigoHerramienta = "home" | "zoom-in" | "zoom-out" | "identify" | "get-coordinates" | "project" | "query" | "measure-distance" | "measure-area" | "clear" | "layer" | "three-dimensional" | "measurement-tools" | "base-map" | "metadata";
3
+ /** `"ACCION"`: se ejecuta al clic. `"HERRAMIENTA"`: activa un modo interactivo. */
4
+ export type TipoInteraccion = "ACCION" | "HERRAMIENTA";
5
+ /** Parámetros de una herramienta en `configuracion` (hoy solo `delta` de zoom). */
6
+ export interface ConfiguracionHerramienta {
7
+ /** Salto de niveles de zoom para `zoom-in` / `zoom-out`. */
8
+ delta?: number;
9
+ }
10
+ /** Definición de herramienta entregada por el backend en `mapas[].herramientas`. */
11
+ export interface HerramientaMapa {
12
+ codigo: string;
13
+ nombre: string;
14
+ descripcion: string;
15
+ rutaIcono: string;
16
+ tipoInteraccion: TipoInteraccion;
17
+ configuracion: ConfiguracionHerramienta;
18
+ /** Sub-herramientas agrupadas (ej: measurement-tools → measure-distance, measure-area). */
19
+ hijos?: readonly HerramientaMapa[];
20
+ }
@@ -0,0 +1,11 @@
1
+ export * from "./aplicacion.types";
2
+ export * from "./capas.types";
3
+ export * from "./configuracion-aplicacion.types";
4
+ export * from "./consulta.types";
5
+ export * from "./galeria.types";
6
+ export * from "./herramienta.types";
7
+ export * from "./leyenda.types";
8
+ export * from "./mapa.types";
9
+ export * from "./parametros-generales.types";
10
+ export * from "./responsive.types";
11
+ export * from "./servicio.types";
@@ -0,0 +1,10 @@
1
+ /** Ítem de leyenda: `imagen` (REST `/legend` o `GetLegendGraphic`) o `simbolo` (renderer). */
2
+ export type ItemLeyenda = {
3
+ tipo: "imagen";
4
+ etiqueta: string;
5
+ src: string;
6
+ } | {
7
+ tipo: "simbolo";
8
+ etiqueta: string;
9
+ elemento: HTMLElement;
10
+ };