@thibezer/ui-components-kit 2.6.1 → 2.7.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 +49 -0
- package/dist/acessibilidade-CSzX-DkG.cjs +1 -0
- package/dist/acessibilidade-CUlSXc2X.js +38 -0
- package/dist/camadas.cjs +94 -94
- package/dist/camadas.js +1218 -1124
- package/dist/campo-texto.cjs +1 -1
- package/dist/campo-texto.js +1 -1
- package/dist/canvas.cjs +66 -65
- package/dist/canvas.js +3769 -3389
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/components/ui-alerta/ui-toast.d.ts +4 -15
- package/dist/components/ui-avatar/ui-avatar.d.ts +11 -0
- package/dist/components/ui-badge/ui-badge.d.ts +2 -0
- package/dist/components/ui-barra-ferramentas/paleta-atalhos.d.ts +16 -0
- package/dist/components/ui-barra-ferramentas/paleta-pressao-longa.d.ts +24 -0
- package/dist/components/ui-barra-ferramentas/ribbon-render.d.ts +14 -0
- package/dist/components/ui-barra-ferramentas/ribbon-teclado.d.ts +17 -0
- package/dist/components/ui-barra-ferramentas/ui-paleta-ferramentas.d.ts +1 -7
- package/dist/components/ui-barra-ferramentas/ui-ribbon.d.ts +0 -1
- package/dist/components/ui-camadas/camadas-arraste-controles.d.ts +2 -0
- package/dist/components/ui-camadas/camadas-arvore-renderer.d.ts +4 -11
- package/dist/components/ui-camadas/camadas-colecao.d.ts +27 -0
- package/dist/components/ui-camadas/camadas-drag-drop.d.ts +13 -1
- package/dist/components/ui-camadas/camadas-drop-ops.d.ts +31 -0
- package/dist/components/ui-camadas/camadas-hierarquia.d.ts +10 -0
- package/dist/components/ui-camadas/camadas-lembranca.d.ts +34 -0
- package/dist/components/ui-camadas/camadas-render.d.ts +14 -0
- package/dist/components/ui-camadas/camadas-renomear.d.ts +12 -0
- package/dist/components/ui-camadas/camadas-selecao-api.d.ts +17 -0
- package/dist/components/ui-camadas/camadas-thumb.d.ts +1 -0
- package/dist/components/ui-camadas/ui-camadas.d.ts +3 -5
- package/dist/components/ui-canvas-cad/cad-acessibilidade.d.ts +15 -0
- package/dist/components/ui-canvas-cad/cad-atributos-sync.d.ts +2 -1
- package/dist/components/ui-canvas-cad/cad-broadcast.d.ts +1 -1
- package/dist/components/ui-canvas-cad/cad-evento-coordenadas.d.ts +22 -0
- package/dist/components/ui-canvas-cad/cad-eventos-canvas.d.ts +3 -8
- package/dist/components/ui-canvas-cad/cad-feicoes-camera.d.ts +26 -0
- package/dist/components/ui-canvas-cad/cad-feicoes-consulta.d.ts +21 -0
- package/dist/components/ui-canvas-cad/cad-feicoes-dados.d.ts +39 -0
- package/dist/components/ui-canvas-cad/cad-feicoes-desenho.d.ts +68 -0
- package/dist/components/ui-canvas-cad/cad-feicoes-edicao.d.ts +37 -0
- package/dist/components/ui-canvas-cad/cad-feicoes-operacoes.d.ts +48 -0
- package/dist/components/ui-canvas-cad/cad-feicoes-ponteiro.d.ts +24 -0
- package/dist/components/ui-canvas-cad/cad-feicoes-selecao-regiao.d.ts +22 -0
- package/dist/components/ui-canvas-cad/cad-feicoes-tipos.d.ts +53 -0
- package/dist/components/ui-canvas-cad/cad-feicoes-versoes.d.ts +33 -0
- package/dist/components/ui-canvas-cad/cad-feicoes.d.ts +26 -106
- package/dist/components/ui-canvas-cad/cad-inicializador.d.ts +3 -1
- package/dist/components/ui-canvas-cad/cad-leaflet-adaptador.d.ts +5 -0
- package/dist/components/ui-canvas-cad/cad-selecao-pontos.d.ts +5 -0
- package/dist/components/ui-canvas-cad/tipos.d.ts +37 -0
- package/dist/components/ui-canvas-cad/ui-canvas-cad.d.ts +4 -1
- package/dist/components/ui-checkbox/ui-checkbox.d.ts +4 -1
- package/dist/components/ui-mapa/mapa-atributos.d.ts +14 -0
- package/dist/components/ui-mapa/mapa-basemaps.d.ts +7 -0
- package/dist/components/ui-mapa/mapa-icones.d.ts +4 -0
- package/dist/components/ui-mapa/mapa-leaflet.d.ts +5 -0
- package/dist/components/ui-mapa/mapa-vinculo-pai.d.ts +22 -0
- package/dist/components/ui-mapa/tipos.d.ts +13 -0
- package/dist/components/ui-mapa/ui-mapa-linha.d.ts +12 -5
- package/dist/components/ui-mapa/ui-mapa-marcador.d.ts +15 -6
- package/dist/components/ui-mapa/ui-mapa.d.ts +14 -1
- package/dist/components/ui-modal/modal-acessibilidade.d.ts +5 -5
- package/dist/components/ui-modal/modal-foco.d.ts +28 -0
- package/dist/components/ui-modal/ui-modal.d.ts +1 -11
- package/dist/components/ui-radio/radio-grupo-registry.d.ts +10 -0
- package/dist/components/ui-radio/ui-radio.d.ts +9 -2
- package/dist/components/ui-skeleton/ui-skeleton.d.ts +9 -0
- package/dist/components/ui-switch/ui-switch.d.ts +3 -1
- package/dist/components/ui-tabela/tabela-estados.d.ts +16 -0
- package/dist/components/ui-tabela/tabela-rolagem.d.ts +44 -0
- package/dist/components/ui-tabela/tabela-teclado.d.ts +16 -0
- package/dist/components/ui-tabela/ui-tabela.d.ts +1 -19
- package/dist/components/ui-tooltip/tooltip-popover.d.ts +7 -0
- package/dist/components/ui-tooltip/tooltip-posicionamento.d.ts +29 -0
- package/dist/components/ui-tooltip/ui-tooltip.d.ts +24 -1
- package/dist/core/opcoes.d.ts +9 -0
- package/dist/core/rotulo-controle.d.ts +13 -0
- package/dist/core/tipos-toast.d.ts +16 -0
- package/dist/core/ui-bus.d.ts +9 -1
- package/dist/core.cjs +1 -1
- package/dist/core.js +12 -11
- package/dist/custom-elements.json +19484 -14657
- package/dist/data.cjs +1 -1
- package/dist/data.js +2 -2
- package/dist/feedback.cjs +1 -1
- package/dist/feedback.js +21 -21
- package/dist/form-validacao-BlQFxUVj.js +104 -0
- package/dist/form-validacao-DIeyQVH5.cjs +1 -0
- package/dist/forms.cjs +1 -1
- package/dist/forms.js +2 -2
- package/dist/index.cjs +1 -1
- package/dist/index.js +46 -46
- package/dist/mapa.cjs +11 -16
- package/dist/mapa.js +242 -170
- package/dist/modal.cjs +1 -1
- package/dist/modal.js +1 -1
- package/dist/opcoes-CJYLi6kd.js +12 -0
- package/dist/opcoes-CkyDxBuQ.cjs +1 -0
- package/dist/register.cjs +1 -1
- package/dist/register.js +12 -13
- package/dist/tabela.cjs +1 -1
- package/dist/tabela.js +1 -1
- package/dist/tipos-elementos.d.ts +8 -3
- package/dist/tipos-vue.d.ts +8 -3
- package/dist/tools.cjs +1 -1
- package/dist/tools.js +1 -1
- package/dist/ui-badge-ChiiiO1r.js +197 -0
- package/dist/ui-badge-DUCxyAG6.cjs +28 -0
- package/dist/{zero-js-triggers-C_KrvFOQ.js → ui-bus-CUd99VJi.js} +36 -103
- package/dist/ui-bus-XqBLlTYQ.cjs +1 -0
- package/dist/ui-campo-texto-CHTfMO-H.cjs +16 -0
- package/dist/ui-campo-texto-gum_jDdI.js +380 -0
- package/dist/ui-card-BNYCQ7g-.js +119 -0
- package/dist/ui-card-BrjBL-yo.cjs +20 -0
- package/dist/ui-controle-cores-BS0WYPdi.js +572 -0
- package/dist/ui-controle-cores-Er6ZcQ7U.cjs +111 -0
- package/dist/ui-modal-BkYvNP0G.js +214 -0
- package/dist/ui-modal-CUNbpbZ1.cjs +18 -0
- package/dist/ui-paleta-ferramentas-Ksh6gMW3.js +890 -0
- package/dist/ui-paleta-ferramentas-bDLPbiGA.cjs +21 -0
- package/dist/ui-segmented-BOaGRQw4.cjs +19 -0
- package/dist/ui-segmented-kbO1BLVs.js +439 -0
- package/dist/ui-skeleton-B2Rgrv8o.js +648 -0
- package/dist/ui-skeleton-BilwGdOm.js +634 -0
- package/dist/ui-skeleton-DiOxTBZK.cjs +52 -0
- package/dist/ui-skeleton-SPYqku8P.cjs +52 -0
- package/dist/ui-skeleton-W9uwIceA.js +585 -0
- package/dist/ui-skeleton-gZrJipCC.cjs +52 -0
- package/dist/ui-switch-BX6U5Ykm.cjs +53 -0
- package/dist/ui-switch-DO5jR0hy.js +915 -0
- package/dist/ui-tabela-propriedades-D9Echt2X.js +2667 -0
- package/dist/ui-tabela-propriedades-DzZlyNZ_.cjs +141 -0
- package/dist/zero-js-triggers-CJT988bR.js +83 -0
- package/dist/zero-js-triggers-CgM9IIQB.cjs +1 -0
- package/package.json +10 -3
- package/dist/ui-skeleton-DI4_9WOX.js +0 -428
- package/dist/ui-skeleton-elhKIh2B.cjs +0 -33
- package/dist/ui-toast-Bp_NlM5G.js +0 -156
- package/dist/ui-toast-DGTZKne5.cjs +0 -20
- package/dist/zero-js-triggers-C_gtaojZ.cjs +0 -1
package/dist/card.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */const e=require("./ui-card-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */const e=require("./ui-card-BrjBL-yo.cjs");exports.UICard=e.UICard;
|
package/dist/card.js
CHANGED
|
@@ -1,19 +1,6 @@
|
|
|
1
1
|
import { UIAlerta } from './ui-alerta-base';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
onClick: (e: MouseEvent) => void;
|
|
5
|
-
tipo?: 'primario' | 'secundario' | 'destrutivo';
|
|
6
|
-
}
|
|
7
|
-
export interface UIToastOpcoes {
|
|
8
|
-
tipo?: 'sucesso' | 'erro' | 'alerta' | 'info';
|
|
9
|
-
titulo?: string;
|
|
10
|
-
mensagem: string;
|
|
11
|
-
duracao?: number;
|
|
12
|
-
posicao?: 'bottom-right' | 'top-right' | 'bottom-left' | 'top-left' | 'bottom-center' | 'top-center';
|
|
13
|
-
acao?: UIToastAcao;
|
|
14
|
-
fechavel?: boolean;
|
|
15
|
-
pausarNoHover?: boolean;
|
|
16
|
-
}
|
|
2
|
+
import { UIToastAcao, UIToastOpcoes } from '../../core/tipos-toast';
|
|
3
|
+
export type { UIToastAcao, UIToastOpcoes };
|
|
17
4
|
export declare class UIToast extends UIAlerta {
|
|
18
5
|
private timerId;
|
|
19
6
|
private tempoRestante;
|
|
@@ -32,3 +19,5 @@ export declare class UIToast extends UIAlerta {
|
|
|
32
19
|
private static obterContainer;
|
|
33
20
|
static notificar(opcoes: UIToastOpcoes): any;
|
|
34
21
|
}
|
|
22
|
+
/** Registra o `UIToast` como provedor de `UIBus.notificar` (idempotente). */
|
|
23
|
+
export declare function registrarToastNoBus(): void;
|
|
@@ -3,10 +3,21 @@ export declare class UIAvatar extends SafeHTMLElement {
|
|
|
3
3
|
static get observedAttributes(): string[];
|
|
4
4
|
private avatarElement;
|
|
5
5
|
private statusElement;
|
|
6
|
+
/** O que este componente escreveu em aria-label / aria-hidden (para distinguir do que o consumidor definiu). */
|
|
7
|
+
private _rotuloAuto;
|
|
8
|
+
private _ocultoAuto;
|
|
9
|
+
private _sincronizando;
|
|
6
10
|
constructor();
|
|
7
11
|
connectedCallback(): void;
|
|
8
12
|
attributeChangedCallback(_name: string, _old: string | null, _value: string | null): void;
|
|
13
|
+
/** Iniciais por ponto de código (emoji e caracteres fora do BMP não são cortados ao meio). */
|
|
9
14
|
private extrairIniciais;
|
|
15
|
+
private lerNome;
|
|
16
|
+
/**
|
|
17
|
+
* Nome acessível: com nome, o host é uma imagem nomeada ("Ana, online"); sem nome, é decorativo.
|
|
18
|
+
* Um `aria-label`/`aria-hidden` definido pelo consumidor nunca é sobrescrito.
|
|
19
|
+
*/
|
|
20
|
+
private sincronizarAcessibilidade;
|
|
10
21
|
private syncState;
|
|
11
22
|
private renderFallback;
|
|
12
23
|
}
|
|
@@ -12,6 +12,8 @@ export declare class UIBadge extends SafeHTMLElement {
|
|
|
12
12
|
get removivel(): boolean;
|
|
13
13
|
set removivel(val: boolean);
|
|
14
14
|
private syncState;
|
|
15
|
+
get disabled(): boolean;
|
|
16
|
+
set disabled(val: boolean);
|
|
15
17
|
private handleRemove;
|
|
16
18
|
}
|
|
17
19
|
export declare class UIChip extends UIBadge {
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FerramentaItem } from './tipos';
|
|
2
|
+
/**
|
|
3
|
+
* `true` se o foco está num campo de digitação (nativo, editável ou customizado) ou dentro de um diálogo modal;
|
|
4
|
+
* nesses lugares as letras pertencem ao usuário/ao diálogo.
|
|
5
|
+
*/
|
|
6
|
+
export declare function atalhoBloqueadoPeloContexto(caminho: EventTarget[]): boolean;
|
|
7
|
+
export interface AtalhoResolvido {
|
|
8
|
+
alvo: FerramentaItem;
|
|
9
|
+
/** Grupo que contém o alvo, se houver. */
|
|
10
|
+
pai?: FerramentaItem;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Ferramenta ativada pela `tecla` (uma letra, sem diferenciar caixa). Com várias candidatas, alterna entre elas
|
|
14
|
+
* a partir da ativa. `todas` é a lista plana (grupos expandidos); `grupos` serve para achar o pai.
|
|
15
|
+
*/
|
|
16
|
+
export declare function resolverAtalho(tecla: string, todas: FerramentaItem[], grupos: FerramentaItem[], idAtivo: string): AtalhoResolvido | null;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clique longo (pressão) da <ui-paleta-ferramentas>: abre o flyout de um grupo sem ativar a ferramenta.
|
|
3
|
+
* Responsabilidade única: temporizadores e limiar de movimento da pressão, mais a supressão do `click` residual
|
|
4
|
+
* que o navegador dispara ao soltar. Não conhece botões nem menus: quem usa decide o que fazer ao disparar.
|
|
5
|
+
*/
|
|
6
|
+
export declare const TEMPO_PRESSAO_LONGA_MS = 380;
|
|
7
|
+
export declare const DISTANCIA_CANCELA_PRESSAO_PX = 8;
|
|
8
|
+
export declare const TEMPO_LIMPA_SUPRESSAO_MS = 50;
|
|
9
|
+
export declare class PressaoLonga {
|
|
10
|
+
private timer;
|
|
11
|
+
private timerSupressao;
|
|
12
|
+
private inicio;
|
|
13
|
+
private suprimir;
|
|
14
|
+
/** Começa a contar; `aoDisparar` roda se o ponteiro ficar parado até `TEMPO_PRESSAO_LONGA_MS`. */
|
|
15
|
+
iniciar(x: number, y: number, aoDisparar: () => void): void;
|
|
16
|
+
/** Arrastar/rolar com o dedo cancela o clique longo. */
|
|
17
|
+
mover(x: number, y: number): void;
|
|
18
|
+
/** Fim do gesto: cancela a contagem e, se o flyout abriu, descarta a supressão logo após o `click` residual. */
|
|
19
|
+
fim(): void;
|
|
20
|
+
cancelar(): void;
|
|
21
|
+
/** `true` (uma única vez) se o próximo `click` deve ser ignorado por ser o resíduo de uma pressão longa. */
|
|
22
|
+
consumirSupressao(): boolean;
|
|
23
|
+
destruir(): void;
|
|
24
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { FerramentaItem, RibbonAba, RibbonGrupo } from './tipos';
|
|
2
|
+
/** Botões pequenos consecutivos formam colunas de até 3 (padrão Office/CAD). */
|
|
3
|
+
export declare const MAX_BOTOES_POR_COLUNA = 3;
|
|
4
|
+
export interface OpcoesBotaoAba {
|
|
5
|
+
aba: RibbonAba;
|
|
6
|
+
ativa: boolean;
|
|
7
|
+
/** `id` do botão (para `aria-labelledby` do painel). */
|
|
8
|
+
idBotao: string;
|
|
9
|
+
/** `id` do painel (para `aria-controls` da aba ativa). */
|
|
10
|
+
idPainel: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function criarBotaoAba({ aba, ativa, idBotao, idPainel }: OpcoesBotaoAba): HTMLButtonElement;
|
|
13
|
+
export type CriarBotaoFerramenta = (item: FerramentaItem, variante: 'grande' | 'pequeno', tamanhoIcone: number) => HTMLButtonElement;
|
|
14
|
+
export declare function criarGrupoRibbon(grupo: RibbonGrupo, criarBotao: CriarBotaoFerramenta): HTMLElement;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Teclado das abas do <ui-ribbon> (padrão WAI-ARIA de abas com ativação automática).
|
|
3
|
+
* Responsabilidade única: traduzir uma tecla em uma ação; quem chama executa (foco, seleção, painel).
|
|
4
|
+
*/
|
|
5
|
+
export type AcaoTeclaAba = {
|
|
6
|
+
tipo: 'ir-para';
|
|
7
|
+
indice: number;
|
|
8
|
+
}
|
|
9
|
+
/** Seta para baixo: leva o foco aos botões do painel (abrindo o painel flutuante se recolhido). */
|
|
10
|
+
| {
|
|
11
|
+
tipo: 'descer';
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* `indiceAtual` < 0 (foco fora das abas) ou lista vazia não produzem ação. Em RTL as setas se invertem.
|
|
15
|
+
* Navegação circular; Home/End vão às pontas.
|
|
16
|
+
*/
|
|
17
|
+
export declare function acaoDaTeclaAba(key: string, indiceAtual: number, total: number, rtl: boolean): AcaoTeclaAba | null;
|
|
@@ -26,10 +26,7 @@ export declare class UIPaletaFerramentas extends SafeHTMLElement {
|
|
|
26
26
|
private _pendente;
|
|
27
27
|
private visiveis;
|
|
28
28
|
private menu;
|
|
29
|
-
private
|
|
30
|
-
private timerSupressao;
|
|
31
|
-
private inicioPressao;
|
|
32
|
-
private suprimirClique;
|
|
29
|
+
private pressao;
|
|
33
30
|
private listeners;
|
|
34
31
|
constructor();
|
|
35
32
|
connectedCallback(): void;
|
|
@@ -71,11 +68,8 @@ export declare class UIPaletaFerramentas extends SafeHTMLElement {
|
|
|
71
68
|
private handleClick;
|
|
72
69
|
private handleFocusIn;
|
|
73
70
|
private handlePointerDown;
|
|
74
|
-
/** Arrastar/rolar com o dedo cancela o clique longo. */
|
|
75
71
|
private handlePointerMove;
|
|
76
|
-
/** Fim do gesto: cancela o timer e, se o flyout abriu, descarta a supressão logo após o `click` residual. */
|
|
77
72
|
private handlePointerFim;
|
|
78
|
-
private cancelarPressao;
|
|
79
73
|
private handleContextMenu;
|
|
80
74
|
private handleKeyDown;
|
|
81
75
|
private handleAtalho;
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
import { CamadasHostCompleto } from './camadas-host';
|
|
2
|
+
/** Cancela o gesto do `host`, soltando os ouvintes de `window` e devolvendo `user-select` ao `body`. */
|
|
3
|
+
export declare function cancelarArrasteControles(host: CamadasHostCompleto): void;
|
|
2
4
|
export declare function conectarArrasteControles(host: CamadasHostCompleto, shadow: ShadowRoot): void;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { CamadaItem, FeicaoItem } from './tipos';
|
|
2
2
|
import { escapeHtml } from './camadas-utils';
|
|
3
|
+
import { renderizarThumbGeometria } from './camadas-thumb';
|
|
4
|
+
import { construirHierarquiaCamadas, CamadaNodoHierarquico } from './camadas-hierarquia';
|
|
3
5
|
export interface ParametrosRenderArvore {
|
|
4
6
|
camadas: CamadaItem[];
|
|
5
7
|
feicoes: FeicaoItem[];
|
|
@@ -13,15 +15,6 @@ export interface ParametrosRenderArvore {
|
|
|
13
15
|
limiteFeicoesPorCamada?: number;
|
|
14
16
|
mostrarBotaoColapsar?: boolean;
|
|
15
17
|
}
|
|
16
|
-
export { escapeHtml };
|
|
17
|
-
export
|
|
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
|
+
export { escapeHtml, renderizarThumbGeometria, construirHierarquiaCamadas };
|
|
19
|
+
export type { CamadaNodoHierarquico };
|
|
27
20
|
export declare function renderizarArvoreCamadas(params: ParametrosRenderArvore): string;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { CamadaItem, FeicaoItem } from './tipos';
|
|
2
|
+
import { LembrancaCamadas } from './camadas-lembranca';
|
|
3
|
+
/** Estado e ações do painel que as coleções usam. */
|
|
4
|
+
export interface HostColecao {
|
|
5
|
+
camadas: CamadaItem[];
|
|
6
|
+
feicoes: FeicaoItem[];
|
|
7
|
+
expandedLayers: Set<string>;
|
|
8
|
+
selectedFeatureIds: Set<string>;
|
|
9
|
+
lastClickedFeatureId: string | null;
|
|
10
|
+
activeSettingsLayerId: string | null;
|
|
11
|
+
camadaAtivaId: string | null;
|
|
12
|
+
readonly persistir: boolean;
|
|
13
|
+
/** @internal Guarda de origens/remoções e acesso ao storage. */
|
|
14
|
+
readonly lembranca: LembrancaCamadas;
|
|
15
|
+
getAttribute(nome: string): string | null;
|
|
16
|
+
salvarLembrancaEstado(): void;
|
|
17
|
+
solicitarRenderizacao(): void;
|
|
18
|
+
}
|
|
19
|
+
/** Transforma a árvore (`children`) em lista plana, herdando `parentId` do pai quando não informado. */
|
|
20
|
+
export declare function achatarCamadas(camadas: CamadaItem[], parentId?: string | null): CamadaItem[];
|
|
21
|
+
export declare function definirCamadasNoHost(host: HostColecao, camadas: CamadaItem[], feicoes?: FeicaoItem[]): void;
|
|
22
|
+
export declare function definirFeicoesNoHost(host: HostColecao, feicoes: FeicaoItem[]): void;
|
|
23
|
+
export declare function adicionarCamadaNoHost(host: HostColecao, camada: CamadaItem): void;
|
|
24
|
+
export declare function removerCamadaNoHost(host: HostColecao, camadaId: string): void;
|
|
25
|
+
export declare function adicionarFeicaoNoHost(host: HostColecao, feicao: FeicaoItem): void;
|
|
26
|
+
export declare function atualizarFeicaoNoHost(host: HostColecao, feicaoAtualizada: FeicaoItem): void;
|
|
27
|
+
export declare function removerFeicaoNoHost(host: HostColecao, feicaoId: string): void;
|
|
@@ -4,6 +4,8 @@ export interface UICamadasHost {
|
|
|
4
4
|
feicoes: FeicaoItem[];
|
|
5
5
|
editingLayerId: string | null;
|
|
6
6
|
editingFeatureId: string | null;
|
|
7
|
+
/** Camadas expandidas; ao aninhar uma camada, o pai se expande. */
|
|
8
|
+
expandedLayers?: Set<string>;
|
|
7
9
|
solicitarRenderizacao(): void;
|
|
8
10
|
dispararEvento(nome: string, detalhe: unknown): void;
|
|
9
11
|
salvarLembrancaEstado?(): void;
|
|
@@ -11,12 +13,22 @@ export interface UICamadasHost {
|
|
|
11
13
|
export declare class CamadasDragDropManager {
|
|
12
14
|
private host;
|
|
13
15
|
private shadow;
|
|
16
|
+
/** Cancela um arraste por toque em andamento (remove os ouvintes de `window`). */
|
|
17
|
+
private cancelarToque;
|
|
14
18
|
constructor(host: UICamadasHost, shadow: ShadowRoot);
|
|
15
19
|
bindAll(): void;
|
|
20
|
+
/** Solta o que ficou em `window` (arraste por toque interrompido pela desconexão do componente). */
|
|
21
|
+
destruir(): void;
|
|
16
22
|
bindInlineRename(): void;
|
|
23
|
+
private limparClassesDeArraste;
|
|
24
|
+
/** Depois de qualquer mudança na ordem/hierarquia de camadas. */
|
|
25
|
+
private aposReordenarCamadas;
|
|
26
|
+
private emitirFeicaoMovida;
|
|
27
|
+
private arrasteBloqueado;
|
|
17
28
|
bindDragAndDrop(): void;
|
|
18
29
|
/**
|
|
19
|
-
* Suporte a arraste por toque e ponteiro no handle (.ui-col-drag) para tablets e mobile
|
|
30
|
+
* Suporte a arraste por toque e ponteiro no handle (.ui-col-drag) para tablets e mobile.
|
|
31
|
+
* Os ouvintes de `window` existem só durante o gesto e são soltos em `destruir()`.
|
|
20
32
|
*/
|
|
21
33
|
bindTouchDragAndDrop(): void;
|
|
22
34
|
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { CamadaItem, FeicaoItem } from './tipos';
|
|
2
|
+
export type ZonaDrop = 'acima' | 'abaixo' | 'dentro';
|
|
3
|
+
/** Evita ciclos hierárquicos ao mover uma camada para dentro de outra. */
|
|
4
|
+
export declare function ehDescendente(camadas: CamadaItem[], possivelDescendenteId: string, ancestralId: string): boolean;
|
|
5
|
+
/** Zona do alvo pela posição vertical relativa (0..1): 25% de cima, 25% de baixo e o meio (aninhar). */
|
|
6
|
+
export declare function zonaDeDropCamada(posicaoRelativa: number): ZonaDrop;
|
|
7
|
+
export type ResultadoMoverCamada = {
|
|
8
|
+
tipo: 'hierarquia';
|
|
9
|
+
camada: CamadaItem;
|
|
10
|
+
novoParentId: string;
|
|
11
|
+
} | {
|
|
12
|
+
tipo: 'ordem';
|
|
13
|
+
camada: CamadaItem;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Move `movidaId` em relação a `alvoId`. `dentro` torna-a subcamada (recusa ciclos); `acima`/`abaixo`
|
|
17
|
+
* reordena e adota o pai do alvo. Muta `camadas`; devolve `null` se nada mudou.
|
|
18
|
+
*/
|
|
19
|
+
export declare function moverCamada(camadas: CamadaItem[], movidaId: string, alvoId: string, zona: ZonaDrop): ResultadoMoverCamada | null;
|
|
20
|
+
/** Reordena apenas (sem aninhar), como no arraste por toque. Muta `camadas`; `false` se nada mudou. */
|
|
21
|
+
export declare function reordenarCamada(camadas: CamadaItem[], movidaId: string, alvoId: string, acima: boolean): boolean;
|
|
22
|
+
export interface ResultadoMoverFeicao {
|
|
23
|
+
feicao: FeicaoItem;
|
|
24
|
+
camadaOrigemId: string | undefined;
|
|
25
|
+
camadaDestinoId: string | undefined;
|
|
26
|
+
mudouDeCamada: boolean;
|
|
27
|
+
}
|
|
28
|
+
/** Move a feição para outra camada (sem reordenar). `null` se a feição/camada não existe ou já está lá. */
|
|
29
|
+
export declare function moverFeicaoParaCamada(feicoes: FeicaoItem[], camadas: CamadaItem[], feicaoId: string, camadaDestinoId: string): ResultadoMoverFeicao | null;
|
|
30
|
+
/** Reordena a feição em relação a outra, adotando a camada do alvo. Muta `feicoes`; `null` se nada mudou. */
|
|
31
|
+
export declare function reordenarFeicao(feicoes: FeicaoItem[], movidaId: string, alvoId: string, acima: boolean): ResultadoMoverFeicao | null;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { CamadaItem } from './tipos';
|
|
2
|
+
export interface CamadaNodoHierarquico {
|
|
3
|
+
camada: CamadaItem;
|
|
4
|
+
depth: number;
|
|
5
|
+
subcamadas: CamadaNodoHierarquico[];
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Organiza a lista de camadas em uma árvore hierárquica de nós baseada em parentId ou children
|
|
9
|
+
*/
|
|
10
|
+
export declare function construirHierarquiaCamadas(camadas: CamadaItem[]): CamadaNodoHierarquico[];
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { CamadaItem } from './tipos';
|
|
2
|
+
import { EstadoPersistidoCamadas as EstadoPersistido } from './camadas-persistencia';
|
|
3
|
+
/** Leitura do estado atual do painel no momento de gravar. */
|
|
4
|
+
export interface InstantaneoPainel {
|
|
5
|
+
persistir: boolean;
|
|
6
|
+
conectado: boolean;
|
|
7
|
+
storageKey: string | null;
|
|
8
|
+
id: string;
|
|
9
|
+
camadas: CamadaItem[];
|
|
10
|
+
expandedLayers: Set<string>;
|
|
11
|
+
camadaAtivaId: string | null;
|
|
12
|
+
painelColapsado: boolean;
|
|
13
|
+
mapaBaseAtivo: string;
|
|
14
|
+
densidade: 'compacto' | 'normal';
|
|
15
|
+
altura: number | null;
|
|
16
|
+
}
|
|
17
|
+
export declare class LembrancaCamadas {
|
|
18
|
+
private instantaneo;
|
|
19
|
+
private origens;
|
|
20
|
+
private removidas;
|
|
21
|
+
private salvarComDebounce;
|
|
22
|
+
constructor(instantaneo: () => InstantaneoPainel);
|
|
23
|
+
chaveAtual(): string;
|
|
24
|
+
carregar(): EstadoPersistido | null;
|
|
25
|
+
/** Versão com debounce, para interações contínuas (seletor de cor, slider de opacidade). */
|
|
26
|
+
agendar(): void;
|
|
27
|
+
salvar(): void;
|
|
28
|
+
limpar(): void;
|
|
29
|
+
limparOrigens(): void;
|
|
30
|
+
registrarOrigem(camada: CamadaItem): void;
|
|
31
|
+
esquecerCamada(camadaId: string): void;
|
|
32
|
+
/** Aplica por cima de `camadas` o que foi lembrado (expansão, visibilidade, travas, opacidade, cor, ordem). */
|
|
33
|
+
reidratar(camadas: CamadaItem[], estado: EstadoPersistido | null, expandedLayers: Set<string>): void;
|
|
34
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { MapaBaseItem } from './tipos';
|
|
2
|
+
import { CamadasHostCompleto } from './camadas-host';
|
|
3
|
+
import { CamadasDragDropManager } from './camadas-drag-drop';
|
|
4
|
+
/** O que a renderização lê do componente (além do contrato de eventos). */
|
|
5
|
+
export interface HostRenderizavel extends CamadasHostCompleto {
|
|
6
|
+
mapasBase: MapaBaseItem[];
|
|
7
|
+
editingLayerId: string | null;
|
|
8
|
+
editingFeatureId: string | null;
|
|
9
|
+
readonly flutuante: boolean;
|
|
10
|
+
readonly mostrarMapasBase: boolean;
|
|
11
|
+
readonly mostrarRodape: boolean;
|
|
12
|
+
getAttribute(nome: string): string | null;
|
|
13
|
+
}
|
|
14
|
+
export declare function renderizarPainel(host: HostRenderizavel, shadow: ShadowRoot, corpo: HTMLElement, dragDrop: CamadasDragDropManager): void;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CamadaItem, FeicaoItem } from './tipos';
|
|
2
|
+
/** O que o renomear lê e altera no painel. */
|
|
3
|
+
export interface HostRenomear {
|
|
4
|
+
camadas: CamadaItem[];
|
|
5
|
+
feicoes: FeicaoItem[];
|
|
6
|
+
editingLayerId: string | null;
|
|
7
|
+
editingFeatureId: string | null;
|
|
8
|
+
solicitarRenderizacao(): void;
|
|
9
|
+
dispararEvento(nome: string, detalhe: unknown): void;
|
|
10
|
+
salvarLembrancaEstado?(): void;
|
|
11
|
+
}
|
|
12
|
+
export declare function vincularRenomearInline(host: HostRenomear, shadow: ShadowRoot): void;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { CamadaItem, FeicaoItem } from './tipos';
|
|
2
|
+
/** Estado e ações do painel que a seleção usa. */
|
|
3
|
+
export interface HostSelecao {
|
|
4
|
+
camadas: CamadaItem[];
|
|
5
|
+
feicoes: FeicaoItem[];
|
|
6
|
+
expandedLayers: Set<string>;
|
|
7
|
+
selectedFeatureIds: Set<string>;
|
|
8
|
+
lastClickedFeatureId: string | null;
|
|
9
|
+
searchQuery: string;
|
|
10
|
+
sincronizarSelecaoDOM(): void;
|
|
11
|
+
notificarMudancaSelecao(): void;
|
|
12
|
+
dispararEvento(nome: string, detalhe: unknown): void;
|
|
13
|
+
}
|
|
14
|
+
export declare function selecionarFeicaoNoHost(host: HostSelecao, feicaoId: string, acumular: boolean, intervalo: boolean, emitirEvento: boolean): void;
|
|
15
|
+
export declare function selecionarFeicoesNoHost(host: HostSelecao, ids: string[], emitirEvento: boolean): void;
|
|
16
|
+
export declare function limparSelecaoNoHost(host: HostSelecao, emitirEvento: boolean): void;
|
|
17
|
+
export declare function emitirEventosSelecao(host: HostSelecao): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function renderizarThumbGeometria(tipo: string | undefined, cor: string, coords?: unknown): string;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SafeHTMLElement } from '../../core/ssr-safe';
|
|
2
2
|
import { CamadaItem, FeicaoItem, MapaBaseItem, AbaPainelCamadas } from './tipos';
|
|
3
3
|
import { CamadasHostCompleto } from './camadas-host';
|
|
4
|
+
import { LembrancaCamadas } from './camadas-lembranca';
|
|
4
5
|
export declare class UICamadas extends SafeHTMLElement implements CamadasHostCompleto {
|
|
5
6
|
static get observedAttributes(): string[];
|
|
6
7
|
private shadow;
|
|
@@ -11,11 +12,10 @@ export declare class UICamadas extends SafeHTMLElement implements CamadasHostCom
|
|
|
11
12
|
private conectado;
|
|
12
13
|
private profundidadeLote;
|
|
13
14
|
private renderPendente;
|
|
14
|
-
private camadasRemovidas;
|
|
15
15
|
/** Painéis conectados sem `id` nem `storage-key`: dividem a mesma chave de persistência. */
|
|
16
16
|
private static instanciasChavePadrao;
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
/** @internal */
|
|
18
|
+
readonly lembranca: LembrancaCamadas;
|
|
19
19
|
camadas: CamadaItem[];
|
|
20
20
|
feicoes: FeicaoItem[];
|
|
21
21
|
mapasBase: MapaBaseItem[];
|
|
@@ -79,7 +79,6 @@ export declare class UICamadas extends SafeHTMLElement implements CamadasHostCom
|
|
|
79
79
|
/** Atalho reativo para `definirMapasBase()` — não dispara eventos. */
|
|
80
80
|
get basemaps(): MapaBaseItem[];
|
|
81
81
|
set basemaps(mapas: MapaBaseItem[]);
|
|
82
|
-
private achatarCamadas;
|
|
83
82
|
definirCamadas(camadas: CamadaItem[], feicoes?: FeicaoItem[]): void;
|
|
84
83
|
definirFeicoes(feicoes: FeicaoItem[]): void;
|
|
85
84
|
definirMapasBase(mapas: MapaBaseItem[]): void;
|
|
@@ -114,7 +113,6 @@ export declare class UICamadas extends SafeHTMLElement implements CamadasHostCom
|
|
|
114
113
|
private conectarEventosGerais;
|
|
115
114
|
private sincronizarCamadaAtivaDOM;
|
|
116
115
|
sincronizarSelecaoDOM(): void;
|
|
117
|
-
private sincronizarSelecoesComFeicoesValidas;
|
|
118
116
|
notificarMudancaSelecao(): void;
|
|
119
117
|
}
|
|
120
118
|
export declare class UIPainelCamadas extends UICamadas {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Acessibilidade do <ui-canvas-cad>.
|
|
3
|
+
* Responsabilidade única: nomes acessíveis dos botões da barra rápida, estado `aria-pressed` do snap e anúncios
|
|
4
|
+
* (região viva) de seleção e ferramenta para leitores de tela.
|
|
5
|
+
*/
|
|
6
|
+
/** Botões só com ícone ganham `aria-label` igual ao `title`; `aria-label` já definido é respeitado. */
|
|
7
|
+
export declare function nomearBotoesDaBarra(shadow: ShadowRoot): void;
|
|
8
|
+
/** Reflete o snap ligado/desligado no botão da barra. */
|
|
9
|
+
export declare function marcarSnap(shadow: ShadowRoot, ligado: boolean): void;
|
|
10
|
+
export declare function textoSelecao(quantidade: number): string;
|
|
11
|
+
export declare function textoFerramenta(ferramenta: string | null): string;
|
|
12
|
+
/** Escreve na região viva (`#cad-status`); trocar o texto é o que dispara o anúncio. */
|
|
13
|
+
export declare function anunciar(shadow: ShadowRoot, texto: string): void;
|
|
14
|
+
/** Liga os anúncios aos eventos que o próprio componente emite; devolve a função que desliga. */
|
|
15
|
+
export declare function conectarAnuncios(host: HTMLElement, shadow: ShadowRoot): () => void;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ScaleMode } from '../../gerencigeo-canvas/types';
|
|
1
2
|
import { UICanvasCAD } from './ui-canvas-cad';
|
|
2
3
|
import { GerenciadorBroadcastConfig } from './cad-broadcast';
|
|
3
4
|
import { GerenciGeoMapaController } from '../../gerencigeo-canvas/mapa_controller';
|
|
@@ -7,7 +8,7 @@ export interface ContextoAtributosCAD {
|
|
|
7
8
|
mapContainer: HTMLDivElement | null;
|
|
8
9
|
broadcastConfig: GerenciadorBroadcastConfig;
|
|
9
10
|
setLayerOpacity: (id: string, op: number) => void;
|
|
10
|
-
setLayerScaleMode: (id: string, mode:
|
|
11
|
+
setLayerScaleMode: (id: string, mode: ScaleMode) => void;
|
|
11
12
|
atualizarZonaProjecao: (zona: number) => void;
|
|
12
13
|
}
|
|
13
14
|
export declare function sincronizarAtributoCAD(ctx: ContextoAtributosCAD, name: string, oldVal: string, newVal: string): void;
|
|
@@ -14,6 +14,6 @@ export declare class GerenciadorBroadcastConfig {
|
|
|
14
14
|
private contexto;
|
|
15
15
|
constructor(contexto: ContextoBroadcastCAD);
|
|
16
16
|
conectar(canalNome?: string | null): void;
|
|
17
|
-
processarMensagem(
|
|
17
|
+
processarMensagem(entrada: unknown): void;
|
|
18
18
|
desconectar(): void;
|
|
19
19
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { EventoMapaCad, LatLngEvento } from './tipos';
|
|
2
|
+
export interface PontoPixel {
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
}
|
|
6
|
+
/** Evento "de baixo": o `originalEvent` do Leaflet quando existe, senão o próprio evento. */
|
|
7
|
+
export declare function eventoOriginalDe(e: unknown): EventoMapaCad;
|
|
8
|
+
/** Primeiro alvo do evento: `composedPath()[0]` (atravessa o shadow DOM) ou `target`. */
|
|
9
|
+
export declare function alvoDoEvento(e: unknown): HTMLElement | null;
|
|
10
|
+
/**
|
|
11
|
+
* Ponto em pixels relativo ao contêiner: o parâmetro explícito, depois `containerPoint`/`layerPoint` do evento
|
|
12
|
+
* e, por fim, `clientX/clientY` descontando o retângulo do contêiner.
|
|
13
|
+
*/
|
|
14
|
+
export declare function pontoPixelDe(e: unknown, explicito: PontoPixel | undefined, retanguloContainer: {
|
|
15
|
+
left: number;
|
|
16
|
+
top: number;
|
|
17
|
+
}): PontoPixel;
|
|
18
|
+
/** Latitude/longitude do parâmetro explícito ou do evento (aceita `lon` no lugar de `lng`); `null` se não houver número em `lat`. */
|
|
19
|
+
export declare function latLngDe(e: unknown, explicito?: LatLngEvento): {
|
|
20
|
+
lat: number;
|
|
21
|
+
lng: number;
|
|
22
|
+
} | null;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { GerenciGeoMapaController } from '../../gerencigeo-canvas/mapa_controller';
|
|
2
|
+
import { EventoMapaCad, LatLngEvento } from './tipos';
|
|
3
|
+
import { PontoPixel } from './cad-evento-coordenadas';
|
|
2
4
|
export interface ContextoEventosCanvas {
|
|
3
5
|
host: HTMLElement;
|
|
4
6
|
controller: GerenciGeoMapaController;
|
|
@@ -8,14 +10,7 @@ export interface ContextoEventosCanvas {
|
|
|
8
10
|
obterElementoPorId: (id: string | number) => any;
|
|
9
11
|
fecharPopup: () => void;
|
|
10
12
|
}
|
|
11
|
-
export declare function processarCliqueLivreCanvas(ctx: ContextoEventosCanvas, e: MouseEvent |
|
|
12
|
-
lat: number;
|
|
13
|
-
lng?: number;
|
|
14
|
-
lon?: number;
|
|
15
|
-
}, containerPointParam?: {
|
|
16
|
-
x: number;
|
|
17
|
-
y: number;
|
|
18
|
-
}): boolean;
|
|
13
|
+
export declare function processarCliqueLivreCanvas(ctx: ContextoEventosCanvas, e: MouseEvent | EventoMapaCad, latLngParam?: LatLngEvento, containerPointParam?: PontoPixel): boolean;
|
|
19
14
|
export declare function processarAcaoPopup(ctx: ContextoEventosCanvas, acaoId: string, elementoId: string | number, elemento?: any): void;
|
|
20
15
|
export declare function tratarCliqueMarcador(ctx: ContextoEventosCanvas, pId: string | number, isVizinho: boolean | undefined, elemento: any, coords: {
|
|
21
16
|
lat: number;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { default as L } from 'leaflet';
|
|
2
|
+
import { CanvasLayerManager } from '../../gerencigeo-canvas/layer_manager';
|
|
3
|
+
import { Feicao } from '../../gerencigeo-canvas/feature_types';
|
|
4
|
+
import { RefFeicao } from '../../gerencigeo-canvas/feature_selecao';
|
|
5
|
+
export interface PortasCamera {
|
|
6
|
+
obterMapa: () => L.Map | null;
|
|
7
|
+
obterLayerManager: () => CanvasLayerManager;
|
|
8
|
+
buscar: (camadaId: string, id: string) => Feicao | undefined;
|
|
9
|
+
lista: (camadaId: string) => Feicao[];
|
|
10
|
+
desenhada: (f: Feicao) => boolean;
|
|
11
|
+
/** Liga a camada e a prévia da feição, se estiverem escondidas. */
|
|
12
|
+
garantirVisivel: (f: Feicao) => void;
|
|
13
|
+
}
|
|
14
|
+
export declare class CameraFeicoes {
|
|
15
|
+
private p;
|
|
16
|
+
constructor(p: PortasCamera);
|
|
17
|
+
private limitesDe;
|
|
18
|
+
private enquadrar;
|
|
19
|
+
/** Aproxima da feição; liga a camada e a prévia, se estiverem escondidas. Ponto: voa até z ≥ 17. */
|
|
20
|
+
zoomParaFeicao(camadaId: string, id: string): boolean;
|
|
21
|
+
zoomParaFeicoes(refs: RefFeicao[]): boolean;
|
|
22
|
+
/** Enquadra todas as feições das camadas de feições visíveis (que aparecem pela regra de versões). */
|
|
23
|
+
ajustarTudo(): boolean;
|
|
24
|
+
/** Enquadra a camada inteira; se estava oculta, torna-a visível. */
|
|
25
|
+
ajustarCamada(camadaId: string): boolean;
|
|
26
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { default as L } from 'leaflet';
|
|
2
|
+
import { CanvasLayerManager } from '../../gerencigeo-canvas/layer_manager';
|
|
3
|
+
import { Feicao, LatLonPar } from '../../gerencigeo-canvas/feature_types';
|
|
4
|
+
import { ExcluirSnap } from '../../gerencigeo-canvas/feature_snap';
|
|
5
|
+
export interface PortasConsulta {
|
|
6
|
+
obterMapa: () => L.Map | null;
|
|
7
|
+
obterLayerManager: () => CanvasLayerManager;
|
|
8
|
+
desenhada: (f: Feicao) => boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare class ConsultaEspacialFeicoes {
|
|
11
|
+
private p;
|
|
12
|
+
constructor(p: PortasConsulta);
|
|
13
|
+
/** Feições visíveis das camadas de feições cujo envelope toca um quadrado de `tolPx` px em volta de `coord`. */
|
|
14
|
+
candidatasEm(coord: LatLonPar, tolPx: number): Feicao[];
|
|
15
|
+
/** Snap de uma coordenada contra as feições visíveis de todas as camadas de feições (via índice espacial). */
|
|
16
|
+
buscarSnapEm(coord: [number, number], excluir?: ExcluirSnap): import('../../gerencigeo-canvas').ResultadoSnap | null;
|
|
17
|
+
feicaoSob(clientX: number, clientY: number): {
|
|
18
|
+
feicao: Feicao | null;
|
|
19
|
+
coordenada: LatLonPar;
|
|
20
|
+
} | null;
|
|
21
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { CanvasLayerManager } from '../../gerencigeo-canvas/layer_manager';
|
|
2
|
+
import { Feicao } from '../../gerencigeo-canvas/feature_types';
|
|
3
|
+
import { OpcoesCamadaFeicoes, OpcoesLote, LoteFeicoes, ResultadoLote, ResultadoFeicoes } from './cad-feicoes-tipos';
|
|
4
|
+
export interface PortasRepositorio {
|
|
5
|
+
obterLayerManager: () => CanvasLayerManager;
|
|
6
|
+
opcoesNormalizacao: () => {
|
|
7
|
+
aceitarOrigem: boolean;
|
|
8
|
+
};
|
|
9
|
+
/** Chamado depois de cada mudança nos dados, para reconciliar seleção, edição e popup. */
|
|
10
|
+
aposDados: () => void;
|
|
11
|
+
}
|
|
12
|
+
export declare class RepositorioFeicoes {
|
|
13
|
+
private p;
|
|
14
|
+
/** id -> posição na lista da camada (válido enquanto `lista` for a lista atual); evita varrer a camada a cada consulta. */
|
|
15
|
+
private posicoes;
|
|
16
|
+
constructor(p: PortasRepositorio);
|
|
17
|
+
lista(camadaId: string): Feicao[];
|
|
18
|
+
private posicaoDe;
|
|
19
|
+
/** Feição da camada pelo id (O(1)); `undefined` se não existe. */
|
|
20
|
+
buscar(camadaId: string, id: string): Feicao | undefined;
|
|
21
|
+
private garantirCamada;
|
|
22
|
+
definirFeicoes(camadaId: string, brutas: unknown[], opcoes?: OpcoesCamadaFeicoes): ResultadoFeicoes;
|
|
23
|
+
adicionarFeicao(camadaId: string, bruta: unknown, opcoes?: OpcoesCamadaFeicoes): Feicao | null;
|
|
24
|
+
/**
|
|
25
|
+
* Mescla campos de primeiro nível; `estilo` e `propriedades` também são mesclados. Com `substituirPropriedades`,
|
|
26
|
+
* `propriedades` informadas trocam as atuais por inteiro (atributos ausentes somem).
|
|
27
|
+
*/
|
|
28
|
+
atualizarFeicao(camadaId: string, id: string, parcial: Record<string, any>, opcoes?: Pick<OpcoesLote, 'substituirPropriedades'>): Feicao | null;
|
|
29
|
+
/** Grava uma feição já normalizada (usado quando o próprio mapa a altera, como ao arrastar um texto). */
|
|
30
|
+
substituir(camadaId: string, feicao: Feicao): void;
|
|
31
|
+
removerFeicao(camadaId: string, id: string): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Várias mudanças numa só regravação e num só `aposDados`: remove, depois atualiza, depois adiciona.
|
|
34
|
+
* Adicionar um id que já existe substitui a feição mantendo a posição (a ordem de empilhamento não muda).
|
|
35
|
+
*/
|
|
36
|
+
aplicarLote(camadaId: string, lote: LoteFeicoes, opcoes?: OpcoesLote): ResultadoLote;
|
|
37
|
+
private mesclar;
|
|
38
|
+
private aplicar;
|
|
39
|
+
}
|