@wgalleti/primevue-components 0.22.2 → 0.22.3

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 (99) hide show
  1. package/dist/components/charts/WChart.vue.d.ts +12 -19
  2. package/dist/components/crud/WCrudColumnRenderer.vue.d.ts +2 -1
  3. package/dist/components/crud/WCrudFormDialog.vue.d.ts +56 -5
  4. package/dist/components/crud/WCrudSubview.vue.d.ts +30 -6
  5. package/dist/components/crud/WCrudView.vue.d.ts +89 -95
  6. package/dist/components/crud/WEditableTable.vue.d.ts +29 -27
  7. package/dist/components/form/WAutoCompleteFK.vue.d.ts +3 -2
  8. package/dist/components/form/WDatePicker.vue.d.ts +4 -9
  9. package/dist/components/form/WDateRange.vue.d.ts +2 -1
  10. package/dist/components/form/WFileUpload.vue.d.ts +8 -16
  11. package/dist/components/form/WFormRenderer.vue.d.ts +57 -5
  12. package/dist/components/form/WImageCropper.vue.d.ts +12 -20
  13. package/dist/components/form/WMarkdownEditor.vue.d.ts +3 -4
  14. package/dist/components/form/WMoneyInput.vue.d.ts +2 -1
  15. package/dist/components/form/WTransferList.vue.d.ts +3 -2
  16. package/dist/components/form/WTreeSelect.vue.d.ts +19 -21
  17. package/dist/components/ui/WActionBar.vue.d.ts +14 -15
  18. package/dist/components/ui/WCheckList.vue.d.ts +8 -12
  19. package/dist/components/ui/WDetailHeader.vue.d.ts +7 -11
  20. package/dist/components/ui/WDialog.vue.d.ts +7 -9
  21. package/dist/components/ui/WEmptyState.vue.d.ts +3 -2
  22. package/dist/components/ui/WFormSection.vue.d.ts +9 -12
  23. package/dist/components/ui/WInfoCard.vue.d.ts +3 -2
  24. package/dist/components/ui/WKanbanBoard.vue.d.ts +23 -46
  25. package/dist/components/ui/WKpiCard.vue.d.ts +15 -15
  26. package/dist/components/ui/WKpiGrid.vue.d.ts +12 -16
  27. package/dist/components/ui/WMapSelect.vue.d.ts +33 -42
  28. package/dist/components/ui/WMarkdownToc.vue.d.ts +2 -1
  29. package/dist/components/ui/WMarkdownView.vue.d.ts +3 -4
  30. package/dist/components/ui/WPageHeader.vue.d.ts +8 -12
  31. package/dist/components/ui/WProgressFlow.vue.d.ts +12 -16
  32. package/dist/components/ui/WSectionHeader.vue.d.ts +11 -13
  33. package/dist/components/ui/WStatusTag.vue.d.ts +2 -1
  34. package/dist/components/ui/WStepFlow.vue.d.ts +8 -16
  35. package/dist/components/ui/WStepSection.vue.d.ts +21 -20
  36. package/dist/components/ui/WTabBar.vue.d.ts +3 -2
  37. package/dist/components/ui/WTabNav.vue.d.ts +13 -30
  38. package/dist/components/ui/WTabViewport.vue.d.ts +2 -1
  39. package/dist/components--YULeZoE.cjs +25 -0
  40. package/dist/components--YULeZoE.cjs.map +1 -0
  41. package/dist/components-CYjLRDxm.js +6785 -0
  42. package/dist/components-CYjLRDxm.js.map +1 -0
  43. package/dist/components.cjs +1 -2
  44. package/dist/components.d.ts +1 -1
  45. package/dist/components.js +2 -42
  46. package/dist/composables-B-LVf35N.js +680 -0
  47. package/dist/composables-B-LVf35N.js.map +1 -0
  48. package/dist/composables-BqRASiBc.cjs +2 -0
  49. package/dist/composables-BqRASiBc.cjs.map +1 -0
  50. package/dist/composables.cjs +1 -2
  51. package/dist/composables.d.ts +1 -1
  52. package/dist/composables.js +3 -20
  53. package/dist/index.cjs +2 -2
  54. package/dist/index.cjs.map +1 -1
  55. package/dist/index.js +155 -234
  56. package/dist/index.js.map +1 -1
  57. package/dist/labels-CXBhCk2N.js +20 -0
  58. package/dist/labels-CXBhCk2N.js.map +1 -0
  59. package/dist/labels-DiFDhFhQ.cjs +2 -0
  60. package/dist/labels-DiFDhFhQ.cjs.map +1 -0
  61. package/dist/primevue-components.css +2 -1
  62. package/dist/routeTabs-BnVpnSeJ.cjs +2 -0
  63. package/dist/routeTabs-BnVpnSeJ.cjs.map +1 -0
  64. package/dist/routeTabs-D6m8PuP6.js +10 -0
  65. package/dist/routeTabs-D6m8PuP6.js.map +1 -0
  66. package/dist/types.cjs +1 -2
  67. package/dist/types.d.ts +1 -1
  68. package/dist/types.js +3 -11
  69. package/dist/useFormKeyboardNav-Brgrjxu-.js +550 -0
  70. package/dist/useFormKeyboardNav-Brgrjxu-.js.map +1 -0
  71. package/dist/useFormKeyboardNav-HoSmQwuv.cjs +3 -0
  72. package/dist/useFormKeyboardNav-HoSmQwuv.cjs.map +1 -0
  73. package/package.json +19 -18
  74. package/dist/WKanbanBoard.vue_vue_type_script_setup_true_lang-ByBa9LKO.cjs +0 -28
  75. package/dist/WKanbanBoard.vue_vue_type_script_setup_true_lang-ByBa9LKO.cjs.map +0 -1
  76. package/dist/WKanbanBoard.vue_vue_type_script_setup_true_lang-rd2SGufX.js +0 -6873
  77. package/dist/WKanbanBoard.vue_vue_type_script_setup_true_lang-rd2SGufX.js.map +0 -1
  78. package/dist/components.cjs.map +0 -1
  79. package/dist/components.js.map +0 -1
  80. package/dist/composables.cjs.map +0 -1
  81. package/dist/composables.js.map +0 -1
  82. package/dist/labels-B28P8JNB.js +0 -19
  83. package/dist/labels-B28P8JNB.js.map +0 -1
  84. package/dist/labels-pNskxXcl.cjs +0 -2
  85. package/dist/labels-pNskxXcl.cjs.map +0 -1
  86. package/dist/plugin-CIBvOgwG.js +0 -14
  87. package/dist/plugin-CIBvOgwG.js.map +0 -1
  88. package/dist/plugin-D2IZHyBm.cjs +0 -2
  89. package/dist/plugin-D2IZHyBm.cjs.map +0 -1
  90. package/dist/types.cjs.map +0 -1
  91. package/dist/types.js.map +0 -1
  92. package/dist/useFormKeyboardNav-BgBAe0C7.cjs +0 -3
  93. package/dist/useFormKeyboardNav-BgBAe0C7.cjs.map +0 -1
  94. package/dist/useFormKeyboardNav-BrKZrHq9.js +0 -463
  95. package/dist/useFormKeyboardNav-BrKZrHq9.js.map +0 -1
  96. package/dist/useRouteTabs-CSo1j_ji.js +0 -762
  97. package/dist/useRouteTabs-CSo1j_ji.js.map +0 -1
  98. package/dist/useRouteTabs-VGx93R83.cjs +0 -2
  99. package/dist/useRouteTabs-VGx93R83.cjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"components.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"components.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"composables.cjs","sources":["../src/composables/defineCrudConfig.ts"],"sourcesContent":["import type { CrudManagerConfig } from '@/types/manager'\n\n/**\n * Helper de autoria tipado para o config do `useCrudManager`.\n *\n * Dá inferência do tipo do registro `T` (usado em `rowActions`, `onAfterSave`,\n * `transformPayload`, etc.) e autocomplete/type-check ao montar o config,\n * sem precisar anotar `CrudManagerConfig<T>` na mão.\n *\n * @example\n * const config = defineCrudConfig<Produto>({\n * endpoint: '/produtos',\n * columns: [...],\n * form: [...],\n * onAfterSave: (p) => { p.nome }, // p é Produto\n * })\n * const crud = useCrudManager(config)\n */\nexport function defineCrudConfig<T extends Record<string, unknown> = Record<string, unknown>>(\n config: CrudManagerConfig<T>,\n): CrudManagerConfig<T> {\n return config\n}\n"],"names":["defineCrudConfig","config"],"mappings":"8KAkBO,SAASA,EACdC,EACsB,CACtB,OAAOA,CACT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"composables.js","sources":["../src/composables/defineCrudConfig.ts"],"sourcesContent":["import type { CrudManagerConfig } from '@/types/manager'\n\n/**\n * Helper de autoria tipado para o config do `useCrudManager`.\n *\n * Dá inferência do tipo do registro `T` (usado em `rowActions`, `onAfterSave`,\n * `transformPayload`, etc.) e autocomplete/type-check ao montar o config,\n * sem precisar anotar `CrudManagerConfig<T>` na mão.\n *\n * @example\n * const config = defineCrudConfig<Produto>({\n * endpoint: '/produtos',\n * columns: [...],\n * form: [...],\n * onAfterSave: (p) => { p.nome }, // p é Produto\n * })\n * const crud = useCrudManager(config)\n */\nexport function defineCrudConfig<T extends Record<string, unknown> = Record<string, unknown>>(\n config: CrudManagerConfig<T>,\n): CrudManagerConfig<T> {\n return config\n}\n"],"names":["defineCrudConfig","config"],"mappings":";;AAkBO,SAASA,EACdC,GACsB;AACtB,SAAOA;AACT;"}
@@ -1,19 +0,0 @@
1
- const e = {
2
- createTitle: "Novo Registro",
3
- editTitle: "Editar Registro",
4
- createButton: "Novo",
5
- saveButton: "Salvar",
6
- updateButton: "Atualizar",
7
- cancelButton: "Cancelar",
8
- deleteConfirmTitle: "Confirmar Exclusão",
9
- deleteConfirmMessage: "Deseja realmente excluir este registro?",
10
- searchPlaceholder: "Buscar...",
11
- emptyMessage: "Nenhum registro encontrado",
12
- successCreate: "Registro criado com sucesso",
13
- successUpdate: "Registro atualizado com sucesso",
14
- successDelete: "Registro excluído com sucesso"
15
- };
16
- export {
17
- e as D
18
- };
19
- //# sourceMappingURL=labels-B28P8JNB.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"labels-B28P8JNB.js","sources":["../src/types/labels.ts"],"sourcesContent":["// ---------------------------------------------------------------------------\n// Labels\n// ---------------------------------------------------------------------------\n\nexport interface CrudLabels {\n createTitle: string\n editTitle: string\n viewTitle?: string\n createButton: string\n saveButton: string\n updateButton: string\n cancelButton: string\n deleteConfirmTitle: string\n deleteConfirmMessage: string\n searchPlaceholder: string\n emptyMessage: string\n successCreate: string\n successUpdate: string\n successDelete: string\n}\n\nexport const DEFAULT_CRUD_LABELS: CrudLabels = {\n createTitle: 'Novo Registro',\n editTitle: 'Editar Registro',\n createButton: 'Novo',\n saveButton: 'Salvar',\n updateButton: 'Atualizar',\n cancelButton: 'Cancelar',\n deleteConfirmTitle: 'Confirmar Exclusão',\n deleteConfirmMessage: 'Deseja realmente excluir este registro?',\n searchPlaceholder: 'Buscar...',\n emptyMessage: 'Nenhum registro encontrado',\n successCreate: 'Registro criado com sucesso',\n successUpdate: 'Registro atualizado com sucesso',\n successDelete: 'Registro excluído com sucesso',\n}\n"],"names":["DEFAULT_CRUD_LABELS"],"mappings":"AAqBO,MAAMA,IAAkC;AAAA,EAC7C,aAAa;AAAA,EACb,WAAW;AAAA,EACX,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,cAAc;AAAA,EACd,oBAAoB;AAAA,EACpB,sBAAsB;AAAA,EACtB,mBAAmB;AAAA,EACnB,cAAc;AAAA,EACd,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AACjB;"}
@@ -1,2 +0,0 @@
1
- "use strict";const e={createTitle:"Novo Registro",editTitle:"Editar Registro",createButton:"Novo",saveButton:"Salvar",updateButton:"Atualizar",cancelButton:"Cancelar",deleteConfirmTitle:"Confirmar Exclusão",deleteConfirmMessage:"Deseja realmente excluir este registro?",searchPlaceholder:"Buscar...",emptyMessage:"Nenhum registro encontrado",successCreate:"Registro criado com sucesso",successUpdate:"Registro atualizado com sucesso",successDelete:"Registro excluído com sucesso"};exports.DEFAULT_CRUD_LABELS=e;
2
- //# sourceMappingURL=labels-pNskxXcl.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"labels-pNskxXcl.cjs","sources":["../src/types/labels.ts"],"sourcesContent":["// ---------------------------------------------------------------------------\n// Labels\n// ---------------------------------------------------------------------------\n\nexport interface CrudLabels {\n createTitle: string\n editTitle: string\n viewTitle?: string\n createButton: string\n saveButton: string\n updateButton: string\n cancelButton: string\n deleteConfirmTitle: string\n deleteConfirmMessage: string\n searchPlaceholder: string\n emptyMessage: string\n successCreate: string\n successUpdate: string\n successDelete: string\n}\n\nexport const DEFAULT_CRUD_LABELS: CrudLabels = {\n createTitle: 'Novo Registro',\n editTitle: 'Editar Registro',\n createButton: 'Novo',\n saveButton: 'Salvar',\n updateButton: 'Atualizar',\n cancelButton: 'Cancelar',\n deleteConfirmTitle: 'Confirmar Exclusão',\n deleteConfirmMessage: 'Deseja realmente excluir este registro?',\n searchPlaceholder: 'Buscar...',\n emptyMessage: 'Nenhum registro encontrado',\n successCreate: 'Registro criado com sucesso',\n successUpdate: 'Registro atualizado com sucesso',\n successDelete: 'Registro excluído com sucesso',\n}\n"],"names":["DEFAULT_CRUD_LABELS"],"mappings":"aAqBO,MAAMA,EAAkC,CAC7C,YAAa,gBACb,UAAW,kBACX,aAAc,OACd,WAAY,SACZ,aAAc,YACd,aAAc,WACd,mBAAoB,qBACpB,qBAAsB,0CACtB,kBAAmB,YACnB,aAAc,6BACd,cAAe,8BACf,cAAe,kCACf,cAAe,+BACjB"}
@@ -1,14 +0,0 @@
1
- import { inject as o } from "vue";
2
- const s = Symbol("w-tab-host");
3
- function a() {
4
- return o(s, null);
5
- }
6
- const n = Symbol("w-axios"), _ = Symbol("w-data-provider"), c = Symbol("w-config");
7
- export {
8
- n as W,
9
- c as a,
10
- _ as b,
11
- s as c,
12
- a as u
13
- };
14
- //# sourceMappingURL=plugin-CIBvOgwG.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-CIBvOgwG.js","sources":["../src/types/routeTabs.ts","../src/types/plugin.ts"],"sourcesContent":["import { inject, type Component, type InjectionKey, type Ref } from 'vue'\nimport type { RouteLocationNormalizedLoaded, Router } from 'vue-router'\n\n/**\n * Navegação por abas (estilo browser/ERP): cada rota vira uma aba viva, com\n * fechar/recarregar e estado preservado ao alternar. O estado mora no\n * composable `useRouteTabs`; `WTabNav` (barra) e `WTabViewport` (painéis)\n * apenas o recebem via prop — nenhum componente guarda estado global.\n */\n\n/** Meta de apresentação de uma aba, resolvida a partir da rota. */\nexport interface RouteTabMeta {\n title: string\n /** Ícone PrimeIcons (ex.: 'pi pi-file'). */\n icon?: string\n /** `false` esconde o X e ignora fechar (ex.: dashboard fixo). */\n closable?: boolean\n /**\n * Grupo da aba (ex.: o módulo do menu — \"Sementes\", \"Estoque\"). Abas do\n * mesmo grupo ficam juntas na barra, com o rótulo do grupo antes do bloco.\n */\n group?: string\n}\n\n/** Uma aba aberta. `key` identifica (path com params); `fullPath` navega. */\nexport interface RouteTab {\n key: string\n /** Último fullPath visitado (query inclusa) — usado no push e no restore. */\n fullPath: string\n title: string\n icon?: string\n closable: boolean\n /** Grupo (módulo) da aba — abas do mesmo grupo ficam contíguas na barra. */\n group?: string\n /**\n * `false` = aba restaurada do storage, ainda sem componente montado.\n * Hidrata na primeira ativação (o router resolve o lazy no caminho).\n */\n hydrated: boolean\n /** Contador de remontagem: `reload()` incrementa e o pane troca o `:key`. */\n remount: number\n}\n\n/**\n * Lado não serializável de uma aba hidratada — componente resolvido, snapshot\n * de rota e os registros feitos pela tela via `useTabHost`. Consumido pelo\n * WTabViewport; não persiste.\n */\nexport interface RouteTabRuntime {\n component: Component | null\n props: Record<string, unknown>\n /**\n * Snapshot reativo da rota, provido ao pane sob a `routeLocationKey` do\n * vue-router: `useRoute()` da tela enxerga ESTA rota, congelada — só é\n * atualizada quando a aba é a ativa. É o que impede um pane oculto de\n * reagir à navegação global (o bug clássico de sistemas de abas).\n */\n route: RouteLocationNormalizedLoaded\n closeGuards: Array<() => boolean | Promise<boolean>>\n activatedHooks: Array<() => void>\n deactivatedHooks: Array<() => void>\n /** Título default da rota, para `setTitle(null)` restaurar. */\n defaultTitle: string\n}\n\nexport interface UseRouteTabsOptions {\n router: Router\n /**\n * Modo de uso — o parâmetro que define o que é \"uma aba\":\n * - `'screen'` (default): cada tela é uma aba. Identidade = `route.path`\n * (params contam, query não): NF 123 e NF 456 são abas distintas.\n * - `'module'`: uma aba por entrada de menu. Identidade = `moduleRoot(route)`;\n * navegar entre telas do mesmo módulo acontece DENTRO da aba (a view\n * remonta, título/ícone voltam aos da rota nova e os close guards valem\n * também nessa troca).\n */\n mode?: 'screen' | 'module'\n /**\n * Raiz do módulo da rota (ex.: path da listagem) — identidade da aba no modo\n * `'module'`. Obrigatório nesse modo; retornar falsy cai em `route.path`.\n */\n moduleRoot?: (route: RouteLocationNormalizedLoaded) => string | null | undefined\n /** Título/ícone/closable da aba. O que faltar cai em defaults sensatos. */\n resolveTabMeta?: (route: RouteLocationNormalizedLoaded) => Partial<RouteTabMeta>\n /** Quais rotas viram aba. Default: todas. */\n isTabRoute?: (route: RouteLocationNormalizedLoaded) => boolean\n /** Onde persistir. Default: `localStorage`; `null` desliga a persistência. */\n storage?: Storage | null\n /** Chave no storage. Função permite chave por usuário avaliada tarde. */\n storageKey?: string | (() => string)\n /** Destino ao fechar a última aba. Default: `/`. */\n homePath?: string\n /** Acima disso, a aba mais antiga não-ativa é fechada (guards respeitados). */\n maxTabs?: number\n}\n\nexport interface RouteTabsApi {\n tabs: Ref<RouteTab[]>\n activeKey: Ref<string | null>\n /** Ativa a aba (navega para o fullPath dela). */\n activate: (key: string) => Promise<void>\n /** Fecha respeitando os close guards da aba. `false` = algum guard vetou. */\n close: (key: string) => Promise<boolean>\n closeOthers: (key: string) => Promise<void>\n closeAll: () => Promise<void>\n /** Remonta o componente da aba (o estado da tela é descartado). */\n reload: (key: string) => void\n /** Título dinâmico (\"NF 000123\"). `null` volta ao título default da rota. */\n setTitle: (key: string, title: string | null | undefined) => void\n /** A rota já tem aba hidratada? (ex.: para pular overlay de navegação). */\n isLive: (target: RouteLocationNormalizedLoaded | string) => boolean\n /** Runtime interno da aba. Uso do WTabViewport; não persiste. */\n runtime: (key: string) => RouteTabRuntime | undefined\n}\n\n/**\n * Contexto que o pane fornece à tela (e aos dialogs dela). Injete com\n * `useTabHost()` — fora de abas retorna `null` e tudo degrada para o\n * comportamento padrão (dialog no body, título no breadcrumb etc.).\n */\nexport interface TabHostContext {\n /** Container do pane — alvo de `appendTo` para o dialog viver NA aba. */\n hostEl: Ref<HTMLElement | null>\n active: Ref<boolean>\n /** Título dinâmico da aba; `null` restaura o default da rota. */\n setTitle: (title: string | null | undefined) => void\n /** Chamado ao voltar para a aba (equivalente a onActivated). */\n onTabActivated: (fn: () => void) => void\n /** Chamado ao sair da aba (equivalente a onDeactivated). */\n onTabDeactivated: (fn: () => void) => void\n /** Veta o fechar da aba (ex.: alterações não salvas). `false` = não fecha. */\n registerCloseGuard: (guard: () => boolean | Promise<boolean>) => void\n}\n\nexport const W_TAB_HOST_KEY: InjectionKey<TabHostContext> = Symbol('w-tab-host')\n\n/** Contexto da aba que envolve o componente atual, ou `null` fora de abas. */\nexport function useTabHost(): TabHostContext | null {\n return inject(W_TAB_HOST_KEY, null)\n}\n","import type { AxiosInstance } from 'axios'\nimport type { DataProvider } from './dataProvider'\n\nexport interface WPluginOptions {\n axios?: AxiosInstance\n dataProvider?: DataProvider\n defaultPageSize?: number\n dateFormat?: string\n dateTimeFormat?: string\n locale?: string\n currency?: string\n registerComponents?: boolean\n}\n\nexport interface WPluginConfig {\n axios?: AxiosInstance\n dataProvider: DataProvider\n defaultPageSize: number\n dateFormat: string\n dateTimeFormat: string\n locale: string\n currency: string\n}\n\nexport const W_AXIOS_KEY = Symbol('w-axios')\nexport const W_DATA_PROVIDER_KEY = Symbol('w-data-provider')\nexport const W_CONFIG_KEY = Symbol('w-config')\n"],"names":["W_TAB_HOST_KEY","useTabHost","inject","W_AXIOS_KEY","W_DATA_PROVIDER_KEY","W_CONFIG_KEY"],"mappings":";AAsIO,MAAMA,IAA+C,OAAO,YAAY;AAGxE,SAASC,IAAoC;AAClD,SAAOC,EAAOF,GAAgB,IAAI;AACpC;ACnHO,MAAMG,IAAc,OAAO,SAAS,GAC9BC,IAAsB,OAAO,iBAAiB,GAC9CC,IAAe,OAAO,UAAU;"}
@@ -1,2 +0,0 @@
1
- "use strict";const o=require("vue"),_=Symbol("w-tab-host");function t(){return o.inject(_,null)}const s=Symbol("w-axios"),n=Symbol("w-data-provider"),E=Symbol("w-config");exports.W_AXIOS_KEY=s;exports.W_CONFIG_KEY=E;exports.W_DATA_PROVIDER_KEY=n;exports.W_TAB_HOST_KEY=_;exports.useTabHost=t;
2
- //# sourceMappingURL=plugin-D2IZHyBm.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-D2IZHyBm.cjs","sources":["../src/types/routeTabs.ts","../src/types/plugin.ts"],"sourcesContent":["import { inject, type Component, type InjectionKey, type Ref } from 'vue'\nimport type { RouteLocationNormalizedLoaded, Router } from 'vue-router'\n\n/**\n * Navegação por abas (estilo browser/ERP): cada rota vira uma aba viva, com\n * fechar/recarregar e estado preservado ao alternar. O estado mora no\n * composable `useRouteTabs`; `WTabNav` (barra) e `WTabViewport` (painéis)\n * apenas o recebem via prop — nenhum componente guarda estado global.\n */\n\n/** Meta de apresentação de uma aba, resolvida a partir da rota. */\nexport interface RouteTabMeta {\n title: string\n /** Ícone PrimeIcons (ex.: 'pi pi-file'). */\n icon?: string\n /** `false` esconde o X e ignora fechar (ex.: dashboard fixo). */\n closable?: boolean\n /**\n * Grupo da aba (ex.: o módulo do menu — \"Sementes\", \"Estoque\"). Abas do\n * mesmo grupo ficam juntas na barra, com o rótulo do grupo antes do bloco.\n */\n group?: string\n}\n\n/** Uma aba aberta. `key` identifica (path com params); `fullPath` navega. */\nexport interface RouteTab {\n key: string\n /** Último fullPath visitado (query inclusa) — usado no push e no restore. */\n fullPath: string\n title: string\n icon?: string\n closable: boolean\n /** Grupo (módulo) da aba — abas do mesmo grupo ficam contíguas na barra. */\n group?: string\n /**\n * `false` = aba restaurada do storage, ainda sem componente montado.\n * Hidrata na primeira ativação (o router resolve o lazy no caminho).\n */\n hydrated: boolean\n /** Contador de remontagem: `reload()` incrementa e o pane troca o `:key`. */\n remount: number\n}\n\n/**\n * Lado não serializável de uma aba hidratada — componente resolvido, snapshot\n * de rota e os registros feitos pela tela via `useTabHost`. Consumido pelo\n * WTabViewport; não persiste.\n */\nexport interface RouteTabRuntime {\n component: Component | null\n props: Record<string, unknown>\n /**\n * Snapshot reativo da rota, provido ao pane sob a `routeLocationKey` do\n * vue-router: `useRoute()` da tela enxerga ESTA rota, congelada — só é\n * atualizada quando a aba é a ativa. É o que impede um pane oculto de\n * reagir à navegação global (o bug clássico de sistemas de abas).\n */\n route: RouteLocationNormalizedLoaded\n closeGuards: Array<() => boolean | Promise<boolean>>\n activatedHooks: Array<() => void>\n deactivatedHooks: Array<() => void>\n /** Título default da rota, para `setTitle(null)` restaurar. */\n defaultTitle: string\n}\n\nexport interface UseRouteTabsOptions {\n router: Router\n /**\n * Modo de uso — o parâmetro que define o que é \"uma aba\":\n * - `'screen'` (default): cada tela é uma aba. Identidade = `route.path`\n * (params contam, query não): NF 123 e NF 456 são abas distintas.\n * - `'module'`: uma aba por entrada de menu. Identidade = `moduleRoot(route)`;\n * navegar entre telas do mesmo módulo acontece DENTRO da aba (a view\n * remonta, título/ícone voltam aos da rota nova e os close guards valem\n * também nessa troca).\n */\n mode?: 'screen' | 'module'\n /**\n * Raiz do módulo da rota (ex.: path da listagem) — identidade da aba no modo\n * `'module'`. Obrigatório nesse modo; retornar falsy cai em `route.path`.\n */\n moduleRoot?: (route: RouteLocationNormalizedLoaded) => string | null | undefined\n /** Título/ícone/closable da aba. O que faltar cai em defaults sensatos. */\n resolveTabMeta?: (route: RouteLocationNormalizedLoaded) => Partial<RouteTabMeta>\n /** Quais rotas viram aba. Default: todas. */\n isTabRoute?: (route: RouteLocationNormalizedLoaded) => boolean\n /** Onde persistir. Default: `localStorage`; `null` desliga a persistência. */\n storage?: Storage | null\n /** Chave no storage. Função permite chave por usuário avaliada tarde. */\n storageKey?: string | (() => string)\n /** Destino ao fechar a última aba. Default: `/`. */\n homePath?: string\n /** Acima disso, a aba mais antiga não-ativa é fechada (guards respeitados). */\n maxTabs?: number\n}\n\nexport interface RouteTabsApi {\n tabs: Ref<RouteTab[]>\n activeKey: Ref<string | null>\n /** Ativa a aba (navega para o fullPath dela). */\n activate: (key: string) => Promise<void>\n /** Fecha respeitando os close guards da aba. `false` = algum guard vetou. */\n close: (key: string) => Promise<boolean>\n closeOthers: (key: string) => Promise<void>\n closeAll: () => Promise<void>\n /** Remonta o componente da aba (o estado da tela é descartado). */\n reload: (key: string) => void\n /** Título dinâmico (\"NF 000123\"). `null` volta ao título default da rota. */\n setTitle: (key: string, title: string | null | undefined) => void\n /** A rota já tem aba hidratada? (ex.: para pular overlay de navegação). */\n isLive: (target: RouteLocationNormalizedLoaded | string) => boolean\n /** Runtime interno da aba. Uso do WTabViewport; não persiste. */\n runtime: (key: string) => RouteTabRuntime | undefined\n}\n\n/**\n * Contexto que o pane fornece à tela (e aos dialogs dela). Injete com\n * `useTabHost()` — fora de abas retorna `null` e tudo degrada para o\n * comportamento padrão (dialog no body, título no breadcrumb etc.).\n */\nexport interface TabHostContext {\n /** Container do pane — alvo de `appendTo` para o dialog viver NA aba. */\n hostEl: Ref<HTMLElement | null>\n active: Ref<boolean>\n /** Título dinâmico da aba; `null` restaura o default da rota. */\n setTitle: (title: string | null | undefined) => void\n /** Chamado ao voltar para a aba (equivalente a onActivated). */\n onTabActivated: (fn: () => void) => void\n /** Chamado ao sair da aba (equivalente a onDeactivated). */\n onTabDeactivated: (fn: () => void) => void\n /** Veta o fechar da aba (ex.: alterações não salvas). `false` = não fecha. */\n registerCloseGuard: (guard: () => boolean | Promise<boolean>) => void\n}\n\nexport const W_TAB_HOST_KEY: InjectionKey<TabHostContext> = Symbol('w-tab-host')\n\n/** Contexto da aba que envolve o componente atual, ou `null` fora de abas. */\nexport function useTabHost(): TabHostContext | null {\n return inject(W_TAB_HOST_KEY, null)\n}\n","import type { AxiosInstance } from 'axios'\nimport type { DataProvider } from './dataProvider'\n\nexport interface WPluginOptions {\n axios?: AxiosInstance\n dataProvider?: DataProvider\n defaultPageSize?: number\n dateFormat?: string\n dateTimeFormat?: string\n locale?: string\n currency?: string\n registerComponents?: boolean\n}\n\nexport interface WPluginConfig {\n axios?: AxiosInstance\n dataProvider: DataProvider\n defaultPageSize: number\n dateFormat: string\n dateTimeFormat: string\n locale: string\n currency: string\n}\n\nexport const W_AXIOS_KEY = Symbol('w-axios')\nexport const W_DATA_PROVIDER_KEY = Symbol('w-data-provider')\nexport const W_CONFIG_KEY = Symbol('w-config')\n"],"names":["W_TAB_HOST_KEY","useTabHost","inject","W_AXIOS_KEY","W_DATA_PROVIDER_KEY","W_CONFIG_KEY"],"mappings":"oCAsIaA,EAA+C,OAAO,YAAY,EAGxE,SAASC,GAAoC,CAClD,OAAOC,EAAAA,OAAOF,EAAgB,IAAI,CACpC,CCnHO,MAAMG,EAAc,OAAO,SAAS,EAC9BC,EAAsB,OAAO,iBAAiB,EAC9CC,EAAe,OAAO,UAAU"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -1,3 +0,0 @@
1
- "use strict";const rt=require("vue"),nt=require("./plugin-D2IZHyBm.cjs"),h=require("dayjs"),Mt=require("primevue/usetoast"),$t=require("primevue/useconfirm");function Ct(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var H={exports:{}},At=H.exports,W;function Tt(){return W||(W=1,(function(t,e){(function(i,n){t.exports=n()})(At,(function(){var i={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},n=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,c=/\d/,u=/\d\d/,r=/\d\d?/,l=/\d*[^-_:/,()\s\d]+/,a={},D=function(s){return(s=+s)+(s>68?1900:2e3)},o=function(s){return function(f){this[s]=+f}},p=[/[+-]\d\d:?(\d\d)?|Z/,function(s){(this.zone||(this.zone={})).offset=(function(f){if(!f||f==="Z")return 0;var d=f.match(/([+-]|\d\d)/g),m=60*d[1]+(+d[2]||0);return m===0?0:d[0]==="+"?-m:m})(s)}],S=function(s){var f=a[s];return f&&(f.indexOf?f:f.s.concat(f.f))},X=function(s,f){var d,m=a.meridiem;if(m){for(var M=1;M<=24;M+=1)if(s.indexOf(m(M,0,f))>-1){d=M>12;break}}else d=s===(f?"pm":"PM");return d},mt={A:[l,function(s){this.afternoon=X(s,!1)}],a:[l,function(s){this.afternoon=X(s,!0)}],Q:[c,function(s){this.month=3*(s-1)+1}],S:[c,function(s){this.milliseconds=100*+s}],SS:[u,function(s){this.milliseconds=10*+s}],SSS:[/\d{3}/,function(s){this.milliseconds=+s}],s:[r,o("seconds")],ss:[r,o("seconds")],m:[r,o("minutes")],mm:[r,o("minutes")],H:[r,o("hours")],h:[r,o("hours")],HH:[r,o("hours")],hh:[r,o("hours")],D:[r,o("day")],DD:[u,o("day")],Do:[l,function(s){var f=a.ordinal,d=s.match(/\d+/);if(this.day=d[0],f)for(var m=1;m<=31;m+=1)f(m).replace(/\[|\]/g,"")===s&&(this.day=m)}],w:[r,o("week")],ww:[u,o("week")],M:[r,o("month")],MM:[u,o("month")],MMM:[l,function(s){var f=S("months"),d=(S("monthsShort")||f.map((function(m){return m.slice(0,3)}))).indexOf(s)+1;if(d<1)throw new Error;this.month=d%12||d}],MMMM:[l,function(s){var f=S("months").indexOf(s)+1;if(f<1)throw new Error;this.month=f%12||f}],Y:[/[+-]?\d+/,o("year")],YY:[u,function(s){this.year=D(s)}],YYYY:[/\d{4}/,o("year")],Z:p,ZZ:p};function pt(s){var f,d;f=s,d=a&&a.formats;for(var m=(s=f.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(E,T,g){var Y=g&&g.toUpperCase();return T||d[g]||i[g]||d[Y].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(b,F,L){return F||L.slice(1)}))}))).match(n),M=m.length,$=0;$<M;$+=1){var v=m[$],x=mt[v],C=x&&x[0],A=x&&x[1];m[$]=A?{regex:C,parser:A}:v.replace(/^\[|\]$/g,"")}return function(E){for(var T={},g=0,Y=0;g<M;g+=1){var b=m[g];if(typeof b=="string")Y+=b.length;else{var F=b.regex,L=b.parser,I=E.slice(Y),j=F.exec(I)[0];L.call(T,j),E=E.replace(j,"")}}return(function(P){var N=P.afternoon;if(N!==void 0){var y=P.hours;N?y<12&&(P.hours+=12):y===12&&(P.hours=0),delete P.afternoon}})(T),T}}return function(s,f,d){d.p.customParseFormat=!0,s&&s.parseTwoDigitYear&&(D=s.parseTwoDigitYear);var m=f.prototype,M=m.parse;m.parse=function($){var v=$.date,x=$.utc,C=$.args;this.$u=x;var A=C[1];if(typeof A=="string"){var E=C[2]===!0,T=C[3]===!0,g=E||T,Y=C[2];T&&(Y=C[2]),a=this.$locale(),!E&&Y&&(a=d.Ls[Y]),this.$d=(function(I,j,P,N){try{if(["x","X"].indexOf(j)>-1)return new Date((j==="X"?1e3:1)*I);var y=pt(j)(I),V=y.year,O=y.month,ht=y.day,Dt=y.hours,yt=y.minutes,Yt=y.seconds,gt=y.milliseconds,Q=y.zone,G=y.week,R=new Date,B=ht||(V||O?1:R.getDate()),U=V||R.getFullYear(),_=0;V&&!O||(_=O>0?O-1:R.getMonth());var k,Z=Dt||0,z=yt||0,J=Yt||0,K=gt||0;return Q?new Date(Date.UTC(U,_,B,Z,z,J,K+60*Q.offset*1e3)):P?new Date(Date.UTC(U,_,B,Z,z,J,K)):(k=new Date(U,_,B,Z,z,J,K),G&&(k=N(k).week(G).toDate()),k)}catch{return new Date("")}})(v,A,x,d),this.init(),Y&&Y!==!0&&(this.$L=this.locale(Y).$L),g&&v!=this.format(A)&&(this.$d=new Date("")),a={}}else if(A instanceof Array)for(var b=A.length,F=1;F<=b;F+=1){C[1]=A[F-1];var L=d.apply(this,C);if(L.isValid()){this.$d=L.$d,this.$L=L.$L,this.init();break}F===b&&(this.$d=new Date(""))}else M.call(this,$)}}}))})(H)),H.exports}var bt=Tt();const ot=Ct(bt);h.extend(ot);function it(t){if(!t)return null;if(t instanceof Date)return t;const e=h(t,"YYYY-MM-DD",!0);return e.isValid()?e.toDate():h(t).toDate()}function st(t){return t?typeof t=="string"?t:h(t).format("YYYY-MM-DD"):null}function at(t){return t?typeof t=="string"?t:h(t).toISOString():null}function Ft(t,e="DD/MM/YYYY"){return t?h(t).format(e):"—"}function wt(t){return t?h(t).format("DD/MM/YYYY HH:mm"):"—"}function w(t){return t.replace(/\D/g,"")}function ut(t){if(!t)return"—";const e=w(t);return e.length!==11?t:e.replace(/^(\d{3})(\d{3})(\d{3})(\d{2})$/,"$1.$2.$3-$4")}function ft(t){if(!t)return"—";const e=w(t);return e.length!==14?t:e.replace(/^(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})$/,"$1.$2.$3/$4-$5")}function xt(t){if(!t)return"—";const e=w(t);return e.length===11?ut(t):e.length===14?ft(t):t}function Et(t){if(!t)return"—";const e=w(t);return e.length===11?e.replace(/^(\d{2})(\d{5})(\d{4})$/,"($1) $2-$3"):e.length===10?e.replace(/^(\d{2})(\d{4})(\d{4})$/,"($1) $2-$3"):t}function ct(t){if(!t)return null;const e=w(t);if(e.length!==11)return"CPF deve ter 11 dígitos.";if(/^(\d)\1{10}$/.test(e))return"CPF inválido.";let i=0;for(let r=0;r<9;r++)i+=parseInt(e[r])*(10-r);let n=i%11;const c=n<2?0:11-n;if(parseInt(e[9])!==c)return"CPF inválido.";i=0;for(let r=0;r<10;r++)i+=parseInt(e[r])*(11-r);n=i%11;const u=n<2?0:11-n;return parseInt(e[10])!==u?"CPF inválido.":null}function lt(t){if(!t)return null;const e=w(t);if(e.length!==14)return"CNPJ deve ter 14 dígitos.";if(/^(\d)\1{13}$/.test(e))return"CNPJ inválido.";const i=[5,4,3,2,9,8,7,6,5,4,3,2];let n=0;for(let a=0;a<12;a++)n+=parseInt(e[a])*i[a];let c=n%11;const u=c<2?0:11-c;if(parseInt(e[12])!==u)return"CNPJ inválido.";const r=[6,5,4,3,2,9,8,7,6,5,4,3,2];n=0;for(let a=0;a<13;a++)n+=parseInt(e[a])*r[a];c=n%11;const l=c<2?0:11-c;return parseInt(e[13])!==l?"CNPJ inválido.":null}function Lt(t){if(!t)return null;const e=w(t);return e.length===11?ct(t):e.length===14?lt(t):"CPF deve ter 11 dígitos ou CNPJ deve ter 14 dígitos."}const q=new Map;function tt(t,e){const i=`${t}-${e}`;let n=q.get(i);return n||(n=new Intl.NumberFormat(t,{minimumFractionDigits:e,maximumFractionDigits:e}),q.set(i,n)),n}function Pt(t,e){const i=`${t}-${e}`;let n=q.get(i);return n||(n=new Intl.NumberFormat(t,{style:"currency",currency:e}),q.set(i,n)),n}function St(){const t=rt.inject(nt.W_CONFIG_KEY,{defaultPageSize:20,dateFormat:"DD/MM/YYYY",dateTimeFormat:"DD/MM/YYYY HH:mm",locale:"pt-BR",currency:"BRL"}),e=(t==null?void 0:t.locale)??"pt-BR",i=(t==null?void 0:t.currency)??"BRL";function n(a){return a==null?"—":Pt(e,i).format(a)}function c(a,D=2){return a==null?"—":tt(e,D).format(a)}function u(a,D){return Ft(a,D??(t==null?void 0:t.dateFormat)??"DD/MM/YYYY")}function r(a){return wt(a)}function l(a){return a==null?"—":`${tt(e,2).format(a)}%`}return{formatCurrency:n,formatNumber:c,formatDate:u,formatDateTime:r,formatPercent:l,formatCpf:ut,formatCnpj:ft,formatCpfCnpj:xt,formatTelefone:Et,validateCpf:ct,validateCnpj:lt,validateCpfCnpj:Lt,parseDate:it,toDateString:st,toDateTimeString:at}}function jt(){const t=Mt.useToast();function e(u,r="Sucesso"){t.add({severity:"success",summary:r,detail:u,life:3e3})}function i(u,r="Erro"){t.add({severity:"error",summary:r,detail:u,life:5e3})}function n(u,r="Atenção"){t.add({severity:"warn",summary:r,detail:u,life:4e3})}function c(u,r="Info"){t.add({severity:"info",summary:r,detail:u,life:3e3})}return{success:e,error:i,warn:n,info:c}}function vt(){const t=$t.useConfirm(),e=nt.useTabHost(),i=()=>(e==null?void 0:e.hostEl.value)??"body";function n(u,r="Deseja realmente excluir este registro?"){t.require({appendTo:i(),message:r,header:"Confirmar Exclusão",icon:"pi pi-trash",rejectLabel:"Cancelar",rejectProps:{severity:"secondary",text:!0},acceptLabel:"Excluir",acceptProps:{severity:"danger"},accept:u})}function c(u,r,l="Confirmação"){t.require({appendTo:i(),message:u,header:l,icon:"pi pi-question-circle",rejectLabel:"Cancelar",rejectProps:{severity:"secondary",text:!0},acceptLabel:"Confirmar",accept:r})}return{confirmDelete:n,confirmAction:c}}function It(t){return t.replace(/_/g," ").replace(/^\w/,e=>e.toUpperCase())}function Nt(t){if(typeof t=="string")return t;if(Array.isArray(t)){const e=t.filter(i=>typeof i=="string");return e.length>0?e.join(" "):null}if(typeof t=="object"&&t!==null){const e=t;if(Array.isArray(e.non_field_errors)&&e.non_field_errors.length>0)return e.non_field_errors.filter(n=>typeof n=="string").join(" ");const i=[];for(const[n,c]of Object.entries(e)){if(n==="non_field_errors")continue;const u=It(n);if(Array.isArray(c)){const r=c.filter(l=>typeof l=="string");r.length>0&&i.push(`${u}: ${r.join(" ")}`)}else typeof c=="string"&&i.push(`${u}: ${c}`)}return i.length>0?i.join(`
2
- `):null}return null}function dt(t,e="Erro inesperado"){var u;if(!t||typeof t!="object")return e;const i=t,n=(u=i.response)==null?void 0:u.data;if(!n||typeof n!="object")return i.message||e;const c=n.detail??n;return Nt(c)||e}function Ot(){return{extractApiError:dt}}h.extend(ot);const _t="DD/MM/YYYY",kt="DD/MM/YYYY HH:mm",et="YYYY-MM-DD",Ht="YYYY-MM-DDTHH:mm:ss";function qt(t={}){const e=()=>{var o;return((o=t.showTime)==null?void 0:o.call(t))??!1},i=()=>e()?kt:_t,n=()=>e()?"##/##/#### ##:##":"##/##/####",c=()=>e()?"dd/mm/aaaa hh:mm":"dd/mm/aaaa";function u(o){if(o==null||o==="")return null;if(o instanceof Date)return isNaN(o.getTime())?null:o;if(typeof o=="string"){const p=h(o,et,!0);if(p.isValid())return p.toDate();const S=h(o);return S.isValid()?S.toDate():null}return null}function r(o){var p;return o?(((p=t.valueFormat)==null?void 0:p.call(t))??"iso")==="date"?o:h(o).format(e()?Ht:et):null}function l(o){return o?h(o).format(i()):""}function a(o){if(!o)return null;const p=h(o,i(),!0);return p.isValid()?p.toDate():null}function D(){return e()?new Date:h().startOf("day").toDate()}return{toDate:u,toValue:r,toDisplay:l,fromDisplay:a,today:D,mask:n,placeholder:c,displayFormat:i}}const Vt=['input:not([type="hidden"]):not([disabled])',"textarea:not([disabled])","select:not([disabled])","button:not([disabled])",'[tabindex]:not([tabindex="-1"])','[contenteditable="true"]'].join(", "),Rt=[".p-select-overlay",".p-autocomplete-overlay",".p-multiselect-overlay",".p-datepicker-panel",".p-cascadeselect-overlay",".p-treeselect-overlay"].join(", ");function Bt(t,e={}){const i=()=>e.enabled?e.enabled():!0;function n(){const r=t.value;return r?Array.from(r.querySelectorAll(Vt)).filter(l=>l.getClientRects().length>0&&!l.hasAttribute("data-kbd-skip")):[]}function c(){i()&&rt.nextTick(()=>{const r=n(),l=r.find(D=>D.tagName!=="BUTTON")??r[0];if(!l)return;l.focus();const a=l;if(typeof a.select=="function")try{a.select()}catch{}})}function u(r){var p;if(!i()||r.key!=="Enter"||r.isComposing)return;const l=r.target;if(l.tagName==="TEXTAREA"||l.tagName==="BUTTON"||l.getAttribute("aria-expanded")==="true"||document.querySelector(Rt))return;r.preventDefault();const a=n(),D=a.indexOf(l);if(D===-1)return;const o=a[D+1];o?o.focus():(p=e.onSubmit)==null||p.call(e)}return{focusFirst:c,handleKeydown:u}}exports.extractApiError=dt;exports.parseDate=it;exports.stripMask=w;exports.toDateString=st;exports.toDateTimeString=at;exports.useApiError=Ot;exports.useAppConfirm=vt;exports.useAppToast=jt;exports.useDateInput=qt;exports.useFormKeyboardNav=Bt;exports.useFormatters=St;
3
- //# sourceMappingURL=useFormKeyboardNav-BgBAe0C7.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFormKeyboardNav-BgBAe0C7.cjs","sources":["../node_modules/dayjs/plugin/customParseFormat.js","../src/utils/dates.ts","../src/utils/masks.ts","../src/composables/useFormatters.ts","../src/composables/useAppToast.ts","../src/composables/useAppConfirm.ts","../src/composables/useApiError.ts","../src/composables/useDateInput.ts","../src/composables/useFormKeyboardNav.ts"],"sourcesContent":["!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d/,r=/\\d\\d/,i=/\\d\\d?/,o=/\\d*[^-_:/,()\\s\\d]+/,s={},a=function(e){return(e=+e)+(e>68?1900:2e3)};var f=function(e){return function(t){this[e]=+t}},h=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],u=function(e){var t=s[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=s.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},c={A:[o,function(e){this.afternoon=d(e,!1)}],a:[o,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*+e}],SS:[r,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[i,f(\"seconds\")],ss:[i,f(\"seconds\")],m:[i,f(\"minutes\")],mm:[i,f(\"minutes\")],H:[i,f(\"hours\")],h:[i,f(\"hours\")],HH:[i,f(\"hours\")],hh:[i,f(\"hours\")],D:[i,f(\"day\")],DD:[r,f(\"day\")],Do:[o,function(e){var t=s.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],w:[i,f(\"week\")],ww:[r,f(\"week\")],M:[i,f(\"month\")],MM:[r,f(\"month\")],MMM:[o,function(e){var t=u(\"months\"),n=(u(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[o,function(e){var t=u(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,f(\"year\")],YY:[r,function(e){this.year=a(e)}],YYYY:[/\\d{4}/,f(\"year\")],Z:h,ZZ:h};function l(n){var r,i;r=n,i=s&&s.formats;for(var o=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=o.length,f=0;f<a;f+=1){var h=o[f],u=c[h],d=u&&u[0],l=u&&u[1];o[f]=l?{regex:d,parser:l}:h.replace(/^\\[|\\]$/g,\"\")}return function(e){for(var t={},n=0,r=0;n<a;n+=1){var i=o[n];if(\"string\"==typeof i)r+=i.length;else{var s=i.regex,f=i.parser,h=e.slice(r),u=s.exec(h)[0];f.call(t,u),e=e.replace(u,\"\")}}return function(e){var t=e.afternoon;if(void 0!==t){var n=e.hours;t?n<12&&(e.hours+=12):12===n&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(a=e.parseTwoDigitYear);var r=t.prototype,i=r.parse;r.parse=function(e){var t=e.date,r=e.utc,o=e.args;this.$u=r;var a=o[1];if(\"string\"==typeof a){var f=!0===o[2],h=!0===o[3],u=f||h,d=o[2];h&&(d=o[2]),s=this.$locale(),!f&&d&&(s=n.Ls[d]),this.$d=function(e,t,n,r){try{if([\"x\",\"X\"].indexOf(t)>-1)return new Date((\"X\"===t?1e3:1)*e);var i=l(t)(e),o=i.year,s=i.month,a=i.day,f=i.hours,h=i.minutes,u=i.seconds,d=i.milliseconds,c=i.zone,m=i.week,M=new Date,Y=a||(o||s?1:M.getDate()),p=o||M.getFullYear(),v=0;o&&!s||(v=s>0?s-1:M.getMonth());var D,w=f||0,g=h||0,y=u||0,L=d||0;return c?new Date(Date.UTC(p,v,Y,w,g,y,L+60*c.offset*1e3)):n?new Date(Date.UTC(p,v,Y,w,g,y,L)):(D=new Date(p,v,Y,w,g,y,L),m&&(D=r(D).week(m).toDate()),D)}catch(e){return new Date(\"\")}}(t,a,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),s={}}else if(a instanceof Array)for(var c=a.length,m=1;m<=c;m+=1){o[1]=a[m-1];var M=n.apply(this,o);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===c&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","import dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\n\ndayjs.extend(customParseFormat)\n\nexport function parseDate(value: string | Date | null | undefined): Date | null {\n if (!value) return null\n if (value instanceof Date) return value\n const d = dayjs(value, 'YYYY-MM-DD', true)\n return d.isValid() ? d.toDate() : dayjs(value).toDate()\n}\n\nexport function toDateString(value: Date | string | null | undefined): string | null {\n if (!value) return null\n if (typeof value === 'string') return value\n return dayjs(value).format('YYYY-MM-DD')\n}\n\nexport function toDateTimeString(value: Date | string | null | undefined): string | null {\n if (!value) return null\n if (typeof value === 'string') return value\n return dayjs(value).toISOString()\n}\n\nexport function formatDateValue(\n value: string | Date | null | undefined,\n format = 'DD/MM/YYYY',\n): string {\n if (!value) return '—'\n return dayjs(value).format(format)\n}\n\nexport function formatDateTimeValue(value: string | Date | null | undefined): string {\n if (!value) return '—'\n return dayjs(value).format('DD/MM/YYYY HH:mm')\n}\n","export function stripMask(value: string): string {\n return value.replace(/\\D/g, '')\n}\n\nexport function formatCpf(value: string | null | undefined): string {\n if (!value) return '—'\n const digits = stripMask(value)\n if (digits.length !== 11) return value\n return digits.replace(/^(\\d{3})(\\d{3})(\\d{3})(\\d{2})$/, '$1.$2.$3-$4')\n}\n\nexport function formatCnpj(value: string | null | undefined): string {\n if (!value) return '—'\n const digits = stripMask(value)\n if (digits.length !== 14) return value\n return digits.replace(/^(\\d{2})(\\d{3})(\\d{3})(\\d{4})(\\d{2})$/, '$1.$2.$3/$4-$5')\n}\n\nexport function formatCpfCnpj(value: string | null | undefined): string {\n if (!value) return '—'\n const digits = stripMask(value)\n if (digits.length === 11) return formatCpf(value)\n if (digits.length === 14) return formatCnpj(value)\n return value\n}\n\nexport function formatTelefone(value: string | null | undefined): string {\n if (!value) return '—'\n const digits = stripMask(value)\n if (digits.length === 11) return digits.replace(/^(\\d{2})(\\d{5})(\\d{4})$/, '($1) $2-$3')\n if (digits.length === 10) return digits.replace(/^(\\d{2})(\\d{4})(\\d{4})$/, '($1) $2-$3')\n return value\n}\n\nexport function validateCpf(value: string | null | undefined): string | null {\n if (!value) return null\n const cpf = stripMask(value)\n if (cpf.length !== 11) return 'CPF deve ter 11 dígitos.'\n if (/^(\\d)\\1{10}$/.test(cpf)) return 'CPF inválido.'\n let soma = 0\n for (let i = 0; i < 9; i++) soma += parseInt(cpf[i]) * (10 - i)\n let resto = soma % 11\n const d1 = resto < 2 ? 0 : 11 - resto\n if (parseInt(cpf[9]) !== d1) return 'CPF inválido.'\n soma = 0\n for (let i = 0; i < 10; i++) soma += parseInt(cpf[i]) * (11 - i)\n resto = soma % 11\n const d2 = resto < 2 ? 0 : 11 - resto\n if (parseInt(cpf[10]) !== d2) return 'CPF inválido.'\n return null\n}\n\nexport function validateCnpj(value: string | null | undefined): string | null {\n if (!value) return null\n const cnpj = stripMask(value)\n if (cnpj.length !== 14) return 'CNPJ deve ter 14 dígitos.'\n if (/^(\\d)\\1{13}$/.test(cnpj)) return 'CNPJ inválido.'\n const pesos1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]\n let soma = 0\n for (let i = 0; i < 12; i++) soma += parseInt(cnpj[i]) * pesos1[i]\n let resto = soma % 11\n const d1 = resto < 2 ? 0 : 11 - resto\n if (parseInt(cnpj[12]) !== d1) return 'CNPJ inválido.'\n const pesos2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]\n soma = 0\n for (let i = 0; i < 13; i++) soma += parseInt(cnpj[i]) * pesos2[i]\n resto = soma % 11\n const d2 = resto < 2 ? 0 : 11 - resto\n if (parseInt(cnpj[13]) !== d2) return 'CNPJ inválido.'\n return null\n}\n\nexport function validateCpfCnpj(value: string | null | undefined): string | null {\n if (!value) return null\n const digits = stripMask(value)\n if (digits.length === 11) return validateCpf(value)\n if (digits.length === 14) return validateCnpj(value)\n return 'CPF deve ter 11 dígitos ou CNPJ deve ter 14 dígitos.'\n}\n","import { inject } from 'vue'\nimport { W_CONFIG_KEY } from '@/types/plugin'\nimport type { WPluginConfig } from '@/types/plugin'\nimport {\n formatDateValue,\n formatDateTimeValue,\n parseDate,\n toDateString,\n toDateTimeString,\n} from '@/utils/dates'\nimport {\n formatCpf,\n formatCnpj,\n formatCpfCnpj,\n formatTelefone,\n validateCpf,\n validateCnpj,\n validateCpfCnpj,\n} from '@/utils/masks'\n\nconst numberFormatters = new Map<string, Intl.NumberFormat>()\n\nfunction getNumberFormatter(locale: string, decimals: number): Intl.NumberFormat {\n const key = `${locale}-${decimals}`\n let fmt = numberFormatters.get(key)\n if (!fmt) {\n fmt = new Intl.NumberFormat(locale, {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n })\n numberFormatters.set(key, fmt)\n }\n return fmt\n}\n\nfunction getCurrencyFormatter(locale: string, currency: string): Intl.NumberFormat {\n const key = `${locale}-${currency}`\n let fmt = numberFormatters.get(key)\n if (!fmt) {\n fmt = new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n })\n numberFormatters.set(key, fmt)\n }\n return fmt\n}\n\nexport function useFormatters() {\n const config = inject<WPluginConfig>(W_CONFIG_KEY, {\n defaultPageSize: 20,\n dateFormat: 'DD/MM/YYYY',\n dateTimeFormat: 'DD/MM/YYYY HH:mm',\n locale: 'pt-BR',\n currency: 'BRL',\n } as WPluginConfig)\n\n const locale = config?.locale ?? 'pt-BR'\n const currencyCode = config?.currency ?? 'BRL'\n\n function formatCurrency(value: number | null | undefined): string {\n if (value == null) return '—'\n return getCurrencyFormatter(locale, currencyCode).format(value)\n }\n\n function formatNumber(value: number | null | undefined, decimals = 2): string {\n if (value == null) return '—'\n return getNumberFormatter(locale, decimals).format(value)\n }\n\n function formatDate(value: string | Date | null | undefined, format?: string): string {\n return formatDateValue(value, format ?? config?.dateFormat ?? 'DD/MM/YYYY')\n }\n\n function formatDateTime(value: string | Date | null | undefined): string {\n return formatDateTimeValue(value)\n }\n\n function formatPercent(value: number | null | undefined): string {\n if (value == null) return '—'\n return `${getNumberFormatter(locale, 2).format(value)}%`\n }\n\n return {\n formatCurrency,\n formatNumber,\n formatDate,\n formatDateTime,\n formatPercent,\n formatCpf,\n formatCnpj,\n formatCpfCnpj,\n formatTelefone,\n validateCpf,\n validateCnpj,\n validateCpfCnpj,\n parseDate,\n toDateString,\n toDateTimeString,\n }\n}\n","import { useToast } from 'primevue/usetoast'\n\nexport function useAppToast() {\n const toast = useToast()\n\n function success(message: string, title = 'Sucesso') {\n toast.add({ severity: 'success', summary: title, detail: message, life: 3000 })\n }\n\n function error(message: string, title = 'Erro') {\n toast.add({ severity: 'error', summary: title, detail: message, life: 5000 })\n }\n\n function warn(message: string, title = 'Atenção') {\n toast.add({ severity: 'warn', summary: title, detail: message, life: 4000 })\n }\n\n function info(message: string, title = 'Info') {\n toast.add({ severity: 'info', summary: title, detail: message, life: 3000 })\n }\n\n return { success, error, warn, info }\n}\n","import { useConfirm } from 'primevue/useconfirm'\nimport { useTabHost } from '@/types/routeTabs'\n\nexport function useAppConfirm() {\n const confirm = useConfirm()\n // Dentro da navegação por abas, o confirm pendura no pane da própria aba\n // (some e volta com ela); fora de abas, o body de sempre. O ConfirmDialog\n // global continua único — só a âncora muda, por confirmação.\n const tabHost = useTabHost()\n const appendTo = () => tabHost?.hostEl.value ?? 'body'\n\n function confirmDelete(\n onAccept: () => void,\n message = 'Deseja realmente excluir este registro?',\n ) {\n confirm.require({\n appendTo: appendTo(),\n message,\n header: 'Confirmar Exclusão',\n icon: 'pi pi-trash',\n rejectLabel: 'Cancelar',\n rejectProps: {\n severity: 'secondary',\n text: true,\n },\n acceptLabel: 'Excluir',\n acceptProps: {\n severity: 'danger',\n },\n accept: onAccept,\n })\n }\n\n function confirmAction(message: string, onAccept: () => void, header = 'Confirmação') {\n confirm.require({\n appendTo: appendTo(),\n message,\n header,\n icon: 'pi pi-question-circle',\n rejectLabel: 'Cancelar',\n rejectProps: {\n severity: 'secondary',\n text: true,\n },\n acceptLabel: 'Confirmar',\n accept: onAccept,\n })\n }\n\n return { confirmDelete, confirmAction }\n}\n","function formatFieldName(field: string): string {\n return field.replace(/_/g, ' ').replace(/^\\w/, (c) => c.toUpperCase())\n}\n\nfunction extractMessage(detail: unknown): string | null {\n if (typeof detail === 'string') {\n return detail\n }\n\n if (Array.isArray(detail)) {\n const messages = detail.filter((item) => typeof item === 'string')\n return messages.length > 0 ? messages.join(' ') : null\n }\n\n if (typeof detail === 'object' && detail !== null) {\n const obj = detail as Record<string, unknown>\n\n if (Array.isArray(obj.non_field_errors) && obj.non_field_errors.length > 0) {\n return obj.non_field_errors.filter((item: unknown) => typeof item === 'string').join(' ')\n }\n\n const messages: string[] = []\n for (const [key, value] of Object.entries(obj)) {\n if (key === 'non_field_errors') continue\n const label = formatFieldName(key)\n if (Array.isArray(value)) {\n const strs = value.filter((item: unknown) => typeof item === 'string')\n if (strs.length > 0) messages.push(`${label}: ${strs.join(' ')}`)\n } else if (typeof value === 'string') {\n messages.push(`${label}: ${value}`)\n }\n }\n return messages.length > 0 ? messages.join('\\n') : null\n }\n\n return null\n}\n\nexport function extractApiError(error: unknown, fallback = 'Erro inesperado'): string {\n if (!error || typeof error !== 'object') return fallback\n\n const axiosError = error as {\n response?: { data?: Record<string, unknown> }\n message?: string\n }\n const data = axiosError.response?.data\n\n if (!data || typeof data !== 'object') {\n return axiosError.message || fallback\n }\n\n const detail = data.detail ?? data\n return extractMessage(detail) || fallback\n}\n\nexport function useApiError() {\n return { extractApiError }\n}\n","import dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\n\ndayjs.extend(customParseFormat)\n\n/**\n * Formato do valor emitido pelo WDatePicker:\n * - `'iso'` → string `YYYY-MM-DD` (ou `YYYY-MM-DDTHH:mm:ss` com hora). Ideal p/ API.\n * - `'date'` → objeto `Date` (compatível com o contrato atual do useCrudManager).\n */\nexport type DateValueFormat = 'iso' | 'date'\n\nconst DISPLAY_DATE = 'DD/MM/YYYY'\nconst DISPLAY_DATETIME = 'DD/MM/YYYY HH:mm'\nconst ISO_DATE = 'YYYY-MM-DD'\nconst ISO_DATETIME = 'YYYY-MM-DDTHH:mm:ss'\n\nexport interface UseDateInputOptions {\n /** Reativo: se o campo inclui hora (datetime). */\n showTime?: () => boolean\n /** Reativo: formato do valor emitido (default `'iso'`). */\n valueFormat?: () => DateValueFormat\n}\n\n/**\n * Lógica pura de parse/format/máscara para inputs de data em pt-BR.\n *\n * Timezone-safe: parse e format usam sempre os componentes LOCAIS via dayjs\n * (nunca `toISOString`, que converte p/ UTC e causa off-by-one em fusos negativos).\n * Sem estado reativo próprio — apenas funções; o componente cuida da reatividade.\n */\nexport function useDateInput(opts: UseDateInputOptions = {}) {\n const withTime = () => opts.showTime?.() ?? false\n const displayFormat = () => (withTime() ? DISPLAY_DATETIME : DISPLAY_DATE)\n const mask = () => (withTime() ? '##/##/#### ##:##' : '##/##/####')\n const placeholder = () => (withTime() ? 'dd/mm/aaaa hh:mm' : 'dd/mm/aaaa')\n\n /** Valor de entrada (string ISO ou Date) → `Date` local, ou `null` se inválido. */\n function toDate(value: unknown): Date | null {\n if (value == null || value === '') return null\n if (value instanceof Date) return isNaN(value.getTime()) ? null : value\n if (typeof value === 'string') {\n // Aceita YYYY-MM-DD estrito primeiro (data pura, meia-noite local)…\n const dateOnly = dayjs(value, ISO_DATE, true)\n if (dateOnly.isValid()) return dateOnly.toDate()\n // …senão qualquer ISO datetime válido (dayjs interpreta como local).\n const any = dayjs(value)\n return any.isValid() ? any.toDate() : null\n }\n return null\n }\n\n /** `Date` → valor emitido, respeitando `valueFormat` (default string ISO). */\n function toValue(date: Date | null): string | Date | null {\n if (!date) return null\n if ((opts.valueFormat?.() ?? 'iso') === 'date') return date\n return dayjs(date).format(withTime() ? ISO_DATETIME : ISO_DATE)\n }\n\n /** `Date` → texto de exibição `DD/MM/YYYY[ HH:mm]`. */\n function toDisplay(date: Date | null): string {\n if (!date) return ''\n return dayjs(date).format(displayFormat())\n }\n\n /** Texto digitado (`30/05/1988`) → `Date`, ou `null` se incompleto/inválido. */\n function fromDisplay(text: string): Date | null {\n if (!text) return null\n const d = dayjs(text, displayFormat(), true)\n return d.isValid() ? d.toDate() : null\n }\n\n /** Hoje: date-only zera a hora; datetime mantém a hora atual. */\n function today(): Date {\n return withTime() ? new Date() : dayjs().startOf('day').toDate()\n }\n\n return { toDate, toValue, toDisplay, fromDisplay, today, mask, placeholder, displayFormat }\n}\n","import { nextTick, type Ref } from 'vue'\n\n/**\n * Navegação por teclado em formulários, estilo aplicação desktop (DevExpress):\n * - `focusFirst()` posiciona o foco no primeiro campo ativo (e seleciona o texto).\n * - `handleKeydown` faz o Enter pular para o próximo campo, até o botão de salvar.\n *\n * Sem watchers nem addEventListener manual: o `handleKeydown` é bindado via\n * `@keydown` no container (o Vue gerencia o listener) e `focusFirst` é chamado\n * no `@show` do Dialog. Shift+Tab / Tab continuam nativos.\n *\n * Regras do Enter (para não atrapalhar a semântica de cada componente):\n * - `textarea` → Enter é quebra de linha (não pula).\n * - `button` → Enter é o clique/submit nativo (não pula).\n * - overlay de dropdown aberto (Select/AutoComplete/DatePicker/MultiSelect) →\n * Enter seleciona o item; só o Enter seguinte pula o foco.\n * - marque um elemento com `data-kbd-skip` para excluí-lo da sequência (ex.: o\n * botão Cancelar, para o Enter ir direto ao Salvar).\n */\n\n// Elementos que recebem foco por tabulação.\nconst FOCUSABLE = [\n 'input:not([type=\"hidden\"]):not([disabled])',\n 'textarea:not([disabled])',\n 'select:not([disabled])',\n 'button:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n '[contenteditable=\"true\"]',\n].join(', ')\n\n// Painéis de dropdown do PrimeVue: quando presentes, o Enter deve selecionar.\nconst OPEN_OVERLAY = [\n '.p-select-overlay',\n '.p-autocomplete-overlay',\n '.p-multiselect-overlay',\n '.p-datepicker-panel',\n '.p-cascadeselect-overlay',\n '.p-treeselect-overlay',\n].join(', ')\n\nexport interface FormKeyboardNavOptions {\n /** Liga/desliga a navegação (default: sempre ligada). */\n enabled?: () => boolean\n /** Chamado quando o Enter passa do último elemento sem próximo foco. */\n onSubmit?: () => void\n}\n\nexport function useFormKeyboardNav(\n container: Ref<HTMLElement | null>,\n options: FormKeyboardNavOptions = {},\n) {\n const isEnabled = () => (options.enabled ? options.enabled() : true)\n\n function focusables(): HTMLElement[] {\n const root = container.value\n if (!root) return []\n return Array.from(root.querySelectorAll<HTMLElement>(FOCUSABLE)).filter(\n (el) => el.getClientRects().length > 0 && !el.hasAttribute('data-kbd-skip'),\n )\n }\n\n function focusFirst(): void {\n if (!isEnabled()) return\n nextTick(() => {\n const els = focusables()\n const first = els.find((el) => el.tagName !== 'BUTTON') ?? els[0]\n if (!first) return\n first.focus()\n // Seleciona o conteúdo de inputs de texto para facilitar sobrescrever.\n const input = first as HTMLInputElement\n if (typeof input.select === 'function') {\n try {\n input.select()\n } catch {\n /* nem todo input suporta select() */\n }\n }\n })\n }\n\n function handleKeydown(e: KeyboardEvent): void {\n if (!isEnabled() || e.key !== 'Enter' || e.isComposing) return\n const target = e.target as HTMLElement\n if (target.tagName === 'TEXTAREA' || target.tagName === 'BUTTON') return\n // Dropdown aberto → deixa o componente tratar o Enter (selecionar item).\n if (target.getAttribute('aria-expanded') === 'true') return\n if (document.querySelector(OPEN_OVERLAY)) return\n\n e.preventDefault()\n const els = focusables()\n const i = els.indexOf(target)\n if (i === -1) return\n const next = els[i + 1]\n if (next) next.focus()\n else options.onSubmit?.()\n }\n\n return { focusFirst, handleKeydown }\n}\n"],"names":["e","t","module","this","n","r","i","o","s","a","f","h","u","d","c","l","m","M","Y","p","v","D","w","g","y","L","dayjs","customParseFormat","parseDate","value","toDateString","toDateTimeString","formatDateValue","format","formatDateTimeValue","stripMask","formatCpf","digits","formatCnpj","formatCpfCnpj","formatTelefone","validateCpf","cpf","soma","resto","d1","d2","validateCnpj","cnpj","pesos1","pesos2","validateCpfCnpj","numberFormatters","getNumberFormatter","locale","decimals","key","fmt","getCurrencyFormatter","currency","useFormatters","config","inject","W_CONFIG_KEY","currencyCode","formatCurrency","formatNumber","formatDate","formatDateTime","formatPercent","useAppToast","toast","useToast","success","message","title","error","warn","info","useAppConfirm","confirm","useConfirm","tabHost","useTabHost","appendTo","confirmDelete","onAccept","confirmAction","header","formatFieldName","field","extractMessage","detail","messages","item","obj","label","strs","extractApiError","fallback","axiosError","data","_a","useApiError","DISPLAY_DATE","DISPLAY_DATETIME","ISO_DATE","ISO_DATETIME","useDateInput","opts","withTime","displayFormat","mask","placeholder","toDate","dateOnly","any","toValue","date","toDisplay","fromDisplay","text","today","FOCUSABLE","OPEN_OVERLAY","useFormKeyboardNav","container","options","isEnabled","focusables","root","el","focusFirst","nextTick","els","first","input","handleKeydown","target","next"],"mappings":"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","x_google_ignoreList":[0]}