@thibezer/ui-components-kit 2.3.0 → 2.4.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.
@@ -60,6 +60,13 @@ interface Contexto {
60
60
  aoFerramenta?: (ferramenta: Ferramenta | null) => void;
61
61
  /** Regra de oficial × prévia compartilhada com o renderizador (o componente a põe no contexto de renderização). */
62
62
  regra?: RegraVersoes;
63
+ /** A edição de vértices começou (`true`) ou terminou (`false`), para refletir no botão da barra. */
64
+ aoEdicao?: (ativa: boolean) => void;
65
+ /**
66
+ * Os atalhos de teclado do canvas (S do snap, Enter para editar) valem agora? O componente responde que sim com o mouse
67
+ * sobre ele ou o foco dentro dele; sem esta função, valem sempre (a edição e as ferramentas em andamento também sempre valem).
68
+ */
69
+ atalhoValido?: () => boolean;
63
70
  }
64
71
  /** Opções do popup da feição. */
65
72
  export interface OpcoesPopup {
@@ -72,13 +79,14 @@ export interface ResultadoFerramenta {
72
79
  }
73
80
  export interface ResultadoEdicao {
74
81
  ok: boolean;
75
- motivo?: MotivoRecusaEdicao | 'inexistente' | 'sem-mapa';
82
+ motivo?: MotivoRecusaEdicao | 'inexistente' | 'sem-mapa' | 'sem-selecao';
76
83
  }
77
84
  export declare class GerenciadorFeicoes {
78
85
  private contexto;
79
86
  private selecao;
80
87
  private popup;
81
88
  private editor;
89
+ private vigiaCamadaEmEdicao;
82
90
  private snap;
83
91
  private desenho;
84
92
  private camadaDesenho;
@@ -194,12 +202,18 @@ export declare class GerenciadorFeicoes {
194
202
  alternarSnap(): void;
195
203
  conectarTeclado(): void;
196
204
  desconectarTeclado(): void;
205
+ private atalhosValem;
206
+ /** Enter com uma só feição selecionada (e nada em andamento) abre a edição de vértices. */
207
+ private aoTeclaEdicao;
208
+ /** Botão "Editar" da barra: encerra a edição em curso ou edita a feição selecionada (uma só). */
209
+ alternarEdicaoDaSelecao(): ResultadoEdicao;
197
210
  /** Feições visíveis das camadas de feições cujo envelope toca um quadrado de `tolPx` px em volta de `coord`. */
198
211
  private candidatasEm;
199
212
  /** Snap de uma coordenada contra as feições visíveis de todas as camadas de feições (via índice espacial). */
200
213
  buscarSnapEm(coord: [number, number], excluir?: ExcluirSnap): import('../../gerencigeo-canvas').ResultadoSnap | null;
201
214
  get editando(): boolean;
202
215
  iniciarEdicao(camadaId: string, id: string): ResultadoEdicao;
216
+ private pararDeVigiarCamadaEmEdicao;
203
217
  pararEdicao(): void;
204
218
  get ferramentaAtiva(): Ferramenta | null;
205
219
  /** Camada que recebe o que for desenhado. Não existe camada padrão: o consumidor escolhe. */
@@ -1,15 +1,22 @@
1
1
  import { Ferramenta } from '../../gerencigeo-canvas/feature_desenho';
2
2
  /** Interpreta o atributo; nomes desconhecidos são ignorados e a ordem da barra é sempre a canônica. */
3
3
  export declare function interpretarFerramentas(valor: string | null): Ferramenta[];
4
+ /** O atributo pede o botão "Editar" (edição de vértices da feição selecionada)? Vale em "todas" ou com a palavra `editar`. */
5
+ export declare function barraPedeEdicao(valor: string | null): boolean;
4
6
  export interface ContextoBarraFerramentas {
5
7
  raiz: HTMLElement;
6
8
  aoEscolher: (ferramenta: Ferramenta) => void;
9
+ /** Clique em "Editar". Sem isto o botão não é montado. */
10
+ aoEditar?: () => void;
7
11
  }
8
12
  export declare class BarraFerramentas {
9
13
  private ctx;
10
14
  private barra;
11
15
  constructor(ctx: ContextoBarraFerramentas);
12
- montar(ferramentas: Ferramenta[]): void;
16
+ montar(ferramentas: Ferramenta[], comEdicao?: boolean): void;
17
+ private editando;
18
+ /** Reflete no botão "Editar" se a edição está em curso. */
19
+ marcarEdicao(ativa: boolean): void;
13
20
  marcar(ativa: Ferramenta | null): void;
14
21
  desmontar(): void;
15
22
  }
@@ -5,6 +5,8 @@ export interface ContextoControleSnap {
5
5
  ligado: boolean;
6
6
  temporario: boolean;
7
7
  }) => void;
8
+ /** A tecla S só vale quando isto devolve `true` (ex.: mouse sobre o canvas ou foco dentro dele). Sem a função, vale sempre. */
9
+ aplica?: () => boolean;
8
10
  /** Alvo dos listeners de teclado (padrão: window). */
9
11
  alvo?: Pick<Window, 'addEventListener' | 'removeEventListener'>;
10
12
  }
@@ -25,10 +25,17 @@ export declare class UICanvasCAD extends SafeHTMLElement {
25
25
  private estilosExternos;
26
26
  private lastPopupActionEmit?;
27
27
  private lastCanvasClickTime;
28
+ /** Mouse sobre o componente: junto com o foco dentro dele, decide se S e Enter valem quando há vários canvases na página. */
29
+ private ponteiroSobre;
28
30
  private _chaveGrupo?;
29
31
  private _zonaProjecao;
30
32
  constructor();
31
33
  connectedCallback(): void;
34
+ private montarBarra;
35
+ /** Único canvas da página: os atalhos valem em qualquer lugar (comportamento de sempre). Com vários, só no que está sob o mouse ou com foco. */
36
+ private ehUnicoCanvas;
37
+ /** O foco do teclado está dentro do componente (inclusive no shadow DOM)? */
38
+ private matchesFocoInterno;
32
39
  destroy(): void;
33
40
  disconnectedCallback(): void;
34
41
  invalidateSizeSafely(): void;