@thibezer/ui-components-kit 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +54 -0
- package/README.md +760 -739
- package/dist/camadas.cjs +72 -72
- package/dist/camadas.js +700 -667
- package/dist/canvas.cjs +99 -140
- package/dist/canvas.js +5125 -1192
- package/dist/components/ui-camadas/camadas-persistencia.d.ts +4 -0
- package/dist/components/ui-camadas/ui-camadas.d.ts +10 -0
- package/dist/components/ui-canvas-cad/cad-estilos-externos.d.ts +16 -0
- package/dist/components/ui-canvas-cad/cad-eventos-canvas.d.ts +4 -0
- package/dist/components/ui-canvas-cad/cad-feicoes.d.ts +262 -0
- package/dist/components/ui-canvas-cad/cad-ferramentas-barra.d.ts +15 -0
- package/dist/components/ui-canvas-cad/cad-snap.d.ts +32 -0
- package/dist/components/ui-canvas-cad/cad-toolbar-painel.d.ts +1 -0
- package/dist/components/ui-canvas-cad/ui-canvas-cad.d.ts +143 -0
- package/dist/components/ui-lista-flutuante/lista-flutuante-posicionamento.d.ts +2 -0
- package/dist/components/ui-lista-flutuante/ui-lista-flutuante.d.ts +1 -0
- package/dist/components/ui-seletor-mapa-base/ui-seletor-mapa-base.d.ts +3 -0
- package/dist/components/ui-tabela/tabela-atributos-sync.d.ts +3 -0
- package/dist/components/ui-tabela/tabela-localizador.d.ts +8 -1
- package/dist/components/ui-tabela/tabela-orquestrador-dados.d.ts +4 -0
- package/dist/components/ui-tabela/tabela-selecao.d.ts +19 -9
- package/dist/components/ui-tabela/tipos.d.ts +6 -0
- package/dist/components/ui-tabela/ui-tabela.d.ts +41 -2
- package/dist/components/ui-tabela-propriedades/avaliador-expressao.d.ts +0 -5
- package/dist/components/ui-tabela-propriedades/propriedades-dom-utils.d.ts +17 -1
- package/dist/components/ui-tabela-propriedades/propriedades-flutuante.d.ts +2 -0
- package/dist/components/ui-tabela-propriedades/propriedades-gerenciador-valores.d.ts +10 -1
- package/dist/components/ui-tabela-propriedades/propriedades-render-arvore.d.ts +3 -1
- package/dist/components/ui-tabela-propriedades/ui-tabela-propriedades.d.ts +5 -1
- package/dist/core/alvo-digitavel.d.ts +1 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/svg-seguro.d.ts +10 -0
- package/dist/core.cjs +1 -1
- package/dist/core.js +12 -10
- package/dist/custom-elements.json +14782 -10666
- package/dist/data.cjs +1 -1
- package/dist/data.js +51 -46
- package/dist/forms.cjs +1 -1
- package/dist/forms.js +1 -1
- package/dist/gerencigeo-canvas/canvas_interacao.d.ts +18 -0
- package/dist/gerencigeo-canvas/feature_adapters.d.ts +35 -0
- package/dist/gerencigeo-canvas/feature_algoritmos.d.ts +45 -0
- package/dist/gerencigeo-canvas/feature_amostra.d.ts +4 -0
- package/dist/gerencigeo-canvas/feature_caixa.d.ts +19 -0
- package/dist/gerencigeo-canvas/feature_cluster.d.ts +61 -0
- package/dist/gerencigeo-canvas/feature_cursores.d.ts +17 -0
- package/dist/gerencigeo-canvas/feature_desenho.d.ts +53 -0
- package/dist/gerencigeo-canvas/feature_desenho_controle.d.ts +91 -0
- package/dist/gerencigeo-canvas/feature_edicao_ops.d.ts +19 -0
- package/dist/gerencigeo-canvas/feature_editor_vertices.d.ts +62 -0
- package/dist/gerencigeo-canvas/feature_formas.d.ts +7 -0
- package/dist/gerencigeo-canvas/feature_hud.d.ts +23 -0
- package/dist/gerencigeo-canvas/feature_indice.d.ts +36 -0
- package/dist/gerencigeo-canvas/feature_metricas.d.ts +16 -0
- package/dist/gerencigeo-canvas/feature_popup.d.ts +31 -0
- package/dist/gerencigeo-canvas/feature_selecao.d.ts +38 -0
- package/dist/gerencigeo-canvas/feature_simplificacao.d.ts +14 -0
- package/dist/gerencigeo-canvas/feature_snap.d.ts +25 -0
- package/dist/gerencigeo-canvas/feature_types.d.ts +86 -0
- package/dist/gerencigeo-canvas/feature_versoes.d.ts +19 -0
- package/dist/gerencigeo-canvas/index.d.ts +21 -0
- package/dist/gerencigeo-canvas/layer_hit_test.d.ts +30 -0
- package/dist/gerencigeo-canvas/layer_manager.d.ts +11 -3
- package/dist/gerencigeo-canvas/layer_pane_ops.d.ts +9 -0
- package/dist/gerencigeo-canvas/mapa_controller.d.ts +1 -0
- package/dist/gerencigeo-canvas/mapa_pontos_shapes.d.ts +24 -5
- package/dist/gerencigeo-canvas/renderers/feicoes_renderer.d.ts +89 -0
- package/dist/gerencigeo-canvas/renderers/vector_points_renderer.d.ts +1 -0
- package/dist/gerencigeo-canvas/renderers/vector_polygons_renderer.d.ts +2 -2
- package/dist/gerencigeo-canvas/types.d.ts +12 -0
- package/dist/gerencigeo-canvas/utils.d.ts +3 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +111 -106
- package/dist/leaflet-DcO7uRC-.cjs +1 -0
- package/dist/{leaflet-DkaFZYc5.js → leaflet-PPDKB6Dd.js} +37 -37
- package/dist/mapa.cjs +1 -1
- package/dist/mapa.js +1 -1
- package/dist/register.cjs +1 -1
- package/dist/register.js +3 -3
- package/dist/seletor-mapa-base.cjs +13 -13
- package/dist/seletor-mapa-base.js +101 -51
- package/dist/svg-seguro-BsbNQqpd.js +50 -0
- package/dist/svg-seguro-C76iLlAZ.cjs +1 -0
- package/dist/tabela.cjs +1 -1
- package/dist/tabela.js +41 -36
- package/dist/tipos-elementos.d.ts +17 -4
- package/dist/tipos-vue.d.ts +15 -4
- package/dist/tools.cjs +1 -1
- package/dist/tools.js +1 -1
- package/dist/{ui-paleta-ferramentas-BIytXQLh.js → ui-paleta-ferramentas-CEZYcN4J.js} +18 -27
- package/dist/{ui-paleta-ferramentas-DqLY51qa.cjs → ui-paleta-ferramentas-Dbj1kBS9.cjs} +6 -6
- package/dist/{ui-switch-DWLgVVnT.js → ui-switch-BcOqOkiV.js} +124 -96
- package/dist/ui-switch-D7iPKDj-.cjs +53 -0
- package/dist/ui-tabela-propriedades-BBr5sqki.cjs +145 -0
- package/dist/{ui-tabela-propriedades-BNcE6VLX.js → ui-tabela-propriedades-Boy7I5yW.js} +1304 -1072
- package/package.json +169 -169
- package/dist/leaflet-Cw6tqYFh.cjs +0 -1
- package/dist/ui-switch-yZIn3IW0.cjs +0 -53
- package/dist/ui-tabela-propriedades-D3pyQvyy.cjs +0 -145
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Feicao } from './feature_types';
|
|
2
|
+
/** Envelope em graus: [oeste, sul, leste, norte] (x = lon, y = lat). */
|
|
3
|
+
export interface CaixaGeo {
|
|
4
|
+
minLon: number;
|
|
5
|
+
minLat: number;
|
|
6
|
+
maxLon: number;
|
|
7
|
+
maxLat: number;
|
|
8
|
+
}
|
|
9
|
+
export interface ItemIndice extends CaixaGeo {
|
|
10
|
+
id: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function caixaDaFeicao(f: Feicao): CaixaGeo;
|
|
13
|
+
export declare function caixasSeTocam(a: CaixaGeo, b: CaixaGeo): boolean;
|
|
14
|
+
export declare class IndiceEspacial {
|
|
15
|
+
private raiz;
|
|
16
|
+
/** Itens vivos: a fonte da verdade (a árvore pode conter itens já removidos/atualizados). */
|
|
17
|
+
private itens;
|
|
18
|
+
/** Itens que entraram ou mudaram depois da última montagem. */
|
|
19
|
+
private delta;
|
|
20
|
+
/** Ids que estão na árvore mas foram removidos ou substituídos. */
|
|
21
|
+
private obsoletos;
|
|
22
|
+
get tamanho(): number;
|
|
23
|
+
construir(feicoes: Feicao[]): void;
|
|
24
|
+
inserir(f: Feicao): void;
|
|
25
|
+
/** Insere ou substitui; feição `excluida` sai do índice. */
|
|
26
|
+
atualizar(f: Feicao): void;
|
|
27
|
+
remover(id: string): void;
|
|
28
|
+
limpar(): void;
|
|
29
|
+
/** Ids das feições cujo envelope toca `caixa`. */
|
|
30
|
+
consultar(caixa: CaixaGeo): string[];
|
|
31
|
+
intersecta(caixa: CaixaGeo): boolean;
|
|
32
|
+
/** Envelope da feição indexada, se houver. */
|
|
33
|
+
caixaDe(id: string): CaixaGeo | undefined;
|
|
34
|
+
private compactarSeNecessario;
|
|
35
|
+
private remontar;
|
|
36
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Feicao, GeometriaFeicao, LatLonPar } from './feature_types';
|
|
2
|
+
export declare function distanciaMetros(a: LatLonPar, b: LatLonPar): number;
|
|
3
|
+
export declare function comprimentoMetros(pts: LatLonPar[], fechado?: boolean): number;
|
|
4
|
+
/** Área (m²) do polígono, descontando os furos. */
|
|
5
|
+
export declare function areaMetros2(aneis: LatLonPar[][]): number;
|
|
6
|
+
export declare function formatarArea(m2: number): string;
|
|
7
|
+
export declare function formatarExtensao(m: number): string;
|
|
8
|
+
export declare function areaDaGeometria(g: GeometriaFeicao): number | null;
|
|
9
|
+
export declare function extensaoDaGeometria(g: GeometriaFeicao): number | null;
|
|
10
|
+
/**
|
|
11
|
+
* Texto do rótulo permanente. `campo` pode ser `area`, `extensao`, `id` ou qualquer chave de
|
|
12
|
+
* `propriedades` (name, category, description...). Sem campo: nome, senão id.
|
|
13
|
+
*/
|
|
14
|
+
export declare function textoRotulo(f: Feicao, campo?: string): string;
|
|
15
|
+
/** Envelope [[sul, oeste], [norte, leste]] da geometria. */
|
|
16
|
+
export declare function limitesDaGeometria(g: GeometriaFeicao): [LatLonPar, LatLonPar];
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { default as L } from 'leaflet';
|
|
2
|
+
import { CanvasLayerDef } from './types';
|
|
3
|
+
import { Feicao, LatLonPar } from './feature_types';
|
|
4
|
+
export type AcaoFeicao = 'inspecionar' | 'zoom' | 'vertices' | 'copiar';
|
|
5
|
+
export interface MargensPopup {
|
|
6
|
+
topo: number;
|
|
7
|
+
base: number;
|
|
8
|
+
esquerda: number;
|
|
9
|
+
direita: number;
|
|
10
|
+
}
|
|
11
|
+
export declare function coordenadaDeReferencia(f: Feicao): LatLonPar;
|
|
12
|
+
export interface DependenciasPopup {
|
|
13
|
+
obterMapa: () => L.Map | null;
|
|
14
|
+
obterCamada: (camadaId: string) => CanvasLayerDef | undefined;
|
|
15
|
+
aoAcao: (acao: AcaoFeicao, feicao: Feicao) => void;
|
|
16
|
+
}
|
|
17
|
+
export declare class FeicaoPopup {
|
|
18
|
+
private dep;
|
|
19
|
+
private popup;
|
|
20
|
+
private feicaoAtual;
|
|
21
|
+
private margens;
|
|
22
|
+
constructor(dep: DependenciasPopup);
|
|
23
|
+
/** Afasta o auto-pan de barras, tabelas e painéis laterais sobrepostos ao mapa. */
|
|
24
|
+
definirMargens(m: Partial<MargensPopup>): void;
|
|
25
|
+
get aberto(): Feicao | null;
|
|
26
|
+
abrir(f: Feicao): void;
|
|
27
|
+
/** Reconstrói o conteúdo se a feição aberta mudou (estilo, propriedades, geometria). */
|
|
28
|
+
atualizar(f: Feicao): void;
|
|
29
|
+
fechar(): void;
|
|
30
|
+
private montar;
|
|
31
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Feicao } from './feature_types';
|
|
2
|
+
export interface RefFeicao {
|
|
3
|
+
camadaId: string;
|
|
4
|
+
id: string;
|
|
5
|
+
}
|
|
6
|
+
interface Dependencias {
|
|
7
|
+
obterFeicao: (ref: RefFeicao) => Feicao | undefined;
|
|
8
|
+
/** Aplica o visual: `ids` são todas as feições selecionadas daquela camada (vazio = nenhuma). */
|
|
9
|
+
aplicarVisual: (camadaId: string, ids: Set<string>) => void;
|
|
10
|
+
aoSelecionar: (feicoes: Feicao[]) => void;
|
|
11
|
+
aoSelecionarUma: (feicao: Feicao | null) => void;
|
|
12
|
+
/** Feição escondida (ex.: prévia oculta) deixa de poder ficar selecionada. */
|
|
13
|
+
visivel?: (feicao: Feicao) => boolean;
|
|
14
|
+
/** Feição que nunca pode ser selecionada (ex.: oculta), nem por referência explícita. */
|
|
15
|
+
selecionavel?: (feicao: Feicao) => boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare class SelecaoFeicoes {
|
|
18
|
+
private dep;
|
|
19
|
+
private itens;
|
|
20
|
+
constructor(dep: Dependencias);
|
|
21
|
+
get quantidade(): number;
|
|
22
|
+
contem(ref: RefFeicao): boolean;
|
|
23
|
+
obter(): Feicao[];
|
|
24
|
+
/** Seleciona as feições; sem `aditivo`, substitui a seleção atual. */
|
|
25
|
+
selecionar(refs: RefFeicao[], aditivo?: boolean): void;
|
|
26
|
+
/** Alterna uma feição na seleção (Ctrl/Shift+clique). */
|
|
27
|
+
alternar(ref: RefFeicao): void;
|
|
28
|
+
/** Alterna várias de uma vez (caixa de seleção com Ctrl). */
|
|
29
|
+
alternarVarias(refs: RefFeicao[]): void;
|
|
30
|
+
/** A feição existe e pode ser selecionada? */
|
|
31
|
+
private alcancavel;
|
|
32
|
+
limpar(): void;
|
|
33
|
+
/** Descarta da seleção o que deixou de existir (removida, excluída, camada sumiu). */
|
|
34
|
+
reconciliar(): void;
|
|
35
|
+
private assinatura;
|
|
36
|
+
private finalizar;
|
|
37
|
+
}
|
|
38
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { GeometriaFeicao, LatLonPar } from './feature_types';
|
|
2
|
+
/** A partir deste zoom a geometria é desenhada completa. */
|
|
3
|
+
export declare const ZOOM_SEM_SIMPLIFICACAO = 12;
|
|
4
|
+
/** Geometrias com menos vértices que isto não valem o custo. */
|
|
5
|
+
export declare const MIN_VERTICES_SIMPLIFICAR = 40;
|
|
6
|
+
/** Tolerância em graus para o zoom; 0 = sem simplificar. */
|
|
7
|
+
export declare function toleranciaPorZoom(zoom: number): number;
|
|
8
|
+
/** Douglas-Peucker iterativo (sem recursão: linhas com centenas de milhares de vértices). */
|
|
9
|
+
export declare function simplificarLinha(pts: LatLonPar[], tolerancia: number): LatLonPar[];
|
|
10
|
+
/** Anel aberto: mantém pelo menos 3 vértices (senão volta o original). */
|
|
11
|
+
export declare function simplificarAnel(anel: LatLonPar[], tolerancia: number): LatLonPar[];
|
|
12
|
+
export declare function vertices(g: GeometriaFeicao): number;
|
|
13
|
+
/** Geometria para desenho no zoom dado; devolve a própria `g` quando não há o que simplificar. */
|
|
14
|
+
export declare function simplificarGeometria(g: GeometriaFeicao, zoom: number): GeometriaFeicao;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Feicao, LatLonPar } from './feature_types';
|
|
2
|
+
import { PontoPx, Projetor } from './feature_caixa';
|
|
3
|
+
export type TipoSnap = 'vertice' | 'meio' | 'aresta';
|
|
4
|
+
export interface ResultadoSnap {
|
|
5
|
+
tipo: TipoSnap;
|
|
6
|
+
coordenada: LatLonPar;
|
|
7
|
+
feicaoId: string;
|
|
8
|
+
camadaId: string;
|
|
9
|
+
/** Distância (px) entre o cursor e o ponto de snap. */
|
|
10
|
+
distanciaPx: number;
|
|
11
|
+
}
|
|
12
|
+
export interface OpcoesSnap {
|
|
13
|
+
toleranciaPx?: number;
|
|
14
|
+
vertice?: boolean;
|
|
15
|
+
meio?: boolean;
|
|
16
|
+
aresta?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface ExcluirSnap {
|
|
19
|
+
feicaoId: string;
|
|
20
|
+
camadaId?: string;
|
|
21
|
+
/** Vértice em arrasto: ele e os segmentos que o tocam não atraem. */
|
|
22
|
+
vertice?: number;
|
|
23
|
+
}
|
|
24
|
+
export declare const TOLERANCIA_SNAP_PX = 10;
|
|
25
|
+
export declare function buscarSnap(cursor: PontoPx, candidatas: Feicao[], projetar: Projetor, opcoes?: OpcoesSnap, excluir?: ExcluirSnap): ResultadoSnap | null;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export type TipoFeicao = 'Point' | 'LineString' | 'Polygon' | 'Circle' | 'Text';
|
|
2
|
+
export type StatusGeometria = 'oficial' | 'previa';
|
|
3
|
+
/** [lat, lon] */
|
|
4
|
+
export type LatLonPar = [number, number];
|
|
5
|
+
export type GeometriaFeicao = {
|
|
6
|
+
tipo: 'Point';
|
|
7
|
+
coordenada: LatLonPar;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Linha. Multiparte (MultiLineString): `partes` traz todas (2 ou mais) e `coordenadas` repete a primeira, de modo que
|
|
11
|
+
* quem só conhece `coordenadas` continua vendo uma linha válida. Use `partesDaLinha` para ler sempre todas as partes.
|
|
12
|
+
*/
|
|
13
|
+
| {
|
|
14
|
+
tipo: 'LineString';
|
|
15
|
+
coordenadas: LatLonPar[];
|
|
16
|
+
partes?: LatLonPar[][];
|
|
17
|
+
}
|
|
18
|
+
/** O primeiro anel é o externo; os demais são furos. Anéis ficam abertos (sem repetir o primeiro vértice). */
|
|
19
|
+
| {
|
|
20
|
+
tipo: 'Polygon';
|
|
21
|
+
aneis: LatLonPar[][];
|
|
22
|
+
} | {
|
|
23
|
+
tipo: 'Circle';
|
|
24
|
+
centro: LatLonPar;
|
|
25
|
+
raioMetros: number;
|
|
26
|
+
} | {
|
|
27
|
+
tipo: 'Text';
|
|
28
|
+
coordenada: LatLonPar;
|
|
29
|
+
texto: string;
|
|
30
|
+
};
|
|
31
|
+
export type GeometriaLinha = Extract<GeometriaFeicao, {
|
|
32
|
+
tipo: 'LineString';
|
|
33
|
+
}>;
|
|
34
|
+
/** Todas as partes da linha (uma só quando é simples). */
|
|
35
|
+
export declare function partesDaLinha(g: GeometriaLinha): LatLonPar[][];
|
|
36
|
+
export declare function ehMultilinha(g: GeometriaFeicao): boolean;
|
|
37
|
+
/** Monta a linha a partir das partes já válidas: uma parte vira linha simples; duas ou mais, multiparte. */
|
|
38
|
+
export declare function criarLinha(partes: LatLonPar[][]): GeometriaLinha;
|
|
39
|
+
export interface EstiloFeicao {
|
|
40
|
+
corPreenchimento?: string;
|
|
41
|
+
opacidadePreenchimento?: number;
|
|
42
|
+
corTraco?: string;
|
|
43
|
+
espessuraTraco?: number;
|
|
44
|
+
dashArray?: string;
|
|
45
|
+
icone?: string;
|
|
46
|
+
tamanhoIcone?: number;
|
|
47
|
+
rotacaoIcone?: number;
|
|
48
|
+
mostrarRotulo?: boolean;
|
|
49
|
+
campoRotulo?: string;
|
|
50
|
+
/** Texto: contorno claro/escuro em volta para legibilidade sobre o satélite. */
|
|
51
|
+
halo?: boolean;
|
|
52
|
+
/** Texto: tamanho da fonte em px. */
|
|
53
|
+
tamanhoFonte?: number;
|
|
54
|
+
/** Texto: cor do fundo do selo (etiqueta). Com ela, o selo substitui o `halo`. Só hex, rgb/hsl ou nome de cor. */
|
|
55
|
+
corFundo?: string;
|
|
56
|
+
/** Texto: cor da borda do selo (1 px). */
|
|
57
|
+
corBorda?: string;
|
|
58
|
+
/** Texto: opacidade do fundo do selo, de 0 a 1 (padrão 0,85); a borda e o texto ficam opacos. */
|
|
59
|
+
opacidadeFundo?: number;
|
|
60
|
+
/** Texto: raio dos cantos do selo em px (padrão 4). */
|
|
61
|
+
raioBorda?: number;
|
|
62
|
+
/** Ponto sem ícone: cor do contorno, separada do preenchimento (`corPreenchimento`) e de `corTraco`. */
|
|
63
|
+
corContorno?: string;
|
|
64
|
+
/** Ponto sem ícone: espessura do contorno em px (0 = sem contorno). */
|
|
65
|
+
espessuraContorno?: number;
|
|
66
|
+
}
|
|
67
|
+
export interface Feicao {
|
|
68
|
+
id: string;
|
|
69
|
+
camadaId: string;
|
|
70
|
+
geometria: GeometriaFeicao;
|
|
71
|
+
estilo?: EstiloFeicao;
|
|
72
|
+
propriedades: Record<string, unknown>;
|
|
73
|
+
bloqueada?: boolean;
|
|
74
|
+
/** Oficial ou prévia; ver `feature_versoes.ts` (também lido de `propriedades.status`/`tipo_geometria`). */
|
|
75
|
+
status?: StatusGeometria;
|
|
76
|
+
/** Agrupa a geometria oficial e as prévias da mesma coisa. Sem isto, a feição é a própria entidade. */
|
|
77
|
+
entidadeId?: string;
|
|
78
|
+
/** Foi removida: some de tudo (desenho, seleção, snap, versões) e encerra edição/popup. */
|
|
79
|
+
excluida?: boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Oculta, mas existe: não é desenhada nem selecionada (clique, caixa, laço, hit-test, hover) e não atrai snap,
|
|
82
|
+
* não entra em `ajustarTudo`; segue nos dados (`obterFeicoes`, atualizações), não encerra edição e conta na
|
|
83
|
+
* regra oficial × prévia como qualquer outra.
|
|
84
|
+
*/
|
|
85
|
+
oculta?: boolean;
|
|
86
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Feicao, StatusGeometria } from './feature_types';
|
|
2
|
+
/** Status da feição: o campo `status`; senão `propriedades.status` ou `propriedades.tipo_geometria`; senão oficial. */
|
|
3
|
+
export declare function statusDe(f: Feicao): StatusGeometria;
|
|
4
|
+
/** Identificador da entidade a que a geometria pertence. */
|
|
5
|
+
export declare function entidadeDe(f: Feicao): string;
|
|
6
|
+
export declare class RegraVersoes {
|
|
7
|
+
/** Mostra as prévias de todas as entidades. */
|
|
8
|
+
global: boolean;
|
|
9
|
+
private individuais;
|
|
10
|
+
alternarIndividual(camadaId: string, entidade: string): boolean;
|
|
11
|
+
definirIndividual(camadaId: string, entidade: string, ativa: boolean): void;
|
|
12
|
+
individualAtiva(camadaId: string, entidade: string): boolean;
|
|
13
|
+
/** Entidades da camada que têm geometria oficial. */
|
|
14
|
+
static oficiais(feicoes: Iterable<Feicao>): Set<string>;
|
|
15
|
+
/** A feição aparece? `comOficial` = entidades da camada com geometria oficial (ver `oficiais`). */
|
|
16
|
+
visivel(f: Feicao, comOficial: Set<string>): boolean;
|
|
17
|
+
/** A prévia está sendo mostrada por pedido (global ou individual), e não só por falta de oficial? */
|
|
18
|
+
previaSolicitada(f: Feicao): boolean;
|
|
19
|
+
}
|
|
@@ -9,9 +9,30 @@ export * from './renderers/vector_lines_renderer';
|
|
|
9
9
|
export * from './renderers/vector_points_renderer';
|
|
10
10
|
export * from './renderers/vector_polygons_renderer';
|
|
11
11
|
export * from './renderers/grid_renderer';
|
|
12
|
+
export * from './renderers/feicoes_renderer';
|
|
13
|
+
export * from './feature_metricas';
|
|
14
|
+
export * from './layer_hit_test';
|
|
15
|
+
export * from './feature_caixa';
|
|
16
|
+
export * from './feature_selecao';
|
|
17
|
+
export * from './feature_popup';
|
|
18
|
+
export * from './feature_indice';
|
|
19
|
+
export * from './feature_simplificacao';
|
|
20
|
+
export * from './feature_cluster';
|
|
21
|
+
export * from './feature_edicao_ops';
|
|
22
|
+
export * from './feature_snap';
|
|
23
|
+
export * from './feature_editor_vertices';
|
|
24
|
+
export * from './feature_algoritmos';
|
|
25
|
+
export * from './feature_desenho';
|
|
26
|
+
export * from './feature_desenho_controle';
|
|
27
|
+
export * from './feature_amostra';
|
|
28
|
+
export * from './feature_versoes';
|
|
29
|
+
export * from './feature_cursores';
|
|
30
|
+
export * from './feature_hud';
|
|
12
31
|
export * from './layer_manager';
|
|
13
32
|
export * from './mapa_core';
|
|
14
33
|
export * from './mapa_linhas';
|
|
15
34
|
export * from './mapa_marcadores';
|
|
16
35
|
export * from './canvas_interacao';
|
|
17
36
|
export * from './mapa_controller';
|
|
37
|
+
export * from './feature_types';
|
|
38
|
+
export * from './feature_adapters';
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { default as L } from 'leaflet';
|
|
2
|
+
import { CanvasLayerDef } from './types';
|
|
3
|
+
import { TipoGeometriaPane } from './layer_pane_ops';
|
|
4
|
+
/** Tolerância (px) somada à espessura do traço. */
|
|
5
|
+
export declare const TOLERANCIA_LINHA_PX = 6;
|
|
6
|
+
export declare const TOLERANCIA_PONTO_PX = 4;
|
|
7
|
+
/** Desliga o pointer-events dos canvases de pane (markers DOM e popups não são afetados). */
|
|
8
|
+
export declare function garantirCanvasSemEventos(container: HTMLElement): void;
|
|
9
|
+
/** Feição candidata sob o cursor, já ordenada por prioridade. */
|
|
10
|
+
export interface CandidatoHit {
|
|
11
|
+
camada: CanvasLayerDef;
|
|
12
|
+
tipo: TipoGeometriaPane;
|
|
13
|
+
alvo: L.Layer;
|
|
14
|
+
/** Distância (px) ao traço/centro; 0 quando o ponto cai dentro de uma área. */
|
|
15
|
+
distancia: number;
|
|
16
|
+
/** Área do envelope em px²; só usada para desempatar áreas. */
|
|
17
|
+
area: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Todas as feições sob o ponto, na ordem em que um clique deve escolhê-las
|
|
21
|
+
* (a primeira é a que o clique simples seleciona). Serve também para hover, menu de contexto e conta-gotas.
|
|
22
|
+
*/
|
|
23
|
+
export declare function consultarFeicoesNoPonto(map: L.Map, camadas: CanvasLayerDef[], ponto: L.Point): CandidatoHit[];
|
|
24
|
+
/**
|
|
25
|
+
* Resolve o clique entre todas as camadas, da mais alta para a mais baixa.
|
|
26
|
+
* Dispara o evento só na feição vencedora e devolve `true` se houve acerto.
|
|
27
|
+
*/
|
|
28
|
+
export declare function resolverCliqueCentral(map: L.Map, camadas: CanvasLayerDef[], e: MouseEvent): boolean;
|
|
29
|
+
/** Feição do topo sob o evento (sem alternar): hover, menu de contexto, conta-gotas. */
|
|
30
|
+
export declare function feicaoNoTopo(map: L.Map, camadas: CanvasLayerDef[], e: MouseEvent): CandidatoHit | null;
|
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
import { default as L } from 'leaflet';
|
|
2
2
|
import { CanvasLayerDef, CanvasLayerState, CanvasRenderContext, CanvasGraphicScale } from './types';
|
|
3
|
-
|
|
4
|
-
export { DEFAULT_LAYERS };
|
|
3
|
+
export declare const DEFAULT_LAYERS: CanvasLayerDef[];
|
|
5
4
|
export declare class CanvasLayerManager {
|
|
6
5
|
private layers;
|
|
7
6
|
private layerInstances;
|
|
8
7
|
private map;
|
|
9
8
|
private context;
|
|
10
9
|
private listeners;
|
|
10
|
+
private renderPendente;
|
|
11
11
|
constructor(initialLayers?: CanvasLayerDef[]);
|
|
12
|
+
/**
|
|
13
|
+
* Remove as camadas que o kit traz de fábrica (satélite, SIGEF, homologados, perímetro, vizinhos, vértices, grade).
|
|
14
|
+
* Só vale antes de o mapa ser anexado: depois disso as instâncias já existem. Camadas criadas pelo consumidor ficam.
|
|
15
|
+
*/
|
|
16
|
+
descartarCamadasPadrao(): void;
|
|
12
17
|
attachMap(map: L.Map, context: CanvasRenderContext): void;
|
|
13
18
|
ensurePanes(): void;
|
|
14
|
-
renderAllLayers(): void;
|
|
19
|
+
renderAllLayers(apenasDependentesDoContexto?: boolean): void;
|
|
20
|
+
/** Executa agora o render agendado por updateContext/setGraphicScale, se houver. */
|
|
21
|
+
flushRender(): void;
|
|
22
|
+
private agendarRender;
|
|
15
23
|
setLayerVisibility(id: string, visivel: boolean): void;
|
|
16
24
|
setLayerOpacity(id: string, opacidade: number): void;
|
|
17
25
|
setLayerZIndex(id: string, zIndex: number): void;
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { default as L } from 'leaflet';
|
|
2
2
|
import { CanvasLayerDef } from './types';
|
|
3
3
|
export declare function nomePane(layerId: string): string;
|
|
4
|
+
/**
|
|
5
|
+
* Tipos de geometria de uma camada, do fundo para o topo. Cada um vira um sub-pane aninhado no
|
|
6
|
+
* pane da camada, para polígonos não cobrirem linhas/pontos da mesma camada.
|
|
7
|
+
*/
|
|
8
|
+
export type TipoGeometriaPane = 'poligono' | 'linha' | 'ponto' | 'texto';
|
|
9
|
+
export declare const ORDEM_GEOMETRIA: TipoGeometriaPane[];
|
|
10
|
+
export declare function nomeSubPane(layerId: string, tipo: TipoGeometriaPane): string;
|
|
11
|
+
/** Garante (e devolve o nome de) o sub-pane de um tipo de geometria dentro do pane da camada. */
|
|
12
|
+
export declare function garantirSubPane(map: L.Map, layerId: string, tipo: TipoGeometriaPane): string;
|
|
4
13
|
export declare function garantirPanes(map: L.Map, layers: CanvasLayerDef[]): void;
|
|
5
14
|
export declare function aplicarVisibilidadePane(map: L.Map, layer: CanvasLayerDef): void;
|
|
6
15
|
export declare function aplicarOpacidadePane(map: L.Map, layer: CanvasLayerDef): void;
|
|
@@ -40,6 +40,7 @@ export declare class GerenciGeoMapaController {
|
|
|
40
40
|
importState(state: CanvasLayerState[]): void;
|
|
41
41
|
selectPonto(pId: string | number, zoomLevel?: number): void;
|
|
42
42
|
atualizarDestaqueMarcadores(): void;
|
|
43
|
+
selectSegmento(segmentoId: string | number | null): void;
|
|
43
44
|
fitBounds(pontos?: Ponto[], padding?: [number, number], incluirVizinhos?: boolean): void;
|
|
44
45
|
getMarkers(): L.Marker[];
|
|
45
46
|
getVizinhosMarkers(): L.Marker[];
|
|
@@ -1,8 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Helper para renderizar
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* Helper para renderizar marcadores (SVG inline, sem dependência de Tailwind) no Leaflet.
|
|
3
|
+
*
|
|
4
|
+
* Princípios visuais:
|
|
5
|
+
* - Formas nítidas: preenchimento levemente translúcido + contorno escuro fino + aro claro interno,
|
|
6
|
+
* legíveis tanto sobre satélite quanto sobre fundo escuro. Traços com `non-scaling-stroke`
|
|
7
|
+
* (espessura constante em px, independente do tamanho do marcador).
|
|
8
|
+
* - Sem blur/glow: `drop-shadow` e `box-shadow` borrados eram caros em alta densidade e passavam
|
|
9
|
+
* aparência "esfumaçada". O destaque de seleção, como no CAD, escurece o símbolo (cor da camada
|
|
10
|
+
* misturada com preto) e o recorta com contorno claro, sem anéis ao redor.
|
|
11
|
+
* - Alta densidade: modo `compacta` reduz contorno e opacidade, de modo que sobreposições
|
|
12
|
+
* fiquem legíveis (a cor "acumula") em vez de virar uma mancha de contornos escuros.
|
|
6
13
|
*/
|
|
14
|
+
export type DensidadeMarcador = 'normal' | 'compacta';
|
|
15
|
+
export interface OpcoesPontoShape {
|
|
16
|
+
densidade?: DensidadeMarcador;
|
|
17
|
+
}
|
|
18
|
+
/** Acima deste total de pontos na camada, os marcadores passam a usar o modo compacto. */
|
|
19
|
+
export declare const LIMIAR_DENSIDADE_ALTA = 300;
|
|
20
|
+
export declare function modoDensidade(total: number): DensidadeMarcador;
|
|
21
|
+
/**
|
|
22
|
+
* Fator de escala (0.6–1) aplicado ao tamanho dos marcadores em camadas densas.
|
|
23
|
+
* Diminui com o nº de pontos (log) e com o afastamento do zoom, onde os pontos mais se sobrepõem.
|
|
24
|
+
*/
|
|
25
|
+
export declare function fatorDensidade(total: number, zoom: number): number;
|
|
7
26
|
export declare function extrairCorPonto(bgClassOuCor: string): string;
|
|
8
|
-
export declare function getPointShapeHtml(shapeStyle: string, size: number, bgClass: string, extraClasses?: string, id?: string, selecionado?: boolean): string;
|
|
27
|
+
export declare function getPointShapeHtml(shapeStyle: string, size: number, bgClass: string, extraClasses?: string, id?: string, selecionado?: boolean, opcoes?: OpcoesPontoShape): string;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { default as L } from 'leaflet';
|
|
2
|
+
import { ILayerRenderer } from '../layer_renderer_factory';
|
|
3
|
+
import { CanvasLayerDef, CanvasRenderContext } from '../types';
|
|
4
|
+
import { Feicao } from '../feature_types';
|
|
5
|
+
import { CaixaGeo } from '../feature_indice';
|
|
6
|
+
export declare const ICONES_FEICAO: Record<string, string>;
|
|
7
|
+
/** Cores vão para atributos style; só passam formatos conhecidos (hex, rgb/hsl, nome). */
|
|
8
|
+
export declare function corSegura(cor: string | undefined, padrao: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Mudança incremental enviada pelo gerenciador junto com os dados (`dados.delta`). Só vale se `base` for a lista que
|
|
11
|
+
* este renderizador sincronizou por último; senão a camada é reconciliada por inteiro.
|
|
12
|
+
*/
|
|
13
|
+
export interface DeltaFeicoes {
|
|
14
|
+
base: Feicao[];
|
|
15
|
+
/** Feições novas ou trocadas (as `excluida` saem da camada). */
|
|
16
|
+
mudadas: Feicao[];
|
|
17
|
+
removidas: string[];
|
|
18
|
+
}
|
|
19
|
+
type Grupo = L.LayerGroup;
|
|
20
|
+
export declare const COR_SELECAO = "#38bdf8";
|
|
21
|
+
/** Até aqui mantém tudo carregado (sem pop-in); acima, só o que está perto da tela. */
|
|
22
|
+
export declare const LIMITE_CULLING = 300;
|
|
23
|
+
export declare class FeicoesLayerRenderer implements ILayerRenderer {
|
|
24
|
+
private estados;
|
|
25
|
+
/** Por definição de camada (uma por componente), para a seleção sobreviver à recriação do grupo. */
|
|
26
|
+
private selecionadas;
|
|
27
|
+
private tokenLote;
|
|
28
|
+
render(layerDef: CanvasLayerDef, map: L.Map, context: CanvasRenderContext): L.LayerGroup;
|
|
29
|
+
update(layerDef: CanvasLayerDef, layerInstance: L.LayerGroup, changes: Partial<CanvasLayerDef>, context: CanvasRenderContext, map: L.Map): void;
|
|
30
|
+
destroy(layerInstance: L.LayerGroup, map: L.Map): void;
|
|
31
|
+
/** A regra de versões mudou (prévias ligadas/desligadas): recalcula o que aparece. */
|
|
32
|
+
reavaliarVersoes(group: Grupo): void;
|
|
33
|
+
/** A feição aparece segundo a regra de oficial × prévia? */
|
|
34
|
+
feicaoVisivel(group: Grupo, f: Feicao): boolean;
|
|
35
|
+
/** Feições da camada cujo envelope toca `caixa` (para snap e consultas espaciais). */
|
|
36
|
+
consultarProximas(group: Grupo, caixa: CaixaGeo): Feicao[];
|
|
37
|
+
/** Mostra uma geometria provisória (durante um arrasto) sem tocar nos dados nem no índice. */
|
|
38
|
+
previsualizar(group: Grupo, f: Feicao): void;
|
|
39
|
+
/** Para testes e diagnóstico: quantas feições estão materializadas e quantos clusters desenhados. */
|
|
40
|
+
estatisticas(group: Grupo): {
|
|
41
|
+
total: number;
|
|
42
|
+
materializadas: number;
|
|
43
|
+
clusters: number;
|
|
44
|
+
} | null;
|
|
45
|
+
private feicoesDe;
|
|
46
|
+
private obterEstado;
|
|
47
|
+
private sincronizar;
|
|
48
|
+
private recontarOficiais;
|
|
49
|
+
/** Aplica só a diferença. Devolve `false` se o delta não parte da lista sincronizada (então o caminho completo roda). */
|
|
50
|
+
private aplicarDelta;
|
|
51
|
+
/** Há geometria grande demais para o zoom atual? Só então vale redesenhar ao mudar de zoom. */
|
|
52
|
+
private ressimplificar;
|
|
53
|
+
private paraDesenho;
|
|
54
|
+
/** Vai para a tela? Não oculta e visível pela regra oficial × prévia. */
|
|
55
|
+
private desenhavel;
|
|
56
|
+
private estaCarregado;
|
|
57
|
+
private caixaDe;
|
|
58
|
+
/** Cria a camada Leaflet da feição ou remenda a que existe (e só se algo mudou). */
|
|
59
|
+
private materializar;
|
|
60
|
+
private tirarEntrada;
|
|
61
|
+
private colocarCluster;
|
|
62
|
+
private tirarCluster;
|
|
63
|
+
/** O agrupador do zoom atual (reconstruído se os dados-base ou o zoom mudaram) ou `null` se não há agrupamento. */
|
|
64
|
+
private agrupadorAtivo;
|
|
65
|
+
/** Calcula o que deve estar desenhado e ajusta as camadas Leaflet (cria, remenda, remove). */
|
|
66
|
+
private reconciliar;
|
|
67
|
+
/**
|
|
68
|
+
* Reconcilia só o que o delta tocou (o custo não depende do tamanho da camada). Cai no reconcile completo quando
|
|
69
|
+
* o estado de conjunto muda: regra oficial × prévia, entrada/saída do corte por viewport ou do agrupamento.
|
|
70
|
+
*/
|
|
71
|
+
private reconciliarParcial;
|
|
72
|
+
private criarMarcadorCluster;
|
|
73
|
+
/**
|
|
74
|
+
* Marca como selecionadas as feições `ids` deste grupo (as demais voltam ao estilo normal).
|
|
75
|
+
* Só as que mudaram são tocadas; mudanças grandes são aplicadas em blocos, as visíveis primeiro.
|
|
76
|
+
* Pontos selecionados saem dos clusters; ao desmarcar, voltam a ser agrupados.
|
|
77
|
+
*/
|
|
78
|
+
aplicarSelecao(group: Grupo, ids: Set<string>): void;
|
|
79
|
+
private formaDe;
|
|
80
|
+
private paneDe;
|
|
81
|
+
private estiloVetor;
|
|
82
|
+
private criar;
|
|
83
|
+
private remendar;
|
|
84
|
+
private iconeSvg;
|
|
85
|
+
private iconeTexto;
|
|
86
|
+
private aplicarRotulo;
|
|
87
|
+
private ligarEventos;
|
|
88
|
+
}
|
|
89
|
+
export {};
|
|
@@ -4,6 +4,7 @@ import { CanvasLayerDef, CanvasRenderContext } from '../types';
|
|
|
4
4
|
export declare class VectorPointsLayerRenderer implements ILayerRenderer {
|
|
5
5
|
private zoomListenerMap;
|
|
6
6
|
render(layerDef: CanvasLayerDef, map: L.Map, context: CanvasRenderContext): L.LayerGroup;
|
|
7
|
+
private criarIcone;
|
|
7
8
|
private calculateSize;
|
|
8
9
|
private rebuildPoints;
|
|
9
10
|
update(layerDef: CanvasLayerDef, layerInstance: L.LayerGroup, changes: Partial<CanvasLayerDef>, context: CanvasRenderContext, map: L.Map): void;
|
|
@@ -2,8 +2,8 @@ import { default as L } from 'leaflet';
|
|
|
2
2
|
import { ILayerRenderer } from '../layer_renderer_factory';
|
|
3
3
|
import { CanvasLayerDef, CanvasRenderContext } from '../types';
|
|
4
4
|
export declare class VectorPolygonsLayerRenderer implements ILayerRenderer {
|
|
5
|
-
render(layerDef: CanvasLayerDef,
|
|
5
|
+
render(layerDef: CanvasLayerDef, map: L.Map, context: CanvasRenderContext): L.LayerGroup;
|
|
6
6
|
private rebuildPolygons;
|
|
7
|
-
update(layerDef: CanvasLayerDef, layerInstance: L.LayerGroup, changes: Partial<CanvasLayerDef>, context: CanvasRenderContext): void;
|
|
7
|
+
update(layerDef: CanvasLayerDef, layerInstance: L.LayerGroup, changes: Partial<CanvasLayerDef>, context: CanvasRenderContext, map: L.Map): void;
|
|
8
8
|
destroy(layerInstance: L.LayerGroup, map: L.Map): void;
|
|
9
9
|
}
|
|
@@ -105,8 +105,12 @@ export interface Ponto {
|
|
|
105
105
|
acoes?: PopupAcaoCAD[];
|
|
106
106
|
}
|
|
107
107
|
export interface Segmento {
|
|
108
|
+
id?: number | string;
|
|
109
|
+
matricula_id?: number | string;
|
|
108
110
|
ponto_inicio_id: number;
|
|
109
111
|
ponto_fim_id: number;
|
|
112
|
+
confrontante_id?: number | string;
|
|
113
|
+
anuencia_assinada?: number;
|
|
110
114
|
tipo_limite_sigef?: string;
|
|
111
115
|
tipo_limite?: string;
|
|
112
116
|
metodo_posicionamento_sigef?: string;
|
|
@@ -146,6 +150,7 @@ export interface MapaConfiguracoes {
|
|
|
146
150
|
preferCanvas: boolean;
|
|
147
151
|
crosshair?: boolean;
|
|
148
152
|
satOpacity?: number;
|
|
153
|
+
/** @deprecated Sem efeito. O snap agora é do `<ui-canvas-cad>` (`definirSnap`, tecla S, botão). */
|
|
149
154
|
magnetSnap?: boolean;
|
|
150
155
|
scaleMode?: ScaleMode;
|
|
151
156
|
}
|
|
@@ -164,6 +169,13 @@ export interface CanvasRenderContext {
|
|
|
164
169
|
lat: number;
|
|
165
170
|
lon: number;
|
|
166
171
|
}) => void;
|
|
172
|
+
onSegmentoClick?: (segmentoId: string | number, segmento: any, coords?: {
|
|
173
|
+
lat: number;
|
|
174
|
+
lon: number;
|
|
175
|
+
}) => void;
|
|
176
|
+
selectedSegmentoId?: string | number | null;
|
|
167
177
|
onLayerAction?: (action: string, detail: any) => void;
|
|
168
178
|
onPopupAcao?: (acaoId: string, elementoId: string | number, elemento: any) => void;
|
|
179
|
+
/** Regra de oficial × prévia das camadas de feições (uma por componente). */
|
|
180
|
+
regraVersoes?: import('./feature_versoes').RegraVersoes;
|
|
169
181
|
}
|
|
@@ -14,7 +14,9 @@ export interface CoordenadaGeo {
|
|
|
14
14
|
* - Filtra valores inválidos, NaN, Null Island (0, 0)
|
|
15
15
|
* - Identifica e rejeita coordenadas planas métricas (UTM/SIRGAS2000 acima de 90°/180°)
|
|
16
16
|
*/
|
|
17
|
-
export declare const parseCoordenada: (rawLat: any, rawLon: any
|
|
17
|
+
export declare const parseCoordenada: (rawLat: any, rawLon: any, opcoes?: {
|
|
18
|
+
aceitarOrigem?: boolean;
|
|
19
|
+
}) => CoordenadaGeo | null;
|
|
18
20
|
/**
|
|
19
21
|
* Gera o HTML dos botões de ação customizados para o rodapé do popup.
|
|
20
22
|
*/
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */const T=require("./ui-botao-psS1juof.cjs"),r=require("./ui-switch-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */const T=require("./ui-botao-psS1juof.cjs"),r=require("./ui-switch-D7iPKDj-.cjs"),i=require("./ui-segmented-D6b6zxVs.cjs"),t=require("./ui-campo-texto-Cnn2UAkS.cjs"),l=require("./ui-paleta-ferramentas-Dbj1kBS9.cjs"),n=require("./ui-badge-BxT-sDmV.cjs"),E=require("./ui-card-B86lJXTP.cjs"),s=require("./ui-modal-CvGFGh1h.cjs"),o=require("./ui-skeleton-elhKIh2B.cjs"),c=require("./ui-toast-DGTZKne5.cjs"),a=require("./ui-tabela-propriedades-BBr5sqki.cjs"),p=require("./tools.cjs"),e=require("./camadas.cjs"),S=require("./seletor-mapa-base.cjs"),d=require("./zero-js-triggers-C_gtaojZ.cjs"),g=require("./listener-bag-D5omxZ9h.cjs"),U=require("./leaflet-loader-94z5VsdY.cjs"),u=require("./ssr-safe-CiHD1adl.cjs"),I=require("./form-validacao-ytRYSF3E.cjs"),C=()=>Promise.resolve().then(()=>require("./mapa.cjs")),P=()=>Promise.resolve().then(()=>require("./canvas.cjs"));if(typeof document<"u"){const m=()=>{document.querySelector("ui-mapa, ui-mapa-marcador, ui-mapa-linha")&&!customElements.get("ui-mapa")&&Promise.resolve().then(()=>require("./mapa.cjs")),document.querySelector("ui-canvas-cad")&&!customElements.get("ui-canvas-cad")&&Promise.resolve().then(()=>require("./canvas.cjs"))};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",m,{once:!0}):m()}typeof document<"u"&&d.initZeroJSTriggers();exports.UIBotao=T.UIBotao;exports.UIBotaoPrimario=T.UIBotaoPrimario;exports.ATRIBUTOS_OBSERVADOS_LISTA_FLUTUANTE=r.ATRIBUTOS_OBSERVADOS_LISTA_FLUTUANTE;exports.ListaFlutuantePosicionamento=r.ListaFlutuantePosicionamento;exports.ListaFlutuanteTeclado=r.ListaFlutuanteTeclado;exports.RadioGrupoRegistry=r.RadioGrupoRegistry;exports.UICheckbox=r.UICheckbox;exports.UIListaFlutuante=r.UIListaFlutuante;exports.UIRadio=r.UIRadio;exports.UISelect=r.UISelect;exports.UISwitch=r.UISwitch;exports.UIToggle=r.UIToggle;exports.atualizarEstadoSelecaoLista=r.atualizarEstadoSelecaoLista;exports.criarTemplateListaFlutuante=r.criarTemplateListaFlutuante;exports.renderizarItensLista=r.renderizarItensLista;exports.ATRIBUTOS_OBSERVADOS_SEGMENTED=i.ATRIBUTOS_OBSERVADOS_SEGMENTED;exports.SegmentedIndicadorController=i.SegmentedIndicadorController;exports.UIAvatar=i.UIAvatar;exports.UISegmented=i.UISegmented;exports.UISegmento=i.UISegmento;exports.UITexto=i.UITexto;exports.criarBotaoOpcao=i.criarBotaoOpcao;exports.criarTemplateSegmented=i.criarTemplateSegmented;exports.tratarTecladoSegmented=i.tratarTecladoSegmented;exports.ATRIBUTOS_OBSERVADOS_CAMPO_TEXTO=t.ATRIBUTOS_OBSERVADOS_CAMPO_TEXTO;exports.UICampoTexto=t.UICampoTexto;exports.UIInput=t.UIInput;exports.criarTemplateCampoTexto=t.criarTemplateCampoTexto;exports.sincronizarFeedbackErro=t.sincronizarFeedbackErro;exports.sincronizarIconeSenha=t.sincronizarIconeSenha;exports.sincronizarLabelEPlaceholder=t.sincronizarLabelEPlaceholder;exports.UIIcone=l.UIIcone;exports.UIPaletaFerramentas=l.UIPaletaFerramentas;exports.UIRibbon=l.UIRibbon;exports.UIBadge=n.UIBadge;exports.UIChip=n.UIChip;exports.UIKpi=n.UIKpi;exports.UIMetrica=n.UIMetrica;exports.UIStat=n.UIStat;exports.UITag=n.UITag;exports.UICard=E.UICard;exports.UIDialog=s.UIDialog;exports.UIModal=s.UIModal;exports.aplicarInertForaDoModal=s.aplicarInertForaDoModal;exports.removerInertForaDoModal=s.removerInertForaDoModal;exports.UIDrawer=o.UIDrawer;exports.UIEsqueleto=o.UIEsqueleto;exports.UIGaveta=o.UIGaveta;exports.UIPainelLateral=o.UIPainelLateral;exports.UIPopover=o.UIPopover;exports.UISheet=o.UISheet;exports.UISkeleton=o.UISkeleton;exports.UITooltip=o.UITooltip;exports.atualizarScrollLockDrawer=o.atualizarScrollLockDrawer;exports.gerenciarTabTrap=o.gerenciarTabTrap;exports.isTopMostDrawer=o.isTopMostDrawer;exports.obterElementosFocaveis=o.obterElementosFocaveis;exports.ICONES_ALERTA=c.ICONES_ALERTA;exports.UIAlerta=c.UIAlerta;exports.UIToast=c.UIToast;exports.GerenciadorValoresPropriedades=a.GerenciadorValoresPropriedades;exports.TabelaOrquestradorDados=a.TabelaOrquestradorDados;exports.TabelaRemotaController=a.TabelaRemotaController;exports.TabelaSelecaoController=a.TabelaSelecaoController;exports.UITabela=a.UITabela;exports.UITabelaPropriedades=a.UITabelaPropriedades;exports.abrirPopoverRedimensionamento=a.abrirPopoverRedimensionamento;exports.alternarCategoria=a.alternarCategoria;exports.alternarDirecaoOrdenacao=a.alternarDirecaoOrdenacao;exports.alternarPosicionamentoFlutuante=a.alternarPosicionamentoFlutuante;exports.aplicarOrdenacaoTabela=a.aplicarOrdenacaoTabela;exports.atualizarCampoVisual=a.atualizarCampoVisual;exports.avaliarExpressaoMatematica=a.avaliarExpressaoMatematica;exports.buscarLinhaPropriedade=a.buscarLinhaPropriedade;exports.colapsarTodasCategorias=a.colapsarTodasCategorias;exports.conectarArrastoFlutuante=a.conectarArrastoFlutuante;exports.conectarPainelControles=a.conectarPainelControles;exports.criarControladorSplitter=a.criarControladorSplitter;exports.criarEditorAcao=a.criarEditorAcao;exports.criarEditorBooleano=a.criarEditorBooleano;exports.criarEditorCorCad=a.criarEditorCorCad;exports.criarEditorCorSwatch=a.criarEditorCorSwatch;exports.criarEditorLinetype=a.criarEditorLinetype;exports.criarEditorLineweight=a.criarEditorLineweight;exports.criarEditorNumero=a.criarEditorNumero;exports.criarEditorReadonly=a.criarEditorReadonly;exports.criarEditorSelecao=a.criarEditorSelecao;exports.criarEditorTexto=a.criarEditorTexto;exports.criarEditorValor=a.criarEditorValor;exports.criarLinhaPropriedade=a.criarLinhaPropriedade;exports.executarOrquestracaoCorpo=a.executarOrquestracaoCorpo;exports.executarOrquestracaoHeader=a.executarOrquestracaoHeader;exports.executarRedimensionamentoColuna=a.executarRedimensionamentoColuna;exports.exibirPromptPopoverRedimensionamento=a.exibirPromptPopoverRedimensionamento;exports.expandirTodasCategorias=a.expandirTodasCategorias;exports.focarProximoEditor=a.focarProximoEditor;exports.formatWidth=a.formatWidth;exports.getAlignmentClass=a.getAlignmentClass;exports.getRowHeight=a.getRowHeight;exports.getTextAlign=a.getTextAlign;exports.inicializarScrollVirtualizacao=a.inicializarScrollVirtualizacao;exports.iniciarRedimensionamentoColuna=a.iniciarRedimensionamentoColuna;exports.interpretarIndice=a.interpretarIndice;exports.localizarIndiceItem=a.localizarIndiceItem;exports.montarEstruturaDOM=a.montarEstruturaDOM;exports.orquestrarEstruturaInicial=a.orquestrarEstruturaInicial;exports.proximaDensidade=a.proximaDensidade;exports.registrarAtualizadorEditor=a.registrarAtualizadorEditor;exports.renderizarCategoriasETree=a.renderizarCategoriasETree;exports.renderizarCorpoTabela=a.renderizarCorpoTabela;exports.renderizarHeaderTabela=a.renderizarHeaderTabela;exports.renderizarSeletorTipos=a.renderizarSeletorTipos;exports.sincronizarAtributosTabela=a.sincronizarAtributosTabela;exports.sincronizarPainelControles=a.sincronizarPainelControles;exports.sincronizarSelect=a.sincronizarSelect;exports.tratarMudancaAtributoTabela=a.tratarMudancaAtributoTabela;exports.valoresIguais=a.valoresIguais;exports.ICONES_FERRAMENTAS=p.ICONES_FERRAMENTAS;exports.CamadasDragDropManager=e.CamadasDragDropManager;exports.ICONES=e.ICONES;exports.LIMITE_FEICOES_POR_CAMADA=e.LIMITE_FEICOES_POR_CAMADA;exports.MAPAS_BASE_PADRAO=e.MAPAS_BASE_PADRAO;exports.UICamadas=e.UICamadas;exports.UILayerPanel=e.UILayerPanel;exports.UIPainelCamadas=e.UIPainelCamadas;exports.calcularAreaPoligono=e.calcularAreaPoligono;exports.calcularComprimentoLinha=e.calcularComprimentoLinha;exports.calcularDistanciaPontos=e.calcularDistanciaPontos;exports.calcularSelecaoFeicao=e.calcularSelecaoFeicao;exports.carregarEstadoPersistido=e.carregarEstadoPersistido;exports.escapeHtml=e.escapeHtml;exports.filtrarFeicoesPorBusca=e.filtrarFeicoesPorBusca;exports.formatarMetricaFeicoes=e.formatarMetricaFeicoes;exports.gerarChaveStorage=e.gerarChaveStorage;exports.limparEstadoPersistido=e.limparEstadoPersistido;exports.montarEstadoPersistido=e.montarEstadoPersistido;exports.obterIdsVisiveisFeicoes=e.obterIdsVisiveisFeicoes;exports.reidratarCamadasComOverrides=e.reidratarCamadasComOverrides;exports.removerSelecoesInvalidas=e.removerSelecoesInvalidas;exports.renderizarArvoreCamadas=e.renderizarArvoreCamadas;exports.renderizarGridMapasBase=e.renderizarGridMapasBase;exports.renderizarRodapeAcoes=e.renderizarRodapeAcoes;exports.renderizarThumbGeometria=e.renderizarThumbGeometria;exports.salvarEstadoPersistido=e.salvarEstadoPersistido;exports.snapshotCamada=e.snapshotCamada;exports.UIMapaBase=S.UIMapaBase;exports.UISeletorMapaBase=S.UISeletorMapaBase;exports.UIBus=d.UIBus;exports.initZeroJSTriggers=d.initZeroJSTriggers;exports.ListenerBag=g.ListenerBag;exports.carregarLeaflet=U.carregarLeaflet;exports.obterLeafletSincrono=U.obterLeafletSincrono;exports.SafeHTMLElement=u.SafeHTMLElement;exports.definirCustomElement=u.definirCustomElement;exports.isBrowser=u.isBrowser;exports.cliqueVeioDeRotuloExterno=I.cliqueVeioDeRotuloExterno;exports.gerarIdUnico=I.gerarIdUnico;exports.obterRotuloExterno=I.obterRotuloExterno;exports.carregarModuloCanvas=P;exports.carregarModuloMapa=C;
|