@thibezer/ui-components-kit 2.11.1 → 2.12.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 (39) hide show
  1. package/CHANGELOG.md +62 -1
  2. package/dist/alvo-digitavel-CzCvNVQ3.js +23 -0
  3. package/dist/alvo-digitavel-DbH0hYFf.cjs +1 -0
  4. package/dist/camadas.cjs +111 -106
  5. package/dist/camadas.js +1061 -892
  6. package/dist/canvas.cjs +27 -27
  7. package/dist/canvas.js +801 -819
  8. package/dist/components/ui-camadas/camadas-arvore-renderer.d.ts +3 -0
  9. package/dist/components/ui-camadas/camadas-colecao.d.ts +1 -1
  10. package/dist/components/ui-camadas/camadas-drop-ops.d.ts +3 -0
  11. package/dist/components/ui-camadas/camadas-eventos-camadas.d.ts +2 -0
  12. package/dist/components/ui-camadas/camadas-hierarquia.d.ts +12 -2
  13. package/dist/components/ui-camadas/camadas-host.d.ts +6 -0
  14. package/dist/components/ui-camadas/camadas-metricas.d.ts +2 -1
  15. package/dist/components/ui-camadas/camadas-selecao.d.ts +2 -2
  16. package/dist/components/ui-camadas/tipos.d.ts +1 -0
  17. package/dist/components/ui-camadas/ui-camadas.d.ts +3 -0
  18. package/dist/components/ui-tabela-propriedades/editores-basicos.d.ts +4 -1
  19. package/dist/components/ui-tabela-propriedades/propriedades-dom-utils.d.ts +2 -0
  20. package/dist/components/ui-tabela-propriedades/propriedades-gerenciador-valores.d.ts +3 -0
  21. package/dist/components/ui-tabela-propriedades/propriedades-painel-controles.d.ts +1 -0
  22. package/dist/components/ui-tabela-propriedades/tipos.d.ts +14 -0
  23. package/dist/components/ui-tabela-propriedades/ui-tabela-propriedades.d.ts +20 -0
  24. package/dist/custom-elements.json +28508 -25795
  25. package/dist/data.cjs +1 -1
  26. package/dist/data.js +79 -72
  27. package/dist/index.cjs +1 -1
  28. package/dist/index.d.ts +3 -3
  29. package/dist/index.js +163 -156
  30. package/dist/register.cjs +1 -1
  31. package/dist/register.js +1 -1
  32. package/dist/tabela.cjs +1 -1
  33. package/dist/tabela.js +71 -64
  34. package/dist/tipos-elementos.d.ts +111 -6
  35. package/dist/tipos-react.d.ts +4 -0
  36. package/dist/tipos-vue.d.ts +100 -6
  37. package/dist/ui-tabela-propriedades-CyPyKXtB.js +3013 -0
  38. package/dist/ui-tabela-propriedades-DqvPilK_.cjs +142 -0
  39. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,4 +1,65 @@
1
- # Changelog
1
+ # Changelog
2
+
3
+ ## 2.12.0 — 2026-10-26
4
+
5
+ ### `<ui-camadas>`: Verificação e Correção Profunda, Robustez e UX Avançada
6
+
7
+ - **Proteção Numérica e Degradação Graciosa (Regra #0 do AGENTS.md)**:
8
+ - Eliminação de recursão infinita e loops em `construirHierarquiaCamadas` e `achatarCamadas`: proteção com detecção de ciclos via `Set` de nós visitados e quebra do ciclo elegendo a raiz sem perder camadas da árvore nem travar a UI.
9
+ - Correção do cálculo de área geodésica em `camadas-metricas.ts`: substituição da soma de produtos vetoriais de arestas por Shoelace projetado na esfera WGS84 com projeção local ($\phi_m$), blindagem contra `NaN`/`Infinity`, divisão por zero e clamp trigonométrico na distância esférica.
10
+ - Saneamento defensivo em `atualizarFeicaoNoHost`: proteção contra objetos `feicao` nulos ou indefinidos e clonagem segura de propriedades.
11
+ - **Persistência Completa de Hierarquia**:
12
+ - `montarEstadoPersistido` e `aplicarEstadoPersistido` agora salvam e restauram `parentId`, impedindo o "desaninhamento" de subcamadas após reload da página. Saneamento preventivo contra reidratação de ciclos (`ehDescendente`).
13
+ - **UX de Paginação Incremental ("Mostrar mais")**:
14
+ - Em camadas densas com centenas de feições, o componente limita a renderização inicial a 80 itens por camada e disponibiliza o botão "Mostrar mais (+80)" e o método público `incrementarLimiteFeicoes(camadaId)`.
15
+ - A seleção em intervalo (Shift+Clique) e seleções em lote respeitam estritamente a hierarquia real das subcamadas e o limite visível.
16
+ - **Acessibilidade e Atalhos de Teclado**:
17
+ - `F2`: Inicia a renomeação inline da camada ou feição focada.
18
+ - `Ctrl+A` / `Cmd+A`: Seleciona todas as feições visíveis na árvore (respeitando busca ativa e nós colapsados).
19
+ - `Delete`: Aciona o fluxo de exclusão segura das feições selecionadas com confirmação em dois passos.
20
+ - `Escape`: Cancela o estado de confirmação pendente ou fecha o drawer lateral de configurações.
21
+ - **Sincronização de Estado e Rodapé**:
22
+ - O alvo de seleção da camada (`ui-target-circle`) agora monitora a subárvore completa (camada pai e subcamadas filhas), aplicando corretamente os estados `selected`, `partial` ou vazio.
23
+ - O preview de cor do rodapé é atualizado com a cor real da primeira feição selecionada.
24
+ - O evento `ui-camada-mover-hierarquia` agora informa `parentAnteriorId` para rastreabilidade e histórico de operações.
25
+ - Adicionado método público `alternarExpansao(camadaId)`.
26
+ - **Customização e Shadow Parts (`::part()`)**:
27
+ - Exposição de partes padronizadas: `base`, `corpo`, `toolbar`, `busca`, `arvore`, `grupo`, `camada`, `camada-ativa`, `feicao`, `feicao-selecionada`, `mapas-base`, `rodape`, `drawer`, `resizer` e `botao-expandir`.
28
+
29
+ ### `<ui-tabela-propriedades>`: Verificação e Correção Profunda, Robustez, UX e Acessibilidade CAD/Revit
30
+
31
+ - **Proteção e Degradação Graciosa (Regra #0 do AGENTS.md)**:
32
+ - Higienização e tolerância a entradas hostis em `categorias` e `tipos` (itens `null`, propriedades sem rótulo ou malformadas são aceitas sem disparar `TypeError`).
33
+ - Blindagem do parser matemático contra divisão por zero, `NaN`, `Infinity` e estouro de pilha por parênteses recursivos profundos (`MAX_PROFUNDIDADE = 64`).
34
+ - Tratamento seguro de `flutuante`: prevenção contra ciclo de recursão de mutação em `attributeChangedCallback`.
35
+ - **Motor Matemático e Expressões Inline CAD/Revit (`avaliador-expressao.ts`)**:
36
+ - Suporte a prefixo `=` opcional de fórmula (ex.: `=10.5 * 2 + (4 / 2)`).
37
+ - Suporte completo a números em notação científica (ex.: `1e-5`, `2.5e3`).
38
+ - Correção na avaliação contextual de porcentagem em termos compostos (`100 + 50 * 10% = 105`).
39
+ - Suporte a funções matemáticas avançadas: `min`, `max`, `pow`, `hypot`, `atan2`, `mod`, `trunc`, `sign`, `log`, `ln`, `deg`, `rad`.
40
+ - Preview visual em tempo real no atributo `title` do campo numérico enquanto uma fórmula é digitada (`.ui-prop__editor-input--calculando`).
41
+ - **Ergonomia e UX Técnica (AutoCAD, Revit, Blender e Figma)**:
42
+ - Suporte a limites numéricos `min` e `max` em propriedades numéricas (com clamp automático na digitação, no teclado e no scrubber).
43
+ - Suporte a `passo` e `step` customizados para ajuste fino e grosso via setas `ArrowUp`/`ArrowDown` e scrubber.
44
+ - Suporte a aliases `precisao` (para `casasDecimais`) e `aberta` (para `aberto` em categorias).
45
+ - Exibição de dicas técnicas (`dica?: string` em `ItemPropriedade`) no `title` do rótulo e em `aria-description` do editor.
46
+ - Formatação e cópia de valores somente leitura (`readonly`), suportando casas decimais, resolução de labels de seleção e booleanos.
47
+ - Novo método público `redefinirValor(propId)` para reverter uma propriedade individual ao seu valor original sem descartar as demais alterações.
48
+ - Novo botão de limpar busca (`#btn-limpar-filtro`) e atalho `Escape` para limpar o filtro de busca instantaneamente.
49
+ - Busca expandida: agora localiza propriedades também pelo título da categoria (`cat.titulo`) e pelo valor atual.
50
+ - Exibição de estado vazio informativo quando nenhum resultado coincidir com o filtro.
51
+ - Atalho `Ctrl+Enter` / `Cmd+Enter` para aplicar alterações no modo manual.
52
+ - Tecla `Escape` durante a edição de campos numéricos e de texto cancela a alteração sem propagar o evento para modais ou overlays pais.
53
+ - Suporte a `Shift+Enter` para navegar ao editor anterior, e navegação restrita estritamente a editores visíveis de categorias abertas.
54
+ - **Acessibilidade e WAI-ARIA**:
55
+ - Splitter vertical (`#splitter`) agora é um separador acessível (`role="separator"`, `tabindex="0"`, `aria-orientation="vertical"`, `aria-valuenow` dinâmico) ajustável via teclado com `ArrowLeft`, `ArrowRight`, `Home`, `End` e `Enter` para restaurar os 45% padrão.
56
+ - Cabeçalhos de categorias (`.ui-prop__categoria-header`) navegáveis por teclado via `ArrowDown`, `ArrowUp`, `ArrowLeft` (recolhe), `ArrowRight` (expande), `Home` e `End`.
57
+ - Correção de contraste para conformidade WCAG AA no tema claro (`[data-tema="claro"]`).
58
+ - Adição de `aria-label` descritivo nos seletores de tipo e de linha.
59
+ - **Shadow Parts (`::part()`) e Registro de Aliases**:
60
+ - Exposição completa de shadow parts: `base`, `faixa-estreita`, `cabecalho`, `titulo`, `acoes-cabecalho`, `seletor-tipo`, `filtro`, `filtro-input`, `splitter`, `corpo`, `lista-categorias`, `vazio`, `categoria`, `categoria-aberta`, `categoria-cabecalho`, `categoria-conteudo`, `linha`, `linha-modificada`, `linha-mista`, `rotulo`, `valor`, `editor`, `unidade`, `rodape`, `ajuda`, `desfazer`, `aplicar`.
61
+ - Registro oficial dos Custom Elements aliases `<ui-painel-propriedades>` e `<ui-propriedades>` (classes `UIPainelPropriedades` e `UIPropriedades`), com tipagem completa gerada para HTML nativo, React e Vue.
62
+
2
63
 
3
64
  ## 2.11.1 — 2026-10-23
4
65
 
@@ -0,0 +1,23 @@
1
+ function r(t) {
2
+ if (!t) return !1;
3
+ const o = t;
4
+ return o.tagName === "INPUT" || o.tagName === "TEXTAREA" || o.tagName === "SELECT" || o.isContentEditable === !0;
5
+ }
6
+ const c = 'button, a[href], summary, [role="button"], [role="menuitem"], [role="tab"], [role="switch"], [role="checkbox"], [role="option"]';
7
+ function m(t) {
8
+ var e;
9
+ const o = ((e = t.composedPath) == null ? void 0 : e.call(t)[0]) ?? t.target;
10
+ return o instanceof Element ? o.closest(c) !== null : !1;
11
+ }
12
+ function i(t) {
13
+ var a, n;
14
+ const o = (a = t == null ? void 0 : t.composedPath) == null ? void 0 : a.call(t)[0];
15
+ if (o instanceof Element) return r(o);
16
+ let e = typeof document > "u" ? null : document.activeElement;
17
+ for (; (n = e == null ? void 0 : e.shadowRoot) != null && n.activeElement; ) e = e.shadowRoot.activeElement;
18
+ return r(e);
19
+ }
20
+ export {
21
+ m as a,
22
+ i as f
23
+ };
@@ -0,0 +1 @@
1
+ "use strict";function c(o){if(!o)return!1;const t=o;return t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.tagName==="SELECT"||t.isContentEditable===!0}const r='button, a[href], summary, [role="button"], [role="menuitem"], [role="tab"], [role="switch"], [role="checkbox"], [role="option"]';function m(o){var e;const t=((e=o.composedPath)==null?void 0:e.call(o)[0])??o.target;return t instanceof Element?t.closest(r)!==null:!1}function i(o){var n,a;const t=(n=o==null?void 0:o.composedPath)==null?void 0:n.call(o)[0];if(t instanceof Element)return c(t);let e=typeof document>"u"?null:document.activeElement;for(;(a=e==null?void 0:e.shadowRoot)!=null&&a.activeElement;)e=e.shadowRoot.activeElement;return c(e)}exports.focoEmCampoDeTexto=i;exports.focoEmControleAcionavel=m;