@refinedev/core 4.27.0 → 4.28.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.
- package/CHANGELOG.md +128 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/iife/index.js +1 -1
- package/dist/iife/index.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,133 @@
|
|
|
1
1
|
# @pankod/refine-core
|
|
2
2
|
|
|
3
|
+
## 4.28.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#4652](https://github.com/refinedev/refine/pull/4652) [`96af6d25b7a`](https://github.com/refinedev/refine/commit/96af6d25b7a870a3c1c6fd33c30e0ca2224ed411) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: added `errros` field to `HttpError` type.
|
|
8
|
+
From now on, you can pass `errors` field to `HttpError`. This field will be used to update the `useForm`'s error state.
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
export interface ValidationErrors {
|
|
12
|
+
[field: string]:
|
|
13
|
+
| string
|
|
14
|
+
| string[]
|
|
15
|
+
| boolean
|
|
16
|
+
| { key: string; message: string };
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface HttpError extends Record<string, any> {
|
|
20
|
+
message: string;
|
|
21
|
+
statusCode: number;
|
|
22
|
+
errors?: ValidationErrors;
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Usage example:
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
import { HttpError } from "@refinedev/core";
|
|
30
|
+
|
|
31
|
+
const App = () => {
|
|
32
|
+
return (
|
|
33
|
+
<Refine
|
|
34
|
+
routerProvider={routerProvider}
|
|
35
|
+
dataProvider={{
|
|
36
|
+
// ...
|
|
37
|
+
update: async () => {
|
|
38
|
+
// assume that the server returns the following error
|
|
39
|
+
const error: HttpError = {
|
|
40
|
+
message:
|
|
41
|
+
"An error occurred while updating the record.",
|
|
42
|
+
statusCode: 400,
|
|
43
|
+
//This field will be used to update the `useForm`'s error state
|
|
44
|
+
errors: {
|
|
45
|
+
title: [
|
|
46
|
+
"Title is required.",
|
|
47
|
+
"Title should have at least 5 characters.",
|
|
48
|
+
],
|
|
49
|
+
"category.id": ["Category is required."],
|
|
50
|
+
status: true,
|
|
51
|
+
content: {
|
|
52
|
+
key: "form.error.content",
|
|
53
|
+
message: "Content is required.",
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
return Promise.reject(error);
|
|
59
|
+
},
|
|
60
|
+
}}
|
|
61
|
+
>
|
|
62
|
+
{/* ... */}
|
|
63
|
+
</Refine>
|
|
64
|
+
);
|
|
65
|
+
};
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
[Refer to the server-side form validation documentation for more information. →](https://refine.dev/docs/advanced-tutorials/forms/server-side-form-validation/)
|
|
69
|
+
|
|
70
|
+
- [#4652](https://github.com/refinedev/refine/pull/4652) [`96af6d25b7a`](https://github.com/refinedev/refine/commit/96af6d25b7a870a3c1c6fd33c30e0ca2224ed411) Thanks [@alicanerdurmaz](https://github.com/alicanerdurmaz)! - feat: added `disableServerSideValidation` to the refine options for globally disabling server-side validation.
|
|
71
|
+
|
|
72
|
+
```tsx
|
|
73
|
+
import { Refine } from "@refinedev/core";
|
|
74
|
+
|
|
75
|
+
<Refine
|
|
76
|
+
options={{
|
|
77
|
+
disableServerSideValidation: true,
|
|
78
|
+
}}
|
|
79
|
+
>
|
|
80
|
+
// ...
|
|
81
|
+
</Refine>;
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
- [#4591](https://github.com/refinedev/refine/pull/4591) [`f8891ead2bd`](https://github.com/refinedev/refine/commit/f8891ead2bdb5f6743bbe9979230aa73ef3e69be) Thanks [@yildirayunlu](https://github.com/yildirayunlu)! - feat: `autoSave` feature for [useForm](https://refine.dev/docs/api-reference/core/hooks/useForm/#autosave) hook now accept `autoSave` object. `enabled` is a boolean value and `debounce` is a number value in milliseconds. `debounce` is optional and default value is `1000`.
|
|
85
|
+
`autoSaveProps` is an object that contains `data`, `error` and `status` values. `data` is the saved data, `error` is the error object and `status` is the status of the request. `status` can be `loading`, `error`, `idle` and `success`.
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
const { autoSaveProps } = useForm({
|
|
89
|
+
autoSave: {
|
|
90
|
+
enabled: true,
|
|
91
|
+
debounce: 2000, // not required, default is 1000
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Patch Changes
|
|
97
|
+
|
|
98
|
+
- [#4659](https://github.com/refinedev/refine/pull/4659) [`3af99896101`](https://github.com/refinedev/refine/commit/3af99896101bd41a4d2878c4a9f671ca1da36a6f) Thanks [@salihozdemir](https://github.com/salihozdemir)! - chore: fix tsdoc description of `onCancel` property on following hooks:
|
|
99
|
+
|
|
100
|
+
- `useUpdate`
|
|
101
|
+
- `useUpdateMany`
|
|
102
|
+
- `useDelete`
|
|
103
|
+
- `useDeleteMany`
|
|
104
|
+
|
|
105
|
+
- [#4665](https://github.com/refinedev/refine/pull/4665) [`3442f4bd00a`](https://github.com/refinedev/refine/commit/3442f4bd00ad4dbb17dcba08931fdeed3c2b1cb0) Thanks [@yildirayunlu](https://github.com/yildirayunlu)! - feat: add `false` return type on `SuccessErrorNotification`
|
|
106
|
+
|
|
107
|
+
This issue has been fixed in this PR, where the `successNotification` and `errorNotification` methods can now return `false` when a callback function is given. This allows the conditional notification to be displayed.
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
const { mutate } = useCreate<IPost>({});
|
|
111
|
+
|
|
112
|
+
mutate({
|
|
113
|
+
resource: "posts",
|
|
114
|
+
values: {
|
|
115
|
+
title: "Hello World",
|
|
116
|
+
status: "published",
|
|
117
|
+
},
|
|
118
|
+
successNotification: (data) => {
|
|
119
|
+
if (data?.data.status === "published") {
|
|
120
|
+
return {
|
|
121
|
+
type: "success",
|
|
122
|
+
message: "Post published",
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
return false;
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
```
|
|
130
|
+
|
|
3
131
|
## 4.27.0
|
|
4
132
|
|
|
5
133
|
### Minor Changes
|
package/dist/esm/index.js
CHANGED
|
@@ -8,7 +8,7 @@ See https://refine.dev/docs/api-reference/core/hooks/useForm/#resource`);let q=k
|
|
|
8
8
|
If you don't use the \`setShowId\` method to set the \`showId\`, you should pass the \`id\` prop to \`useShow\`. Otherwise, \`useShow\` will not be able to infer the \`id\` from the current URL.
|
|
9
9
|
|
|
10
10
|
See https://refine.dev/docs/api-reference/core/hooks/show/useShow/#resource`);let i=Qt({resource:P,id:E??"",queryOptions:{enabled:E!==void 0,...d},successNotification:r,errorNotification:o,meta:b,metaData:b,liveMode:n,onLiveEvent:u,dataProviderName:p}),{elapsedTime:f}=j({isLoading:i.isFetching,interval:l==null?void 0:l.interval,onInterval:l==null?void 0:l.onInterval});return{queryResult:i,showId:E,setShowId:A,overtime:{elapsedTime:f}}};import{useEffect as La,useState as _r}from"react";import{parse as Ea}from"papaparse";import Ua from"lodash-es/chunk";var bT=({resourceName:e,resource:t,mapData:r=l=>l,paparseOptions:o,batchSize:s=Number.MAX_SAFE_INTEGER,onFinish:a,meta:n,metaData:u,onProgress:p,dataProviderName:d}={})=>{let[l,c]=_r(0),[m,P]=_r(0),[x,C]=_r(!1),{resource:v,identifier:g}=V(t??e),E=K(),A=Gr(),b=kt(),i=E({resource:v,meta:M(n,u)}),f;s===1?f=b:f=A;let T=()=>{P(0),c(0),C(!1)},h=y=>{let D={succeeded:y.filter(L=>L.type==="success"),errored:y.filter(L=>L.type==="error")};a==null||a(D),C(!1)};La(()=>{p==null||p({totalAmount:m,processedAmount:l})},[m,l]);let R=({file:y})=>(T(),new Promise(D=>{C(!0),Ea(y,{complete:async({data:L})=>{let w=Yt(L,r);if(P(w.length),s===1){let I=w.map(S=>async()=>({response:await b.mutateAsync({resource:g??"",values:S,successNotification:!1,errorNotification:!1,dataProviderName:d,meta:i,metaData:i}),value:S})),U=await sr(I,({response:S,value:F})=>(c(k=>k+1),{response:[S.data],type:"success",request:[F]}),(S,F)=>({response:[S],type:"error",request:[w[F]]}));D(U)}else{let I=Ua(w,s),U=I.map(F=>async()=>({response:await A.mutateAsync({resource:g??"",values:F,successNotification:!1,errorNotification:!1,dataProviderName:d,meta:i,metaData:i}),value:F,currentBatchLength:F.length})),S=await sr(U,({response:F,currentBatchLength:k,value:G})=>(c(O=>O+k),{response:F.data,type:"success",request:G}),(F,k)=>({response:[F],type:"error",request:I[k]}));D(S)}},...o})}).then(D=>(h(D),D)));return{inputProps:{type:"file",accept:".csv",onChange:y=>{y.target.files&&y.target.files.length>0&&R({file:y.target.files[0]})}},mutationResult:f,isLoading:x,handleChange:R}};import{useCallback as os,useState as Ma}from"react";var DT=({defaultVisible:e=!1}={})=>{let[t,r]=Ma(e),o=os(()=>r(!0),[t]),s=os(()=>r(!1),[t]);return{visible:t,show:o,close:s}};import Ia from"react";var Nt=()=>{let e=_(),{resource:t,resources:r}=V(),o=le();return Ia.useCallback(({resource:a,action:n,meta:u})=>{var m;let p=a||t;if(!p)return;let l=(m=ye(p,r,e==="legacy").find(P=>P.action===n))==null?void 0:m.route;return l?Re(l,p==null?void 0:p.meta,o,u):void 0},[r,t,o])};var wa=({resource:e,action:t,meta:r,legacy:o})=>Nt()({resource:e,action:t,meta:r,legacy:o});import Sa,{useContext as Aa}from"react";var nt=()=>{let e=Aa(ze);return e!=null&&e.Link?e.Link:({to:r,...o})=>Sa.createElement("a",{href:r,...o})};import{useContext as Qa}from"react";import ss from"react";var _e={useHistory:()=>!1,useLocation:()=>!1,useParams:()=>({}),Prompt:()=>null,Link:()=>null},Fa=ss.createContext(_e),Ht=Fa,ns=({children:e,useHistory:t,useLocation:r,useParams:o,Prompt:s,Link:a,routes:n})=>ss.createElement(Ht.Provider,{value:{useHistory:t??_e.useHistory,useLocation:r??_e.useLocation,useParams:o??_e.useParams,Prompt:s??_e.Prompt,Link:a??_e.Link,routes:n??_e.routes}},e);var re=()=>{let e=Qa(Ht),{useHistory:t,useLocation:r,useParams:o,Prompt:s,Link:a,routes:n}=e??_e;return{useHistory:t,useLocation:r,useParams:o,Prompt:s,Link:a,routes:n}};import{useQuery as ka}from"@tanstack/react-query";import{useContext as Va}from"react";import as from"react";var Xe=as.createContext({options:{buttons:{enableAccessControl:!0,hideIfUnauthorized:!1}}});var is=({can:e,children:t,options:r})=>as.createElement(Xe.Provider,{value:{can:e,options:r?{...r,buttons:{enableAccessControl:!0,hideIfUnauthorized:!1,...r.buttons}}:{buttons:{enableAccessControl:!0,hideIfUnauthorized:!1}}}},t);var Rt=e=>{if(!e)return;let{icon:t,list:r,edit:o,create:s,show:a,clone:n,children:u,meta:p,options:d,...l}=e,{icon:c,...m}=p??{},{icon:P,...x}=d??{};return{...l,...p?{meta:m}:{},...d?{options:x}:{}}};var us=({action:e,resource:t,params:r,queryOptions:o})=>{let{can:s}=Va(Xe),{resource:a,...n}=r??{},u=Rt(a),p=ka(["useCan",{action:e,resource:t,params:{...n,resource:u},enabled:o==null?void 0:o.enabled}],()=>(s==null?void 0:s({action:e,resource:t,params:{...n,resource:u}}))??Promise.resolve({can:!0}),{enabled:typeof s<"u",...o,retry:!1});return typeof s>"u"?{data:{can:!0}}:p};import cs from"react";var yR=()=>{let{can:e}=cs.useContext(Xe);return{can:cs.useMemo(()=>e?async({params:o,...s})=>{let a=o!=null&&o.resource?Rt(o.resource):void 0;return e({...s,...o?{params:{...o,resource:a}}:{}})}:void 0,[e])}};import{useCallback as ps,useMemo as Ba,useState as jr}from"react";import Na from"lodash/uniqBy";import Ha from"lodash/debounce";import mr from"lodash/get";var IR=e=>{let[t,r]=jr([]),[o,s]=jr([]),[a,n]=jr([]),{resource:u,sort:p,sorters:d,filters:l=[],optionLabel:c="title",optionValue:m="id",debounce:P=300,successNotification:x,errorNotification:C,defaultValueQueryOptions:v,queryOptions:g,fetchSize:E,pagination:A,hasPagination:b=!1,liveMode:i,defaultValue:f=[],onLiveEvent:T,onSearch:h,liveParams:R,meta:y,metaData:D,dataProviderName:L,overtimeOptions:w}=e,{resource:I,identifier:U}=V(u),F=K()({resource:I,meta:M(y,D)}),k=Array.isArray(f)?f:[f],G=ps(Z=>{n(Z.data.map(q=>({label:mr(q,c),value:mr(q,m)})))},[c,m]),O=v??g,z=Nr({resource:U,ids:k,queryOptions:{...O,enabled:k.length>0&&((O==null?void 0:O.enabled)??!0),onSuccess:Z=>{var q;G(Z),(q=O==null?void 0:O.onSuccess)==null||q.call(O,Z)}},meta:F,metaData:F,liveMode:"off",dataProviderName:L}),X=ps(Z=>{s(Z.data.map(q=>({label:mr(q,c),value:mr(q,m)})))},[c,m]),Q=Ft({resource:U,sorters:M(d,p),filters:l.concat(t),pagination:{current:A==null?void 0:A.current,pageSize:(A==null?void 0:A.pageSize)??E,mode:A==null?void 0:A.mode},hasPagination:b,queryOptions:{...g,onSuccess:Z=>{var q;X(Z),(q=g==null?void 0:g.onSuccess)==null||q.call(g,Z)}},successNotification:x,errorNotification:C,meta:F,metaData:F,liveMode:i,liveParams:R,onLiveEvent:T,dataProviderName:L}),$=Z=>{if(h){r(h(Z));return}if(Z)r([{field:c,operator:"contains",value:Z}]);else{r([]);return}},{elapsedTime:N}=j({isLoading:Q.isFetching||z.isFetching,interval:w==null?void 0:w.interval,onInterval:w==null?void 0:w.onInterval});return{queryResult:Q,defaultValueQueryResult:z,options:Ba(()=>Na([...o,...a],"value"),[o,a]),onSearch:Ha($,P),overtime:{elapsedTime:N}}};import Oa,{useState as fr,useEffect as ds}from"react";import ls from"qs";import yr from"lodash/differenceWith";import gr from"lodash/isEqual";import $a from"warn-once";var ms=[],fs=[];function WR({initialCurrent:e,initialPageSize:t,hasPagination:r=!0,pagination:o,initialSorter:s,permanentSorter:a=fs,defaultSetFilterBehavior:n,initialFilter:u,permanentFilter:p=ms,filters:d,sorters:l,syncWithLocation:c,resource:m,successNotification:P,errorNotification:x,queryOptions:C,liveMode:v,onLiveEvent:g,liveParams:E,meta:A,metaData:b,dataProviderName:i,overtimeOptions:f}={}){var eo,to,ro,oo,so;let{syncWithLocation:T}=Br(),h=c??T,R=Xo(v),y=_(),{useLocation:D}=re(),{search:L,pathname:w}=D(),I=K(),U=le(),S=((d==null?void 0:d.mode)||"server")==="server",F=((l==null?void 0:l.mode)||"server")==="server",k=r===!1?"off":"server",G=((o==null?void 0:o.mode)??k)!=="off",O=M(o==null?void 0:o.current,e),z=M(o==null?void 0:o.pageSize,t),X=M(A,b),{parsedCurrent:Q,parsedPageSize:$,parsedSorter:N,parsedFilters:Z}=Jt(L??"?"),q=M(d==null?void 0:d.initial,u),he=M(d==null?void 0:d.permanent,p)??ms,je=M(l==null?void 0:l.initial,s),Oe=M(l==null?void 0:l.permanent,a)??fs,$t=M(d==null?void 0:d.defaultBehavior,n)??"merge",ut,ct,qe,pt;h?(ut=((eo=U==null?void 0:U.params)==null?void 0:eo.current)||Q||O||1,ct=((to=U==null?void 0:U.params)==null?void 0:to.pageSize)||$||z||10,qe=((ro=U==null?void 0:U.params)==null?void 0:ro.sorters)||(N.length?N:je),pt=((oo=U==null?void 0:U.params)==null?void 0:oo.filters)||(Z.length?Z:q)):(ut=O||1,ct=z||10,qe=je,pt=q);let{replace:ht}=ue(),et=ce(),{resource:Gt,identifier:tt}=V(m),Wt=I({resource:Gt,meta:X});Oa.useEffect(()=>{$a(typeof tt>"u","useTable: `resource` is not defined.")},[tt]);let[$e,Kt]=fr(tr(Oe,qe??[])),[dt,vt]=fr(er(he,pt??[])),[lt,Dt]=fr(ut),[Ge,de]=fr(ct),Ve=({pagination:{current:fe,pageSize:Me},sorter:zt,filters:_t})=>{if(y==="new")return et({type:"path",options:{keepHash:!0,keepQuery:!0},query:{...G?{current:fe,pageSize:Me}:{},sorters:zt,filters:_t,...ve()}})??"";{let Et=ls.parse(L==null?void 0:L.substring(1)),ks=Xt({pagination:{pageSize:Me,current:fe},sorters:$e??zt,filters:_t,...Et});return`${w??""}?${ks??""}`}};ds(()=>{L===""&&(Dt(ut),de(ct),Kt(tr(Oe,qe??[])),vt(er(he,pt??[])))},[L]);let ve=()=>{if(y==="new"){let{sorters:fe,filters:Me,pageSize:zt,current:_t,...Et}=(U==null?void 0:U.params)??{};return Et}else{let{sorter:fe,filters:Me,pageSize:zt,current:_t,...Et}=ls.parse(L,{ignoreQueryPrefix:!0});return Et}};ds(()=>{if(h){let fe=ve();if(y==="new")et({type:"replace",options:{keepQuery:!0},query:{...G?{pageSize:Ge,current:lt}:{},sorters:yr($e,Oe,gr),filters:yr(dt,he,gr)}});else{let Me=Xt({...G?{pagination:{pageSize:Ge,current:lt}}:{},sorters:yr($e,Oe,gr),filters:yr(dt,he,gr),...fe});return ht==null?void 0:ht(`${w}?${Me}`,void 0,{shallow:!0})}}},[h,lt,Ge,$e,dt]);let Be=Ft({resource:tt,hasPagination:r,pagination:{current:lt,pageSize:Ge,mode:o==null?void 0:o.mode},filters:S?yt(he,dt):void 0,sorters:F?qt(Oe,$e):void 0,queryOptions:C,successNotification:P,errorNotification:x,meta:Wt,metaData:Wt,liveMode:R,liveParams:E,onLiveEvent:g,dataProviderName:i}),xe=fe=>{vt(Me=>yt(he,fe,Me))},Ze=fe=>{vt(yt(he,fe))},rt=fe=>{vt(Me=>yt(he,fe(Me)))},ot=(fe,Me=$t)=>{typeof fe=="function"?rt(fe):Me==="replace"?Ze(fe):xe(fe)},Lt=fe=>{Kt(()=>qt(Oe,fe))},{elapsedTime:Qs}=j({isLoading:Be.isFetching,interval:f==null?void 0:f.interval,onInterval:f==null?void 0:f.onInterval});return{tableQueryResult:Be,sorters:$e,setSorters:Lt,sorter:$e,setSorter:Lt,filters:dt,setFilters:ot,current:lt,setCurrent:Dt,pageSize:Ge,setPageSize:de,pageCount:Ge?Math.ceil((((so=Be.data)==null?void 0:so.total)??0)/Ge):1,createLinkForSyncWithLocation:Ve,overtime:{elapsedTime:Qs}}}import{useContext as Ts}from"react";import{useMutation as Rs,useQueryClient as Ga}from"@tanstack/react-query";import ys from"react";var at=ys.createContext({}),gs=({create:e,get:t,update:r,children:o})=>ys.createElement(at.Provider,{value:{create:e,get:t,update:r}},o);var we=({logMutationOptions:e,renameMutationOptions:t}={})=>{let r=Ga(),o=Ts(at),s=W(),{resources:a}=Ts(Je),{data:n,refetch:u,isLoading:p}=Tr({v3LegacyAuthProviderCompatible:!!(s!=null&&s.isLegacy),queryOptions:{enabled:!!o}}),d=Rs(async c=>{var C,v,g,E,A;let m=pe(c.resource,a),P=M((C=m==null?void 0:m.meta)==null?void 0:C.audit,(v=m==null?void 0:m.options)==null?void 0:v.audit,(E=(g=m==null?void 0:m.options)==null?void 0:g.auditLog)==null?void 0:E.permissions);if(P&&!Ur(P,c.action))return;let x;return p&&(x=await u()),await((A=o.create)==null?void 0:A.call(o,{...c,author:n??(x==null?void 0:x.data)}))},e),l=Rs(async c=>{var m;return await((m=o.update)==null?void 0:m.call(o,c))},{onSuccess:c=>{if(c!=null&&c.resource){let m=ee(c==null?void 0:c.resource);r.invalidateQueries(m.logList())}},...t});return{log:d,rename:l}};import{useContext as Wa}from"react";import{useQuery as Ka}from"@tanstack/react-query";var dP=({resource:e,action:t,meta:r,author:o,metaData:s,queryOptions:a})=>{let{get:n}=Wa(at),u=ee(e,void 0,s);return Ka(u.logList(r),()=>(n==null?void 0:n({resource:e,action:t,author:o,meta:r,metaData:s}))??Promise.resolve([]),{enabled:typeof n<"u",...a,retry:!1})};import{useCallback as za}from"react";import{useQueryClient as _a}from"@tanstack/react-query";var Se=()=>{let{resources:e}=V(),t=_a();return za(({resource:o,dataProviderName:s,invalidates:a,id:n})=>{if(a===!1)return;let u=ee(o,H(o,s,e));a.forEach(p=>{switch(p){case"all":t.invalidateQueries(u.all);break;case"list":t.invalidateQueries(u.list());break;case"many":t.invalidateQueries(u.many());break;case"resourceAll":t.invalidateQueries(u.resourceAll);break;case"detail":t.invalidateQueries(u.detail(n||""));break;default:break}})},[])};import{useContext as ja}from"react";import Za from"warn-once";var SP=({meta:e={}}={})=>{let t=_(),{i18nProvider:r}=ja(Ae),o=le(),s=B(),{resources:a,resource:n,action:u}=V(),{options:{textTransformers:p}}=ae(),d=[];if(!(n!=null&&n.name))return{breadcrumbs:d};let l=c=>{var P,x,C,v,g,E;let m=typeof c=="string"?pe(c,a,t==="legacy")??{name:c}:c;if(m){let A=M((P=m==null?void 0:m.meta)==null?void 0:P.parent,m==null?void 0:m.parentName);A&&l(A);let b=ye(m,a,t==="legacy").find(T=>T.action==="list"),i=(x=b==null?void 0:b.resource)!=null&&x.list?b==null?void 0:b.route:void 0,f=i?t==="legacy"?i:Re(i,m==null?void 0:m.meta,o,e):void 0;d.push({label:M((C=m.meta)==null?void 0:C.label,(v=m.options)==null?void 0:v.label)??s(`${m.name}.${m.name}`,p.humanize(m.name)),href:f,icon:M((g=m.meta)==null?void 0:g.icon,(E=m.options)==null?void 0:E.icon,m.icon)})}};if(l(n),u&&u!=="list"){let c=`actions.${u}`,m=s(c);typeof r<"u"&&m===c?(Za(!0,`[useBreadcrumb]: Breadcrumb missing translate key for the "${u}" action. Please add "actions.${u}" key to your translation file.
|
|
11
|
-
For more information, see https://refine.dev/docs/api-reference/core/hooks/useBreadcrumb/#i18n-support`),d.push({label:s(`buttons.${u}`,p.humanize(u))})):d.push({label:s(c,p.humanize(u))})}return{breadcrumbs:d}};import Zr from"react";var Pt=(e,t,r=!1)=>{let o=[],s=Ee(e,t);for(;s;)o.push(s),s=Ee(s,t);return o.reverse(),`/${[...o,e].map(n=>Te((r?n.route:void 0)??n.identifier??n.name)).join("/").replace(/^\//,"")}`};var Ps=(e,t=!1)=>{let r={item:{name:"__root__"},children:{}};e.forEach(s=>{let a=[],n=Ee(s,e);for(;n;)a.push(n),n=Ee(n,e);a.reverse();let u=r;a.forEach(d=>{let l=(t?d.route:void 0)??d.identifier??d.name;u.children[l]||(u.children[l]={item:d,children:{}}),u=u.children[l]});let p=(t?s.route:void 0)??s.identifier??s.name;u.children[p]||(u.children[p]={item:s,children:{}})});let o=s=>{let a=[];return Object.keys(s.children).forEach(n=>{let u=Pt(s.children[n].item,e,t),p={...s.children[n].item,key:u,children:o(s.children[n])};a.push(p)}),a};return o(r)};var xs=e=>e.split("?")[0].split("#")[0].replace(/(.+)(\/$)/,"$1"),Ya=({meta:e,hideOnMissingParameter:t}={hideOnMissingParameter:!0})=>{let r=B(),o=Nt(),s=_(),{resource:a,resources:n}=V(),{pathname:u}=le(),{useLocation:p}=re(),{pathname:d}=p(),l=gt(),m=`/${((s==="legacy"?xs(d):u?xs(u):void 0)??"").replace(/^\//,"")}`,P=a?Pt(a,n,s==="legacy"):m??"",x=Zr.useMemo(()=>{if(!a)return[];let g=Ee(a,n),E=[Pt(a,n)];for(;g;)E.push(Pt(g,n)),g=Ee(g,n);return E},[]),C=Zr.useCallback(g=>{var A,b,i,f,T,h;if((((A=g==null?void 0:g.meta)==null?void 0:A.hide)??((b=g==null?void 0:g.options)==null?void 0:b.hide))||!(g!=null&&g.list)&&g.children.length===0)return;let E=g.list?o({resource:g,action:"list",legacy:s==="legacy",meta:e}):void 0;if(!(t&&E&&E.match(/(\/|^):(.+?)(\/|$){1}/)))return{...g,route:E,icon:M((i=g.meta)==null?void 0:i.icon,(f=g.options)==null?void 0:f.icon,g.icon),label:M((T=g==null?void 0:g.meta)==null?void 0:T.label,(h=g==null?void 0:g.options)==null?void 0:h.label)??r(`${g.name}.${g.name}`,l(g.name,"plural"))}},[s,e,r,t]),v=Zr.useMemo(()=>{let g=Ps(n,s==="legacy"),E=A=>A.flatMap(b=>{let i=E(b.children),f=C({...b,children:i});return f?[f]:[]});return E(g)},[n,s,C]);return{defaultOpenKeys:x,selectedKey:P,menuItems:v}};var K=()=>{let{params:e}=le();return({resource:r,meta:o}={})=>{let{meta:s}=Rt(r)??{meta:{}},{filters:a,sorters:n,current:u,pageSize:p,...d}=e??{};return{...s,...d,...o}}};var qa=()=>{let[e,t]=Xa(),r=B(),{push:o}=ue(),s=ce(),a=_(),{resource:n,action:u}=V();return Ja(()=>{n&&u&&t(r("pages.error.info",{action:u,resource:n.name},`You may have forgotten to add the "${u}" component to "${n.name}" resource.`))},[n,u]),Ot.createElement(Ot.Fragment,null,Ot.createElement("h1",null,r("pages.error.404",void 0,"Sorry, the page you visited does not exist.")),e&&Ot.createElement("p",null,e),Ot.createElement("button",{onClick:()=>{a==="legacy"?o("/"):s({to:"/"})}},r("pages.error.backHome",void 0,"Back Home")))};import Pe,{useState as Cs}from"react";var Fr=()=>{let[e,t]=Cs(""),[r,o]=Cs(""),s=B(),a=W(),{mutate:n}=Ut({v3LegacyAuthProviderCompatible:!!(a!=null&&a.isLegacy)});return Pe.createElement(Pe.Fragment,null,Pe.createElement("h1",null,s("pages.login.title","Sign in your account")),Pe.createElement("form",{onSubmit:u=>{u.preventDefault(),n({username:e,password:r})}},Pe.createElement("table",null,Pe.createElement("tbody",null,Pe.createElement("tr",null,Pe.createElement("td",null,s("pages.login.username",void 0,"username"),":"),Pe.createElement("td",null,Pe.createElement("input",{type:"text",size:20,autoCorrect:"off",spellCheck:!1,autoCapitalize:"off",autoFocus:!0,required:!0,value:e,onChange:u=>t(u.target.value)}))),Pe.createElement("tr",null,Pe.createElement("td",null,s("pages.login.password",void 0,"password"),":"),Pe.createElement("td",null,Pe.createElement("input",{type:"password",required:!0,size:20,value:r,onChange:u=>o(u.target.value)}))))),Pe.createElement("br",null),Pe.createElement("input",{type:"submit",value:"login"})))};import xt from"react";import me,{useState as Yr}from"react";var bs=({providers:e,registerLink:t,forgotPasswordLink:r,rememberMe:o,contentProps:s,wrapperProps:a,renderContent:n,formProps:u,title:p=void 0})=>{let d=_(),l=nt(),{Link:c}=re(),m=d==="legacy"?c:l,[P,x]=Yr(""),[C,v]=Yr(""),[g,E]=Yr(!1),A=B(),b=W(),{mutate:i}=Ut({v3LegacyAuthProviderCompatible:!!(b!=null&&b.isLegacy)}),f=(R,y)=>me.createElement(m,{to:R},y),T=()=>e?e.map(R=>me.createElement("div",{key:R.name,style:{display:"flex",alignItems:"center",justifyContent:"center",marginBottom:"1rem"}},me.createElement("button",{onClick:()=>i({providerName:R.name}),style:{display:"flex",alignItems:"center"}},R==null?void 0:R.icon,R.label??me.createElement("label",null,R.label)))):null,h=me.createElement("div",{...s},me.createElement("h1",{style:{textAlign:"center"}},A("pages.login.title","Sign in to your account")),T(),me.createElement("hr",null),me.createElement("form",{onSubmit:R=>{R.preventDefault(),i({email:P,password:C,remember:g})},...u},me.createElement("div",{style:{display:"flex",flexDirection:"column",padding:25}},me.createElement("label",{htmlFor:"email-input"},A("pages.login.fields.email","Email")),me.createElement("input",{id:"email-input",name:"email",type:"text",size:20,autoCorrect:"off",spellCheck:!1,autoCapitalize:"off",required:!0,value:P,onChange:R=>x(R.target.value)}),me.createElement("label",{htmlFor:"password-input"},A("pages.login.fields.password","Password")),me.createElement("input",{id:"password-input",type:"password",name:"password",required:!0,size:20,value:C,onChange:R=>v(R.target.value)}),o??me.createElement(me.Fragment,null,me.createElement("label",{htmlFor:"remember-me-input"},A("pages.login.buttons.rememberMe","Remember me"),me.createElement("input",{id:"remember-me-input",name:"remember",type:"checkbox",size:20,checked:g,value:g.toString(),onChange:()=>{E(!g)}}))),me.createElement("br",null),r??f("/forgot-password",A("pages.login.buttons.forgotPassword","Forgot password?")),me.createElement("input",{type:"submit",value:A("pages.login.signin","Sign in")}),t??me.createElement("span",null,A("pages.login.buttons.noAccount","Don\u2019t have an account?")," ",f("/register",A("pages.login.register","Sign up"))))));return me.createElement("div",{...a},n?n(h,p):h)};import ge,{useState as hs}from"react";var vs=({providers:e,loginLink:t,wrapperProps:r,contentProps:o,renderContent:s,formProps:a,title:n=void 0})=>{let u=_(),p=nt(),{Link:d}=re(),l=u==="legacy"?d:p,[c,m]=hs(""),[P,x]=hs(""),C=B(),v=W(),{mutate:g,isLoading:E}=Cr({v3LegacyAuthProviderCompatible:!!(v!=null&&v.isLegacy)}),A=(f,T)=>ge.createElement(l,{to:f},T),b=()=>e?e.map(f=>ge.createElement("div",{key:f.name,style:{display:"flex",alignItems:"center",justifyContent:"center",marginBottom:"1rem"}},ge.createElement("button",{onClick:()=>g({providerName:f.name}),style:{display:"flex",alignItems:"center"}},f==null?void 0:f.icon,f.label??ge.createElement("label",null,f.label)))):null,i=ge.createElement("div",{...o},ge.createElement("h1",{style:{textAlign:"center"}},C("pages.register.title","Sign up for your account")),b(),ge.createElement("hr",null),ge.createElement("form",{onSubmit:f=>{f.preventDefault(),g({email:c,password:P})},...a},ge.createElement("div",{style:{display:"flex",flexDirection:"column",padding:25}},ge.createElement("label",{htmlFor:"email-input"},C("pages.register.fields.email","Email")),ge.createElement("input",{id:"email-input",name:"email",type:"email",size:20,autoCorrect:"off",spellCheck:!1,autoCapitalize:"off",required:!0,value:c,onChange:f=>m(f.target.value)}),ge.createElement("label",{htmlFor:"password-input"},C("pages.register.fields.password","Password")),ge.createElement("input",{id:"password-input",name:"password",type:"password",required:!0,size:20,value:P,onChange:f=>x(f.target.value)}),ge.createElement("input",{type:"submit",value:C("pages.register.buttons.submit","Sign up"),disabled:E}),t??ge.createElement(ge.Fragment,null,ge.createElement("span",null,C("pages.login.buttons.haveAccount","Have an account?")," ",A("/login",C("pages.login.signin","Sign in")))))));return ge.createElement("div",{...r},s?s(i,n):i)};import Fe,{useState as ei}from"react";var Ds=({loginLink:e,wrapperProps:t,contentProps:r,renderContent:o,formProps:s,title:a=void 0})=>{let n=B(),u=_(),p=nt(),{Link:d}=re(),l=u==="legacy"?d:p,[c,m]=ei(""),{mutate:P,isLoading:x}=hr(),C=(g,E)=>Fe.createElement(l,{to:g},E),v=Fe.createElement("div",{...r},Fe.createElement("h1",{style:{textAlign:"center"}},n("pages.forgotPassword.title","Forgot your password?")),Fe.createElement("hr",null),Fe.createElement("form",{onSubmit:g=>{g.preventDefault(),P({email:c})},...s},Fe.createElement("div",{style:{display:"flex",flexDirection:"column",padding:25}},Fe.createElement("label",{htmlFor:"email-input"},n("pages.forgotPassword.fields.email","Email")),Fe.createElement("input",{id:"email-input",name:"email",type:"mail",autoCorrect:"off",spellCheck:!1,autoCapitalize:"off",required:!0,value:c,onChange:g=>m(g.target.value)}),Fe.createElement("input",{type:"submit",disabled:x,value:n("pages.forgotPassword.buttons.submit","Send reset instructions")}),Fe.createElement("br",null),e??Fe.createElement("span",null,n("pages.register.buttons.haveAccount","Have an account? ")," ",C("/login",n("pages.login.signin","Sign in"))))));return Fe.createElement("div",{...t},o?o(v,a):v)};import ke,{useState as Ls}from"react";var Es=({wrapperProps:e,contentProps:t,renderContent:r,formProps:o,title:s=void 0})=>{let a=B(),n=W(),{mutate:u,isLoading:p}=Dr({v3LegacyAuthProviderCompatible:!!(n!=null&&n.isLegacy)}),[d,l]=Ls(""),[c,m]=Ls(""),P=ke.createElement("div",{...t},ke.createElement("h1",{style:{textAlign:"center"}},a("pages.updatePassword.title","Update Password")),ke.createElement("hr",null),ke.createElement("form",{onSubmit:x=>{x.preventDefault(),u({password:d,confirmPassword:c})},...o},ke.createElement("div",{style:{display:"flex",flexDirection:"column",padding:25}},ke.createElement("label",{htmlFor:"password-input"},a("pages.updatePassword.fields.password","New Password")),ke.createElement("input",{id:"password-input",name:"password",type:"password",required:!0,size:20,value:d,onChange:x=>l(x.target.value)}),ke.createElement("label",{htmlFor:"confirm-password-input"},a("pages.updatePassword.fields.confirmPassword","Confirm New Password")),ke.createElement("input",{id:"confirm-password-input",name:"confirmPassword",type:"password",required:!0,size:20,value:c,onChange:x=>m(x.target.value)}),ke.createElement("input",{type:"submit",disabled:p,value:a("pages.updatePassword.buttons.submit","Update")}))));return ke.createElement("div",{...e},r?r(P,s):P)};var ti=e=>{let{type:t}=e;return xt.createElement(xt.Fragment,null,(()=>{switch(t){case"register":return xt.createElement(vs,{...e});case"forgotPassword":return xt.createElement(Ds,{...e});case"updatePassword":return xt.createElement(Es,{...e});default:return xt.createElement(bs,{...e})}})())};import Le from"react";var Jr=()=>Le.createElement(Le.Fragment,null,Le.createElement("h1",null,"Welcome on board"),Le.createElement("p",null,"Your configuration is completed."),Le.createElement("p",null,"Now you can get started by adding your resources to the"," ",Le.createElement("code",null,"`resources`")," property of ",Le.createElement("code",null,"`<Refine>`")),Le.createElement("div",{style:{display:"flex",gap:8}},Le.createElement("a",{href:"https://refine.dev",target:"_blank",rel:"noreferrer"},Le.createElement("button",null,"Documentation")),Le.createElement("a",{href:"https://refine.dev/examples",target:"_blank",rel:"noreferrer"},Le.createElement("button",null,"Examples")),Le.createElement("a",{href:"https://discord.gg/refine",target:"_blank",rel:"noreferrer"},Le.createElement("button",null,"Community"))));import J,{useState as ri}from"react";var oi=[{title:"Documentation",description:"Learn about the technical details of using refine in your projects.",link:"https://refine.dev/",icon:J.createElement("svg",{width:"14",height:"16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},J.createElement("path",{d:"M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V5a1 1 0 0 0-1-1H3a1 1 0 0 1 0-2h10a1 1 0 1 0 0-2H2Z",fill:"#fff"}))},{title:"Tutorial",description:"Learn how to use refine by building a fully-functioning CRUD app, from scratch to full launch.",link:"https://refine.dev/docs/tutorial/introduction/index/",icon:J.createElement("svg",{width:"16",height:"14",fill:"none",xmlns:"http://www.w3.org/2000/svg"},J.createElement("path",{d:"M0 4.573c0-.475.163-.948.53-1.25a4.57 4.57 0 0 1 .854-.553L5.956.485a4.571 4.571 0 0 1 4.088 0l4.572 2.285c.308.154.594.34.853.553.306.251.47.62.517 1.01.01.055.014.112.014.169v6.5a1 1 0 0 1-2 0V6.684l-3.956 1.978a4.571 4.571 0 0 1-4.088 0L1.384 6.376a4.57 4.57 0 0 1-.853-.553C.163 5.522 0 5.05 0 4.573Z",fill:"#fff"}),J.createElement("path",{d:"M5.061 13.305 3 12.274V9.42l2.061 1.031a6.571 6.571 0 0 0 5.878 0L13 9.421v2.853l-2.061 1.03a6.571 6.571 0 0 1-5.878 0Z",fill:"#fff"}))},{title:"Examples",description:"A collection of reference applications you can use as a starting point.",link:"https://refine.dev/examples",icon:J.createElement("svg",{width:"16",height:"16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},J.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v4H0V2Zm3 2a1 1 0 1 0 0-2 1 1 0 0 0 0 2Zm4-1a1 1 0 1 1-2 0 1 1 0 0 1 2 0Zm2 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z",fill:"#fff"}),J.createElement("path",{d:"M0 14V8h16v6a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2Z",fill:"#fff"}))},{title:"Community",description:"Join our Discord community and keep up with the latest news.",link:"https://discord.gg/refine",icon:J.createElement("svg",{width:"16",height:"12",fill:"none",xmlns:"http://www.w3.org/2000/svg"},J.createElement("path",{d:"M13.553 1.005A13.334 13.334 0 0 0 10.253 0c-.156.276-.298.56-.423.85a12.42 12.42 0 0 0-3.664 0A8.975 8.975 0 0 0 5.744 0 13.43 13.43 0 0 0 2.44 1.007C.351 4.066-.215 7.05.068 9.99A13.36 13.36 0 0 0 4.116 12c.328-.436.618-.9.867-1.384a8.647 8.647 0 0 1-1.365-.645c.115-.082.227-.167.335-.249a9.594 9.594 0 0 0 8.094 0c.11.089.222.173.335.25-.436.254-.894.47-1.368.646.249.484.539.946.867 1.382a13.3 13.3 0 0 0 4.051-2.01c.332-3.41-.568-6.365-2.379-8.985Zm-8.21 7.176c-.79 0-1.442-.709-1.442-1.58 0-.872.63-1.587 1.439-1.587s1.456.715 1.442 1.586c-.014.872-.636 1.58-1.44 1.58Zm5.315 0c-.79 0-1.44-.709-1.44-1.58 0-.872.63-1.587 1.44-1.587.81 0 1.452.715 1.438 1.586-.014.872-.634 1.58-1.438 1.58Z",fill:"#fff"}))}],si=()=>{let e=ur("(max-width: 1010px)"),t=ur("(max-width: 650px)"),r=()=>t?"1, 280px":e?"2, 280px":"4, 208px",o=()=>t?"32px":e?"40px":"48px",s=()=>t?"16px":e?"20px":"24px";return J.createElement("div",{style:{backgroundImage:"url(https://refine.ams3.cdn.digitaloceanspaces.com/welcome-page/welcome-page.webp)",backgroundPosition:"center top",backgroundSize:"cover",backgroundRepeat:"no-repeat",minHeight:"100vh",backgroundColor:"#0D0D12",fontFamily:"Arial",color:"#FFFFFF"}},J.createElement("div",{style:{height:"89px"}}),J.createElement("div",{style:{display:"flex",justifyContent:"center"}},J.createElement("img",{src:"https://refine.ams3.cdn.digitaloceanspaces.com/welcome-page/welcome-logo.webp",width:"198",height:"54"})),J.createElement("div",{style:{height:e?"270px":"22vw",minHeight:e?"270px":"313px"}}),J.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"16px",textAlign:"center"}},J.createElement("h1",{style:{fontSize:o(),fontWeight:700,margin:"0px"}},"Welcome Aboard!"),J.createElement("h4",{style:{fontSize:s(),fontWeight:400,margin:"0px"}},"Your configuration is completed.")),J.createElement("div",{style:{height:"64px"}}),J.createElement("div",{style:{display:"grid",gridTemplateColumns:`repeat(${r()})`,justifyContent:"center",gap:"48px",paddingRight:"16px",paddingLeft:"16px",maxWidth:"976px",margin:"auto"}},oi.map(a=>J.createElement(ni,{key:`welcome-page-${a.title}`,card:a}))),J.createElement("div",{style:{height:"64px"}}))},ni=({card:e})=>{let{title:t,description:r,icon:o,link:s}=e,[a,n]=ri(!1);return J.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"16px"}},J.createElement("div",{style:{display:"flex",alignItems:"center"}},J.createElement("a",{onPointerEnter:()=>n(!0),onPointerLeave:()=>n(!1),style:{display:"flex",alignItems:"center",color:"#fff",textDecoration:"none"},href:s},o,J.createElement("span",{style:{fontSize:"16px",fontWeight:700,marginLeft:"13px",marginRight:"14px"}},t),J.createElement("svg",{style:{transition:"transform 0.5s ease-in-out, opacity 0.2s ease-in-out",...a&&{transform:"translateX(4px)",opacity:1}},width:"12",height:"8",fill:"none",opacity:"0.5",xmlns:"http://www.w3.org/2000/svg"},J.createElement("path",{d:"M7.293.293a1 1 0 0 1 1.414 0l3 3a1 1 0 0 1 0 1.414l-3 3a1 1 0 0 1-1.414-1.414L8.586 5H1a1 1 0 0 1 0-2h7.586L7.293 1.707a1 1 0 0 1 0-1.414Z",fill:"#fff"})))),J.createElement("span",{style:{fontSize:"12px",opacity:.5,lineHeight:"16px"}},r))};import{QueryClient as As,QueryClientProvider as ci}from"@tanstack/react-query";import{ReactQueryDevtools as pi}from"@tanstack/react-query-devtools";import ne from"react";import{useEffect as ii}from"react";import{useContext as it}from"react";var ai="4.27.0",Us=()=>{let e=Lr(),t=it(at),r=it(Ke),o=it(Ht),s=it(Vt),{i18nProvider:a}=it(Ae),n=it(Bt),u=it(Xe),{resources:p}=V(),d=!!t.create||!!t.get||!!t.update,l=!!(r!=null&&r.publish)||!!(r!=null&&r.subscribe)||!!(r!=null&&r.unsubscribe),c=!!o.useHistory||!!o.Link||!!o.Prompt||!!o.useLocation||!!o.useParams,m=!!s,P=!!(a!=null&&a.changeLocale)||!!(a!=null&&a.getLocale)||!!(a!=null&&a.translate),x=!!n.close||!!n.open,C=!!u.can;return{providers:{auth:e,auditLog:d,live:l,router:c,data:m,i18n:P,notification:x,accessControl:C},version:ai,resourceCount:p.length}};var ui=e=>{let t=JSON.stringify(e||{});return typeof btoa<"u"?btoa(t):Buffer.from(t).toString("base64")},Ms=()=>{let e=Us();return ii(()=>{if(typeof window>"u"&&!Image)return;let t=new Image;t.src=`https://telemetry.refine.dev/telemetry?payload=${ui(e)}`},[]),null};import di from"warn-once";var Is=e=>{let t=["go","parse","back","Link"],r=Object.keys(e).filter(s=>!t.includes(s));return r.length>0?(console.warn(`Unsupported properties are found in \`routerProvider\` prop. You provided \`${r.join(", ")}\`. Supported properties are \`${t.join(", ")}\`. You may wanted to use \`legacyRouterProvider\` prop instead.`),!0):!1};import ws from"react";var Ss=e=>{let t=ws.useRef(!1);ws.useEffect(()=>{t.current===!1&&e&&Is(e)&&(t.current=!0)},[e])};var li=({legacyAuthProvider:e,authProvider:t,dataProvider:r,legacyRouterProvider:o,routerProvider:s,notificationProvider:a,accessControlProvider:n,auditLogProvider:u,resources:p,DashboardPage:d,ReadyPage:l,LoginPage:c,catchAll:m,children:P,liveProvider:x,i18nProvider:C,Title:v,Layout:g,Sider:E,Header:A,Footer:b,OffLayoutArea:i,onLiveEvent:f,options:T})=>{var U;let{optionsWithDefaults:h,disableTelemetryWithDefault:R,reactQueryWithDefaults:y}=Qr({options:T}),D=lr(()=>{var S;return y.clientConfig instanceof As?y.clientConfig:new As({...y.clientConfig,defaultOptions:{...y.clientConfig.defaultOptions,queries:{refetchOnWindowFocus:!1,keepPreviousData:!0,...(S=y.clientConfig.defaultOptions)==null?void 0:S.queries}}})},[y.clientConfig]),w=ne.useMemo(()=>typeof a=="function"?a:()=>a??{},[a])();if(Ss(s),o&&!s&&(p??[]).length===0)return l?ne.createElement(l,null):ne.createElement(Jr,null);let{RouterComponent:I=ne.Fragment}=s?{}:o??{};return typeof window<"u"&&((U=window==null?void 0:window.location)==null?void 0:U.hostname)==="localhost"&&di(!0,`%c
|
|
11
|
+
For more information, see https://refine.dev/docs/api-reference/core/hooks/useBreadcrumb/#i18n-support`),d.push({label:s(`buttons.${u}`,p.humanize(u))})):d.push({label:s(c,p.humanize(u))})}return{breadcrumbs:d}};import Zr from"react";var Pt=(e,t,r=!1)=>{let o=[],s=Ee(e,t);for(;s;)o.push(s),s=Ee(s,t);return o.reverse(),`/${[...o,e].map(n=>Te((r?n.route:void 0)??n.identifier??n.name)).join("/").replace(/^\//,"")}`};var Ps=(e,t=!1)=>{let r={item:{name:"__root__"},children:{}};e.forEach(s=>{let a=[],n=Ee(s,e);for(;n;)a.push(n),n=Ee(n,e);a.reverse();let u=r;a.forEach(d=>{let l=(t?d.route:void 0)??d.identifier??d.name;u.children[l]||(u.children[l]={item:d,children:{}}),u=u.children[l]});let p=(t?s.route:void 0)??s.identifier??s.name;u.children[p]||(u.children[p]={item:s,children:{}})});let o=s=>{let a=[];return Object.keys(s.children).forEach(n=>{let u=Pt(s.children[n].item,e,t),p={...s.children[n].item,key:u,children:o(s.children[n])};a.push(p)}),a};return o(r)};var xs=e=>e.split("?")[0].split("#")[0].replace(/(.+)(\/$)/,"$1"),Ya=({meta:e,hideOnMissingParameter:t}={hideOnMissingParameter:!0})=>{let r=B(),o=Nt(),s=_(),{resource:a,resources:n}=V(),{pathname:u}=le(),{useLocation:p}=re(),{pathname:d}=p(),l=gt(),m=`/${((s==="legacy"?xs(d):u?xs(u):void 0)??"").replace(/^\//,"")}`,P=a?Pt(a,n,s==="legacy"):m??"",x=Zr.useMemo(()=>{if(!a)return[];let g=Ee(a,n),E=[Pt(a,n)];for(;g;)E.push(Pt(g,n)),g=Ee(g,n);return E},[]),C=Zr.useCallback(g=>{var A,b,i,f,T,h;if((((A=g==null?void 0:g.meta)==null?void 0:A.hide)??((b=g==null?void 0:g.options)==null?void 0:b.hide))||!(g!=null&&g.list)&&g.children.length===0)return;let E=g.list?o({resource:g,action:"list",legacy:s==="legacy",meta:e}):void 0;if(!(t&&E&&E.match(/(\/|^):(.+?)(\/|$){1}/)))return{...g,route:E,icon:M((i=g.meta)==null?void 0:i.icon,(f=g.options)==null?void 0:f.icon,g.icon),label:M((T=g==null?void 0:g.meta)==null?void 0:T.label,(h=g==null?void 0:g.options)==null?void 0:h.label)??r(`${g.name}.${g.name}`,l(g.name,"plural"))}},[s,e,r,t]),v=Zr.useMemo(()=>{let g=Ps(n,s==="legacy"),E=A=>A.flatMap(b=>{let i=E(b.children),f=C({...b,children:i});return f?[f]:[]});return E(g)},[n,s,C]);return{defaultOpenKeys:x,selectedKey:P,menuItems:v}};var K=()=>{let{params:e}=le();return({resource:r,meta:o}={})=>{let{meta:s}=Rt(r)??{meta:{}},{filters:a,sorters:n,current:u,pageSize:p,...d}=e??{};return{...s,...d,...o}}};var qa=()=>{let[e,t]=Xa(),r=B(),{push:o}=ue(),s=ce(),a=_(),{resource:n,action:u}=V();return Ja(()=>{n&&u&&t(r("pages.error.info",{action:u,resource:n.name},`You may have forgotten to add the "${u}" component to "${n.name}" resource.`))},[n,u]),Ot.createElement(Ot.Fragment,null,Ot.createElement("h1",null,r("pages.error.404",void 0,"Sorry, the page you visited does not exist.")),e&&Ot.createElement("p",null,e),Ot.createElement("button",{onClick:()=>{a==="legacy"?o("/"):s({to:"/"})}},r("pages.error.backHome",void 0,"Back Home")))};import Pe,{useState as Cs}from"react";var Fr=()=>{let[e,t]=Cs(""),[r,o]=Cs(""),s=B(),a=W(),{mutate:n}=Ut({v3LegacyAuthProviderCompatible:!!(a!=null&&a.isLegacy)});return Pe.createElement(Pe.Fragment,null,Pe.createElement("h1",null,s("pages.login.title","Sign in your account")),Pe.createElement("form",{onSubmit:u=>{u.preventDefault(),n({username:e,password:r})}},Pe.createElement("table",null,Pe.createElement("tbody",null,Pe.createElement("tr",null,Pe.createElement("td",null,s("pages.login.username",void 0,"username"),":"),Pe.createElement("td",null,Pe.createElement("input",{type:"text",size:20,autoCorrect:"off",spellCheck:!1,autoCapitalize:"off",autoFocus:!0,required:!0,value:e,onChange:u=>t(u.target.value)}))),Pe.createElement("tr",null,Pe.createElement("td",null,s("pages.login.password",void 0,"password"),":"),Pe.createElement("td",null,Pe.createElement("input",{type:"password",required:!0,size:20,value:r,onChange:u=>o(u.target.value)}))))),Pe.createElement("br",null),Pe.createElement("input",{type:"submit",value:"login"})))};import xt from"react";import me,{useState as Yr}from"react";var bs=({providers:e,registerLink:t,forgotPasswordLink:r,rememberMe:o,contentProps:s,wrapperProps:a,renderContent:n,formProps:u,title:p=void 0})=>{let d=_(),l=nt(),{Link:c}=re(),m=d==="legacy"?c:l,[P,x]=Yr(""),[C,v]=Yr(""),[g,E]=Yr(!1),A=B(),b=W(),{mutate:i}=Ut({v3LegacyAuthProviderCompatible:!!(b!=null&&b.isLegacy)}),f=(R,y)=>me.createElement(m,{to:R},y),T=()=>e?e.map(R=>me.createElement("div",{key:R.name,style:{display:"flex",alignItems:"center",justifyContent:"center",marginBottom:"1rem"}},me.createElement("button",{onClick:()=>i({providerName:R.name}),style:{display:"flex",alignItems:"center"}},R==null?void 0:R.icon,R.label??me.createElement("label",null,R.label)))):null,h=me.createElement("div",{...s},me.createElement("h1",{style:{textAlign:"center"}},A("pages.login.title","Sign in to your account")),T(),me.createElement("hr",null),me.createElement("form",{onSubmit:R=>{R.preventDefault(),i({email:P,password:C,remember:g})},...u},me.createElement("div",{style:{display:"flex",flexDirection:"column",padding:25}},me.createElement("label",{htmlFor:"email-input"},A("pages.login.fields.email","Email")),me.createElement("input",{id:"email-input",name:"email",type:"text",size:20,autoCorrect:"off",spellCheck:!1,autoCapitalize:"off",required:!0,value:P,onChange:R=>x(R.target.value)}),me.createElement("label",{htmlFor:"password-input"},A("pages.login.fields.password","Password")),me.createElement("input",{id:"password-input",type:"password",name:"password",required:!0,size:20,value:C,onChange:R=>v(R.target.value)}),o??me.createElement(me.Fragment,null,me.createElement("label",{htmlFor:"remember-me-input"},A("pages.login.buttons.rememberMe","Remember me"),me.createElement("input",{id:"remember-me-input",name:"remember",type:"checkbox",size:20,checked:g,value:g.toString(),onChange:()=>{E(!g)}}))),me.createElement("br",null),r??f("/forgot-password",A("pages.login.buttons.forgotPassword","Forgot password?")),me.createElement("input",{type:"submit",value:A("pages.login.signin","Sign in")}),t??me.createElement("span",null,A("pages.login.buttons.noAccount","Don\u2019t have an account?")," ",f("/register",A("pages.login.register","Sign up"))))));return me.createElement("div",{...a},n?n(h,p):h)};import ge,{useState as hs}from"react";var vs=({providers:e,loginLink:t,wrapperProps:r,contentProps:o,renderContent:s,formProps:a,title:n=void 0})=>{let u=_(),p=nt(),{Link:d}=re(),l=u==="legacy"?d:p,[c,m]=hs(""),[P,x]=hs(""),C=B(),v=W(),{mutate:g,isLoading:E}=Cr({v3LegacyAuthProviderCompatible:!!(v!=null&&v.isLegacy)}),A=(f,T)=>ge.createElement(l,{to:f},T),b=()=>e?e.map(f=>ge.createElement("div",{key:f.name,style:{display:"flex",alignItems:"center",justifyContent:"center",marginBottom:"1rem"}},ge.createElement("button",{onClick:()=>g({providerName:f.name}),style:{display:"flex",alignItems:"center"}},f==null?void 0:f.icon,f.label??ge.createElement("label",null,f.label)))):null,i=ge.createElement("div",{...o},ge.createElement("h1",{style:{textAlign:"center"}},C("pages.register.title","Sign up for your account")),b(),ge.createElement("hr",null),ge.createElement("form",{onSubmit:f=>{f.preventDefault(),g({email:c,password:P})},...a},ge.createElement("div",{style:{display:"flex",flexDirection:"column",padding:25}},ge.createElement("label",{htmlFor:"email-input"},C("pages.register.fields.email","Email")),ge.createElement("input",{id:"email-input",name:"email",type:"email",size:20,autoCorrect:"off",spellCheck:!1,autoCapitalize:"off",required:!0,value:c,onChange:f=>m(f.target.value)}),ge.createElement("label",{htmlFor:"password-input"},C("pages.register.fields.password","Password")),ge.createElement("input",{id:"password-input",name:"password",type:"password",required:!0,size:20,value:P,onChange:f=>x(f.target.value)}),ge.createElement("input",{type:"submit",value:C("pages.register.buttons.submit","Sign up"),disabled:E}),t??ge.createElement(ge.Fragment,null,ge.createElement("span",null,C("pages.login.buttons.haveAccount","Have an account?")," ",A("/login",C("pages.login.signin","Sign in")))))));return ge.createElement("div",{...r},s?s(i,n):i)};import Fe,{useState as ei}from"react";var Ds=({loginLink:e,wrapperProps:t,contentProps:r,renderContent:o,formProps:s,title:a=void 0})=>{let n=B(),u=_(),p=nt(),{Link:d}=re(),l=u==="legacy"?d:p,[c,m]=ei(""),{mutate:P,isLoading:x}=hr(),C=(g,E)=>Fe.createElement(l,{to:g},E),v=Fe.createElement("div",{...r},Fe.createElement("h1",{style:{textAlign:"center"}},n("pages.forgotPassword.title","Forgot your password?")),Fe.createElement("hr",null),Fe.createElement("form",{onSubmit:g=>{g.preventDefault(),P({email:c})},...s},Fe.createElement("div",{style:{display:"flex",flexDirection:"column",padding:25}},Fe.createElement("label",{htmlFor:"email-input"},n("pages.forgotPassword.fields.email","Email")),Fe.createElement("input",{id:"email-input",name:"email",type:"mail",autoCorrect:"off",spellCheck:!1,autoCapitalize:"off",required:!0,value:c,onChange:g=>m(g.target.value)}),Fe.createElement("input",{type:"submit",disabled:x,value:n("pages.forgotPassword.buttons.submit","Send reset instructions")}),Fe.createElement("br",null),e??Fe.createElement("span",null,n("pages.register.buttons.haveAccount","Have an account? ")," ",C("/login",n("pages.login.signin","Sign in"))))));return Fe.createElement("div",{...t},o?o(v,a):v)};import ke,{useState as Ls}from"react";var Es=({wrapperProps:e,contentProps:t,renderContent:r,formProps:o,title:s=void 0})=>{let a=B(),n=W(),{mutate:u,isLoading:p}=Dr({v3LegacyAuthProviderCompatible:!!(n!=null&&n.isLegacy)}),[d,l]=Ls(""),[c,m]=Ls(""),P=ke.createElement("div",{...t},ke.createElement("h1",{style:{textAlign:"center"}},a("pages.updatePassword.title","Update Password")),ke.createElement("hr",null),ke.createElement("form",{onSubmit:x=>{x.preventDefault(),u({password:d,confirmPassword:c})},...o},ke.createElement("div",{style:{display:"flex",flexDirection:"column",padding:25}},ke.createElement("label",{htmlFor:"password-input"},a("pages.updatePassword.fields.password","New Password")),ke.createElement("input",{id:"password-input",name:"password",type:"password",required:!0,size:20,value:d,onChange:x=>l(x.target.value)}),ke.createElement("label",{htmlFor:"confirm-password-input"},a("pages.updatePassword.fields.confirmPassword","Confirm New Password")),ke.createElement("input",{id:"confirm-password-input",name:"confirmPassword",type:"password",required:!0,size:20,value:c,onChange:x=>m(x.target.value)}),ke.createElement("input",{type:"submit",disabled:p,value:a("pages.updatePassword.buttons.submit","Update")}))));return ke.createElement("div",{...e},r?r(P,s):P)};var ti=e=>{let{type:t}=e;return xt.createElement(xt.Fragment,null,(()=>{switch(t){case"register":return xt.createElement(vs,{...e});case"forgotPassword":return xt.createElement(Ds,{...e});case"updatePassword":return xt.createElement(Es,{...e});default:return xt.createElement(bs,{...e})}})())};import Le from"react";var Jr=()=>Le.createElement(Le.Fragment,null,Le.createElement("h1",null,"Welcome on board"),Le.createElement("p",null,"Your configuration is completed."),Le.createElement("p",null,"Now you can get started by adding your resources to the"," ",Le.createElement("code",null,"`resources`")," property of ",Le.createElement("code",null,"`<Refine>`")),Le.createElement("div",{style:{display:"flex",gap:8}},Le.createElement("a",{href:"https://refine.dev",target:"_blank",rel:"noreferrer"},Le.createElement("button",null,"Documentation")),Le.createElement("a",{href:"https://refine.dev/examples",target:"_blank",rel:"noreferrer"},Le.createElement("button",null,"Examples")),Le.createElement("a",{href:"https://discord.gg/refine",target:"_blank",rel:"noreferrer"},Le.createElement("button",null,"Community"))));import J,{useState as ri}from"react";var oi=[{title:"Documentation",description:"Learn about the technical details of using refine in your projects.",link:"https://refine.dev/",icon:J.createElement("svg",{width:"14",height:"16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},J.createElement("path",{d:"M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V5a1 1 0 0 0-1-1H3a1 1 0 0 1 0-2h10a1 1 0 1 0 0-2H2Z",fill:"#fff"}))},{title:"Tutorial",description:"Learn how to use refine by building a fully-functioning CRUD app, from scratch to full launch.",link:"https://refine.dev/docs/tutorial/introduction/index/",icon:J.createElement("svg",{width:"16",height:"14",fill:"none",xmlns:"http://www.w3.org/2000/svg"},J.createElement("path",{d:"M0 4.573c0-.475.163-.948.53-1.25a4.57 4.57 0 0 1 .854-.553L5.956.485a4.571 4.571 0 0 1 4.088 0l4.572 2.285c.308.154.594.34.853.553.306.251.47.62.517 1.01.01.055.014.112.014.169v6.5a1 1 0 0 1-2 0V6.684l-3.956 1.978a4.571 4.571 0 0 1-4.088 0L1.384 6.376a4.57 4.57 0 0 1-.853-.553C.163 5.522 0 5.05 0 4.573Z",fill:"#fff"}),J.createElement("path",{d:"M5.061 13.305 3 12.274V9.42l2.061 1.031a6.571 6.571 0 0 0 5.878 0L13 9.421v2.853l-2.061 1.03a6.571 6.571 0 0 1-5.878 0Z",fill:"#fff"}))},{title:"Examples",description:"A collection of reference applications you can use as a starting point.",link:"https://refine.dev/examples",icon:J.createElement("svg",{width:"16",height:"16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},J.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M0 2a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v4H0V2Zm3 2a1 1 0 1 0 0-2 1 1 0 0 0 0 2Zm4-1a1 1 0 1 1-2 0 1 1 0 0 1 2 0Zm2 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z",fill:"#fff"}),J.createElement("path",{d:"M0 14V8h16v6a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2Z",fill:"#fff"}))},{title:"Community",description:"Join our Discord community and keep up with the latest news.",link:"https://discord.gg/refine",icon:J.createElement("svg",{width:"16",height:"12",fill:"none",xmlns:"http://www.w3.org/2000/svg"},J.createElement("path",{d:"M13.553 1.005A13.334 13.334 0 0 0 10.253 0c-.156.276-.298.56-.423.85a12.42 12.42 0 0 0-3.664 0A8.975 8.975 0 0 0 5.744 0 13.43 13.43 0 0 0 2.44 1.007C.351 4.066-.215 7.05.068 9.99A13.36 13.36 0 0 0 4.116 12c.328-.436.618-.9.867-1.384a8.647 8.647 0 0 1-1.365-.645c.115-.082.227-.167.335-.249a9.594 9.594 0 0 0 8.094 0c.11.089.222.173.335.25-.436.254-.894.47-1.368.646.249.484.539.946.867 1.382a13.3 13.3 0 0 0 4.051-2.01c.332-3.41-.568-6.365-2.379-8.985Zm-8.21 7.176c-.79 0-1.442-.709-1.442-1.58 0-.872.63-1.587 1.439-1.587s1.456.715 1.442 1.586c-.014.872-.636 1.58-1.44 1.58Zm5.315 0c-.79 0-1.44-.709-1.44-1.58 0-.872.63-1.587 1.44-1.587.81 0 1.452.715 1.438 1.586-.014.872-.634 1.58-1.438 1.58Z",fill:"#fff"}))}],si=()=>{let e=ur("(max-width: 1010px)"),t=ur("(max-width: 650px)"),r=()=>t?"1, 280px":e?"2, 280px":"4, 208px",o=()=>t?"32px":e?"40px":"48px",s=()=>t?"16px":e?"20px":"24px";return J.createElement("div",{style:{backgroundImage:"url(https://refine.ams3.cdn.digitaloceanspaces.com/welcome-page/welcome-page.webp)",backgroundPosition:"center top",backgroundSize:"cover",backgroundRepeat:"no-repeat",minHeight:"100vh",backgroundColor:"#0D0D12",fontFamily:"Arial",color:"#FFFFFF"}},J.createElement("div",{style:{height:"89px"}}),J.createElement("div",{style:{display:"flex",justifyContent:"center"}},J.createElement("img",{src:"https://refine.ams3.cdn.digitaloceanspaces.com/welcome-page/welcome-logo.webp",width:"198",height:"54"})),J.createElement("div",{style:{height:e?"270px":"22vw",minHeight:e?"270px":"313px"}}),J.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"16px",textAlign:"center"}},J.createElement("h1",{style:{fontSize:o(),fontWeight:700,margin:"0px"}},"Welcome Aboard!"),J.createElement("h4",{style:{fontSize:s(),fontWeight:400,margin:"0px"}},"Your configuration is completed.")),J.createElement("div",{style:{height:"64px"}}),J.createElement("div",{style:{display:"grid",gridTemplateColumns:`repeat(${r()})`,justifyContent:"center",gap:"48px",paddingRight:"16px",paddingLeft:"16px",maxWidth:"976px",margin:"auto"}},oi.map(a=>J.createElement(ni,{key:`welcome-page-${a.title}`,card:a}))),J.createElement("div",{style:{height:"64px"}}))},ni=({card:e})=>{let{title:t,description:r,icon:o,link:s}=e,[a,n]=ri(!1);return J.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"16px"}},J.createElement("div",{style:{display:"flex",alignItems:"center"}},J.createElement("a",{onPointerEnter:()=>n(!0),onPointerLeave:()=>n(!1),style:{display:"flex",alignItems:"center",color:"#fff",textDecoration:"none"},href:s},o,J.createElement("span",{style:{fontSize:"16px",fontWeight:700,marginLeft:"13px",marginRight:"14px"}},t),J.createElement("svg",{style:{transition:"transform 0.5s ease-in-out, opacity 0.2s ease-in-out",...a&&{transform:"translateX(4px)",opacity:1}},width:"12",height:"8",fill:"none",opacity:"0.5",xmlns:"http://www.w3.org/2000/svg"},J.createElement("path",{d:"M7.293.293a1 1 0 0 1 1.414 0l3 3a1 1 0 0 1 0 1.414l-3 3a1 1 0 0 1-1.414-1.414L8.586 5H1a1 1 0 0 1 0-2h7.586L7.293 1.707a1 1 0 0 1 0-1.414Z",fill:"#fff"})))),J.createElement("span",{style:{fontSize:"12px",opacity:.5,lineHeight:"16px"}},r))};import{QueryClient as As,QueryClientProvider as ci}from"@tanstack/react-query";import{ReactQueryDevtools as pi}from"@tanstack/react-query-devtools";import ne from"react";import{useEffect as ii}from"react";import{useContext as it}from"react";var ai="4.28.0",Us=()=>{let e=Lr(),t=it(at),r=it(Ke),o=it(Ht),s=it(Vt),{i18nProvider:a}=it(Ae),n=it(Bt),u=it(Xe),{resources:p}=V(),d=!!t.create||!!t.get||!!t.update,l=!!(r!=null&&r.publish)||!!(r!=null&&r.subscribe)||!!(r!=null&&r.unsubscribe),c=!!o.useHistory||!!o.Link||!!o.Prompt||!!o.useLocation||!!o.useParams,m=!!s,P=!!(a!=null&&a.changeLocale)||!!(a!=null&&a.getLocale)||!!(a!=null&&a.translate),x=!!n.close||!!n.open,C=!!u.can;return{providers:{auth:e,auditLog:d,live:l,router:c,data:m,i18n:P,notification:x,accessControl:C},version:ai,resourceCount:p.length}};var ui=e=>{let t=JSON.stringify(e||{});return typeof btoa<"u"?btoa(t):Buffer.from(t).toString("base64")},Ms=()=>{let e=Us();return ii(()=>{if(typeof window>"u"&&!Image)return;let t=new Image;t.src=`https://telemetry.refine.dev/telemetry?payload=${ui(e)}`},[]),null};import di from"warn-once";var Is=e=>{let t=["go","parse","back","Link"],r=Object.keys(e).filter(s=>!t.includes(s));return r.length>0?(console.warn(`Unsupported properties are found in \`routerProvider\` prop. You provided \`${r.join(", ")}\`. Supported properties are \`${t.join(", ")}\`. You may wanted to use \`legacyRouterProvider\` prop instead.`),!0):!1};import ws from"react";var Ss=e=>{let t=ws.useRef(!1);ws.useEffect(()=>{t.current===!1&&e&&Is(e)&&(t.current=!0)},[e])};var li=({legacyAuthProvider:e,authProvider:t,dataProvider:r,legacyRouterProvider:o,routerProvider:s,notificationProvider:a,accessControlProvider:n,auditLogProvider:u,resources:p,DashboardPage:d,ReadyPage:l,LoginPage:c,catchAll:m,children:P,liveProvider:x,i18nProvider:C,Title:v,Layout:g,Sider:E,Header:A,Footer:b,OffLayoutArea:i,onLiveEvent:f,options:T})=>{var U;let{optionsWithDefaults:h,disableTelemetryWithDefault:R,reactQueryWithDefaults:y}=Qr({options:T}),D=lr(()=>{var S;return y.clientConfig instanceof As?y.clientConfig:new As({...y.clientConfig,defaultOptions:{...y.clientConfig.defaultOptions,queries:{refetchOnWindowFocus:!1,keepPreviousData:!0,...(S=y.clientConfig.defaultOptions)==null?void 0:S.queries}}})},[y.clientConfig]),w=ne.useMemo(()=>typeof a=="function"?a:()=>a??{},[a])();if(Ss(s),o&&!s&&(p??[]).length===0)return l?ne.createElement(l,null):ne.createElement(Jr,null);let{RouterComponent:I=ne.Fragment}=s?{}:o??{};return typeof window<"u"&&((U=window==null?void 0:window.location)==null?void 0:U.hostname)==="localhost"&&di(!0,`%c
|
|
12
12
|
\u2705 Zero-trust security model
|
|
13
13
|
\u2705 User/role management
|
|
14
14
|
\u2705 Granular access control
|