@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,51 @@
1
+ interface PropsIcono {
2
+ className?: string;
3
+ }
4
+ interface PropsIconoHerramienta extends PropsIcono {
5
+ codigo: string;
6
+ /** Ícono real de la herramienta (`herramienta.rutaIcono` del contrato). */
7
+ rutaIcono?: string;
8
+ /** Estado activo (hoy solo `three-dimensional` cambia de ícono). */
9
+ activo?: boolean;
10
+ }
11
+ /** Ícono de una herramienta: `rutaIcono` del backend, el propio de `assets/icons` o uno genérico. */
12
+ export declare function IconoHerramienta({ codigo, rutaIcono, activo, className, }: PropsIconoHerramienta): import("react").JSX.Element;
13
+ /** Aspa (X): cerrar paneles y modales. */
14
+ export declare function IconoCerrar({ className }: PropsIcono): import("react").JSX.Element;
15
+ /** Círculo con "i": ilustra el aviso de una modal de alerta. */
16
+ export declare function IconoAlerta({ className }: PropsIcono): import("react").JSX.Element;
17
+ /** Flechas circulares: restablece la medición en curso. */
18
+ export declare function IconoRestablecerMedida({ className }: PropsIcono): import("react").JSX.Element;
19
+ /** Flechas verticales opuestas: intercambia origen y destino. */
20
+ export declare function IconoIntercambiar({ className }: PropsIcono): import("react").JSX.Element;
21
+ /** Pin de ubicación: marca en el mapa el punto de coordenadas escrito. */
22
+ export declare function IconoMarcarPunto({ className }: PropsIcono): import("react").JSX.Element;
23
+ /** Barra tenue: asa para arrastrar una modal. */
24
+ export declare function IconoArrastrar({ className }: PropsIcono): import("react").JSX.Element;
25
+ /** Flecha hacia la izquierda: volver a la vista anterior. */
26
+ export declare function IconoRegresar({ className }: PropsIcono): import("react").JSX.Element;
27
+ /** Tabla con lupa: vuelve a ver la tabla de resultados sin repetir la búsqueda. */
28
+ export declare function IconoVerTabla({ className }: PropsIcono): import("react").JSX.Element;
29
+ /** Lupa con "+": encuadra el mapa a la extensión de la capa. */
30
+ export declare function IconoZoomALaCapa({ className }: PropsIcono): import("react").JSX.Element;
31
+ /** Flecha hacia una bandeja: descarga en GeoJSON lo visible de la capa. */
32
+ export declare function IconoDescargar({ className }: PropsIcono): import("react").JSX.Element;
33
+ /** Dos rectángulos superpuestos: copia un valor al portapapeles. */
34
+ export declare function IconoCopiar({ className }: PropsIcono): import("react").JSX.Element;
35
+ /** Palomita: confirma que el valor ya se copió al portapapeles. */
36
+ export declare function IconoCopiado({ className }: PropsIcono): import("react").JSX.Element;
37
+ /** Lupa: filtro de texto de un combo buscable. */
38
+ export declare function IconoBuscar({ className }: PropsIcono): import("react").JSX.Element;
39
+ /** Flecha "v": indicador de submenú desplegable. */
40
+ export declare function IconoChevron({ className }: PropsIcono): import("react").JSX.Element;
41
+ /** Bombillo con rayos: ícono del control de opacidad de las capas. */
42
+ export declare function IconoOpacidad({ className }: PropsIcono): import("react").JSX.Element;
43
+ /** Controles deslizantes: opciones de un servicio o capa. */
44
+ export declare function IconoOpcionesCapa({ className }: PropsIcono): import("react").JSX.Element;
45
+ /** Documento con líneas: fuente de información del servicio. */
46
+ export declare function IconoFuenteInformacion({ className }: PropsIcono): import("react").JSX.Element;
47
+ /** Ojo verde: indica que la capa está visible (activa). */
48
+ export declare function IconoOjo({ className }: PropsIcono): import("react").JSX.Element;
49
+ /** Ojo tachado: indica que la capa está oculta. */
50
+ export declare function IconoOjoTachado({ className }: PropsIcono): import("react").JSX.Element;
51
+ export {};
@@ -0,0 +1,32 @@
1
+ import type { ReactNode } from "react";
2
+ /**
3
+ * Aviso mostrado al usuario: informativo (un solo botón) o, con `alConfirmar`,
4
+ * de confirmación (dos botones, "No"/"Sí").
5
+ */
6
+ export interface Alerta {
7
+ /** Identificador interno para quitarla de la cola. */
8
+ id: string;
9
+ /** Título breve de la cabecera. */
10
+ titulo: string;
11
+ /** Cuerpo del aviso; acepta ReactNode para resaltar parte del texto. */
12
+ mensaje: ReactNode;
13
+ /** Texto del botón principal. Por defecto "Entendido", o "Sí" en modo confirmación. */
14
+ textoBoton?: string;
15
+ /** Solo en modo confirmación: texto del botón secundario. Por defecto "No". */
16
+ textoCancelar?: string;
17
+ /** Con manejador, el aviso pasa a modo confirmación. Se llama al elegir el botón principal. */
18
+ alConfirmar?: () => void;
19
+ /** Solo en confirmación: se llama al declinar, antes de quitar el aviso. */
20
+ alCancelar?: () => void;
21
+ }
22
+ /** API para mostrar y cerrar avisos desde cualquier parte del árbol. */
23
+ export interface ContextoAlertasValor {
24
+ /** Encola un aviso; ignora los repetidos (mismo `titulo` ya en cola). */
25
+ mostrar: (alerta: Omit<Alerta, "id">) => void;
26
+ /** Quita de la cola el aviso con ese `id`. */
27
+ cerrar: (id: string) => void;
28
+ }
29
+ /** Estado de los avisos compartido en el árbol de la app. */
30
+ export declare const ContextoAlertas: import("react").Context<ContextoAlertasValor | null>;
31
+ /** Accede a la API de avisos; debe usarse dentro de <ProveedorAlertas>. */
32
+ export declare function useAlerta(): ContextoAlertasValor;
@@ -0,0 +1,6 @@
1
+ import type { RecursoAsync } from "../../../shared/hooks/useRecursoAsync";
2
+ import type { ConfiguracionAplicacion } from "../types";
3
+ /** Estado de la configuración compartida en el árbol de la app. */
4
+ export declare const ContextoConfiguracion: import("react").Context<RecursoAsync<ConfiguracionAplicacion> | null>;
5
+ /** Accede a la configuración cargada; debe usarse dentro de <ProveedorConfiguracion>. */
6
+ export declare function useConfiguracionAplicacion(): RecursoAsync<ConfiguracionAplicacion>;
@@ -0,0 +1,11 @@
1
+ import type { VistaMapa } from "../types";
2
+ /** Coordenadas geográficas (longitud/latitud). */
3
+ export interface CoordenadasPuntero {
4
+ longitud: number;
5
+ latitud: number;
6
+ }
7
+ /**
8
+ * Coordenadas geográficas bajo el puntero (conserva la última al salir del mapa).
9
+ * Se calcula una vez por `requestAnimationFrame` y solo si cambió.
10
+ */
11
+ export declare function useCoordenadasPuntero(vista: VistaMapa | null): CoordenadasPuntero | null;
@@ -0,0 +1,4 @@
1
+ import type { VistaMapa } from "../types";
2
+ import type { CoordenadasPuntero } from "./useCoordenadasPuntero";
3
+ /** Coordenadas WGS84 del último clic mientras `activa`, con un punto de referencia. */
4
+ export declare function useCoordenadasSeleccion(vista: VistaMapa | null, activa: boolean): CoordenadasPuntero | null;
@@ -0,0 +1,10 @@
1
+ import { type PointerEvent } from "react";
2
+ /**
3
+ * Orden de apilamiento de las superficies por `z-index`, con contadores separados
4
+ * para ancladas y flotantes. `raizRef` va en el contenedor.
5
+ */
6
+ export declare function useElevarSuperficies<Elemento extends HTMLElement>(): {
7
+ raizRef: import("react").RefObject<Elemento | null>;
8
+ elevarModal: (evento: PointerEvent<HTMLElement>) => void;
9
+ elevarSuperficie: (clave: string) => void;
10
+ };
@@ -0,0 +1,16 @@
1
+ import type { GestorCapasMapa } from "../services/layers/gestor-capas";
2
+ import type { EstadosCapas, ServicioGis } from "../types";
3
+ /** Valor devuelto por `useEstadosCapas`. */
4
+ interface ControlEstadosCapas {
5
+ estados: EstadosCapas;
6
+ onCambioServicio: (nombre: string, visible: boolean) => void;
7
+ onCambioOpacidad: (nombre: string, opacidad: number) => void;
8
+ onCambioOpacidadCapa: (nombre: string, identificador: string, opacidad: number) => void;
9
+ onCambioCapa: (nombre: string, identificador: string, visible: boolean) => void;
10
+ }
11
+ /**
12
+ * Estado del panel de capas sincronizado con el gestor imperativo de ArcGIS:
13
+ * cada cambio actualiza React y aplica la operación sobre `gestorRef.current`.
14
+ */
15
+ export declare function useEstadosCapas(servicios: readonly ServicioGis[], gestorRef: React.RefObject<GestorCapasMapa | null>): ControlEstadosCapas;
16
+ export {};
@@ -0,0 +1,16 @@
1
+ import type { CapaServicio, ServicioGis, VistaMapa } from "../types";
2
+ import { GestorCapasMapa, type FalloServicio } from "../services/layers/gestor-capas";
3
+ /** Subcapas descubiertas en runtime, indexadas por nombre de servicio. */
4
+ export type CapasDescubiertas = ReadonlyMap<string, readonly CapaServicio[]>;
5
+ /** Valor devuelto por `useGestorCapas`. */
6
+ interface GestorCapas {
7
+ gestorRef: React.RefObject<GestorCapasMapa | null>;
8
+ /** Subcapas leídas de la metadata del servidor para servicios que no las declaran. */
9
+ capasDescubiertas: CapasDescubiertas;
10
+ }
11
+ /**
12
+ * Instancia el gestor de capas cuando la vista está lista y lo destruye al
13
+ * desmontar. Devuelve su ref y las subcapas descubiertas en runtime.
14
+ */
15
+ export declare function useGestorCapas(vista: VistaMapa | null, servicios: readonly ServicioGis[], reportarFallos?: (fallos: readonly FalloServicio[]) => void): GestorCapas;
16
+ export {};
@@ -0,0 +1,14 @@
1
+ import type { HerramientaMapa, VistaMapa } from "../types";
2
+ /** Valor devuelto por `useHerramientaActiva`. */
3
+ interface EstadoHerramienta {
4
+ codigoActivo: string | undefined;
5
+ codigoPadreActivo: string | undefined;
6
+ alternar: (codigo: string) => void;
7
+ alternarSubHerramienta: (subCodigo: string) => void;
8
+ }
9
+ /**
10
+ * Gestiona qué herramienta está activa y monta/desmonta su controlador de
11
+ * ArcGIS, reutilizándolo cuando solo cambia la sub-herramienta del mismo grupo.
12
+ */
13
+ export declare function useHerramientaActiva(vista: VistaMapa | null, herramientas: readonly HerramientaMapa[], obtenerContenedorUI: () => HTMLDivElement | null): EstadoHerramienta;
14
+ export {};
@@ -0,0 +1,53 @@
1
+ import { type KeyboardEvent } from "react";
2
+ /** Posición de un panel flotante, anclado por un solo borde (el otro va en `null`). */
3
+ export interface CajaPanel {
4
+ top: number | null;
5
+ bottom: number | null;
6
+ left: number;
7
+ width: number;
8
+ }
9
+ /** Configura `manejarTeclado` para lo que cada disparador tiene de propio. */
10
+ export interface AccionesTeclado {
11
+ /** Teclas extra (aparte de las flechas) que abren el panel estando cerrado. */
12
+ teclasQueAbren?: readonly string[];
13
+ /** Reemplaza `abrir()` al abrir por teclado (ej. para reiniciar un filtro). */
14
+ alAbrir?: () => void;
15
+ /** Enter (y Espacio, si `espacioConfirma`) con el panel abierto. */
16
+ onEnter: () => void;
17
+ /** Espacio también confirma como Enter; no usar si el disparador es un campo de texto. */
18
+ espacioConfirma?: boolean;
19
+ /** Reemplaza el cierre por defecto (`cerrar`) al presionar Escape. */
20
+ onEscape?: () => void;
21
+ /** Reemplaza el cierre por defecto (`cerrar`) al presionar Tab. */
22
+ onTab?: () => void;
23
+ /** Habilita Home/End para saltar a la primera/última opción. */
24
+ primeraUltima?: readonly [primero: number, ultimo: number];
25
+ }
26
+ /** Opciones de `useListbox`. */
27
+ interface OpcionesListbox {
28
+ /** Mide el disparador (getter en vez de `ref`: quien lo crea lo mide). */
29
+ medir: () => DOMRect | undefined;
30
+ /** Cuántas opciones tiene ahora la lista, para acotar el resaltado. */
31
+ total: number;
32
+ /** Opción a dejar resaltada al abrir (por defecto, la primera). */
33
+ indiceInicial?: number;
34
+ /** Se llama al cerrar sin elegir de la lista (permite confirmar texto escrito). */
35
+ alCerrar?: () => void;
36
+ }
37
+ /**
38
+ * Mecánica compartida de los selectores con listado en portal (`SelectorDesplegable`,
39
+ * `ComboBuscable`): posición del panel, resaltado y cierre. No sabe qué es una opción;
40
+ * los `ref` los posee quien monta el disparador y el panel.
41
+ */
42
+ export declare function useListbox(disparadorRef: React.RefObject<HTMLElement | null>, panelRef: React.RefObject<HTMLUListElement | null>, { medir, total, indiceInicial, alCerrar }: OpcionesListbox): {
43
+ abierto: boolean;
44
+ caja: CajaPanel | null;
45
+ indiceActivo: number;
46
+ abrir: (indice?: number) => void;
47
+ cerrar: () => void;
48
+ ocultar: () => void;
49
+ moverIndice: (salto: number) => void;
50
+ setIndiceActivo: import("react").Dispatch<import("react").SetStateAction<number>>;
51
+ manejarTeclado: (evento: KeyboardEvent<HTMLElement>, acciones: AccionesTeclado) => void;
52
+ };
53
+ export {};
@@ -0,0 +1,15 @@
1
+ import type Point from "@arcgis/core/geometry/Point";
2
+ import SimpleMarkerSymbol from "@arcgis/core/symbols/SimpleMarkerSymbol";
3
+ import type { VistaMapa } from "../types";
4
+ /** Símbolo del punto de referencia, compartido con `useCoordenadasSeleccion`. */
5
+ export declare const SIMBOLO_MARCADOR_PUNTO: SimpleMarkerSymbol;
6
+ /** Valor devuelto por `useMarcadorPunto`. */
7
+ interface MarcadorPunto {
8
+ /** Coloca (o mueve, si ya existe) el punto de referencia en `vista.graphics`. */
9
+ marcar: (punto: Point) => void;
10
+ /** Quita el punto de referencia de la vista. */
11
+ quitar: () => void;
12
+ }
13
+ /** Marca un único punto en la vista (lo añade una vez y luego lo mueve); se quita al desmontar. */
14
+ export declare function useMarcadorPunto(vista: VistaMapa): MarcadorPunto;
15
+ export {};
@@ -0,0 +1,33 @@
1
+ /** Punto en coordenadas del viewport. */
2
+ interface Posicion {
3
+ readonly x: number;
4
+ readonly y: number;
5
+ }
6
+ /** Parámetros de `useModalArrastrable`. */
7
+ interface OpcionesModalArrastrable {
8
+ /** Ancho fijo del elemento flotante (px). */
9
+ readonly ancho: number;
10
+ /** Alto estimado (px) hasta medir el real con `ref`. */
11
+ readonly alto: number;
12
+ /** Separación mínima con el borde de la ventana (px). Por defecto `8`. */
13
+ readonly margen?: number;
14
+ /** Reserva inferior (px) para no tapar la barra de herramientas. Por defecto, `margen`. */
15
+ readonly margenInferior?: number;
16
+ /** Reserva inferior usada solo al ubicar la modal por primera vez. */
17
+ readonly margenInferiorInicial?: number;
18
+ }
19
+ /** Valor devuelto por `useModalArrastrable`. */
20
+ interface ModalArrastrable {
21
+ /** Posición actual, siempre dentro de la ventana. */
22
+ readonly posicion: Posicion;
23
+ /** `onPointerDown` del asa de arrastre. */
24
+ readonly alArrastrar: (evento: React.PointerEvent<HTMLElement>) => void;
25
+ /** `ref` del contenedor: acota el arrastre con su alto real. */
26
+ readonly ref: (nodo: HTMLElement | null) => void;
27
+ }
28
+ /**
29
+ * Posiciona un elemento flotante y lo hace arrastrable sin salir de la ventana,
30
+ * con captura de puntero para que siga al cursor y no se quede pegado.
31
+ */
32
+ export declare function useModalArrastrable({ ancho, alto, margen, margenInferior, margenInferiorInicial, }: OpcionesModalArrastrable): ModalArrastrable;
33
+ export {};
@@ -0,0 +1,14 @@
1
+ /** Valor devuelto por `useModoResponsive`. */
2
+ interface ModoResponsive<T extends HTMLElement> {
3
+ /** `ref` callback a enlazar en el contenedor del mapa (normalmente su `<section>` raíz). */
4
+ readonly ref: (elemento: T | null) => void;
5
+ /** Ancho medido del contenedor (px), `null` hasta la primera medición. */
6
+ readonly ancho: number | null;
7
+ /** Alto medido del contenedor (px), `null` hasta la primera medición. */
8
+ readonly alto: number | null;
9
+ /** `true` si el contenedor es más angosto que el mínimo; sin medición, se asume escritorio. */
10
+ readonly responsive: boolean;
11
+ }
12
+ /** Modo de layout según el ancho del contenedor (no del viewport); expone también el alto. */
13
+ export declare function useModoResponsive<T extends HTMLElement>(): ModoResponsive<T>;
14
+ export {};
@@ -0,0 +1,10 @@
1
+ /** Valor devuelto por `usePanelesInferiores`. */
2
+ interface PanelesInferiores {
3
+ readonly panelCapasAbierto: boolean;
4
+ readonly panelBaseMapAbierto: boolean;
5
+ readonly togglePanelCapas: () => void;
6
+ readonly togglePanelBaseMap: () => void;
7
+ }
8
+ /** Paneles "Capas" y "Mapa base": independientes en escritorio, excluyentes en responsive. */
9
+ export declare function usePanelesInferiores(modoResponsive: boolean): PanelesInferiores;
10
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { ConfiguracionAplicacion } from "../types";
2
+ /** Renueva los tokens GIS antes de que venzan y devuelve la configuración actualizada. */
3
+ export declare function useRenovacionToken(datosBase: ConfiguracionAplicacion | undefined, cargar: () => Promise<ConfiguracionAplicacion>): ConfiguracionAplicacion | undefined;
@@ -0,0 +1,19 @@
1
+ import type Graphic from "@arcgis/core/Graphic";
2
+ import type { VistaMapa } from "../types";
3
+ /** Valor devuelto por `useResaltadoConsulta`. */
4
+ interface ResaltadoConsulta {
5
+ /** Reemplaza el resaltado de una clave de capa sin afectar el de las demás (ej. Línea y Torre a la vez). */
6
+ mostrarCapa: (clave: string, graficos: readonly Graphic[]) => void;
7
+ /** Quita del resaltado solo los clones de una clave (cerrar su pestaña). */
8
+ quitarCapa: (clave: string) => void;
9
+ /** Repinta todas las entidades resaltadas según qué filas están marcadas. */
10
+ sincronizarSeleccion: (seleccionados: ReadonlySet<Graphic>) => void;
11
+ /** Vacía el resaltado (acción "clear" o al cerrar los resultados). */
12
+ limpiar: () => void;
13
+ }
14
+ /**
15
+ * Capa de resaltado de Consultar en `vista.map` (no en `vista.graphics`, que usan
16
+ * otras herramientas). La selección vive en `MapaView`.
17
+ */
18
+ export declare function useResaltadoConsulta(vista: VistaMapa | null): ResaltadoConsulta;
19
+ export {};
@@ -0,0 +1,31 @@
1
+ import type Graphic from "@arcgis/core/Graphic";
2
+ import type { CapaConsultable, ResultadoConsultaCapa, ResultadosConsultaCapas, VistaMapa } from "../types";
3
+ import type { useResaltadoConsulta } from "./useResaltadoConsulta";
4
+ /** Valor devuelto por `useResultadosConsulta`. */
5
+ interface ResultadosConsulta {
6
+ resultados: ResultadosConsultaCapas;
7
+ /** Filas marcadas (checkbox) de la pestaña activa. Un único `Set` global
8
+ * (no uno por capa): los `Graphic` de capas distintas nunca son el mismo
9
+ * objeto, así que no hay ambigüedad. */
10
+ seleccionados: ReadonlySet<Graphic>;
11
+ /** Agrega o actualiza la pestaña de esa capa sin tocar las demás. */
12
+ onResultado: (resultado: ResultadoConsultaCapa, capa: CapaConsultable) => void;
13
+ /** Cierra una pestaña de resultados sin afectar las demás. */
14
+ onQuitarPestana: (clave: string) => void;
15
+ /** Cambia la pestaña activa y centra el mapa en esa capa. */
16
+ onCambiarPestana: (clave: string) => void;
17
+ /** Marca/desmarca una fila; acerca la vista a la entidad al marcarla. */
18
+ onAlternarFila: (grafico: Graphic) => void;
19
+ /** Lupa por fila: acerca la vista sin alterar la selección. */
20
+ onZoomFila: (grafico: Graphic) => void;
21
+ /** Checkbox "marcar todas" de la pestaña activa. */
22
+ onAlternarTodos: () => void;
23
+ /** Vacía todos los resultados, la selección y su resaltado en el mapa. */
24
+ limpiar: () => void;
25
+ }
26
+ /**
27
+ * Estado de "Consultar": una pestaña por capa, filas marcadas y resaltado. Vive en
28
+ * `MapaView` para sobrevivir al cierre del formulario.
29
+ */
30
+ export declare function useResultadosConsulta(vista: VistaMapa | null, resaltadoConsulta: ReturnType<typeof useResaltadoConsulta>): ResultadosConsulta;
31
+ export {};
@@ -0,0 +1,17 @@
1
+ import type { ConfiguracionVisualMapa, VistaMapa } from "../types";
2
+ /** Valor devuelto por `useVistaArcgis`. */
3
+ interface VistaArcgis {
4
+ contenedorRef: React.RefObject<HTMLDivElement | null>;
5
+ vista: VistaMapa | null;
6
+ /** Error de inicialización del mapa; `null` mientras carga o si tuvo éxito. */
7
+ error: Error | null;
8
+ cambiarBasemap: (codigo: string) => void;
9
+ /** Regresa el mapa al viewpoint con el que se inicializó. */
10
+ irAInicio: () => void;
11
+ }
12
+ /**
13
+ * Crea y destruye la vista de ArcGIS (`MapView` o `SceneView`, cargado en diferido),
14
+ * conservando el encuadre al alternar y aplicando el cambio de mapa base.
15
+ */
16
+ export declare function useVistaArcgis(configuracion: ConfiguracionVisualMapa | undefined, tridimensional: boolean): VistaArcgis;
17
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { PropsConHijos } from "../../../shared/types";
2
+ /** Cola de avisos que muestra el primero con `ModalAlerta`; se usa con `useAlerta().mostrar(...)`. */
3
+ export declare function ProveedorAlertas({ children }: PropsConHijos): import("react").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import type { PropsConHijos } from "../../../shared/types";
2
+ import { type ProveedorTokenAcceso } from "../services/configuracion-aplicacion";
3
+ interface ProveedorConfiguracionProps extends PropsConHijos {
4
+ /** Identifica la aplicación anfitriona ante el backend. */
5
+ clientId: string;
6
+ /** Emite el JWT del contrato frontend/backend para `clientId`. */
7
+ getAccessToken: ProveedorTokenAcceso;
8
+ }
9
+ /**
10
+ * Carga una única vez la configuración del visor y la expone al árbol.
11
+ * Es el único componente que conoce el servicio de configuración.
12
+ */
13
+ export declare function ProveedorConfiguracion({ children, clientId, getAccessToken, }: ProveedorConfiguracionProps): import("react").JSX.Element;
14
+ export {};
@@ -0,0 +1,10 @@
1
+ import type { ConfiguracionAplicacion } from "../types";
2
+ /** Entrega un JWT para `clientId` (demo: `firmarToken`; librería: controlador del anfitrión). */
3
+ export type ProveedorTokenAcceso = (clientId: string) => Promise<string>;
4
+ /** Devuelve el vencimiento más próximo de los tokens GIS (epoch ms). */
5
+ export declare function validateToken(configuracion: ConfiguracionAplicacion): number | undefined;
6
+ /**
7
+ * Obtiene la configuración del visor del backend (JWT Bearer) y normaliza tipos y
8
+ * URLs de servicios. Requiere `apiBaseUrl` en el entorno (`configurarEntorno`).
9
+ */
10
+ export declare function obtenerConfiguracionAplicacion(clientId: string, getAccessToken: ProveedorTokenAcceso): Promise<ConfiguracionAplicacion>;
@@ -0,0 +1,8 @@
1
+ import { type EntornoMapa } from "../../../shared/entorno";
2
+ export type { EntornoMapa } from "../../../shared/entorno";
3
+ export { obtenerEntorno } from "../../../shared/entorno";
4
+ /**
5
+ * Configura el visor en tiempo de ejecución: guarda la URL del backend y
6
+ * aplica al SDK de ArcGIS la API key y la ruta de assets, si vienen.
7
+ */
8
+ export declare function configurarEntorno(cambios: EntornoMapa): void;
@@ -0,0 +1,4 @@
1
+ /** Coordenadas geográficas en grados/minutos/segundos: `longitud / latitud`. */
2
+ export declare function formatearCoordenadas(longitud: number, latitud: number): string;
3
+ /** Un eje WGS84 (EPSG:4326) individual en grados decimales, p. ej. `4.570868°`. */
4
+ export declare function formatearGradosDecimales(valor: number, decimales?: number): string;
@@ -0,0 +1,8 @@
1
+ import type { ServicioGis } from "../../types";
2
+ import type { CapasServicioConstruidas } from "./types";
3
+ /** ARCGIS_MAP: un único MapImageLayer con subcapas opcionales. */
4
+ export declare function crearMapaImagen(servicio: ServicioGis): CapasServicioConstruidas;
5
+ /** ARCGIS_FEATURE: una FeatureLayer por cada capa configurada. */
6
+ export declare function crearFeatures(servicio: ServicioGis): CapasServicioConstruidas;
7
+ /** ARCGIS_TILE: exactamente una capa cacheada por servicio. */
8
+ export declare function crearTileCachedo(servicio: ServicioGis): CapasServicioConstruidas;
@@ -0,0 +1,20 @@
1
+ import type SpatialReference from "@arcgis/core/geometry/SpatialReference";
2
+ import type FeatureLayer from "@arcgis/core/layers/FeatureLayer";
3
+ import type { CampoConsulta, FiltroConsulta, ParametrosConsulta, ResultadoConsultaCapa, ValoresDistintosCampo } from "../../types";
4
+ /**
5
+ * Traduce el filtro a un `where` de ArcGIS REST: `LIKE` usa `UPPER(...) LIKE UPPER(...)`
6
+ * y los demás comillan el valor si el campo no es numérico.
7
+ */
8
+ export declare function armarWhereArcgis(filtro: FiltroConsulta, campos: readonly CampoConsulta[]): string;
9
+ /** Campos consultables de una `FeatureLayer` individual (`ARCGIS_FEATURE`). */
10
+ export declare function camposArcgisFeature(capa: FeatureLayer): Promise<CampoConsulta[]>;
11
+ /** Campos consultables de una subcapa de `MapImageLayer`, vía su metadata REST. */
12
+ export declare function camposArcgisRest(url: string, token?: string): Promise<CampoConsulta[]>;
13
+ /** Valores distintos de un campo (combo buscable de "Valores"), acotados a `topeValoresConsulta`. */
14
+ export declare function valoresDistintosArcgis(url: string, campo: string, parametros: ParametrosConsulta, token?: string): Promise<ValoresDistintosCampo>;
15
+ /** Resultado crudo de una consulta ArcGIS; `total` son las entidades devueltas. */
16
+ export type ResultadoConsultaArcgis = Omit<ResultadoConsultaCapa, "campos" | "filasDevueltas"> & {
17
+ total: number;
18
+ };
19
+ /** Ejecuta la consulta por atributos y resuelve, en paralelo, su extensión real. */
20
+ export declare function ejecutarConsultaArcgis(url: string, where: string, parametros: ParametrosConsulta, outSpatialReference?: SpatialReference, token?: string): Promise<ResultadoConsultaArcgis>;
@@ -0,0 +1,56 @@
1
+ import Extent from "@arcgis/core/geometry/Extent";
2
+ import type SpatialReference from "@arcgis/core/geometry/SpatialReference";
3
+ import type { CampoConsulta, FiltroConsulta, ItemLeyenda, ParametrosConsulta, ParametrosDescarga, ResultadoConsultaCapa, ServicioGis, ValoresDistintosCampo } from "../../types";
4
+ import { type ResultadoDescargaCapa } from "./descarga-capa";
5
+ import type { CapasServicioConstruidas } from "./types";
6
+ /**
7
+ * Operaciones sobre una capa activa ya construida (extent, descarga, leyenda,
8
+ * campos, valores y consulta). Separada de `GestorCapasMapa`, que maneja el ciclo
9
+ * de vida de las capas; mantiene sus propias cachés de solo lectura.
10
+ */
11
+ export declare class ConsultaCapaActiva {
12
+ private readonly capabilitiesWms;
13
+ private readonly legendCacheArcgis;
14
+ /**
15
+ * Extensión para "zoom a la capa", según el servicio:
16
+ * - FeatureServer: extensión real de las entidades.
17
+ * - Servicio de mapa ArcGIS: extensión real de la subcapa por su URL REST.
18
+ * - WMS: bbox de la capa en el GetCapabilities.
19
+ * Si nada aplica, usa la extensión del servicio; `null` si no hay ninguna.
20
+ */
21
+ extentDeCapa(servicio: ServicioGis, construidas: CapasServicioConstruidas, identificador: string, outSpatialReference?: SpatialReference): Promise<Extent | null>;
22
+ /**
23
+ * Descarga en GeoJSON los elementos de una subcapa dentro de `extent`: por
24
+ * `query` REST en ArcGIS o por WFS en GeoServer (puede lanzar
25
+ * `DescargaNoSoportadaError`). `parametros` son los límites y tiempos de BD.
26
+ */
27
+ descargarCapa(servicio: ServicioGis, construidas: CapasServicioConstruidas, identificador: string, extent: Extent, parametros: ParametrosDescarga,
28
+ /** Solo WFS: pregunta si continuar cuando el conteo previo indica una zona densa. */
29
+ onDescargaGrande?: (cantidad: number) => Promise<boolean>): Promise<ResultadoDescargaCapa>;
30
+ /**
31
+ * Leyenda de una capa activa (`/legend` REST, `renderer` o `GetLegendGraphic`).
32
+ * `[]` si no hay mecanismo o falla. `etiquetaCapa` es el texto de respaldo.
33
+ * Con `identificador` vacío arma la leyenda del servicio completo.
34
+ */
35
+ leyendaDeCapa(servicio: ServicioGis, construidas: CapasServicioConstruidas, identificador: string, etiquetaCapa: string): Promise<ItemLeyenda[]>;
36
+ /**
37
+ * Campos consultables de una capa activa (`fields`, metadata REST o
38
+ * `DescribeFeatureType`). `[]` si no hay mecanismo o falla.
39
+ */
40
+ camposDeCapa(servicio: ServicioGis, construidas: CapasServicioConstruidas, identificador: string): Promise<CampoConsulta[]>;
41
+ /** Valores distintos de un campo de una capa activa, acotados a los topes de BD. */
42
+ valoresDistintosDeCampo(servicio: ServicioGis, construidas: CapasServicioConstruidas, identificador: string, campo: string, parametros: ParametrosConsulta): Promise<ValoresDistintosCampo>;
43
+ /**
44
+ * Ejecuta una consulta por atributos y devuelve entidades, extensión y si el
45
+ * servidor recortó el resultado. El filtro va como `where` o `CQL_FILTER` (WFS).
46
+ */
47
+ ejecutarConsulta(servicio: ServicioGis, construidas: CapasServicioConstruidas, identificador: string, filtro: FiltroConsulta, parametros: ParametrosConsulta, outSpatialReference?: SpatialReference): Promise<ResultadoConsultaCapa>;
48
+ /** GetCapabilities WMS parseado y cacheado por URL (también los fallos). `null` si falla. */
49
+ private capabilitiesWmsDe;
50
+ /** Resuelve cómo hablarle a una subcapa (ver `MecanismoCapa`). */
51
+ private mecanismoDe;
52
+ /** Purga las cachés del servicio al cambiar la credencial. */
53
+ invalidarCache(urlServicio: string): void;
54
+ /** Vacía ambas cachés (al retirar todas las capas administradas). */
55
+ limpiarCache(): void;
56
+ }
@@ -0,0 +1,20 @@
1
+ import type { CampoConsulta, FiltroConsulta, ParametrosConsulta, ResultadoConsultaCapa, ServicioGis, ValoresDistintosCampo } from "../../types";
2
+ /**
3
+ * Traduce el filtro a `CQL_FILTER`: `LIKE` usa `ILIKE` (sin distinguir mayúsculas);
4
+ * los demás comillan el valor si el campo no es numérico.
5
+ */
6
+ export declare function armarCqlGeoserver(filtro: FiltroConsulta, campos: readonly CampoConsulta[]): string;
7
+ /** Campos consultables de una capa WFS vía `DescribeFeatureType` (GeoServer WFS 2.0). */
8
+ export declare function describeFeatureTypeWfs(servicio: ServicioGis, identificador: string): Promise<CampoConsulta[]>;
9
+ /**
10
+ * Valores distintos de un campo vía `GetFeature` sin geometría, deduplicados en
11
+ * cliente (WFS no tiene `DISTINCT`); pueden quedar incompletos si se trunca.
12
+ * Se piden `topeCrudoValoresWfs` entidades y se muestran hasta `topeValoresConsulta`.
13
+ */
14
+ export declare function valoresDistintosWfs(servicio: ServicioGis, identificador: string, campo: string, parametros: ParametrosConsulta): Promise<ValoresDistintosCampo>;
15
+ /** Resultado crudo de una consulta WFS; `total` son las entidades devueltas. */
16
+ export type ResultadoConsultaWfs = Omit<ResultadoConsultaCapa, "campos" | "filasDevueltas"> & {
17
+ total: number;
18
+ };
19
+ /** Consulta por atributos vía `GetFeature` con `CQL_FILTER`; la salida va en WGS84. */
20
+ export declare function ejecutarConsultaWfs(servicio: ServicioGis, identificador: string, cqlFilter: string, parametros: ParametrosConsulta): Promise<ResultadoConsultaWfs>;
@@ -0,0 +1,5 @@
1
+ import type { CampoConsulta, FiltroConsulta } from "../../types";
2
+ /** Traduce el filtro al lenguaje del backend; solo cambia el operador `LIKE`. */
3
+ export declare function armarFiltro(filtro: FiltroConsulta, campos: readonly CampoConsulta[],
4
+ /** Expresión para el operador `LIKE`. */
5
+ like: (campo: string, valor: string) => string): string;
@@ -0,0 +1,46 @@
1
+ import type Extent from "@arcgis/core/geometry/Extent";
2
+ import type { ParametrosDescarga, ServicioGis } from "../../types";
3
+ /** Colección GeoJSON mínima que produce este módulo. */
4
+ export interface ColeccionGeoJson {
5
+ readonly type: "FeatureCollection";
6
+ readonly features: readonly Record<string, unknown>[];
7
+ readonly [clave: string]: unknown;
8
+ }
9
+ /** Resultado de descargar una capa: el GeoJSON y si se recortó por el límite. */
10
+ export interface ResultadoDescargaCapa {
11
+ readonly geojson: ColeccionGeoJson;
12
+ readonly incompleta: boolean;
13
+ }
14
+ /** El servicio no admite descargar sus datos (p. ej. WMS sin WFS habilitado). */
15
+ export declare class DescargaNoSoportadaError extends Error {
16
+ }
17
+ /** La descarga WFS superó `tiempoEsperaDescargaWfsMs` y se canceló. */
18
+ export declare class DescargaDemasiadoLentaError extends Error {
19
+ /** Tope de espera que se superó (ms), para informarlo al usuario. */
20
+ readonly tiempoMaximoMs: number;
21
+ constructor(mensaje: string, tiempoMaximoMs: number);
22
+ }
23
+ /** Falló la descarga WFS y el conteo supera el umbral: probablemente fue rechazada por pesada. */
24
+ export declare class DescargaMuyPesadaError extends Error {
25
+ }
26
+ /** El usuario no confirmó tras el aviso de descarga grande y se abortó la descarga WFS. */
27
+ export declare class DescargaCanceladaError extends Error {
28
+ }
29
+ /**
30
+ * Descarga por `query` REST (ArcGIS) los elementos dentro de `extent` en GeoJSON
31
+ * (WGS84). Sirve para `FeatureLayer` y subcapas de `MapImageLayer`. Pagina con
32
+ * `resultOffset` avanzando según lo recibido, no lo pedido, para no dejar huecos.
33
+ */
34
+ export declare function descargarCapaArcgisRest(url: string, extent: Extent, parametros: ParametrosDescarga, token?: string): Promise<ResultadoDescargaCapa>;
35
+ /**
36
+ * Descarga por WFS `GetFeature` (GeoServer) los elementos dentro de `extent`.
37
+ * En paralelo cuenta las entidades y, si superan `umbralAvisoDescargaWfs`,
38
+ * pregunta vía `onDescargaGrande` si continuar. Errores:
39
+ * - `DescargaCanceladaError`: el usuario no quiso continuar.
40
+ * - `DescargaDemasiadoLentaError`: se superó `tiempoEsperaDescargaWfsMs`.
41
+ * - `DescargaMuyPesadaError`: falló y el conteo supera el umbral.
42
+ * - `DescargaNoSoportadaError`: cualquier otra falla (p. ej. WMS sin WFS).
43
+ */
44
+ export declare function descargarCapaWfs(servicio: ServicioGis, identificador: string, extent: Extent, parametros: ParametrosDescarga,
45
+ /** Se llama si el conteo supera el umbral; resuelve si continuar (sin manejador, sí). */
46
+ onDescargaGrande?: (cantidad: number) => Promise<boolean>): Promise<ResultadoDescargaCapa>;
@@ -0,0 +1,2 @@
1
+ /** Convierte un fallo técnico de carga en el mensaje visible del servicio. */
2
+ export declare function mensajeErrorServicio(fallo: unknown): string;
@@ -0,0 +1,5 @@
1
+ /** Utilidades de GeoServer/WFS compartidas por la descarga y la consulta de capas. */
2
+ /** Endpoint WFS de un servicio: `.../wms` pasa a `.../ows` (despachador genérico); lo demás no se toca. */
3
+ export declare function endpointWfsDe(urlServicio: string): string;
4
+ /** Parámetros comunes de una petición WFS (versión, protocolo y token) más su `complemento`. */
5
+ export declare function parametrosWfs(complemento: Record<string, unknown>, token?: string): Record<string, unknown>;