@wgalleti/primevue-components 0.30.0 → 0.31.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.
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./components-BQLHmQIB.cjs");exports.WActionBar=e.h,exports.WAutoCompleteFK=e.U,exports.WChart=e.T,exports.WCheckList=e.u,exports.WCrudColumnRenderer=e.J,exports.WCrudFormDialog=e.L,exports.WCrudSubview=e.M,exports.WCrudView=e.P,exports.WDatePicker=e.H,exports.WDateRange=e.j,exports.WDetailHeader=e.x,exports.WDialog=e.a,exports.WEditableTable=e.N,exports.WEmptyState=e.S,exports.WFileUpload=e.A,exports.WFormRenderer=e.R,exports.WFormSection=e.g,exports.WImageCropper=e.B,exports.WInfoCard=e.b,exports.WKanbanBoard=e.t,exports.WKpiCard=e.y,exports.WKpiGrid=e.v,exports.WMapSelect=e.l,exports.WMarkdownEditor=e.s,exports.WMarkdownToc=e.o,exports.WMarkdownView=e.c,exports.WMoneyInput=e.V,exports.WPageHeader=e.C,exports.WProgressFlow=e.m,exports.WSectionHeader=e._,exports.WStatusTag=e.w,exports.WStepFlow=e.f,exports.WStepSection=e.d,exports.WTabBar=e.i,exports.WTabNav=e.r,exports.WTabViewport=e.n,exports.WTransferList=e.z,exports.WTreeSelect=e.k;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./components-BK9LPrAs.cjs");exports.WActionBar=e.h,exports.WAutoCompleteFK=e.K,exports.WChart=e.O,exports.WCheckList=e.u,exports.WCrudColumnRenderer=e.Z,exports.WCrudFormDialog=e.B,exports.WCrudSubview=e.F,exports.WCrudView=e.L,exports.WDatePicker=e.G,exports.WDateRange=e.P,exports.WDetailHeader=e.w,exports.WDialog=e.a,exports.WEditableTable=e.I,exports.WEmptyState=e.T,exports.WFileUpload=e.N,exports.WFormRenderer=e.V,exports.WFormSection=e.g,exports.WImageCropper=e.U,exports.WInfoCard=e.C,exports.WKanbanBoard=e.t,exports.WKpiCard=e.S,exports.WKpiGrid=e.x,exports.WMapSelect=e.l,exports.WMarkdownEditor=e.s,exports.WMarkdownToc=e.o,exports.WMarkdownView=e.c,exports.WMoneyInput=e.W,exports.WPageHeader=e.E,exports.WProgressFlow=e.m,exports.WSectionAccordion=e.y,exports.WSectionHeader=e.v,exports.WSectionPanel=e._,exports.WStatusTag=e.D,exports.WStepFlow=e.f,exports.WStepSection=e.d,exports.WTabBar=e.i,exports.WTabNav=e.r,exports.WTabViewport=e.n,exports.WTransferList=e.H,exports.WTreeSelect=e.M;
@@ -1,2 +1,2 @@
1
- import { A as e, B as t, C as n, H as r, J as i, L as a, M as o, N as s, P as c, R as l, S as u, T as d, U as f, V as p, _ as m, a as h, b as g, c as _, d as v, f as y, g as b, h as x, i as S, j as C, k as w, l as T, m as E, n as D, o as O, r as k, s as A, t as j, u as M, v as N, w as P, x as F, y as I, z as L } from "./components-B5nXaYtT.js";
2
- export { x as WActionBar, f as WAutoCompleteFK, d as WChart, M as WCheckList, i as WCrudColumnRenderer, a as WCrudFormDialog, o as WCrudSubview, c as WCrudView, r as WDatePicker, C as WDateRange, F as WDetailHeader, h as WDialog, s as WEditableTable, u as WEmptyState, e as WFileUpload, l as WFormRenderer, b as WFormSection, t as WImageCropper, g as WInfoCard, j as WKanbanBoard, I as WKpiCard, N as WKpiGrid, T as WMapSelect, A as WMarkdownEditor, O as WMarkdownToc, _ as WMarkdownView, p as WMoneyInput, n as WPageHeader, E as WProgressFlow, m as WSectionHeader, P as WStatusTag, y as WStepFlow, v as WStepSection, S as WTabBar, k as WTabNav, D as WTabViewport, L as WTransferList, w as WTreeSelect };
1
+ import { B as e, C as t, D as n, E as r, F as i, G as a, H as o, I as s, K as c, L as l, M as u, N as d, O as f, P as p, S as m, T as h, U as g, V as _, W as v, Z as y, _ as b, a as x, c as S, d as C, f as w, g as T, h as E, i as D, l as O, m as k, n as A, o as j, r as M, s as N, t as P, u as F, v as I, w as L, x as R, y as z } from "./components-BNyzL6pd.js";
2
+ export { E as WActionBar, c as WAutoCompleteFK, f as WChart, F as WCheckList, y as WCrudColumnRenderer, e as WCrudFormDialog, i as WCrudSubview, l as WCrudView, a as WDatePicker, p as WDateRange, L as WDetailHeader, x as WDialog, s as WEditableTable, h as WEmptyState, d as WFileUpload, _ as WFormRenderer, T as WFormSection, g as WImageCropper, t as WInfoCard, P as WKanbanBoard, m as WKpiCard, R as WKpiGrid, O as WMapSelect, N as WMarkdownEditor, j as WMarkdownToc, S as WMarkdownView, v as WMoneyInput, r as WPageHeader, k as WProgressFlow, z as WSectionAccordion, I as WSectionHeader, b as WSectionPanel, n as WStatusTag, w as WStepFlow, C as WStepSection, D as WTabBar, M as WTabNav, A as WTabViewport, o as WTransferList, u as WTreeSelect };
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./useFormKeyboardNav-DAtl5tBF.cjs"),t=require("./routeTabs-BnVpnSeJ.cjs"),n=require("./components-BQLHmQIB.cjs"),r=require("./labels-DiFDhFhQ.cjs"),i=require("./composables-DxLadKgY.cjs");require("./types.cjs");function a(e,t,n){let r=e;return Array.isArray(r.results)?{data:r.results,page:r.page??t,page_size:r.page_size??n,rows:r.count??0,extras:r.extras??{}}:Array.isArray(r.data)?{data:r.data,page:r.page??t,page_size:r.page_size??n,rows:r.rows??0,extras:r.extras??{}}:{data:Array.isArray(e)?e:[],page:t,page_size:n,rows:Array.isArray(e)?e.length:0,extras:{}}}function o(e){return{async list(t,n={}){return a((await e.get(t,{params:n})).data,Number(n.page??1),Number(n.page_size??20))},async get(t,n,r){return{data:(await e.get(`${t}${n}/`,r)).data}},async create(t,n,r){return{data:(await e.post(t,n,r)).data}},async update(t,n,r,i){return{data:(await e.patch(`${t}${n}/`,r,i)).data}},async delete(t,n){await e.delete(`${t}${n}/`)}}}var s={install(e,r){if(!r?.axios&&!r?.dataProvider)throw Error(`[wPrimeVueComponents] Informe "axios" ou "dataProvider" ao registrar o WPrimeVuePlugin.`);let i=r.dataProvider??o(r.axios),a={axios:r.axios,dataProvider:i,defaultPageSize:r.defaultPageSize??20,dateFormat:r.dateFormat??`DD/MM/YYYY`,dateTimeFormat:r.dateTimeFormat??`DD/MM/YYYY HH:mm`,locale:r.locale??`pt-BR`,currency:r.currency??`BRL`};r.axios&&e.provide(t.r,r.axios),e.provide(t.a,i),e.provide(t.i,a),r.registerComponents!==!1&&(e.component(`WCrudView`,n.P),e.component(`WCrudFormDialog`,n.L),e.component(`WCrudColumnRenderer`,n.J),e.component(`WAutoCompleteFK`,n.U),e.component(`WMoneyInput`,n.V),e.component(`WTransferList`,n.z),e.component(`WTreeSelect`,n.k))}};function c(e){return e.split(`?`)[0].replace(/^\/+|\/+$/g,``).replace(/^api\/v\d+\//,``)}function l(e){return typeof e==`string`?{table:e}:e}function u(e,t=400){return{response:{status:t,data:{detail:e}},message:e}}function d(e){if(e instanceof FormData)throw u(`SupabaseDataProvider nao envia FormData diretamente. Faça upload do arquivo no Storage e envie a URL/caminho no payload.`);return e}function f(e){throw{response:{data:{detail:e?.message??`Erro ao consultar Supabase`,code:e?.code,details:e?.details,hint:e?.hint}},message:e?.message??`Erro ao consultar Supabase`}}function p(e,t){let n=c(e),r=t.resources?.[n];if(r)return l(r);if(t.allowedTables?.includes(n))return{table:n};throw u(`Recurso Supabase nao registrado para o endpoint "${e}".`,404)}function m(e,t,n){let r=new Set([`page`,`page_size`,`search`,`ordering`]),i={...n.defaultFilters,...t};for(let[t,n]of Object.entries(i))r.has(t)||n==null||n===``||(e=e.eq(t,n));return e}function h(e,t,n){if(typeof t!=`string`||!t.trim()||!n?.length)return e;let r=t.trim().replace(/,/g,`\\,`),i=n.map(e=>`${e}.ilike.%${r}%`).join(`,`);return e.or(i)}function g(e,t){let n=typeof e==`string`&&e?e:t;return n?{field:n.startsWith(`-`)?n.slice(1):n,ascending:!n.startsWith(`-`)}:null}function _(e,t){return e?t.mapListItem?e.map(e=>t.mapListItem?.(e)):e:[]}function v(e){let t=e.defaultSelect??`*`;return{async list(n,r={}){let i=p(n,e),a=Math.max(Number(r.page??1),1),o=Math.max(Number(r.page_size??20),1),s=(a-1)*o,c=s+o-1,l=e.client.from(i.table).select(i.select??t,{count:`exact`});l=m(l,r,i),l=h(l,r.search,i.searchFields);let u=g(r.ordering,i.defaultOrdering);u&&(l=l.order(u.field,{ascending:u.ascending}));let d=await l.range(s,c);return d.error&&f(d.error),{data:_(d.data,i),page:a,page_size:o,rows:d.count??d.data?.length??0,extras:{}}},async get(n,r,i){let a=p(n,e),o=a.pk??`id`,s=await e.client.from(a.table).select(a.select??t).eq(o,r).single();return s.error&&f(s.error),{data:s.data}},async create(n,r,i){let a=p(n,e),o=d(r),s=a.mapPayload?a.mapPayload(o,`create`):o,c=await e.client.from(a.table).insert(s).select(a.select??t).single();return c.error&&f(c.error),{data:c.data}},async update(n,r,i,a){let o=p(n,e),s=o.pk??`id`,c=d(i),l=o.mapPayload?o.mapPayload(c,`update`):c,u=await e.client.from(o.table).update(l).eq(s,r).select(o.select??t).single();return u.error&&f(u.error),{data:u.data}},async delete(t,n){let r=p(t,e),i=r.pk??`id`,a=r.softDelete===!0?{is_active:!1}:typeof r.softDelete==`object`?r.softDelete:null,o=a?await e.client.from(r.table).update(a).eq(i,n):await e.client.from(r.table).delete().eq(i,n);o.error&&f(o.error)}}}exports.BREAKPOINTS=e.g,exports.DEFAULT_CRUD_LABELS=r.t,exports.WActionBar=n.h,exports.WAutoCompleteFK=n.U,exports.WChart=n.T,exports.WCheckList=n.u,exports.WCrudColumnRenderer=n.J,exports.WCrudFormDialog=n.L,exports.WCrudSubview=n.M,exports.WCrudView=n.P,exports.WDatePicker=n.H,exports.WDateRange=n.j,exports.WDetailHeader=n.x,exports.WDialog=n.a,exports.WEditableTable=n.N,exports.WEmptyState=n.S,exports.WFileUpload=n.A,exports.WFormRenderer=n.R,exports.WFormSection=n.g,exports.WImageCropper=n.B,exports.WInfoCard=n.b,exports.WKanbanBoard=n.t,exports.WKpiCard=n.y,exports.WKpiGrid=n.v,exports.WMapSelect=n.l,exports.WMarkdownEditor=n.s,exports.WMarkdownToc=n.o,exports.WMarkdownView=n.c,exports.WMoneyInput=n.V,exports.WPageHeader=n.C,exports.WPrimeVuePlugin=s,exports.WProgressFlow=n.m,exports.WSectionHeader=n._,exports.WStatusTag=n.w,exports.WStepFlow=n.f,exports.WStepSection=n.d,exports.WTabBar=n.i,exports.WTabNav=n.r,exports.WTabViewport=n.n,exports.WTransferList=n.z,exports.WTreeSelect=n.k,exports.W_AXIOS_KEY=t.r,exports.W_CONFIG_KEY=t.i,exports.W_DATA_PROVIDER_KEY=t.a,exports.W_STEP_FLOW_KEY=n.p,exports.W_TAB_HOST_KEY=t.t,exports.buildChartTheme=n.E,exports.buildPrintTheme=n.D,exports.createAxiosDataProvider=o,exports.createSupabaseDataProvider=v,exports.donutOption=n.O,exports.downloadCsv=n.F,exports.extractApiError=e.r,exports.mapApiFieldToColumnDef=n.W,exports.mapApiFieldToFieldDef=n.G,exports.mapApiFieldsToColumnDefs=n.K,exports.mapApiFieldsToFieldDefs=n.q,exports.toCsv=n.I,exports.useApi=i.n,exports.useApiError=e.i,exports.useAppConfirm=e.a,exports.useAppToast=e.o,exports.useBreakpoint=e._,exports.useCrudManager=i.a,exports.useDateInput=e.n,exports.useFormatters=e.f,exports.useRouteTabs=i.t,exports.useSubviewCrud=i.i,exports.useTabHost=t.n;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./useFormKeyboardNav-DAtl5tBF.cjs"),t=require("./routeTabs-BnVpnSeJ.cjs"),n=require("./components-BK9LPrAs.cjs"),r=require("./labels-DiFDhFhQ.cjs"),i=require("./composables-DxLadKgY.cjs");require("./types.cjs");function a(e,t,n){let r=e;return Array.isArray(r.results)?{data:r.results,page:r.page??t,page_size:r.page_size??n,rows:r.count??0,extras:r.extras??{}}:Array.isArray(r.data)?{data:r.data,page:r.page??t,page_size:r.page_size??n,rows:r.rows??0,extras:r.extras??{}}:{data:Array.isArray(e)?e:[],page:t,page_size:n,rows:Array.isArray(e)?e.length:0,extras:{}}}function o(e){return{async list(t,n={}){return a((await e.get(t,{params:n})).data,Number(n.page??1),Number(n.page_size??20))},async get(t,n,r){return{data:(await e.get(`${t}${n}/`,r)).data}},async create(t,n,r){return{data:(await e.post(t,n,r)).data}},async update(t,n,r,i){return{data:(await e.patch(`${t}${n}/`,r,i)).data}},async delete(t,n){await e.delete(`${t}${n}/`)}}}var s={install(e,r){if(!r?.axios&&!r?.dataProvider)throw Error(`[wPrimeVueComponents] Informe "axios" ou "dataProvider" ao registrar o WPrimeVuePlugin.`);let i=r.dataProvider??o(r.axios),a={axios:r.axios,dataProvider:i,defaultPageSize:r.defaultPageSize??20,dateFormat:r.dateFormat??`DD/MM/YYYY`,dateTimeFormat:r.dateTimeFormat??`DD/MM/YYYY HH:mm`,locale:r.locale??`pt-BR`,currency:r.currency??`BRL`};r.axios&&e.provide(t.r,r.axios),e.provide(t.a,i),e.provide(t.i,a),r.registerComponents!==!1&&(e.component(`WCrudView`,n.L),e.component(`WCrudFormDialog`,n.B),e.component(`WCrudColumnRenderer`,n.Z),e.component(`WAutoCompleteFK`,n.K),e.component(`WMoneyInput`,n.W),e.component(`WTransferList`,n.H),e.component(`WTreeSelect`,n.M))}};function c(e){return e.split(`?`)[0].replace(/^\/+|\/+$/g,``).replace(/^api\/v\d+\//,``)}function l(e){return typeof e==`string`?{table:e}:e}function u(e,t=400){return{response:{status:t,data:{detail:e}},message:e}}function d(e){if(e instanceof FormData)throw u(`SupabaseDataProvider nao envia FormData diretamente. Faça upload do arquivo no Storage e envie a URL/caminho no payload.`);return e}function f(e){throw{response:{data:{detail:e?.message??`Erro ao consultar Supabase`,code:e?.code,details:e?.details,hint:e?.hint}},message:e?.message??`Erro ao consultar Supabase`}}function p(e,t){let n=c(e),r=t.resources?.[n];if(r)return l(r);if(t.allowedTables?.includes(n))return{table:n};throw u(`Recurso Supabase nao registrado para o endpoint "${e}".`,404)}function m(e,t,n){let r=new Set([`page`,`page_size`,`search`,`ordering`]),i={...n.defaultFilters,...t};for(let[t,n]of Object.entries(i))r.has(t)||n==null||n===``||(e=e.eq(t,n));return e}function h(e,t,n){if(typeof t!=`string`||!t.trim()||!n?.length)return e;let r=t.trim().replace(/,/g,`\\,`),i=n.map(e=>`${e}.ilike.%${r}%`).join(`,`);return e.or(i)}function g(e,t){let n=typeof e==`string`&&e?e:t;return n?{field:n.startsWith(`-`)?n.slice(1):n,ascending:!n.startsWith(`-`)}:null}function _(e,t){return e?t.mapListItem?e.map(e=>t.mapListItem?.(e)):e:[]}function v(e){let t=e.defaultSelect??`*`;return{async list(n,r={}){let i=p(n,e),a=Math.max(Number(r.page??1),1),o=Math.max(Number(r.page_size??20),1),s=(a-1)*o,c=s+o-1,l=e.client.from(i.table).select(i.select??t,{count:`exact`});l=m(l,r,i),l=h(l,r.search,i.searchFields);let u=g(r.ordering,i.defaultOrdering);u&&(l=l.order(u.field,{ascending:u.ascending}));let d=await l.range(s,c);return d.error&&f(d.error),{data:_(d.data,i),page:a,page_size:o,rows:d.count??d.data?.length??0,extras:{}}},async get(n,r,i){let a=p(n,e),o=a.pk??`id`,s=await e.client.from(a.table).select(a.select??t).eq(o,r).single();return s.error&&f(s.error),{data:s.data}},async create(n,r,i){let a=p(n,e),o=d(r),s=a.mapPayload?a.mapPayload(o,`create`):o,c=await e.client.from(a.table).insert(s).select(a.select??t).single();return c.error&&f(c.error),{data:c.data}},async update(n,r,i,a){let o=p(n,e),s=o.pk??`id`,c=d(i),l=o.mapPayload?o.mapPayload(c,`update`):c,u=await e.client.from(o.table).update(l).eq(s,r).select(o.select??t).single();return u.error&&f(u.error),{data:u.data}},async delete(t,n){let r=p(t,e),i=r.pk??`id`,a=r.softDelete===!0?{is_active:!1}:typeof r.softDelete==`object`?r.softDelete:null,o=a?await e.client.from(r.table).update(a).eq(i,n):await e.client.from(r.table).delete().eq(i,n);o.error&&f(o.error)}}}exports.BREAKPOINTS=e.g,exports.DEFAULT_CRUD_LABELS=r.t,exports.WActionBar=n.h,exports.WAutoCompleteFK=n.K,exports.WChart=n.O,exports.WCheckList=n.u,exports.WCrudColumnRenderer=n.Z,exports.WCrudFormDialog=n.B,exports.WCrudSubview=n.F,exports.WCrudView=n.L,exports.WDatePicker=n.G,exports.WDateRange=n.P,exports.WDetailHeader=n.w,exports.WDialog=n.a,exports.WEditableTable=n.I,exports.WEmptyState=n.T,exports.WFileUpload=n.N,exports.WFormRenderer=n.V,exports.WFormSection=n.g,exports.WImageCropper=n.U,exports.WInfoCard=n.C,exports.WKanbanBoard=n.t,exports.WKpiCard=n.S,exports.WKpiGrid=n.x,exports.WMapSelect=n.l,exports.WMarkdownEditor=n.s,exports.WMarkdownToc=n.o,exports.WMarkdownView=n.c,exports.WMoneyInput=n.W,exports.WPageHeader=n.E,exports.WPrimeVuePlugin=s,exports.WProgressFlow=n.m,exports.WSectionAccordion=n.y,exports.WSectionHeader=n.v,exports.WSectionPanel=n._,exports.WStatusTag=n.D,exports.WStepFlow=n.f,exports.WStepSection=n.d,exports.WTabBar=n.i,exports.WTabNav=n.r,exports.WTabViewport=n.n,exports.WTransferList=n.H,exports.WTreeSelect=n.M,exports.W_AXIOS_KEY=t.r,exports.W_CONFIG_KEY=t.i,exports.W_DATA_PROVIDER_KEY=t.a,exports.W_SECTION_ACCORDION_KEY=n.b,exports.W_STEP_FLOW_KEY=n.p,exports.W_TAB_HOST_KEY=t.t,exports.buildChartTheme=n.k,exports.buildPrintTheme=n.A,exports.createAxiosDataProvider=o,exports.createSupabaseDataProvider=v,exports.donutOption=n.j,exports.downloadCsv=n.R,exports.extractApiError=e.r,exports.mapApiFieldToColumnDef=n.q,exports.mapApiFieldToFieldDef=n.J,exports.mapApiFieldsToColumnDefs=n.Y,exports.mapApiFieldsToFieldDefs=n.X,exports.toCsv=n.z,exports.useApi=i.n,exports.useApiError=e.i,exports.useAppConfirm=e.a,exports.useAppToast=e.o,exports.useBreakpoint=e._,exports.useCrudManager=i.a,exports.useDateInput=e.n,exports.useFormatters=e.f,exports.useRouteTabs=i.t,exports.useSubviewCrud=i.i,exports.useTabHost=t.n;
2
2
  //# sourceMappingURL=index.cjs.map
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, WChart, 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';
2
+ export { WCrudView, WCrudFormDialog, WCrudColumnRenderer, WEditableTable, WCrudSubview, WAutoCompleteFK, WFormRenderer, WDatePicker, WDateRange, WFileUpload, WImageCropper, WMoneyInput, WTransferList, WTreeSelect, WChart, WStatusTag, WPageHeader, WDetailHeader, WEmptyState, WInfoCard, WKpiCard, WKpiGrid, WSectionAccordion, WSectionHeader, WSectionPanel, 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, useBreakpoint, BREAKPOINTS, } from './composables';
4
4
  export type { DateValueFormat } from './composables';
5
5
  export { createAxiosDataProvider, createSupabaseDataProvider } from './data-providers';
@@ -8,6 +8,8 @@ export type { StatusMapping } from './components/ui/WStatusTag.vue';
8
8
  export type { InfoField } from './components/ui/WInfoCard.vue';
9
9
  export type { StepFlowContext, StepFlowOrientation } from './utils/stepFlow';
10
10
  export { W_STEP_FLOW_KEY } from './utils/stepFlow';
11
+ export type { SectionAccordionContext } from './utils/sectionAccordion';
12
+ export { W_SECTION_ACCORDION_KEY } from './utils/sectionAccordion';
11
13
  export type { CreateSupabaseDataProviderOptions, SupabaseDataProviderClient, SupabaseResourceConfig, } from './data-providers';
12
14
  export { DEFAULT_CRUD_LABELS, W_AXIOS_KEY, W_CONFIG_KEY, W_DATA_PROVIDER_KEY, W_TAB_HOST_KEY, useTabHost, } from './types';
13
15
  export type { ApiFieldMeta } from './utils/fieldMapper';
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import { _ as e, a as t, f as n, g as r, i, n as a, o, r as s } from "./useFormKeyboardNav-Yj2HeWy5.js";
2
2
  import { a as c, i as l, n as u, r as d, t as ee } from "./routeTabs-D6m8PuP6.js";
3
- import { A as te, B as f, C as p, D as m, E as h, F as ne, G as re, H as ie, I as ae, J as g, K as oe, L as _, M as v, N as y, O as b, P as x, R as S, S as C, T as w, U as T, V as E, W as D, _ as O, a as k, b as A, c as j, d as M, f as N, g as P, h as F, i as I, j as L, k as R, l as z, m as B, n as V, o as se, p as H, q as U, r as W, s as G, t as K, u as ce, v as le, w as ue, x as de, y as fe, z as q } from "./components-B5nXaYtT.js";
4
- import { t as pe } from "./labels-CXBhCk2N.js";
5
- import { a as me, i as he, n as ge, t as _e } from "./composables-CTH72sG4.js";
3
+ import { A as te, B as f, C as p, D as m, E as ne, F as re, G as ie, H as h, I as g, J as _, K as v, L as y, M as b, N as x, O as S, P as C, R as w, S as T, T as E, U as D, V as O, W as k, X as A, Y as j, Z as M, _ as N, a as P, b as F, c as I, d as L, f as R, g as z, h as B, i as V, j as H, k as U, l as W, m as G, n as K, o as q, p as ae, q as J, r as oe, s as se, t as ce, u as le, v as ue, w as de, x as fe, y as pe, z as me } from "./components-BNyzL6pd.js";
4
+ import { t as he } from "./labels-CXBhCk2N.js";
5
+ import { a as ge, i as _e, n as ve, t as ye } from "./composables-CTH72sG4.js";
6
6
  import "./types.js";
7
7
  //#region src/data-providers/axiosDataProvider.ts
8
- function ve(e, t, n) {
8
+ function be(e, t, n) {
9
9
  let r = e;
10
10
  return Array.isArray(r.results) ? {
11
11
  data: r.results,
@@ -27,10 +27,10 @@ function ve(e, t, n) {
27
27
  extras: {}
28
28
  };
29
29
  }
30
- function J(e) {
30
+ function Y(e) {
31
31
  return {
32
32
  async list(t, n = {}) {
33
- return ve((await e.get(t, { params: n })).data, Number(n.page ?? 1), Number(n.page_size ?? 20));
33
+ return be((await e.get(t, { params: n })).data, Number(n.page ?? 1), Number(n.page_size ?? 20));
34
34
  },
35
35
  async get(t, n, r) {
36
36
  return { data: (await e.get(`${t}${n}/`, r)).data };
@@ -48,9 +48,9 @@ function J(e) {
48
48
  }
49
49
  //#endregion
50
50
  //#region src/plugin.ts
51
- var ye = { install(e, t) {
51
+ var xe = { install(e, t) {
52
52
  if (!t?.axios && !t?.dataProvider) throw Error("[wPrimeVueComponents] Informe \"axios\" ou \"dataProvider\" ao registrar o WPrimeVuePlugin.");
53
- let n = t.dataProvider ?? J(t.axios), r = {
53
+ let n = t.dataProvider ?? Y(t.axios), r = {
54
54
  axios: t.axios,
55
55
  dataProvider: n,
56
56
  defaultPageSize: t.defaultPageSize ?? 20,
@@ -59,17 +59,17 @@ var ye = { install(e, t) {
59
59
  locale: t.locale ?? "pt-BR",
60
60
  currency: t.currency ?? "BRL"
61
61
  };
62
- t.axios && e.provide(d, t.axios), e.provide(c, n), e.provide(l, r), t.registerComponents !== !1 && (e.component("WCrudView", x), e.component("WCrudFormDialog", _), e.component("WCrudColumnRenderer", g), e.component("WAutoCompleteFK", T), e.component("WMoneyInput", E), e.component("WTransferList", q), e.component("WTreeSelect", R));
62
+ t.axios && e.provide(d, t.axios), e.provide(c, n), e.provide(l, r), t.registerComponents !== !1 && (e.component("WCrudView", y), e.component("WCrudFormDialog", f), e.component("WCrudColumnRenderer", M), e.component("WAutoCompleteFK", v), e.component("WMoneyInput", k), e.component("WTransferList", h), e.component("WTreeSelect", b));
63
63
  } };
64
64
  //#endregion
65
65
  //#region src/data-providers/supabaseDataProvider.ts
66
- function be(e) {
66
+ function Se(e) {
67
67
  return e.split("?")[0].replace(/^\/+|\/+$/g, "").replace(/^api\/v\d+\//, "");
68
68
  }
69
- function xe(e) {
69
+ function Ce(e) {
70
70
  return typeof e == "string" ? { table: e } : e;
71
71
  }
72
- function Y(e, t = 400) {
72
+ function X(e, t = 400) {
73
73
  return {
74
74
  response: {
75
75
  status: t,
@@ -78,11 +78,11 @@ function Y(e, t = 400) {
78
78
  message: e
79
79
  };
80
80
  }
81
- function X(e) {
82
- if (e instanceof FormData) throw Y("SupabaseDataProvider nao envia FormData diretamente. Faça upload do arquivo no Storage e envie a URL/caminho no payload.");
81
+ function Z(e) {
82
+ if (e instanceof FormData) throw X("SupabaseDataProvider nao envia FormData diretamente. Faça upload do arquivo no Storage e envie a URL/caminho no payload.");
83
83
  return e;
84
84
  }
85
- function Z(e) {
85
+ function Q(e) {
86
86
  throw {
87
87
  response: { data: {
88
88
  detail: e?.message ?? "Erro ao consultar Supabase",
@@ -93,13 +93,13 @@ function Z(e) {
93
93
  message: e?.message ?? "Erro ao consultar Supabase"
94
94
  };
95
95
  }
96
- function Q(e, t) {
97
- let n = be(e), r = t.resources?.[n];
98
- if (r) return xe(r);
96
+ function $(e, t) {
97
+ let n = Se(e), r = t.resources?.[n];
98
+ if (r) return Ce(r);
99
99
  if (t.allowedTables?.includes(n)) return { table: n };
100
- throw Y(`Recurso Supabase nao registrado para o endpoint "${e}".`, 404);
100
+ throw X(`Recurso Supabase nao registrado para o endpoint "${e}".`, 404);
101
101
  }
102
- function Se(e, t, n) {
102
+ function we(e, t, n) {
103
103
  let r = /* @__PURE__ */ new Set([
104
104
  "page",
105
105
  "page_size",
@@ -112,32 +112,32 @@ function Se(e, t, n) {
112
112
  for (let [t, n] of Object.entries(i)) r.has(t) || n == null || n === "" || (e = e.eq(t, n));
113
113
  return e;
114
114
  }
115
- function Ce(e, t, n) {
115
+ function Te(e, t, n) {
116
116
  if (typeof t != "string" || !t.trim() || !n?.length) return e;
117
117
  let r = t.trim().replace(/,/g, "\\,"), i = n.map((e) => `${e}.ilike.%${r}%`).join(",");
118
118
  return e.or(i);
119
119
  }
120
- function $(e, t) {
120
+ function Ee(e, t) {
121
121
  let n = typeof e == "string" && e ? e : t;
122
122
  return n ? {
123
123
  field: n.startsWith("-") ? n.slice(1) : n,
124
124
  ascending: !n.startsWith("-")
125
125
  } : null;
126
126
  }
127
- function we(e, t) {
127
+ function De(e, t) {
128
128
  return e ? t.mapListItem ? e.map((e) => t.mapListItem?.(e)) : e : [];
129
129
  }
130
- function Te(e) {
130
+ function Oe(e) {
131
131
  let t = e.defaultSelect ?? "*";
132
132
  return {
133
133
  async list(n, r = {}) {
134
- let i = Q(n, e), a = Math.max(Number(r.page ?? 1), 1), o = Math.max(Number(r.page_size ?? 20), 1), s = (a - 1) * o, c = s + o - 1, l = e.client.from(i.table).select(i.select ?? t, { count: "exact" });
135
- l = Se(l, r, i), l = Ce(l, r.search, i.searchFields);
136
- let u = $(r.ordering, i.defaultOrdering);
134
+ let i = $(n, e), a = Math.max(Number(r.page ?? 1), 1), o = Math.max(Number(r.page_size ?? 20), 1), s = (a - 1) * o, c = s + o - 1, l = e.client.from(i.table).select(i.select ?? t, { count: "exact" });
135
+ l = we(l, r, i), l = Te(l, r.search, i.searchFields);
136
+ let u = Ee(r.ordering, i.defaultOrdering);
137
137
  u && (l = l.order(u.field, { ascending: u.ascending }));
138
138
  let d = await l.range(s, c);
139
- return d.error && Z(d.error), {
140
- data: we(d.data, i),
139
+ return d.error && Q(d.error), {
140
+ data: De(d.data, i),
141
141
  page: a,
142
142
  page_size: o,
143
143
  rows: d.count ?? d.data?.length ?? 0,
@@ -145,24 +145,24 @@ function Te(e) {
145
145
  };
146
146
  },
147
147
  async get(n, r, i) {
148
- let a = Q(n, e), o = a.pk ?? "id", s = await e.client.from(a.table).select(a.select ?? t).eq(o, r).single();
149
- return s.error && Z(s.error), { data: s.data };
148
+ let a = $(n, e), o = a.pk ?? "id", s = await e.client.from(a.table).select(a.select ?? t).eq(o, r).single();
149
+ return s.error && Q(s.error), { data: s.data };
150
150
  },
151
151
  async create(n, r, i) {
152
- let a = Q(n, e), o = X(r), s = a.mapPayload ? a.mapPayload(o, "create") : o, c = await e.client.from(a.table).insert(s).select(a.select ?? t).single();
153
- return c.error && Z(c.error), { data: c.data };
152
+ let a = $(n, e), o = Z(r), s = a.mapPayload ? a.mapPayload(o, "create") : o, c = await e.client.from(a.table).insert(s).select(a.select ?? t).single();
153
+ return c.error && Q(c.error), { data: c.data };
154
154
  },
155
155
  async update(n, r, i, a) {
156
- let o = Q(n, e), s = o.pk ?? "id", c = X(i), l = o.mapPayload ? o.mapPayload(c, "update") : c, u = await e.client.from(o.table).update(l).eq(s, r).select(o.select ?? t).single();
157
- return u.error && Z(u.error), { data: u.data };
156
+ let o = $(n, e), s = o.pk ?? "id", c = Z(i), l = o.mapPayload ? o.mapPayload(c, "update") : c, u = await e.client.from(o.table).update(l).eq(s, r).select(o.select ?? t).single();
157
+ return u.error && Q(u.error), { data: u.data };
158
158
  },
159
159
  async delete(t, n) {
160
- let r = Q(t, e), i = r.pk ?? "id", a = r.softDelete === !0 ? { is_active: !1 } : typeof r.softDelete == "object" ? r.softDelete : null, o = a ? await e.client.from(r.table).update(a).eq(i, n) : await e.client.from(r.table).delete().eq(i, n);
161
- o.error && Z(o.error);
160
+ let r = $(t, e), i = r.pk ?? "id", a = r.softDelete === !0 ? { is_active: !1 } : typeof r.softDelete == "object" ? r.softDelete : null, o = a ? await e.client.from(r.table).update(a).eq(i, n) : await e.client.from(r.table).delete().eq(i, n);
161
+ o.error && Q(o.error);
162
162
  }
163
163
  };
164
164
  }
165
165
  //#endregion
166
- export { r as BREAKPOINTS, pe as DEFAULT_CRUD_LABELS, F as WActionBar, T as WAutoCompleteFK, w as WChart, ce as WCheckList, g as WCrudColumnRenderer, _ as WCrudFormDialog, v as WCrudSubview, x as WCrudView, ie as WDatePicker, L as WDateRange, de as WDetailHeader, k as WDialog, y as WEditableTable, C as WEmptyState, te as WFileUpload, S as WFormRenderer, P as WFormSection, f as WImageCropper, A as WInfoCard, K as WKanbanBoard, fe as WKpiCard, le as WKpiGrid, z as WMapSelect, G as WMarkdownEditor, se as WMarkdownToc, j as WMarkdownView, E as WMoneyInput, p as WPageHeader, ye as WPrimeVuePlugin, B as WProgressFlow, O as WSectionHeader, ue as WStatusTag, N as WStepFlow, M as WStepSection, I as WTabBar, W as WTabNav, V as WTabViewport, q as WTransferList, R as WTreeSelect, d as W_AXIOS_KEY, l as W_CONFIG_KEY, c as W_DATA_PROVIDER_KEY, H as W_STEP_FLOW_KEY, ee as W_TAB_HOST_KEY, h as buildChartTheme, m as buildPrintTheme, J as createAxiosDataProvider, Te as createSupabaseDataProvider, b as donutOption, ne as downloadCsv, s as extractApiError, D as mapApiFieldToColumnDef, re as mapApiFieldToFieldDef, oe as mapApiFieldsToColumnDefs, U as mapApiFieldsToFieldDefs, ae as toCsv, ge as useApi, i as useApiError, t as useAppConfirm, o as useAppToast, e as useBreakpoint, me as useCrudManager, a as useDateInput, n as useFormatters, _e as useRouteTabs, he as useSubviewCrud, u as useTabHost };
166
+ export { r as BREAKPOINTS, he as DEFAULT_CRUD_LABELS, B as WActionBar, v as WAutoCompleteFK, S as WChart, le as WCheckList, M as WCrudColumnRenderer, f as WCrudFormDialog, re as WCrudSubview, y as WCrudView, ie as WDatePicker, C as WDateRange, de as WDetailHeader, P as WDialog, g as WEditableTable, E as WEmptyState, x as WFileUpload, O as WFormRenderer, z as WFormSection, D as WImageCropper, p as WInfoCard, ce as WKanbanBoard, T as WKpiCard, fe as WKpiGrid, W as WMapSelect, se as WMarkdownEditor, q as WMarkdownToc, I as WMarkdownView, k as WMoneyInput, ne as WPageHeader, xe as WPrimeVuePlugin, G as WProgressFlow, pe as WSectionAccordion, ue as WSectionHeader, N as WSectionPanel, m as WStatusTag, R as WStepFlow, L as WStepSection, V as WTabBar, oe as WTabNav, K as WTabViewport, h as WTransferList, b as WTreeSelect, d as W_AXIOS_KEY, l as W_CONFIG_KEY, c as W_DATA_PROVIDER_KEY, F as W_SECTION_ACCORDION_KEY, ae as W_STEP_FLOW_KEY, ee as W_TAB_HOST_KEY, U as buildChartTheme, te as buildPrintTheme, Y as createAxiosDataProvider, Oe as createSupabaseDataProvider, H as donutOption, w as downloadCsv, s as extractApiError, J as mapApiFieldToColumnDef, _ as mapApiFieldToFieldDef, j as mapApiFieldsToColumnDefs, A as mapApiFieldsToFieldDefs, me as toCsv, ve as useApi, i as useApiError, t as useAppConfirm, o as useAppToast, e as useBreakpoint, ge as useCrudManager, a as useDateInput, n as useFormatters, ye as useRouteTabs, _e as useSubviewCrud, u as useTabHost };
167
167
 
168
168
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"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"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"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"],"mappings":"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"}