@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,33 @@
1
+ import type { MapViewOrSceneView } from "@arcgis/core/views/MapViewOrSceneView";
2
+ import type { HerramientaMapa } from "./herramienta.types";
3
+ /** Vista de ArcGIS sobre la que opera el visor: 2D (`MapView`) o 3D (`SceneView`). */
4
+ export type VistaMapa = MapViewOrSceneView;
5
+ /**
6
+ * Nombres reservados que el backend usa para distinguir el modo de
7
+ * presentación del mapa dentro de `mapas[]`.
8
+ */
9
+ export declare const MODO_MAPA: {
10
+ readonly pantallaCompleta: "FULLSCREEN";
11
+ readonly integrado: "EMBEDDED";
12
+ };
13
+ /** Modo de presentación del mapa (`"FULLSCREEN"` o `"EMBEDDED"`). */
14
+ export type ModoMapa = (typeof MODO_MAPA)[keyof typeof MODO_MAPA];
15
+ /** Configuración visual inicial de un mapa. */
16
+ export interface ConfiguracionVisualMapa {
17
+ zoom: number;
18
+ width: string;
19
+ /** [longitud, latitud] */
20
+ center: [number, number];
21
+ height: string;
22
+ /** Código dentro de `galeriaMapas`. */
23
+ basemap: string;
24
+ }
25
+ /** Una instancia de mapa publicada por el backend. */
26
+ export interface DefinicionMapa {
27
+ nombre: string;
28
+ descripcion: string;
29
+ configuracion: ConfiguracionVisualMapa;
30
+ herramientas: HerramientaMapa[];
31
+ }
32
+ /** Localiza la definición de un mapa por su nombre de modo. */
33
+ export declare function buscarDefinicionPorModo(mapas: readonly DefinicionMapa[], modo: ModoMapa): DefinicionMapa | undefined;
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Parámetros generales que publica el backend en `consultar-parametros-generales`
3
+ * (tabla `adm_parametros`), agrupados por herramienta: `{ descarga: {...}, consulta: {...}, ... }`.
4
+ * Se cambian en BD sin redesplegar; no tienen valores por defecto en el front.
5
+ */
6
+ /** Grupos del JSON de parámetros generales; cada herramienta lee solo el suyo. */
7
+ export type GrupoParametros = "descarga" | "consulta" | "identificar" | "proyeccion";
8
+ /** Grupo `descarga`: límites y tiempos de la herramienta Descargar. */
9
+ export interface ParametrosDescarga {
10
+ /** EPSG con el que se pide la descarga WFS cuando el extent no trae uno que GeoServer reconozca. */
11
+ readonly wkid: number;
12
+ /** Tope de entidades por descarga (ArcGIS y GeoServer); lo que sobre se recorta y se avisa. */
13
+ readonly limiteGeoJson: number;
14
+ /** ArcGIS: tamaño de página inicial (`resultRecordCount`). */
15
+ readonly tamanoPaginaDescarga: number;
16
+ /** ArcGIS: piso al achicar la página tras fallas; por debajo se cede. */
17
+ readonly tamanoPaginaMinimoDescarga: number;
18
+ /** ArcGIS: reintentos al mismo tamaño de página antes de achicarla. */
19
+ readonly reintentosPaginaDescarga: number;
20
+ /** ArcGIS: tiempo de espera de cada página (ms). */
21
+ readonly timeoutPaginaDescargaMs: number;
22
+ /** ArcGIS: tope de tiempo de toda la descarga (ms). */
23
+ readonly tiempoMaximoDescargaMs: number;
24
+ /** GeoServer: a partir de esta cantidad de entidades se pide confirmar la descarga. */
25
+ readonly umbralAvisoDescargaWfs: number;
26
+ /** GeoServer: tope de espera de la descarga WFS (ms). */
27
+ readonly tiempoEsperaDescargaWfsMs: number;
28
+ /** GeoServer: tope de espera del conteo previo `resultType=hits` (ms). */
29
+ readonly tiempoEsperaConteoWfsMs: number;
30
+ }
31
+ /** Grupo `consulta`: topes de la consulta por atributos. */
32
+ export interface ParametrosConsulta {
33
+ /** Máximo de valores distintos en el combo "Valores". */
34
+ readonly topeValoresConsulta: number;
35
+ /** Máximo de filas que trae la ejecución de una consulta. */
36
+ readonly topeFilasConsulta: number;
37
+ /** GeoServer: entidades crudas que se piden para deducir los valores distintos en cliente. */
38
+ readonly topeCrudoValoresWfs: number;
39
+ }
40
+ /** Grupo `identificar`: búsqueda al hacer clic con la herramienta Identificar. */
41
+ export interface ParametrosIdentificar {
42
+ /** ArcGIS: radio de búsqueda alrededor del clic, en píxeles. */
43
+ readonly toleranciaIdentificarPx: number;
44
+ /** Máximo de entidades a mostrar por capa (también `FEATURE_COUNT` en GeoServer). */
45
+ readonly maxEntidadesIdentificar: number;
46
+ }
47
+ /** Grupo `proyeccion`: comportamiento de la herramienta Proyectar. */
48
+ export interface ParametrosProyeccion {
49
+ /** Escala a la que se acerca al marcar un punto; si ya estaba más cerca, solo recentra. */
50
+ readonly escalaZoomMarcador: number;
51
+ }
@@ -0,0 +1,6 @@
1
+ import type { CodigoHerramienta } from "./herramienta.types";
2
+ /**
3
+ * Herramientas cuyo panel, en modo responsive, comparte una única hoja
4
+ * inferior: abrir una cierra la otra (ver `usePanelesInferiores`).
5
+ */
6
+ export type CodigoPanelInferior = Extract<CodigoHerramienta, "layer" | "base-map">;
@@ -0,0 +1,63 @@
1
+ /** Plataformas GIS que el backend puede publicar. */
2
+ export type PlataformaGis = "ARCGIS" | "GEOSERVER";
3
+ /**
4
+ * Tipos de servicio soportados por el contrato.
5
+ * El registro de capas es exhaustivo sobre esta unión.
6
+ */
7
+ export type TipoServicioGis = "ARCGIS_MAP" | "ARCGIS_FEATURE" | "ARCGIS_TILE" | "OGC_WMS" | "OGC_WMTS" | "OGC_WFS" | "OGC_API_FEATURES";
8
+ /** Mecanismo de autenticación con el que se consume un servicio. */
9
+ export type TipoAutenticacionGis = "TOKEN" | "BASIC" | "NINGUNA";
10
+ /** Nivel de acceso concedido sobre un servicio. */
11
+ export type NivelAccesoGis = "LECTURA" | "ESCRITURA";
12
+ /** Subcapa declarada en el contrato o descubierta desde el proveedor GIS. */
13
+ export interface CapaServicio {
14
+ titulo: string;
15
+ visible: boolean;
16
+ /** Opacidad propia; si no viene, hereda la del servicio. */
17
+ opacidad?: number;
18
+ /** Escala más alejada y más cercana permitidas; `0` significa sin límite. */
19
+ minScale?: number;
20
+ maxScale?: number;
21
+ /** Entero no negativo (ArcGIS) o texto (OGC); siempre `string` en el front. */
22
+ identificador: string;
23
+ }
24
+ /** Configuración de las capas declaradas por un servicio GIS. */
25
+ export interface ConfiguracionCapas {
26
+ /** Opcional: servicios sin subcapas solo se controlan a nivel de servicio. */
27
+ capas?: CapaServicio[];
28
+ [clave: string]: unknown;
29
+ }
30
+ /** Un servicio GIS publicado por el backend para la aplicación. */
31
+ export interface ServicioGis {
32
+ nombre: string;
33
+ descripcion: string;
34
+ plataformaGis: PlataformaGis;
35
+ tipoServicio: TipoServicioGis;
36
+ tipoAutenticacion: TipoAutenticacionGis;
37
+ nivelAcceso: NivelAccesoGis;
38
+ /**
39
+ * URL directa del proveedor o, cuando la autenticación la maneja el
40
+ * backend (p. ej. WMS Basic), la URL de proxy lista para consumir.
41
+ */
42
+ url: string;
43
+ configuracionServicio: Record<string, unknown>;
44
+ configuracionCapas: ConfiguracionCapas;
45
+ orden: number;
46
+ visible: boolean;
47
+ opacidad: number;
48
+ metadatos: Record<string, unknown>;
49
+ /** Credencial temporal ArcGIS o del proxy GeoServer. */
50
+ token?: string;
51
+ /** Vigencia del token en epoch milisegundos. */
52
+ expires?: number;
53
+ ssl?: boolean;
54
+ }
55
+ /** Grupo ordenado de servicios GIS publicado por el backend. */
56
+ export interface GrupoServicios {
57
+ nombre: string;
58
+ descripcion: string;
59
+ orden: number;
60
+ servicios: ServicioGis[];
61
+ }
62
+ /** Aplana los grupos respetando el orden declarado por el backend. */
63
+ export declare function aplanarServicios(grupos: readonly GrupoServicios[]): ServicioGis[];
@@ -0,0 +1,2 @@
1
+ /** URL de la miniatura del mapa base `codigo`; `undefined` si no tiene imagen. */
2
+ export declare function imagenBasemap(codigo: string): string | undefined;
@@ -0,0 +1,6 @@
1
+ import type { CapaConsultable, EstadosCapas, ServicioGis } from "../types";
2
+ /**
3
+ * Capas visibles consultables por atributos (combo "Capas" de Consultar). Exige
4
+ * servicio activo e `identificador`.
5
+ */
6
+ export declare function capasActivasConsultables(servicios: readonly ServicioGis[], estados: EstadosCapas): CapaConsultable[];
@@ -0,0 +1,6 @@
1
+ import type { HerramientaMapa } from "../types";
2
+ /**
3
+ * Herramientas de la barra genérica: sin 3D, mapa base ni metadata (van aparte),
4
+ * sin medición en 3D y, en responsive, solo `CODIGOS_BARRA_RESPONSIVE`.
5
+ */
6
+ export declare function filtrarHerramientasBarra(herramientas: readonly HerramientaMapa[], tridimensional: boolean, modoResponsive: boolean): HerramientaMapa[];
@@ -0,0 +1,5 @@
1
+ import type { CapaConsultable, ClaveCapaConsultable } from "../types";
2
+ /** Clave estable de una capa consultable (pestañas de resultados, combo "Capas" de Consultar). */
3
+ export declare function claveCapaConsultable(item: CapaConsultable): ClaveCapaConsultable;
4
+ /** Factor de escala de la interfaz según el ancho del contenedor (clase `.escala-interfaz`). */
5
+ export declare function useEscalaInterfaz(anchoContenedor: number | null): number;
@@ -0,0 +1,5 @@
1
+ import type { CapaServicio, GrupoServicios, ServicioGis } from "../types";
2
+ /** Completa las subcapas de los servicios que no las declaran con las descubiertas en runtime. */
3
+ export declare function resolverServicios(servicios: readonly ServicioGis[], capasDescubiertas: ReadonlyMap<string, readonly CapaServicio[]>): ServicioGis[];
4
+ /** Restaura la estructura grupos → servicios con las versiones resueltas. */
5
+ export declare function reagruparServicios(grupos: readonly GrupoServicios[], serviciosResueltos: readonly ServicioGis[]): GrupoServicios[];
@@ -0,0 +1,31 @@
1
+ import type { CSSProperties } from "react";
2
+ import { type OrigenToken } from "../features/maps/services/proveedor-token";
3
+ import { type CodigoHerramienta, type ModoMapa, type VistaMapa } from "../features/maps/types";
4
+ /** Props de `MapaCoreIsa`. El token sale de `urlToken` o `getAccessToken` (uno es obligatorio). */
5
+ export interface MapaCoreIsaProps extends OrigenToken {
6
+ /** Base URL del backend de Core ISA (p. ej. `https://back.isa.co`). */
7
+ apiBaseUrl: string;
8
+ /** Identificador de la aplicación anfitriona ante el backend. */
9
+ clientId: string;
10
+ /** Mapa del backend que se muestra; por defecto `"FULLSCREEN"`. */
11
+ modo?: ModoMapa;
12
+ /** Clave opcional de ArcGIS Location Platform; sin ella, usar el basemap `osm`. */
13
+ arcgisApiKey?: string;
14
+ /** Ruta de los assets del SDK de ArcGIS; por defecto, el CDN de Esri. */
15
+ arcgisAssetsPath?: string;
16
+ /** Herramientas a ocultar por código (p. ej. `["three-dimensional", "metadata"]`). */
17
+ herramientasDeshabilitadas?: readonly CodigoHerramienta[];
18
+ /** Se llama con la vista de ArcGIS cada vez que queda lista. */
19
+ onListo?: (vista: VistaMapa) => void;
20
+ /** Se llama si el mapa no puede mostrarse (token, backend o contrato sin mapa). */
21
+ onError?: (error: Error) => void;
22
+ /** Clases del contenedor; el mapa ocupa todo su alto y ancho. */
23
+ className?: string;
24
+ style?: CSSProperties;
25
+ }
26
+ /**
27
+ * Mapa de Core ISA listo para embeber: carga la configuración del backend con
28
+ * el token del anfitrión y muestra el visor con sus herramientas. Sin token
29
+ * válido no hay mapa: se muestra el error y se avisa por `onError`.
30
+ */
31
+ export declare function MapaCoreIsa({ apiBaseUrl, clientId, urlToken, getAccessToken, modo, arcgisApiKey, arcgisAssetsPath, herramientasDeshabilitadas, onListo, onError, className, style, }: MapaCoreIsaProps): import("react").JSX.Element;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Punto de entrada público de la librería del mapa de Core ISA. Lo que no se
3
+ * exporta aquí es interno y puede cambiar sin aviso.
4
+ *
5
+ * Los estilos van aparte: `import "@json_1013/core-geografico-isa-mapa/estilos.css"`.
6
+ */
7
+ export { MapaCoreIsa, type MapaCoreIsaProps } from "./MapaCoreIsa";
8
+ export { crearProveedorToken, ErrorToken, type MotivoErrorToken, type OrigenToken, } from "../features/maps/services/proveedor-token";
9
+ export type { ProveedorTokenAcceso } from "../features/maps/services/configuracion-aplicacion";
10
+ export { MapaView } from "../features/maps/components/MapaView";
11
+ export { ProveedorAlertas } from "../features/maps/providers/ProveedorAlertas";
12
+ export { configurarEntorno, type EntornoMapa } from "../features/maps/services/entorno";
13
+ export { crearPunto, ejeFueraDeRango, proyectar, proyectarCoordenadas, SRIDS_COLOMBIA, type RangoCoordenadas, type SistemaReferencia, } from "../features/maps/services/proyeccion";
14
+ export { formatearCoordenadas, formatearGradosDecimales, } from "../features/maps/services/formato-coordenadas";
15
+ export * from "../features/maps/types";
@@ -0,0 +1,20 @@
1
+ import { type MapaCoreIsaProps } from "./MapaCoreIsa";
2
+ /**
3
+ * Entrada para proyectos sin React (Angular, Vue, JS sin framework): trae
4
+ * React incluido y monta el mapa sobre un elemento del DOM.
5
+ */
6
+ /** Opciones de `montarMapa`: las mismas props de `MapaCoreIsa`. */
7
+ export type OpcionesMapa = MapaCoreIsaProps;
8
+ /** Control del mapa montado. */
9
+ export interface MapaMontado {
10
+ /** Cambia opciones (p. ej. `herramientasDeshabilitadas`) sin volver a montar. */
11
+ actualizar(cambios: Partial<OpcionesMapa>): void;
12
+ /** Desmonta el mapa y libera la vista de ArcGIS. */
13
+ desmontar(): void;
14
+ }
15
+ /** Monta el mapa en `destino` (elemento o selector CSS); el mapa ocupa todo su tamaño. */
16
+ export declare function montarMapa(destino: HTMLElement | string, opciones: OpcionesMapa): MapaMontado;
17
+ export type { MapaCoreIsaProps } from "./MapaCoreIsa";
18
+ export { ErrorToken, type MotivoErrorToken, } from "../features/maps/services/proveedor-token";
19
+ export { proyectarCoordenadas, SRIDS_COLOMBIA, ejeFueraDeRango, } from "../features/maps/services/proyeccion";
20
+ export { MODO_MAPA, type CodigoHerramienta, type ModoMapa } from "../features/maps/types";
@@ -0,0 +1,8 @@
1
+ /** Props de `MensajeError`. */
2
+ interface MensajeErrorProps {
3
+ titulo?: string;
4
+ mensaje?: string;
5
+ }
6
+ /** Bloque de error consistente para páginas y paneles. */
7
+ export declare function MensajeError({ titulo, mensaje }: MensajeErrorProps): import("react").JSX.Element;
8
+ export {};
@@ -0,0 +1,4 @@
1
+ /** Bloque de carga con pulso (decorativo: el contenedor expone `role="status"`). */
2
+ export declare function Skeleton({ className }: {
3
+ className?: string;
4
+ }): import("react").JSX.Element;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Configuración de entorno del visor, recibida en tiempo de ejecución (no de
3
+ * `import.meta.env`, que se fija al compilar): así la misma librería sirve a
4
+ * cualquier proyecto anfitrión. El demo la llena con sus variables `VITE_*`.
5
+ */
6
+ export interface EntornoMapa {
7
+ /** Base URL del backend de Core ISA (p. ej. `https://back.isa.co`). */
8
+ apiBaseUrl?: string;
9
+ /** Clave opcional de ArcGIS Location Platform (basemaps vectoriales). */
10
+ arcgisApiKey?: string;
11
+ /** Ruta de los assets del SDK de ArcGIS; por defecto, el CDN de Esri. */
12
+ arcgisAssetsPath?: string;
13
+ }
14
+ /** Combina `cambios` con el entorno vigente. */
15
+ export declare function guardarEntorno(cambios: EntornoMapa): void;
16
+ /** Entorno vigente del visor. */
17
+ export declare function obtenerEntorno(): Readonly<EntornoMapa>;
18
+ /** Vuelve al entorno vacío (solo para pruebas). */
19
+ export declare function reiniciarEntorno(): void;
@@ -0,0 +1,2 @@
1
+ /** Descarga un texto (p. ej. GeoJSON) como archivo vía un enlace temporal a un `Blob`. */
2
+ export declare function descargarArchivo(nombreArchivo: string, contenido: string, tipoMime: string): void;
@@ -0,0 +1,2 @@
1
+ /** Formatea una duración en ms como `m:ss min` (p. ej. 90000 → "1:30 min"). */
2
+ export declare function formatearDuracion(milisegundos: number): string;
@@ -0,0 +1,7 @@
1
+ /** Error normalizado para respuestas HTTP no satisfactorias. */
2
+ export declare class HttpError extends Error {
3
+ readonly status: number;
4
+ constructor(status: number, mensaje: string);
5
+ }
6
+ /** Único punto de acceso HTTP: normaliza errores, tipa la respuesta y aplica un timeout. */
7
+ export declare function fetchJson<T>(url: string, init?: RequestInit): Promise<T>;
@@ -0,0 +1,3 @@
1
+ import { type RefObject } from "react";
2
+ /** Llama a `alCerrar` al hacer clic fuera de las `refs` mientras `activo` sea true. */
3
+ export declare function useCerrarAlClicFuera(refs: readonly RefObject<HTMLElement | null>[], activo: boolean, alCerrar: () => void): void;
@@ -0,0 +1,2 @@
1
+ /** Indica si el contenido de un elemento está recortado (para mostrar un tooltip). */
2
+ export declare function useDesbordado<T extends HTMLElement>(): readonly [(elemento: T | null) => void, boolean];
@@ -0,0 +1,21 @@
1
+ /** Parámetros de `useHojaInferiorArrastrable`. */
2
+ interface OpcionesHojaInferior {
3
+ /** Anclajes como fracción (0–1) del contenedor, de menor a mayor. */
4
+ readonly puntosAnclaje: readonly number[];
5
+ /** Alto del contenedor de referencia (px), normalmente el del propio mapa. */
6
+ readonly alturaContenedor: number;
7
+ /** Índice de `puntosAnclaje` con el que abre la hoja. Por defecto, el del medio. */
8
+ readonly anclaInicial?: number;
9
+ }
10
+ /** Valor devuelto por `useHojaInferiorArrastrable`. */
11
+ interface HojaInferiorArrastrable {
12
+ /** Alto actual de la hoja (px), siempre entre el primer y el último anclaje. */
13
+ readonly altura: number;
14
+ /** Índice del punto de anclaje vigente dentro de `puntosAnclaje`. */
15
+ readonly indiceAnclaje: number;
16
+ /** `onPointerDown` del asa de arrastre. */
17
+ readonly alArrastrar: (evento: React.PointerEvent<HTMLElement>) => void;
18
+ }
19
+ /** Alto (px) de una hoja inferior arrastrable en vertical que salta al anclaje más cercano. */
20
+ export declare function useHojaInferiorArrastrable({ puntosAnclaje, alturaContenedor, anclaInicial, }: OpcionesHojaInferior): HojaInferiorArrastrable;
21
+ export {};
@@ -0,0 +1,11 @@
1
+ /** Parámetros de `useObservadorTamano`. */
2
+ interface OpcionesObservadorTamano {
3
+ /** Reacciona también a `window.resize` (cuando lo que cambia es el viewport). */
4
+ readonly escucharResizeVentana?: boolean;
5
+ }
6
+ /**
7
+ * Llama a `medir(elemento)` al enlazarlo (tras un `requestAnimationFrame`) y cada
8
+ * vez que cambia su tamaño (`ResizeObserver`). Devuelve el `ref` callback.
9
+ */
10
+ export declare function useObservadorTamano<T extends HTMLElement>(medir: (elemento: T) => void, { escucharResizeVentana }?: OpcionesObservadorTamano): (elemento: T | null) => void;
11
+ export {};
@@ -0,0 +1,12 @@
1
+ /** Estado estándar de una carga asíncrona única. */
2
+ export interface RecursoAsync<T> {
3
+ datos: T | undefined;
4
+ error: Error | undefined;
5
+ cargando: boolean;
6
+ recargar: () => void;
7
+ }
8
+ /**
9
+ * Encapsula la carga de un recurso asíncrono con cancelación segura
10
+ * (ignora respuestas de efectos desmontados) y reintento manual.
11
+ */
12
+ export declare function useRecursoAsync<T>(cargar: () => Promise<T>, deps?: readonly unknown[]): RecursoAsync<T>;
@@ -0,0 +1,2 @@
1
+ /** Mide el ancho y alto real de un elemento; `null` mientras no se ha medido. */
2
+ export declare function useTamanoContenedor<T extends HTMLElement>(): readonly [(elemento: T | null) => void, number | null, number | null];
@@ -0,0 +1,2 @@
1
+ /** Une clases condicionales y resuelve conflictos de Tailwind (gana la última). */
2
+ export declare function cn(...clases: Array<string | false | null | undefined>): string;
@@ -0,0 +1,5 @@
1
+ import type { ReactNode } from "react";
2
+ /** Props mínimas compartidas por componentes envolventes. */
3
+ export interface PropsConHijos {
4
+ children: ReactNode;
5
+ }
package/package.json ADDED
@@ -0,0 +1,89 @@
1
+ {
2
+ "name": "@json_1013/core-geografico-isa-mapa",
3
+ "version": "0.1.0-poc",
4
+ "description": "Mapa de Core ISA (ArcGIS) como librería: componente React y montaje para proyectos sin React.",
5
+ "type": "module",
6
+ "files": [
7
+ "dist-lib",
8
+ "README.md"
9
+ ],
10
+ "main": "./dist-lib/index.js",
11
+ "module": "./dist-lib/index.js",
12
+ "types": "./dist-lib/tipos/lib/index.d.ts",
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist-lib/tipos/lib/index.d.ts",
16
+ "import": "./dist-lib/index.js"
17
+ },
18
+ "./standalone": {
19
+ "types": "./dist-lib/tipos/lib/standalone.d.ts",
20
+ "import": "./dist-lib/standalone.js"
21
+ },
22
+ "./estilos.css": "./dist-lib/estilos.css",
23
+ "./package.json": "./package.json"
24
+ },
25
+ "sideEffects": [
26
+ "**/*.css"
27
+ ],
28
+ "publishConfig": {
29
+ "access": "public",
30
+ "tag": "poc"
31
+ },
32
+ "scripts": {
33
+ "dev": "vite",
34
+ "build": "tsc -b && vite build",
35
+ "build:lib": "vite build -c vite.lib.config.ts && vite build -c vite.lib.config.ts --mode standalone && tsc -p tsconfig.lib.json && node scripts/ajustar-tipos.mjs && node scripts/verificar-paquete.mjs",
36
+ "prepublishOnly": "npm run lint && npm test && npm run build:lib",
37
+ "lint": "eslint .",
38
+ "format": "prettier --write .",
39
+ "preview": "vite preview",
40
+ "test": "vitest run",
41
+ "test:watch": "vitest",
42
+ "test:coverage": "vitest run --coverage",
43
+ "test:coverage:open": "vitest run --coverage && start \"\" coverage/index.html"
44
+ },
45
+ "peerDependencies": {
46
+ "@arcgis/core": "^5.1.19",
47
+ "react": "^18.3.0 || ^19.0.0",
48
+ "react-dom": "^18.3.0 || ^19.0.0"
49
+ },
50
+ "peerDependenciesMeta": {
51
+ "react": {
52
+ "optional": true
53
+ },
54
+ "react-dom": {
55
+ "optional": true
56
+ }
57
+ },
58
+ "devDependencies": {
59
+ "@arcgis/core": "^5.1.19",
60
+ "@core-isa/fonts": "*",
61
+ "@eslint/js": "^10.0.1",
62
+ "@tailwindcss/vite": "^4.1.0",
63
+ "@testing-library/dom": "^10.4.1",
64
+ "@testing-library/jest-dom": "^6.9.1",
65
+ "@testing-library/react": "^16.3.3",
66
+ "@testing-library/user-event": "^14.6.6",
67
+ "@types/node": "^26.2.0",
68
+ "@types/react": "^19.2.18",
69
+ "@types/react-dom": "^19.2.4",
70
+ "@vitejs/plugin-react": "^6.0.5",
71
+ "@vitest/coverage-istanbul": "^4.1.11",
72
+ "eslint": "^10.8.1",
73
+ "eslint-plugin-react-hooks": "^7.1.1",
74
+ "eslint-plugin-react-refresh": "^0.5.4",
75
+ "globals": "^17.11.0",
76
+ "happy-dom": "^20.12.0",
77
+ "prettier": "^3.9.6",
78
+ "react": "^19.2.8",
79
+ "react-dom": "^19.2.8",
80
+ "react-router": "^8.3.0",
81
+ "tailwind-merge": "^3.6.0",
82
+ "tailwindcss": "^4.1.0",
83
+ "tslib": "^2.8.1",
84
+ "typescript": "~6.0.2",
85
+ "typescript-eslint": "^8.59.2",
86
+ "vite": "^8.2.1",
87
+ "vitest": "^4.1.11"
88
+ }
89
+ }