@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.
Files changed (100) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/README.md +760 -739
  3. package/dist/camadas.cjs +72 -72
  4. package/dist/camadas.js +700 -667
  5. package/dist/canvas.cjs +99 -140
  6. package/dist/canvas.js +5125 -1192
  7. package/dist/components/ui-camadas/camadas-persistencia.d.ts +4 -0
  8. package/dist/components/ui-camadas/ui-camadas.d.ts +10 -0
  9. package/dist/components/ui-canvas-cad/cad-estilos-externos.d.ts +16 -0
  10. package/dist/components/ui-canvas-cad/cad-eventos-canvas.d.ts +4 -0
  11. package/dist/components/ui-canvas-cad/cad-feicoes.d.ts +262 -0
  12. package/dist/components/ui-canvas-cad/cad-ferramentas-barra.d.ts +15 -0
  13. package/dist/components/ui-canvas-cad/cad-snap.d.ts +32 -0
  14. package/dist/components/ui-canvas-cad/cad-toolbar-painel.d.ts +1 -0
  15. package/dist/components/ui-canvas-cad/ui-canvas-cad.d.ts +143 -0
  16. package/dist/components/ui-lista-flutuante/lista-flutuante-posicionamento.d.ts +2 -0
  17. package/dist/components/ui-lista-flutuante/ui-lista-flutuante.d.ts +1 -0
  18. package/dist/components/ui-seletor-mapa-base/ui-seletor-mapa-base.d.ts +3 -0
  19. package/dist/components/ui-tabela/tabela-atributos-sync.d.ts +3 -0
  20. package/dist/components/ui-tabela/tabela-localizador.d.ts +8 -1
  21. package/dist/components/ui-tabela/tabela-orquestrador-dados.d.ts +4 -0
  22. package/dist/components/ui-tabela/tabela-selecao.d.ts +19 -9
  23. package/dist/components/ui-tabela/tipos.d.ts +6 -0
  24. package/dist/components/ui-tabela/ui-tabela.d.ts +41 -2
  25. package/dist/components/ui-tabela-propriedades/avaliador-expressao.d.ts +0 -5
  26. package/dist/components/ui-tabela-propriedades/propriedades-dom-utils.d.ts +17 -1
  27. package/dist/components/ui-tabela-propriedades/propriedades-flutuante.d.ts +2 -0
  28. package/dist/components/ui-tabela-propriedades/propriedades-gerenciador-valores.d.ts +10 -1
  29. package/dist/components/ui-tabela-propriedades/propriedades-render-arvore.d.ts +3 -1
  30. package/dist/components/ui-tabela-propriedades/ui-tabela-propriedades.d.ts +5 -1
  31. package/dist/core/alvo-digitavel.d.ts +1 -0
  32. package/dist/core/index.d.ts +1 -0
  33. package/dist/core/svg-seguro.d.ts +10 -0
  34. package/dist/core.cjs +1 -1
  35. package/dist/core.js +12 -10
  36. package/dist/custom-elements.json +14782 -10666
  37. package/dist/data.cjs +1 -1
  38. package/dist/data.js +51 -46
  39. package/dist/forms.cjs +1 -1
  40. package/dist/forms.js +1 -1
  41. package/dist/gerencigeo-canvas/canvas_interacao.d.ts +18 -0
  42. package/dist/gerencigeo-canvas/feature_adapters.d.ts +35 -0
  43. package/dist/gerencigeo-canvas/feature_algoritmos.d.ts +45 -0
  44. package/dist/gerencigeo-canvas/feature_amostra.d.ts +4 -0
  45. package/dist/gerencigeo-canvas/feature_caixa.d.ts +19 -0
  46. package/dist/gerencigeo-canvas/feature_cluster.d.ts +61 -0
  47. package/dist/gerencigeo-canvas/feature_cursores.d.ts +17 -0
  48. package/dist/gerencigeo-canvas/feature_desenho.d.ts +53 -0
  49. package/dist/gerencigeo-canvas/feature_desenho_controle.d.ts +91 -0
  50. package/dist/gerencigeo-canvas/feature_edicao_ops.d.ts +19 -0
  51. package/dist/gerencigeo-canvas/feature_editor_vertices.d.ts +62 -0
  52. package/dist/gerencigeo-canvas/feature_formas.d.ts +7 -0
  53. package/dist/gerencigeo-canvas/feature_hud.d.ts +23 -0
  54. package/dist/gerencigeo-canvas/feature_indice.d.ts +36 -0
  55. package/dist/gerencigeo-canvas/feature_metricas.d.ts +16 -0
  56. package/dist/gerencigeo-canvas/feature_popup.d.ts +31 -0
  57. package/dist/gerencigeo-canvas/feature_selecao.d.ts +38 -0
  58. package/dist/gerencigeo-canvas/feature_simplificacao.d.ts +14 -0
  59. package/dist/gerencigeo-canvas/feature_snap.d.ts +25 -0
  60. package/dist/gerencigeo-canvas/feature_types.d.ts +86 -0
  61. package/dist/gerencigeo-canvas/feature_versoes.d.ts +19 -0
  62. package/dist/gerencigeo-canvas/index.d.ts +21 -0
  63. package/dist/gerencigeo-canvas/layer_hit_test.d.ts +30 -0
  64. package/dist/gerencigeo-canvas/layer_manager.d.ts +11 -3
  65. package/dist/gerencigeo-canvas/layer_pane_ops.d.ts +9 -0
  66. package/dist/gerencigeo-canvas/mapa_controller.d.ts +1 -0
  67. package/dist/gerencigeo-canvas/mapa_pontos_shapes.d.ts +24 -5
  68. package/dist/gerencigeo-canvas/renderers/feicoes_renderer.d.ts +89 -0
  69. package/dist/gerencigeo-canvas/renderers/vector_points_renderer.d.ts +1 -0
  70. package/dist/gerencigeo-canvas/renderers/vector_polygons_renderer.d.ts +2 -2
  71. package/dist/gerencigeo-canvas/types.d.ts +12 -0
  72. package/dist/gerencigeo-canvas/utils.d.ts +3 -1
  73. package/dist/index.cjs +1 -1
  74. package/dist/index.js +111 -106
  75. package/dist/leaflet-DcO7uRC-.cjs +1 -0
  76. package/dist/{leaflet-DkaFZYc5.js → leaflet-PPDKB6Dd.js} +37 -37
  77. package/dist/mapa.cjs +1 -1
  78. package/dist/mapa.js +1 -1
  79. package/dist/register.cjs +1 -1
  80. package/dist/register.js +3 -3
  81. package/dist/seletor-mapa-base.cjs +13 -13
  82. package/dist/seletor-mapa-base.js +101 -51
  83. package/dist/svg-seguro-BsbNQqpd.js +50 -0
  84. package/dist/svg-seguro-C76iLlAZ.cjs +1 -0
  85. package/dist/tabela.cjs +1 -1
  86. package/dist/tabela.js +41 -36
  87. package/dist/tipos-elementos.d.ts +17 -4
  88. package/dist/tipos-vue.d.ts +15 -4
  89. package/dist/tools.cjs +1 -1
  90. package/dist/tools.js +1 -1
  91. package/dist/{ui-paleta-ferramentas-BIytXQLh.js → ui-paleta-ferramentas-CEZYcN4J.js} +18 -27
  92. package/dist/{ui-paleta-ferramentas-DqLY51qa.cjs → ui-paleta-ferramentas-Dbj1kBS9.cjs} +6 -6
  93. package/dist/{ui-switch-DWLgVVnT.js → ui-switch-BcOqOkiV.js} +124 -96
  94. package/dist/ui-switch-D7iPKDj-.cjs +53 -0
  95. package/dist/ui-tabela-propriedades-BBr5sqki.cjs +145 -0
  96. package/dist/{ui-tabela-propriedades-BNcE6VLX.js → ui-tabela-propriedades-Boy7I5yW.js} +1304 -1072
  97. package/package.json +169 -169
  98. package/dist/leaflet-Cw6tqYFh.cjs +0 -1
  99. package/dist/ui-switch-yZIn3IW0.cjs +0 -53
  100. package/dist/ui-tabela-propriedades-D3pyQvyy.cjs +0 -145
package/dist/data.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */const r=require("./ui-tabela-propriedades-D3pyQvyy.cjs"),a=require("./ui-badge-BxT-sDmV.cjs");exports.GerenciadorValoresPropriedades=r.GerenciadorValoresPropriedades;exports.TabelaOrquestradorDados=r.TabelaOrquestradorDados;exports.TabelaRemotaController=r.TabelaRemotaController;exports.TabelaSelecaoController=r.TabelaSelecaoController;exports.UITabela=r.UITabela;exports.UITabelaPropriedades=r.UITabelaPropriedades;exports.abrirPopoverRedimensionamento=r.abrirPopoverRedimensionamento;exports.alternarCategoria=r.alternarCategoria;exports.alternarDirecaoOrdenacao=r.alternarDirecaoOrdenacao;exports.alternarPosicionamentoFlutuante=r.alternarPosicionamentoFlutuante;exports.aplicarOrdenacaoTabela=r.aplicarOrdenacaoTabela;exports.atualizarCampoVisual=r.atualizarCampoVisual;exports.avaliarExpressaoMatematica=r.avaliarExpressaoMatematica;exports.colapsarTodasCategorias=r.colapsarTodasCategorias;exports.conectarArrastoFlutuante=r.conectarArrastoFlutuante;exports.conectarPainelControles=r.conectarPainelControles;exports.criarControladorSplitter=r.criarControladorSplitter;exports.criarEditorAcao=r.criarEditorAcao;exports.criarEditorBooleano=r.criarEditorBooleano;exports.criarEditorCorCad=r.criarEditorCorCad;exports.criarEditorCorSwatch=r.criarEditorCorSwatch;exports.criarEditorLinetype=r.criarEditorLinetype;exports.criarEditorLineweight=r.criarEditorLineweight;exports.criarEditorNumero=r.criarEditorNumero;exports.criarEditorReadonly=r.criarEditorReadonly;exports.criarEditorSelecao=r.criarEditorSelecao;exports.criarEditorTexto=r.criarEditorTexto;exports.criarEditorValor=r.criarEditorValor;exports.criarLinhaPropriedade=r.criarLinhaPropriedade;exports.executarOrquestracaoCorpo=r.executarOrquestracaoCorpo;exports.executarOrquestracaoHeader=r.executarOrquestracaoHeader;exports.executarRedimensionamentoColuna=r.executarRedimensionamentoColuna;exports.exibirPromptPopoverRedimensionamento=r.exibirPromptPopoverRedimensionamento;exports.expandirTodasCategorias=r.expandirTodasCategorias;exports.focarProximoEditor=r.focarProximoEditor;exports.formatWidth=r.formatWidth;exports.getAlignmentClass=r.getAlignmentClass;exports.getRowHeight=r.getRowHeight;exports.getTextAlign=r.getTextAlign;exports.inicializarScrollVirtualizacao=r.inicializarScrollVirtualizacao;exports.iniciarRedimensionamentoColuna=r.iniciarRedimensionamentoColuna;exports.localizarIndiceItem=r.localizarIndiceItem;exports.montarEstruturaDOM=r.montarEstruturaDOM;exports.orquestrarEstruturaInicial=r.orquestrarEstruturaInicial;exports.proximaDensidade=r.proximaDensidade;exports.renderizarCategoriasETree=r.renderizarCategoriasETree;exports.renderizarCorpoTabela=r.renderizarCorpoTabela;exports.renderizarHeaderTabela=r.renderizarHeaderTabela;exports.renderizarSeletorTipos=r.renderizarSeletorTipos;exports.sincronizarAtributosTabela=r.sincronizarAtributosTabela;exports.sincronizarPainelControles=r.sincronizarPainelControles;exports.tratarMudancaAtributoTabela=r.tratarMudancaAtributoTabela;exports.UIBadge=a.UIBadge;exports.UIChip=a.UIChip;exports.UIKpi=a.UIKpi;exports.UIMetrica=a.UIMetrica;exports.UIStat=a.UIStat;exports.UITag=a.UITag;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */const r=require("./ui-tabela-propriedades-BBr5sqki.cjs"),a=require("./ui-badge-BxT-sDmV.cjs");exports.GerenciadorValoresPropriedades=r.GerenciadorValoresPropriedades;exports.TabelaOrquestradorDados=r.TabelaOrquestradorDados;exports.TabelaRemotaController=r.TabelaRemotaController;exports.TabelaSelecaoController=r.TabelaSelecaoController;exports.UITabela=r.UITabela;exports.UITabelaPropriedades=r.UITabelaPropriedades;exports.abrirPopoverRedimensionamento=r.abrirPopoverRedimensionamento;exports.alternarCategoria=r.alternarCategoria;exports.alternarDirecaoOrdenacao=r.alternarDirecaoOrdenacao;exports.alternarPosicionamentoFlutuante=r.alternarPosicionamentoFlutuante;exports.aplicarOrdenacaoTabela=r.aplicarOrdenacaoTabela;exports.atualizarCampoVisual=r.atualizarCampoVisual;exports.avaliarExpressaoMatematica=r.avaliarExpressaoMatematica;exports.buscarLinhaPropriedade=r.buscarLinhaPropriedade;exports.colapsarTodasCategorias=r.colapsarTodasCategorias;exports.conectarArrastoFlutuante=r.conectarArrastoFlutuante;exports.conectarPainelControles=r.conectarPainelControles;exports.criarControladorSplitter=r.criarControladorSplitter;exports.criarEditorAcao=r.criarEditorAcao;exports.criarEditorBooleano=r.criarEditorBooleano;exports.criarEditorCorCad=r.criarEditorCorCad;exports.criarEditorCorSwatch=r.criarEditorCorSwatch;exports.criarEditorLinetype=r.criarEditorLinetype;exports.criarEditorLineweight=r.criarEditorLineweight;exports.criarEditorNumero=r.criarEditorNumero;exports.criarEditorReadonly=r.criarEditorReadonly;exports.criarEditorSelecao=r.criarEditorSelecao;exports.criarEditorTexto=r.criarEditorTexto;exports.criarEditorValor=r.criarEditorValor;exports.criarLinhaPropriedade=r.criarLinhaPropriedade;exports.executarOrquestracaoCorpo=r.executarOrquestracaoCorpo;exports.executarOrquestracaoHeader=r.executarOrquestracaoHeader;exports.executarRedimensionamentoColuna=r.executarRedimensionamentoColuna;exports.exibirPromptPopoverRedimensionamento=r.exibirPromptPopoverRedimensionamento;exports.expandirTodasCategorias=r.expandirTodasCategorias;exports.focarProximoEditor=r.focarProximoEditor;exports.formatWidth=r.formatWidth;exports.getAlignmentClass=r.getAlignmentClass;exports.getRowHeight=r.getRowHeight;exports.getTextAlign=r.getTextAlign;exports.inicializarScrollVirtualizacao=r.inicializarScrollVirtualizacao;exports.iniciarRedimensionamentoColuna=r.iniciarRedimensionamentoColuna;exports.interpretarIndice=r.interpretarIndice;exports.localizarIndiceItem=r.localizarIndiceItem;exports.montarEstruturaDOM=r.montarEstruturaDOM;exports.orquestrarEstruturaInicial=r.orquestrarEstruturaInicial;exports.proximaDensidade=r.proximaDensidade;exports.registrarAtualizadorEditor=r.registrarAtualizadorEditor;exports.renderizarCategoriasETree=r.renderizarCategoriasETree;exports.renderizarCorpoTabela=r.renderizarCorpoTabela;exports.renderizarHeaderTabela=r.renderizarHeaderTabela;exports.renderizarSeletorTipos=r.renderizarSeletorTipos;exports.sincronizarAtributosTabela=r.sincronizarAtributosTabela;exports.sincronizarPainelControles=r.sincronizarPainelControles;exports.sincronizarSelect=r.sincronizarSelect;exports.tratarMudancaAtributoTabela=r.tratarMudancaAtributoTabela;exports.valoresIguais=r.valoresIguais;exports.UIBadge=a.UIBadge;exports.UIChip=a.UIChip;exports.UIKpi=a.UIKpi;exports.UIMetrica=a.UIMetrica;exports.UIStat=a.UIStat;exports.UITag=a.UITag;
package/dist/data.js CHANGED
@@ -1,63 +1,68 @@
1
1
  /* empty css */
2
- import { G as o, T as i, a as s, b as t, U as n, c as l, d as c, e as d, f as u, g as m, h as p, i as C, j as T, k as E, l as b, m as g, n as x, o as I, p as z, q as P, r as U, s as R, t as S, u as h, v as A, w as O, x as f, y as q, z as D, A as M, B as V, C as v, D as w, E as H, F as L, H as y, I as B, J as F, K as G, L as K, M as N, N as W, O as j, P as k, Q as J, R as Q, S as X, V as Y, W as Z, X as _, Y as $, Z as aa } from "./ui-tabela-propriedades-BNcE6VLX.js";
3
- import { U as ea, a as oa, b as ia, c as sa, d as ta, e as na } from "./ui-badge-C0eKBI8E.js";
2
+ import { G as o, T as i, a as s, b as t, U as n, c as l, d as c, e as d, f as u, g as p, h as m, i as C, j as E, k as T, l as b, m as g, n as I, o as x, p as z, q as P, r as U, s as S, t as h, u as A, v as R, w as O, x as f, y as q, z as v, A as D, B as L, C as M, D as V, E as w, F as H, H as y, I as B, J as F, K as G, L as K, M as N, N as W, O as j, P as k, Q as J, R as Q, S as X, V as Y, W as Z, X as _, Y as $, Z as aa, _ as ra, $ as ea, a0 as oa, a1 as ia, a2 as sa } from "./ui-tabela-propriedades-Boy7I5yW.js";
3
+ import { U as na, a as la, b as ca, c as da, d as ua, e as pa } from "./ui-badge-C0eKBI8E.js";
4
4
  export {
5
5
  o as GerenciadorValoresPropriedades,
6
6
  i as TabelaOrquestradorDados,
7
7
  s as TabelaRemotaController,
8
8
  t as TabelaSelecaoController,
9
- ea as UIBadge,
10
- oa as UIChip,
11
- ia as UIKpi,
12
- sa as UIMetrica,
13
- ta as UIStat,
9
+ na as UIBadge,
10
+ la as UIChip,
11
+ ca as UIKpi,
12
+ da as UIMetrica,
13
+ ua as UIStat,
14
14
  n as UITabela,
15
15
  l as UITabelaPropriedades,
16
- na as UITag,
16
+ pa as UITag,
17
17
  c as abrirPopoverRedimensionamento,
18
18
  d as alternarCategoria,
19
19
  u as alternarDirecaoOrdenacao,
20
- m as alternarPosicionamentoFlutuante,
21
- p as aplicarOrdenacaoTabela,
20
+ p as alternarPosicionamentoFlutuante,
21
+ m as aplicarOrdenacaoTabela,
22
22
  C as atualizarCampoVisual,
23
- T as avaliarExpressaoMatematica,
24
- E as colapsarTodasCategorias,
25
- b as conectarArrastoFlutuante,
26
- g as conectarPainelControles,
23
+ E as avaliarExpressaoMatematica,
24
+ T as buscarLinhaPropriedade,
25
+ b as colapsarTodasCategorias,
26
+ g as conectarArrastoFlutuante,
27
+ I as conectarPainelControles,
27
28
  x as criarControladorSplitter,
28
- I as criarEditorAcao,
29
- z as criarEditorBooleano,
30
- P as criarEditorCorCad,
31
- U as criarEditorCorSwatch,
32
- R as criarEditorLinetype,
33
- S as criarEditorLineweight,
34
- h as criarEditorNumero,
35
- A as criarEditorReadonly,
36
- O as criarEditorSelecao,
37
- f as criarEditorTexto,
38
- q as criarEditorValor,
29
+ z as criarEditorAcao,
30
+ P as criarEditorBooleano,
31
+ U as criarEditorCorCad,
32
+ S as criarEditorCorSwatch,
33
+ h as criarEditorLinetype,
34
+ A as criarEditorLineweight,
35
+ R as criarEditorNumero,
36
+ O as criarEditorReadonly,
37
+ f as criarEditorSelecao,
38
+ q as criarEditorTexto,
39
+ v as criarEditorValor,
39
40
  D as criarLinhaPropriedade,
40
- M as executarOrquestracaoCorpo,
41
- V as executarOrquestracaoHeader,
42
- v as executarRedimensionamentoColuna,
41
+ L as executarOrquestracaoCorpo,
42
+ M as executarOrquestracaoHeader,
43
+ V as executarRedimensionamentoColuna,
43
44
  w as exibirPromptPopoverRedimensionamento,
44
45
  H as expandirTodasCategorias,
45
- L as focarProximoEditor,
46
- y as formatWidth,
47
- B as getAlignmentClass,
48
- F as getRowHeight,
49
- G as getTextAlign,
50
- K as inicializarScrollVirtualizacao,
51
- N as iniciarRedimensionamentoColuna,
52
- W as localizarIndiceItem,
53
- j as montarEstruturaDOM,
54
- k as orquestrarEstruturaInicial,
55
- J as proximaDensidade,
56
- Q as renderizarCategoriasETree,
57
- X as renderizarCorpoTabela,
58
- Y as renderizarHeaderTabela,
59
- Z as renderizarSeletorTipos,
60
- _ as sincronizarAtributosTabela,
61
- $ as sincronizarPainelControles,
62
- aa as tratarMudancaAtributoTabela
46
+ y as focarProximoEditor,
47
+ B as formatWidth,
48
+ F as getAlignmentClass,
49
+ G as getRowHeight,
50
+ K as getTextAlign,
51
+ N as inicializarScrollVirtualizacao,
52
+ W as iniciarRedimensionamentoColuna,
53
+ j as interpretarIndice,
54
+ k as localizarIndiceItem,
55
+ J as montarEstruturaDOM,
56
+ Q as orquestrarEstruturaInicial,
57
+ X as proximaDensidade,
58
+ Y as registrarAtualizadorEditor,
59
+ Z as renderizarCategoriasETree,
60
+ _ as renderizarCorpoTabela,
61
+ $ as renderizarHeaderTabela,
62
+ aa as renderizarSeletorTipos,
63
+ ra as sincronizarAtributosTabela,
64
+ ea as sincronizarPainelControles,
65
+ oa as sincronizarSelect,
66
+ ia as tratarMudancaAtributoTabela,
67
+ sa as valoresIguais
63
68
  };
package/dist/forms.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */const a=require("./ui-campo-texto-Cnn2UAkS.cjs"),e=require("./ui-switch-yZIn3IW0.cjs");exports.ATRIBUTOS_OBSERVADOS_CAMPO_TEXTO=a.ATRIBUTOS_OBSERVADOS_CAMPO_TEXTO;exports.UICampoTexto=a.UICampoTexto;exports.UIInput=a.UIInput;exports.criarTemplateCampoTexto=a.criarTemplateCampoTexto;exports.sincronizarFeedbackErro=a.sincronizarFeedbackErro;exports.sincronizarIconeSenha=a.sincronizarIconeSenha;exports.sincronizarLabelEPlaceholder=a.sincronizarLabelEPlaceholder;exports.ATRIBUTOS_OBSERVADOS_LISTA_FLUTUANTE=e.ATRIBUTOS_OBSERVADOS_LISTA_FLUTUANTE;exports.ListaFlutuantePosicionamento=e.ListaFlutuantePosicionamento;exports.ListaFlutuanteTeclado=e.ListaFlutuanteTeclado;exports.RadioGrupoRegistry=e.RadioGrupoRegistry;exports.UICheckbox=e.UICheckbox;exports.UIListaFlutuante=e.UIListaFlutuante;exports.UIRadio=e.UIRadio;exports.UISelect=e.UISelect;exports.UISwitch=e.UISwitch;exports.UIToggle=e.UIToggle;exports.atualizarEstadoSelecaoLista=e.atualizarEstadoSelecaoLista;exports.criarTemplateListaFlutuante=e.criarTemplateListaFlutuante;exports.renderizarItensLista=e.renderizarItensLista;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */const a=require("./ui-campo-texto-Cnn2UAkS.cjs"),e=require("./ui-switch-D7iPKDj-.cjs");exports.ATRIBUTOS_OBSERVADOS_CAMPO_TEXTO=a.ATRIBUTOS_OBSERVADOS_CAMPO_TEXTO;exports.UICampoTexto=a.UICampoTexto;exports.UIInput=a.UIInput;exports.criarTemplateCampoTexto=a.criarTemplateCampoTexto;exports.sincronizarFeedbackErro=a.sincronizarFeedbackErro;exports.sincronizarIconeSenha=a.sincronizarIconeSenha;exports.sincronizarLabelEPlaceholder=a.sincronizarLabelEPlaceholder;exports.ATRIBUTOS_OBSERVADOS_LISTA_FLUTUANTE=e.ATRIBUTOS_OBSERVADOS_LISTA_FLUTUANTE;exports.ListaFlutuantePosicionamento=e.ListaFlutuantePosicionamento;exports.ListaFlutuanteTeclado=e.ListaFlutuanteTeclado;exports.RadioGrupoRegistry=e.RadioGrupoRegistry;exports.UICheckbox=e.UICheckbox;exports.UIListaFlutuante=e.UIListaFlutuante;exports.UIRadio=e.UIRadio;exports.UISelect=e.UISelect;exports.UISwitch=e.UISwitch;exports.UIToggle=e.UIToggle;exports.atualizarEstadoSelecaoLista=e.atualizarEstadoSelecaoLista;exports.criarTemplateListaFlutuante=e.criarTemplateListaFlutuante;exports.renderizarItensLista=e.renderizarItensLista;
package/dist/forms.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /* empty css */
2
2
  import { A as t, U as o, a as r, c as i, s as n, b as c, d as T } from "./ui-campo-texto-Uu2dJE_0.js";
3
- import { A as I, L as U, a as u, R as S, U as L, b as d, c as p, d as A, e as m, f as O, g as R, h as E, r as F } from "./ui-switch-DWLgVVnT.js";
3
+ import { A as I, L as U, a as u, R as S, U as L, b as d, c as p, d as A, e as m, f as O, g as R, h as E, r as F } from "./ui-switch-BcOqOkiV.js";
4
4
  export {
5
5
  t as ATRIBUTOS_OBSERVADOS_CAMPO_TEXTO,
6
6
  I as ATRIBUTOS_OBSERVADOS_LISTA_FLUTUANTE,
@@ -12,6 +12,19 @@ export interface CanvasInteracaoContext {
12
12
  containerHost?: HTMLElement | ShadowRoot;
13
13
  atualizarDestaqueLinhasTabela?: () => void;
14
14
  onSelectionChange?: (selectedIds: number[], selectedVizinhoIds: number[]) => void;
15
+ /** Chamado ao limpar a seleção (Esc, clique no vazio) para limpar também as feições genéricas. */
16
+ aoLimparSelecao?: () => void;
17
+ /** Há uma ferramenta de desenho ativa: cliques e arrastos do mouse são dela, não da seleção. */
18
+ ferramentaAtiva?: () => boolean;
19
+ /** Botão direito sobre o mapa (o menu nativo é sempre suprimido). */
20
+ aoMenuContexto?: (e: MouseEvent) => void;
21
+ /** Seleção por caixa sobre feições genéricas; `aditivo` = Ctrl/Cmd. */
22
+ selecionarFeicoesNaCaixa?: (caixa: {
23
+ x1: number;
24
+ y1: number;
25
+ x2: number;
26
+ y2: number;
27
+ }, modo: 'window' | 'crossing', aditivo: boolean) => void;
15
28
  }
16
29
  /**
17
30
  * Controlador de Interações do Canvas AutoCAD-like para o Leaflet
@@ -36,6 +49,7 @@ export declare class CanvasInteracao {
36
49
  private touchStartPos;
37
50
  private touchStartDist;
38
51
  private isTouchPanning;
52
+ private removerSupressao;
39
53
  selectionHappened: boolean;
40
54
  panHappened: boolean;
41
55
  constructor(ctx?: Partial<CanvasInteracaoContext>);
@@ -45,6 +59,10 @@ export declare class CanvasInteracao {
45
59
  private handleTouchMove;
46
60
  private handleTouchEnd;
47
61
  private handleContextMenu;
62
+ private handleClick;
63
+ /** Engole o `click` que o navegador dispara logo após soltar o botão de uma seleção por caixa. */
64
+ private suprimirProximoClique;
65
+ private cancelarSupressaoClique;
48
66
  private handleMouseDown;
49
67
  private handleMouseMove;
50
68
  private handleMouseUp;
@@ -0,0 +1,35 @@
1
+ import { Ponto, Segmento, Confrontante } from './types';
2
+ import { Feicao, LatLonPar } from './feature_types';
3
+ /** Opções da normalização de entrada. */
4
+ export interface OpcoesNormalizacao {
5
+ /**
6
+ * Aceita a coordenada (0, 0) exata. Por padrão ela é rejeitada, pois costuma ser um placeholder de erro
7
+ * ("Null Island"); ligue quando houver dados reais ali.
8
+ */
9
+ aceitarOrigem?: boolean;
10
+ }
11
+ /**
12
+ * Aceita [lat,lon], {lat,lng|lon}, {latitude,longitude}. Descarta NaN/Infinity.
13
+ * Rejeita (0, 0) exato, a menos que `opcoes.aceitarOrigem` (ver `normalizarFeicaoEntrada`).
14
+ */
15
+ export declare function normalizarCoordenada(bruta: unknown, opcoes?: OpcoesNormalizacao): LatLonPar | null;
16
+ /** Normaliza um anel; abre o anel fechado duplicado. Exige ≥3 vértices. */
17
+ export declare function normalizarAnel(bruto: unknown[], opcoes?: OpcoesNormalizacao): LatLonPar[] | null;
18
+ /** Normaliza uma linha; exige ≥2 vértices. */
19
+ export declare function normalizarLinha(bruta: unknown[], opcoes?: OpcoesNormalizacao): LatLonPar[] | null;
20
+ /** Aceita anel simples ou multianel. */
21
+ export declare function normalizarPoligono(bruto: unknown[], opcoes?: OpcoesNormalizacao): LatLonPar[][] | null;
22
+ export declare function pontoParaFeicao(p: Ponto, camadaId: string): Feicao | null;
23
+ /** Segmentos referenciam pontos por id; segmentos com ponta ausente são descartados. */
24
+ export declare function segmentoParaFeicao(s: Segmento, pontos: Map<string, Ponto>, camadaId: string): Feicao | null;
25
+ /** Converte o POLYGON((x y, ...)) do vizinho (ordem WKT: lon lat). */
26
+ export declare function confrontanteParaFeicao(c: Confrontante, camadaId: string): Feicao | null;
27
+ /**
28
+ * Porta de entrada das feições vindas do consumidor: aceita coordenadas em qualquer formato
29
+ * suportado por `normalizarCoordenada` e devolve a `Feicao` normalizada, ou `null` se inválida.
30
+ *
31
+ * Por padrão rejeita a coordenada (0, 0) exata (placeholder de erro, "Null Island"): uma feição com um
32
+ * vértice ali é descartada. Quem tem dados reais nesse ponto liga `opcoes.aceitarOrigem` (no componente,
33
+ * o atributo `aceitar-origem`).
34
+ */
35
+ export declare function normalizarFeicaoEntrada(bruta: unknown, camadaId: string, opcoes?: OpcoesNormalizacao): Feicao | null;
@@ -0,0 +1,45 @@
1
+ import { Feicao, GeometriaFeicao, LatLonPar } from './feature_types';
2
+ /** Ponto dentro do anel externo e fora dos furos. */
3
+ export declare function pontoNoPoligono(p: LatLonPar, aneis: LatLonPar[][]): boolean;
4
+ /**
5
+ * Divide um polígono simples (um anel, sem furos) por uma linha de corte.
6
+ * A linha pode atravessar o polígono várias vezes; cada travessia (entrada → saída) vira um corte.
7
+ * Devolve os anéis resultantes (≥ 2), ou `null` se a linha não corta o polígono.
8
+ * Limitações: não trata furos; cruzamentos exatamente sobre um vértice podem ser ignorados;
9
+ * linhas que se cruzam entre si dentro do polígono dão resultado indefinido.
10
+ */
11
+ export declare function dividirPoligonoComLinha(anel: LatLonPar[], linha: LatLonPar[]): LatLonPar[][] | null;
12
+ /**
13
+ * Encadeia linhas cujas pontas estejam a no máximo `toleranciaM` uma da outra, invertendo as que
14
+ * precisarem. Lacunas dentro da tolerância viram uma "ponte" (segmento reto). Devolve `null` se
15
+ * alguma linha não se liga à cadeia.
16
+ */
17
+ export declare function juntarLinhas(linhas: LatLonPar[][], toleranciaM?: number): LatLonPar[] | null;
18
+ /**
19
+ * Junta dois polígonos simples por uma "ponte": o anel é aberto nos vértices mais próximos de cada
20
+ * um e os dois são costurados num anel só (a ponte tem largura zero). Serve para polígonos separados
21
+ * por até `toleranciaM` ou que dividem uma divisa. Recusa polígonos cujas bordas se cruzam
22
+ * (`null`): união booleana de áreas sobrepostas não é suportada.
23
+ */
24
+ export declare function juntarPoligonos(a: LatLonPar[], b: LatLonPar[], toleranciaM?: number): LatLonPar[] | null;
25
+ /**
26
+ * Buffer de uma feição como polígono. Ponto/círculo: círculo de 64 lados. Linha: contorno com pontas
27
+ * arredondadas. Polígono: offset do anel externo (distância negativa encolhe). Aproximação por
28
+ * meia-esquadria: boa para distâncias pequenas frente ao tamanho da feição; pode se auto-intersectar
29
+ * em polígonos côncavos com distâncias grandes.
30
+ */
31
+ export declare function gerarBuffer(g: GeometriaFeicao, distanciaM: number): LatLonPar[] | null;
32
+ /** Copia a geometria deslocada `leste` m para leste e `norte` m para norte. */
33
+ export declare function deslocarGeometria(g: GeometriaFeicao, lesteM: number, norteM: number): GeometriaFeicao;
34
+ export type UnidadeComprimento = 'm' | 'km' | 'ft' | 'mi';
35
+ export type UnidadeArea = 'm2' | 'ha' | 'km2' | 'ac' | 'alqueire';
36
+ export declare function converterComprimento(valor: number, de: UnidadeComprimento, para: UnidadeComprimento): number;
37
+ export declare function converterArea(valor: number, de: UnidadeArea, para: UnidadeArea): number;
38
+ /** `-23.5` -> `23°30'00.00"S`. `eixo` escolhe N/S ou L/O (leste/oeste). */
39
+ export declare function ddParaDms(valor: number, eixo: 'lat' | 'lon', casas?: number): string;
40
+ /** Aceita `23°30'00.00"S`, `23 30 0 S`, `-23°30'`, vírgula decimal. Devolve `null` se não entender. */
41
+ export declare function dmsParaDd(texto: string): number | null;
42
+ /** Distância em metros de um ponto até o vértice/segmento mais próximo; útil para testes e ferramentas. */
43
+ export declare function distanciaEntre(a: LatLonPar, b: LatLonPar): number;
44
+ /** Cópia profunda de uma feição com novo id (para duplicar/dividir). */
45
+ export declare function clonarFeicao(f: Feicao, novoId: string, geometria?: GeometriaFeicao): Feicao;
@@ -0,0 +1,4 @@
1
+ import { Feicao } from './feature_types';
2
+ import { PontoPx, Projetor } from './feature_caixa';
3
+ export declare const TOLERANCIA_AMOSTRA_PX = 6;
4
+ export declare function feicaoNoPonto(cursor: PontoPx, candidatas: Feicao[], projetar: Projetor, tolerancia?: number): Feicao | null;
@@ -0,0 +1,19 @@
1
+ import { Feicao, LatLonPar } from './feature_types';
2
+ export interface CaixaPx {
3
+ x1: number;
4
+ y1: number;
5
+ x2: number;
6
+ y2: number;
7
+ }
8
+ export interface PontoPx {
9
+ x: number;
10
+ y: number;
11
+ }
12
+ export type Projetor = (p: LatLonPar) => PontoPx;
13
+ export type ModoCaixa = 'window' | 'crossing';
14
+ export declare function feicaoNaCaixa(f: Feicao, caixa: CaixaPx, projetar: Projetor, modo: ModoCaixa): boolean;
15
+ /**
16
+ * Seleção por laço (polígono em coordenadas geográficas). Ponto, texto e círculo entram se o ponto de
17
+ * referência está dentro; linha, se algum vértice está; polígono, se algum vértice ou o centróide está.
18
+ */
19
+ export declare function feicaoNoLaco(f: Feicao, laco: LatLonPar[]): boolean;
@@ -0,0 +1,61 @@
1
+ import { LatLonPar } from './feature_types';
2
+ /** Lado da célula da grade, em px. */
3
+ export declare const CELULA_CLUSTER_PX = 55;
4
+ /** A partir deste zoom os pontos se desmembram. */
5
+ export declare const ZOOM_DESMEMBRAR = 17;
6
+ /** Com no máximo isto de pontos na camada, nunca agrupa. */
7
+ export declare const MAX_PONTOS_SEM_CLUSTER = 8;
8
+ export interface PontoCluster {
9
+ id: string;
10
+ coordenada: LatLonPar;
11
+ }
12
+ export interface Cluster {
13
+ chave: string;
14
+ coordenada: LatLonPar;
15
+ membros: PontoCluster[];
16
+ }
17
+ export interface ResultadoCluster {
18
+ clusters: Cluster[];
19
+ /** Pontos que ficaram sozinhos na célula (desenhados individualmente). */
20
+ isolados: PontoCluster[];
21
+ }
22
+ /** `projetar` leva [lat, lon] a pixels de mundo no zoom em questão. */
23
+ export type ProjetorMundo = (p: LatLonPar) => {
24
+ x: number;
25
+ y: number;
26
+ };
27
+ export declare function deveAgrupar(totalPontos: number, zoom: number): boolean;
28
+ export declare function centroDe(membros: PontoCluster[]): LatLonPar;
29
+ export declare function agruparPontos(pontos: PontoCluster[], zoom: number, projetar: ProjetorMundo): ResultadoCluster;
30
+ /** Uma célula da grade: seus membros e a soma das coordenadas (centro em O(1)). */
31
+ export interface CelulaCluster {
32
+ membros: Map<string, PontoCluster>;
33
+ somaLat: number;
34
+ somaLon: number;
35
+ }
36
+ /**
37
+ * Mesma grade de `agruparPontos`, porém mantida em memória: entrar, sair ou mover um ponto custa O(1)
38
+ * e a célula afetada é reavaliada sozinha, sem reagrupar a camada inteira. Vale para um único zoom.
39
+ */
40
+ export declare class AgrupadorCluster {
41
+ readonly zoom: number;
42
+ private projetar;
43
+ private celulas;
44
+ private celulaDe;
45
+ /** Chaves das células com 2 ou mais pontos (as únicas que viram cluster). */
46
+ private multiplas;
47
+ constructor(zoom: number, projetar: ProjetorMundo);
48
+ /** Pontos agrupáveis na grade. */
49
+ get total(): number;
50
+ /** Chave da célula do ponto, ou `undefined` se ele não está na grade. */
51
+ chaveDoPonto(id: string): string | undefined;
52
+ celula(chave: string): CelulaCluster | undefined;
53
+ /** Só as células que viram cluster (2+ pontos). */
54
+ celulasAgrupadas(): IterableIterator<[string, CelulaCluster]>;
55
+ /** Está numa célula com 2 ou mais pontos (ou seja, dentro de um cluster)? */
56
+ emCluster(id: string): boolean;
57
+ /** Insere (ou move) o ponto; devolve a chave da célula nova. */
58
+ inserir(p: PontoCluster): string;
59
+ /** Tira o ponto da grade; devolve a chave da célula de onde saiu. */
60
+ remover(id: string): string | undefined;
61
+ }
@@ -0,0 +1,17 @@
1
+ import { default as L } from 'leaflet';
2
+ import { LatLonPar } from './feature_types';
3
+ export interface UsuarioRemoto {
4
+ id: string;
5
+ nome?: string;
6
+ cor?: string;
7
+ }
8
+ export declare function corHexSegura(cor: unknown): string;
9
+ export declare class CursoresRemotos {
10
+ private obterMapa;
11
+ private marcadores;
12
+ constructor(obterMapa: () => L.Map | null);
13
+ get quantidade(): number;
14
+ atualizar(usuario: UsuarioRemoto, coord: LatLonPar): boolean;
15
+ remover(id: string): boolean;
16
+ limpar(): void;
17
+ }
@@ -0,0 +1,53 @@
1
+ import { GeometriaFeicao, LatLonPar } from './feature_types';
2
+ export declare const FERRAMENTAS: readonly ["ponto", "linha", "poligono", "retangulo", "elipse", "poligono-regular", "estrela", "circulo", "texto", "caneta", "medir-distancia", "medir-area", "dividir", "selecao-laco", "conta-gotas"];
3
+ export type Ferramenta = (typeof FERRAMENTAS)[number];
4
+ /** Raio mínimo (m) da ferramenta círculo; abaixo disso o clique é ignorado (como no motor antigo). */
5
+ export declare const RAIO_MINIMO_CIRCULO_M = 2;
6
+ export declare function ehFerramenta(v: unknown): v is Ferramenta;
7
+ /** Resultado de um clique: se a ferramenta fecha sozinha (ponto, retângulo, círculo...), vem a geometria. */
8
+ export interface ResultadoClique {
9
+ concluida?: GeometriaFeicao;
10
+ }
11
+ /** Âncora da caneta Bézier; a alça de saída é uma coordenada absoluta (a de entrada é o espelho). */
12
+ export interface AncoraBezier {
13
+ ponto: LatLonPar;
14
+ alca?: LatLonPar;
15
+ }
16
+ /** Amostra a curva cúbica que passa pelas âncoras (sem alça = reta). */
17
+ export declare function amostrarBezier(ancoras: AncoraBezier[]): LatLonPar[];
18
+ export declare class SessaoDesenho {
19
+ readonly ferramenta: Ferramenta;
20
+ private fechar;
21
+ readonly pontos: LatLonPar[];
22
+ cursor: LatLonPar | null;
23
+ readonly ancoras: AncoraBezier[];
24
+ constructor(ferramenta: Ferramenta, fechar?: boolean);
25
+ /** Quantos vértices/âncoras já foram colocados. */
26
+ get nos(): number;
27
+ /** A ferramenta aceita vários cliques e termina com Enter/duplo clique? */
28
+ get ehSequencial(): boolean;
29
+ private get ehArea();
30
+ /** Um clique perto do primeiro vértice fecha a figura? (polígono, laço, medir área e caneta com 3+ vértices) */
31
+ get fechaNoPrimeiro(): boolean;
32
+ /** Posição do primeiro vértice/âncora (alvo do fechamento), se houver. */
33
+ get primeiro(): LatLonPar | null;
34
+ get minimo(): number;
35
+ get podeConcluir(): boolean;
36
+ mover(c: LatLonPar): void;
37
+ clicar(c: LatLonPar): ResultadoClique;
38
+ /** Caneta: arrastar logo após colocar a âncora define a alça de saída (a de entrada é o espelho). */
39
+ definirAlca(c: LatLonPar): void;
40
+ /** Desfaz o último vértice/âncora (Backspace). Devolve se algo foi desfeito. */
41
+ desfazer(): boolean;
42
+ /** Vértices da linha/anel em construção, incluindo a curva da caneta. */
43
+ private vertices;
44
+ private retangulo;
45
+ /** Geometria provisória para desenhar enquanto o mouse se move (inclui o cursor). */
46
+ previa(): GeometriaFeicao | null;
47
+ /** Fecha uma ferramenta sequencial (Enter ou duplo clique). `null` se ainda não há vértices suficientes. */
48
+ concluir(): GeometriaFeicao | null;
49
+ /** Fecha em polígono (clique no primeiro vértice). Na caneta vale mesmo sem a opção `fechar`. */
50
+ concluirFechando(): GeometriaFeicao | null;
51
+ /** Medida em andamento: comprimento (linha) ou comprimento do contorno (área), em metros. */
52
+ comprimentoMetros(): number;
53
+ }
@@ -0,0 +1,91 @@
1
+ import { default as L } from 'leaflet';
2
+ import { GeometriaFeicao, LatLonPar } from './feature_types';
3
+ import { Ferramenta } from './feature_desenho';
4
+ import { ResultadoSnap } from './feature_snap';
5
+ export declare const ID_HUD_DESENHO = "cm-draw-hud";
6
+ export declare const CLASSE_FERRAMENTA_ATIVA = "cad-ferramenta-ativa";
7
+ export interface InfoMedicao {
8
+ tipo: 'distancia' | 'area';
9
+ pontos: LatLonPar[];
10
+ comprimentoM: number;
11
+ areaM2?: number;
12
+ perimetroM?: number;
13
+ }
14
+ export interface DependenciasDesenho {
15
+ map: L.Map;
16
+ buscarSnap: (coord: LatLonPar) => ResultadoSnap | null;
17
+ snapAtivo: () => boolean;
18
+ /** Geometria pronta de uma ferramenta de criação/divisão (`texto` vem do campo de entrada). */
19
+ aoGeometria: (ferramenta: Ferramenta, geometria: GeometriaFeicao) => void;
20
+ aoMedir: (info: InfoMedicao) => void;
21
+ /** Clique do conta-gotas, na coordenada (já com snap, se ligado). */
22
+ aoAmostrar: (coord: LatLonPar, evento: MouseEvent | undefined) => void;
23
+ /** Ferramenta desativada (Esc sem nada em andamento, troca de ferramenta ou `desativar`). */
24
+ aoDesativar: (ferramenta: Ferramenta) => void;
25
+ /**
26
+ * Clique da ferramenta texto, antes do campo inline. Devolver `true` significa que o consumidor assumiu a entrada
27
+ * do texto (ex.: abriu um modal) e o campo inline não deve aparecer.
28
+ */
29
+ aoSolicitarTexto?: (coord: LatLonPar) => boolean;
30
+ }
31
+ export declare class ControleDesenho {
32
+ private dep;
33
+ private sessao;
34
+ private fechar;
35
+ private grupo;
36
+ private previa;
37
+ private marcas;
38
+ private medicao;
39
+ private marcadorSnap;
40
+ private hud;
41
+ private campoTexto;
42
+ private arrastando;
43
+ private ultimoClique;
44
+ constructor(dep: DependenciasDesenho);
45
+ get ferramenta(): Ferramenta | null;
46
+ get ativo(): boolean;
47
+ /** Vértices/âncoras já colocados na figura em andamento. */
48
+ get nos(): number;
49
+ /** Desfaz o último vértice (mesmo que Backspace/Ctrl+Z). */
50
+ desfazerVertice(): boolean;
51
+ /** Liga uma ferramenta (troca a anterior). `fechar` faz a caneta gerar polígono em vez de linha. */
52
+ ativar(ferramenta: Ferramenta, opcoes?: {
53
+ fechar?: boolean;
54
+ }): void;
55
+ /** Desliga a ferramenta ativa (idempotente). A medição pronta continua na tela. */
56
+ desativar(): void;
57
+ limparMedicao(): void;
58
+ private desligar;
59
+ private coordenada;
60
+ private repetido;
61
+ private aoClicar;
62
+ /** Com 3+ vértices, um clique perto do primeiro fecha a figura em polígono. */
63
+ private fechaNoPrimeiroVertice;
64
+ private aoPressionar;
65
+ private aoSoltar;
66
+ private aoMover;
67
+ private aoDuploClique;
68
+ private aoTecla;
69
+ /** Fecha a ferramenta sequencial em andamento (Enter, duplo clique ou botão Concluir). */
70
+ concluir(): void;
71
+ /**
72
+ * Botão direito com a ferramenta ativa: conclui se já dá figura; senão desfaz o último vértice;
73
+ * sem nada em andamento, desliga a ferramenta (mesmo roteiro do antigo MapEngine).
74
+ */
75
+ botaoDireito(): void;
76
+ private reiniciar;
77
+ private finalizar;
78
+ private pedirTexto;
79
+ private cancelarTexto;
80
+ private atualizar;
81
+ private desenharGeometria;
82
+ /** Desenha a medição pronta e devolve o resumo; quem chama avisa o consumidor (depois de a sessão estar estável). */
83
+ private mostrarMedicao;
84
+ private mostrarSnap;
85
+ private esconderSnap;
86
+ private montarHud;
87
+ private atualizarHud;
88
+ /** Para os testes: simula um clique na coordenada, sem passar pelo mapa. */
89
+ clicarEm(coord: LatLonPar): void;
90
+ moverPara(coord: LatLonPar): void;
91
+ }
@@ -0,0 +1,19 @@
1
+ import { Feicao, GeometriaFeicao, LatLonPar } from './feature_types';
2
+ export type MotivoRecusaEdicao = 'bloqueada' | 'tipo-nao-suportado' | 'poligono-com-furos' | 'multiparte' | 'muitos-vertices';
3
+ /** Acima disto cada vértice seria uma alça no DOM: recusa em vez de travar a página. */
4
+ export declare const MAX_VERTICES_EDICAO = 5000;
5
+ /** Linha precisa de 2 vértices; polígono, de 3. */
6
+ export declare function minimoVertices(g: GeometriaFeicao): number;
7
+ /** `null` quando pode editar; senão, o motivo da recusa. Polígono com furos/multipartes vai para a tabela de vértices. */
8
+ export declare function verificarEditavel(f: Feicao, camadaBloqueada?: boolean): MotivoRecusaEdicao | null;
9
+ export declare function verticesDe(g: GeometriaFeicao): LatLonPar[];
10
+ /** Nova geometria do mesmo tipo com estes vértices (não altera a original). */
11
+ export declare function comVertices(g: GeometriaFeicao, pts: LatLonPar[]): GeometriaFeicao;
12
+ export declare function moverVertice(g: GeometriaFeicao, indice: number, coord: LatLonPar): GeometriaFeicao;
13
+ /** Insere `coord` logo depois do vértice `depoisDe` (no polígono, `depoisDe` = último vale entre o último e o primeiro). */
14
+ export declare function inserirVertice(g: GeometriaFeicao, depoisDe: number, coord: LatLonPar): GeometriaFeicao;
15
+ /** `null` quando o vértice não pode sair (mínimo de 3 no polígono, 2 na linha, ponto não perde o único). */
16
+ export declare function removerVertice(g: GeometriaFeicao, indice: number): GeometriaFeicao | null;
17
+ export declare function pontoMedio(a: LatLonPar, b: LatLonPar): LatLonPar;
18
+ /** Pares de índices dos segmentos (o polígono inclui o que fecha o último no primeiro). */
19
+ export declare function segmentosDe(g: GeometriaFeicao): Array<[number, number]>;
@@ -0,0 +1,62 @@
1
+ import { default as L } from 'leaflet';
2
+ import { Feicao, LatLonPar } from './feature_types';
3
+ import { ResultadoSnap } from './feature_snap';
4
+ export declare const ID_HUD_EDICAO = "cm-vertex-edit-hud";
5
+ export interface DependenciasEditor {
6
+ map: L.Map;
7
+ /** Snap para a posição do cursor, ignorando o vértice em arrasto. Já considera se o snap está ligado. */
8
+ buscarSnap: (coord: LatLonPar, excluir: {
9
+ feicaoId: string;
10
+ camadaId: string;
11
+ vertice?: number;
12
+ }) => ResultadoSnap | null;
13
+ snapLigado: () => boolean;
14
+ alternarSnap: () => void;
15
+ /** Mostra a geometria nova no mapa sem gravar (durante o arrasto). */
16
+ previsualizar: (f: Feicao) => void;
17
+ /** Fim de cada gesto (soltar alça, inserir, excluir): grava a feição. */
18
+ aoGesto: (f: Feicao) => void;
19
+ /** A edição terminou (Concluir, Esc, ou chamada de `parar`). */
20
+ aoEncerrar: (f: Feicao) => void;
21
+ }
22
+ export declare class EditorVertices {
23
+ private dep;
24
+ private feicaoAtual;
25
+ private pts;
26
+ private alcas;
27
+ private fantasmas;
28
+ private marcadorSnap;
29
+ private hud;
30
+ private grupo;
31
+ constructor(dep: DependenciasEditor);
32
+ get ativo(): boolean;
33
+ get feicao(): Feicao | null;
34
+ iniciar(f: Feicao): void;
35
+ /** Encerra a edição (idempotente). */
36
+ parar(): void;
37
+ /** A feição foi alterada por fora (API): refaz as alças com a geometria nova. */
38
+ sincronizar(f: Feicao): void;
39
+ /** Atualiza o texto "Snap" do HUD quando o snap é ligado/desligado. */
40
+ atualizarSnapNoHud(): void;
41
+ private geometriaAtual;
42
+ private feicaoComPontos;
43
+ private reconstruir;
44
+ private icone;
45
+ private criarAlca;
46
+ private criarFantasma;
47
+ private aoArrastar;
48
+ private inserir;
49
+ private confirmar;
50
+ private excluir;
51
+ /** Atalho para testes/API: mesma operação do botão direito. */
52
+ excluirVertice(indice: number): boolean;
53
+ inserirVerticeApos(indice: number): void;
54
+ private mostrarSnap;
55
+ private esconderSnap;
56
+ private montarHud;
57
+ private atualizarHud;
58
+ /** Para os testes: posição atual dos vértices. */
59
+ vertices(): LatLonPar[];
60
+ /** Para os testes: move um vértice como se a alça tivesse sido arrastada até `coord`. */
61
+ arrastarPara(indice: number, coord: LatLonPar): void;
62
+ }
@@ -0,0 +1,7 @@
1
+ import { LatLonPar } from './feature_types';
2
+ /** Elipse inscrita na caixa definida pelo centro e pelo canto; vazia se os dois raios são zero. */
3
+ export declare function gerarElipse(centro: LatLonPar, borda: LatLonPar): LatLonPar[] | null;
4
+ /** Polígono regular (padrão: hexágono) com um vértice em `borda`. */
5
+ export declare function gerarPoligonoRegular(centro: LatLonPar, borda: LatLonPar, lados?: number): LatLonPar[] | null;
6
+ /** Estrela (padrão: 5 pontas); `borda` define o raio externo e a rotação. */
7
+ export declare function gerarEstrela(centro: LatLonPar, borda: LatLonPar, pontas?: number): LatLonPar[] | null;
@@ -0,0 +1,23 @@
1
+ export interface MargensHud {
2
+ topo: number;
3
+ base: number;
4
+ esquerda: number;
5
+ direita: number;
6
+ }
7
+ export declare const MARGEM_HUD_PADRAO: MargensHud;
8
+ /** Folga mínima entre o HUD e as bordas da área visível (px). */
9
+ export declare const FOLGA_HUD = 16;
10
+ /** Parte da largura do mapa que o HUD pode ocupar, no máximo. */
11
+ export declare const FRACAO_LARGURA_HUD = 0.92;
12
+ export declare const PROPRIEDADES_HUD: Record<keyof MargensHud, string>;
13
+ /** Posicionamento comum aos dois HUDs. Equivale a `posicaoHud`. */
14
+ export declare const CSS_POSICAO_HUD: string;
15
+ /** Mesma conta do CSS, em número: serve de referência para os testes e para quem posiciona algo junto do HUD. */
16
+ export declare function posicaoHud(largura: number, altura: number, margens?: Partial<MargensHud>): {
17
+ centroX: number;
18
+ base: number;
19
+ larguraMax: number;
20
+ alturaMax: number;
21
+ };
22
+ /** Grava (ou, para chaves ausentes/inválidas, remove) as margens no conteiner do mapa. */
23
+ export declare function aplicarMargensHud(conteiner: HTMLElement, margens: Partial<MargensHud>): void;