@wgalleti/primevue-components 0.16.0 → 0.18.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 (53) hide show
  1. package/dist/WKanbanBoard.vue_vue_type_script_setup_true_lang-DWs-ZSNZ.cjs +28 -0
  2. package/dist/WKanbanBoard.vue_vue_type_script_setup_true_lang-DWs-ZSNZ.cjs.map +1 -0
  3. package/dist/{WKanbanBoard.vue_vue_type_script_setup_true_lang-Bmqt_P_5.js → WKanbanBoard.vue_vue_type_script_setup_true_lang-DvyxNL4O.js} +1738 -1702
  4. package/dist/WKanbanBoard.vue_vue_type_script_setup_true_lang-DvyxNL4O.js.map +1 -0
  5. package/dist/components/index.d.ts +1 -0
  6. package/dist/components/ui/WDialog.vue.d.ts +15 -0
  7. package/dist/components/ui/WMapSelect.vue.d.ts +7 -1
  8. package/dist/components.cjs +1 -1
  9. package/dist/components.js +26 -25
  10. package/dist/composables.cjs +1 -1
  11. package/dist/composables.js +2 -2
  12. package/dist/index.cjs +1 -1
  13. package/dist/index.cjs.map +1 -1
  14. package/dist/index.d.ts +1 -1
  15. package/dist/index.js +68 -67
  16. package/dist/plugin-CIBvOgwG.js +14 -0
  17. package/dist/plugin-CIBvOgwG.js.map +1 -0
  18. package/dist/plugin-D2IZHyBm.cjs +2 -0
  19. package/dist/plugin-D2IZHyBm.cjs.map +1 -0
  20. package/dist/primevue-components.css +1 -1
  21. package/dist/types/index.d.ts +1 -1
  22. package/dist/types/mapSelect.d.ts +10 -0
  23. package/dist/types/routeTabs.d.ts +15 -2
  24. package/dist/types.cjs +1 -1
  25. package/dist/types.js +6 -7
  26. package/dist/types.js.map +1 -1
  27. package/dist/useFormKeyboardNav-BgBAe0C7.cjs +3 -0
  28. package/dist/useFormKeyboardNav-BgBAe0C7.cjs.map +1 -0
  29. package/dist/{useFormKeyboardNav-CLCEo_O5.js → useFormKeyboardNav-BrKZrHq9.js} +180 -178
  30. package/dist/useFormKeyboardNav-BrKZrHq9.js.map +1 -0
  31. package/dist/useRouteTabs-CSo1j_ji.js +762 -0
  32. package/dist/useRouteTabs-CSo1j_ji.js.map +1 -0
  33. package/dist/useRouteTabs-VGx93R83.cjs +2 -0
  34. package/dist/useRouteTabs-VGx93R83.cjs.map +1 -0
  35. package/package.json +1 -1
  36. package/dist/WKanbanBoard.vue_vue_type_script_setup_true_lang-Bmqt_P_5.js.map +0 -1
  37. package/dist/WKanbanBoard.vue_vue_type_script_setup_true_lang-DFRhQIiG.cjs +0 -28
  38. package/dist/WKanbanBoard.vue_vue_type_script_setup_true_lang-DFRhQIiG.cjs.map +0 -1
  39. package/dist/plugin-BaBF7c-e.js +0 -7
  40. package/dist/plugin-BaBF7c-e.js.map +0 -1
  41. package/dist/plugin-D1YvyKXX.cjs +0 -2
  42. package/dist/plugin-D1YvyKXX.cjs.map +0 -1
  43. package/dist/routeTabs--y12evp8.cjs +0 -2
  44. package/dist/routeTabs--y12evp8.cjs.map +0 -1
  45. package/dist/routeTabs-NnjycX9L.js +0 -10
  46. package/dist/routeTabs-NnjycX9L.js.map +0 -1
  47. package/dist/useFormKeyboardNav-CLCEo_O5.js.map +0 -1
  48. package/dist/useFormKeyboardNav-D4Ow3k4Y.cjs +0 -3
  49. package/dist/useFormKeyboardNav-D4Ow3k4Y.cjs.map +0 -1
  50. package/dist/useRouteTabs-63cZtRr3.js +0 -739
  51. package/dist/useRouteTabs-63cZtRr3.js.map +0 -1
  52. package/dist/useRouteTabs-Ds2QpP3I.cjs +0 -2
  53. package/dist/useRouteTabs-Ds2QpP3I.cjs.map +0 -1
@@ -30,6 +30,7 @@ export { default as WMapSelect } from './ui/WMapSelect.vue';
30
30
  export { default as WMarkdownView } from './ui/WMarkdownView.vue';
31
31
  export { default as WMarkdownEditor } from './form/WMarkdownEditor.vue';
32
32
  export { default as WMarkdownToc } from './ui/WMarkdownToc.vue';
33
+ export { default as WDialog } from './ui/WDialog.vue';
33
34
  export { default as WTabBar } from './ui/WTabBar.vue';
34
35
  export { default as WTabNav } from './ui/WTabNav.vue';
35
36
  export { default as WTabViewport } from './ui/WTabViewport.vue';
@@ -0,0 +1,15 @@
1
+ declare function __VLS_template(): {
2
+ attrs: Partial<{}>;
3
+ slots: any;
4
+ refs: {};
5
+ rootEl: any;
6
+ };
7
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
8
+ declare const __VLS_component: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
9
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
10
+ export default _default;
11
+ type __VLS_WithTemplateSlots<T, S> = T & {
12
+ new (): {
13
+ $slots: S;
14
+ };
15
+ };
@@ -1,4 +1,4 @@
1
- import { MapSelectFeature, MapSelectGeometry, MapSelectId, MapSelectPolygonStyle, MapSelectSelectionMode, MapSelectTooltips } from '../../types/mapSelect';
1
+ import { MapSelectFeature, MapSelectFeatureStyle, MapSelectGeometry, MapSelectId, MapSelectPolygonStyle, MapSelectSelectionMode, MapSelectTooltips } from '../../types/mapSelect';
2
2
  /**
3
3
  * Seleção múltipla de polígonos num mapa de satélite, com painel lateral de busca.
4
4
  *
@@ -81,6 +81,11 @@ type __VLS_Props = {
81
81
  polygonStyle?: MapSelectPolygonStyle;
82
82
  /** Estilo do polígono selecionado. */
83
83
  polygonSelectedStyle?: MapSelectPolygonStyle;
84
+ /** Destaque por feature: recebe a feature (e se está selecionada) e devolve
85
+ * só o que muda, mesclado sobre o estilo base. Para o mapa mostrar um dado
86
+ * do domínio — ex.: contorno verde no talhão que a recomendação prevê —
87
+ * sem o consumidor ter que reescrever os dois estilos inteiros. */
88
+ featureStyle?: MapSelectFeatureStyle;
84
89
  };
85
90
  declare function setCollapsed(value: boolean): void;
86
91
  declare function fitToScope(): void;
@@ -154,6 +159,7 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {
154
159
  tooltips: MapSelectTooltips;
155
160
  polygonStyle: MapSelectPolygonStyle;
156
161
  polygonSelectedStyle: MapSelectPolygonStyle;
162
+ featureStyle: MapSelectFeatureStyle;
157
163
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
158
164
  root: HTMLDivElement;
159
165
  container: HTMLDivElement;
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _=require("./WKanbanBoard.vue_vue_type_script_setup_true_lang-DFRhQIiG.cjs");exports.WActionBar=_._sfc_main;exports.WAutoCompleteFK=_._sfc_main$1;exports.WCheckList=_._sfc_main$2;exports.WCrudColumnRenderer=_._sfc_main$3;exports.WCrudFormDialog=_._sfc_main$4;exports.WCrudSubview=_._sfc_main$5;exports.WCrudView=_._sfc_main$6;exports.WDatePicker=_._sfc_main$7;exports.WDateRange=_._sfc_main$8;exports.WDetailHeader=_._sfc_main$9;exports.WEditableTable=_._sfc_main$10;exports.WEmptyState=_._sfc_main$11;exports.WFileUpload=_._sfc_main$12;exports.WFormRenderer=_._sfc_main$13;exports.WFormSection=_._sfc_main$14;exports.WImageCropper=_.WImageCropper;exports.WInfoCard=_._sfc_main$15;exports.WKanbanBoard=_._sfc_main$16;exports.WKpiCard=_._sfc_main$17;exports.WKpiGrid=_._sfc_main$18;exports.WMapSelect=_._sfc_main$19;exports.WMarkdownEditor=_._sfc_main$20;exports.WMarkdownToc=_._sfc_main$21;exports.WMarkdownView=_._sfc_main$22;exports.WMoneyInput=_._sfc_main$23;exports.WPageHeader=_._sfc_main$24;exports.WProgressFlow=_._sfc_main$25;exports.WSectionHeader=_._sfc_main$26;exports.WStatusTag=_._sfc_main$27;exports.WStepFlow=_._sfc_main$28;exports.WStepSection=_._sfc_main$29;exports.WTabBar=_._sfc_main$30;exports.WTabNav=_._sfc_main$31;exports.WTabViewport=_._sfc_main$32;exports.WTransferList=_._sfc_main$33;exports.WTreeSelect=_._sfc_main$34;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _=require("./WKanbanBoard.vue_vue_type_script_setup_true_lang-DWs-ZSNZ.cjs");exports.WActionBar=_._sfc_main;exports.WAutoCompleteFK=_._sfc_main$1;exports.WCheckList=_._sfc_main$2;exports.WCrudColumnRenderer=_._sfc_main$3;exports.WCrudFormDialog=_._sfc_main$4;exports.WCrudSubview=_._sfc_main$5;exports.WCrudView=_._sfc_main$6;exports.WDatePicker=_._sfc_main$7;exports.WDateRange=_._sfc_main$8;exports.WDetailHeader=_._sfc_main$9;exports.WDialog=_._sfc_main$10;exports.WEditableTable=_._sfc_main$11;exports.WEmptyState=_._sfc_main$12;exports.WFileUpload=_._sfc_main$13;exports.WFormRenderer=_._sfc_main$14;exports.WFormSection=_._sfc_main$15;exports.WImageCropper=_.WImageCropper;exports.WInfoCard=_._sfc_main$16;exports.WKanbanBoard=_._sfc_main$17;exports.WKpiCard=_._sfc_main$18;exports.WKpiGrid=_._sfc_main$19;exports.WMapSelect=_._sfc_main$20;exports.WMarkdownEditor=_._sfc_main$21;exports.WMarkdownToc=_._sfc_main$22;exports.WMarkdownView=_._sfc_main$23;exports.WMoneyInput=_._sfc_main$24;exports.WPageHeader=_._sfc_main$25;exports.WProgressFlow=_._sfc_main$26;exports.WSectionHeader=_._sfc_main$27;exports.WStatusTag=_._sfc_main$28;exports.WStepFlow=_._sfc_main$29;exports.WStepSection=_._sfc_main$30;exports.WTabBar=_._sfc_main$31;exports.WTabNav=_._sfc_main$32;exports.WTabViewport=_._sfc_main$33;exports.WTransferList=_._sfc_main$34;exports.WTreeSelect=_._sfc_main$35;
2
2
  //# sourceMappingURL=components.cjs.map
@@ -1,40 +1,41 @@
1
- import { _ as s, a as W, b as r, c as o, d as t, e as d, f as i, g as n, h as p, i as l, j as C, k as c, l as u, m as w, n as S, W as m, o as b, p as F, q as T, r as g, s as k, t as D, u as M, v as f, w as B, x as E, y as H, z as K, A as v, B as y, C as A, D as I, E as P, F as R, G as V, H as h } from "./WKanbanBoard.vue_vue_type_script_setup_true_lang-Bmqt_P_5.js";
1
+ import { _ as s, a as W, b as r, c as o, d as t, e as i, f as d, g as n, h as l, i as p, j as C, k as c, l as u, m as w, n as S, o as m, W as b, p as g, q as F, r as T, s as k, t as D, u as M, v as f, w as B, x as E, y as H, z as I, A as K, B as v, C as y, D as A, E as P, F as R, G as V, H as h, I as x } from "./WKanbanBoard.vue_vue_type_script_setup_true_lang-DvyxNL4O.js";
2
2
  export {
3
3
  s as WActionBar,
4
4
  W as WAutoCompleteFK,
5
5
  r as WCheckList,
6
6
  o as WCrudColumnRenderer,
7
7
  t as WCrudFormDialog,
8
- d as WCrudSubview,
9
- i as WCrudView,
8
+ i as WCrudSubview,
9
+ d as WCrudView,
10
10
  n as WDatePicker,
11
- p as WDateRange,
12
- l as WDetailHeader,
13
- C as WEditableTable,
14
- c as WEmptyState,
15
- u as WFileUpload,
16
- w as WFormRenderer,
17
- S as WFormSection,
18
- m as WImageCropper,
19
- b as WInfoCard,
11
+ l as WDateRange,
12
+ p as WDetailHeader,
13
+ C as WDialog,
14
+ c as WEditableTable,
15
+ u as WEmptyState,
16
+ w as WFileUpload,
17
+ S as WFormRenderer,
18
+ m as WFormSection,
19
+ b as WImageCropper,
20
+ g as WInfoCard,
20
21
  F as WKanbanBoard,
21
22
  T as WKpiCard,
22
- g as WKpiGrid,
23
- k as WMapSelect,
24
- D as WMarkdownEditor,
25
- M as WMarkdownToc,
26
- f as WMarkdownView,
27
- B as WMoneyInput,
28
- E as WPageHeader,
29
- H as WProgressFlow,
23
+ k as WKpiGrid,
24
+ D as WMapSelect,
25
+ M as WMarkdownEditor,
26
+ f as WMarkdownToc,
27
+ B as WMarkdownView,
28
+ E as WMoneyInput,
29
+ H as WPageHeader,
30
+ I as WProgressFlow,
30
31
  K as WSectionHeader,
31
32
  v as WStatusTag,
32
33
  y as WStepFlow,
33
34
  A as WStepSection,
34
- I as WTabBar,
35
- P as WTabNav,
36
- R as WTabViewport,
37
- V as WTransferList,
38
- h as WTreeSelect
35
+ P as WTabBar,
36
+ R as WTabNav,
37
+ V as WTabViewport,
38
+ h as WTransferList,
39
+ x as WTreeSelect
39
40
  };
40
41
  //# sourceMappingURL=components.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./useRouteTabs-Ds2QpP3I.cjs"),e=require("./useFormKeyboardNav-D4Ow3k4Y.cjs");function s(u){return u}exports.useApi=r.useApi;exports.useCrudManager=r.useCrudManager;exports.useRouteTabs=r.useRouteTabs;exports.useSubviewCrud=r.useSubviewCrud;exports.extractApiError=e.extractApiError;exports.useApiError=e.useApiError;exports.useAppConfirm=e.useAppConfirm;exports.useAppToast=e.useAppToast;exports.useDateInput=e.useDateInput;exports.useFormKeyboardNav=e.useFormKeyboardNav;exports.useFormatters=e.useFormatters;exports.defineCrudConfig=s;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./useRouteTabs-VGx93R83.cjs"),e=require("./useFormKeyboardNav-BgBAe0C7.cjs");function s(u){return u}exports.useApi=r.useApi;exports.useCrudManager=r.useCrudManager;exports.useRouteTabs=r.useRouteTabs;exports.useSubviewCrud=r.useSubviewCrud;exports.extractApiError=e.extractApiError;exports.useApiError=e.useApiError;exports.useAppConfirm=e.useAppConfirm;exports.useAppToast=e.useAppToast;exports.useDateInput=e.useDateInput;exports.useFormKeyboardNav=e.useFormKeyboardNav;exports.useFormatters=e.useFormatters;exports.defineCrudConfig=s;
2
2
  //# sourceMappingURL=composables.cjs.map
@@ -1,5 +1,5 @@
1
- import { u, a as o, b as t, c as p } from "./useRouteTabs-63cZtRr3.js";
2
- import { e as n, u as f, a as d, b, c as m, d as A, f as C } from "./useFormKeyboardNav-CLCEo_O5.js";
1
+ import { u, a as o, b as t, c as p } from "./useRouteTabs-CSo1j_ji.js";
2
+ import { e as n, u as f, a as d, b, c as m, d as A, f as C } from "./useFormKeyboardNav-BrKZrHq9.js";
3
3
  function s(e) {
4
4
  return e;
5
5
  }
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _=require("./plugin-D1YvyKXX.cjs"),t=require("./WKanbanBoard.vue_vue_type_script_setup_true_lang-DFRhQIiG.cjs"),W=require("./useRouteTabs-Ds2QpP3I.cjs"),m=require("./useFormKeyboardNav-D4Ow3k4Y.cjs"),w=require("./labels-pNskxXcl.cjs"),y=require("./routeTabs--y12evp8.cjs");function C(e,a,r){const n=e;return Array.isArray(n.results)?{data:n.results,page:n.page??a,page_size:n.page_size??r,rows:n.count??0,extras:n.extras??{}}:Array.isArray(n.data)?{data:n.data,page:n.page??a,page_size:n.page_size??r,rows:n.rows??0,extras:n.extras??{}}:{data:Array.isArray(e)?e:[],page:a,page_size:r,rows:Array.isArray(e)?e.length:0,extras:{}}}function T(e){return{async list(a,r={}){const n=await e.get(a,{params:r});return C(n.data,Number(r.page??1),Number(r.page_size??20))},async get(a,r,n){return{data:(await e.get(`${a}${r}/`,n)).data}},async create(a,r,n){return{data:(await e.post(a,r,n)).data}},async update(a,r,n,s){return{data:(await e.patch(`${a}${r}/`,n,s)).data}},async delete(a,r){await e.delete(`${a}${r}/`)}}}const S={install(e,a){if(!(a!=null&&a.axios)&&!(a!=null&&a.dataProvider))throw new Error('[wPrimeVueComponents] Informe "axios" ou "dataProvider" ao registrar o WPrimeVuePlugin.');const r=a.dataProvider??T(a.axios),n={axios:a.axios,dataProvider:r,defaultPageSize:a.defaultPageSize??20,dateFormat:a.dateFormat??"DD/MM/YYYY",dateTimeFormat:a.dateTimeFormat??"DD/MM/YYYY HH:mm",locale:a.locale??"pt-BR",currency:a.currency??"BRL"};a.axios&&e.provide(_.W_AXIOS_KEY,a.axios),e.provide(_.W_DATA_PROVIDER_KEY,r),e.provide(_.W_CONFIG_KEY,n),a.registerComponents!==!1&&(e.component("WCrudView",t._sfc_main$6),e.component("WCrudFormDialog",t._sfc_main$4),e.component("WCrudColumnRenderer",t._sfc_main$3),e.component("WAutoCompleteFK",t._sfc_main$1),e.component("WMoneyInput",t._sfc_main$23),e.component("WTransferList",t._sfc_main$33),e.component("WTreeSelect",t._sfc_main$34))}};function D(e){return e.split("?")[0].replace(/^\/+|\/+$/g,"").replace(/^api\/v\d+\//,"")}function F(e){return typeof e=="string"?{table:e}:e}function b(e,a=400){return{response:{status:a,data:{detail:e}},message:e}}function A(e){if(e instanceof FormData)throw b("SupabaseDataProvider nao envia FormData diretamente. Faça upload do arquivo no Storage e envie a URL/caminho no payload.");return e}function p(e){throw{response:{data:{detail:(e==null?void 0:e.message)??"Erro ao consultar Supabase",code:e==null?void 0:e.code,details:e==null?void 0:e.details,hint:e==null?void 0:e.hint}},message:(e==null?void 0:e.message)??"Erro ao consultar Supabase"}}function g(e,a){var s,i;const r=D(e),n=(s=a.resources)==null?void 0:s[r];if(n)return F(n);if((i=a.allowedTables)!=null&&i.includes(r))return{table:r};throw b(`Recurso Supabase nao registrado para o endpoint "${e}".`,404)}function v(e,a,r){const n=new Set(["page","page_size","search","ordering"]),s={...r.defaultFilters,...a};for(const[i,o]of Object.entries(s))n.has(i)||o===null||o===void 0||o===""||(e=e.eq(i,o));return e}function E(e,a,r){if(typeof a!="string"||!a.trim()||!(r!=null&&r.length))return e;const n=a.trim().replace(/,/g,"\\,"),s=r.map(i=>`${i}.ilike.%${n}%`).join(",");return e.or(s)}function P(e,a){const r=typeof e=="string"&&e?e:a;return r?{field:r.startsWith("-")?r.slice(1):r,ascending:!r.startsWith("-")}:null}function R(e,a){return e?a.mapListItem?e.map(r=>{var n;return(n=a.mapListItem)==null?void 0:n.call(a,r)}):e:[]}function K(e){const a=e.defaultSelect??"*";return{async list(r,n={}){var $;const s=g(r,e),i=Math.max(Number(n.page??1),1),o=Math.max(Number(n.page_size??20),1),c=(i-1)*o,l=c+o-1;let u=e.client.from(s.table).select(s.select??a,{count:"exact"});u=v(u,n,s),u=E(u,n.search,s.searchFields);const d=P(n.ordering,s.defaultOrdering);d&&(u=u.order(d.field,{ascending:d.ascending}));const f=await u.range(c,l);return f.error&&p(f.error),{data:R(f.data,s),page:i,page_size:o,rows:f.count??(($=f.data)==null?void 0:$.length)??0,extras:{}}},async get(r,n,s){const i=g(r,e),o=i.pk??"id",c=await e.client.from(i.table).select(i.select??a).eq(o,n).single();return c.error&&p(c.error),{data:c.data}},async create(r,n,s){const i=g(r,e),o=A(n),c=i.mapPayload?i.mapPayload(o,"create"):o,l=await e.client.from(i.table).insert(c).select(i.select??a).single();return l.error&&p(l.error),{data:l.data}},async update(r,n,s,i){const o=g(r,e),c=o.pk??"id",l=A(s),u=o.mapPayload?o.mapPayload(l,"update"):l,d=await e.client.from(o.table).update(u).eq(c,n).select(o.select??a).single();return d.error&&p(d.error),{data:d.data}},async delete(r,n){const s=g(r,e),i=s.pk??"id",o=s.softDelete===!0?{is_active:!1}:typeof s.softDelete=="object"?s.softDelete:null,c=o?await e.client.from(s.table).update(o).eq(i,n):await e.client.from(s.table).delete().eq(i,n);c.error&&p(c.error)}}}exports.W_AXIOS_KEY=_.W_AXIOS_KEY;exports.W_CONFIG_KEY=_.W_CONFIG_KEY;exports.W_DATA_PROVIDER_KEY=_.W_DATA_PROVIDER_KEY;exports.WActionBar=t._sfc_main;exports.WAutoCompleteFK=t._sfc_main$1;exports.WCheckList=t._sfc_main$2;exports.WCrudColumnRenderer=t._sfc_main$3;exports.WCrudFormDialog=t._sfc_main$4;exports.WCrudSubview=t._sfc_main$5;exports.WCrudView=t._sfc_main$6;exports.WDatePicker=t._sfc_main$7;exports.WDateRange=t._sfc_main$8;exports.WDetailHeader=t._sfc_main$9;exports.WEditableTable=t._sfc_main$10;exports.WEmptyState=t._sfc_main$11;exports.WFileUpload=t._sfc_main$12;exports.WFormRenderer=t._sfc_main$13;exports.WFormSection=t._sfc_main$14;exports.WImageCropper=t.WImageCropper;exports.WInfoCard=t._sfc_main$15;exports.WKanbanBoard=t._sfc_main$16;exports.WKpiCard=t._sfc_main$17;exports.WKpiGrid=t._sfc_main$18;exports.WMapSelect=t._sfc_main$19;exports.WMarkdownEditor=t._sfc_main$20;exports.WMarkdownToc=t._sfc_main$21;exports.WMarkdownView=t._sfc_main$22;exports.WMoneyInput=t._sfc_main$23;exports.WPageHeader=t._sfc_main$24;exports.WProgressFlow=t._sfc_main$25;exports.WSectionHeader=t._sfc_main$26;exports.WStatusTag=t._sfc_main$27;exports.WStepFlow=t._sfc_main$28;exports.WStepSection=t._sfc_main$29;exports.WTabBar=t._sfc_main$30;exports.WTabNav=t._sfc_main$31;exports.WTabViewport=t._sfc_main$32;exports.WTransferList=t._sfc_main$33;exports.WTreeSelect=t._sfc_main$34;exports.W_STEP_FLOW_KEY=t.W_STEP_FLOW_KEY;exports.downloadCsv=t.downloadCsv;exports.mapApiFieldToColumnDef=t.mapApiFieldToColumnDef;exports.mapApiFieldToFieldDef=t.mapApiFieldToFieldDef;exports.mapApiFieldsToColumnDefs=t.mapApiFieldsToColumnDefs;exports.mapApiFieldsToFieldDefs=t.mapApiFieldsToFieldDefs;exports.toCsv=t.toCsv;exports.useApi=W.useApi;exports.useCrudManager=W.useCrudManager;exports.useRouteTabs=W.useRouteTabs;exports.useSubviewCrud=W.useSubviewCrud;exports.extractApiError=m.extractApiError;exports.useApiError=m.useApiError;exports.useAppConfirm=m.useAppConfirm;exports.useAppToast=m.useAppToast;exports.useDateInput=m.useDateInput;exports.useFormatters=m.useFormatters;exports.DEFAULT_CRUD_LABELS=w.DEFAULT_CRUD_LABELS;exports.W_TAB_HOST_KEY=y.W_TAB_HOST_KEY;exports.useTabHost=y.useTabHost;exports.WPrimeVuePlugin=S;exports.createAxiosDataProvider=T;exports.createSupabaseDataProvider=K;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _=require("./plugin-D2IZHyBm.cjs"),t=require("./WKanbanBoard.vue_vue_type_script_setup_true_lang-DWs-ZSNZ.cjs"),W=require("./useRouteTabs-VGx93R83.cjs"),m=require("./useFormKeyboardNav-BgBAe0C7.cjs"),w=require("./labels-pNskxXcl.cjs");function C(e,a,n){const r=e;return Array.isArray(r.results)?{data:r.results,page:r.page??a,page_size:r.page_size??n,rows:r.count??0,extras:r.extras??{}}:Array.isArray(r.data)?{data:r.data,page:r.page??a,page_size:r.page_size??n,rows:r.rows??0,extras:r.extras??{}}:{data:Array.isArray(e)?e:[],page:a,page_size:n,rows:Array.isArray(e)?e.length:0,extras:{}}}function y(e){return{async list(a,n={}){const r=await e.get(a,{params:n});return C(r.data,Number(n.page??1),Number(n.page_size??20))},async get(a,n,r){return{data:(await e.get(`${a}${n}/`,r)).data}},async create(a,n,r){return{data:(await e.post(a,n,r)).data}},async update(a,n,r,s){return{data:(await e.patch(`${a}${n}/`,r,s)).data}},async delete(a,n){await e.delete(`${a}${n}/`)}}}const S={install(e,a){if(!(a!=null&&a.axios)&&!(a!=null&&a.dataProvider))throw new Error('[wPrimeVueComponents] Informe "axios" ou "dataProvider" ao registrar o WPrimeVuePlugin.');const n=a.dataProvider??y(a.axios),r={axios:a.axios,dataProvider:n,defaultPageSize:a.defaultPageSize??20,dateFormat:a.dateFormat??"DD/MM/YYYY",dateTimeFormat:a.dateTimeFormat??"DD/MM/YYYY HH:mm",locale:a.locale??"pt-BR",currency:a.currency??"BRL"};a.axios&&e.provide(_.W_AXIOS_KEY,a.axios),e.provide(_.W_DATA_PROVIDER_KEY,n),e.provide(_.W_CONFIG_KEY,r),a.registerComponents!==!1&&(e.component("WCrudView",t._sfc_main$6),e.component("WCrudFormDialog",t._sfc_main$4),e.component("WCrudColumnRenderer",t._sfc_main$3),e.component("WAutoCompleteFK",t._sfc_main$1),e.component("WMoneyInput",t._sfc_main$24),e.component("WTransferList",t._sfc_main$34),e.component("WTreeSelect",t._sfc_main$35))}};function b(e){return e.split("?")[0].replace(/^\/+|\/+$/g,"").replace(/^api\/v\d+\//,"")}function D(e){return typeof e=="string"?{table:e}:e}function T(e,a=400){return{response:{status:a,data:{detail:e}},message:e}}function A(e){if(e instanceof FormData)throw T("SupabaseDataProvider nao envia FormData diretamente. Faça upload do arquivo no Storage e envie a URL/caminho no payload.");return e}function p(e){throw{response:{data:{detail:(e==null?void 0:e.message)??"Erro ao consultar Supabase",code:e==null?void 0:e.code,details:e==null?void 0:e.details,hint:e==null?void 0:e.hint}},message:(e==null?void 0:e.message)??"Erro ao consultar Supabase"}}function g(e,a){var s,i;const n=b(e),r=(s=a.resources)==null?void 0:s[n];if(r)return D(r);if((i=a.allowedTables)!=null&&i.includes(n))return{table:n};throw T(`Recurso Supabase nao registrado para o endpoint "${e}".`,404)}function F(e,a,n){const r=new Set(["page","page_size","search","ordering"]),s={...n.defaultFilters,...a};for(const[i,o]of Object.entries(s))r.has(i)||o===null||o===void 0||o===""||(e=e.eq(i,o));return e}function v(e,a,n){if(typeof a!="string"||!a.trim()||!(n!=null&&n.length))return e;const r=a.trim().replace(/,/g,"\\,"),s=n.map(i=>`${i}.ilike.%${r}%`).join(",");return e.or(s)}function E(e,a){const n=typeof e=="string"&&e?e:a;return n?{field:n.startsWith("-")?n.slice(1):n,ascending:!n.startsWith("-")}:null}function P(e,a){return e?a.mapListItem?e.map(n=>{var r;return(r=a.mapListItem)==null?void 0:r.call(a,n)}):e:[]}function R(e){const a=e.defaultSelect??"*";return{async list(n,r={}){var $;const s=g(n,e),i=Math.max(Number(r.page??1),1),o=Math.max(Number(r.page_size??20),1),c=(i-1)*o,l=c+o-1;let u=e.client.from(s.table).select(s.select??a,{count:"exact"});u=F(u,r,s),u=v(u,r.search,s.searchFields);const d=E(r.ordering,s.defaultOrdering);d&&(u=u.order(d.field,{ascending:d.ascending}));const f=await u.range(c,l);return f.error&&p(f.error),{data:P(f.data,s),page:i,page_size:o,rows:f.count??(($=f.data)==null?void 0:$.length)??0,extras:{}}},async get(n,r,s){const i=g(n,e),o=i.pk??"id",c=await e.client.from(i.table).select(i.select??a).eq(o,r).single();return c.error&&p(c.error),{data:c.data}},async create(n,r,s){const i=g(n,e),o=A(r),c=i.mapPayload?i.mapPayload(o,"create"):o,l=await e.client.from(i.table).insert(c).select(i.select??a).single();return l.error&&p(l.error),{data:l.data}},async update(n,r,s,i){const o=g(n,e),c=o.pk??"id",l=A(s),u=o.mapPayload?o.mapPayload(l,"update"):l,d=await e.client.from(o.table).update(u).eq(c,r).select(o.select??a).single();return d.error&&p(d.error),{data:d.data}},async delete(n,r){const s=g(n,e),i=s.pk??"id",o=s.softDelete===!0?{is_active:!1}:typeof s.softDelete=="object"?s.softDelete:null,c=o?await e.client.from(s.table).update(o).eq(i,r):await e.client.from(s.table).delete().eq(i,r);c.error&&p(c.error)}}}exports.W_AXIOS_KEY=_.W_AXIOS_KEY;exports.W_CONFIG_KEY=_.W_CONFIG_KEY;exports.W_DATA_PROVIDER_KEY=_.W_DATA_PROVIDER_KEY;exports.W_TAB_HOST_KEY=_.W_TAB_HOST_KEY;exports.useTabHost=_.useTabHost;exports.WActionBar=t._sfc_main;exports.WAutoCompleteFK=t._sfc_main$1;exports.WCheckList=t._sfc_main$2;exports.WCrudColumnRenderer=t._sfc_main$3;exports.WCrudFormDialog=t._sfc_main$4;exports.WCrudSubview=t._sfc_main$5;exports.WCrudView=t._sfc_main$6;exports.WDatePicker=t._sfc_main$7;exports.WDateRange=t._sfc_main$8;exports.WDetailHeader=t._sfc_main$9;exports.WDialog=t._sfc_main$10;exports.WEditableTable=t._sfc_main$11;exports.WEmptyState=t._sfc_main$12;exports.WFileUpload=t._sfc_main$13;exports.WFormRenderer=t._sfc_main$14;exports.WFormSection=t._sfc_main$15;exports.WImageCropper=t.WImageCropper;exports.WInfoCard=t._sfc_main$16;exports.WKanbanBoard=t._sfc_main$17;exports.WKpiCard=t._sfc_main$18;exports.WKpiGrid=t._sfc_main$19;exports.WMapSelect=t._sfc_main$20;exports.WMarkdownEditor=t._sfc_main$21;exports.WMarkdownToc=t._sfc_main$22;exports.WMarkdownView=t._sfc_main$23;exports.WMoneyInput=t._sfc_main$24;exports.WPageHeader=t._sfc_main$25;exports.WProgressFlow=t._sfc_main$26;exports.WSectionHeader=t._sfc_main$27;exports.WStatusTag=t._sfc_main$28;exports.WStepFlow=t._sfc_main$29;exports.WStepSection=t._sfc_main$30;exports.WTabBar=t._sfc_main$31;exports.WTabNav=t._sfc_main$32;exports.WTabViewport=t._sfc_main$33;exports.WTransferList=t._sfc_main$34;exports.WTreeSelect=t._sfc_main$35;exports.W_STEP_FLOW_KEY=t.W_STEP_FLOW_KEY;exports.downloadCsv=t.downloadCsv;exports.mapApiFieldToColumnDef=t.mapApiFieldToColumnDef;exports.mapApiFieldToFieldDef=t.mapApiFieldToFieldDef;exports.mapApiFieldsToColumnDefs=t.mapApiFieldsToColumnDefs;exports.mapApiFieldsToFieldDefs=t.mapApiFieldsToFieldDefs;exports.toCsv=t.toCsv;exports.useApi=W.useApi;exports.useCrudManager=W.useCrudManager;exports.useRouteTabs=W.useRouteTabs;exports.useSubviewCrud=W.useSubviewCrud;exports.extractApiError=m.extractApiError;exports.useApiError=m.useApiError;exports.useAppConfirm=m.useAppConfirm;exports.useAppToast=m.useAppToast;exports.useDateInput=m.useDateInput;exports.useFormatters=m.useFormatters;exports.DEFAULT_CRUD_LABELS=w.DEFAULT_CRUD_LABELS;exports.WPrimeVuePlugin=S;exports.createAxiosDataProvider=y;exports.createSupabaseDataProvider=R;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/data-providers/axiosDataProvider.ts","../src/plugin.ts","../src/data-providers/supabaseDataProvider.ts"],"sourcesContent":["import type { AxiosInstance } from 'axios'\nimport type {\n DataProvider,\n DataProviderListParams,\n DataProviderListResponse,\n DataProviderRequestConfig,\n DataProviderResponse,\n} from '@/types/dataProvider'\n\nfunction normalizeListResponse<T>(\n responseData: unknown,\n fallbackPage: number,\n fallbackPageSize: number,\n): DataProviderListResponse<T> {\n const data = responseData as Record<string, unknown>\n\n if (Array.isArray(data.results)) {\n return {\n data: data.results as T[],\n page: (data.page as number) ?? fallbackPage,\n page_size: (data.page_size as number) ?? fallbackPageSize,\n rows: (data.count as number) ?? 0,\n extras: (data.extras as Record<string, unknown>) ?? {},\n }\n }\n\n if (Array.isArray(data.data)) {\n return {\n data: data.data as T[],\n page: (data.page as number) ?? fallbackPage,\n page_size: (data.page_size as number) ?? fallbackPageSize,\n rows: (data.rows as number) ?? 0,\n extras: (data.extras as Record<string, unknown>) ?? {},\n }\n }\n\n return {\n data: Array.isArray(responseData) ? (responseData as T[]) : [],\n page: fallbackPage,\n page_size: fallbackPageSize,\n rows: Array.isArray(responseData) ? responseData.length : 0,\n extras: {},\n }\n}\n\nexport function createAxiosDataProvider(axios: AxiosInstance): DataProvider {\n return {\n async list<T = Record<string, unknown>>(\n endpoint: string,\n params: DataProviderListParams = {},\n ): Promise<DataProviderListResponse<T>> {\n const response = await axios.get(endpoint, { params })\n return normalizeListResponse<T>(\n response.data,\n Number(params.page ?? 1),\n Number(params.page_size ?? 20),\n )\n },\n\n async get<T = Record<string, unknown>>(\n endpoint: string,\n id: string | number,\n config?: DataProviderRequestConfig,\n ): Promise<DataProviderResponse<T>> {\n const response = await axios.get<T>(`${endpoint}${id}/`, config)\n return { data: response.data }\n },\n\n async create<T = Record<string, unknown>>(\n endpoint: string,\n payload: Record<string, unknown> | FormData,\n config?: DataProviderRequestConfig,\n ): Promise<DataProviderResponse<T>> {\n const response = await axios.post<T>(endpoint, payload, config)\n return { data: response.data }\n },\n\n async update<T = Record<string, unknown>>(\n endpoint: string,\n id: string | number,\n payload: Record<string, unknown> | FormData,\n config?: DataProviderRequestConfig,\n ): Promise<DataProviderResponse<T>> {\n const response = await axios.patch<T>(`${endpoint}${id}/`, payload, config)\n return { data: response.data }\n },\n\n async delete(endpoint: string, id: string | number): Promise<void> {\n await axios.delete(`${endpoint}${id}/`)\n },\n }\n}\n","import type { App, Plugin } from 'vue'\nimport type { WPluginOptions, WPluginConfig } from './types/plugin'\nimport { W_AXIOS_KEY, W_CONFIG_KEY, W_DATA_PROVIDER_KEY } from './types/plugin'\nimport {\n WCrudView,\n WCrudFormDialog,\n WCrudColumnRenderer,\n WAutoCompleteFK,\n WMoneyInput,\n WTransferList,\n WTreeSelect,\n} from './components'\nimport { createAxiosDataProvider } from './data-providers/axiosDataProvider'\n\nexport const WPrimeVuePlugin: Plugin = {\n install(app: App, options: WPluginOptions) {\n if (!options?.axios && !options?.dataProvider) {\n throw new Error(\n '[wPrimeVueComponents] Informe \"axios\" ou \"dataProvider\" ao registrar o WPrimeVuePlugin.',\n )\n }\n\n const dataProvider = options.dataProvider ?? createAxiosDataProvider(options.axios!)\n\n const config: WPluginConfig = {\n axios: options.axios,\n dataProvider,\n defaultPageSize: options.defaultPageSize ?? 20,\n dateFormat: options.dateFormat ?? 'DD/MM/YYYY',\n dateTimeFormat: options.dateTimeFormat ?? 'DD/MM/YYYY HH:mm',\n locale: options.locale ?? 'pt-BR',\n currency: options.currency ?? 'BRL',\n }\n\n if (options.axios) {\n app.provide(W_AXIOS_KEY, options.axios)\n }\n app.provide(W_DATA_PROVIDER_KEY, dataProvider)\n app.provide(W_CONFIG_KEY, config)\n\n if (options.registerComponents !== false) {\n app.component('WCrudView', WCrudView)\n app.component('WCrudFormDialog', WCrudFormDialog)\n app.component('WCrudColumnRenderer', WCrudColumnRenderer)\n app.component('WAutoCompleteFK', WAutoCompleteFK)\n app.component('WMoneyInput', WMoneyInput)\n app.component('WTransferList', WTransferList)\n app.component('WTreeSelect', WTreeSelect)\n }\n },\n}\n","import type {\n DataProvider,\n DataProviderListParams,\n DataProviderListResponse,\n DataProviderRequestConfig,\n DataProviderResponse,\n} from '@/types/dataProvider'\n\ntype SupabaseResult<T> = {\n data: T | null\n error: {\n message: string\n code?: string\n details?: string\n hint?: string\n } | null\n count?: number | null\n}\n\ntype SupabaseFilterBuilder<T> = PromiseLike<SupabaseResult<T>> & {\n select(\n columns?: string,\n options?: { count?: 'exact' | 'planned' | 'estimated' },\n ): SupabaseFilterBuilder<T>\n eq(column: string, value: unknown): SupabaseFilterBuilder<T>\n ilike(column: string, pattern: string): SupabaseFilterBuilder<T>\n or(filters: string): SupabaseFilterBuilder<T>\n order(column: string, options?: { ascending?: boolean }): SupabaseFilterBuilder<T>\n range(from: number, to: number): SupabaseFilterBuilder<T>\n single(): Promise<SupabaseResult<T>>\n}\n\ntype SupabaseTable = {\n select<T = unknown>(\n columns?: string,\n options?: { count?: 'exact' | 'planned' | 'estimated' },\n ): SupabaseFilterBuilder<T>\n insert<T = unknown>(payload: unknown): SupabaseFilterBuilder<T>\n update<T = unknown>(payload: unknown): SupabaseFilterBuilder<T>\n delete<T = unknown>(): SupabaseFilterBuilder<T>\n}\n\nexport interface SupabaseDataProviderClient {\n from(table: string): SupabaseTable\n}\n\nexport interface SupabaseResourceConfig {\n table: string\n pk?: string\n select?: string\n searchFields?: string[]\n defaultOrdering?: string\n defaultFilters?: Record<string, unknown>\n softDelete?: boolean | Record<string, unknown>\n mapListItem?: (item: Record<string, unknown>) => Record<string, unknown>\n mapPayload?: (\n payload: Record<string, unknown>,\n operation: 'create' | 'update',\n ) => Record<string, unknown>\n}\n\nexport interface CreateSupabaseDataProviderOptions {\n client: SupabaseDataProviderClient\n resources?: Record<string, SupabaseResourceConfig | string>\n defaultSelect?: string\n allowedTables?: string[]\n}\n\nfunction normalizeEndpoint(endpoint: string): string {\n return endpoint\n .split('?')[0]\n .replace(/^\\/+|\\/+$/g, '')\n .replace(/^api\\/v\\d+\\//, '')\n}\n\nfunction toResourceConfig(resource: SupabaseResourceConfig | string): SupabaseResourceConfig {\n return typeof resource === 'string' ? { table: resource } : resource\n}\n\nfunction createProviderError(message: string, status = 400) {\n return {\n response: {\n status,\n data: { detail: message },\n },\n message,\n }\n}\n\nfunction assertPlainPayload(payload: Record<string, unknown> | FormData): Record<string, unknown> {\n if (payload instanceof FormData) {\n throw createProviderError(\n 'SupabaseDataProvider nao envia FormData diretamente. Faça upload do arquivo no Storage e envie a URL/caminho no payload.',\n )\n }\n\n return payload\n}\n\nfunction normalizeSupabaseError(error: SupabaseResult<unknown>['error']): never {\n throw {\n response: {\n data: {\n detail: error?.message ?? 'Erro ao consultar Supabase',\n code: error?.code,\n details: error?.details,\n hint: error?.hint,\n },\n },\n message: error?.message ?? 'Erro ao consultar Supabase',\n }\n}\n\nfunction resolveResource(\n endpoint: string,\n options: CreateSupabaseDataProviderOptions,\n): SupabaseResourceConfig {\n const resourceName = normalizeEndpoint(endpoint)\n const configuredResource = options.resources?.[resourceName]\n\n if (configuredResource) {\n return toResourceConfig(configuredResource)\n }\n\n if (options.allowedTables?.includes(resourceName)) {\n return { table: resourceName }\n }\n\n throw createProviderError(`Recurso Supabase nao registrado para o endpoint \"${endpoint}\".`, 404)\n}\n\nfunction applyFilters<T>(\n query: SupabaseFilterBuilder<T>,\n params: DataProviderListParams,\n resource: SupabaseResourceConfig,\n): SupabaseFilterBuilder<T> {\n const reservedKeys = new Set(['page', 'page_size', 'search', 'ordering'])\n const filters = { ...resource.defaultFilters, ...params }\n\n for (const [key, value] of Object.entries(filters)) {\n if (reservedKeys.has(key) || value === null || value === undefined || value === '') {\n continue\n }\n query = query.eq(key, value)\n }\n\n return query\n}\n\nfunction applySearch<T>(\n query: SupabaseFilterBuilder<T>,\n search: unknown,\n searchFields?: string[],\n): SupabaseFilterBuilder<T> {\n if (typeof search !== 'string' || !search.trim() || !searchFields?.length) {\n return query\n }\n\n const escapedSearch = search.trim().replace(/,/g, '\\\\,')\n const expression = searchFields.map((field) => `${field}.ilike.%${escapedSearch}%`).join(',')\n\n return query.or(expression)\n}\n\nfunction parseOrdering(ordering: unknown, fallback?: string) {\n const value = typeof ordering === 'string' && ordering ? ordering : fallback\n if (!value) return null\n\n return {\n field: value.startsWith('-') ? value.slice(1) : value,\n ascending: !value.startsWith('-'),\n }\n}\n\nfunction mapList<T>(data: T[] | null, resource: SupabaseResourceConfig): T[] {\n if (!data) return []\n if (!resource.mapListItem) return data\n\n return data.map((item) => resource.mapListItem?.(item as Record<string, unknown>)) as T[]\n}\n\nexport function createSupabaseDataProvider(\n options: CreateSupabaseDataProviderOptions,\n): DataProvider {\n const defaultSelect = options.defaultSelect ?? '*'\n\n return {\n async list<T = Record<string, unknown>>(\n endpoint: string,\n params: DataProviderListParams = {},\n ): Promise<DataProviderListResponse<T>> {\n const resource = resolveResource(endpoint, options)\n const page = Math.max(Number(params.page ?? 1), 1)\n const pageSize = Math.max(Number(params.page_size ?? 20), 1)\n const from = (page - 1) * pageSize\n const to = from + pageSize - 1\n\n let query = options.client\n .from(resource.table)\n .select<T[]>(resource.select ?? defaultSelect, { count: 'exact' })\n\n query = applyFilters(query, params, resource)\n query = applySearch(query, params.search, resource.searchFields)\n\n const ordering = parseOrdering(params.ordering, resource.defaultOrdering)\n if (ordering) {\n query = query.order(ordering.field, { ascending: ordering.ascending })\n }\n\n const result = await query.range(from, to)\n if (result.error) normalizeSupabaseError(result.error)\n\n return {\n data: mapList(result.data, resource),\n page,\n page_size: pageSize,\n rows: result.count ?? result.data?.length ?? 0,\n extras: {},\n }\n },\n\n async get<T = Record<string, unknown>>(\n endpoint: string,\n id: string | number,\n _config?: DataProviderRequestConfig,\n ): Promise<DataProviderResponse<T>> {\n const resource = resolveResource(endpoint, options)\n const pk = resource.pk ?? 'id'\n const result = await options.client\n .from(resource.table)\n .select<T>(resource.select ?? defaultSelect)\n .eq(pk, id)\n .single()\n\n if (result.error) normalizeSupabaseError(result.error)\n return { data: result.data as T }\n },\n\n async create<T = Record<string, unknown>>(\n endpoint: string,\n payload: Record<string, unknown> | FormData,\n _config?: DataProviderRequestConfig,\n ): Promise<DataProviderResponse<T>> {\n const resource = resolveResource(endpoint, options)\n const plainPayload = assertPlainPayload(payload)\n const mappedPayload = resource.mapPayload\n ? resource.mapPayload(plainPayload, 'create')\n : plainPayload\n const result = await options.client\n .from(resource.table)\n .insert<T>(mappedPayload)\n .select(resource.select ?? defaultSelect)\n .single()\n\n if (result.error) normalizeSupabaseError(result.error)\n return { data: result.data as T }\n },\n\n async update<T = Record<string, unknown>>(\n endpoint: string,\n id: string | number,\n payload: Record<string, unknown> | FormData,\n _config?: DataProviderRequestConfig,\n ): Promise<DataProviderResponse<T>> {\n const resource = resolveResource(endpoint, options)\n const pk = resource.pk ?? 'id'\n const plainPayload = assertPlainPayload(payload)\n const mappedPayload = resource.mapPayload\n ? resource.mapPayload(plainPayload, 'update')\n : plainPayload\n const result = await options.client\n .from(resource.table)\n .update<T>(mappedPayload)\n .eq(pk, id)\n .select(resource.select ?? defaultSelect)\n .single()\n\n if (result.error) normalizeSupabaseError(result.error)\n return { data: result.data as T }\n },\n\n async delete(endpoint: string, id: string | number): Promise<void> {\n const resource = resolveResource(endpoint, options)\n const pk = resource.pk ?? 'id'\n const softDeletePayload =\n resource.softDelete === true\n ? { is_active: false }\n : typeof resource.softDelete === 'object'\n ? resource.softDelete\n : null\n\n const result = softDeletePayload\n ? await options.client.from(resource.table).update(softDeletePayload).eq(pk, id)\n : await options.client.from(resource.table).delete().eq(pk, id)\n\n if (result.error) normalizeSupabaseError(result.error)\n },\n }\n}\n"],"names":["normalizeListResponse","responseData","fallbackPage","fallbackPageSize","data","createAxiosDataProvider","axios","endpoint","params","response","id","config","payload","WPrimeVuePlugin","app","options","dataProvider","W_AXIOS_KEY","W_DATA_PROVIDER_KEY","W_CONFIG_KEY","WCrudView","WCrudFormDialog","WCrudColumnRenderer","WAutoCompleteFK","WMoneyInput","WTransferList","WTreeSelect","normalizeEndpoint","toResourceConfig","resource","createProviderError","message","status","assertPlainPayload","normalizeSupabaseError","error","resolveResource","resourceName","configuredResource","_a","_b","applyFilters","query","reservedKeys","filters","key","value","applySearch","search","searchFields","escapedSearch","expression","field","parseOrdering","ordering","fallback","mapList","item","createSupabaseDataProvider","defaultSelect","page","pageSize","from","to","result","_config","pk","plainPayload","mappedPayload","softDeletePayload"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/data-providers/axiosDataProvider.ts","../src/plugin.ts","../src/data-providers/supabaseDataProvider.ts"],"sourcesContent":["import type { AxiosInstance } from 'axios'\nimport type {\n DataProvider,\n DataProviderListParams,\n DataProviderListResponse,\n DataProviderRequestConfig,\n DataProviderResponse,\n} from '@/types/dataProvider'\n\nfunction normalizeListResponse<T>(\n responseData: unknown,\n fallbackPage: number,\n fallbackPageSize: number,\n): DataProviderListResponse<T> {\n const data = responseData as Record<string, unknown>\n\n if (Array.isArray(data.results)) {\n return {\n data: data.results as T[],\n page: (data.page as number) ?? fallbackPage,\n page_size: (data.page_size as number) ?? fallbackPageSize,\n rows: (data.count as number) ?? 0,\n extras: (data.extras as Record<string, unknown>) ?? {},\n }\n }\n\n if (Array.isArray(data.data)) {\n return {\n data: data.data as T[],\n page: (data.page as number) ?? fallbackPage,\n page_size: (data.page_size as number) ?? fallbackPageSize,\n rows: (data.rows as number) ?? 0,\n extras: (data.extras as Record<string, unknown>) ?? {},\n }\n }\n\n return {\n data: Array.isArray(responseData) ? (responseData as T[]) : [],\n page: fallbackPage,\n page_size: fallbackPageSize,\n rows: Array.isArray(responseData) ? responseData.length : 0,\n extras: {},\n }\n}\n\nexport function createAxiosDataProvider(axios: AxiosInstance): DataProvider {\n return {\n async list<T = Record<string, unknown>>(\n endpoint: string,\n params: DataProviderListParams = {},\n ): Promise<DataProviderListResponse<T>> {\n const response = await axios.get(endpoint, { params })\n return normalizeListResponse<T>(\n response.data,\n Number(params.page ?? 1),\n Number(params.page_size ?? 20),\n )\n },\n\n async get<T = Record<string, unknown>>(\n endpoint: string,\n id: string | number,\n config?: DataProviderRequestConfig,\n ): Promise<DataProviderResponse<T>> {\n const response = await axios.get<T>(`${endpoint}${id}/`, config)\n return { data: response.data }\n },\n\n async create<T = Record<string, unknown>>(\n endpoint: string,\n payload: Record<string, unknown> | FormData,\n config?: DataProviderRequestConfig,\n ): Promise<DataProviderResponse<T>> {\n const response = await axios.post<T>(endpoint, payload, config)\n return { data: response.data }\n },\n\n async update<T = Record<string, unknown>>(\n endpoint: string,\n id: string | number,\n payload: Record<string, unknown> | FormData,\n config?: DataProviderRequestConfig,\n ): Promise<DataProviderResponse<T>> {\n const response = await axios.patch<T>(`${endpoint}${id}/`, payload, config)\n return { data: response.data }\n },\n\n async delete(endpoint: string, id: string | number): Promise<void> {\n await axios.delete(`${endpoint}${id}/`)\n },\n }\n}\n","import type { App, Plugin } from 'vue'\nimport type { WPluginOptions, WPluginConfig } from './types/plugin'\nimport { W_AXIOS_KEY, W_CONFIG_KEY, W_DATA_PROVIDER_KEY } from './types/plugin'\nimport {\n WCrudView,\n WCrudFormDialog,\n WCrudColumnRenderer,\n WAutoCompleteFK,\n WMoneyInput,\n WTransferList,\n WTreeSelect,\n} from './components'\nimport { createAxiosDataProvider } from './data-providers/axiosDataProvider'\n\nexport const WPrimeVuePlugin: Plugin = {\n install(app: App, options: WPluginOptions) {\n if (!options?.axios && !options?.dataProvider) {\n throw new Error(\n '[wPrimeVueComponents] Informe \"axios\" ou \"dataProvider\" ao registrar o WPrimeVuePlugin.',\n )\n }\n\n const dataProvider = options.dataProvider ?? createAxiosDataProvider(options.axios!)\n\n const config: WPluginConfig = {\n axios: options.axios,\n dataProvider,\n defaultPageSize: options.defaultPageSize ?? 20,\n dateFormat: options.dateFormat ?? 'DD/MM/YYYY',\n dateTimeFormat: options.dateTimeFormat ?? 'DD/MM/YYYY HH:mm',\n locale: options.locale ?? 'pt-BR',\n currency: options.currency ?? 'BRL',\n }\n\n if (options.axios) {\n app.provide(W_AXIOS_KEY, options.axios)\n }\n app.provide(W_DATA_PROVIDER_KEY, dataProvider)\n app.provide(W_CONFIG_KEY, config)\n\n if (options.registerComponents !== false) {\n app.component('WCrudView', WCrudView)\n app.component('WCrudFormDialog', WCrudFormDialog)\n app.component('WCrudColumnRenderer', WCrudColumnRenderer)\n app.component('WAutoCompleteFK', WAutoCompleteFK)\n app.component('WMoneyInput', WMoneyInput)\n app.component('WTransferList', WTransferList)\n app.component('WTreeSelect', WTreeSelect)\n }\n },\n}\n","import type {\n DataProvider,\n DataProviderListParams,\n DataProviderListResponse,\n DataProviderRequestConfig,\n DataProviderResponse,\n} from '@/types/dataProvider'\n\ntype SupabaseResult<T> = {\n data: T | null\n error: {\n message: string\n code?: string\n details?: string\n hint?: string\n } | null\n count?: number | null\n}\n\ntype SupabaseFilterBuilder<T> = PromiseLike<SupabaseResult<T>> & {\n select(\n columns?: string,\n options?: { count?: 'exact' | 'planned' | 'estimated' },\n ): SupabaseFilterBuilder<T>\n eq(column: string, value: unknown): SupabaseFilterBuilder<T>\n ilike(column: string, pattern: string): SupabaseFilterBuilder<T>\n or(filters: string): SupabaseFilterBuilder<T>\n order(column: string, options?: { ascending?: boolean }): SupabaseFilterBuilder<T>\n range(from: number, to: number): SupabaseFilterBuilder<T>\n single(): Promise<SupabaseResult<T>>\n}\n\ntype SupabaseTable = {\n select<T = unknown>(\n columns?: string,\n options?: { count?: 'exact' | 'planned' | 'estimated' },\n ): SupabaseFilterBuilder<T>\n insert<T = unknown>(payload: unknown): SupabaseFilterBuilder<T>\n update<T = unknown>(payload: unknown): SupabaseFilterBuilder<T>\n delete<T = unknown>(): SupabaseFilterBuilder<T>\n}\n\nexport interface SupabaseDataProviderClient {\n from(table: string): SupabaseTable\n}\n\nexport interface SupabaseResourceConfig {\n table: string\n pk?: string\n select?: string\n searchFields?: string[]\n defaultOrdering?: string\n defaultFilters?: Record<string, unknown>\n softDelete?: boolean | Record<string, unknown>\n mapListItem?: (item: Record<string, unknown>) => Record<string, unknown>\n mapPayload?: (\n payload: Record<string, unknown>,\n operation: 'create' | 'update',\n ) => Record<string, unknown>\n}\n\nexport interface CreateSupabaseDataProviderOptions {\n client: SupabaseDataProviderClient\n resources?: Record<string, SupabaseResourceConfig | string>\n defaultSelect?: string\n allowedTables?: string[]\n}\n\nfunction normalizeEndpoint(endpoint: string): string {\n return endpoint\n .split('?')[0]\n .replace(/^\\/+|\\/+$/g, '')\n .replace(/^api\\/v\\d+\\//, '')\n}\n\nfunction toResourceConfig(resource: SupabaseResourceConfig | string): SupabaseResourceConfig {\n return typeof resource === 'string' ? { table: resource } : resource\n}\n\nfunction createProviderError(message: string, status = 400) {\n return {\n response: {\n status,\n data: { detail: message },\n },\n message,\n }\n}\n\nfunction assertPlainPayload(payload: Record<string, unknown> | FormData): Record<string, unknown> {\n if (payload instanceof FormData) {\n throw createProviderError(\n 'SupabaseDataProvider nao envia FormData diretamente. Faça upload do arquivo no Storage e envie a URL/caminho no payload.',\n )\n }\n\n return payload\n}\n\nfunction normalizeSupabaseError(error: SupabaseResult<unknown>['error']): never {\n throw {\n response: {\n data: {\n detail: error?.message ?? 'Erro ao consultar Supabase',\n code: error?.code,\n details: error?.details,\n hint: error?.hint,\n },\n },\n message: error?.message ?? 'Erro ao consultar Supabase',\n }\n}\n\nfunction resolveResource(\n endpoint: string,\n options: CreateSupabaseDataProviderOptions,\n): SupabaseResourceConfig {\n const resourceName = normalizeEndpoint(endpoint)\n const configuredResource = options.resources?.[resourceName]\n\n if (configuredResource) {\n return toResourceConfig(configuredResource)\n }\n\n if (options.allowedTables?.includes(resourceName)) {\n return { table: resourceName }\n }\n\n throw createProviderError(`Recurso Supabase nao registrado para o endpoint \"${endpoint}\".`, 404)\n}\n\nfunction applyFilters<T>(\n query: SupabaseFilterBuilder<T>,\n params: DataProviderListParams,\n resource: SupabaseResourceConfig,\n): SupabaseFilterBuilder<T> {\n const reservedKeys = new Set(['page', 'page_size', 'search', 'ordering'])\n const filters = { ...resource.defaultFilters, ...params }\n\n for (const [key, value] of Object.entries(filters)) {\n if (reservedKeys.has(key) || value === null || value === undefined || value === '') {\n continue\n }\n query = query.eq(key, value)\n }\n\n return query\n}\n\nfunction applySearch<T>(\n query: SupabaseFilterBuilder<T>,\n search: unknown,\n searchFields?: string[],\n): SupabaseFilterBuilder<T> {\n if (typeof search !== 'string' || !search.trim() || !searchFields?.length) {\n return query\n }\n\n const escapedSearch = search.trim().replace(/,/g, '\\\\,')\n const expression = searchFields.map((field) => `${field}.ilike.%${escapedSearch}%`).join(',')\n\n return query.or(expression)\n}\n\nfunction parseOrdering(ordering: unknown, fallback?: string) {\n const value = typeof ordering === 'string' && ordering ? ordering : fallback\n if (!value) return null\n\n return {\n field: value.startsWith('-') ? value.slice(1) : value,\n ascending: !value.startsWith('-'),\n }\n}\n\nfunction mapList<T>(data: T[] | null, resource: SupabaseResourceConfig): T[] {\n if (!data) return []\n if (!resource.mapListItem) return data\n\n return data.map((item) => resource.mapListItem?.(item as Record<string, unknown>)) as T[]\n}\n\nexport function createSupabaseDataProvider(\n options: CreateSupabaseDataProviderOptions,\n): DataProvider {\n const defaultSelect = options.defaultSelect ?? '*'\n\n return {\n async list<T = Record<string, unknown>>(\n endpoint: string,\n params: DataProviderListParams = {},\n ): Promise<DataProviderListResponse<T>> {\n const resource = resolveResource(endpoint, options)\n const page = Math.max(Number(params.page ?? 1), 1)\n const pageSize = Math.max(Number(params.page_size ?? 20), 1)\n const from = (page - 1) * pageSize\n const to = from + pageSize - 1\n\n let query = options.client\n .from(resource.table)\n .select<T[]>(resource.select ?? defaultSelect, { count: 'exact' })\n\n query = applyFilters(query, params, resource)\n query = applySearch(query, params.search, resource.searchFields)\n\n const ordering = parseOrdering(params.ordering, resource.defaultOrdering)\n if (ordering) {\n query = query.order(ordering.field, { ascending: ordering.ascending })\n }\n\n const result = await query.range(from, to)\n if (result.error) normalizeSupabaseError(result.error)\n\n return {\n data: mapList(result.data, resource),\n page,\n page_size: pageSize,\n rows: result.count ?? result.data?.length ?? 0,\n extras: {},\n }\n },\n\n async get<T = Record<string, unknown>>(\n endpoint: string,\n id: string | number,\n _config?: DataProviderRequestConfig,\n ): Promise<DataProviderResponse<T>> {\n const resource = resolveResource(endpoint, options)\n const pk = resource.pk ?? 'id'\n const result = await options.client\n .from(resource.table)\n .select<T>(resource.select ?? defaultSelect)\n .eq(pk, id)\n .single()\n\n if (result.error) normalizeSupabaseError(result.error)\n return { data: result.data as T }\n },\n\n async create<T = Record<string, unknown>>(\n endpoint: string,\n payload: Record<string, unknown> | FormData,\n _config?: DataProviderRequestConfig,\n ): Promise<DataProviderResponse<T>> {\n const resource = resolveResource(endpoint, options)\n const plainPayload = assertPlainPayload(payload)\n const mappedPayload = resource.mapPayload\n ? resource.mapPayload(plainPayload, 'create')\n : plainPayload\n const result = await options.client\n .from(resource.table)\n .insert<T>(mappedPayload)\n .select(resource.select ?? defaultSelect)\n .single()\n\n if (result.error) normalizeSupabaseError(result.error)\n return { data: result.data as T }\n },\n\n async update<T = Record<string, unknown>>(\n endpoint: string,\n id: string | number,\n payload: Record<string, unknown> | FormData,\n _config?: DataProviderRequestConfig,\n ): Promise<DataProviderResponse<T>> {\n const resource = resolveResource(endpoint, options)\n const pk = resource.pk ?? 'id'\n const plainPayload = assertPlainPayload(payload)\n const mappedPayload = resource.mapPayload\n ? resource.mapPayload(plainPayload, 'update')\n : plainPayload\n const result = await options.client\n .from(resource.table)\n .update<T>(mappedPayload)\n .eq(pk, id)\n .select(resource.select ?? defaultSelect)\n .single()\n\n if (result.error) normalizeSupabaseError(result.error)\n return { data: result.data as T }\n },\n\n async delete(endpoint: string, id: string | number): Promise<void> {\n const resource = resolveResource(endpoint, options)\n const pk = resource.pk ?? 'id'\n const softDeletePayload =\n resource.softDelete === true\n ? { is_active: false }\n : typeof resource.softDelete === 'object'\n ? resource.softDelete\n : null\n\n const result = softDeletePayload\n ? await options.client.from(resource.table).update(softDeletePayload).eq(pk, id)\n : await options.client.from(resource.table).delete().eq(pk, id)\n\n if (result.error) normalizeSupabaseError(result.error)\n },\n }\n}\n"],"names":["normalizeListResponse","responseData","fallbackPage","fallbackPageSize","data","createAxiosDataProvider","axios","endpoint","params","response","id","config","payload","WPrimeVuePlugin","app","options","dataProvider","W_AXIOS_KEY","W_DATA_PROVIDER_KEY","W_CONFIG_KEY","WCrudView","WCrudFormDialog","WCrudColumnRenderer","WAutoCompleteFK","WMoneyInput","WTransferList","WTreeSelect","normalizeEndpoint","toResourceConfig","resource","createProviderError","message","status","assertPlainPayload","normalizeSupabaseError","error","resolveResource","resourceName","configuredResource","_a","_b","applyFilters","query","reservedKeys","filters","key","value","applySearch","search","searchFields","escapedSearch","expression","field","parseOrdering","ordering","fallback","mapList","item","createSupabaseDataProvider","defaultSelect","page","pageSize","from","to","result","_config","pk","plainPayload","mappedPayload","softDeletePayload"],"mappings":"iUASA,SAASA,EACPC,EACAC,EACAC,EAC6B,CAC7B,MAAMC,EAAOH,EAEb,OAAI,MAAM,QAAQG,EAAK,OAAO,EACrB,CACL,KAAMA,EAAK,QACX,KAAOA,EAAK,MAAmBF,EAC/B,UAAYE,EAAK,WAAwBD,EACzC,KAAOC,EAAK,OAAoB,EAChC,OAASA,EAAK,QAAsC,CAAA,CAAC,EAIrD,MAAM,QAAQA,EAAK,IAAI,EAClB,CACL,KAAMA,EAAK,KACX,KAAOA,EAAK,MAAmBF,EAC/B,UAAYE,EAAK,WAAwBD,EACzC,KAAOC,EAAK,MAAmB,EAC/B,OAASA,EAAK,QAAsC,CAAA,CAAC,EAIlD,CACL,KAAM,MAAM,QAAQH,CAAY,EAAKA,EAAuB,CAAA,EAC5D,KAAMC,EACN,UAAWC,EACX,KAAM,MAAM,QAAQF,CAAY,EAAIA,EAAa,OAAS,EAC1D,OAAQ,CAAA,CAAC,CAEb,CAEO,SAASI,EAAwBC,EAAoC,CAC1E,MAAO,CACL,MAAM,KACJC,EACAC,EAAiC,GACK,CACtC,MAAMC,EAAW,MAAMH,EAAM,IAAIC,EAAU,CAAE,OAAAC,EAAQ,EACrD,OAAOR,EACLS,EAAS,KACT,OAAOD,EAAO,MAAQ,CAAC,EACvB,OAAOA,EAAO,WAAa,EAAE,CAAA,CAEjC,EAEA,MAAM,IACJD,EACAG,EACAC,EACkC,CAElC,MAAO,CAAE,MADQ,MAAML,EAAM,IAAO,GAAGC,CAAQ,GAAGG,CAAE,IAAKC,CAAM,GACvC,IAAA,CAC1B,EAEA,MAAM,OACJJ,EACAK,EACAD,EACkC,CAElC,MAAO,CAAE,MADQ,MAAML,EAAM,KAAQC,EAAUK,EAASD,CAAM,GACtC,IAAA,CAC1B,EAEA,MAAM,OACJJ,EACAG,EACAE,EACAD,EACkC,CAElC,MAAO,CAAE,MADQ,MAAML,EAAM,MAAS,GAAGC,CAAQ,GAAGG,CAAE,IAAKE,EAASD,CAAM,GAClD,IAAA,CAC1B,EAEA,MAAM,OAAOJ,EAAkBG,EAAoC,CACjE,MAAMJ,EAAM,OAAO,GAAGC,CAAQ,GAAGG,CAAE,GAAG,CACxC,CAAA,CAEJ,CC7EO,MAAMG,EAA0B,CACrC,QAAQC,EAAUC,EAAyB,CACzC,GAAI,EAACA,GAAA,MAAAA,EAAS,QAAS,EAACA,GAAA,MAAAA,EAAS,cAC/B,MAAM,IAAI,MACR,yFAAA,EAIJ,MAAMC,EAAeD,EAAQ,cAAgBV,EAAwBU,EAAQ,KAAM,EAE7EJ,EAAwB,CAC5B,MAAOI,EAAQ,MACf,aAAAC,EACA,gBAAiBD,EAAQ,iBAAmB,GAC5C,WAAYA,EAAQ,YAAc,aAClC,eAAgBA,EAAQ,gBAAkB,mBAC1C,OAAQA,EAAQ,QAAU,QAC1B,SAAUA,EAAQ,UAAY,KAAA,EAG5BA,EAAQ,OACVD,EAAI,QAAQG,cAAaF,EAAQ,KAAK,EAExCD,EAAI,QAAQI,EAAAA,oBAAqBF,CAAY,EAC7CF,EAAI,QAAQK,EAAAA,aAAcR,CAAM,EAE5BI,EAAQ,qBAAuB,KACjCD,EAAI,UAAU,YAAaM,aAAS,EACpCN,EAAI,UAAU,kBAAmBO,aAAe,EAChDP,EAAI,UAAU,sBAAuBQ,aAAmB,EACxDR,EAAI,UAAU,kBAAmBS,aAAe,EAChDT,EAAI,UAAU,cAAeU,cAAW,EACxCV,EAAI,UAAU,gBAAiBW,cAAa,EAC5CX,EAAI,UAAU,cAAeY,cAAW,EAE5C,CACF,ECkBA,SAASC,EAAkBpB,EAA0B,CACnD,OAAOA,EACJ,MAAM,GAAG,EAAE,CAAC,EACZ,QAAQ,aAAc,EAAE,EACxB,QAAQ,eAAgB,EAAE,CAC/B,CAEA,SAASqB,EAAiBC,EAAmE,CAC3F,OAAO,OAAOA,GAAa,SAAW,CAAE,MAAOA,GAAaA,CAC9D,CAEA,SAASC,EAAoBC,EAAiBC,EAAS,IAAK,CAC1D,MAAO,CACL,SAAU,CACR,OAAAA,EACA,KAAM,CAAE,OAAQD,CAAA,CAAQ,EAE1B,QAAAA,CAAA,CAEJ,CAEA,SAASE,EAAmBrB,EAAsE,CAChG,GAAIA,aAAmB,SACrB,MAAMkB,EACJ,0HAAA,EAIJ,OAAOlB,CACT,CAEA,SAASsB,EAAuBC,EAAgD,CAC9E,KAAM,CACJ,SAAU,CACR,KAAM,CACJ,QAAQA,GAAA,YAAAA,EAAO,UAAW,6BAC1B,KAAMA,GAAA,YAAAA,EAAO,KACb,QAASA,GAAA,YAAAA,EAAO,QAChB,KAAMA,GAAA,YAAAA,EAAO,IAAA,CACf,EAEF,SAASA,GAAA,YAAAA,EAAO,UAAW,4BAAA,CAE/B,CAEA,SAASC,EACP7B,EACAQ,EACwB,SACxB,MAAMsB,EAAeV,EAAkBpB,CAAQ,EACzC+B,GAAqBC,EAAAxB,EAAQ,YAAR,YAAAwB,EAAoBF,GAE/C,GAAIC,EACF,OAAOV,EAAiBU,CAAkB,EAG5C,IAAIE,EAAAzB,EAAQ,gBAAR,MAAAyB,EAAuB,SAASH,GAClC,MAAO,CAAE,MAAOA,CAAA,EAGlB,MAAMP,EAAoB,oDAAoDvB,CAAQ,KAAM,GAAG,CACjG,CAEA,SAASkC,EACPC,EACAlC,EACAqB,EAC0B,CAC1B,MAAMc,MAAmB,IAAI,CAAC,OAAQ,YAAa,SAAU,UAAU,CAAC,EAClEC,EAAU,CAAE,GAAGf,EAAS,eAAgB,GAAGrB,CAAA,EAEjD,SAAW,CAACqC,EAAKC,CAAK,IAAK,OAAO,QAAQF,CAAO,EAC3CD,EAAa,IAAIE,CAAG,GAAKC,IAAU,MAAQA,IAAU,QAAaA,IAAU,KAGhFJ,EAAQA,EAAM,GAAGG,EAAKC,CAAK,GAG7B,OAAOJ,CACT,CAEA,SAASK,EACPL,EACAM,EACAC,EAC0B,CAC1B,GAAI,OAAOD,GAAW,UAAY,CAACA,EAAO,QAAU,EAACC,GAAA,MAAAA,EAAc,QACjE,OAAOP,EAGT,MAAMQ,EAAgBF,EAAO,KAAA,EAAO,QAAQ,KAAM,KAAK,EACjDG,EAAaF,EAAa,IAAKG,GAAU,GAAGA,CAAK,WAAWF,CAAa,GAAG,EAAE,KAAK,GAAG,EAE5F,OAAOR,EAAM,GAAGS,CAAU,CAC5B,CAEA,SAASE,EAAcC,EAAmBC,EAAmB,CAC3D,MAAMT,EAAQ,OAAOQ,GAAa,UAAYA,EAAWA,EAAWC,EACpE,OAAKT,EAEE,CACL,MAAOA,EAAM,WAAW,GAAG,EAAIA,EAAM,MAAM,CAAC,EAAIA,EAChD,UAAW,CAACA,EAAM,WAAW,GAAG,CAAA,EAJf,IAMrB,CAEA,SAASU,EAAWpD,EAAkByB,EAAuC,CAC3E,OAAKzB,EACAyB,EAAS,YAEPzB,EAAK,IAAKqD,UAAS,OAAAlB,EAAAV,EAAS,cAAT,YAAAU,EAAA,KAAAV,EAAuB4B,GAAgC,EAF/CrD,EADhB,CAAA,CAIpB,CAEO,SAASsD,EACd3C,EACc,CACd,MAAM4C,EAAgB5C,EAAQ,eAAiB,IAE/C,MAAO,CACL,MAAM,KACJR,EACAC,EAAiC,GACK,OACtC,MAAMqB,EAAWO,EAAgB7B,EAAUQ,CAAO,EAC5C6C,EAAO,KAAK,IAAI,OAAOpD,EAAO,MAAQ,CAAC,EAAG,CAAC,EAC3CqD,EAAW,KAAK,IAAI,OAAOrD,EAAO,WAAa,EAAE,EAAG,CAAC,EACrDsD,GAAQF,EAAO,GAAKC,EACpBE,EAAKD,EAAOD,EAAW,EAE7B,IAAInB,EAAQ3B,EAAQ,OACjB,KAAKc,EAAS,KAAK,EACnB,OAAYA,EAAS,QAAU8B,EAAe,CAAE,MAAO,QAAS,EAEnEjB,EAAQD,EAAaC,EAAOlC,EAAQqB,CAAQ,EAC5Ca,EAAQK,EAAYL,EAAOlC,EAAO,OAAQqB,EAAS,YAAY,EAE/D,MAAMyB,EAAWD,EAAc7C,EAAO,SAAUqB,EAAS,eAAe,EACpEyB,IACFZ,EAAQA,EAAM,MAAMY,EAAS,MAAO,CAAE,UAAWA,EAAS,UAAW,GAGvE,MAAMU,EAAS,MAAMtB,EAAM,MAAMoB,EAAMC,CAAE,EACzC,OAAIC,EAAO,OAAO9B,EAAuB8B,EAAO,KAAK,EAE9C,CACL,KAAMR,EAAQQ,EAAO,KAAMnC,CAAQ,EACnC,KAAA+B,EACA,UAAWC,EACX,KAAMG,EAAO,SAASzB,EAAAyB,EAAO,OAAP,YAAAzB,EAAa,SAAU,EAC7C,OAAQ,CAAA,CAAC,CAEb,EAEA,MAAM,IACJhC,EACAG,EACAuD,EACkC,CAClC,MAAMpC,EAAWO,EAAgB7B,EAAUQ,CAAO,EAC5CmD,EAAKrC,EAAS,IAAM,KACpBmC,EAAS,MAAMjD,EAAQ,OAC1B,KAAKc,EAAS,KAAK,EACnB,OAAUA,EAAS,QAAU8B,CAAa,EAC1C,GAAGO,EAAIxD,CAAE,EACT,OAAA,EAEH,OAAIsD,EAAO,OAAO9B,EAAuB8B,EAAO,KAAK,EAC9C,CAAE,KAAMA,EAAO,IAAA,CACxB,EAEA,MAAM,OACJzD,EACAK,EACAqD,EACkC,CAClC,MAAMpC,EAAWO,EAAgB7B,EAAUQ,CAAO,EAC5CoD,EAAelC,EAAmBrB,CAAO,EACzCwD,EAAgBvC,EAAS,WAC3BA,EAAS,WAAWsC,EAAc,QAAQ,EAC1CA,EACEH,EAAS,MAAMjD,EAAQ,OAC1B,KAAKc,EAAS,KAAK,EACnB,OAAUuC,CAAa,EACvB,OAAOvC,EAAS,QAAU8B,CAAa,EACvC,OAAA,EAEH,OAAIK,EAAO,OAAO9B,EAAuB8B,EAAO,KAAK,EAC9C,CAAE,KAAMA,EAAO,IAAA,CACxB,EAEA,MAAM,OACJzD,EACAG,EACAE,EACAqD,EACkC,CAClC,MAAMpC,EAAWO,EAAgB7B,EAAUQ,CAAO,EAC5CmD,EAAKrC,EAAS,IAAM,KACpBsC,EAAelC,EAAmBrB,CAAO,EACzCwD,EAAgBvC,EAAS,WAC3BA,EAAS,WAAWsC,EAAc,QAAQ,EAC1CA,EACEH,EAAS,MAAMjD,EAAQ,OAC1B,KAAKc,EAAS,KAAK,EACnB,OAAUuC,CAAa,EACvB,GAAGF,EAAIxD,CAAE,EACT,OAAOmB,EAAS,QAAU8B,CAAa,EACvC,OAAA,EAEH,OAAIK,EAAO,OAAO9B,EAAuB8B,EAAO,KAAK,EAC9C,CAAE,KAAMA,EAAO,IAAA,CACxB,EAEA,MAAM,OAAOzD,EAAkBG,EAAoC,CACjE,MAAMmB,EAAWO,EAAgB7B,EAAUQ,CAAO,EAC5CmD,EAAKrC,EAAS,IAAM,KACpBwC,EACJxC,EAAS,aAAe,GACpB,CAAE,UAAW,IACb,OAAOA,EAAS,YAAe,SAC7BA,EAAS,WACT,KAEFmC,EAASK,EACX,MAAMtD,EAAQ,OAAO,KAAKc,EAAS,KAAK,EAAE,OAAOwC,CAAiB,EAAE,GAAGH,EAAIxD,CAAE,EAC7E,MAAMK,EAAQ,OAAO,KAAKc,EAAS,KAAK,EAAE,OAAA,EAAS,GAAGqC,EAAIxD,CAAE,EAE5DsD,EAAO,OAAO9B,EAAuB8B,EAAO,KAAK,CACvD,CAAA,CAEJ"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { WPrimeVuePlugin } from './plugin';
2
- export { WCrudView, WCrudFormDialog, WCrudColumnRenderer, WEditableTable, WCrudSubview, WAutoCompleteFK, WFormRenderer, WDatePicker, WDateRange, WFileUpload, WImageCropper, WMoneyInput, WTransferList, WTreeSelect, WStatusTag, WPageHeader, WDetailHeader, WEmptyState, WInfoCard, WKpiCard, WKpiGrid, WSectionHeader, WFormSection, WActionBar, WProgressFlow, WStepFlow, WStepSection, WCheckList, WMapSelect, WMarkdownView, WMarkdownEditor, WMarkdownToc, WTabBar, WTabNav, WTabViewport, WKanbanBoard, } from './components';
2
+ export { WCrudView, WCrudFormDialog, WCrudColumnRenderer, WEditableTable, WCrudSubview, WAutoCompleteFK, WFormRenderer, WDatePicker, WDateRange, WFileUpload, WImageCropper, WMoneyInput, WTransferList, WTreeSelect, WStatusTag, WPageHeader, WDetailHeader, WEmptyState, WInfoCard, WKpiCard, WKpiGrid, WSectionHeader, WFormSection, WActionBar, WProgressFlow, WStepFlow, WStepSection, WCheckList, WMapSelect, WMarkdownView, WMarkdownEditor, WMarkdownToc, WDialog, WTabBar, WTabNav, WTabViewport, WKanbanBoard, } from './components';
3
3
  export { useCrudManager, useSubviewCrud, useApi, useAppToast, useAppConfirm, useApiError, extractApiError, useFormatters, useDateInput, useRouteTabs, } from './composables';
4
4
  export type { DateValueFormat } from './composables';
5
5
  export { createAxiosDataProvider, createSupabaseDataProvider } from './data-providers';
package/dist/index.js CHANGED
@@ -1,10 +1,10 @@
1
- import { W as _, b as y, a as w } from "./plugin-BaBF7c-e.js";
2
- import { f as b, d as S, c as A, a as C, w as v, G as P, H as D } from "./WKanbanBoard.vue_vue_type_script_setup_true_lang-Bmqt_P_5.js";
3
- import { _ as O, b as B, e as H, g as N, h as V, i as q, j, k as U, l as G, m as J, n as X, W as Q, o as Z, p as ee, q as ae, r as te, s as se, t as re, u as ne, v as oe, x as ie, y as ce, z as ue, A as de, B as le, C as fe, D as me, E as pe, F as ge, I as We, J as _e, K as ye, L as we, M as be, N as Se, O as Ae } from "./WKanbanBoard.vue_vue_type_script_setup_true_lang-Bmqt_P_5.js";
4
- import { u as ve, a as Pe, b as De, c as Fe } from "./useRouteTabs-63cZtRr3.js";
5
- import { e as xe, u as Ee, a as he, b as Re, c as $e, f as ze } from "./useFormKeyboardNav-CLCEo_O5.js";
6
- import { D as Me } from "./labels-B28P8JNB.js";
7
- import { W as Ie, u as Ke } from "./routeTabs-NnjycX9L.js";
1
+ import { W as _, b as y, a as w } from "./plugin-CIBvOgwG.js";
2
+ import { c as O, u as B } from "./plugin-CIBvOgwG.js";
3
+ import { f as b, d as S, c as A, a as C, x as P, H as v, I as D } from "./WKanbanBoard.vue_vue_type_script_setup_true_lang-DvyxNL4O.js";
4
+ import { _ as N, b as V, e as q, g as j, h as U, i as G, j as J, k as X, l as Q, m as Z, n as ee, o as ae, W as te, p as se, q as re, r as ne, s as oe, t as ie, u as ce, v as ue, w as le, y as de, z as fe, A as me, B as pe, C as ge, D as We, E as _e, F as ye, G as we, J as be, K as Se, L as Ae, M as Ce, N as Pe, O as ve, P as De } from "./WKanbanBoard.vue_vue_type_script_setup_true_lang-DvyxNL4O.js";
5
+ import { u as Te, a as xe, b as Ee, c as he } from "./useRouteTabs-CSo1j_ji.js";
6
+ import { e as $e, u as ze, a as Le, b as Me, c as Ye, f as Ie } from "./useFormKeyboardNav-BrKZrHq9.js";
7
+ import { D as ke } from "./labels-B28P8JNB.js";
8
8
  function F(e, a, t) {
9
9
  const s = e;
10
10
  return Array.isArray(s.results) ? {
@@ -66,7 +66,7 @@ const Y = {
66
66
  locale: a.locale ?? "pt-BR",
67
67
  currency: a.currency ?? "BRL"
68
68
  };
69
- a.axios && e.provide(_, a.axios), e.provide(y, t), e.provide(w, s), a.registerComponents !== !1 && (e.component("WCrudView", b), e.component("WCrudFormDialog", S), e.component("WCrudColumnRenderer", A), e.component("WAutoCompleteFK", C), e.component("WMoneyInput", v), e.component("WTransferList", P), e.component("WTreeSelect", D));
69
+ a.axios && e.provide(_, a.axios), e.provide(y, t), e.provide(w, s), a.registerComponents !== !1 && (e.component("WCrudView", b), e.component("WCrudFormDialog", S), e.component("WCrudColumnRenderer", A), e.component("WAutoCompleteFK", C), e.component("WMoneyInput", P), e.component("WTransferList", v), e.component("WTreeSelect", D));
70
70
  }
71
71
  };
72
72
  function x(e) {
@@ -146,14 +146,14 @@ function I(e) {
146
146
  const r = m(t, e), n = Math.max(Number(s.page ?? 1), 1), o = Math.max(Number(s.page_size ?? 20), 1), i = (n - 1) * o, u = i + o - 1;
147
147
  let c = e.client.from(r.table).select(r.select ?? a, { count: "exact" });
148
148
  c = h(c, s, r), c = R(c, s.search, r.searchFields);
149
- const d = $(s.ordering, r.defaultOrdering);
150
- d && (c = c.order(d.field, { ascending: d.ascending }));
151
- const l = await c.range(i, u);
152
- return l.error && f(l.error), {
153
- data: z(l.data, r),
149
+ const l = $(s.ordering, r.defaultOrdering);
150
+ l && (c = c.order(l.field, { ascending: l.ascending }));
151
+ const d = await c.range(i, u);
152
+ return d.error && f(d.error), {
153
+ data: z(d.data, r),
154
154
  page: n,
155
155
  page_size: o,
156
- rows: l.count ?? ((p = l.data) == null ? void 0 : p.length) ?? 0,
156
+ rows: d.count ?? ((p = d.data) == null ? void 0 : p.length) ?? 0,
157
157
  extras: {}
158
158
  };
159
159
  },
@@ -166,8 +166,8 @@ function I(e) {
166
166
  return u.error && f(u.error), { data: u.data };
167
167
  },
168
168
  async update(t, s, r, n) {
169
- const o = m(t, e), i = o.pk ?? "id", u = g(r), c = o.mapPayload ? o.mapPayload(u, "update") : u, d = await e.client.from(o.table).update(c).eq(i, s).select(o.select ?? a).single();
170
- return d.error && f(d.error), { data: d.data };
169
+ const o = m(t, e), i = o.pk ?? "id", u = g(r), c = o.mapPayload ? o.mapPayload(u, "update") : u, l = await e.client.from(o.table).update(c).eq(i, s).select(o.select ?? a).single();
170
+ return l.error && f(l.error), { data: l.data };
171
171
  },
172
172
  async delete(t, s) {
173
173
  const r = m(t, e), n = r.pk ?? "id", o = r.softDelete === !0 ? { is_active: !1 } : typeof r.softDelete == "object" ? r.softDelete : null, i = o ? await e.client.from(r.table).update(o).eq(n, s) : await e.client.from(r.table).delete().eq(n, s);
@@ -176,67 +176,68 @@ function I(e) {
176
176
  };
177
177
  }
178
178
  export {
179
- Me as DEFAULT_CRUD_LABELS,
180
- O as WActionBar,
179
+ ke as DEFAULT_CRUD_LABELS,
180
+ N as WActionBar,
181
181
  C as WAutoCompleteFK,
182
- B as WCheckList,
182
+ V as WCheckList,
183
183
  A as WCrudColumnRenderer,
184
184
  S as WCrudFormDialog,
185
- H as WCrudSubview,
185
+ q as WCrudSubview,
186
186
  b as WCrudView,
187
- N as WDatePicker,
188
- V as WDateRange,
189
- q as WDetailHeader,
190
- j as WEditableTable,
191
- U as WEmptyState,
192
- G as WFileUpload,
193
- J as WFormRenderer,
194
- X as WFormSection,
195
- Q as WImageCropper,
196
- Z as WInfoCard,
197
- ee as WKanbanBoard,
198
- ae as WKpiCard,
199
- te as WKpiGrid,
200
- se as WMapSelect,
201
- re as WMarkdownEditor,
202
- ne as WMarkdownToc,
203
- oe as WMarkdownView,
204
- v as WMoneyInput,
205
- ie as WPageHeader,
187
+ j as WDatePicker,
188
+ U as WDateRange,
189
+ G as WDetailHeader,
190
+ J as WDialog,
191
+ X as WEditableTable,
192
+ Q as WEmptyState,
193
+ Z as WFileUpload,
194
+ ee as WFormRenderer,
195
+ ae as WFormSection,
196
+ te as WImageCropper,
197
+ se as WInfoCard,
198
+ re as WKanbanBoard,
199
+ ne as WKpiCard,
200
+ oe as WKpiGrid,
201
+ ie as WMapSelect,
202
+ ce as WMarkdownEditor,
203
+ ue as WMarkdownToc,
204
+ le as WMarkdownView,
205
+ P as WMoneyInput,
206
+ de as WPageHeader,
206
207
  Y as WPrimeVuePlugin,
207
- ce as WProgressFlow,
208
- ue as WSectionHeader,
209
- de as WStatusTag,
210
- le as WStepFlow,
211
- fe as WStepSection,
212
- me as WTabBar,
213
- pe as WTabNav,
214
- ge as WTabViewport,
215
- P as WTransferList,
208
+ fe as WProgressFlow,
209
+ me as WSectionHeader,
210
+ pe as WStatusTag,
211
+ ge as WStepFlow,
212
+ We as WStepSection,
213
+ _e as WTabBar,
214
+ ye as WTabNav,
215
+ we as WTabViewport,
216
+ v as WTransferList,
216
217
  D as WTreeSelect,
217
218
  _ as W_AXIOS_KEY,
218
219
  w as W_CONFIG_KEY,
219
220
  y as W_DATA_PROVIDER_KEY,
220
- We as W_STEP_FLOW_KEY,
221
- Ie as W_TAB_HOST_KEY,
221
+ be as W_STEP_FLOW_KEY,
222
+ O as W_TAB_HOST_KEY,
222
223
  T as createAxiosDataProvider,
223
224
  I as createSupabaseDataProvider,
224
- _e as downloadCsv,
225
- xe as extractApiError,
226
- ye as mapApiFieldToColumnDef,
227
- we as mapApiFieldToFieldDef,
228
- be as mapApiFieldsToColumnDefs,
229
- Se as mapApiFieldsToFieldDefs,
230
- Ae as toCsv,
231
- ve as useApi,
232
- Ee as useApiError,
233
- he as useAppConfirm,
234
- Re as useAppToast,
235
- Pe as useCrudManager,
236
- $e as useDateInput,
237
- ze as useFormatters,
238
- De as useRouteTabs,
239
- Fe as useSubviewCrud,
240
- Ke as useTabHost
225
+ Se as downloadCsv,
226
+ $e as extractApiError,
227
+ Ae as mapApiFieldToColumnDef,
228
+ Ce as mapApiFieldToFieldDef,
229
+ Pe as mapApiFieldsToColumnDefs,
230
+ ve as mapApiFieldsToFieldDefs,
231
+ De as toCsv,
232
+ Te as useApi,
233
+ ze as useApiError,
234
+ Le as useAppConfirm,
235
+ Me as useAppToast,
236
+ xe as useCrudManager,
237
+ Ye as useDateInput,
238
+ Ie as useFormatters,
239
+ Ee as useRouteTabs,
240
+ he as useSubviewCrud,
241
+ B as useTabHost
241
242
  };
242
243
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,14 @@
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
@@ -0,0 +1 @@
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;"}
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
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"}