@thibezer/ui-components-kit 2.0.0 → 2.2.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 +78 -0
- package/README.md +760 -739
- package/dist/botao.cjs +1 -1
- package/dist/botao.js +1 -1
- package/dist/camadas.cjs +175 -142
- package/dist/camadas.js +1335 -1054
- package/dist/canvas.cjs +99 -140
- package/dist/canvas.js +5552 -1283
- package/dist/components/ui-barra-ferramentas/tipos.d.ts +2 -2
- package/dist/components/ui-barra-ferramentas/ui-paleta-ferramentas.d.ts +2 -2
- package/dist/components/ui-camadas/camadas-adapters.d.ts +45 -0
- package/dist/components/ui-camadas/camadas-arvore-renderer.d.ts +9 -0
- package/dist/components/ui-camadas/camadas-drag-drop.d.ts +4 -0
- package/dist/components/ui-camadas/camadas-metricas.d.ts +8 -1
- package/dist/components/ui-camadas/camadas-persistencia.d.ts +5 -0
- package/dist/components/ui-camadas/camadas-rodape.d.ts +5 -0
- package/dist/components/ui-camadas/index.d.ts +1 -0
- package/dist/components/ui-camadas/tipos.d.ts +8 -0
- package/dist/components/ui-camadas/ui-camadas.d.ts +11 -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 +16586 -12150
- 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/curva_leaflet.d.ts +21 -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_curvas.d.ts +43 -0
- package/dist/gerencigeo-canvas/feature_desenho.d.ts +55 -0
- package/dist/gerencigeo-canvas/feature_desenho_controle.d.ts +91 -0
- package/dist/gerencigeo-canvas/feature_edicao_ops.d.ts +46 -0
- package/dist/gerencigeo-canvas/feature_editor_vertices.d.ts +80 -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 +15 -0
- package/dist/gerencigeo-canvas/feature_snap.d.ts +25 -0
- package/dist/gerencigeo-canvas/feature_types.d.ts +101 -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 +4 -2
- package/dist/index.cjs +1 -1
- package/dist/index.js +132 -121
- 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 +4 -4
- 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 +26 -7
- package/dist/tipos-vue.d.ts +24 -7
- package/dist/tools.cjs +1 -1
- package/dist/tools.js +1 -1
- package/dist/ui-botao-BOOnP8ds.cjs +12 -0
- package/dist/ui-botao-DfqSivHl.js +165 -0
- 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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Tipos compartilhados pelos componentes de barra de ferramentas:
|
|
3
|
-
* - <ui-ribbon> →
|
|
4
|
-
* - <ui-paleta-ferramentas> → paleta com flyouts
|
|
3
|
+
* - <ui-ribbon> → barra contextual com abas e grupos
|
|
4
|
+
* - <ui-paleta-ferramentas> → paleta de ferramentas com flyouts expansíveis
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
7
|
* - `botao` ação pontual (Desfazer, Colar…). Padrão no ribbon.
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { FerramentaItem } from './tipos';
|
|
2
2
|
import { SafeHTMLElement } from '../../core/ssr-safe';
|
|
3
3
|
/**
|
|
4
|
-
* <ui-paleta-ferramentas> — paleta de ferramentas
|
|
4
|
+
* <ui-paleta-ferramentas> — paleta de ferramentas gráficas com grupos expansíveis.
|
|
5
5
|
*
|
|
6
6
|
* - Itens com `filhos` viram um grupo: mostra a última ferramenta usada e abre um flyout
|
|
7
7
|
* com clique longo, botão direito ou seta (→ na vertical, ↓ na horizontal).
|
|
8
8
|
* - Ferramentas (`tipo` padrão) são exclusivas; `toggle` liga/desliga; `botao` só dispara ação.
|
|
9
9
|
* - Com o atributo `atalhos`, a tecla `atalho` do item ativa a ferramenta; teclas repetidas
|
|
10
|
-
* entre itens percorrem o grupo
|
|
10
|
+
* entre itens percorrem o grupo.
|
|
11
11
|
*
|
|
12
12
|
* Atributos: valor, orientacao (vertical|horizontal), colunas (1|2), tamanho (sm|md|lg), atalhos
|
|
13
13
|
* Propriedades: ferramentas, valor
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { CamadaItem, FeicaoItem } from './tipos';
|
|
2
|
+
import { CanvasLayerDef, CanvasLayerCategory, CanvasLayerType } from '../../gerencigeo-canvas/types';
|
|
3
|
+
/**
|
|
4
|
+
* Converte uma definição de camada do Canvas CAD (CanvasLayerDef)
|
|
5
|
+
* para o modelo de camada do painel <ui-camadas> (CamadaItem)
|
|
6
|
+
*/
|
|
7
|
+
export declare function converterCanvasLayerParaCamadaItem(layer: Partial<CanvasLayerDef> & {
|
|
8
|
+
id: string;
|
|
9
|
+
}): CamadaItem;
|
|
10
|
+
/**
|
|
11
|
+
* Converte um item de camada do painel <ui-camadas> (CamadaItem)
|
|
12
|
+
* para o modelo interno de camada do Canvas CAD (CanvasLayerDef)
|
|
13
|
+
*/
|
|
14
|
+
export declare function converterCamadaItemParaCanvasLayer(item: CamadaItem, categoriaPadrao?: CanvasLayerCategory, tipoPadrao?: CanvasLayerType): CanvasLayerDef;
|
|
15
|
+
/**
|
|
16
|
+
* Converte uma feição genérica do Canvas/GeoJSON para FeicaoItem do <ui-camadas>
|
|
17
|
+
*/
|
|
18
|
+
export declare function converterFeicaoParaItem(feicao: {
|
|
19
|
+
id: string;
|
|
20
|
+
nome?: string;
|
|
21
|
+
name?: string;
|
|
22
|
+
layerId?: string;
|
|
23
|
+
camadaId?: string;
|
|
24
|
+
tipo?: string;
|
|
25
|
+
type?: string;
|
|
26
|
+
geometria?: {
|
|
27
|
+
tipo?: string;
|
|
28
|
+
type?: string;
|
|
29
|
+
coordenadas?: unknown;
|
|
30
|
+
coordinates?: unknown;
|
|
31
|
+
};
|
|
32
|
+
coordinates?: unknown;
|
|
33
|
+
cor?: string;
|
|
34
|
+
color?: string;
|
|
35
|
+
visivel?: boolean;
|
|
36
|
+
visible?: boolean;
|
|
37
|
+
bloqueada?: boolean;
|
|
38
|
+
locked?: boolean;
|
|
39
|
+
status?: string;
|
|
40
|
+
categoria?: string;
|
|
41
|
+
category?: string;
|
|
42
|
+
propriedades?: Record<string, unknown>;
|
|
43
|
+
properties?: Record<string, unknown>;
|
|
44
|
+
[key: string]: unknown;
|
|
45
|
+
}, camadaIdFallback?: string): FeicaoItem;
|
|
@@ -15,4 +15,13 @@ export interface ParametrosRenderArvore {
|
|
|
15
15
|
}
|
|
16
16
|
export { escapeHtml };
|
|
17
17
|
export declare function renderizarThumbGeometria(tipo: string | undefined, cor: string): string;
|
|
18
|
+
export interface CamadaNodoHierarquico {
|
|
19
|
+
camada: CamadaItem;
|
|
20
|
+
depth: number;
|
|
21
|
+
subcamadas: CamadaNodoHierarquico[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Organiza a lista de camadas em uma árvore hierárquica de nós baseada em parentId ou children
|
|
25
|
+
*/
|
|
26
|
+
export declare function construirHierarquiaCamadas(camadas: CamadaItem[]): CamadaNodoHierarquico[];
|
|
18
27
|
export declare function renderizarArvoreCamadas(params: ParametrosRenderArvore): string;
|
|
@@ -15,4 +15,8 @@ export declare class CamadasDragDropManager {
|
|
|
15
15
|
bindAll(): void;
|
|
16
16
|
bindInlineRename(): void;
|
|
17
17
|
bindDragAndDrop(): void;
|
|
18
|
+
/**
|
|
19
|
+
* Suporte a arraste por toque e ponteiro no handle (.ui-col-drag) para tablets e mobile
|
|
20
|
+
*/
|
|
21
|
+
bindTouchDragAndDrop(): void;
|
|
18
22
|
}
|
|
@@ -8,7 +8,14 @@ export declare function calcularDistanciaPontos(p1: [number, number], p2: [numbe
|
|
|
8
8
|
*/
|
|
9
9
|
export declare function calcularComprimentoLinha(coords: unknown): number;
|
|
10
10
|
/**
|
|
11
|
-
* Calcula a área de um anel
|
|
11
|
+
* Calcula a área de um único anel fechado de coordenadas em m² usando fórmula esférica
|
|
12
|
+
*/
|
|
13
|
+
export declare function calcularAreaAnelSimples(coords: unknown): number;
|
|
14
|
+
/**
|
|
15
|
+
* Calcula a área de um polígono em m² com suporte a:
|
|
16
|
+
* - Anel simples: [ [lat,lon], [lat,lon], ... ]
|
|
17
|
+
* - Polygon GeoJSON com furos (anel exterior menos furos): [ [exterior], [furo1], [furo2] ]
|
|
18
|
+
* - MultiPolygon GeoJSON: [ [ [exterior], [furo] ], [ [exterior] ] ]
|
|
12
19
|
*/
|
|
13
20
|
export declare function calcularAreaPoligono(coords: unknown): number;
|
|
14
21
|
/**
|
|
@@ -5,6 +5,7 @@ export interface CamadaPropsPersistidas {
|
|
|
5
5
|
locked?: boolean;
|
|
6
6
|
opacity?: number;
|
|
7
7
|
color?: string;
|
|
8
|
+
parentId?: string | null;
|
|
8
9
|
}
|
|
9
10
|
export interface CamadaOverridePersistido extends CamadaPropsPersistidas {
|
|
10
11
|
/**
|
|
@@ -20,6 +21,8 @@ export interface EstadoPersistidoCamadas {
|
|
|
20
21
|
camadaAtivaId?: string | null;
|
|
21
22
|
painelColapsado?: boolean;
|
|
22
23
|
ordemCamadasIds?: string[];
|
|
24
|
+
/** Ordem em que a aplicação enviou as camadas quando `ordemCamadasIds` foi salva. */
|
|
25
|
+
ordemOrigemIds?: string[];
|
|
23
26
|
mapaBaseAtivo?: string;
|
|
24
27
|
densidade?: 'compacto' | 'normal';
|
|
25
28
|
altura?: number | null;
|
|
@@ -57,6 +60,8 @@ export interface EntradaMontagemEstado {
|
|
|
57
60
|
mapaBaseAtivo: string;
|
|
58
61
|
densidade: 'compacto' | 'normal';
|
|
59
62
|
altura: number | null;
|
|
63
|
+
/** Camadas excluídas pelo usuário: seus overrides deixam de ser guardados. */
|
|
64
|
+
camadasRemovidas?: Iterable<string>;
|
|
60
65
|
}
|
|
61
66
|
/**
|
|
62
67
|
* Monta o estado a persistir. Se ainda não há camadas na instância,
|
|
@@ -1,2 +1,7 @@
|
|
|
1
1
|
import { CamadaItem, FeicaoItem } from './tipos';
|
|
2
|
+
/**
|
|
3
|
+
* Formata opções de camadas para o select de mover, preservando
|
|
4
|
+
* a hierarquia visual com recuo e ícones de pasta
|
|
5
|
+
*/
|
|
6
|
+
export declare function formatarOpcoesCamadasHierarquicas(camadas: CamadaItem[]): string;
|
|
2
7
|
export declare function renderizarRodapeAcoes(camadas: CamadaItem[], feicoes: FeicaoItem[], selecionadasIds: Set<string>): string;
|
|
@@ -37,6 +37,9 @@ export interface CamadaItem {
|
|
|
37
37
|
order?: number;
|
|
38
38
|
count?: number;
|
|
39
39
|
description?: string;
|
|
40
|
+
parentId?: string | null;
|
|
41
|
+
children?: CamadaItem[];
|
|
42
|
+
isGroup?: boolean;
|
|
40
43
|
[key: string]: unknown;
|
|
41
44
|
}
|
|
42
45
|
export interface MapaBaseItem {
|
|
@@ -86,6 +89,11 @@ export interface DetalheEventoRenomearCamada {
|
|
|
86
89
|
camadaId: string;
|
|
87
90
|
novoNome: string;
|
|
88
91
|
}
|
|
92
|
+
export interface DetalheEventoMoverHierarquiaCamada {
|
|
93
|
+
camadaId: string;
|
|
94
|
+
novoParentId: string | null;
|
|
95
|
+
camada?: CamadaItem;
|
|
96
|
+
}
|
|
89
97
|
export interface DetalheEventoFeicao {
|
|
90
98
|
feicaoId: string;
|
|
91
99
|
feicao?: FeicaoItem;
|
|
@@ -9,6 +9,11 @@ export declare class UICamadas extends SafeHTMLElement implements CamadasHostCom
|
|
|
9
9
|
private resizerController;
|
|
10
10
|
private alturaCustomizada;
|
|
11
11
|
private conectado;
|
|
12
|
+
private profundidadeLote;
|
|
13
|
+
private renderPendente;
|
|
14
|
+
private camadasRemovidas;
|
|
15
|
+
/** Painéis conectados sem `id` nem `storage-key`: dividem a mesma chave de persistência. */
|
|
16
|
+
private static instanciasChavePadrao;
|
|
12
17
|
private origensCamadas;
|
|
13
18
|
private salvarLembrancaDebounced;
|
|
14
19
|
camadas: CamadaItem[];
|
|
@@ -74,6 +79,7 @@ export declare class UICamadas extends SafeHTMLElement implements CamadasHostCom
|
|
|
74
79
|
/** Atalho reativo para `definirMapasBase()` — não dispara eventos. */
|
|
75
80
|
get basemaps(): MapaBaseItem[];
|
|
76
81
|
set basemaps(mapas: MapaBaseItem[]);
|
|
82
|
+
private achatarCamadas;
|
|
77
83
|
definirCamadas(camadas: CamadaItem[], feicoes?: FeicaoItem[]): void;
|
|
78
84
|
definirFeicoes(feicoes: FeicaoItem[]): void;
|
|
79
85
|
definirMapasBase(mapas: MapaBaseItem[]): void;
|
|
@@ -98,6 +104,11 @@ export declare class UICamadas extends SafeHTMLElement implements CamadasHostCom
|
|
|
98
104
|
alternarColapso(emitirEvento?: boolean): void;
|
|
99
105
|
private definirColapso;
|
|
100
106
|
solicitarRenderizacao(): void;
|
|
107
|
+
/**
|
|
108
|
+
* Agrupa várias mutações (`adicionarFeicao` em laço, por exemplo) em uma só renderização, ao fim de `fn`.
|
|
109
|
+
* Sem isto, cada chamada redesenha a árvore inteira.
|
|
110
|
+
*/
|
|
111
|
+
emLote(fn: () => void): void;
|
|
101
112
|
dispararEvento(nome: string, detalhe: unknown): void;
|
|
102
113
|
private render;
|
|
103
114
|
private conectarEventosGerais;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type EstilosExternos = string | CSSStyleSheet[] | null | undefined;
|
|
2
|
+
export declare function estilosParaTexto(entrada: EstilosExternos): string[];
|
|
3
|
+
export declare class EstilosExternosShadow {
|
|
4
|
+
private shadow;
|
|
5
|
+
private textos;
|
|
6
|
+
private adotadas;
|
|
7
|
+
private fallback;
|
|
8
|
+
constructor(shadow: ShadowRoot);
|
|
9
|
+
/** O que o consumidor pediu por último (para reaplicar quando o componente reconecta). */
|
|
10
|
+
get pedido(): readonly string[];
|
|
11
|
+
definir(entrada: EstilosExternos): void;
|
|
12
|
+
/** Tira as folhas do shadow root, mantendo o pedido para `aplicar()` depois. */
|
|
13
|
+
limpar(): void;
|
|
14
|
+
aplicar(): void;
|
|
15
|
+
private remover;
|
|
16
|
+
}
|
|
@@ -24,3 +24,7 @@ export declare function tratarCliqueMarcador(ctx: ContextoEventosCanvas, pId: st
|
|
|
24
24
|
lat: number;
|
|
25
25
|
lon: number;
|
|
26
26
|
}) => void, customMarkerClickHandler?: (pontoId: number, isVizinho?: boolean) => void): void;
|
|
27
|
+
export declare function tratarCliqueSegmento(ctx: ContextoEventosCanvas, segmentoId: string | number, segmento: any, coords?: {
|
|
28
|
+
lat: number;
|
|
29
|
+
lon: number;
|
|
30
|
+
}, customSegmentoClickHandler?: (segmentoId: string | number, segmento: any) => void): void;
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
import { CanvasLayerManager } from '../../gerencigeo-canvas/layer_manager';
|
|
2
|
+
import { LayerStyleDef } from '../../gerencigeo-canvas/types';
|
|
3
|
+
import { Feicao, EstiloFeicao, LatLonPar } from '../../gerencigeo-canvas/feature_types';
|
|
4
|
+
import { RegraVersoes } from '../../gerencigeo-canvas/feature_versoes';
|
|
5
|
+
import { UsuarioRemoto } from '../../gerencigeo-canvas/feature_cursores';
|
|
6
|
+
import { RefFeicao } from '../../gerencigeo-canvas/feature_selecao';
|
|
7
|
+
import { CaixaPx, ModoCaixa } from '../../gerencigeo-canvas/feature_caixa';
|
|
8
|
+
import { MargensPopup } from '../../gerencigeo-canvas/feature_popup';
|
|
9
|
+
import { default as L } from 'leaflet';
|
|
10
|
+
import { MotivoRecusaEdicao } from '../../gerencigeo-canvas/feature_edicao_ops';
|
|
11
|
+
import { ExcluirSnap } from '../../gerencigeo-canvas/feature_snap';
|
|
12
|
+
import { Ferramenta } from '../../gerencigeo-canvas/feature_desenho';
|
|
13
|
+
import { MargensHud } from '../../gerencigeo-canvas/feature_hud';
|
|
14
|
+
export declare const TIPO_CAMADA_FEICOES = "feicoes";
|
|
15
|
+
export interface OpcoesCamadaFeicoes {
|
|
16
|
+
nome?: string;
|
|
17
|
+
zIndex?: number;
|
|
18
|
+
opacidade?: number;
|
|
19
|
+
interativo?: boolean;
|
|
20
|
+
estilo?: Partial<LayerStyleDef>;
|
|
21
|
+
}
|
|
22
|
+
/** Opções de `aplicarLote` / `atualizarFeicao`. */
|
|
23
|
+
export interface OpcoesLote extends OpcoesCamadaFeicoes {
|
|
24
|
+
/**
|
|
25
|
+
* Em atualizações, `propriedades` informadas SUBSTITUEM as atuais (o padrão é mesclar, e chaves apagadas
|
|
26
|
+
* pelo consumidor ficam para trás). Sem `propriedades` no item, nada muda.
|
|
27
|
+
*/
|
|
28
|
+
substituirPropriedades?: boolean;
|
|
29
|
+
}
|
|
30
|
+
/** Itens de atualização: `id` aponta a feição; o resto é mesclado como em `atualizarFeicao`. */
|
|
31
|
+
export type AtualizacaoFeicao = Record<string, any> & {
|
|
32
|
+
id: string;
|
|
33
|
+
};
|
|
34
|
+
export interface LoteFeicoes {
|
|
35
|
+
adicionar?: unknown[];
|
|
36
|
+
atualizar?: AtualizacaoFeicao[];
|
|
37
|
+
remover?: string[];
|
|
38
|
+
}
|
|
39
|
+
export interface ResultadoLote {
|
|
40
|
+
adicionadas: number;
|
|
41
|
+
atualizadas: number;
|
|
42
|
+
removidas: number;
|
|
43
|
+
/** Ids (ou posições, quando não há id) recusados: geometria inválida, feição inexistente numa atualização, camada que não é de feições. */
|
|
44
|
+
recusadas: string[];
|
|
45
|
+
}
|
|
46
|
+
export interface ResultadoFeicoes {
|
|
47
|
+
/** Quantas feições entraram na camada. */
|
|
48
|
+
aceitas: number;
|
|
49
|
+
/** Ids (ou posições, quando não há id) das feições recusadas por geometria inválida. */
|
|
50
|
+
recusadas: string[];
|
|
51
|
+
}
|
|
52
|
+
interface Contexto {
|
|
53
|
+
obterLayerManager: () => CanvasLayerManager;
|
|
54
|
+
obterMapa: () => L.Map | null;
|
|
55
|
+
/** Dispara o evento do componente. Com `cancelavel`, devolve `true` se algum ouvinte chamou `preventDefault()`. */
|
|
56
|
+
emitir: (evento: string, detalhe: unknown, cancelavel?: boolean) => unknown;
|
|
57
|
+
/** O snap foi ligado/desligado (para refletir no botão da barra). */
|
|
58
|
+
aoSnapMudar?: (ligado: boolean) => void;
|
|
59
|
+
/** A ferramenta de desenho ativa mudou (`null` = nenhuma). */
|
|
60
|
+
aoFerramenta?: (ferramenta: Ferramenta | null) => void;
|
|
61
|
+
/** Regra de oficial × prévia compartilhada com o renderizador (o componente a põe no contexto de renderização). */
|
|
62
|
+
regra?: RegraVersoes;
|
|
63
|
+
}
|
|
64
|
+
/** Opções do popup da feição. */
|
|
65
|
+
export interface OpcoesPopup {
|
|
66
|
+
/** A ação "copiar" grava as coordenadas na área de transferência (padrão `true`); `cad-feicao-acao` sai de qualquer jeito. */
|
|
67
|
+
copiarParaAreaDeTransferencia?: boolean;
|
|
68
|
+
}
|
|
69
|
+
export interface ResultadoFerramenta {
|
|
70
|
+
ok: boolean;
|
|
71
|
+
motivo?: 'ferramenta-invalida' | 'sem-mapa' | 'sem-camada' | 'camada-invalida' | 'camada-bloqueada';
|
|
72
|
+
}
|
|
73
|
+
export interface ResultadoEdicao {
|
|
74
|
+
ok: boolean;
|
|
75
|
+
motivo?: MotivoRecusaEdicao | 'inexistente' | 'sem-mapa';
|
|
76
|
+
}
|
|
77
|
+
export declare class GerenciadorFeicoes {
|
|
78
|
+
private contexto;
|
|
79
|
+
private selecao;
|
|
80
|
+
private popup;
|
|
81
|
+
private editor;
|
|
82
|
+
private snap;
|
|
83
|
+
private desenho;
|
|
84
|
+
private camadaDesenho;
|
|
85
|
+
private estiloDesenho;
|
|
86
|
+
private sequenciaId;
|
|
87
|
+
private regra;
|
|
88
|
+
private cacheOficiais;
|
|
89
|
+
/** id -> posição na lista da camada (válido enquanto `lista` for a lista atual); evita varrer a camada a cada consulta. */
|
|
90
|
+
private posicoes;
|
|
91
|
+
private cursores;
|
|
92
|
+
private hoverId;
|
|
93
|
+
private hoverAgendado;
|
|
94
|
+
private margensHud;
|
|
95
|
+
/** Aceita a coordenada (0, 0) exata nas feições de entrada (atributo `aceitar-origem`). */
|
|
96
|
+
aceitarOrigem: boolean;
|
|
97
|
+
private opcoesPopup;
|
|
98
|
+
constructor(contexto: Contexto);
|
|
99
|
+
/** Depois de qualquer mudança nos dados: descarta seleção órfã e atualiza/fecha o popup aberto. */
|
|
100
|
+
private aposDados;
|
|
101
|
+
private lista;
|
|
102
|
+
private posicaoDe;
|
|
103
|
+
/** Feição da camada pelo id (O(1)); `undefined` se não existe. */
|
|
104
|
+
buscar(camadaId: string, id: string): Feicao | undefined;
|
|
105
|
+
private garantirCamada;
|
|
106
|
+
private opcoesNormalizacao;
|
|
107
|
+
definirFeicoes(camadaId: string, brutas: unknown[], opcoes?: OpcoesCamadaFeicoes): ResultadoFeicoes;
|
|
108
|
+
adicionarFeicao(camadaId: string, bruta: unknown, opcoes?: OpcoesCamadaFeicoes): Feicao | null;
|
|
109
|
+
/**
|
|
110
|
+
* Mescla campos de primeiro nível; `estilo` e `propriedades` também são mesclados. Com `substituirPropriedades`,
|
|
111
|
+
* `propriedades` informadas trocam as atuais por inteiro (atributos ausentes somem).
|
|
112
|
+
*/
|
|
113
|
+
atualizarFeicao(camadaId: string, id: string, parcial: Record<string, any>, opcoes?: Pick<OpcoesLote, 'substituirPropriedades'>): Feicao | null;
|
|
114
|
+
/** Grava uma feição já normalizada (usado quando o próprio mapa a altera, como ao arrastar um texto). */
|
|
115
|
+
substituir(camadaId: string, feicao: Feicao): void;
|
|
116
|
+
removerFeicao(camadaId: string, id: string): boolean;
|
|
117
|
+
/**
|
|
118
|
+
* Várias mudanças numa só regravação e num só `aposDados`: remove, depois atualiza, depois adiciona.
|
|
119
|
+
* Adicionar um id que já existe substitui a feição mantendo a posição (a ordem de empilhamento não muda).
|
|
120
|
+
*/
|
|
121
|
+
aplicarLote(camadaId: string, lote: LoteFeicoes, opcoes?: OpcoesLote): ResultadoLote;
|
|
122
|
+
private mesclar;
|
|
123
|
+
private aplicar;
|
|
124
|
+
obterFeicoes(camadaId: string): Feicao[];
|
|
125
|
+
/** Traduz as ações vindas do renderizador no evento a disparar pelo componente. */
|
|
126
|
+
tratarAcaoCamada(acao: string, detalhe: {
|
|
127
|
+
camadaId: string;
|
|
128
|
+
feicao: Feicao;
|
|
129
|
+
aditivo?: boolean;
|
|
130
|
+
}): string | null;
|
|
131
|
+
selecionarFeicoes(refs: RefFeicao[], aditivo?: boolean): void;
|
|
132
|
+
alternarSelecaoFeicao(ref: RefFeicao): void;
|
|
133
|
+
limparSelecaoFeicoes(): void;
|
|
134
|
+
/** Esc ou clique no vazio: durante a edição só encerra a edição; fora dela, limpa a seleção. */
|
|
135
|
+
aoPedirLimpeza(): void;
|
|
136
|
+
obterFeicoesSelecionadas(): Feicao[];
|
|
137
|
+
/** Laço: seleciona (substituindo) as feições de camadas selecionáveis tocadas pelo polígono; a ferramenta encerra. */
|
|
138
|
+
private selecionarNoLaco;
|
|
139
|
+
/** Caixa de seleção: só feições de camadas visíveis, interativas e desbloqueadas, com toque geométrico real. */
|
|
140
|
+
selecionarNaCaixa(caixa: CaixaPx, modo: ModoCaixa, aditivo: boolean): void;
|
|
141
|
+
definirMargensPopup(m: Partial<MargensPopup>): void;
|
|
142
|
+
fecharPopup(): void;
|
|
143
|
+
/** Opções do popup (hoje: se "copiar" escreve na área de transferência). Mescla com o que já foi definido. */
|
|
144
|
+
definirOpcoesPopup(opcoes: OpcoesPopup): void;
|
|
145
|
+
obterOpcoesPopup(): Required<OpcoesPopup>;
|
|
146
|
+
/**
|
|
147
|
+
* Margens (px) de barras e painéis que cobrem o mapa: os HUDs de desenho e de edição se centralizam na área
|
|
148
|
+
* que sobra. Mescla com o que já foi definido; `undefined` numa chave volta ao padrão (ou ao CSS `--cad-hud-*` do host).
|
|
149
|
+
*/
|
|
150
|
+
definirMargensHud(m: Partial<MargensHud>): void;
|
|
151
|
+
private aplicarMargensHud;
|
|
152
|
+
get regraVersoes(): RegraVersoes;
|
|
153
|
+
private oficiaisDe;
|
|
154
|
+
/** Aparece segundo a regra de oficial × prévia? */
|
|
155
|
+
visivelPorVersao(f: Feicao): boolean;
|
|
156
|
+
/** Vai para a tela e responde a clique, caixa, laço, snap e hover: não excluída, não oculta e visível pela regra de versões. */
|
|
157
|
+
desenhada(f: Feicao): boolean;
|
|
158
|
+
/** Regra da seleção: a feição em edição continua selecionada mesmo se for ocultada no meio da edição. */
|
|
159
|
+
private selecionavelAgora;
|
|
160
|
+
private aplicarVersoes;
|
|
161
|
+
get previasGlobais(): boolean;
|
|
162
|
+
/** Mostra (ou esconde) as prévias de todas as entidades. Prévias de entidades sem oficial aparecem sempre. */
|
|
163
|
+
definirPreviasGlobais(ligado: boolean): void;
|
|
164
|
+
alternarPreviasGlobais(): void;
|
|
165
|
+
/** Liga/desliga a prévia da entidade a que a feição pertence. Devolve o novo estado, ou `null` se a feição não existe. */
|
|
166
|
+
alternarPrevia(camadaId: string, id: string): boolean | null;
|
|
167
|
+
/** A prévia da feição está sendo mostrada por pedido (global ou individual)? */
|
|
168
|
+
previaSolicitada(camadaId: string, id: string): boolean;
|
|
169
|
+
atualizarCursorRemoto(usuario: UsuarioRemoto, posicao: unknown): boolean;
|
|
170
|
+
removerCursorRemoto(id: string): boolean;
|
|
171
|
+
limparCursoresRemotos(): void;
|
|
172
|
+
get cursoresRemotos(): number;
|
|
173
|
+
/** Mostra o que estava escondido (camada oculta, prévia não solicitada) para a feição poder ser vista. */
|
|
174
|
+
private garantirVisivel;
|
|
175
|
+
private limitesDe;
|
|
176
|
+
private enquadrar;
|
|
177
|
+
/** Aproxima da feição; liga a camada e a prévia, se estiverem escondidas. Ponto: voa até z ≥ 17. */
|
|
178
|
+
zoomParaFeicao(camadaId: string, id: string): boolean;
|
|
179
|
+
zoomParaFeicoes(refs: RefFeicao[]): boolean;
|
|
180
|
+
/** Enquadra todas as feições das camadas de feições visíveis (que aparecem pela regra de versões). */
|
|
181
|
+
ajustarTudo(): boolean;
|
|
182
|
+
/** Enquadra a camada inteira; se estava oculta, torna-a visível. */
|
|
183
|
+
ajustarCamada(camadaId: string): boolean;
|
|
184
|
+
private feicaoSob;
|
|
185
|
+
/** Emite `cad-feicao-hover` quando a feição sob o mouse muda (uma checagem por quadro). */
|
|
186
|
+
aoMoverMouse(e: MouseEvent): void;
|
|
187
|
+
/** Botão direito: emite `cad-feicao-menu` com a feição sob o cursor (ou `null`), para o consumidor abrir o próprio menu. */
|
|
188
|
+
menuContexto(e: MouseEvent): void;
|
|
189
|
+
destruir(): void;
|
|
190
|
+
private tratarAcaoPopup;
|
|
191
|
+
get snapLigado(): boolean;
|
|
192
|
+
get snapAtivo(): boolean;
|
|
193
|
+
definirSnap(ligado: boolean): void;
|
|
194
|
+
alternarSnap(): void;
|
|
195
|
+
conectarTeclado(): void;
|
|
196
|
+
desconectarTeclado(): void;
|
|
197
|
+
/** Feições visíveis das camadas de feições cujo envelope toca um quadrado de `tolPx` px em volta de `coord`. */
|
|
198
|
+
private candidatasEm;
|
|
199
|
+
/** Snap de uma coordenada contra as feições visíveis de todas as camadas de feições (via índice espacial). */
|
|
200
|
+
buscarSnapEm(coord: [number, number], excluir?: ExcluirSnap): import('../../gerencigeo-canvas').ResultadoSnap | null;
|
|
201
|
+
get editando(): boolean;
|
|
202
|
+
iniciarEdicao(camadaId: string, id: string): ResultadoEdicao;
|
|
203
|
+
pararEdicao(): void;
|
|
204
|
+
get ferramentaAtiva(): Ferramenta | null;
|
|
205
|
+
/** Camada que recebe o que for desenhado. Não existe camada padrão: o consumidor escolhe. */
|
|
206
|
+
definirCamadaDesenho(camadaId: string | null): void;
|
|
207
|
+
get camadaDeDesenho(): string | null;
|
|
208
|
+
/** Estilo aplicado às feições desenhadas daqui para frente (o conta-gotas também o altera). */
|
|
209
|
+
definirEstiloDesenho(estilo: EstiloFeicao): void;
|
|
210
|
+
obterEstiloDesenho(): EstiloFeicao;
|
|
211
|
+
alternarFerramenta(nome: string): ResultadoFerramenta;
|
|
212
|
+
ativarFerramenta(nome: string, opcoes?: {
|
|
213
|
+
fechar?: boolean;
|
|
214
|
+
iniciarEm?: LatLonPar;
|
|
215
|
+
}): ResultadoFerramenta;
|
|
216
|
+
desativarFerramenta(): void;
|
|
217
|
+
limparMedicao(): void;
|
|
218
|
+
/** Vértices já colocados na figura em andamento (0 sem ferramenta ou sem figura). */
|
|
219
|
+
get nosDesenho(): number;
|
|
220
|
+
desfazerVerticeDesenho(): boolean;
|
|
221
|
+
/** Liga/desliga a tecla S do snap (o botão e `definirSnap` continuam valendo). */
|
|
222
|
+
definirAtalhoSnap(ligado: boolean): void;
|
|
223
|
+
private motivoCamadaDesenhoInvalida;
|
|
224
|
+
private novoId;
|
|
225
|
+
private idLivre;
|
|
226
|
+
/**
|
|
227
|
+
* Clique da ferramenta texto: emite `cad-texto-solicitado` (cancelável). Com `preventDefault()` o consumidor assume a
|
|
228
|
+
* entrada do texto e depois chama `detalhe.concluir(texto)` (cria na camada de desenho, com o estilo de desenho) ou
|
|
229
|
+
* simplesmente não faz nada para cancelar. Sem `preventDefault()`, aparece o campo inline.
|
|
230
|
+
*/
|
|
231
|
+
private solicitarTexto;
|
|
232
|
+
private concluirFerramenta;
|
|
233
|
+
/** Conta-gotas: copia o estilo da feição sob o clique para o estilo de desenho. */
|
|
234
|
+
private amostrarEstilo;
|
|
235
|
+
/**
|
|
236
|
+
* Divide polígonos pela linha de corte. Alvos: os polígonos selecionados; sem seleção, o primeiro
|
|
237
|
+
* polígono (de camada visível, interativa e desbloqueada) que a linha corta.
|
|
238
|
+
*/
|
|
239
|
+
dividirComLinha(linha: LatLonPar[]): boolean;
|
|
240
|
+
/** Cria um polígono de buffer ao redor da feição (na camada dela, ou em `camadaDestino`). */
|
|
241
|
+
gerarBuffer(camadaId: string, id: string, metros: number, opcoes?: {
|
|
242
|
+
camadaDestino?: string;
|
|
243
|
+
id?: string;
|
|
244
|
+
}): Feicao | null;
|
|
245
|
+
/** Copia a feição deslocada (em metros para leste/norte). */
|
|
246
|
+
duplicarFeicao(camadaId: string, id: string, deslocamento?: {
|
|
247
|
+
lesteM?: number;
|
|
248
|
+
norteM?: number;
|
|
249
|
+
}, opcoes?: {
|
|
250
|
+
id?: string;
|
|
251
|
+
}): Feicao | null;
|
|
252
|
+
/**
|
|
253
|
+
* Junta linhas (encadeando pontas) ou dois polígonos (por uma ponte) numa feição só; as originais saem.
|
|
254
|
+
* Linhas com pontas a até `toleranciaM` se ligam; polígonos precisam estar a até `toleranciaM` e
|
|
255
|
+
* não podem ter bordas que se cruzam.
|
|
256
|
+
*/
|
|
257
|
+
juntarFeicoes(camadaId: string, ids: string[], opcoes?: {
|
|
258
|
+
toleranciaM?: number;
|
|
259
|
+
id?: string;
|
|
260
|
+
}): Feicao | null;
|
|
261
|
+
}
|
|
262
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Ferramenta } from '../../gerencigeo-canvas/feature_desenho';
|
|
2
|
+
/** Interpreta o atributo; nomes desconhecidos são ignorados e a ordem da barra é sempre a canônica. */
|
|
3
|
+
export declare function interpretarFerramentas(valor: string | null): Ferramenta[];
|
|
4
|
+
export interface ContextoBarraFerramentas {
|
|
5
|
+
raiz: HTMLElement;
|
|
6
|
+
aoEscolher: (ferramenta: Ferramenta) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare class BarraFerramentas {
|
|
9
|
+
private ctx;
|
|
10
|
+
private barra;
|
|
11
|
+
constructor(ctx: ContextoBarraFerramentas);
|
|
12
|
+
montar(ferramentas: Ferramenta[]): void;
|
|
13
|
+
marcar(ativa: Ferramenta | null): void;
|
|
14
|
+
desmontar(): void;
|
|
15
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface ContextoControleSnap {
|
|
2
|
+
/** Chamado quando o estado efetivo ou o ligado/desligado muda. */
|
|
3
|
+
aoMudar: (estado: {
|
|
4
|
+
ativo: boolean;
|
|
5
|
+
ligado: boolean;
|
|
6
|
+
temporario: boolean;
|
|
7
|
+
}) => void;
|
|
8
|
+
/** Alvo dos listeners de teclado (padrão: window). */
|
|
9
|
+
alvo?: Pick<Window, 'addEventListener' | 'removeEventListener'>;
|
|
10
|
+
}
|
|
11
|
+
export declare class ControleSnap {
|
|
12
|
+
private contexto;
|
|
13
|
+
private _ligado;
|
|
14
|
+
private _altSegurado;
|
|
15
|
+
/** Tecla S alterna o snap. Desligável para quem já trata a tecla (ex.: atalhos próprios do app). */
|
|
16
|
+
atalhoS: boolean;
|
|
17
|
+
private conectado;
|
|
18
|
+
constructor(contexto: ContextoControleSnap);
|
|
19
|
+
/** Snap valendo agora: ligado e sem Alt. */
|
|
20
|
+
get ativo(): boolean;
|
|
21
|
+
get ligado(): boolean;
|
|
22
|
+
definir(ligado: boolean): void;
|
|
23
|
+
alternar(): void;
|
|
24
|
+
conectar(): void;
|
|
25
|
+
desconectar(): void;
|
|
26
|
+
private definirAlt;
|
|
27
|
+
private aoTeclaBaixo;
|
|
28
|
+
private aoTeclaCima;
|
|
29
|
+
/** Alt+Tab e afins: sem isto o Alt "ficaria preso" e o snap sumiria. */
|
|
30
|
+
private aoPerderFoco;
|
|
31
|
+
private notificar;
|
|
32
|
+
}
|
|
@@ -6,6 +6,7 @@ export interface ContextoToolbarPainel {
|
|
|
6
6
|
onCloseCamadas?: () => void;
|
|
7
7
|
onZoomExtents?: () => void;
|
|
8
8
|
onLimparSelecao?: () => void;
|
|
9
|
+
onToggleSnap?: () => void;
|
|
9
10
|
onTratarCliqueCanvas?: (e: MouseEvent) => void;
|
|
10
11
|
onDispararAcaoPopup?: (acaoId: string, elementoId: string | number) => void;
|
|
11
12
|
}
|