@objectstack/console 16.0.0-rc.0 → 16.0.0-rc.1
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/dist/.objectui-sha +1 -1
- package/dist/assets/{AdapterProvider-DaQhp5MR.js → AdapterProvider-DkXaFA1A.js} +1 -1
- package/dist/assets/{AiPendingActionsPage-9UZ4_qZW.js → AiPendingActionsPage-C1pkyzWu.js} +1 -1
- package/dist/assets/{ApiConsolePage-DVnQPvbh.js → ApiConsolePage-BCujjvCA.js} +1 -1
- package/dist/assets/{AppDocsIndex-RWbVdvGq.js → AppDocsIndex-DwtDfwnR.js} +1 -1
- package/dist/assets/{AppManagementPage-JlGIV3AH.js → AppManagementPage-KPrmIA-f.js} +1 -1
- package/dist/assets/ApprovalsInboxPage-DFQUv0F_.js +1 -0
- package/dist/assets/{AuditLogPage-C6SMCaHa.js → AuditLogPage-BNkFvefV.js} +1 -1
- package/dist/assets/{ComponentNavView-DpWz8z8w.js → ComponentNavView-FTFk3uvC.js} +1 -1
- package/dist/assets/{CreateViewDialog-DQqqIAwO.js → CreateViewDialog-DTzKynzF.js} +1 -1
- package/dist/assets/{DashboardView-BTS9ygDI.js → DashboardView-Y6nIjjJB.js} +1 -1
- package/dist/assets/{DeveloperHubPage-CX3urxAq.js → DeveloperHubPage-CYPM3AvL.js} +1 -1
- package/dist/assets/{DocShell-CXBgEZhg.js → DocShell-DnXj6ocC.js} +1 -1
- package/dist/assets/{ExpressionProvider-C26LCaQj.js → ExpressionProvider-BrbZIz2M.js} +1 -1
- package/dist/assets/{FlowRunsPage-DKnUh_Ec.js → FlowRunsPage-BAbmqrqx.js} +1 -1
- package/dist/assets/{IntegrationsPage-BvyX5vIh.js → IntegrationsPage-CyD9iolE.js} +1 -1
- package/dist/assets/InterfaceListPage-DdaX7c_c.js +1 -0
- package/dist/assets/ManagedByBadge-DbYycO1m.js +1 -0
- package/dist/assets/{MarketplaceAccessDenied-DFaKQ3Ws.js → MarketplaceAccessDenied-Csr3Jh7C.js} +1 -1
- package/dist/assets/{MarketplaceInstalledPage-CKmxuBaG.js → MarketplaceInstalledPage-BtD9NMRl.js} +1 -1
- package/dist/assets/{MarketplacePackagePage-BjhnLR61.js → MarketplacePackagePage-DHrjr3jY.js} +1 -1
- package/dist/assets/{MarketplacePage-BWLFbDxW.js → MarketplacePage-Dw2yHsdE.js} +1 -1
- package/dist/assets/{MetadataInspector-B9z7wtJS.js → MetadataInspector-C6pU5_lx.js} +1 -1
- package/dist/assets/{MetadataProvider-Dq7I7eh-.js → MetadataProvider-BnfG1pyl.js} +1 -1
- package/dist/assets/{ObjectDataPage-Bm9tSz-w.js → ObjectDataPage-BA93ldBf.js} +1 -1
- package/dist/assets/PageView-jtsz_IPE.js +1 -0
- package/dist/assets/{ProfilePage-DAkDEioN.js → ProfilePage-BhlwjGUP.js} +1 -1
- package/dist/assets/{PublicFormsPage-CRNSj35t.js → PublicFormsPage-D5kg7qJa.js} +1 -1
- package/dist/assets/RecordDetailView-F0k3QMTV.js +9 -0
- package/dist/assets/{RecordFormPage-Cye1lcxq.js → RecordFormPage-BRDfPdPg.js} +1 -1
- package/dist/assets/{ReportDefaultInspector-B0nTPIZ8.js → ReportDefaultInspector-CYCJDOVb.js} +1 -1
- package/dist/assets/{ReportView-BeL2GZLl.js → ReportView-Dtz9IJbH.js} +1 -1
- package/dist/assets/{SearchResultsPage-XP2cdAyq.js → SearchResultsPage-0pCQZ9_u.js} +1 -1
- package/dist/assets/{SettingsHub-yoHgXGvm.js → SettingsHub-DqS8nfs-.js} +1 -1
- package/dist/assets/{SettingsView-BO0qYMbW.js → SettingsView-DHrrHsbU.js} +1 -1
- package/dist/assets/{SystemHubPage-qOFiW2Jq.js → SystemHubPage-BWPXrnc9.js} +1 -1
- package/dist/assets/data-adapter-BR5P3Htq.js +9 -0
- package/dist/assets/framework-brxTxzwx.js +8 -0
- package/dist/assets/{getIcon-CBdepA3t.js → getIcon-EzAarNT8.js} +1 -1
- package/dist/assets/{highlighted-body-OFNGDK62-CYfwZSTb.js → highlighted-body-OFNGDK62-3tGE6imP.js} +1 -1
- package/dist/assets/{i18n-grFi0A0v.js → i18n-CWIk44wT.js} +1 -1
- package/dist/assets/index-LuGaXtX0.js +2 -0
- package/dist/assets/infrastructure-C6pQBkbt.js +3 -0
- package/dist/assets/mermaid-GHXKKRXX-btdeklf1.js +1 -0
- package/dist/assets/{metadata-admin-D3yD8v_g.js → metadata-admin-Buf34qxl.js} +7 -7
- package/dist/assets/plugin-calendar-Bx_Bsdae.js +1 -0
- package/dist/assets/plugin-charts-DqND8tT3.js +7 -0
- package/dist/assets/plugin-chatbot-DwbSyUax.js +120 -0
- package/dist/assets/plugin-dashboard-D2VhHDxA.js +6 -0
- package/dist/assets/plugin-form-HMQsT2Tp.js +1 -0
- package/dist/assets/plugin-gantt-CMpG3oO4.js +63 -0
- package/dist/assets/plugin-grid-Dz4WW_sQ.js +8 -0
- package/dist/assets/plugin-kanban-fgScBnfP.js +1 -0
- package/dist/assets/{plugin-map-fMpIp7jh.js → plugin-map-zagD7Zuk.js} +1 -1
- package/dist/assets/{plugin-markdown-wZpqyjok.js → plugin-markdown-DtcSX8M_.js} +1 -1
- package/dist/assets/{plugin-report-kGtO0FOF.js → plugin-report-BRs6v5vb.js} +3 -3
- package/dist/assets/{plugin-timeline-DZNEy3Y1.js → plugin-timeline-Cl8J9HYj.js} +1 -1
- package/dist/assets/{plugin-tree-CZRX9ChE.js → plugin-tree-B3zTpUOf.js} +1 -1
- package/dist/assets/plugin-view-BDYhOlHx.js +1 -0
- package/dist/assets/plugins-views-Dc4ARhcP.js +4 -0
- package/dist/assets/{skeletons-CX6Ch5Lg.js → skeletons-CPF9cI6N.js} +1 -1
- package/dist/assets/{src-DNd8fJOE.js → src-A4S4Zx5p.js} +1 -1
- package/dist/assets/{src-CIr5NcaF.js → src-By-rFjBo.js} +1 -1
- package/dist/assets/src-CRFYUj2Z.js +19 -0
- package/dist/assets/{types-C0F-S2Id.js → types-CtGENai_.js} +1 -1
- package/dist/assets/ui-components-D1psd5qA.js +72 -0
- package/dist/assets/{ui-layout-CmmmekN3.js → ui-layout-UgL2qgLW.js} +1 -1
- package/dist/assets/{use-book-data-DyDHAzga.js → use-book-data-CWCLCSUn.js} +1 -1
- package/dist/assets/{useMetadata-BMHVJNxp.js → useMetadata-Byeqylbl.js} +1 -1
- package/dist/assets/vendor-objectstack-CjHQG7Oa.js +114 -0
- package/dist/index.html +3 -3
- package/package.json +1 -1
- package/dist/assets/ApprovalsInboxPage-DMfSM-B7.js +0 -1
- package/dist/assets/InterfaceListPage-D00ihpcS.js +0 -1
- package/dist/assets/ManagedByBadge-B4O4Jy3c.js +0 -1
- package/dist/assets/PageView-BTHYu8Z9.js +0 -1
- package/dist/assets/RecordDetailView-C6UiMORv.js +0 -9
- package/dist/assets/data-adapter-CS4onYGf.js +0 -9
- package/dist/assets/framework-Oi7uo_kE.js +0 -8
- package/dist/assets/index-D_-Sh_Rw.js +0 -2
- package/dist/assets/infrastructure-CQFJ5N6p.js +0 -3
- package/dist/assets/mermaid-GHXKKRXX-DtO0m-Vl.js +0 -1
- package/dist/assets/plugin-calendar-Bm0-Kkhu.js +0 -1
- package/dist/assets/plugin-charts-BHxVdXp7.js +0 -7
- package/dist/assets/plugin-chatbot-BRbgUPLw.js +0 -120
- package/dist/assets/plugin-dashboard-ARn_CaB3.js +0 -6
- package/dist/assets/plugin-form-C969LzWi.js +0 -1
- package/dist/assets/plugin-gantt-DrEbvyAE.js +0 -63
- package/dist/assets/plugin-grid-CnxMz-9O.js +0 -8
- package/dist/assets/plugin-kanban-C-mR5I0H.js +0 -1
- package/dist/assets/plugin-view-BhPeq9o5.js +0 -1
- package/dist/assets/plugins-views-DCG6qMPm.js +0 -4
- package/dist/assets/src-CB6vSDbd.js +0 -19
- package/dist/assets/ui-components-BluZyuZX.js +0 -72
- package/dist/assets/vendor-objectstack-DxPvmbmF.js +0 -114
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{r as t,y as n}from"./vendor-react-BKSb6vFP.js";var r=e(n(),1),i=new Set,a={emit(e){for(let t of Array.from(i))try{t(e)}catch{}},subscribe(e){return i.add(e),()=>{i.delete(e)}}};function o(e,t){if(e!==403||!t||typeof t!=`object`)return null;let n=t.error;if(!n||typeof n!=`object`)return null;let r=n.code;if(r===`MFA_REQUIRED`||r===`PASSWORD_EXPIRED`){let e=n.message;return{code:r,message:typeof e==`string`?e:``}}return null}var s=(0,r.createContext)(null);s.displayName=`AuthContext`;var c=`1.6.23`,l=Symbol.for(`better-auth:broadcast-channel`),u=()=>Math.floor(Date.now()/1e3),d=class{listeners=new Set;name;constructor(e=`better-auth.message`){this.name=e}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}post(e){if(!(typeof window>`u`))try{localStorage.setItem(this.name,JSON.stringify({...e,timestamp:u()}))}catch{}}setup(){if(typeof window>`u`||window.addEventListener===void 0)return()=>{};let e=e=>{if(e.key!==this.name)return;let t=JSON.parse(e.newValue??`{}`);t?.event!==`session`||!t?.data||this.listeners.forEach(e=>e(t))};return window.addEventListener(`storage`,e),()=>{window.removeEventListener(`storage`,e)}}};function f(e=`better-auth.message`){return globalThis[l]||(globalThis[l]=new d(e)),globalThis[l]}var p=[],m=0,h=null,g=4,_=globalThis.nanostoresGlobal||={epoch:0},v=()=>{for(m=0;m<p.length;m+=g)p[m](p[m+1].value,p[m+2],p[m+3]);p.length=0},y=e=>{let t=[],n={get(){return n.lc||n.listen(()=>{})(),n.value},init:e,lc:0,listen(e){return n.lc=t.push(e),()=>{for(let t=m+g;t<p.length;)p[t]===e?p.splice(t,g):t+=g;let r=t.indexOf(e);~r&&(t.splice(r,1),--n.lc||n.off())}},notify(e,r){_.epoch++;let i=!p.length&&!0;for(let i of t)h?.has(i)||(h?.add(i),p.push(i,n,e,r));i&&v()},off(){},set(e){let t=n.value;t!==e&&(n.value=e,n.notify(t))},subscribe(e){let t=n.listen(e);return e(n.value),t},value:e};return n},b=2,ee=5,x=6,S=10,C=(e,t,n,r)=>(e.events=e.events||{},e.events[n+S]||(e.events[n+S]=r(t=>{e.events[n].reduceRight((e,t)=>(t(e),e),{shared:{},...t})})),e.events[n]=e.events[n]||[],e.events[n].push(t),()=>{let r=e.events[n],i=r.indexOf(t);r.splice(i,1),r.length||(delete e.events[n],e.events[n+S](),delete e.events[n+S])}),w=(e,t)=>C(e,t,b,t=>{let n=e.set,r=e.setKey;return e.setKey&&=(n,i)=>{let a;if(t({abort:()=>{a=!0},changed:n,newValue:{...e.value,[n]:i}}),!a)return r(n,i)},e.set=e=>{let r;if(t({abort:()=>{r=!0},newValue:e}),!r)return n(e)},()=>{e.set=n,e.setKey=r}}),T=1e3,te=(e,t)=>C(e,n=>{let r=t(n);r&&e.events[x].push(r)},ee,t=>{let n=e.listen;e.listen=(...r)=>(!e.lc&&!e.active&&(e.active=!0,t()),n(...r));let r=e.off;return e.events[x]=[],e.off=()=>{r(),setTimeout(()=>{if(e.active&&!e.lc){e.active=!1;for(let t of e.events[x])t();e.events[x]=[]}},T)},()=>{e.listen=n,e.off=r}});function E(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function D(e,t){if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!D(e[n],t[n]))return!1;return!0}if(E(e)&&E(t)){let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n)if(!(r in t)||!D(e[r],t[r]))return!1;return!0}return!1}function O(e,t){return w(e,({newValue:n,abort:r})=>{t(e.value,n)&&r()})}var k=Symbol.for(`better-auth:focus-manager`),A=class{listeners=new Set;subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}setFocused(e){this.listeners.forEach(t=>t(e))}setup(){if(typeof window>`u`||typeof document>`u`||window.addEventListener===void 0)return()=>{};let e=()=>{document.visibilityState===`visible`&&this.setFocused(!0)};return document.addEventListener(`visibilitychange`,e,!1),()=>{document.removeEventListener(`visibilitychange`,e,!1)}}};function ne(){return globalThis[k]||(globalThis[k]=new A),globalThis[k]}var j=Symbol.for(`better-auth:online-manager`),M=class{listeners=new Set;isOnline=typeof navigator<`u`?navigator.onLine:!0;subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}setOnline(e){this.isOnline=e,this.listeners.forEach(t=>t(e))}setup(){if(typeof window>`u`||window.addEventListener===void 0)return()=>{};let e=()=>this.setOnline(!0),t=()=>this.setOnline(!1);return window.addEventListener(`online`,e,!1),window.addEventListener(`offline`,t,!1),()=>{window.removeEventListener(`online`,e,!1),window.removeEventListener(`offline`,t,!1)}}};function N(){return globalThis[j]||(globalThis[j]=new M),globalThis[j]}var re={proto:/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,constructor:/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,protoShort:/"__proto__"\s*:/,constructorShort:/"constructor"\s*:/},P=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/,F={true:!0,false:!1,null:null,undefined:void 0,nan:NaN,infinity:1/0,"-infinity":-1/0},ie=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.(\d{1,7}))?(?:Z|([+-])(\d{2}):(\d{2}))$/;function I(e){return e instanceof Date&&!isNaN(e.getTime())}function ae(e){let t=ie.exec(e);if(!t)return null;let[,n,r,i,a,o,s,c,l,u,d]=t,f=new Date(Date.UTC(parseInt(n,10),parseInt(r,10)-1,parseInt(i,10),parseInt(a,10),parseInt(o,10),parseInt(s,10),c?parseInt(c.padEnd(3,`0`),10):0));if(l){let e=(parseInt(u,10)*60+parseInt(d,10))*(l===`+`?-1:1);f.setUTCMinutes(f.getUTCMinutes()+e)}return I(f)?f:null}function oe(e,t={}){let{strict:n=!1,warnings:r=!1,reviver:i,parseDates:a=!0}=t;if(typeof e!=`string`)return e;let o=e.trim(),s=o.toLowerCase();if(s.length<=9&&s in F)return F[s];if(!P.test(o)){if(n)throw SyntaxError(`[better-json] Invalid JSON`);return e}if(Object.entries(re).some(([e,t])=>{let n=t.test(o);return n&&r&&console.warn(`[better-json] Detected potential prototype pollution attempt using ${e} pattern`),n})&&n)throw Error(`[better-json] Potential prototype pollution attempt detected`);try{return JSON.parse(o,(e,t)=>{if(e===`__proto__`||e===`constructor`&&t&&typeof t==`object`&&`prototype`in t){r&&console.warn(`[better-json] Dropping "${e}" key to prevent prototype pollution`);return}if(a&&typeof t==`string`){let e=ae(t);if(e)return e}return i?i(e,t):t})}catch(t){if(n)throw t;return e}}function L(e,t={strict:!0}){return oe(e,t)}var se=()=>typeof window>`u`;function ce(e,t){return D(e.data,t.data)&&e.error===t.error&&e.isPending===t.isPending&&e.isRefetching===t.isRefetching&&e.refetch===t.refetch}var R=(e,t,n,r)=>{let i=y({data:null,error:null,isPending:!0,isRefetching:!1,refetch:e=>a(e)});O(i,ce);let a=async e=>new Promise(a=>{let o=typeof r==`function`?r({data:i.get().data,error:i.get().error,isPending:i.get().isPending}):r;n(t,{...o,query:{...o?.query,...e?.query},async onSuccess(e){let t=i.get(),n=t.data!=null&&e.data!=null&&D(t.data,e.data)?t.data:e.data;i.set({data:n,error:null,isPending:!1,isRefetching:!1,refetch:i.value.refetch}),await o?.onSuccess?.(e)},async onError(e){let{request:t}=e,n=typeof t.retry==`number`?t.retry:t.retry?.attempts,r=t.retryAttempt||0;if(n&&r<n)return;let a=e.error.status===401;i.set({error:e.error,data:a?null:i.get().data,isPending:!1,isRefetching:!1,refetch:i.value.refetch}),await o?.onError?.(e)},async onRequest(e){let t=i.get();i.set({isPending:t.data===null,data:t.data,error:null,isRefetching:!0,refetch:i.value.refetch}),await o?.onRequest?.(e)}}).catch(e=>{i.set({error:e,data:i.get().data,isPending:!1,isRefetching:!1,refetch:i.value.refetch})}).finally(()=>{a(void 0)})});e=Array.isArray(e)?e:[e];let o=!1,s=[];for(let t of e){let e=t.subscribe(async()=>{se()||(o?await a():te(i,()=>{let e=setTimeout(async()=>{o||(o=!0,await a())},0);return()=>{for(let e of s)e();clearTimeout(e)}}))});s.push(e)}return i},z=()=>Math.floor(Date.now()/1e3),B=5;function le(e){let{fetchSession:t,shouldPollSession:n=()=>!0,sessionSignal:r,options:i={}}=e,a=i.sessionOptions?.refetchInterval??0,o=i.sessionOptions?.refetchOnWindowFocus??!0,s=i.sessionOptions?.refetchWhenOffline??!1,c={isInitialized:!1,lastSessionRequest:0},l=()=>s||N().isOnline,u=e=>{if(l()){if(e?.event===`storage`){t();return}if(e?.event===`poll`){c.lastSessionRequest=z(),t();return}if(e?.event===`visibilitychange`){if(z()-c.lastSessionRequest<B)return;c.lastSessionRequest=z(),t();return}t()}},d=e=>{f().post({event:`session`,data:{trigger:e},clientId:Math.random().toString(36).substring(7)})},p=()=>{a&&a>0&&(c.pollInterval=setInterval(()=>{n()&&u({event:`poll`})},a*1e3))},m=()=>{c.unsubscribeBroadcast=f().subscribe(()=>{u({event:`storage`})})},h=()=>{o&&(c.unsubscribeFocus=ne().subscribe(()=>{u({event:`visibilitychange`})}))},g=()=>{c.unsubscribeOnline=N().subscribe(e=>{e&&u({event:`visibilitychange`})})},_=()=>{c.unsubscribeSignal=r.listen(()=>{t()})};return{init:()=>{c.isInitialized||(c.isInitialized=!0,p(),m(),h(),g(),_(),c.cleanupBroadcastSetup=f().setup(),c.cleanupFocusSetup=ne().setup(),c.cleanupOnlineSetup=N().setup())},cleanup:()=>{c.isInitialized&&(c.pollInterval&&=(clearInterval(c.pollInterval),void 0),c.unsubscribeBroadcast&&=(c.unsubscribeBroadcast(),void 0),c.unsubscribeFocus&&=(c.unsubscribeFocus(),void 0),c.unsubscribeOnline&&=(c.unsubscribeOnline(),void 0),c.unsubscribeSignal&&=(c.unsubscribeSignal(),void 0),c.cleanupBroadcastSetup&&=(c.cleanupBroadcastSetup(),void 0),c.cleanupFocusSetup&&=(c.cleanupFocusSetup(),void 0),c.cleanupOnlineSetup&&=(c.cleanupOnlineSetup(),void 0),c.isInitialized=!1,c.lastSessionRequest=0)},triggerRefetch:u,broadcastSessionUpdate:d}}var V=Object.create(null),H=e=>({}),U=new Proxy(V,{get(e,t){return H()[t]??V[t]},has(e,t){return t in H()||t in V},set(e,t,n){let r=H(!0);return r[t]=n,!0},deleteProperty(e,t){if(!t)return!1;let n=H(!0);return delete n[t],!0},ownKeys(){let e=H(!0);return Object.keys(e)}});U.NODE_ENV;function W(e,t){return typeof process<`u`?{}[e]??t:typeof Deno<`u`?Deno.env.get(e)??t:typeof Bun<`u`?Bun.env[e]??t:t}Object.freeze({get BETTER_AUTH_SECRET(){return W(`BETTER_AUTH_SECRET`)},get AUTH_SECRET(){return W(`AUTH_SECRET`)},get BETTER_AUTH_TELEMETRY(){return W(`BETTER_AUTH_TELEMETRY`)},get BETTER_AUTH_TELEMETRY_ID(){return W(`BETTER_AUTH_TELEMETRY_ID`)},get NODE_ENV(){return W(`NODE_ENV`,`development`)},get PACKAGE_VERSION(){return W(`PACKAGE_VERSION`,`0.0.0`)},get BETTER_AUTH_TELEMETRY_ENDPOINT(){return W(`BETTER_AUTH_TELEMETRY_ENDPOINT`,``)}});function ue(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,{code:e,message:t,toString:()=>e}]))}function de(){let e=Object.getOwnPropertyDescriptor(Error,`stackTraceLimit`);return e===void 0?Object.isExtensible(Error):Object.prototype.hasOwnProperty.call(e,`writable`)?e.writable:e.set!==void 0}function fe(e){let t=e.split(`
|
|
2
|
-
at `);return t.length<=1?e:(t.splice(1,1),t.join(`
|
|
3
|
-
at `))}function pe(e,t){class n extends e{#e;constructor(...e){if(de()){let t=Error.stackTraceLimit;Error.stackTraceLimit=0,super(...e),Error.stackTraceLimit=t}else super(...e);let t=Error().stack;t&&(this.#e=fe(t.replace(/^Error/,this.name)))}get errorStack(){return this.#e}}return Object.defineProperty(n.prototype,"constructor",{get(){return t},enumerable:!1,configurable:!0}),n}var me={OK:200,CREATED:201,ACCEPTED:202,NO_CONTENT:204,MULTIPLE_CHOICES:300,MOVED_PERMANENTLY:301,FOUND:302,SEE_OTHER:303,NOT_MODIFIED:304,TEMPORARY_REDIRECT:307,BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,METHOD_NOT_ALLOWED:405,NOT_ACCEPTABLE:406,PROXY_AUTHENTICATION_REQUIRED:407,REQUEST_TIMEOUT:408,CONFLICT:409,GONE:410,LENGTH_REQUIRED:411,PRECONDITION_FAILED:412,PAYLOAD_TOO_LARGE:413,URI_TOO_LONG:414,UNSUPPORTED_MEDIA_TYPE:415,RANGE_NOT_SATISFIABLE:416,EXPECTATION_FAILED:417,"I'M_A_TEAPOT":418,MISDIRECTED_REQUEST:421,UNPROCESSABLE_ENTITY:422,LOCKED:423,FAILED_DEPENDENCY:424,TOO_EARLY:425,UPGRADE_REQUIRED:426,PRECONDITION_REQUIRED:428,TOO_MANY_REQUESTS:429,REQUEST_HEADER_FIELDS_TOO_LARGE:431,UNAVAILABLE_FOR_LEGAL_REASONS:451,INTERNAL_SERVER_ERROR:500,NOT_IMPLEMENTED:501,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504,HTTP_VERSION_NOT_SUPPORTED:505,VARIANT_ALSO_NEGOTIATES:506,INSUFFICIENT_STORAGE:507,LOOP_DETECTED:508,NOT_EXTENDED:510,NETWORK_AUTHENTICATION_REQUIRED:511};pe(class extends Error{constructor(e=`INTERNAL_SERVER_ERROR`,t=void 0,n={},r=typeof e==`number`?e:me[e]){super(t?.message,t?.cause?{cause:t.cause}:void 0),this.status=e,this.body=t,this.headers=n,this.statusCode=r,this.name=`APIError`,this.status=e,this.headers=n,this.statusCode=r,this.body=t}},Error);var G=class extends Error{constructor(e,t){super(e,t),this.name=`BetterAuthError`,this.message=e,this.stack=``}},he=47;function ge(e){let t=e.length;for(;t>0&&e.charCodeAt(t-1)===he;)t--;return t===e.length?e:e.slice(0,t)}function _e(e){try{return(ge(new URL(e).pathname)||`/`)!==`/`}catch{throw new G(`Invalid base URL: ${e}. Please provide a valid base URL.`)}}function ve(e){try{let t=new URL(e);if(t.protocol!==`http:`&&t.protocol!==`https:`)throw new G(`Invalid base URL: ${e}. URL must include 'http://' or 'https://'`)}catch(t){throw t instanceof G?t:new G(`Invalid base URL: ${e}. Please provide a valid base URL.`,{cause:t})}}function K(e,t=`/api/auth`){if(ve(e),_e(e))return e;let n=ge(e);return!t||t===`/`?n:(t=t.startsWith(`/`)?t:`/${t}`,`${n}${t}`)}function ye(e,t){return!e||e.trim()===``?!1:t===`proto`?e===`http`||e===`https`:t===`host`?[/\.\./,/\0/,/[\s]/,/^[.]/,/[<>'"]/,/javascript:/i,/file:/i,/data:/i].some(t=>t.test(e))?!1:/^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*(:[0-9]{1,5})?$/.test(e)||/^(\d{1,3}\.){3}\d{1,3}(:[0-9]{1,5})?$/.test(e)||/^\[[0-9a-fA-F:]+\](:[0-9]{1,5})?$/.test(e)||/^localhost(:[0-9]{1,5})?$/i.test(e):!1}function be(e,t,n,r,i){if(e)return K(e,t);if(r!==!1){let e=U.BETTER_AUTH_URL||U.NEXT_PUBLIC_BETTER_AUTH_URL||U.PUBLIC_BETTER_AUTH_URL||U.NUXT_PUBLIC_BETTER_AUTH_URL||U.NUXT_PUBLIC_AUTH_URL||(U.BASE_URL===`/`?void 0:U.BASE_URL);if(e)return K(e,t)}let a=n?.headers.get(`x-forwarded-host`),o=n?.headers.get(`x-forwarded-proto`);if(a&&o&&i&&ye(o,`proto`)&&ye(a,`host`))try{return K(`${o}://${a}`,t)}catch{}if(n){let e=xe(n.url);if(!e)throw new G(`Could not get origin from request. Please provide a valid base URL.`);return K(e,t)}if(typeof window<`u`&&window.location)return K(window.location.origin,t)}function xe(e){try{let t=new URL(e);return t.origin===`null`?null:t.origin}catch{return null}}var Se=[`javascript:`,`data:`,`vbscript:`];function Ce(e){let t;try{t=new URL(e)}catch{return!0}return!Se.includes(t.protocol)}var we={id:`redirect`,name:`Redirect`,hooks:{onSuccess(e){if(e.data?.url&&e.data?.redirect&&Ce(e.data.url)&&typeof window<`u`&&window.location&&window.location)try{window.location.href=e.data.url}catch{}}}},Te=()=>typeof window>`u`;function Ee(e){return typeof e==`object`&&e&&`data`in e&&`error`in e?e:{data:e,error:null}}function De(e){return!e||e.session===null&&e.user===null?null:e}function Oe(e,t){return D(e.data,t.data)&&e.error===t.error&&e.isPending===t.isPending&&e.isRefetching===t.isRefetching&&e.refetch===t.refetch}function ke(e,t){let n=y(!1),r,i=e=>s(e),a=y({data:null,error:null,isPending:!0,isRefetching:!1,refetch:i});O(a,Oe);let o=e=>{if(r!==e)return;let t=a.get();r=void 0,!(!t.isPending&&!t.isRefetching)&&a.set({...t,isPending:!1,isRefetching:!1,refetch:i})},s=async t=>{r?.abort();let n=new AbortController;r=n;let s=a.get();a.set({...s,isPending:s.data===null,isRefetching:!0,error:null,refetch:i});try{let r=await e(`/get-session`,{method:`GET`,query:t?.query,signal:n.signal});if(n.signal.aborted){o(n);return}let{data:s,error:c}=Ee(r);if(s?.needsRefresh)try{let t=await e(`/get-session`,{method:`POST`,signal:n.signal});if(n.signal.aborted){o(n);return}({data:s,error:c}=Ee(t))}catch{if(n.signal.aborted){o(n);return}}if(c){let e=a.get(),t=c?.status===401;a.set({data:t?null:e.data,error:c,isPending:!1,isRefetching:!1,refetch:i});return}let l=De(s),u=a.get(),d=u.data!=null&&l!=null&&D(u.data,l)?u.data:l;a.set({data:d,error:null,isPending:!1,isRefetching:!1,refetch:i})}catch(e){if(n.signal.aborted){o(n);return}let t=a.get();a.set({data:t.data,error:e,isPending:!1,isRefetching:!1,refetch:i})}},c=()=>{};return te(a,()=>{let e;Te()||(e=setTimeout(()=>{s()},0));let i=le({fetchSession:s,shouldPollSession:()=>a.get().data!=null,sessionSignal:n,options:t});return i.init(),c=i.broadcastSessionUpdate,()=>{e&&clearTimeout(e);let t=r;t?.abort(),t&&o(t),i.cleanup()}}),{session:a,$sessionSignal:n,broadcastSessionUpdate:e=>c(e)}}function Ae(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)===`[object Module]`:!0}function je(e,t,n=`.`,r){if(!Ae(t))return je(e,{},n,r);let i={...t};for(let t of Object.keys(e)){if(t===`__proto__`||t===`constructor`)continue;let a=e[t];a!=null&&(r&&r(i,t,a,n)||(Array.isArray(a)&&Array.isArray(i[t])?i[t]=[...a,...i[t]]:Ae(a)&&Ae(i[t])?i[t]=je(a,i[t],(n?`${n}.`:``)+t.toString(),r):i[t]=a))}return i}function Me(e){return(...t)=>t.reduce((t,n)=>je(t,n,``,e),{})}var Ne=Me(),Pe=Object.defineProperty,Fe=Object.defineProperties,Ie=Object.getOwnPropertyDescriptors,Le=Object.getOwnPropertySymbols,Re=Object.prototype.hasOwnProperty,ze=Object.prototype.propertyIsEnumerable,Be=(e,t,n)=>t in e?Pe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,q=(e,t)=>{for(var n in t||={})Re.call(t,n)&&Be(e,n,t[n]);if(Le)for(var n of Le(t))ze.call(t,n)&&Be(e,n,t[n]);return e},J=(e,t)=>Fe(e,Ie(t)),Ve=class extends Error{constructor(e,t,n){super(t||e.toString(),{cause:n}),this.status=e,this.statusText=t,this.error=n,Error.captureStackTrace(this,this.constructor)}},He=async(e,t)=>{let n=t||{},r={onRequest:[t?.onRequest],onResponse:[t?.onResponse],onSuccess:[t?.onSuccess],onError:[t?.onError],onRetry:[t?.onRetry]};if(!t||!t?.plugins)return{url:e,options:n,hooks:r};for(let i of t?.plugins||[]){if(i.init){let r=await i.init?.call(i,e.toString(),t);n=r.options||n,e=r.url}r.onRequest.push(i.hooks?.onRequest),r.onResponse.push(i.hooks?.onResponse),r.onSuccess.push(i.hooks?.onSuccess),r.onError.push(i.hooks?.onError),r.onRetry.push(i.hooks?.onRetry)}return{url:e,options:n,hooks:r}},Ue=class{constructor(e){this.options=e}shouldAttemptRetry(e,t){return this.options.shouldRetry?Promise.resolve(e<this.options.attempts&&this.options.shouldRetry(t)):Promise.resolve(e<this.options.attempts)}getDelay(){return this.options.delay}},We=class{constructor(e){this.options=e}shouldAttemptRetry(e,t){return this.options.shouldRetry?Promise.resolve(e<this.options.attempts&&this.options.shouldRetry(t)):Promise.resolve(e<this.options.attempts)}getDelay(e){return Math.min(this.options.maxDelay,this.options.baseDelay*2**e)}};function Ge(e){if(typeof e==`number`)return new Ue({type:`linear`,attempts:e,delay:1e3});switch(e.type){case`linear`:return new Ue(e);case`exponential`:return new We(e);default:throw Error(`Invalid retry strategy`)}}var Ke=async e=>{let t={},n=async e=>typeof e==`function`?await e():e;if(e?.auth){if(e.auth.type===`Bearer`){let r=await n(e.auth.token);if(!r)return t;t.authorization=`Bearer ${r}`}else if(e.auth.type===`Basic`){let[r,i]=await Promise.all([n(e.auth.username),n(e.auth.password)]);if(!r||!i)return t;t.authorization=`Basic ${btoa(`${r}:${i}`)}`}else if(e.auth.type===`Custom`){let[r,i]=await Promise.all([n(e.auth.prefix),n(e.auth.value)]);if(!i)return t;t.authorization=`${r??``} ${i}`}}return t},qe=/^application\/(?:[\w!#$%&*.^`~-]*\+)?json(;.+)?$/i;function Je(e){let t=e.headers.get(`content-type`),n=new Set([`image/svg`,`application/xml`,`application/xhtml`,`application/html`]);if(!t)return`json`;let r=t.split(`;`).shift()||``;return qe.test(r)?`json`:n.has(r)||r.startsWith(`text/`)?`text`:`blob`}function Ye(e){try{return JSON.parse(e),!0}catch{return!1}}function Xe(e){if(e===void 0)return!1;let t=typeof e;return t===`string`||t===`number`||t===`boolean`||t===null?!0:t===`object`?Array.isArray(e)?!0:e.buffer?!1:e.constructor&&e.constructor.name===`Object`||typeof e.toJSON==`function`:!1}function Ze(e){try{return JSON.parse(e)}catch{return e}}function Qe(e){return typeof e==`function`}function $e(e){if(e?.customFetchImpl)return e.customFetchImpl;if(typeof globalThis<`u`&&Qe(globalThis.fetch))return globalThis.fetch;if(typeof window<`u`&&Qe(window.fetch))return window.fetch;throw Error(`No fetch implementation found`)}function et(...e){let t={};for(let n of e)if(n)if(n instanceof Headers)n.forEach((e,n)=>{t[n]=e});else{let e=Array.isArray(n)?n:Object.entries(n);for(let[n,r]of e)r!=null&&(t[n]=r)}return t}async function tt(e){let t=new Headers(et(e?.headers,await Ke(e)));if(!t.has(`content-type`)){let n=nt(e?.body);n&&t.set(`content-type`,n)}return t}function nt(e){return Xe(e)?`application/json`:null}function rt(e){let t=e.get(`content-type`);return t?t.split(`;`)[0].trim().toLowerCase():null}function it(e,t){let{body:n}=e;return n?!Xe(n)||typeof n==`string`?n:rt(t)===`application/x-www-form-urlencoded`?new URLSearchParams(n).toString():JSON.stringify(n):null}function at(e,t){if(t?.method)return t.method.toUpperCase();if(e.startsWith(`@`)){let n=e.split(`@`)[1]?.split(`/`)[0];return lt.includes(n)?n.toUpperCase():t?.body?`POST`:`GET`}return t?.body?`POST`:`GET`}function ot(e,t){let n;return!e?.signal&&e?.timeout&&(n=setTimeout(()=>t?.abort(),e?.timeout)),{abortTimeout:n,clearTimeout:()=>{n&&clearTimeout(n)}}}var st=class e extends Error{constructor(t,n){super(n||JSON.stringify(t,null,2)),this.issues=t,Object.setPrototypeOf(this,e.prototype)}};async function ct(e,t){let n=await e[`~standard`].validate(t);if(n.issues)throw new st(n.issues);return n.value}var lt=[`get`,`post`,`put`,`patch`,`delete`],ut=e=>({id:`apply-schema`,name:`Apply Schema`,version:`1.0.0`,async init(t,n){let r=e.plugins?.find(e=>e.schema?.config?t.startsWith(e.schema.config.baseURL||``)||t.startsWith(e.schema.config.prefix||``):!1)?.schema||e.schema;if(r){let e=t;r.config?.prefix&&e.startsWith(r.config.prefix)&&(e=e.replace(r.config.prefix,``),r.config.baseURL&&(t=t.replace(r.config.prefix,r.config.baseURL))),r.config?.baseURL&&e.startsWith(r.config.baseURL)&&(e=e.replace(r.config.baseURL,``)),e.startsWith(`/`)&&e.charAt(1)===`@`&&(e=e.substring(1));let i=r.schema[e];if(i){let e=n?.headers;if(i.headers&&!n?.disableValidation){let t={};if(n?.headers){if(n.headers instanceof Headers)n.headers.forEach((e,n)=>{t[n.toLowerCase()]=e});else if(typeof n.headers==`object`)for(let[e,r]of Object.entries(n.headers))r!=null&&(t[e.toLowerCase()]=r)}let r=await ct(i.headers,t),a={};for(let[e,t]of Object.entries(r))a[e.toLowerCase()]=t;e=a}let r=J(q({},n),{method:i.method,output:i.output,headers:e});return n?.disableValidation||(r=J(q({},r),{body:i.input?await ct(i.input,n?.body):n?.body,params:i.params?await ct(i.params,n?.params):n?.params,query:i.query?await ct(i.query,n?.query):n?.query})),{url:t,options:r}}}return{url:t,options:n}}}),dt=e=>{async function t(t,n){let r=J(q(q({},e),n),{headers:et(e?.headers,n?.headers),plugins:[...e?.plugins||[],ut(e||{}),...n?.plugins||[]]});if(e?.catchAllError)try{return await ht(t,r)}catch(e){return{data:null,error:{status:500,statusText:`Fetch Error`,message:`Fetch related error. Captured by catchAllError option. See error property for more details.`,error:e}}}return await ht(t,r)}return t},ft=e=>e===`.`||e===`..`;function pt(e,t){let n=e;for(let[e,r]of t)n=n.replace(e,r);if(ft(n))throw TypeError(`Path parameters cannot be reserved path segments`);return encodeURIComponent(n)}function mt(e,t){let{baseURL:n,params:r,query:i}=t||{query:{},params:{},baseURL:``},a=e.startsWith(`http`)?e.split(`/`).slice(0,3).join(`/`):n||``;if(e.startsWith(`@`)){let t=e.toString().split(`@`)[1].split(`/`)[0];lt.includes(t)&&(e=e.replace(`@${t}/`,`/`))}a.endsWith(`/`)||(a+=`/`);let[o,s]=e.replace(a,``).split(`?`),c=new URLSearchParams(s);for(let[e,t]of Object.entries(i||{})){if(t==null)continue;let n;if(typeof t==`string`)n=t;else if(Array.isArray(t)){for(let n of t)c.append(e,n);continue}else n=JSON.stringify(t);c.set(e,n)}let l=new Map;if(r)if(Array.isArray(r)){let e=o.split(`/`).filter(e=>e.startsWith(`:`));for(let[t,n]of e.entries()){let e=r[t];l.set(n,String(e))}}else for(let[e,t]of Object.entries(r))l.set(`:${e}`,String(t));o=o.split(`/`).map(e=>pt(e,l)).join(`/`),o=o.replace(/^\/+/,``);let u=c.toString();return u=u.length>0?`?${u}`.replace(/\+/g,`%20`):``,a.startsWith(`http`)?new URL(`${o}${u}`,a):`${a}${o}${u}`}var ht=async(e,t)=>{let{hooks:n,url:r,options:i}=await He(e,t),a=$e(i),o=new AbortController,s=i.signal??o.signal,c=mt(r,i),l=await tt(i),u=it(i,l),d=at(r,i),f=J(q({},i),{url:c,headers:l,body:u,method:d,signal:s});for(let e of n.onRequest)if(e){let t=await e(f);typeof t==`object`&&t&&Object.assign(f,t)}(`pipeTo`in f&&typeof f.pipeTo==`function`||typeof t?.body?.pipe==`function`)&&(`duplex`in f||(f.duplex=`half`));let{clearTimeout:p}=ot(i,o),m=await a(f.url,f);p();let h={response:m,request:f};for(let e of n.onResponse)if(e){let n=await e(J(q({},h),{response:t?.hookOptions?.cloneResponse?m.clone():m}));n instanceof Response?m=n:typeof n==`object`&&n&&(m=n.response)}if(m.ok){if(f.method===`HEAD`)return{data:``,error:null};let e=Je(m),r={data:null,response:m,request:f};if(e===`json`||e===`text`){let e=await m.text();r.data=await(f.jsonParser??Ze)(e)}else r.data=await m[e]();f?.output&&f.output&&!f.disableValidation&&(r.data=await ct(f.output,r.data));for(let e of n.onSuccess)e&&await e(J(q({},r),{response:t?.hookOptions?.cloneResponse?m.clone():m}));return t?.throw?r.data:{data:r.data,error:null}}let g=t?.jsonParser??Ze,_=await m.text(),v=Ye(_),y=v?await g(_):null,b={response:m,responseText:_,request:f,error:J(q({},y),{status:m.status,statusText:m.statusText})};for(let e of n.onError)e&&await e(J(q({},b),{response:t?.hookOptions?.cloneResponse?m.clone():m}));if(t?.retry){let r=Ge(t.retry),i=t.retryAttempt??0;if(await r.shouldAttemptRetry(i,m)){for(let e of n.onRetry)e&&await e(h);let a=r.getDelay(i);return await new Promise(e=>setTimeout(e,a)),await ht(e,J(q({},t),{retryAttempt:i+1}))}}if(t?.throw)throw new Ve(m.status,m.statusText,v?y:_);return{data:null,error:J(q({},y),{status:m.status,statusText:m.statusText})}},gt=e=>{if(typeof process>`u`)return;let t=e??`/api/auth`;if({}.NEXT_PUBLIC_AUTH_URL)return{}.NEXT_PUBLIC_AUTH_URL;if(typeof window>`u`){if({}.NEXTAUTH_URL)try{return{}.NEXTAUTH_URL}catch{}if({}.VERCEL_URL)try{let e={}.VERCEL_URL.startsWith(`http`)?``:`https://`;return`${new URL(`${e}${{}.VERCEL_URL}`).origin}${t}`}catch{}}},_t=(e,t)=>{let n=`credentials`in Request.prototype,r=be(e?.baseURL,e?.basePath,void 0,t)??gt(e?.basePath)??`/api/auth`,i=e?.plugins?.flatMap(e=>e.fetchPlugins).filter(e=>e!==void 0)||[],a={id:`lifecycle-hooks`,name:`lifecycle-hooks`,hooks:{onSuccess:e?.fetchOptions?.onSuccess,onError:e?.fetchOptions?.onError,onRequest:e?.fetchOptions?.onRequest,onResponse:e?.fetchOptions?.onResponse}},{onSuccess:o,onError:s,onRequest:c,onResponse:l,...u}=e?.fetchOptions||{},d=dt({baseURL:r,...n?{credentials:`include`}:{},method:`GET`,jsonParser(e){return e?L(e,{strict:!1}):null},customFetchImpl:fetch,...u,plugins:[a,...u.plugins||[],...e?.disableDefaultFetchPlugins?[]:[we],...i]}),{$sessionSignal:f,session:p,broadcastSessionUpdate:m}=ke(d,e),h=e?.plugins||[],g={},_={$sessionSignal:f,session:p},v={"/sign-out":`POST`,"/revoke-sessions":`POST`,"/revoke-other-sessions":`POST`,"/delete-user":`POST`},y=[{signal:`$sessionSignal`,matcher(e){return e===`/sign-out`||e===`/update-user`||e===`/update-session`||e===`/sign-up/email`||e===`/sign-in/email`||e===`/delete-user`||e===`/verify-email`||e===`/revoke-sessions`||e===`/revoke-session`||e===`/revoke-other-sessions`||e===`/change-email`||e===`/change-password`},callback(e){e===`/sign-out`?m(`signout`):(e===`/update-user`||e===`/update-session`)&&m(`updateUser`)}}];for(let e of h)e.getAtoms&&Object.assign(_,e.getAtoms?.(d)),e.pathMethods&&Object.assign(v,e.pathMethods),e.atomListeners&&y.push(...e.atomListeners);let b={notify:e=>{_[e].set(!_[e].get())},listen:(e,t)=>{_[e].subscribe(t)},atoms:_};for(let t of h)t.getActions&&(g=Ne(t.getActions?.(d,b,e)??{},g));return{get baseURL(){return r},pluginsActions:g,pluginsAtoms:_,pluginPathMethods:v,atomListeners:y,$fetch:d,$store:b}};function vt(e){return typeof e==`object`&&!!e&&`get`in e&&typeof e.get==`function`&&`lc`in e&&typeof e.lc==`number`}function yt(e){return e.charAt(0).toUpperCase()+e.slice(1)}var bt=/[\p{Ll}\d]+|\p{Lu}+(?!\p{Ll})|\p{Lu}[\p{Ll}\d]+|\p{Lo}+/gu,xt=/['\u2019]/g;function St(e){return e.replace(xt,``).match(bt)??[]}function Ct(e){return St(e).map(e=>e.toLowerCase()).join(`-`)}function wt(e,t,n){let r=t[e],{fetchOptions:i,query:a,...o}=n||{};return r||(i?.method?i.method:o&&Object.keys(o).length>0?`POST`:`GET`)}function Tt(e,t,n,r,i){function a(o=[]){return new Proxy(function(){},{get(t,n){if(typeof n!=`string`||n===`then`||n===`catch`||n===`finally`)return;let r=[...o,n],i=e;for(let e of r)if(i&&typeof i==`object`&&e in i)i=i[e];else{i=void 0;break}return typeof i==`function`||vt(i)?i:a(r)},apply:async(e,a,s)=>{let c=`/`+o.map(Ct).join(`/`),l=s[0]||{},u=s[1]||{},{query:d,fetchOptions:f,...p}=l,m={...u,...f},h=wt(c,n,l);return await t(c,{...m,body:h===`GET`?void 0:{...p,...m?.body||{}},query:d||m?.query,method:h,async onSuccess(e){if(await m?.onSuccess?.(e),!i||m.disableSignal)return;let t=i.filter(e=>e.matcher(c));if(!t.length)return;let n=new Set;for(let e of t){let t=r[e.signal];if(!t)return;if(n.has(e.signal))continue;n.add(e.signal);let i=t.get();setTimeout(()=>{t.set(!i)},10),e.callback?.(c)}}})}})}return a()}function Et(e){let{pluginPathMethods:t,pluginsActions:n,pluginsAtoms:r,$fetch:i,atomListeners:a,$store:o}=_t(e),s={};for(let[e,t]of Object.entries(r))s[`use${yt(e)}`]=t;return Tt({...n,...s,$fetch:i,$store:o},i,t,r,a)}function Dt(e){return{success:!1,error:`You are not allowed to access resource: ${e}`}}function Ot(e){return{success:!1,error:`unauthorized to access resource "${e}"`}}function kt(e){return e===`OR`?`OR`:`AND`}function At(e){return Array.isArray(e)}function jt(e){if(At(e))return{actions:e,connector:`AND`};if(!e||typeof e!=`object`)throw new G(`Invalid access control request`);let{actions:t,connector:n}=e;return At(t)?{actions:t,connector:kt(n)}:{actions:[],connector:kt(n)}}function Mt(e,t){return typeof t==`string`&&e.includes(t)}function Nt(e,{actions:t,connector:n}){return t.length===0?!1:n===`OR`?t.some(t=>Mt(e,t)):t.every(t=>Mt(e,t))}function Pt(e){return{authorize(t,n=`AND`){let r=!1;for(let[i,a]of Object.entries(t)){let t=e[i];if(!t){if(n===`AND`)return Dt(i);continue}let o=Nt(t,jt(a));if(o&&(r=!0),o&&n===`OR`)return{success:!0};if(!o&&n===`AND`)return Ot(i)}return r?{success:!0}:{success:!1,error:`Not authorized`}},statements:e}}function Ft(e){return{newRole(e){return Pt(e)},statements:e}}var It=ue({YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_ORGANIZATION:`You are not allowed to create a new organization`,YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_ORGANIZATIONS:`You have reached the maximum number of organizations`,ORGANIZATION_ALREADY_EXISTS:`Organization already exists`,ORGANIZATION_SLUG_ALREADY_TAKEN:`Organization slug already taken`,ORGANIZATION_NOT_FOUND:`Organization not found`,USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION:`User is not a member of the organization`,YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_ORGANIZATION:`You are not allowed to update this organization`,YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_ORGANIZATION:`You are not allowed to delete this organization`,NO_ACTIVE_ORGANIZATION:`No active organization`,USER_IS_ALREADY_A_MEMBER_OF_THIS_ORGANIZATION:`User is already a member of this organization`,MEMBER_NOT_FOUND:`Member not found`,ROLE_NOT_FOUND:`Role not found`,YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_TEAM:`You are not allowed to create a new team`,TEAM_ALREADY_EXISTS:`Team already exists`,TEAM_NOT_FOUND:`Team not found`,YOU_CANNOT_LEAVE_THE_ORGANIZATION_AS_THE_ONLY_OWNER:`You cannot leave the organization as the only owner`,YOU_CANNOT_LEAVE_THE_ORGANIZATION_WITHOUT_AN_OWNER:`You cannot leave the organization without an owner`,YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_MEMBER:`You are not allowed to delete this member`,YOU_ARE_NOT_ALLOWED_TO_INVITE_USERS_TO_THIS_ORGANIZATION:`You are not allowed to invite users to this organization`,USER_IS_ALREADY_INVITED_TO_THIS_ORGANIZATION:`User is already invited to this organization`,INVITATION_NOT_FOUND:`Invitation not found`,YOU_ARE_NOT_THE_RECIPIENT_OF_THE_INVITATION:`You are not the recipient of the invitation`,EMAIL_VERIFICATION_REQUIRED_BEFORE_ACCEPTING_OR_REJECTING_INVITATION:`Email verification required before accepting or rejecting invitation`,EMAIL_VERIFICATION_REQUIRED_FOR_INVITATION:`Email verification required to view or list invitations for the session email`,YOU_ARE_NOT_ALLOWED_TO_CANCEL_THIS_INVITATION:`You are not allowed to cancel this invitation`,INVITER_IS_NO_LONGER_A_MEMBER_OF_THE_ORGANIZATION:`Inviter is no longer a member of the organization`,YOU_ARE_NOT_ALLOWED_TO_INVITE_USER_WITH_THIS_ROLE:`You are not allowed to invite a user with this role`,FAILED_TO_RETRIEVE_INVITATION:`Failed to retrieve invitation`,YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_TEAMS:`You have reached the maximum number of teams`,UNABLE_TO_REMOVE_LAST_TEAM:`Unable to remove last team`,YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_MEMBER:`You are not allowed to update this member`,ORGANIZATION_MEMBERSHIP_LIMIT_REACHED:`Organization membership limit reached`,YOU_ARE_NOT_ALLOWED_TO_CREATE_TEAMS_IN_THIS_ORGANIZATION:`You are not allowed to create teams in this organization`,YOU_ARE_NOT_ALLOWED_TO_DELETE_TEAMS_IN_THIS_ORGANIZATION:`You are not allowed to delete teams in this organization`,YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_TEAM:`You are not allowed to update this team`,YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_TEAM:`You are not allowed to delete this team`,INVITATION_LIMIT_REACHED:`Invitation limit reached`,TEAM_MEMBER_LIMIT_REACHED:`Team member limit reached`,USER_IS_NOT_A_MEMBER_OF_THE_TEAM:`User is not a member of the team`,YOU_CAN_NOT_ACCESS_THE_MEMBERS_OF_THIS_TEAM:`You are not allowed to list the members of this team`,YOU_DO_NOT_HAVE_AN_ACTIVE_TEAM:`You do not have an active team`,YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_TEAM_MEMBER:`You are not allowed to create a new member`,YOU_ARE_NOT_ALLOWED_TO_REMOVE_A_TEAM_MEMBER:`You are not allowed to remove a team member`,YOU_ARE_NOT_ALLOWED_TO_ACCESS_THIS_ORGANIZATION:`You are not allowed to access this organization as an owner`,YOU_ARE_NOT_A_MEMBER_OF_THIS_ORGANIZATION:`You are not a member of this organization`,MISSING_AC_INSTANCE:`Dynamic Access Control requires a pre-defined ac instance on the server auth plugin. Read server logs for more information`,YOU_MUST_BE_IN_AN_ORGANIZATION_TO_CREATE_A_ROLE:`You must be in an organization to create a role`,YOU_ARE_NOT_ALLOWED_TO_CREATE_A_ROLE:`You are not allowed to create a role`,YOU_ARE_NOT_ALLOWED_TO_UPDATE_A_ROLE:`You are not allowed to update a role`,YOU_ARE_NOT_ALLOWED_TO_DELETE_A_ROLE:`You are not allowed to delete a role`,YOU_ARE_NOT_ALLOWED_TO_READ_A_ROLE:`You are not allowed to read a role`,YOU_ARE_NOT_ALLOWED_TO_LIST_A_ROLE:`You are not allowed to list a role`,YOU_ARE_NOT_ALLOWED_TO_GET_A_ROLE:`You are not allowed to get a role`,TOO_MANY_ROLES:`This organization has too many roles`,INVALID_RESOURCE:`The provided permission includes an invalid resource`,ROLE_NAME_IS_ALREADY_TAKEN:`That role name is already taken`,CANNOT_DELETE_A_PRE_DEFINED_ROLE:`Cannot delete a pre-defined role`,ROLE_IS_ASSIGNED_TO_MEMBERS:`Cannot delete a role that is assigned to members. Please reassign the members to a different role first`,INVALID_TEAM_ID:`Team id contains a reserved character`}),Lt=Ft({organization:[`update`,`delete`],member:[`create`,`update`,`delete`],invitation:[`create`,`cancel`],team:[`create`,`update`,`delete`],ac:[`create`,`read`,`update`,`delete`]}),Rt=Lt.newRole({organization:[`update`],invitation:[`create`,`cancel`],member:[`create`,`update`,`delete`],team:[`create`,`update`,`delete`],ac:[`create`,`read`,`update`,`delete`]}),zt=Lt.newRole({organization:[`update`,`delete`],member:[`create`,`update`,`delete`],invitation:[`create`,`cancel`],team:[`create`,`update`,`delete`],ac:[`create`,`read`,`update`,`delete`]}),Bt=Lt.newRole({organization:[],member:[],invitation:[],team:[],ac:[`read`]}),Vt={admin:Rt,owner:zt,member:Bt},Ht=(e,t)=>{if(!e.permissions)return!1;let n=e.role.split(`,`),r=e.options.creatorRole||`owner`,i=n.includes(r),a=e.allowCreatorAllPermissions||!1;if(i&&a)return!0;for(let r of n)if(t[r]?.authorize(e.permissions)?.success)return!0;return!1},Ut=e=>Ht(e,e.options.roles||Vt),Wt=e=>{let t=y(!1),n=y(!1),r=y(!1),i=y(!1),a={admin:Rt,member:Bt,owner:zt,...e?.roles};return{id:`organization`,version:c,$InferServerPlugin:{},getActions:(t,n,r)=>({$Infer:{ActiveOrganization:{},Organization:{},Invitation:{},Member:{},Team:{}},organization:{checkRolePermission:t=>Ut({role:t.role,options:{ac:e?.ac,roles:a},permissions:t.permissions})}}),getAtoms:e=>{let a=R(t,`/organization/list`,e,{method:`GET`});return{$listOrg:t,$activeOrgSignal:n,$activeMemberSignal:r,$activeMemberRoleSignal:i,activeOrganization:R([n],`/organization/get-full-organization`,e,()=>({method:`GET`})),listOrganizations:a,activeMember:R([n,r],`/organization/get-active-member`,e,{method:`GET`}),activeMemberRole:R([n,i],`/organization/get-active-member-role`,e,{method:`GET`})}},pathMethods:{"/organization/get-full-organization":`GET`,"/organization/list-user-teams":`GET`},atomListeners:[{matcher(e){return e===`/organization/create`||e===`/organization/delete`||e===`/organization/update`},signal:`$listOrg`},{matcher(e){return e===`/sign-out`||e.startsWith(`/organization`)},signal:`$activeOrgSignal`},{matcher(e){return e.startsWith(`/organization/set-active`)||e===`/organization/create`||e===`/organization/delete`||e===`/organization/remove-member`||e===`/organization/leave`||e===`/organization/accept-invitation`},signal:`$sessionSignal`},{matcher(e){return e.includes(`/organization/update-member-role`)||e.startsWith(`/organization/set-active`)},signal:`$activeMemberSignal`},{matcher(e){return e.includes(`/organization/update-member-role`)||e.startsWith(`/organization/set-active`)},signal:`$activeMemberRoleSignal`}],$ERROR_CODES:It}},Gt=ue({OTP_NOT_ENABLED:`OTP not enabled`,OTP_HAS_EXPIRED:`OTP has expired`,TOTP_NOT_ENABLED:`TOTP not enabled`,TWO_FACTOR_NOT_ENABLED:`Two factor isn't enabled`,BACKUP_CODES_NOT_ENABLED:`Backup codes aren't enabled`,INVALID_BACKUP_CODE:`Invalid backup code`,INVALID_CODE:`Invalid code`,TOO_MANY_ATTEMPTS_REQUEST_NEW_CODE:`Too many attempts. Please request a new code.`,ACCOUNT_TEMPORARILY_LOCKED:`Too many failed verification attempts. Your account is temporarily locked. Please try again later.`,INVALID_TWO_FACTOR_COOKIE:`Invalid two factor cookie`}),Kt=e=>({id:`two-factor`,version:c,$InferServerPlugin:{},atomListeners:[{matcher:e=>e.startsWith(`/two-factor/`),signal:`$sessionSignal`}],pathMethods:{"/two-factor/disable":`POST`,"/two-factor/enable":`POST`,"/two-factor/send-otp":`POST`,"/two-factor/generate-backup-codes":`POST`,"/two-factor/get-totp-uri":`POST`,"/two-factor/verify-totp":`POST`,"/two-factor/verify-otp":`POST`,"/two-factor/verify-backup-code":`POST`},fetchPlugins:[{id:`two-factor`,name:`two-factor`,hooks:{async onSuccess(t){if(t.data?.twoFactorRedirect){if(e?.onTwoFactorRedirect){await e.onTwoFactorRedirect({twoFactorMethods:t.data.twoFactorMethods});return}e?.twoFactorPage&&typeof window<`u`&&Ce(e.twoFactorPage)&&(window.location.href=e.twoFactorPage)}}}}],$ERROR_CODES:Gt}),qt=`auth-session-token`,Y={_memoryToken:null,get(){try{if(typeof localStorage<`u`)return localStorage.getItem(qt)}catch{}return this._memoryToken},set(e){this._memoryToken=e;try{typeof localStorage<`u`&&localStorage.setItem(qt,e)}catch{}},clear(){this._memoryToken=null;try{typeof localStorage<`u`&&localStorage.removeItem(qt)}catch{}}};function Jt(e){let t=Error(e.message??`Auth request failed with status ${e.status}`);return e.code&&(t.code=e.code),t}function Yt(e){try{let t=new URL(e);return{origin:t.origin,basePath:t.pathname.replace(/\/$/,``)}}catch{return{origin:Xt()??`http://localhost`,basePath:e.replace(/\/$/,``)}}}function Xt(){try{if(typeof window<`u`&&window.location?.origin)return window.location.origin}catch{}}function Zt(){try{if(typeof document<`u`){let e=document.querySelector(`base`)?.getAttribute(`href`);if(e)return`${new URL(e,Xt()??`http://localhost`).pathname.replace(/\/$/,``)}/reset-password`}}catch{}return`/reset-password`}function Qt(e){let t=e||globalThis.fetch.bind(globalThis);return async(e,n)=>{let r=new Headers(n?.headers),i=Y.get();if(i){let t=typeof e==`string`?e:e instanceof URL?e.href:e.url;/\/api\//i.test(t)&&r.set(`Authorization`,`Bearer ${i}`)}let a=await t(e,{...n,headers:r}),o=a.headers.get(`set-auth-token`);return o&&Y.set(o),a}}function $t(e){let{baseURL:t,fetchFn:n}=e,{origin:r,basePath:i}=Yt(t),a=Qt(n),o=Et({baseURL:r,basePath:i,disableDefaultFetchPlugins:!0,fetchOptions:{customFetchImpl:a},plugins:[Wt(),Kt()]});async function s(e,t){let n=await a(`${r}${i}${e}`,{method:`POST`,headers:{"Content-Type":`application/json`},credentials:`include`,body:JSON.stringify(t)}),o=await n.json().catch(()=>({}));if(!n.ok){let e=Error(o?.message??`Auth request failed with status ${n.status}`);throw o?.code&&(e.code=o.code),e.status=n.status,e}return o??{}}async function c(e){let t=typeof AbortController<`u`?new AbortController:void 0,n=t?setTimeout(()=>t.abort(),e):void 0;try{let e=`${r}${i}/config`,n=await a(e,{method:`GET`,headers:{"Content-Type":`application/json`},...t?{signal:t.signal}:{}});if(!n.ok)throw Error(`Failed to load auth config (status ${n.status})`);let o=await n.json();return o&&typeof o==`object`&&`data`in o&&o.data?o.data:o}finally{n!==void 0&&clearTimeout(n)}}let l=[500,1500,3500],u=null;async function d(){let e;for(let t=0;t<=l.length;t++)try{return await c(8e3)}catch(n){e=n,t<l.length&&await new Promise(e=>setTimeout(e,l[t]))}throw e instanceof Error?e:Error(String(e))}return{async signIn(e){let{data:t,error:n}=await o.signIn.email({email:e.email,password:e.password});if(n)throw Jt(n);let r=t;return r.session?.token&&Y.set(r.session.token),{user:r.user,session:r.session}},async signUp(e){let{data:t,error:n}=await o.signUp.email({email:e.email,password:e.password,name:e.name});if(n)throw Jt(n);let r=t,i=r.token??r.session?.token??null;i&&Y.set(i);let a=r.session??null;return!a&&i&&(a={token:i}),{user:r.user,session:a,requiresVerification:i===null}},async sendVerificationEmail(e,t){let{error:n}=await o.sendVerificationEmail({email:e,callbackURL:t});if(n)throw Error(n.message??`Auth request failed with status ${n.status}`)},async signOut(){let{error:e}=await o.signOut();if(Y.clear(),e)throw Error(e.message??`Auth request failed with status ${e.status}`)},async getSession(){let e=null;try{let t=await o.getSession();t.error||(e=t.data)}catch{}if(e){let t=e;return t.session?.token&&Y.set(t.session.token),{user:t.user,session:t.session}}if(Y.get())try{let e=await(n||globalThis.fetch.bind(globalThis))(`${r}${i}/get-session`,{method:`GET`,credentials:`include`,headers:{"Content-Type":`application/json`}});if(e.ok){let t=await e.json().catch(()=>null);if(t?.user&&t?.session)return t.session.token?Y.set(t.session.token):Y.clear(),{user:t.user,session:t.session};Y.clear()}}catch{}return null},async forgotPassword(e){let t=o,n=t.requestPasswordReset??t.forgetPassword;if(typeof n!=`function`)throw Error(`password reset is not available on this auth backend`);let{error:r}=await n({email:e,redirectTo:Zt()});if(r)throw Error(r.message??`Auth request failed with status ${r.status}`)},async resetPassword(e,t){let{error:n}=await o.resetPassword({token:e,newPassword:t});if(n)throw Error(n.message??`Auth request failed with status ${n.status}`)},async sendPhoneOtp(e){await s(`/phone-number/send-otp`,{phoneNumber:e})},async signInWithPhoneOtp(e,t){let n=await s(`/phone-number/verify`,{phoneNumber:e,code:t}),r=typeof n.token==`string`?n.token:void 0,i=n.user??null;if(!r||!i)throw Error(`No account is registered for this phone number.`);return Y.set(r),{user:i,session:{token:r}}},async signInWithPhonePassword(e,t){let n=await s(`/sign-in/phone-number`,{phoneNumber:e,password:t}),r=typeof n.token==`string`?n.token:void 0,i=n.user??null;if(!r||!i)throw Error(`Invalid phone number or password.`);return Y.set(r),{user:i,session:{token:r}}},async requestPhonePasswordReset(e){await s(`/phone-number/request-password-reset`,{phoneNumber:e})},async resetPasswordWithPhoneOtp(e,t,n){await s(`/phone-number/reset-password`,{phoneNumber:e,otp:t,newPassword:n})},async changePassword(e,t,n){let r=o.changePassword;if(typeof r!=`function`)throw Error(`change-password is not available on this auth backend`);let{error:i}=await r({currentPassword:e,newPassword:t,...n?.revokeOtherSessions==null?{}:{revokeOtherSessions:n.revokeOtherSessions}});if(i)throw Error(i.message??`Auth request failed with status ${i.status}`)},async enrollTotp(e){let t=o.twoFactor;if(!t||typeof t.enable!=`function`)throw Error(`two-factor enrollment is not available on this auth backend`);let{data:n,error:r}=await t.enable({password:e});if(r)throw Error(r.message??`Two-factor enable failed (${r.status??`?`})`);return{totpURI:n?.totpURI??``,backupCodes:n?.backupCodes??[]}},async verifyTotp(e){let t=o.twoFactor;if(!t||typeof t.verifyTotp!=`function`)throw Error(`two-factor verification is not available on this auth backend`);let{error:n}=await t.verifyTotp({code:e});if(n)throw Error(n.message??`Two-factor verification failed (${n.status??`?`})`)},async setInitialPassword(e){let t=`${r}${i}/set-initial-password`,n=await a(t,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({newPassword:e})});if(!n.ok){let e=`Set password failed with status ${n.status}`;try{let t=await n.json();t?.error?.message&&(e=t.error.message)}catch{}throw Error(e)}},async hasLocalPassword(){let e=`${r}${i}/list-accounts`;try{let t=await a(e,{method:`GET`,headers:{"Content-Type":`application/json`}});if(!t.ok)return!1;let n=await t.json();return(Array.isArray(n)?n:n&&`data`in n&&Array.isArray(n.data)?n.data:[]).some(e=>e?.providerId===`credential`)}catch{return!1}},async updateUser(e){let{data:t,error:n}=await o.updateUser(e);if(n)throw Error(n.message??`Auth request failed with status ${n.status}`);if(!t)throw Error(`Update user returned no data`);let r=t;return r&&typeof r==`object`&&`user`in r?r.user:r},async getConfig(){return u||=d().catch(e=>{throw u=null,e}),u},async signInWithProvider(e,t={}){let{type:n=`social`,callbackURL:r,errorCallbackURL:i}=t,a=e=>new Promise((t,n)=>{let r=setTimeout(()=>n(Error(`Sign-in timed out — the server did not respond. Please try again.`)),2e4);e.then(e=>{clearTimeout(r),t(e)},e=>{clearTimeout(r),n(e)})}),s=async()=>await a(o.signIn.social({provider:e,callbackURL:r,errorCallbackURL:i})),c;if(n===`oidc`){if(c=await s(),c.error){let t=o.signIn.oauth2,n=t?await a(t({providerId:e,callbackURL:r,errorCallbackURL:i})).catch(()=>null):null;n&&!n.error&&(c=n)}}else c=await s();let{data:l,error:u}=c;if(u)throw Error(u.message??`Auth request failed with status ${u.status}`);if(!l?.url)throw Error(`Sign-in with "${e}" did not return a redirect URL — please try again or contact your administrator.`);typeof window<`u`&&(window.location.href=l.url)},async listOrganizations(){let{data:e,error:t}=await o.organization.list();if(t)throw Error(t.message??`Failed to list organizations`);return e??[]},async createOrganization(e){let{data:t,error:n}=await o.organization.create({name:e.name,slug:e.slug,logo:e.logo});if(n)throw Error(n.message??`Failed to create organization`);return t},async setActiveOrganization(e){let{data:t,error:n}=await o.organization.setActive({organizationId:e});if(n)throw Error(n.message??`Failed to set active organization`);return t??null},async getActiveOrganization(){let{data:e,error:t}=await o.organization.getFullOrganization();return t||!e?null:e},async getActiveMember(){let e=o.organization?.getActiveMember;if(typeof e!=`function`)return null;let{data:t,error:n}=await e();return n||!t?null:t},async getMembers(e){let{data:t,error:n}=await o.organization.listMembers({query:{organizationId:e}});if(n)throw Error(n.message??`Failed to get members`);let r=t;return Array.isArray(r)?r:r?.members??[]},async inviteMember(e){let{data:t,error:n}=await o.organization.inviteMember({organizationId:e.organizationId,email:e.email,role:e.role});if(n)throw Error(n.message??`Failed to invite member`);return t},async removeMember(e){let{error:t}=await o.organization.removeMember({organizationId:e.organizationId,memberIdOrUserId:e.memberIdOrUserId});if(t)throw Error(t.message??`Failed to remove member`)},async updateMemberRole(e){let{error:t}=await o.organization.updateMemberRole({organizationId:e.organizationId,memberId:e.memberId,role:e.role});if(t)throw Error(t.message??`Failed to update member role`)},async updateOrganization(e,t){let{data:n,error:r}=await o.organization.update({organizationId:e,data:t});if(r)throw Error(r.message??`Failed to update organization`);return n},async deleteOrganization(e){let{error:t}=await o.organization.delete({organizationId:e});if(t)throw Error(t.message??`Failed to delete organization`)},async leaveOrganization(e){let{error:t}=await o.organization.leave({organizationId:e});if(t)throw Error(t.message??`Failed to leave organization`)},async listInvitations(e){let{data:t,error:n}=await o.organization.listInvitations({query:{organizationId:e}});if(n)throw Error(n.message??`Failed to list invitations`);return t??[]},async cancelInvitation(e){let{error:t}=await o.organization.cancelInvitation({invitationId:e});if(t)throw Error(t.message??`Failed to cancel invitation`)},async getInvitation(e){let{data:t,error:n}=await o.organization.getInvitation({query:{id:e}});if(n)throw Error(n.message??`Failed to load invitation`);return t},async acceptInvitation(e){let{error:t}=await o.organization.acceptInvitation({invitationId:e});if(t)throw Error(t.message??`Failed to accept invitation`)},async rejectInvitation(e){let{error:t}=await o.organization.rejectInvitation({invitationId:e});if(t)throw Error(t.message??`Failed to reject invitation`)},async listUserInvitations(){let{data:e,error:t}=await o.organization.listUserInvitations();if(t)throw Error(t.message??`Failed to list invitations`);return e??[]}}}var en=`auth-active-organization-id`,tn={_memoryValue:null,get(){try{if(typeof localStorage<`u`)return localStorage.getItem(en)}catch{}return this._memoryValue},set(e){this._memoryValue=e;try{typeof localStorage<`u`&&localStorage.setItem(en,e)}catch{}},clear(){this._memoryValue=null;try{typeof localStorage<`u`&&localStorage.removeItem(en)}catch{}}};function nn(){return async(e,t)=>{let n=new Headers(t?.headers),r=typeof e==`string`?e:e instanceof URL?e.href:e.url,i=/\/api\//i.test(r),s=Y.get();s&&i&&n.set(`Authorization`,`Bearer ${s}`);let c=tn.get();if(c&&n.set(`X-Tenant-ID`,c),i&&!n.has(`Accept-Language`)&&typeof document<`u`){let e=document.documentElement.lang;e&&n.set(`Accept-Language`,e)}let l=await fetch(e,{...t,headers:n});if(i&&l.status===403)try{let e=o(l.status,await l.clone().json());e&&a.emit(e)}catch{}return l}}var X=t();function rn({authUrl:e,client:t,onAuthStateChange:n,enabled:i=!0,previewMode:o,children:c}){let l=(0,r.useMemo)(()=>t??$t({baseURL:e}),[t,e]),[u,d]=(0,r.useState)(null),[f,p]=(0,r.useState)(null),[m,h]=(0,r.useState)(!0),[g,_]=(0,r.useState)(null),[v,y]=(0,r.useState)(null),[b,ee]=(0,r.useState)([]),[x,S]=(0,r.useState)(null),[C,w]=(0,r.useState)(null),[T,te]=(0,r.useState)(!1),E=o!=null,D=i&&!E?u!==null&&f!==null:!0;(0,r.useEffect)(()=>{if(E){let e=o.simulatedRole??`admin`,t=o.simulatedUserName??`Preview User`,n=o.expiresInSeconds??0;d({id:`preview-user`,email:`preview@preview.local`,name:t,role:e,roles:[e]}),p({token:`preview-token`,expiresAt:n>0?new Date(Date.now()+n*1e3):new Date(Date.now()+365*24*60*60*1e3)}),h(!1);return}if(!i){d({id:`guest`,email:`guest@local`,name:`Guest User`,role:`admin`}),p({token:`guest-token`,expiresAt:new Date(Date.now()+365*24*60*60*1e3)}),h(!1);return}let e=!1;async function t(){try{let t=await l.getSession();if(e)return;t&&(d(t.user),p(t.session))}catch(t){if(e)return;_(t instanceof Error?t:Error(String(t)))}finally{e||h(!1)}}return t(),()=>{e=!0}},[l,i,E,o]),(0,r.useEffect)(()=>{n?.({user:u,session:f,isAuthenticated:D,isLoading:m,error:g})},[u,f,D,m,g,n]);let O=(0,r.useCallback)(async(e,t)=>{h(!0),_(null);try{let n=await l.signIn({email:e,password:t});d(n.user),p(n.session)}catch(e){let t=e instanceof Error?e:Error(String(e));throw _(t),t}finally{h(!1)}},[l]),k=(0,r.useCallback)(async(e,t,n)=>{h(!0),_(null);try{let r=await l.signUp({name:e,email:t,password:n});return r.requiresVerification?{requiresVerification:!0}:(d(r.user),p(r.session),{requiresVerification:!1})}catch(e){let t=e instanceof Error?e:Error(String(e));throw _(t),t}finally{h(!1)}},[l]),A=(0,r.useCallback)(async()=>{h(!0);try{await l.signOut(),d(null),p(null),_(null)}catch(e){_(e instanceof Error?e:Error(String(e)))}finally{h(!1)}},[l]),ne=(0,r.useCallback)(async e=>{_(null);try{let t=await l.updateUser(e);d(t)}catch(e){let t=e instanceof Error?e:Error(String(e));throw _(t),t}},[l]),j=(0,r.useCallback)(async e=>{_(null);try{await l.forgotPassword(e)}catch(e){let t=e instanceof Error?e:Error(String(e));throw _(t),t}},[l]),M=(0,r.useCallback)(async(e,t)=>{_(null);try{await l.sendVerificationEmail(e,t)}catch(e){let t=e instanceof Error?e:Error(String(e));throw _(t),t}},[l]),N=(0,r.useCallback)(async(e,t)=>{_(null);try{await l.resetPassword(e,t)}catch(e){let t=e instanceof Error?e:Error(String(e));throw _(t),t}},[l]),re=(0,r.useCallback)(async e=>{_(null);try{await l.sendPhoneOtp(e)}catch(e){let t=e instanceof Error?e:Error(String(e));throw _(t),t}},[l]),P=(0,r.useCallback)(async(e,t)=>{h(!0),_(null);try{let n=await l.signInWithPhoneOtp(e,t);d(n.user),p(n.session)}catch(e){let t=e instanceof Error?e:Error(String(e));throw _(t),t}finally{h(!1)}},[l]),F=(0,r.useCallback)(async(e,t)=>{h(!0),_(null);try{let n=await l.signInWithPhonePassword(e,t);d(n.user),p(n.session)}catch(e){let t=e instanceof Error?e:Error(String(e));throw _(t),t}finally{h(!1)}},[l]),ie=(0,r.useCallback)(async e=>{_(null);try{await l.requestPhonePasswordReset(e)}catch(e){let t=e instanceof Error?e:Error(String(e));throw _(t),t}},[l]),I=(0,r.useCallback)(async(e,t,n)=>{_(null);try{await l.resetPasswordWithPhoneOtp(e,t,n)}catch(e){let t=e instanceof Error?e:Error(String(e));throw _(t),t}},[l]);(0,r.useEffect)(()=>a.subscribe(e=>{y(t=>t??e)}),[]);let ae=(0,r.useCallback)(e=>l.enrollTotp(e),[l]),oe=(0,r.useCallback)(e=>l.verifyTotp(e),[l]),L=(0,r.useCallback)(async(e,t,n)=>{_(null);try{await l.changePassword(e,t,n)}catch(e){let t=e instanceof Error?e:Error(String(e));throw _(t),t}},[l]),se=(0,r.useCallback)(async e=>{_(null);try{await l.setInitialPassword(e)}catch(e){let t=e instanceof Error?e:Error(String(e));throw _(t),t}},[l]),ce=(0,r.useCallback)(()=>l.hasLocalPassword(),[l]),R=(0,r.useCallback)(()=>l.getConfig(),[l]),z=(0,r.useCallback)(async(e,t)=>{_(null);try{await l.signInWithProvider(e,t)}catch(e){let t=e instanceof Error?e:Error(String(e));throw _(t),t}},[l]),B=(0,r.useCallback)(async e=>{if(!(!i||E)){te(!0);try{let t=await l.listOrganizations();if(e?.())return t;if(ee(t),t.length>0&&!x){let n=null;try{n=await l.getActiveOrganization()}catch{n=null}if(!n&&t.length===1)try{n=await l.setActiveOrganization(t[0].id)}catch{n=null}n&&!e?.()&&(S(n),tn.set(n.id))}return t}catch(t){e?.()||console.warn(`[AuthProvider] Failed to load organizations:`,t)}finally{e?.()||te(!1)}}},[l,i,E,x]),le=(0,r.useCallback)(async()=>{if(!i||E){let e=E?o?.simulatedRole??`admin`:`admin`;w({id:`preview-member`,organizationId:x?.id??`preview-org`,userId:`preview-user`,role:e});return}if(!x){w(null);return}try{let e=await l.getActiveMember();w(e)}catch(e){console.warn(`[AuthProvider] Failed to load active member:`,e),w(null)}},[l,i,E,o,x]);(0,r.useEffect)(()=>{le()},[le]),(0,r.useEffect)(()=>{if(!(u&&i&&!E))return;let e=!1;return B(()=>e),()=>{e=!0}},[u,i,E]);let V=(0,r.useCallback)(async e=>{_(null);try{let t=await l.setActiveOrganization(e);S(t),t?tn.set(t.id):tn.clear()}catch(e){let t=e instanceof Error?e:Error(String(e));throw _(t),t}},[l]),H=(0,r.useCallback)(async e=>{_(null);try{let t=await l.createOrganization(e);return await B(),await V(t.id),t}catch(e){let t=e instanceof Error?e:Error(String(e));throw _(t),t}},[l,B,V]),U=(0,r.useCallback)(async(e,t)=>{let n=await l.updateOrganization(e,t);return await B(),x?.id===e&&S(n),n},[l,B,x]),W=(0,r.useCallback)(async e=>{await l.deleteOrganization(e),x?.id===e&&(S(null),tn.clear()),await B()},[l,x,B]),ue=(0,r.useCallback)(async e=>{await l.leaveOrganization(e),x?.id===e&&(S(null),tn.clear()),await B()},[l,x,B]),de=(0,r.useCallback)(e=>l.getMembers(e),[l]),fe=(0,r.useCallback)(e=>l.inviteMember(e),[l]),pe=(0,r.useCallback)(e=>l.removeMember(e),[l]),me=(0,r.useCallback)(e=>l.updateMemberRole(e),[l]),G=(0,r.useCallback)(e=>l.listInvitations(e),[l]),he=(0,r.useCallback)(e=>l.cancelInvitation(e),[l]),ge=(0,r.useCallback)(e=>l.getInvitation(e),[l]),_e=(0,r.useCallback)(async e=>{await l.acceptInvitation(e),await B()},[l,B]),ve=(0,r.useCallback)(e=>l.rejectInvitation(e),[l]),K=(0,r.useCallback)(()=>l.listUserInvitations(),[l]),ye=i&&!E,be=(0,r.useMemo)(()=>({user:u,session:f,isAuthenticated:D,isAuthEnabled:ye,isLoading:m,error:g,isPreviewMode:E,previewMode:E?o:null,signIn:O,signUp:k,signOut:A,updateUser:ne,forgotPassword:j,sendVerificationEmail:M,resetPassword:N,sendPhoneOtp:re,signInWithPhoneOtp:P,signInWithPhonePassword:F,requestPhonePasswordReset:ie,resetPasswordWithPhoneOtp:I,changePassword:L,remediationRequired:v,setRemediationRequired:y,enrollTotp:ae,verifyTotp:oe,setInitialPassword:se,hasLocalPassword:ce,getAuthConfig:R,signInWithProvider:z,organizations:b,activeOrganization:x,activeMember:C,isOrganizationsLoading:T,switchOrganization:V,createOrganization:H,refreshOrganizations:B,updateOrganization:U,deleteOrganization:W,leaveOrganization:ue,getMembers:de,inviteMember:fe,removeMember:pe,updateMemberRole:me,listInvitations:G,cancelInvitation:he,getInvitation:ge,acceptInvitation:_e,rejectInvitation:ve,listUserInvitations:K}),[u,f,D,ye,m,g,E,o,O,k,A,ne,j,M,N,L,se,ce,R,z,re,P,F,ie,I,v,ae,oe,b,x,C,T,V,H,B,U,W,ue,de,fe,pe,me,G,he,ge,_e,ve,K]);return(0,X.jsx)(s.Provider,{value:be,children:c})}function an(){return(0,r.useContext)(s)||{user:null,session:null,isAuthenticated:!1,isAuthEnabled:!1,isLoading:!1,error:null,isPreviewMode:!1,previewMode:null,signIn:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},signUp:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},signOut:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},updateUser:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},forgotPassword:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},sendVerificationEmail:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},resetPassword:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},sendPhoneOtp:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},signInWithPhoneOtp:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},signInWithPhonePassword:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},requestPhonePasswordReset:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},resetPasswordWithPhoneOtp:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},changePassword:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},remediationRequired:null,setRemediationRequired:()=>{},enrollTotp:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},verifyTotp:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},setInitialPassword:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},hasLocalPassword:async()=>!1,getAuthConfig:async()=>({}),signInWithProvider:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},organizations:[],activeOrganization:null,activeMember:null,isOrganizationsLoading:!1,switchOrganization:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},createOrganization:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},refreshOrganizations:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},updateOrganization:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},deleteOrganization:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},leaveOrganization:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},getMembers:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},inviteMember:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},removeMember:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},updateMemberRole:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},listInvitations:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},cancelInvitation:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},getInvitation:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},acceptInvitation:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},rejectInvitation:async()=>{throw Error(`useAuth must be used within an AuthProvider`)},listUserInvitations:async()=>{throw Error(`useAuth must be used within an AuthProvider`)}}}var on=new Set([`owner`,`admin`,`super_admin`,`superadmin`,`platform_admin`,`system_admin`,`org_owner`,`org_admin`]);function sn(e){return typeof e==`string`&&on.has(e.toLowerCase())}function cn(){let{activeMember:e,user:t}=an();return!!(sn(e?.role)||sn(t?.role)||Array.isArray(t?.roles)&&t.roles.some(sn))}function ln({fallback:e=null,requiredRoles:t,loadingFallback:n,children:r}){let{isAuthenticated:i,isLoading:a,user:o}=an();if(a)return(0,X.jsx)(X.Fragment,{children:n??null});if(!i)return(0,X.jsx)(X.Fragment,{children:e});if(t&&t.length>0&&o){let n=o.roles??(o.role?[o.role]:[]);if(!t.some(e=>n.includes(e)))return(0,X.jsx)(X.Fragment,{children:e})}return(0,X.jsx)(X.Fragment,{children:r})}var Z=`flex h-11 w-full rounded-lg border border-input bg-background px-3.5 py-2 text-sm shadow-sm ring-offset-background transition-colors placeholder:text-muted-foreground hover:border-primary/40 focus-visible:border-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 focus-visible:ring-offset-1 disabled:cursor-not-allowed disabled:opacity-50`,un=`inline-flex h-11 w-full items-center justify-center gap-2 rounded-lg bg-gradient-to-r from-primary to-primary/85 px-4 py-2 text-sm font-medium text-primary-foreground shadow-sm ring-offset-background transition-[box-shadow,background-color,transform] hover:shadow-md hover:from-primary hover:to-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2 active:scale-[0.99] disabled:pointer-events-none disabled:opacity-60 motion-reduce:transition-none motion-reduce:active:transform-none`,Q=`text-sm font-medium leading-none text-foreground`;function $(){return(0,X.jsxs)(`svg`,{className:`h-4 w-4 animate-spin`,viewBox:`0 0 24 24`,fill:`none`,"aria-hidden":`true`,children:[(0,X.jsx)(`circle`,{className:`opacity-25`,cx:`12`,cy:`12`,r:`10`,stroke:`currentColor`,strokeWidth:`4`}),(0,X.jsx)(`path`,{className:`opacity-90`,d:`M4 12a8 8 0 018-8`,stroke:`currentColor`,strokeWidth:`4`,strokeLinecap:`round`})]})}function dn({className:e}){return(0,X.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,className:e??`h-4 w-4 shrink-0`,"aria-hidden":`true`,children:[(0,X.jsx)(`circle`,{cx:`12`,cy:`12`,r:`10`}),(0,X.jsx)(`line`,{x1:`12`,y1:`8`,x2:`12`,y2:`12`}),(0,X.jsx)(`line`,{x1:`12`,y1:`16`,x2:`12.01`,y2:`16`})]})}function fn({className:e}){return(0,X.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.75`,strokeLinecap:`round`,strokeLinejoin:`round`,className:e??`h-7 w-7`,"aria-hidden":`true`,children:[(0,X.jsx)(`rect`,{x:`2`,y:`4`,width:`20`,height:`16`,rx:`2`}),(0,X.jsx)(`path`,{d:`m22 6-10 7L2 6`})]})}function pn({icon:e,title:t,description:n}){return(0,X.jsxs)(`div`,{className:`flex flex-col items-center space-y-3 text-center`,children:[e&&(0,X.jsx)(`div`,{className:`flex h-12 w-12 items-center justify-center rounded-2xl bg-primary/10 text-primary ring-1 ring-primary/15`,children:e}),(0,X.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight text-foreground sm:text-[1.6rem]`,children:t}),n&&(0,X.jsx)(`p`,{className:`text-sm leading-relaxed text-muted-foreground`,children:n})]})}function mn({message:e}){return(0,X.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-destructive/30 bg-destructive/10 p-3 text-sm text-destructive`,role:`alert`,children:[(0,X.jsx)(dn,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,X.jsx)(`span`,{className:`leading-snug`,children:e})]})}var hn={google:`Google`,github:`GitHub`,microsoft:`Microsoft`,apple:`Apple`,facebook:`Facebook`,twitter:`Twitter`,discord:`Discord`,gitlab:`GitLab`,linkedin:`LinkedIn`},gn={google:(0,X.jsx)(`svg`,{viewBox:`0 0 24 24`,className:`h-4 w-4`,"aria-hidden":`true`,children:(0,X.jsx)(`path`,{fill:`#EA4335`,d:`M12 10.2v3.9h5.5c-.24 1.4-1.7 4.1-5.5 4.1-3.3 0-6-2.74-6-6.1s2.7-6.1 6-6.1c1.88 0 3.14.8 3.86 1.5l2.64-2.55C16.84 3.36 14.66 2.4 12 2.4 6.92 2.4 2.8 6.52 2.8 11.6S6.92 20.8 12 20.8c6.92 0 9.2-4.86 9.2-7.4 0-.5-.06-.88-.14-1.2H12z`})}),github:(0,X.jsx)(`svg`,{viewBox:`0 0 24 24`,className:`h-4 w-4 fill-current`,"aria-hidden":`true`,children:(0,X.jsx)(`path`,{d:`M12 .5C5.65.5.5 5.65.5 12c0 5.08 3.29 9.39 7.86 10.91.58.11.79-.25.79-.56v-2.07c-3.2.7-3.87-1.37-3.87-1.37-.52-1.33-1.27-1.69-1.27-1.69-1.04-.71.08-.7.08-.7 1.15.08 1.76 1.18 1.76 1.18 1.02 1.75 2.68 1.25 3.34.96.1-.74.4-1.25.73-1.54-2.55-.29-5.24-1.28-5.24-5.69 0-1.26.45-2.29 1.18-3.1-.12-.29-.51-1.46.11-3.04 0 0 .97-.31 3.18 1.18a11.04 11.04 0 015.79 0c2.21-1.49 3.18-1.18 3.18-1.18.62 1.58.23 2.75.11 3.04.74.81 1.18 1.84 1.18 3.1 0 4.42-2.7 5.39-5.27 5.68.41.36.78 1.06.78 2.13v3.16c0 .31.21.68.8.56C20.21 21.39 23.5 17.08 23.5 12 23.5 5.65 18.35.5 12 .5z`})}),microsoft:(0,X.jsxs)(`svg`,{viewBox:`0 0 24 24`,className:`h-4 w-4`,"aria-hidden":`true`,children:[(0,X.jsx)(`path`,{fill:`#F25022`,d:`M2 2h9.5v9.5H2z`}),(0,X.jsx)(`path`,{fill:`#7FBA00`,d:`M12.5 2H22v9.5h-9.5z`}),(0,X.jsx)(`path`,{fill:`#00A4EF`,d:`M2 12.5h9.5V22H2z`}),(0,X.jsx)(`path`,{fill:`#FFB900`,d:`M12.5 12.5H22V22h-9.5z`})]}),apple:(0,X.jsx)(`svg`,{viewBox:`0 0 24 24`,className:`h-4 w-4 fill-current`,"aria-hidden":`true`,children:(0,X.jsx)(`path`,{d:`M16.37 12.55c-.02-2.27 1.85-3.36 1.94-3.42-1.06-1.55-2.71-1.76-3.3-1.79-1.4-.14-2.74.83-3.45.83-.71 0-1.81-.81-2.98-.79-1.53.02-2.95.89-3.74 2.27-1.6 2.77-.41 6.86 1.14 9.11.76 1.1 1.66 2.34 2.83 2.3 1.14-.05 1.57-.74 2.94-.74 1.37 0 1.76.74 2.96.71 1.22-.02 2-1.12 2.75-2.23.87-1.28 1.22-2.52 1.24-2.59-.03-.01-2.38-.91-2.4-3.66zM14.1 5.31c.62-.76 1.05-1.81.93-2.86-.9.04-2 .6-2.65 1.35-.58.66-1.1 1.74-.96 2.76 1.01.08 2.04-.51 2.68-1.25z`})}),facebook:(0,X.jsx)(`svg`,{viewBox:`0 0 24 24`,className:`h-4 w-4`,"aria-hidden":`true`,children:(0,X.jsx)(`path`,{fill:`#1877F2`,d:`M24 12C24 5.37 18.63 0 12 0S0 5.37 0 12c0 5.99 4.39 10.95 10.13 11.85V15.47H7.08V12h3.05V9.36c0-3.01 1.79-4.67 4.53-4.67 1.31 0 2.69.23 2.69.23v2.96h-1.51c-1.49 0-1.96.93-1.96 1.88V12h3.33l-.53 3.47h-2.8v8.38C19.61 22.95 24 17.99 24 12z`})}),twitter:(0,X.jsx)(`svg`,{viewBox:`0 0 24 24`,className:`h-4 w-4 fill-current`,"aria-hidden":`true`,children:(0,X.jsx)(`path`,{d:`M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z`})}),discord:(0,X.jsx)(`svg`,{viewBox:`0 0 24 24`,className:`h-4 w-4`,"aria-hidden":`true`,children:(0,X.jsx)(`path`,{fill:`#5865F2`,d:`M20.32 4.37A19.79 19.79 0 0016.56 3l-.18.36a18.27 18.27 0 00-8.76 0L7.44 3a19.79 19.79 0 00-3.76 1.37C.99 8.4.27 12.34.63 16.22a19.94 19.94 0 006.07 3.07l.49-.7a13.2 13.2 0 01-2.07-.99c.17-.13.34-.27.5-.41a14.13 14.13 0 0012.76 0c.16.14.33.28.5.41-.66.4-1.36.73-2.07.99l.49.7a19.92 19.92 0 006.07-3.07c.43-4.5-.66-8.41-2.95-11.85zM8.52 14.12c-1.18 0-2.15-1.08-2.15-2.41 0-1.33.95-2.42 2.15-2.42 1.2 0 2.17 1.09 2.15 2.42 0 1.33-.96 2.41-2.15 2.41zm6.96 0c-1.18 0-2.15-1.08-2.15-2.41 0-1.33.95-2.42 2.15-2.42 1.2 0 2.17 1.09 2.15 2.42 0 1.33-.95 2.41-2.15 2.41z`})}),gitlab:(0,X.jsx)(`svg`,{viewBox:`0 0 24 24`,className:`h-4 w-4`,"aria-hidden":`true`,children:(0,X.jsx)(`path`,{fill:`#FC6D26`,d:`M23.6 9.6L23.57 9.5 20.3.81a.84.84 0 00-1.6.05L16.5 7.6H7.5L5.3.86a.84.84 0 00-1.6-.05L.43 9.5l-.03.1a5.84 5.84 0 001.94 6.74l.01.01.03.02 4.8 3.6 2.38 1.8 1.45 1.1a1 1 0 001.2 0l1.45-1.1 2.38-1.8 4.83-3.62.01-.01a5.84 5.84 0 001.93-6.74z`})}),linkedin:(0,X.jsx)(`svg`,{viewBox:`0 0 24 24`,className:`h-4 w-4`,"aria-hidden":`true`,children:(0,X.jsx)(`path`,{fill:`#0A66C2`,d:`M20.45 20.45h-3.55v-5.57c0-1.33-.02-3.04-1.85-3.04-1.85 0-2.13 1.45-2.13 2.94v5.67H9.36V9h3.41v1.56h.05c.48-.9 1.64-1.85 3.37-1.85 3.6 0 4.27 2.37 4.27 5.45v6.29zM5.34 7.43a2.06 2.06 0 11.01-4.13 2.06 2.06 0 010 4.13zM7.12 20.45H3.56V9h3.56v11.45zM22.22 0H1.77C.79 0 0 .77 0 1.72v20.56C0 23.23.79 24 1.77 24h20.45c.98 0 1.78-.77 1.78-1.72V1.72C24 .77 23.2 0 22.22 0z`})})};function _n({id:e}){let t=gn[e];return t?(0,X.jsx)(`span`,{className:`mr-2 flex h-4 w-4 items-center justify-center`,children:t}):(0,X.jsx)(`span`,{className:`mr-2 flex h-4 w-4 items-center justify-center rounded-sm bg-muted text-[10px] font-bold uppercase`,children:e[0]})}function vn({mode:e=`sign-in`,callbackURL:t,errorCallbackURL:n,dividerText:i=`or continue with email`,onProvidersResolved:a}){let{getAuthConfig:o,signInWithProvider:s}=an(),[c,l]=(0,r.useState)([]),[u,d]=(0,r.useState)(!0),[f,p]=(0,r.useState)(null),[m,h]=(0,r.useState)(null);if((0,r.useEffect)(()=>{let e=!1;return Promise.resolve().then(()=>o()).then(t=>{if(e)return;let n=(t?.socialProviders??[]).filter(e=>e.enabled);l(n),a?.(n.length>0)}).catch(t=>{e||(console.warn(`[SocialSignInButtons] failed to load auth config`,t),a?.(!1))}).finally(()=>{e||d(!1)}),()=>{e=!0}},[o]),u||c.length===0)return null;let g=e===`sign-in`?`Continue with`:`Sign up with`,_=typeof window<`u`?window.location.href:void 0,v=async e=>{if(!m){p(null),h(e.id);try{await s(e.id,{callbackURL:t??_,errorCallbackURL:n??t??_,type:e.type??`social`})}catch(e){p(e instanceof Error?e.message:String(e)),h(null)}}};return(0,X.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[f&&(0,X.jsx)(`div`,{className:`rounded-md bg-destructive/15 p-3 text-sm text-destructive`,role:`alert`,children:f}),c.map(e=>(0,X.jsxs)(`button`,{type:`button`,onClick:()=>v(e),disabled:m!==null,"aria-busy":m===e.id,className:`inline-flex h-10 w-full items-center justify-center rounded-md border border-input bg-background px-4 py-2 text-sm font-medium ring-offset-background transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50`,children:[m===e.id?(0,X.jsx)($,{}):(0,X.jsx)(_n,{id:e.id}),g,` `,hn[e.id]??e.name]},e.id)),(0,X.jsxs)(`div`,{className:`relative my-1`,children:[(0,X.jsx)(`div`,{className:`absolute inset-0 flex items-center`,children:(0,X.jsx)(`span`,{className:`w-full border-t`})}),(0,X.jsx)(`div`,{className:`relative flex justify-center text-xs uppercase`,children:(0,X.jsx)(`span`,{className:`bg-background px-2 text-muted-foreground`,children:i})})]})]})}function yn(e){let t=String(e??``).replace(/[\s\-().]/g,``);return/^\+?[0-9]{6,15}$/.test(t)?t:null}function bn(e){return typeof e!=`string`||e.includes(`@`)?!1:yn(e)!==null}var xn=({href:e,className:t,children:n})=>(0,X.jsx)(`a`,{href:e,className:t,children:n}),Sn=()=>(0,X.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.75`,strokeLinecap:`round`,strokeLinejoin:`round`,className:`h-6 w-6`,"aria-hidden":`true`,children:[(0,X.jsx)(`rect`,{x:`3`,y:`11`,width:`18`,height:`11`,rx:`2`}),(0,X.jsx)(`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`})]});function Cn({onSuccess:e,onError:t,registerUrl:n=`/register`,forgotPasswordUrl:i=`/forgot-password`,title:a=`Sign in to your account`,description:o=`Enter your email and password to continue`,icon:s,hideIcon:c=!1,linkComponent:l=xn,labels:u={},errorMessages:d}){let{signIn:f,isLoading:p,getAuthConfig:m,sendPhoneOtp:h,signInWithPhoneOtp:g,signInWithPhonePassword:_}=an(),[v,y]=(0,r.useState)(``),[b,ee]=(0,r.useState)(``),[x,S]=(0,r.useState)(null),[C,w]=(0,r.useState)(!1),[T,te]=(0,r.useState)(!1),[E,D]=(0,r.useState)(`password`),[O,k]=(0,r.useState)(``),[A,ne]=(0,r.useState)(``),[j,M]=(0,r.useState)(!1),[N,re]=(0,r.useState)(!1),[P,F]=(0,r.useState)(0),[ie,I]=(0,r.useState)(!1),[ae,oe]=(0,r.useState)(!1),[L,se]=(0,r.useState)(!1),[ce,R]=(0,r.useState)(!1),[z,B]=(0,r.useState)(!1),[le,V]=(0,r.useState)(!0);(0,r.useEffect)(()=>{let e=!1;return Promise.resolve().then(()=>m()).then(t=>{e||(oe(t?.features?.sso===!0),w(t?.features?.phoneNumberOtp===!0),te(t?.features?.phoneNumber===!0),se(t?.features?.ssoEnforced===!0||t?.emailPassword?.enabled===!1))}).catch(()=>{}).finally(()=>{e||V(!1)}),()=>{e=!0}},[m]);let H=!L||ce,U={emailLabel:u.emailLabel??`Email`,emailPlaceholder:u.emailPlaceholder??`name@example.com`,emailOrPhoneLabel:u.emailOrPhoneLabel??`Email or phone number`,emailOrPhonePlaceholder:u.emailOrPhonePlaceholder??`name@example.com or +1 555 000 0000`,passwordLabel:u.passwordLabel??`Password`,passwordPlaceholder:u.passwordPlaceholder??`Enter your password`,forgotPasswordText:u.forgotPasswordText??`Forgot password?`,submitButton:u.submitButton??`Sign In`,submittingButton:u.submittingButton??`Signing in…`,noAccountText:u.noAccountText??`Don't have an account?`,signUpText:u.signUpText??`Sign up`,orText:u.orText??`or`,ssoButton:u.ssoButton??`Sign in with SSO`,usePasswordText:u.usePasswordText??`Use a password instead`,backToSsoText:u.backToSsoText??`Back to single sign-on`,ssoOnlyDescription:u.ssoOnlyDescription??`Sign in with your organization's single sign-on`,phoneLabel:u.phoneLabel??`Phone number`,phonePlaceholder:u.phonePlaceholder??`+1 555 000 0000`,otpCodeLabel:u.otpCodeLabel??`Verification code`,otpCodePlaceholder:u.otpCodePlaceholder??`6-digit code`,sendOtpButton:u.sendOtpButton??`Get code`,resendOtpCountdownText:u.resendOtpCountdownText??`Resend in {seconds}s`,usePhoneOtpText:u.usePhoneOtpText??`Sign in with verification code`,usePasswordSignInText:u.usePasswordSignInText??`Sign in with password instead`};(0,r.useEffect)(()=>{if(P<=0)return;let e=setTimeout(()=>F(e=>e>1?e-1:0),1e3);return()=>clearTimeout(e)},[P]);let W=async n=>{n.preventDefault(),S(null);try{E===`phone-otp`?await g(O.trim(),A.trim()):T&&bn(v)?await _(yn(v)??v.trim(),b):await f(v,b),e?.()}catch(e){let n=e instanceof Error?e:Error(String(e)),r=n.code;S(r&&d?.[r]||n.message),t?.(n)}},ue=async()=>{if(!(!O.trim()||j||P>0)){S(null),M(!0);try{await h(O.trim()),re(!0),F(60)}catch(e){let n=e instanceof Error?e:Error(String(e)),r=n.code;S(r&&d?.[r]||n.message),t?.(n)}finally{M(!1)}}},de=e=>{D(e),S(null)};return(0,X.jsxs)(`div`,{className:`mx-auto flex w-full flex-col justify-center space-y-7 sm:w-[400px]`,children:[(0,X.jsx)(pn,{icon:c?void 0:s??(0,X.jsx)(Sn,{}),title:a,description:L&&!ce?U.ssoOnlyDescription:o}),(0,X.jsx)(`div`,{className:`space-y-5`,children:le?(0,X.jsx)(`div`,{className:`flex justify-center py-10`,role:`status`,"aria-live":`polite`,"data-testid":`login-config-loading`,children:(0,X.jsx)($,{})}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(vn,{mode:`sign-in`,onProvidersResolved:e=>I(e)}),H?E===`phone-otp`?(0,X.jsxs)(`form`,{onSubmit:W,className:`space-y-4`,children:[x&&(0,X.jsx)(mn,{message:x}),(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsx)(`label`,{htmlFor:`login-phone`,className:Q,children:U.phoneLabel}),(0,X.jsx)(`input`,{id:`login-phone`,type:`tel`,placeholder:U.phonePlaceholder,value:O,onChange:e=>k(e.target.value),required:!0,autoComplete:`tel`,disabled:p,className:Z})]}),(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsx)(`label`,{htmlFor:`login-otp`,className:Q,children:U.otpCodeLabel}),(0,X.jsxs)(`div`,{className:`flex gap-2`,children:[(0,X.jsx)(`input`,{id:`login-otp`,type:`text`,inputMode:`numeric`,placeholder:U.otpCodePlaceholder,value:A,onChange:e=>ne(e.target.value),required:!0,autoComplete:`one-time-code`,disabled:p,className:Z}),(0,X.jsxs)(`button`,{type:`button`,onClick:ue,disabled:j||P>0||!O.trim()||p,className:`shrink-0 rounded-md border border-input bg-background px-3 py-2 text-sm font-medium transition-colors hover:bg-accent disabled:opacity-50`,children:[j&&(0,X.jsx)($,{}),P>0?U.resendOtpCountdownText.replace(`{seconds}`,String(P)):U.sendOtpButton]})]})]}),(0,X.jsxs)(`button`,{type:`submit`,disabled:p||!N,className:un,children:[p&&(0,X.jsx)($,{}),p?U.submittingButton:U.submitButton]}),(0,X.jsx)(`button`,{type:`button`,onClick:()=>de(`password`),className:`w-full text-center text-xs text-muted-foreground underline-offset-4 transition-colors hover:text-primary hover:underline`,children:U.usePasswordSignInText})]}):(0,X.jsxs)(`form`,{onSubmit:W,className:`space-y-4`,children:[x&&(0,X.jsx)(mn,{message:x}),(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsx)(`label`,{htmlFor:`login-email`,className:Q,children:T?U.emailOrPhoneLabel:U.emailLabel}),(0,X.jsx)(`input`,{id:`login-email`,type:T?`text`:`email`,inputMode:T?`text`:`email`,placeholder:T?U.emailOrPhonePlaceholder:U.emailPlaceholder,value:v,onChange:e=>y(e.target.value),required:!0,autoComplete:`username`,disabled:p,className:Z})]}),(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,X.jsx)(`label`,{htmlFor:`login-password`,className:Q,children:U.passwordLabel}),i&&(0,X.jsx)(l,{href:i,className:`text-xs text-muted-foreground underline-offset-4 transition-colors hover:text-primary hover:underline`,children:U.forgotPasswordText})]}),(0,X.jsx)(`input`,{id:`login-password`,type:`password`,placeholder:U.passwordPlaceholder,value:b,onChange:e=>ee(e.target.value),required:!0,autoComplete:`current-password`,disabled:p,className:Z})]}),(0,X.jsxs)(`button`,{type:`submit`,disabled:p,className:un,children:[p&&(0,X.jsx)($,{}),p?U.submittingButton:U.submitButton]}),ae&&(0,X.jsxs)(`button`,{type:`button`,onClick:async()=>{if(!z){if(S(null),bn(v)){S(`Enter your email address to sign in with SSO.`);return}B(!0);try{let e=window.location.pathname.replace(/\/login(?:\/.*)?$/,``),t=await fetch(`/api/v1/auth/sign-in/sso`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({email:v,callbackURL:e+`/home`}),credentials:`include`}),n=await t.json().catch(()=>({}));if(t.ok&&typeof n.url==`string`){window.location.href=n.url;return}S(n.message||`No SSO provider is configured for this email domain.`),B(!1)}catch(e){S(e instanceof Error?e.message:String(e)),B(!1)}}},disabled:p||z,"aria-busy":z,className:`flex w-full items-center justify-center rounded-md border border-input bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent disabled:opacity-50`,children:[z&&(0,X.jsx)($,{}),U.ssoButton]}),C&&(0,X.jsx)(`button`,{type:`button`,onClick:()=>de(`phone-otp`),className:`w-full text-center text-xs text-muted-foreground underline-offset-4 transition-colors hover:text-primary hover:underline`,children:U.usePhoneOtpText}),L&&ce&&(0,X.jsx)(`button`,{type:`button`,onClick:()=>R(!1),className:`w-full text-center text-xs text-muted-foreground underline-offset-4 transition-colors hover:text-primary hover:underline`,children:U.backToSsoText})]}):(0,X.jsxs)(`div`,{className:`space-y-4`,children:[x&&(0,X.jsx)(mn,{message:x}),(0,X.jsx)(`button`,{type:`button`,onClick:()=>R(!0),className:`w-full text-center text-xs text-muted-foreground underline-offset-4 transition-colors hover:text-primary hover:underline`,children:U.usePasswordText})]})]})}),n&&!L&&(0,X.jsxs)(`p`,{className:`px-8 text-center text-sm text-muted-foreground`,children:[U.noAccountText,` `,(0,X.jsx)(l,{href:n,className:`font-medium text-primary underline-offset-4 hover:underline focus-visible:outline-none focus-visible:underline`,children:U.signUpText})]})]})}var wn=({href:e,className:t,children:n})=>(0,X.jsx)(`a`,{href:e,className:t,children:n}),Tn=()=>(0,X.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.75`,strokeLinecap:`round`,strokeLinejoin:`round`,className:`h-6 w-6`,"aria-hidden":`true`,children:[(0,X.jsx)(`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`}),(0,X.jsx)(`circle`,{cx:`9`,cy:`7`,r:`4`}),(0,X.jsx)(`line`,{x1:`19`,y1:`8`,x2:`19`,y2:`14`}),(0,X.jsx)(`line`,{x1:`22`,y1:`11`,x2:`16`,y2:`11`})]});function En({onSuccess:e,onVerificationRequired:t,onError:n,loginUrl:i=`/login`,title:a=`Create an account`,description:o=`Enter your information to get started`,icon:s,hideIcon:c=!1,linkComponent:l=wn,labels:u={},errorMessages:d}){let{signUp:f,isLoading:p}=an(),[m,h]=(0,r.useState)(``),[g,_]=(0,r.useState)(``),[v,y]=(0,r.useState)(``),[b,ee]=(0,r.useState)(``),[x,S]=(0,r.useState)(null),C={nameLabel:u.nameLabel??`Name`,namePlaceholder:u.namePlaceholder??`John Doe`,emailLabel:u.emailLabel??`Email`,emailPlaceholder:u.emailPlaceholder??`name@example.com`,passwordLabel:u.passwordLabel??`Password`,passwordPlaceholder:u.passwordPlaceholder??`Create a password (min. 8 characters)`,confirmPasswordLabel:u.confirmPasswordLabel??`Confirm Password`,confirmPasswordPlaceholder:u.confirmPasswordPlaceholder??`Confirm your password`,passwordMismatchError:u.passwordMismatchError??`Passwords do not match`,passwordTooShortError:u.passwordTooShortError??`Password must be at least 8 characters`,submitButton:u.submitButton??`Create Account`,submittingButton:u.submittingButton??`Creating account…`,hasAccountText:u.hasAccountText??`Already have an account?`,signInText:u.signInText??`Sign in`,orText:u.orText??`or`};return(0,X.jsxs)(`div`,{className:`mx-auto flex w-full flex-col justify-center space-y-7 sm:w-[400px]`,children:[(0,X.jsx)(pn,{icon:c?void 0:s??(0,X.jsx)(Tn,{}),title:a,description:o}),(0,X.jsxs)(`div`,{className:`space-y-5`,children:[(0,X.jsx)(vn,{mode:`sign-up`}),(0,X.jsxs)(`form`,{onSubmit:async r=>{if(r.preventDefault(),S(null),v!==b){S(C.passwordMismatchError);return}if(v.length<8){S(C.passwordTooShortError);return}try{if((await f(m,g,v))?.requiresVerification){t?.(g);return}e?.()}catch(e){let t=e instanceof Error?e:Error(String(e)),r=t.code;S(r&&d?.[r]||t.message),n?.(t)}},className:`space-y-4`,children:[x&&(0,X.jsx)(mn,{message:x}),(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsx)(`label`,{htmlFor:`register-name`,className:Q,children:C.nameLabel}),(0,X.jsx)(`input`,{id:`register-name`,type:`text`,placeholder:C.namePlaceholder,value:m,onChange:e=>h(e.target.value),required:!0,autoComplete:`name`,disabled:p,className:Z})]}),(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsx)(`label`,{htmlFor:`register-email`,className:Q,children:C.emailLabel}),(0,X.jsx)(`input`,{id:`register-email`,type:`email`,placeholder:C.emailPlaceholder,value:g,onChange:e=>_(e.target.value),required:!0,autoComplete:`email`,disabled:p,className:Z})]}),(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsx)(`label`,{htmlFor:`register-password`,className:Q,children:C.passwordLabel}),(0,X.jsx)(`input`,{id:`register-password`,type:`password`,placeholder:C.passwordPlaceholder,value:v,onChange:e=>y(e.target.value),required:!0,minLength:8,autoComplete:`new-password`,disabled:p,className:Z})]}),(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsx)(`label`,{htmlFor:`register-confirm-password`,className:Q,children:C.confirmPasswordLabel}),(0,X.jsx)(`input`,{id:`register-confirm-password`,type:`password`,placeholder:C.confirmPasswordPlaceholder,value:b,onChange:e=>ee(e.target.value),required:!0,minLength:8,autoComplete:`new-password`,disabled:p,className:Z})]}),(0,X.jsxs)(`button`,{type:`submit`,disabled:p,className:un,children:[p&&(0,X.jsx)($,{}),p?C.submittingButton:C.submitButton]})]})]}),i&&(0,X.jsxs)(`p`,{className:`px-8 text-center text-sm text-muted-foreground`,children:[C.hasAccountText,` `,(0,X.jsx)(l,{href:i,className:`font-medium text-primary underline-offset-4 hover:underline focus-visible:outline-none focus-visible:underline`,children:C.signInText})]})]})}var Dn=({href:e,className:t,children:n})=>(0,X.jsx)(`a`,{href:e,className:t,children:n}),On=()=>(0,X.jsx)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.75`,strokeLinecap:`round`,strokeLinejoin:`round`,className:`h-6 w-6`,"aria-hidden":`true`,children:(0,X.jsx)(`path`,{d:`M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4`})});function kn({onSuccess:e,onError:t,loginUrl:n=`/login`,title:i=`Reset your password`,description:a=`Enter your email address and we'll send you a link to reset your password`,icon:o,hideIcon:s=!1,linkComponent:c=Dn,labels:l={}}){let{forgotPassword:u,isLoading:d,getAuthConfig:f,requestPhonePasswordReset:p,resetPasswordWithPhoneOtp:m}=an(),[h,g]=(0,r.useState)(``),[_,v]=(0,r.useState)(null),[y,b]=(0,r.useState)(!1),[ee,x]=(0,r.useState)(!1),[S,C]=(0,r.useState)(`email`),[w,T]=(0,r.useState)(``),[te,E]=(0,r.useState)(``),[D,O]=(0,r.useState)(``),[k,A]=(0,r.useState)(!1),[ne,j]=(0,r.useState)(!1),[M,N]=(0,r.useState)(0),[re,P]=(0,r.useState)(!1),[F,ie]=(0,r.useState)(!1);(0,r.useEffect)(()=>{let e=!1;return Promise.resolve().then(()=>f()).then(t=>{e||x(t?.features?.phoneNumberOtp===!0)}).catch(()=>{}),()=>{e=!0}},[f]),(0,r.useEffect)(()=>{if(M<=0)return;let e=setTimeout(()=>N(e=>e>1?e-1:0),1e3);return()=>clearTimeout(e)},[M]);let I={emailLabel:l.emailLabel??`Email`,emailPlaceholder:l.emailPlaceholder??`name@example.com`,submitButton:l.submitButton??`Send Reset Link`,submittingButton:l.submittingButton??`Sending…`,successTitle:l.successTitle??`Check your email`,successDescription:l.successDescription??`We've sent a password reset link to {{email}}. Please check your inbox.`,backToSignInText:l.backToSignInText??`Back to sign in`,rememberPasswordText:l.rememberPasswordText??`Remember your password?`,signInText:l.signInText??`Sign in`,phoneLabel:l.phoneLabel??`Phone number`,phonePlaceholder:l.phonePlaceholder??`+1 555 000 0000`,otpCodeLabel:l.otpCodeLabel??`Verification code`,otpCodePlaceholder:l.otpCodePlaceholder??`6-digit code`,sendOtpButton:l.sendOtpButton??`Get code`,resendOtpCountdownText:l.resendOtpCountdownText??`Resend in {seconds}s`,newPasswordLabel:l.newPasswordLabel??`New password`,newPasswordPlaceholder:l.newPasswordPlaceholder??`Enter a new password`,resetButton:l.resetButton??`Reset Password`,usePhoneResetText:l.usePhoneResetText??`Reset via SMS code`,useEmailResetText:l.useEmailResetText??`Reset via email instead`,phoneSuccessTitle:l.phoneSuccessTitle??`Password reset`,phoneSuccessDescription:l.phoneSuccessDescription??`Your password has been reset. You can now sign in with your new password.`},ae=async n=>{n.preventDefault(),v(null);try{await u(h),b(!0),e?.()}catch(e){let n=e instanceof Error?e:Error(String(e));v(n.message),t?.(n)}},oe=async()=>{if(!(!w.trim()||k||M>0)){v(null),A(!0);try{await p(w.trim()),j(!0),N(60)}catch(e){let n=e instanceof Error?e:Error(String(e));v(n.message),t?.(n)}finally{A(!1)}}},L=async n=>{n.preventDefault(),v(null),ie(!0);try{await m(w.trim(),te.trim(),D),P(!0),e?.()}catch(e){let n=e instanceof Error?e:Error(String(e));v(n.message),t?.(n)}finally{ie(!1)}},se=e=>{C(e),v(null)};if(re)return(0,X.jsxs)(`div`,{className:`mx-auto flex w-full flex-col justify-center space-y-7 sm:w-[400px]`,children:[(0,X.jsx)(pn,{icon:(0,X.jsx)(`span`,{className:`flex h-12 w-12 items-center justify-center rounded-2xl bg-emerald-500/10 text-emerald-600 ring-1 ring-emerald-500/15 dark:text-emerald-400`,children:(0,X.jsx)(fn,{})}),title:I.phoneSuccessTitle,description:I.phoneSuccessDescription}),n&&(0,X.jsx)(`p`,{className:`text-center text-sm text-muted-foreground`,children:(0,X.jsxs)(c,{href:n,className:`font-medium text-primary underline-offset-4 hover:underline focus-visible:outline-none focus-visible:underline`,children:[`← `,I.backToSignInText]})})]});if(y){let e=I.successDescription.includes(`{{email}}`)?I.successDescription.replace(`{{email}}`,h):`${I.successDescription} ${h}`;return(0,X.jsxs)(`div`,{className:`mx-auto flex w-full flex-col justify-center space-y-7 sm:w-[400px]`,children:[(0,X.jsx)(pn,{icon:(0,X.jsx)(`span`,{className:`flex h-12 w-12 items-center justify-center rounded-2xl bg-emerald-500/10 text-emerald-600 ring-1 ring-emerald-500/15 dark:text-emerald-400`,children:(0,X.jsx)(fn,{})}),title:I.successTitle,description:e}),n&&(0,X.jsx)(`p`,{className:`text-center text-sm text-muted-foreground`,children:(0,X.jsxs)(c,{href:n,className:`font-medium text-primary underline-offset-4 hover:underline focus-visible:outline-none focus-visible:underline`,children:[`← `,I.backToSignInText]})})]})}return(0,X.jsxs)(`div`,{className:`mx-auto flex w-full flex-col justify-center space-y-7 sm:w-[400px]`,children:[(0,X.jsx)(pn,{icon:s?void 0:o??(0,X.jsx)(On,{}),title:i,description:a}),S===`phone`?(0,X.jsxs)(`form`,{onSubmit:L,className:`space-y-4`,children:[_&&(0,X.jsx)(mn,{message:_}),(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsx)(`label`,{htmlFor:`forgot-phone`,className:Q,children:I.phoneLabel}),(0,X.jsx)(`input`,{id:`forgot-phone`,type:`tel`,placeholder:I.phonePlaceholder,value:w,onChange:e=>T(e.target.value),required:!0,autoComplete:`tel`,disabled:F,className:Z})]}),(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsx)(`label`,{htmlFor:`forgot-otp`,className:Q,children:I.otpCodeLabel}),(0,X.jsxs)(`div`,{className:`flex gap-2`,children:[(0,X.jsx)(`input`,{id:`forgot-otp`,type:`text`,inputMode:`numeric`,placeholder:I.otpCodePlaceholder,value:te,onChange:e=>E(e.target.value),required:!0,autoComplete:`one-time-code`,disabled:F,className:Z}),(0,X.jsxs)(`button`,{type:`button`,onClick:oe,disabled:k||M>0||!w.trim()||F,className:`shrink-0 rounded-md border border-input bg-background px-3 py-2 text-sm font-medium transition-colors hover:bg-accent disabled:opacity-50`,children:[k&&(0,X.jsx)($,{}),M>0?I.resendOtpCountdownText.replace(`{seconds}`,String(M)):I.sendOtpButton]})]})]}),(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsx)(`label`,{htmlFor:`forgot-new-password`,className:Q,children:I.newPasswordLabel}),(0,X.jsx)(`input`,{id:`forgot-new-password`,type:`password`,placeholder:I.newPasswordPlaceholder,value:D,onChange:e=>O(e.target.value),required:!0,autoComplete:`new-password`,disabled:F,className:Z})]}),(0,X.jsxs)(`button`,{type:`submit`,disabled:F||!ne,className:un,children:[F&&(0,X.jsx)($,{}),F?I.submittingButton:I.resetButton]}),(0,X.jsx)(`button`,{type:`button`,onClick:()=>se(`email`),className:`w-full text-center text-xs text-muted-foreground underline-offset-4 transition-colors hover:text-primary hover:underline`,children:I.useEmailResetText})]}):(0,X.jsxs)(`form`,{onSubmit:ae,className:`space-y-4`,children:[_&&(0,X.jsx)(mn,{message:_}),(0,X.jsxs)(`div`,{className:`space-y-2`,children:[(0,X.jsx)(`label`,{htmlFor:`forgot-email`,className:Q,children:I.emailLabel}),(0,X.jsx)(`input`,{id:`forgot-email`,type:`email`,placeholder:I.emailPlaceholder,value:h,onChange:e=>g(e.target.value),required:!0,autoComplete:`email`,disabled:d,className:Z})]}),(0,X.jsxs)(`button`,{type:`submit`,disabled:d,className:un,children:[d&&(0,X.jsx)($,{}),d?I.submittingButton:I.submitButton]}),ee&&(0,X.jsx)(`button`,{type:`button`,onClick:()=>se(`phone`),className:`w-full text-center text-xs text-muted-foreground underline-offset-4 transition-colors hover:text-primary hover:underline`,children:I.usePhoneResetText})]}),n&&(0,X.jsxs)(`p`,{className:`px-8 text-center text-sm text-muted-foreground`,children:[I.rememberPasswordText,` `,(0,X.jsx)(c,{href:n,className:`font-medium text-primary underline-offset-4 hover:underline focus-visible:outline-none focus-visible:underline`,children:I.signInText})]})]})}function An(e){return e?e.name?e.name.split(` `).map(e=>e[0]).join(``).toUpperCase().slice(0,2):e.email?.[0]?.toUpperCase()??`?`:`?`}function jn(e){if(!e)return!1;let t=e.objects;if(!t||typeof t!=`object`||Array.isArray(t))return!1;for(let e of Object.values(t))if(e&&typeof e==`object`&&!Array.isArray(e)&&`fields`in e)return!0;return!1}var Mn=[`apps`,`messages`,`validationMessages`,`dashboards`,`globalActions`];function Nn(e){let t={},n={},r={},i=e.objects;if(i)for(let[e,a]of Object.entries(i)){if(!a||typeof a!=`object`)continue;let i={};a.label&&(i.label=a.label),a.pluralLabel&&(i.pluralLabel=a.pluralLabel),a.description&&(i.description=a.description);for(let[e,t]of Object.entries(a))e.startsWith(`_`)&&(i[e]=t);if(t[e]=i,a.fields&&typeof a.fields==`object`){let t=Object.entries(a.fields);for(let[i,a]of t)a?.label&&(n[e]||(n[e]={}),n[e][i]=a.label),a?.options&&typeof a.options==`object`&&Object.keys(a.options).length>0&&(r[e]||(r[e]={}),r[e][i]=a.options)}}let a={};Object.keys(t).length>0&&(a.objects=t),Object.keys(n).length>0&&(a.fields=n),Object.keys(r).length>0&&(a.fieldOptions=r);for(let t of Mn)e[t]!==void 0&&(a[t]=e[t]);let o=new Set([`objects`,...Mn]);for(let[t,n]of Object.entries(e))o.has(t)||(a[t]=n);return{app:a}}var Pn=(0,r.createContext)(null);Pn.displayName=`PermissionContext`;var Fn=`/api/v1/auth/me/permissions`;function In({endpoint:e=Fn,fetcher:t,initialPermissions:n,loadingFallback:i=null,errorFallback:a,children:o}){let[s,c]=(0,r.useState)(n??null),[l,u]=(0,r.useState)(null),[d,f]=(0,r.useState)(!n),p=(0,r.useCallback)(async()=>{f(!0),u(null);try{let n=await(t??fetch)(e,{credentials:`include`,headers:{Accept:`application/json`}});if(!n.ok)throw Error(`Permissions endpoint returned ${n.status}`);let r=await n.json();c(r)}catch(e){u(e instanceof Error?e:Error(String(e)))}finally{f(!1)}},[e,t]);(0,r.useEffect)(()=>{n||p()},[p,n]);let m=(0,r.useCallback)((e,t,n)=>{if(!s)return!1;let r=(e??``).toLowerCase(),i=`${r}.${t}`,a=s.fields?.[i]??s.fields?.[`${e}.${t}`];if(a)return n===`read`?a.readable!==!1:a.editable!==!1;let o=s.objects?.[r]??s.objects?.[e]??s.objects?.[`*`];return o?n===`read`?o.allowRead!==!1:o.allowEdit!==!1:s.authenticated!==!0},[s]),h=(0,r.useCallback)((e,t)=>{if(!s)return{allowed:!1,reason:`permissions-loading`};let n=s.objects?.[e]??s.objects?.[`*`],r={read:`allowRead`,view:`allowRead`,create:`allowCreate`,update:`allowEdit`,edit:`allowEdit`,delete:`allowDelete`}[t]??`allowRead`,i=n?n[r]!==!1:s.authenticated!==!0;return{allowed:i,reason:i?void 0:`denied-by-permission-set`}},[s]),g=(0,r.useCallback)(e=>{if(!s)return[];let t=`${e}.`,n=[];for(let[e,r]of Object.entries(s.fields??{})){if(!e.startsWith(t))continue;let i=e.slice(t.length);n.push({field:i,read:r.readable!==!1,write:r.editable!==!1})}return n},[s]),_=(0,r.useCallback)(()=>void 0,[]),v=(0,r.useMemo)(()=>({check:h,checkField:m,getFieldPermissions:g,getRowFilter:_,roles:s?.roles??[],systemPermissions:s?.systemPermissions??[],hasCapabilities:e=>{let t=new Set(s?.systemPermissions??[]);return e.every(e=>t.has(e))},isLoaded:!d&&!l&&s!==null}),[h,m,g,_,s,d,l]);return d&&!s?(0,X.jsx)(X.Fragment,{children:i}):l&&!s?a?(0,X.jsx)(X.Fragment,{children:a(l,p)}):(0,X.jsx)(X.Fragment,{children:i}):(0,X.jsx)(Pn.Provider,{value:v,children:o})}function Ln(){let e=(0,r.useContext)(Pn);return(0,r.useMemo)(()=>e?{...e,can:(t,n)=>e.check(t,n).allowed,cannot:(t,n)=>!e.check(t,n).allowed}:{check:()=>({allowed:!0}),checkField:()=>!0,getFieldPermissions:()=>[],getRowFilter:()=>void 0,roles:[],systemPermissions:[],hasCapabilities:()=>!0,isLoaded:!1,can:()=>!0,cannot:()=>!1},[e])}function Rn(e){let{checkField:t,getFieldPermissions:n}=Ln(),i=(0,r.useMemo)(()=>n(e),[n,e]);return(0,r.useMemo)(()=>({permissions:i,canRead:n=>t(e,n,`read`),canWrite:n=>t(e,n,`write`),readableFields:n=>n.filter(n=>t(e,n,`read`)),writableFields:n=>n.filter(n=>t(e,n,`write`))}),[i,t,e])}export{Nn as a,En as c,ln as d,cn as f,Y as g,nn as h,jn as i,Cn as l,rn as m,Ln as n,An as o,an as p,In as r,kn as s,Rn as t,mn as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as e}from"./plugin-chatbot-BRbgUPLw.js";export{e as Mermaid};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e,r as t}from"./rolldown-runtime-DAXXjFlN.js";import{r as n,y as r}from"./vendor-react-BKSb6vFP.js";import{B as i,Qt as a,Zt as o,en as s,ot as c,tt as l}from"./framework-Oi7uo_kE.js";import{$n as u,$t as d,Ks as f,Kt as p,Mc as m,Or as h,Qn as g,Uc as _,Ws as v,Xn as y,Zn as b,dn as x,dr as S,en as C,er as w,fn as T,mn as E,nn as D,pn as O,ra as k,rc as A,rn as j,tn as M,tr as ee,vn as N}from"./ui-components-BluZyuZX.js";import{s as te}from"./plugin-grid-CnxMz-9O.js";import{o as ne,s as re}from"./plugins-views-DCG6qMPm.js";var P=e(r(),1),F=n(),ie=`bg-blue-100 text-blue-900 border border-blue-200`,ae=new Date,I=[`bg-blue-100 text-blue-900 border border-blue-200`,`bg-emerald-100 text-emerald-900 border border-emerald-200`,`bg-amber-100 text-amber-900 border border-amber-200`,`bg-rose-100 text-rose-900 border border-rose-200`,`bg-violet-100 text-violet-900 border border-violet-200`,`bg-cyan-100 text-cyan-900 border border-cyan-200`,`bg-orange-100 text-orange-900 border border-orange-200`,`bg-fuchsia-100 text-fuchsia-900 border border-fuchsia-200`],L=/^#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i,R=/(^|\s)(bg|text|from|to|via)-/;function z(e){if(!e)return{className:ie};if(L.test(e))return{className:`text-white`,inlineColor:e};if(R.test(e))return{className:e};let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n)|0;return{className:I[Math.abs(t)%I.length]}}var B={"calendar.today":`Today`,"calendar.month":`Month`,"calendar.week":`Week`,"calendar.day":`Day`,"calendar.newEvent":`New event`,"calendar.moreEvents":`+{{count}} more`,"calendar.allDay":`all-day`};function V(){try{let e=_();return e.t(`calendar.today`)===`calendar.today`?{t:(e,t)=>{let n=B[e]||e;if(t)for(let[e,r]of Object.entries(t))n=n.replace(`{{${e}}}`,String(r));return n},language:`en`}:{t:e.t,language:e.language}}catch{return{t:(e,t)=>{let n=B[e]||e;if(t)for(let[e,r]of Object.entries(t))n=n.replace(`{{${e}}}`,String(r));return n},language:`en`}}}function H({events:e=[],view:t=`month`,currentDate:n=ae,locale:r=`default`,onEventClick:i,onDateClick:a,onViewChange:o,onNavigate:s,onAddClick:c,onEventDrop:l,onTimeRangeSelect:u,slotMinutes:p=30,className:g}){let[_,y]=P.useState(t),[b,w]=P.useState(n),{t:E,language:ee}=V(),N=r==="default"?ee:r;P.useEffect(()=>{w(n)},[n]),P.useEffect(()=>{y(t)},[t]);let te=P.useRef(o);te.current=o,P.useEffect(()=>{let e=window.matchMedia(`(max-width: 639px)`),t=e=>{e.matches&&(y(`day`),te.current?.(`day`))};return t(e),e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]);let ne=()=>{let e=new Date(b);_===`month`?e.setMonth(e.getMonth()-1):_===`week`?e.setDate(e.getDate()-7):e.setDate(e.getDate()-1),w(e),s?.(e)},re=()=>{let e=new Date(b);_===`month`?e.setMonth(e.getMonth()+1):_===`week`?e.setDate(e.getDate()+7):e.setDate(e.getDate()+1),w(e),s?.(e)},ie=()=>{let e=new Date;w(e),s?.(e)},I=e=>{y(e),o?.(e)},L=()=>{if(_===`month`)return b.toLocaleDateString(N,{month:`long`,year:`numeric`});if(_===`week`){let e=oe(b),t=new Date(e);return t.setDate(t.getDate()+6),`${e.toLocaleDateString(N,{month:`short`,day:`numeric`})} - ${t.toLocaleDateString(N,{month:`short`,day:`numeric`,year:`numeric`})}`}else return b.toLocaleDateString(N,{weekday:`long`,month:`long`,day:`numeric`,year:`numeric`})},R=P.useRef(0);return(0,F.jsxs)(`div`,{role:`region`,"aria-label":`Calendar`,className:m(`flex flex-col h-full bg-background min-w-0 overflow-hidden`,g),children:[(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2 p-2 sm:p-4 border-b min-w-0`,children:[(0,F.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,F.jsxs)(`div`,{className:`flex items-center bg-muted/50 rounded-lg p-1 gap-1`,children:[(0,F.jsx)(h,{variant:`ghost`,size:`sm`,onClick:ie,className:`h-8`,"aria-label":`Go to today`,children:E(`calendar.today`)}),(0,F.jsx)(`div`,{className:`h-4 w-px bg-border mx-1`}),(0,F.jsx)(h,{variant:`ghost`,size:`icon`,"aria-label":`Previous period`,onClick:ne,className:`h-8 w-8`,children:(0,F.jsx)(f,{className:`h-4 w-4`})}),(0,F.jsx)(h,{variant:`ghost`,size:`icon`,"aria-label":`Next period`,onClick:re,className:`h-8 w-8`,children:(0,F.jsx)(v,{className:`h-4 w-4`})})]}),(0,F.jsxs)(x,{children:[(0,F.jsx)(O,{asChild:!0,children:(0,F.jsxs)(h,{variant:`ghost`,"aria-label":`Current date: ${L()}`,className:m(`text-base sm:text-xl font-semibold h-auto px-2 sm:px-3 py-1 hover:bg-muted/50 transition-colors`,`flex items-center gap-2`),children:[(0,F.jsx)(A,{className:`h-5 w-5 text-muted-foreground`}),(0,F.jsx)(`span`,{children:L()})]})}),(0,F.jsx)(T,{className:`w-auto p-0`,align:`start`,children:(0,F.jsx)(S,{mode:`single`,selected:b,onSelect:e=>{e&&(w(e),s?.(e))},autoFocus:!0,startMonth:new Date(2e3,0),endMonth:new Date(2050,11)})})]})]}),(0,F.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,F.jsxs)(d,{value:_,onValueChange:I,children:[(0,F.jsx)(D,{className:`w-32 bg-background`,children:(0,F.jsx)(j,{})}),(0,F.jsxs)(C,{children:[(0,F.jsx)(M,{value:`day`,children:E(`calendar.day`)}),(0,F.jsx)(M,{value:`week`,children:E(`calendar.week`)}),(0,F.jsx)(M,{value:`month`,children:E(`calendar.month`)})]})]}),c&&(0,F.jsxs)(h,{onClick:c,size:`sm`,className:`gap-1`,children:[(0,F.jsx)(k,{className:`h-4 w-4`}),E(`calendar.newEvent`)]})]})]}),(0,F.jsxs)(`div`,{className:`flex-1 overflow-auto`,onTouchStart:e=>{R.current=e.touches[0].clientX},onTouchEnd:e=>{let t=R.current-e.changedTouches[0].clientX;if(Math.abs(t)>50){let e=new Date(b);_===`day`?e.setDate(e.getDate()+(t>0?1:-1)):_===`week`?e.setDate(e.getDate()+(t>0?7:-7)):e.setMonth(e.getMonth()+(t>0?1:-1)),w(e),s?.(e)}},children:[_===`month`&&(0,F.jsx)(W,{date:b,events:e,locale:N,onEventClick:i,onDateClick:a,onEventDrop:l}),_===`week`&&(0,F.jsx)(Y,{mode:`week`,date:b,events:e,locale:N,slotMinutes:p,onEventClick:i,onEventDrop:l,onTimeRangeSelect:u}),_===`day`&&(0,F.jsx)(Y,{mode:`day`,date:b,events:e,locale:N,slotMinutes:p,onEventClick:i,onEventDrop:l,onTimeRangeSelect:u})]})]})}function oe(e){let t=new Date(e),n=t.getDay(),r=t.getDate()-n;return t.setDate(r),t}function se(e){let t=e.getFullYear(),n=e.getMonth(),r=new Date(t,n,1),i=new Date(t,n+1,0),a=r.getDay(),o=[];for(let e=a-1;e>=0;e--){let t=new Date(r.getTime());t.setDate(t.getDate()-(e+1)),o.push(t)}for(let e=1;e<=i.getDate();e++)o.push(new Date(t,n,e));let s=42-o.length;for(let e=1;e<=s;e++){let t=new Date(i.getTime());t.setDate(t.getDate()+e),o.push(t)}return o}function U(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function W({date:e,events:t,locale:n=`default`,onEventClick:r,onDateClick:i,onEventDrop:a}){let o=P.useMemo(()=>se(e),[e.getFullYear(),e.getMonth()]),s=P.useMemo(()=>new Date,[]),{t:c}=V(),l=P.useMemo(()=>{let e=new Date(2024,0,7);return Array.from({length:7},(t,r)=>{let i=new Date(e);return i.setDate(i.getDate()+r),i.toLocaleDateString(n,{weekday:`short`})})},[n]),[u,d]=P.useState(null),[f,p]=P.useState(null),h=P.useMemo(()=>{let e=new Map;for(let n of t){let t=new Date(n.start),r=n.end?new Date(n.end):new Date(t);t.setHours(0,0,0,0),r.setHours(0,0,0,0);let i=new Date(t);for(;i<=r;){let a=`${i.getFullYear()}-${i.getMonth()}-${i.getDate()}`,o=i.getTime()===t.getTime(),s=i.getTime()===r.getTime(),c=o||s||i.getDay()===0,l=e.get(a),u={event:n,isTitleDay:c,isSpanStart:o,isSpanEnd:s};l?l.push(u):e.set(a,[u]),i.setDate(i.getDate()+1)}}return e},[t]),g=(e,t,n=`move`,r)=>{d(t.id),e.dataTransfer.effectAllowed=`move`;let i={id:t.id,mode:n,...r?{sourceDay:`${r.getFullYear()}-${r.getMonth()}-${r.getDate()}`}:{}};e.dataTransfer.setData(`text/plain`,JSON.stringify(i)),n===`resize-end`&&e.stopPropagation()},_=()=>{d(null),p(null)},v=(e,t)=>{e.preventDefault(),e.dataTransfer.dropEffect=`move`,p(t)},y=e=>{e.currentTarget.contains(e.relatedTarget)||p(null)},b=(e,n)=>{if(e.preventDefault(),p(null),d(null),!a)return;let r=e.dataTransfer.getData(`text/plain`),i;try{i=JSON.parse(r)}catch{i={id:r,mode:`move`}}let o=t.find(e=>String(e.id)===String(i.id));if(!o)return;let s=new Date(n);if(s.setHours(0,0,0,0),i.mode===`resize-end`){let e=o.end?new Date(o.end):new Date(o.start),t=new Date(e);if(t.setHours(0,0,0,0),s.getTime()===t.getTime())return;let n=new Date(o.start);if(n.setHours(0,0,0,0),s.getTime()<n.getTime())return;let r=new Date(s);r.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),0),a(o,new Date(o.start),r);return}let c=new Date(o.start),l;if(i.sourceDay){let[e,t,n]=i.sourceDay.split(`-`).map(e=>parseInt(e,10));l=new Date(e,t,n)}else l=new Date(c);l.setHours(0,0,0,0);let u=s.getTime()-l.getTime();if(u===0)return;let f=new Date(c.getTime()+u),m;o.end&&(m=new Date(new Date(o.end).getTime()+u)),a(o,f,m)};return(0,F.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,F.jsx)(`div`,{role:`row`,className:`grid grid-cols-7 border-b`,children:l.map(e=>(0,F.jsx)(`div`,{role:`columnheader`,className:`p-2 text-center text-sm font-medium text-muted-foreground border-r last:border-r-0`,children:e},e))}),(0,F.jsx)(`div`,{role:`grid`,"aria-label":`Calendar grid`,className:`grid grid-cols-7 flex-1 auto-rows-fr`,children:o.map((t,n)=>{let o=`${t.getFullYear()}-${t.getMonth()}-${t.getDate()}`,l=h.get(o)||[],d=t.getMonth()===e.getMonth(),p=U(t,s);return(0,F.jsxs)(`div`,{role:`gridcell`,"aria-label":`${t.toLocaleDateString(`default`,{weekday:`long`,month:`long`,day:`numeric`,year:`numeric`})}${l.length>0?`, ${l.length} event${l.length>1?`s`:``}`:``}`,className:m(`border-b border-r last:border-r-0 p-2 min-h-[100px] cursor-pointer hover:bg-accent/50`,!d&&`bg-muted/50 text-muted-foreground opacity-50`,f===n&&`ring-2 ring-primary`),onClick:()=>i?.(t),onDragOver:e=>v(e,n),onDragLeave:y,onDrop:e=>b(e,t),children:[(0,F.jsx)(`div`,{className:m(`text-sm font-medium mb-2`,p&&`inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground h-6 w-6`),...p?{"aria-current":`date`}:{},children:t.getDate()}),(0,F.jsxs)(`div`,{className:`space-y-0.5`,children:[l.slice(0,4).map(({event:e,isTitleDay:n,isSpanStart:i,isSpanEnd:o},s)=>{let c=!n,{className:l,inlineColor:d}=z(e.color),f=!!a&&o;return(0,F.jsxs)(`div`,{role:`button`,title:e.title,"aria-label":e.title,draggable:!!a,onDragStart:n=>g(n,e,`move`,t),onDragEnd:_,className:m(`relative text-xs hover:opacity-80 truncate`,a?`cursor-move`:`cursor-pointer`,c?`h-1.5`:`px-2 py-0.5`,i?`rounded-l`:`rounded-l-none`,o?`rounded-r`:`rounded-r-none`,!o&&`-mr-2`,l,u===e.id&&`opacity-50`),style:d?{backgroundColor:d}:void 0,onClick:t=>{t.stopPropagation(),r?.(e)},children:[c?``:e.title,f&&(0,F.jsx)(`span`,{role:`separator`,"aria-label":`Resize event end`,title:`Drag to change end date`,draggable:!0,onDragStart:n=>g(n,e,`resize-end`,t),onDragEnd:_,onClick:e=>e.stopPropagation(),className:`absolute inset-y-0 right-0 w-2 cursor-ew-resize bg-black/25 hover:bg-black/50 rounded-r`})]},`${e.id}-${s}`)}),l.length>4&&(0,F.jsx)(`div`,{className:`text-xs text-muted-foreground px-2`,children:c(`calendar.moreEvents`,{count:l.length-4})})]})]},n)})})]})}var G=48;function K(e){let t=new Date(e);return t.setHours(0,0,0,0),t}function q(e){return e.getHours()*60+e.getMinutes()}function J(e){return`${e.getFullYear()}-${e.getMonth()}-${e.getDate()}`}function Y({mode:e,date:t,events:n,locale:r=`default`,slotMinutes:i=30,onEventClick:a,onEventDrop:o,onTimeRangeSelect:s}){let{t:c}=V(),l=G*i/60,u=G*24,d=P.useMemo(()=>{if(e===`day`)return[K(t)];let n=oe(t);return Array.from({length:7},(e,t)=>{let r=new Date(n);return r.setDate(n.getDate()+t),K(r)})},[e,t.getFullYear(),t.getMonth(),t.getDate()]),f=P.useMemo(()=>new Date,[]),p=P.useCallback(e=>{if(e.allDay)return!0;let t=new Date(e.start),n=e.end?new Date(e.end):new Date(t),r=t.getHours()===0&&t.getMinutes()===0&&t.getSeconds()===0,i=n.getHours()===0&&n.getMinutes()===0&&n.getSeconds()===0,a=n.getTime()-t.getTime();return!!(r&&i||a>=1440*60*1e3)},[]),{allDayEvents:h,timedEvents:g}=P.useMemo(()=>{let e=[],t=[];for(let r of n)p(r)?e.push(r):t.push(r);return{allDayEvents:e,timedEvents:t}},[n,p]),_=P.useMemo(()=>{let e=new Map;for(let t of d)e.set(J(t),[]);for(let t of h){let n=K(new Date(t.start)),r=t.end?new Date(t.end):new Date(t.start),i=K(r);r.getHours()===0&&r.getMinutes()===0&&r.getSeconds()===0&&r.getTime()>n.getTime()&&(i=new Date(i),i.setDate(i.getDate()-1));for(let r of d){let a=K(r);a<n||a>i||e.get(J(r)).push({event:t,isStart:a.getTime()===n.getTime(),isEnd:a.getTime()===i.getTime()})}}return e},[d,h]),v=P.useMemo(()=>{let e=new Map;for(let t of d)e.set(J(t),[]);for(let t of g){let n=new Date(t.start),r=t.end?new Date(t.end):new Date(n.getTime()+3600*1e3);for(let i of d){let a=K(i),o=new Date(a);if(o.setDate(o.getDate()+1),r<=a||n>=o)continue;let s=n<a?a:n,c=r>o?o:r,l=q(s),u=c.getTime()===o.getTime()?1440:q(c);e.get(J(i)).push({event:t,startMin:l,endMin:Math.max(u,l+15),isStart:s.getTime()===n.getTime(),isEnd:c.getTime()===r.getTime()})}}return e},[d,g]),y=P.useMemo(()=>{let e=new Map;for(let[t,n]of v){let r=[...n].sort((e,t)=>e.startMin-t.startMin||e.endMin-t.endMin),i=[],a=[],o=[];for(let e of r){let t=0;for(;i[t]&&i[t].endMin>e.startMin;)t++;i[t]={endMin:e.endMin},a.push({entry:e,col:t})}for(let e=0;e<a.length;e++){let t=a[e],n=t.col;for(let r=0;r<a.length;r++){if(r===e)continue;let i=a[r];i.entry.startMin<t.entry.endMin&&i.entry.endMin>t.entry.startMin&&i.col>n&&(n=i.col)}o.push({...t.entry,col:t.col,cols:n+1})}e.set(t,o)}return e},[v]),b=P.useRef(null),x=P.useRef([]),[S,C]=P.useState(null),w=P.useRef(null);w.current=S;let T=P.useRef(!1),E=P.useCallback((e,t)=>{let n=x.current[t];if(!n)return 0;let r=(e-n.getBoundingClientRect().top+n.scrollTop)/G*60,a=Math.round(r/i)*i;return Math.max(0,Math.min(1440,a))},[i]),D=P.useCallback(e=>{for(let t=0;t<x.current.length;t++){let n=x.current[t];if(!n)continue;let r=n.getBoundingClientRect();if(e>=r.left&&e<=r.right)return t}return-1},[]);P.useEffect(()=>{if(!S)return;let e=e=>{let t=S.kind===`select`||S.kind===`move`?D(e.clientX):S.dayIndex,n=t<0?S.dayIndex??0:t,r=E(e.clientY,n);C(e=>e&&(e.kind===`select`?{...e,dayIndex:n>=0?n:e.dayIndex,headMinutes:r}:e.kind===`move`?{...e,dayIndex:n,minutes:r}:{...e,minutes:r}))},t=e=>{let t=w.current;if(!t){C(null);return}try{if(t.kind===`select`&&s){let e=Math.min(t.anchorMinutes,t.headMinutes),n=Math.max(t.anchorMinutes,t.headMinutes),r=e,a=n===e?Math.min(1440,e+i):n,o=d[t.dayIndex]??d[0],c=new Date(o);c.setHours(0,Math.round(r),0,0);let l=new Date(o);l.setHours(0,Math.round(a),0,0),T.current=!0,s(c,l)}else if(t.kind===`move`&&o){let e=n.find(e=>String(e.id)===String(t.eventId));if(e){let n=t.dayIndex<0?0:t.dayIndex,r=t.minutes-t.grabMinuteOffset,a=Math.max(0,Math.min(1440-t.durationMin,Math.round(r/i)*i)),s=d[n]??d[0],c=new Date(s);c.setHours(0,a,0,0);let l=new Date(c.getTime()+t.durationMin*60*1e3);T.current=!0,o(e,c,l)}}else if(t.kind===`resize-top`&&o){let e=n.find(e=>String(e.id)===String(t.eventId));if(e){let n=d[t.dayIndex]??d[0],r=Math.min(t.anchorEndMin-i,Math.max(0,t.minutes)),a=new Date(n);a.setHours(0,r,0,0);let s=new Date(n);s.setHours(0,t.anchorEndMin,0,0),T.current=!0,o(e,a,s)}}else if(t.kind===`resize-bottom`&&o){let e=n.find(e=>String(e.id)===String(t.eventId));if(e){let n=d[t.dayIndex]??d[0],r=Math.max(t.anchorStartMin+i,Math.min(1440,t.minutes)),a=new Date(n);a.setHours(0,t.anchorStartMin,0,0);let s=new Date(n);s.setHours(0,r,0,0),T.current=!0,o(e,a,s)}}}finally{C(null),setTimeout(()=>{T.current=!1},50)}};return window.addEventListener(`pointermove`,e),window.addEventListener(`pointerup`,t),()=>{window.removeEventListener(`pointermove`,e),window.removeEventListener(`pointerup`,t)}},[S,d,n,i,o,s,D,E]);let O=P.useMemo(()=>d.map(e=>({weekday:e.toLocaleDateString(r,{weekday:`short`}),day:e.getDate(),month:e.toLocaleDateString(r,{month:`short`}),isToday:U(e,f)})),[d,r,f]),k=P.useMemo(()=>Array.from({length:24},(e,t)=>new Date(2024,0,1,t,0).toLocaleTimeString(r,{hour:`numeric`})),[r]),A=(e,t,n,r)=>{if(!o||e.button!==0)return;e.stopPropagation(),e.preventDefault();let i=E(e.clientY,n);C(r===`body`?{kind:`move`,eventId:t.event.id,grabMinuteOffset:Math.max(0,i-t.startMin),durationMin:t.endMin-t.startMin,dayIndex:n,minutes:i}:r===`top`?{kind:`resize-top`,eventId:t.event.id,anchorEndMin:t.endMin,dayIndex:n,minutes:i}:{kind:`resize-bottom`,eventId:t.event.id,anchorStartMin:t.startMin,dayIndex:n,minutes:i})},j=(e,t)=>{if(!s||e.button!==0)return;e.preventDefault();let n=E(e.clientY,t);C({kind:`select`,dayIndex:t,anchorMinutes:n,headMinutes:n})},M=e=>{if(!S)return null;if(S.kind===`select`&&S.dayIndex===e){let t=Math.min(S.anchorMinutes,S.headMinutes),n=Math.max(S.anchorMinutes,S.headMinutes);return(0,F.jsx)(`div`,{className:`absolute left-1 right-1 rounded bg-primary/30 border border-primary pointer-events-none z-10`,style:{top:t/60*G,height:Math.max(l,(n-t)/60*G)},"aria-hidden":!0,children:(0,F.jsx)(`div`,{className:`px-2 py-0.5 text-xs font-medium text-primary`,children:X(d[e],t,n,r)})})}if(S.kind===`move`&&S.dayIndex===e){let t=S.minutes-S.grabMinuteOffset,n=Math.max(0,Math.min(1440-S.durationMin,Math.round(t/i)*i));return(0,F.jsx)(`div`,{className:`absolute left-1 right-1 rounded border-2 border-dashed border-primary bg-primary/10 pointer-events-none z-10`,style:{top:n/60*G,height:S.durationMin/60*G},"aria-hidden":!0,children:(0,F.jsx)(`div`,{className:`px-2 py-0.5 text-xs font-medium text-primary`,children:X(d[e],n,n+S.durationMin,r)})})}if((S.kind===`resize-top`||S.kind===`resize-bottom`)&&S.dayIndex===e){let t,n;return S.kind===`resize-top`?(t=Math.min(S.anchorEndMin-i,Math.max(0,S.minutes)),n=S.anchorEndMin):(t=S.anchorStartMin,n=Math.max(S.anchorStartMin+i,Math.min(1440,S.minutes))),(0,F.jsx)(`div`,{className:`absolute left-1 right-1 rounded border-2 border-dashed border-primary bg-primary/10 pointer-events-none z-10`,style:{top:t/60*G,height:(n-t)/60*G},"aria-hidden":!0,children:(0,F.jsx)(`div`,{className:`px-2 py-0.5 text-xs font-medium text-primary`,children:X(d[e],t,n,r)})})}return null};return(0,F.jsxs)(`div`,{className:`flex flex-col h-full`,ref:b,children:[(0,F.jsxs)(`div`,{className:`flex border-b sticky top-0 bg-background z-20`,children:[(0,F.jsx)(`div`,{className:`w-14 shrink-0 border-r`,"aria-hidden":!0}),O.map((e,t)=>(0,F.jsxs)(`div`,{role:`columnheader`,className:m(`flex-1 p-2 text-center text-sm border-r last:border-r-0`,e.isToday&&`bg-primary/5`),children:[(0,F.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:e.weekday}),(0,F.jsx)(`div`,{className:m(`font-medium`,e.isToday&&`inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground h-6 w-6 mx-auto`),children:e.day})]},t))]}),h.length>0&&(0,F.jsxs)(`div`,{className:`flex border-b bg-muted/20 max-h-[140px] overflow-y-auto`,children:[(0,F.jsx)(`div`,{className:`w-14 shrink-0 border-r flex items-start justify-end pr-1 pt-1 text-[10px] text-muted-foreground sticky left-0 bg-muted/20`,children:c(`calendar.allDay`)===`calendar.allDay`?`all-day`:c(`calendar.allDay`)}),d.map(e=>{let t=J(e);return(0,F.jsx)(`div`,{className:`flex-1 border-r last:border-r-0 min-h-[28px] p-0.5 space-y-0.5`,children:(_.get(t)??[]).map(({event:e,isStart:t,isEnd:n},r)=>{let{className:i,inlineColor:o}=z(e.color);return(0,F.jsx)(`div`,{role:`button`,title:e.title,onClick:t=>{t.stopPropagation(),a?.(e)},className:m(`text-[11px] px-2 py-0.5 truncate cursor-pointer hover:opacity-80`,t?`rounded-l`:`rounded-l-none -ml-0.5`,n?`rounded-r`:`rounded-r-none -mr-0.5`,i),style:o?{backgroundColor:o}:void 0,children:t?e.title:`\xA0`},`${e.id}-${r}`)})},t)})]}),(0,F.jsx)(`div`,{className:`flex-1 overflow-auto`,children:(0,F.jsxs)(`div`,{className:`flex`,style:{height:u},children:[(0,F.jsx)(`div`,{className:`w-14 shrink-0 border-r relative`,children:k.map((e,t)=>(0,F.jsx)(`div`,{className:`absolute right-1 text-[10px] text-muted-foreground -translate-y-1/2`,style:{top:t*G},children:t===0?``:e},t))}),d.map((e,t)=>{let n=J(e),s=y.get(n)??[];return(0,F.jsxs)(`div`,{ref:e=>{x.current[t]=e},className:`flex-1 border-r last:border-r-0 relative select-none`,style:{height:u},onPointerDown:e=>j(e,t),"aria-label":e.toLocaleDateString(r,{weekday:`long`,month:`long`,day:`numeric`,year:`numeric`}),children:[Array.from({length:24},(e,t)=>(0,F.jsx)(`div`,{className:`absolute left-0 right-0 border-t border-muted/60 pointer-events-none`,style:{top:t*G}},t)),i<60&&Array.from({length:Math.floor(1440/i)},(e,t)=>{let n=t*i;return n%60==0?null:(0,F.jsx)(`div`,{className:`absolute left-0 right-0 border-t border-dashed border-muted/30 pointer-events-none`,style:{top:n/60*G}},t)}),s.map(n=>{let i=n.startMin/60*G,s=Math.max(l,(n.endMin-n.startMin)/60*G),c=100/n.cols,u=n.col*c,{className:d,inlineColor:f}=z(n.event.color),p=S&&S.eventId===n.event.id;return(0,F.jsxs)(`div`,{role:`button`,tabIndex:0,title:n.event.title,"aria-label":n.event.title,onPointerDown:e=>A(e,n,t,`body`),onClick:e=>{if(T.current){e.stopPropagation();return}e.stopPropagation(),a?.(n.event)},className:m(`absolute rounded text-xs px-2 py-1 overflow-hidden shadow-sm`,o?`cursor-move`:`cursor-pointer`,d,p&&`opacity-40`),style:{top:i,height:s,left:`calc(${u}% + 2px)`,width:`calc(${c}% - 4px)`,...f?{backgroundColor:f}:{}},children:[(0,F.jsx)(`div`,{className:`font-medium truncate`,children:n.event.title}),(0,F.jsx)(`div`,{className:`text-[10px] opacity-80 truncate`,children:X(e,n.startMin,n.endMin,r)}),o&&n.isStart&&(0,F.jsx)(`div`,{onPointerDown:e=>A(e,n,t,`top`),className:`absolute top-0 left-0 right-0 h-1.5 cursor-ns-resize`,"aria-label":`Resize start`}),o&&n.isEnd&&(0,F.jsx)(`div`,{onPointerDown:e=>A(e,n,t,`bottom`),className:`absolute bottom-0 left-0 right-0 h-1.5 cursor-ns-resize`,"aria-label":`Resize end`})]},`${n.event.id}-${n.startMin}`)}),M(t)]},n)})]})})]})}function X(e,t,n,r){let i=new Date(e);i.setHours(0,Math.round(t),0,0);let a=new Date(e);a.setHours(0,Math.round(n),0,0);let o=e=>e.toLocaleTimeString(r,{hour:`numeric`,minute:`2-digit`});return`${o(i)} – ${o(a)}`}function ce(e){return`data`in e&&e.data?e.data:`staticData`in e&&e.staticData?{provider:`value`,items:e.staticData}:e.objectName?{provider:`object`,object:e.objectName}:null}function le(e){if(e){if(typeof e==`string`){let t=e.split(` `),n=t[0],r=t[1]?.toLowerCase()===`desc`?`desc`:`asc`;return{[n]:r}}if(Array.isArray(e))return e.reduce((e,t)=>(t.field&&t.order&&(e[t.field]=t.order),e),{})}}function ue(e){return`filter`in e&&e.filter&&typeof e.filter==`object`&&`calendar`in e.filter?e.filter.calendar:e.calendar?e.calendar:e.startDateField||e.dateField?{startDateField:e.startDateField||e.dateField,endDateField:e.endDateField||e.endField,titleField:e.titleField,colorField:e.colorField,allDayField:e.allDayField}:null}var Z=({schema:e,dataSource:t,className:n,data:r,loading:s,onEventClick:l,onRowClick:d,onDateClick:f,onNavigate:m,onViewChange:_,onEventDrop:v,locale:x})=>{let S=Array.isArray(r),[C,T]=(0,P.useState)(S?r:[]),[D,O]=(0,P.useState)(S?s??!1:!0),[k,A]=(0,P.useState)(null),[j,M]=(0,P.useState)(null),[ie,ae]=(0,P.useState)(new Date),I=p(),L=e.defaultView,[R,z]=(0,P.useState)(()=>{let e=L===`day`||!L;return typeof window<`u`&&window.innerWidth<768&&e?`month`:L||`month`});(0,P.useEffect)(()=>{I&&R===`day`&&(L===`day`||!L)&&z(`month`)},[I]);let[B,V]=(0,P.useState)(0);(0,P.useEffect)(()=>{if(!S&&!(!t?.onMutation||!e.objectName))return t.onMutation(t=>{t.resource===e.objectName&&V(e=>e+1)})},[t,e.objectName,S]);let{ref:oe,isRefreshing:se,pullDistance:U}=te({onRefresh:(0,P.useCallback)(async()=>{V(e=>e+1)},[]),enabled:!!t&&!!e.objectName}),W=(0,P.useMemo)(()=>ce(e),[e.data,e.staticData,e.objectName]),G=(0,P.useMemo)(()=>ue(e),[e.filter,e.calendar,e.dateField,e.endField,e.titleField,e.colorField]),K=W?.provider===`value`,q=(0,P.useRef)(null);q.current=j,(0,P.useEffect)(()=>{S&&T(r)},[r,S]),(0,P.useEffect)(()=>{S&&s!==void 0&&O(s)},[s,S]),(0,P.useEffect)(()=>{if(S)return;let n=!0;return(async()=>{try{if(!n)return;if(O(!0),K&&W?.provider===`value`){n&&(T(W.items),O(!1));return}if(!t||typeof t.find!=`function`)throw Error(`DataSource required for object/api providers`);if(W?.provider===`object`){let r=W.object,i=o(q.current?.fields),s=a(await t.find(r,{$filter:e.filter,$orderby:le(e.sort),...i.length>0?{$expand:i}:{}}));n&&T(s)}else W?.provider===`api`&&(console.warn(`API provider not yet implemented for ObjectCalendar`),n&&T([]));n&&O(!1)}catch(e){console.error(`[ObjectCalendar] Error fetching data:`,e),n&&(A(e),O(!1))}})(),()=>{n=!1}},[S,W,t,K,e.filter,e.sort,B]),(0,P.useEffect)(()=>{!K&&t&&(async()=>{try{if(!t)return;let n=W?.provider===`object`?W.object:e.objectName;if(!n)return;let r=await t.getObjectSchema(n);M(r)}catch(e){console.error(`Failed to fetch object schema:`,e)}})()},[e.objectName,t,K,W]);let J=(0,P.useMemo)(()=>{if(!G||!C.length)return[];let{startDateField:e,endDateField:t,titleField:n,colorField:r}=G,i=e=>{if(n){let t=e[n],r=typeof t==`string`?t.trim():t;if(r)return String(r)}return c(j,e)};return C.map((n,a)=>{let o=n[e],s=t?n[t]:null,c=i(n),l=r?n[r]:void 0;return{id:n.id||n._id||`event-${a}`,title:c,start:o?new Date(o):new Date,end:s?new Date(s):void 0,color:l,allDay:!s,data:n}}).filter(e=>!isNaN(e.start.getTime()))},[C,G,j]);(0,P.useCallback)(()=>{f?.(new Date)},[f]);let Y=e.navigation??{mode:`drawer`,width:`min(960px, 60vw)`},X=Y.mode===`drawer`||Y.mode===`modal`||Y.mode===`split`||Y.mode===`popover`,Z=i({navigation:Y,objectName:e.objectName,onRowClick:X?void 0:d}),de=(0,P.useCallback)(async(n,r,i)=>{if(!G)return;let{startDateField:a,endDateField:o}=G,s=n?.id??n?._id;if(!s||!e.objectName||!t?.update)return;let c={[a]:r.toISOString()};o&&i&&(c[o]=i.toISOString());let l=C;T(e=>e.map(e=>(e?.id??e?._id)===s?{...e,...c}:e));try{await t.update(e.objectName,s,c)}catch(e){T(l),console.error(`[ObjectCalendar] Failed to persist drag-and-drop reschedule:`,e)}},[G,e.objectName,t,C]),[Q,$]=(0,P.useState)(null),fe=(0,P.useCallback)(n=>{!G||!e.objectName||!t?.create||$({start:n,title:``,submitting:!1})},[G,e.objectName,t]),pe=(0,P.useCallback)((n,r)=>{!G||!e.objectName||!t?.create||$({start:n,end:r,title:``,submitting:!1})},[G,e.objectName,t]),me=(0,P.useCallback)(async()=>{if(!Q||!G)return;let n=Q.title.trim();if(!n){$(e=>e&&{...e,error:`Title is required`});return}if(!e.objectName||!t?.create)return;$(e=>e&&{...e,submitting:!0,error:void 0});let{startDateField:r,endDateField:i,titleField:a}=G,o={[a||`name`]:n,[r]:Q.start.toISOString()};i&&(o[i]=(Q.end??Q.start).toISOString());let s=j?.fields;if(s&&typeof s==`object`){let e=Array.isArray(s)?s.map(e=>[e.name??e.apiName,e]):Object.entries(s);for(let[t,n]of e){if(!t||t in o||!n?.required)continue;if(n.defaultValue!==void 0&&n.defaultValue!==null){o[t]=n.defaultValue;continue}let e=n.type;if(e===`select`||e===`picklist`||e===`status`){let e=(n.options||n.choices||[])[0];e!==void 0&&(o[t]=typeof e==`object`?e.value??e.id:e)}else e===`boolean`||e===`checkbox`?o[t]=!1:(e===`number`||e===`integer`||e===`decimal`||e===`currency`||e===`percent`)&&(o[t]=0)}}try{let n=await t.create(e.objectName,o),r=(n&&(n.record||n.data||n))??null;r&&(r.id!==void 0||r._id!==void 0)&&T(e=>[...e,r]),$(null)}catch(e){let t=e?.message||String(e);$(e=>e&&{...e,submitting:!1,error:t}),console.error(`[ObjectCalendar] Quick-create failed:`,e)}},[Q,G,e.objectName,t,j]);return D?(0,F.jsx)(`div`,{className:n,children:(0,F.jsx)(`div`,{className:`flex items-center justify-center h-96`,children:(0,F.jsx)(`div`,{className:`text-muted-foreground`,children:`Loading calendar...`})})}):k?(0,F.jsx)(`div`,{className:n,children:(0,F.jsx)(`div`,{className:`flex items-center justify-center h-96`,children:(0,F.jsxs)(`div`,{className:`text-destructive`,children:[`Error: `,k.message]})})}):G?(0,F.jsxs)(`div`,{ref:oe,className:n,children:[U>0&&(0,F.jsx)(`div`,{className:`flex items-center justify-center text-xs text-muted-foreground`,style:{height:U},children:se?`Refreshing…`:`Pull to refresh`}),(0,F.jsx)(`div`,{className:`bg-background h-[calc(100vh-120px)] sm:h-[calc(100vh-160px)] md:h-[calc(100vh-200px)] min-h-[400px] sm:min-h-[600px]`,children:(0,F.jsx)(H,{events:J,currentDate:ie,view:R,locale:x,onEventClick:e=>{Z.handleClick(e.data),X||l?.(e.data)},onDateClick:e=>{f?f(e):fe(e)},onNavigate:e=>{ae(e),m?.(e)},onViewChange:e=>{z(e),_?.(e)},onAddClick:void 0,onEventDrop:(e,t,n)=>{v?v(e.data,t,n):de(e.data,t,n)},onTimeRangeSelect:pe})}),(0,F.jsx)(y,{open:!!Q,onOpenChange:e=>{e||$(null)},children:(0,F.jsxs)(b,{className:`sm:max-w-md`,children:[(0,F.jsxs)(w,{children:[(0,F.jsx)(ee,{children:`New event`}),(0,F.jsx)(g,{children:Q&&(()=>{let e=Q.end&&Q.end.getTime()!==Q.start.getTime(),t=Q.start.toLocaleDateString(x,{year:`numeric`,month:`long`,day:`numeric`});if(e){let e=e=>e.toLocaleTimeString(x,{hour:`numeric`,minute:`2-digit`});return(0,F.jsxs)(F.Fragment,{children:[t,` · `,e(Q.start),` – `,e(Q.end)]})}return(0,F.jsxs)(F.Fragment,{children:[`On `,t]})})()})]}),(0,F.jsxs)(`div`,{className:`space-y-2`,children:[(0,F.jsx)(N,{htmlFor:`quick-create-title`,children:`Title`}),(0,F.jsx)(E,{id:`quick-create-title`,autoFocus:!0,value:Q?.title??``,onChange:e=>$(t=>t&&{...t,title:e.target.value,error:void 0}),onKeyDown:e=>{e.key===`Enter`&&!Q?.submitting&&(e.preventDefault(),me())},placeholder:`What's this event about?`,disabled:Q?.submitting}),Q?.error&&(0,F.jsx)(`p`,{className:`text-sm text-destructive`,children:Q.error})]}),(0,F.jsxs)(u,{children:[(0,F.jsx)(h,{variant:`outline`,onClick:()=>$(null),disabled:Q?.submitting,children:`Cancel`}),(0,F.jsx)(h,{onClick:()=>void me(),disabled:Q?.submitting||!Q?.title.trim(),children:Q?.submitting?`Creating…`:`Create`})]})]})}),Z.isOverlay&&Z.isOpen&&Z.selectedRecord&&(()=>{let n=W?.provider===`object`?W.object:e.objectName,r=Z.selectedRecord,i=r.id??r._id;if(!n||i==null)return null;let a=G?.titleField?String(r[G.titleField]??`Event Details`):`Event Details`;return(0,F.jsx)(ne,{open:!0,onClose:Z.close,title:a,record:r,objectName:n,recordId:i,dataSource:t,objectSchema:j,width:Z.width??`min(960px, 60vw)`,fullPageHref:re(n,i)??void 0,onFieldSave:async(e,r)=>{t?.update&&(await t.update(n,String(i),{[e]:r}),T(t=>t.map(t=>String(t.id??t._id)===String(i)?{...t,[e]:r}:t)))},onDelete:async()=>{t?.delete&&(await t.delete(n,String(i)),T(e=>e.filter(e=>String(e.id??e._id)!==String(i))))}})})()]}):(0,F.jsx)(`div`,{className:n,children:(0,F.jsx)(`div`,{className:`flex items-center justify-center h-96`,children:(0,F.jsx)(`div`,{className:`text-muted-foreground`,children:`Calendar configuration required. Please specify startDateField and titleField.`})})})};s.register(`calendar-view`,({schema:e,className:t,onAction:n,...r})=>{let i=P.useMemo(()=>!e.data||!Array.isArray(e.data)?[]:e.data.map((t,n)=>{let r=e.titleField||`title`,i=e.startDateField||`start`,a=e.endDateField||`end`,o=e.colorField||`color`,s=e.allDayField||`allDay`;return{id:t.id||t._id||n,title:t[r]||`Untitled Event`,start:new Date(t[i]),end:t[a]?new Date(t[a]):void 0,allDay:t[s],color:t[o],data:t}}),[e.data,e.titleField,e.startDateField,e.endDateField,e.colorField,e.allDayField]);return(0,F.jsx)(H,{className:t,events:i,onEventClick:e=>{n?.({type:`event-click`,payload:e})},...r})},{namespace:`plugin-calendar`,label:`Calendar View`,inputs:[{name:`data`,type:`array`,label:`Data`,description:`Array of record objects to display as events`},{name:`titleField`,type:`string`,label:`Title Field`,defaultValue:`title`,description:`Field name to use for event title`},{name:`startDateField`,type:`string`,label:`Start Date Field`,defaultValue:`start`,description:`Field name for event start date`},{name:`endDateField`,type:`string`,label:`End Date Field`,defaultValue:`end`,description:`Field name for event end date (optional)`},{name:`allDayField`,type:`string`,label:`All Day Field`,defaultValue:`allDay`,description:`Field name for all-day flag`},{name:`colorField`,type:`string`,label:`Color Field`,defaultValue:`color`,description:`Field name for event color`},{name:`colorMapping`,type:`object`,label:`Color Mapping`,description:`Map field values to colors (e.g., {meeting: "blue", deadline: "red"})`},{name:`view`,type:`enum`,enum:[`month`,`week`,`day`],defaultValue:`month`,label:`View Mode`,description:`Calendar view mode (month, week, or day)`},{name:`currentDate`,type:`string`,label:`Current Date`,description:`ISO date string for initial calendar date`},{name:`allowCreate`,type:`boolean`,label:`Allow Create`,defaultValue:!1,description:`Allow creating events by clicking on dates`},{name:`className`,type:`string`,label:`CSS Class`}],defaultProps:{view:`month`,titleField:`title`,startDateField:`start`,endDateField:`end`,allDayField:`allDay`,colorField:`color`,allowCreate:!1,data:[{id:1,title:`Team Meeting`,start:new Date(new Date().setHours(10,0,0,0)).toISOString(),end:new Date(new Date().setHours(11,0,0,0)).toISOString(),color:`#3b82f6`,allDay:!1},{id:2,title:`Project Deadline`,start:new Date(new Date().setDate(new Date().getDate()+3)).toISOString(),color:`#ef4444`,allDay:!0},{id:3,title:`Conference`,start:new Date(new Date().setDate(new Date().getDate()+7)).toISOString(),end:new Date(new Date().setDate(new Date().getDate()+9)).toISOString(),color:`#10b981`,allDay:!0}],className:`h-[600px] border rounded-lg`}});var de=t({CalendarView:()=>H,ObjectCalendar:()=>Z,ObjectCalendarRenderer:()=>Q}),Q=({schema:e,...t})=>{let{dataSource:n}=l()||{};return(0,F.jsx)(Z,{schema:e,dataSource:n,...t})};s.register(`object-calendar`,Q,{namespace:`plugin-calendar`,label:`Object Calendar`,category:`view`,inputs:[{name:`objectName`,type:`string`,label:`Object Name`,required:!0},{name:`calendar`,type:`object`,label:`Calendar Config`,description:`startDateField, endDateField, titleField, colorField`}]}),s.register(`calendar`,Q,{namespace:`view`,label:`Calendar View`,category:`view`,inputs:[{name:`objectName`,type:`string`,label:`Object Name`,required:!0},{name:`calendar`,type:`object`,label:`Calendar Config`,description:`startDateField, endDateField, titleField, colorField`}]});export{de as t};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import{o as e,r as t}from"./rolldown-runtime-DAXXjFlN.js";import{g as n,r,y as i}from"./vendor-react-BKSb6vFP.js";import{Dt as a,Et as o,H as s,Q as c,Qt as l,Tt as u,_ as d,_t as f,en as p,et as ee,ft as m,gt as te,mt as ne,pt as re,vt as h,wt as ie}from"./framework-Oi7uo_kE.js";import{A as g,B as _,C as ae,D as v,E as oe,F as se,I as ce,L as y,M as b,N as x,O as S,P as C,R as le,T as w,V as T,_ as E,dt as D,g as ue,h as O,j as k,k as de,m as fe,p as pe,ut as A,v as me,w as j,y as M,z as N}from"./vendor-charts-HLBqza5P.js";import{Gt as P,Jt as he,Or as ge,Rs as _e,Sc as F,U as ve,Vc as I,W as L,Xn as ye,Xt as be,Zn as R,Zt as xe,er as Se,qt as z,tr as Ce,zc as we}from"./ui-components-BluZyuZX.js";var B=e(i(),1),V=r(),H=(...e)=>e.filter(Boolean).join(` `),U={light:``,dark:`.dark`},W=B.createContext(null);function G(){let e=B.useContext(W);if(!e)throw Error(`useChart must be used within a <ChartContainer />`);return e}function K({id:e,className:t,children:n,config:r,...i}){let a=B.useId(),o=`chart-${e||a.replace(/:/g,``)}`;return(0,V.jsx)(W.Provider,{value:{config:r},children:(0,V.jsxs)(`div`,{"data-slot":`chart`,"data-chart":o,className:H(`block w-full h-[350px] text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground`,t),style:{minHeight:280,minWidth:0,...i.style},...i,children:[(0,V.jsx)(Te,{id:o,config:r}),(0,V.jsx)(D,{width:`100%`,height:`100%`,children:n})]})})}var Te=({id:e,config:t})=>{let n=Object.entries(t).filter(([,e])=>e.theme||e.color);return n.length?(0,V.jsx)(`style`,{dangerouslySetInnerHTML:{__html:Object.entries(U).map(([t,r])=>`
|
|
2
|
-
${r} [data-chart=${e}] {
|
|
3
|
-
${n.map(([e,n])=>{let r=n.theme?.[t]||n.color;return r?` --color-${e}: ${r};`:null}).join(`
|
|
4
|
-
`)}
|
|
5
|
-
}
|
|
6
|
-
`).join(`
|
|
7
|
-
`)}}):null},q=T;function J({active:e,payload:t,className:n,indicator:r=`dot`,hideLabel:i=!1,hideIndicator:a=!1,label:o,labelFormatter:s,labelClassName:c,formatter:l,color:u,nameKey:d,labelKey:f}){let{config:p}=G(),ee=B.useMemo(()=>{if(i||!t?.length)return null;let[e]=t,n=`${f||e?.dataKey||e?.name||`value`}`,r=Ee(p,e,n),a=!f&&typeof o==`string`?p[o]?.label||o:r?.label;return s?(0,V.jsx)(`div`,{className:H(`font-medium`,c),children:s(a,t)}):a?(0,V.jsx)(`div`,{className:H(`font-medium`,c),children:a}):null},[o,s,t,i,c,p,f]);if(!e||!t?.length)return null;let m=t.length===1&&r!==`dot`;return(0,V.jsxs)(`div`,{className:H(`border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl`,n),children:[m?null:ee,(0,V.jsx)(`div`,{className:`grid gap-1.5`,children:t.filter(e=>e.type!==`none`).map((e,t)=>{let n=`${d||e.name||e.dataKey||`value`}`,i=Ee(p,e,n),o=u||e.payload.fill||e.color;return(0,V.jsx)(`div`,{className:H(`[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5`,r===`dot`?`items-center`:``),children:l&&e?.value!==void 0&&e.name?l(e.value,e.name,e,t,e.payload):(0,V.jsxs)(V.Fragment,{children:[i?.icon?(0,V.jsx)(i.icon,{}):!a&&(0,V.jsx)(`div`,{className:H(`shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)`,r===`dot`?`h-2.5 w-2.5`:``,r===`line`?`w-1`:``,r===`dashed`?`w-0 border-[1.5px] border-dashed bg-transparent`:``,m&&r===`dashed`?`my-0.5`:``),style:{"--color-bg":o,"--color-border":o}}),(0,V.jsxs)(`div`,{className:H(`flex flex-1 justify-between leading-none`,m?`items-end`:`items-center`),children:[(0,V.jsxs)(`div`,{className:`grid gap-1.5`,children:[m?ee:null,(0,V.jsx)(`span`,{className:`text-muted-foreground`,children:i?.label||e.name})]}),e.value&&(0,V.jsx)(`span`,{className:`text-foreground font-mono font-medium tabular-nums`,children:e.value.toLocaleString()})]})]})},e.dataKey)})})]})}var Y=A;function X({className:e,hideIcon:t=!1,payload:n,verticalAlign:r=`bottom`,nameKey:i}){let{config:a}=G();return n?.length?(0,V.jsx)(`div`,{className:H(`flex items-center justify-center gap-4`,r===`top`?`pb-3`:`pt-3`,e),children:n.filter(e=>e.type!==`none`).map(e=>{let n=`${i||e.dataKey||`value`}`,r=Ee(a,e,n);return(0,V.jsxs)(`div`,{className:H(`[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3`),children:[r?.icon&&!t?(0,V.jsx)(r.icon,{}):(0,V.jsx)(`div`,{className:`h-2 w-2 shrink-0 rounded-[2px]`,style:{backgroundColor:e.color}}),r?.label]},e.value)})}):null}function Ee(e,t,n){if(typeof t!=`object`||!t)return;let r=`payload`in t&&typeof t.payload==`object`&&t.payload!==null?t.payload:void 0,i=n;return n in t&&typeof t[n]==`string`?i=t[n]:r&&n in r&&typeof r[n]==`string`&&(i=r[n]),i in e?e[i]:e[n]}function De(e){return e?.[0]?.dataKey||`value`}function Oe(e,t,n){if(!e)return null;let r=e.payload??e,i=r?.[t];if(i==null)return null;let a=De(n);return{category:String(i),series:a,value:typeof r?.[a]==`number`?r[a]:void 0}}function ke(e,t){if(!e)return null;let n=e.name??e.payload?.name??e.root?.name;if(n==null)return null;let r=e.value??e.size??e.payload?.size;return{category:String(n),series:De(t),value:typeof r==`number`?r:void 0}}function Ae(e,t){if(!e)return null;let n=e.payload??e,r=n?.name;return r==null||n?.depth===0?null:{category:String(r),series:De(t),value:typeof n?.value==`number`?n.value:void 0}}var je=t({default:()=>Pe}),Me=`hsl(var(--primary))`,Ne={slate:`#64748b`,gray:`#6b7280`,zinc:`#71717a`,neutral:`#737373`,stone:`#78716c`,red:`#ef4444`,orange:`#f97316`,amber:`#f59e0b`,yellow:`#eab308`,lime:`#84cc16`,green:`#22c55e`,emerald:`#10b981`,teal:`#14b8a6`,cyan:`#06b6d4`,sky:`#0ea5e9`,blue:`#3b82f6`,indigo:`#6366f1`,violet:`#8b5cf6`,purple:`#a855f7`,fuchsia:`#d946ef`,pink:`#ec4899`,rose:`#f43f5e`},Z=e=>Ne[e]||e,Q=(e,t)=>e?.variant===`comparison`?{strokeOpacity:typeof e.opacity==`number`?e.opacity:t===`line`||t===`scatter`?.5:.6,fillOpacity:typeof e.opacity==`number`?e.opacity:t===`bar`?.4:t===`area`?.2:.5,strokeDasharray:e.dashArray??(t===`line`||t===`area`?`4 4`:void 0)}:null;function Pe({chartType:e=`bar`,data:t=[],config:n={},xAxisKey:r=`name`,series:i=[],className:a=``,colors:o,categoryColors:s,onChartClick:c,isAnimationActive:l}){let u=e===`column`?`bar`:e,d=Array.isArray(t)?t:[],f=l===!1?{isAnimationActive:!1}:{},[p,ee]=B.useState(!1),m=B.useCallback(e=>{if(!c||!e)return;let t=Array.isArray(e.activePayload)?e.activePayload[0]:void 0;c({category:e.activeLabel==null?void 0:String(e.activeLabel),series:t?.dataKey?String(t.dataKey):void 0,value:typeof t?.value==`number`?t.value:void 0})},[c]),te=B.useCallback(e=>{if(!c||!e)return;let t=e.payload?.[r],n=i[0]?.dataKey||`value`;c({category:t==null?void 0:String(t),series:n,value:typeof e.payload?.[n]==`number`?e.payload[n]:void 0})},[c,r,i]),ne=c?{onClick:m,style:{cursor:`pointer`}}:{},re=c?{onClick:te,style:{cursor:`pointer`}}:{},h=B.useCallback((e,t,n)=>s&&s[e==null?``:String(e)]||n[t%n.length],[s]),ie=B.useCallback(e=>{if(!c)return;let t=Oe(e,r,i);t&&c(t)},[c,r,i]),D=B.useCallback(e=>{if(!c)return;let t=ke(e,i);t&&c(t)},[c,i]),A=B.useCallback(e=>{if(!c)return;let t=Ae(e,i);t&&c(t)},[c,i]),P=c?{onClick:ie,cursor:`pointer`}:{},he=c?{onClick:D,style:{cursor:`pointer`}}:{},ge=c?{onClick:A,style:{cursor:`pointer`}}:{};B.useEffect(()=>{let e=()=>ee(window.innerWidth<640);return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]);let _e={bar:j,"horizontal-bar":j,line:w,area:O,pie:ae,donut:ae,radar:E,scatter:ue,funnel:pe,combo:j,treemap:j,sankey:j}[u]||j,F=B.useCallback(e=>{if(e==null||e===``)return``;let t=n?.[String(e)]?.label;if(t!=null)return String(t);let i=typeof e==`string`?e:String(e);if(/^\d{4}-\d{2}-\d{2}/.test(i)){let e=new Date(i);if(!Number.isNaN(e.getTime())){let t=(d.length>1?Math.abs(new Date(String(d[d.length-1][r]??``)).getTime()-new Date(String(d[0][r]??``)).getTime()):0)/(1e3*60*60*24);try{return t<=62?e.toLocaleDateString(void 0,{month:`short`,day:`numeric`}):e.toLocaleDateString(void 0,{month:`short`,year:`numeric`})}catch{return e.toISOString().slice(0,10)}}}return p&&i.length>8?i.slice(0,8)+`…`:i},[d,r,p,n]),ve=B.useMemo(()=>d.some(e=>String(e[r]||``).length>5),[d,r]),I=()=>Array.isArray(o)&&o.length>0?o:[`hsl(var(--chart-1))`,`hsl(var(--chart-2))`,`hsl(var(--chart-3))`,`hsl(var(--chart-4))`,`hsl(var(--chart-5))`],L=B.useCallback(e=>{if(e==null||e===``)return``;let t=typeof e==`number`?e:Number(e);if(!Number.isFinite(t))return String(e);try{return new Intl.NumberFormat(void 0,{notation:`compact`,maximumFractionDigits:1}).format(t)}catch{return String(t)}},[]),ye=B.useMemo(()=>({tickLine:!1,tickMargin:10,axisLine:!1,interval:`preserveStartEnd`,minTickGap:p?32:48,tickFormatter:F,...!p&&ve&&{angle:-35,textAnchor:`end`,height:60}}),[p,ve,F]);if(u===`pie`||u===`donut`){let e=u===`donut`?`52%`:0,t=I(),o={...n};return d.forEach((e,n)=>{let i=e?.[r];if(i==null||i===``)return;let a=String(i);o[a]||(o[a]={label:a,color:h(i,n,t)})}),(0,V.jsx)(K,{config:o,className:a,children:(0,V.jsxs)(ae,{children:[(0,V.jsx)(q,{cursor:!1,content:(0,V.jsx)(J,{hideLabel:!0})}),(0,V.jsx)(se,{data:d,dataKey:i[0]?.dataKey||`value`,nameKey:r||`name`,innerRadius:e,strokeWidth:5,paddingAngle:2,outerRadius:`85%`,...f,...re,children:d.map((e,n)=>{let i=h(e?.[r],n,t);return(0,V.jsx)(_,{fill:Z(i)},`cell-${n}`)})}),(0,V.jsx)(Y,{verticalAlign:`bottom`,wrapperStyle:{fontSize:p?`11px`:`12px`,paddingTop:`8px`},content:(0,V.jsx)(X,{nameKey:r,className:`flex-wrap`})})]})})}if(u===`funnel`){let e=i[0]?.dataKey||`value`,t=I(),o=c?t=>{t&&c({category:t?.payload?.[r]??t?.[r],value:t?.payload?.[e]??t?.[e]})}:void 0,s=o?{onClick:o,style:{cursor:`pointer`}}:{},l=[...d].sort((t,n)=>{let r=Number(t?.[e]??0);return Number(n?.[e]??0)-r});return(0,V.jsx)(K,{config:n,className:a,children:(0,V.jsxs)(pe,{children:[(0,V.jsx)(q,{content:(0,V.jsx)(J,{})}),(0,V.jsxs)(fe,{dataKey:e,data:l,nameKey:r,isAnimationActive:!0,...s,children:[(0,V.jsx)(N,{position:`right`,fill:`hsl(var(--foreground))`,stroke:`none`,dataKey:r}),l.map((e,n)=>(0,V.jsx)(_,{fill:Z(t[n%t.length])},`funnel-cell-${n}`))]})]})})}if(u===`treemap`){let e=i[0]?.dataKey||`value`,t=I(),o=d.map((n,i)=>({name:String(n?.[r]??``),size:Number(n?.[e])||0,fill:Z(t[i%t.length])}));return(0,V.jsx)(K,{config:n,className:a,children:(0,V.jsx)(M,{data:o,dataKey:`size`,nameKey:`name`,isAnimationActive:!0,content:(0,V.jsx)(e=>{let{x:t,y:n,width:r,height:i,name:a,fill:o}=e;return r<=0||i<=0?null:(0,V.jsxs)(`g`,{children:[(0,V.jsx)(`rect`,{x:t,y:n,width:r,height:i,fill:o,stroke:`hsl(var(--background))`,strokeWidth:2}),r>48&&i>18?(0,V.jsx)(`text`,{x:t+6,y:n+18,fill:`#fff`,fontSize:12,className:`pointer-events-none`,children:a}):null]})},{}),...he,children:(0,V.jsx)(T,{})})})}if(u===`sankey`){let e=i[0]?.dataKey||`value`,t=i[0]?.label||e,o=d.filter(t=>(Number(t?.[e])||0)>0),s=[{name:t},...o.map(e=>({name:String(e?.[r]??``)}))],c=o.map((t,n)=>({source:0,target:n+1,value:Number(t?.[e])||0}));return c.length===0?(0,V.jsx)(`div`,{className:a}):(0,V.jsx)(K,{config:n,className:a,children:(0,V.jsx)(me,{data:{nodes:s,links:c},nodePadding:24,link:{stroke:`hsl(var(--muted-foreground))`,strokeOpacity:.25},node:{fill:`hsl(var(--chart-1))`},...ge,children:(0,V.jsx)(T,{})})})}if(u===`radar`)return(0,V.jsx)(K,{config:n,className:a,children:(0,V.jsxs)(E,{data:d,children:[(0,V.jsx)(le,{}),(0,V.jsx)(ce,{dataKey:r}),(0,V.jsx)(y,{}),(0,V.jsx)(q,{content:(0,V.jsx)(J,{})}),(0,V.jsx)(Y,{content:(0,V.jsx)(X,{}),...p&&{verticalAlign:`bottom`,wrapperStyle:{fontSize:`11px`,paddingTop:`8px`}}}),i.map(e=>{let t=Z(n[e.dataKey]?.color||Me);return(0,V.jsx)(C,{dataKey:e.dataKey,stroke:t,fill:t,fillOpacity:.6},e.dataKey)})]})});if(u===`scatter`)return(0,V.jsx)(K,{config:n,className:a,children:(0,V.jsxs)(ue,{children:[(0,V.jsx)(x,{vertical:!1}),(0,V.jsx)(S,{type:`number`,dataKey:r,name:String(n[r]?.label||r),tickLine:!1,axisLine:!1,minTickGap:p?32:48}),(0,V.jsx)(v,{type:`number`,dataKey:i[0]?.dataKey||`value`,name:String(n[i[0]?.dataKey]?.label||i[0]?.dataKey),tickLine:!1,axisLine:!1,tickFormatter:L,width:48}),(0,V.jsx)(oe,{type:`number`,range:[60,400]}),(0,V.jsx)(q,{content:(0,V.jsx)(J,{})}),(0,V.jsx)(Y,{content:(0,V.jsx)(X,{}),...p&&{verticalAlign:`bottom`,wrapperStyle:{fontSize:`11px`,paddingTop:`8px`}}}),i.map((e,t)=>{let r=I(),i=Z(n[e.dataKey]?.color||r[t%r.length]),a=Q(e,`scatter`);return(0,V.jsx)(de,{name:n[e.dataKey]?.label||e.dataKey,data:d,fill:i,fillOpacity:a?.fillOpacity,...P},e.dataKey)})]})});if(u===`combo`)return(0,V.jsx)(K,{config:n,className:a,children:(0,V.jsxs)(j,{data:d,children:[(0,V.jsx)(x,{vertical:!1}),(0,V.jsx)(S,{dataKey:r,...ye}),(0,V.jsx)(v,{yAxisId:`left`,tickLine:!1,axisLine:!1,tickFormatter:L,width:48}),(0,V.jsx)(v,{yAxisId:`right`,orientation:`right`,tickLine:!1,axisLine:!1,tickFormatter:L,width:48}),(0,V.jsx)(q,{content:(0,V.jsx)(J,{})}),(0,V.jsx)(Y,{content:(0,V.jsx)(X,{}),...p&&{verticalAlign:`bottom`,wrapperStyle:{fontSize:`11px`,paddingTop:`8px`}}}),i.map((e,t)=>{let r=Z(n[e.dataKey]?.color||Me),i=e.chartType||(t===0?`bar`:`line`),a=i===`bar`?`left`:`right`,o=Q(e,i);return i===`line`?(0,V.jsx)(b,{yAxisId:a,type:`monotone`,dataKey:e.dataKey,stroke:r,strokeWidth:2,dot:!1,strokeOpacity:o?.strokeOpacity,strokeDasharray:o?.strokeDasharray,...f},e.dataKey):i===`area`?(0,V.jsx)(k,{yAxisId:a,type:`monotone`,dataKey:e.dataKey,fill:r,stroke:r,fillOpacity:o?.fillOpacity??.4,strokeOpacity:o?.strokeOpacity,strokeDasharray:o?.strokeDasharray,...f},e.dataKey):(0,V.jsx)(g,{yAxisId:a,dataKey:e.dataKey,fill:r,radius:4,fillOpacity:o?.fillOpacity,...f},e.dataKey)})]})});let be=u===`horizontal-bar`,R=I(),xe=s?Object.values(s).map(e=>Z(String(e))):[],Se=Array.from(new Set([...R,...xe,...i.map((e,t)=>Z(n[e.dataKey]?.color||R[t%R.length]||Me))])),z=e=>`g`+e.replace(/[^a-zA-Z0-9]/g,``);return(0,V.jsx)(K,{config:n,className:a,children:(0,V.jsxs)(_e,{data:d,layout:be?`vertical`:`horizontal`,...ne,children:[(0,V.jsx)(`defs`,{children:Se.map(e=>(0,V.jsxs)(B.Fragment,{children:[(0,V.jsxs)(`linearGradient`,{id:`bg-${z(e)}`,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,V.jsx)(`stop`,{offset:`0%`,style:{stopColor:e},stopOpacity:.95}),(0,V.jsx)(`stop`,{offset:`100%`,style:{stopColor:e},stopOpacity:.5})]}),(0,V.jsxs)(`linearGradient`,{id:`ag-${z(e)}`,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,V.jsx)(`stop`,{offset:`0%`,style:{stopColor:e},stopOpacity:.5}),(0,V.jsx)(`stop`,{offset:`95%`,style:{stopColor:e},stopOpacity:.05})]})]},z(e)))}),(0,V.jsx)(x,{vertical:!1}),be?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(S,{type:`number`,tickLine:!1,axisLine:!1,tickFormatter:L}),(0,V.jsx)(v,{type:`category`,dataKey:r,tickLine:!1,axisLine:!1,width:Math.min(140,Math.max(60,Math.max(...d.map(e=>String(e[r]??``).length))*7)),tickFormatter:F})]}):(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(S,{dataKey:r,...ye}),(0,V.jsx)(v,{tickLine:!1,axisLine:!1,tickFormatter:L,width:48})]}),(0,V.jsx)(q,{content:(0,V.jsx)(J,{})}),(0,V.jsx)(Y,{content:(0,V.jsx)(X,{}),...p&&{verticalAlign:`bottom`,wrapperStyle:{fontSize:`11px`,paddingTop:`8px`}}}),i.map((e,t)=>{let a=I(),o=e.variant===`comparison`,s=o?i.slice(0,t).find(e=>e.variant!==`comparison`)||i[0]:e,c=o?i.indexOf(s):t,l=Z(n[s.dataKey]?.color||a[c%a.length]||Me);if(u===`bar`||u===`horizontal-bar`){let t=i.filter(e=>e.variant!==`comparison`).length===1&&!o&&i.length===1&&d.length>1,n=Q(e,`bar`);return(0,V.jsx)(g,{dataKey:e.dataKey,fill:`url(#bg-${z(l)})`,radius:4,fillOpacity:n?.fillOpacity,...f,children:t&&d.map((e,t)=>(0,V.jsx)(_,{fill:`url(#bg-${z(Z(h(e?.[r],t,a)))})`},`cell-${t}`))},e.dataKey)}if(u===`line`){let t=Q(e,`line`);return(0,V.jsx)(b,{type:`monotone`,dataKey:e.dataKey,stroke:l,strokeWidth:2,dot:!1,strokeOpacity:t?.strokeOpacity,strokeDasharray:t?.strokeDasharray,...f},e.dataKey)}if(u===`area`){let t=Q(e,`area`);return(0,V.jsx)(k,{type:`monotone`,dataKey:e.dataKey,fill:`url(#ag-${z(l)})`,stroke:l,strokeWidth:2,fillOpacity:t?.fillOpacity??1,strokeOpacity:t?.strokeOpacity,strokeDasharray:t?.strokeDasharray,...f},e.dataKey)}return null})]})})}var Fe=t({default:()=>Re});function Ie(e,t=14){return e.length>t?`${e.slice(0,t-1)}…`:e}function Le({x:e,y:t,payload:n}){let r=String(n?.value??``),i=Ie(r);return(0,V.jsx)(`g`,{transform:`translate(${e},${t})`,children:(0,V.jsxs)(`text`,{dy:10,textAnchor:`end`,transform:`rotate(-32)`,fill:`hsl(var(--muted-foreground))`,fontSize:11,fontFamily:`monospace`,children:[r!==i&&(0,V.jsx)(`title`,{children:r}),i]})})}function Re({data:e=[],dataKey:t=`value`,xAxisKey:n=`name`,height:r=400,className:i=``,color:a=`hsl(var(--primary))`}){let o=e.map(e=>String(e?.[n]??``)),s=o.length>4||o.some(e=>e.length>8);return(0,V.jsx)(`div`,{className:`p-2 sm:p-3 md:p-4 rounded-xl border border-border bg-card/40 backdrop-blur-sm shadow-lg shadow-background/5 ${i}`,children:(0,V.jsx)(D,{width:`100%`,height:r,children:(0,V.jsxs)(j,{data:e,margin:{top:10,right:10,left:10,bottom:s?24:5},children:[(0,V.jsxs)(`defs`,{children:[(0,V.jsxs)(`linearGradient`,{id:`barGradient`,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,V.jsx)(`stop`,{offset:`0%`,stopColor:a,stopOpacity:1}),(0,V.jsx)(`stop`,{offset:`90%`,stopColor:a,stopOpacity:.6}),(0,V.jsx)(`stop`,{offset:`100%`,stopColor:a,stopOpacity:.3})]}),(0,V.jsxs)(`filter`,{id:`glow`,height:`130%`,children:[(0,V.jsx)(`feGaussianBlur`,{in:`SourceAlpha`,stdDeviation:`3`,result:`blur`}),(0,V.jsx)(`feOffset`,{in:`blur`,dx:`0`,dy:`0`,result:`offsetBlur`}),(0,V.jsx)(`feFlood`,{floodColor:a,floodOpacity:`0.5`,result:`offsetColor`}),(0,V.jsx)(`feComposite`,{in:`offsetColor`,in2:`offsetBlur`,operator:`in`,result:`offsetBlur`}),(0,V.jsxs)(`feMerge`,{children:[(0,V.jsx)(`feMergeNode`,{in:`offsetBlur`}),(0,V.jsx)(`feMergeNode`,{in:`SourceGraphic`})]})]})]}),(0,V.jsx)(x,{strokeDasharray:`3 3`,stroke:`hsl(var(--border))`,vertical:!1}),(0,V.jsx)(S,{dataKey:n,tick:s?(0,V.jsx)(Le,{}):{fill:`hsl(var(--muted-foreground))`,fontSize:12,fontFamily:`monospace`},tickLine:!1,axisLine:{stroke:`hsl(var(--border))`},interval:0,height:s?56:void 0,dy:s?void 0:10}),(0,V.jsx)(v,{tick:{fill:`hsl(var(--muted-foreground))`,fontSize:12,fontFamily:`monospace`},tickLine:!1,axisLine:!1}),(0,V.jsx)(T,{cursor:{fill:`hsl(var(--muted))`,opacity:.2},contentStyle:{backgroundColor:`hsl(var(--popover))`,borderColor:`hsl(var(--border))`,color:`hsl(var(--popover-foreground))`,borderRadius:`8px`,fontFamily:`monospace`,boxShadow:`0 4px 6px -1px rgb(0 0 0 / 0.1)`},itemStyle:{color:`hsl(var(--primary))`}}),(0,V.jsx)(A,{wrapperStyle:{paddingTop:`20px`,fontFamily:`monospace`}}),(0,V.jsx)(g,{dataKey:t,fill:`url(#barGradient)`,radius:[4,4,0,0],filter:`url(#glow)`,animationDuration:1500})]})})})}var ze=B.lazy(()=>n(()=>Promise.resolve().then(()=>Fe),void 0,import.meta.url)),Be=B.lazy(()=>n(()=>Promise.resolve().then(()=>je),void 0,import.meta.url)),Ve=({schema:e})=>(0,V.jsx)(B.Suspense,{fallback:(0,V.jsx)(P,{className:`w-full h-48 sm:h-64 md:h-80 lg:h-[400px]`}),children:(0,V.jsx)(ze,{data:e.data,dataKey:e.dataKey,xAxisKey:e.xAxisKey,height:e.height,className:e.className,color:e.color})}),$=({schema:e,onChartClick:t})=>{let n=B.useMemo(()=>{let t=e.series,n=e.xAxisKey,r=e.config;if(n||(e.index?n=e.index:e.category&&(n=e.category)),t||(e.categories?t=e.categories.map(e=>({dataKey:e})):e.value&&(t=[{dataKey:e.value}])),!r&&t){let n=e.colors||[`hsl(var(--chart-1))`,`hsl(var(--chart-2))`,`hsl(var(--chart-3))`],i={};t.forEach((e,t)=>{i[e.dataKey]={label:e.label||e.dataKey,color:n[t%n.length]}}),r=i}return{chartType:e.chartType,data:Array.isArray(e.data)?e.data:[],config:r,xAxisKey:n,series:t,className:e.className}},[e]);return(0,V.jsx)(B.Suspense,{fallback:(0,V.jsx)(P,{className:`w-full h-48 sm:h-64 md:h-80 lg:h-[400px]`}),children:(0,V.jsx)(Be,{chartType:n.chartType,data:n.data,config:n.config,xAxisKey:n.xAxisKey,series:n.series,className:n.className,colors:Array.isArray(e.colors)?e.colors:void 0,categoryColors:e.categoryColors,isAnimationActive:e.isAnimationActive,onChartClick:t})})};function He(e){return e.replace(/[_-]/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function Ue(e,t){let{field:n,function:r,groupBy:i}=t,a={};for(let t of e){let e=String(t[i]??`Unknown`);a[e]||(a[e]=[]),a[e].push(t)}return Object.entries(a).map(([e,t])=>{let a=t.map(e=>Number(e[n])||0),o;switch(r){case`count`:o=t.length;break;case`avg`:o=a.length>0?a.reduce((e,t)=>e+t,0)/a.length:0;break;case`min`:o=a.length>0?Math.min(...a):0;break;case`max`:o=a.length>0?Math.max(...a):0;break;default:o=a.reduce((e,t)=>e+t,0);break}return{[i]:e,[n]:o}})}async function We(e,t,n,r,i){if(!e.length||!t)return e;let a=i||((e,t)=>t),o=`__raw_${t}`,s=n?.fields?.[t];if(!s){let n=/^\d{4}-\d{2}-\d{2}/;return e.map(e=>{let r=e[t],i=String(r??``),s=n.test(i)?i:He(i);return{...e,[t]:a(i,s),[o]:r}})}let c=s.type;if(c===`select`||c===`picklist`||c===`dropdown`){let n=s.options||[];if(n.length===0)return e.map(e=>{let n=e[t],r=String(n??``),i=He(r);return{...e,[t]:a(r,i),[o]:n}});let r={};for(let e of n)typeof e==`string`?r[e]=e:e&&typeof e==`object`&&(r[String(e.value)]=e.label||String(e.value));return e.map(e=>{let n=e[t],i=String(n??``),s=r[i]||He(i);return{...e,[t]:a(i,s),[o]:n}})}if(c===`lookup`||c===`master_detail`){let n=s.reference_to||s.reference;if(!n||!r||typeof r.find!=`function`)return e.map(e=>({...e,[o]:e[t]}));let i=[...new Set(e.map(e=>e[t]).filter(e=>e!=null))];if(i.length===0)return e.map(e=>({...e,[o]:e[t]}));let a=s.id_field||`id`;try{let c=l(await r.find(n,{$filter:{[a]:{$in:i}},$top:i.length})),u=s.reference_field||s.display_field||`name`,d={};for(let e of c){let t=String(e[a]??e.id??e._id??``),n=e[u]||e.name||e.label||e.title||t;t&&(d[t]=String(n))}return e.map(e=>{let n=e[t],r=String(n??``);return{...e,[t]:d[r]||r,[o]:n}})}catch(n){return console.warn(`[ObjectChart] Failed to resolve lookup labels:`,n),e.map(e=>({...e,[o]:e[t]}))}}if(c===`date`||c===`datetime`||c===`date_time`||c===`timestamp`||c===`time`)return e.map(e=>({...e,[o]:e[t]}));let u=/^\d{4}-\d{2}-\d{2}/;return e.map(e=>{let n=e[t],r=String(n??``);return{...e,[t]:u.test(r)?r:He(r),[o]:n}})}var Ge=e=>{let{schema:t}=e,n=e.onSegmentClick,r=(0,B.useContext)(c),i=e.dataSource||r?.dataSource,p=ee(t.bind),{fieldOptionLabel:g}=we(),_=(0,B.useRef)(g);(0,B.useEffect)(()=>{_.current=g},[g]);let[ae,v]=(0,B.useState)([]),[oe,se]=(0,B.useState)(null),[ce,y]=(0,B.useState)(()=>!(Array.isArray(t.data)&&t.data.length>0)&&(!!t.objectName||!!t.dataset)),[b,x]=(0,B.useState)(null),[S,C]=(0,B.useState)(null),[le,w]=(0,B.useState)(null),[T,E]=(0,B.useState)(null),{openRecordList:D}=d(),ue=I(),O=(0,B.useMemo)(()=>t.aggregate?JSON.stringify(t.aggregate):``,[t.aggregate]),k=(0,B.useMemo)(()=>t.filter?JSON.stringify(t.filter):``,[t.filter]),de=(0,B.useMemo)(()=>t.compareTo?JSON.stringify(t.compareTo):``,[t.compareTo]),fe=(0,B.useMemo)(()=>t.dataset?JSON.stringify({d:t.dataset,dim:t.dimensions??[],val:t.values??[]}):``,[t.dataset,t.dimensions,t.values]),pe=e=>e!==`pie`&&e!==`donut`&&e!==`funnel`;(0,B.useEffect)(()=>{let e=!1;return(async()=>{try{let n={headers:{accept:`application/json`},credentials:`include`},r=t.objectName,i,a=null,o=t.aggregate?.groupBy;if(r)i=o&&typeof o==`object`&&!Array.isArray(o)?o.field:typeof o==`string`?o:t.xAxisKey;else if(t.dataset){let e=Array.isArray(t.dimensions)&&t.dimensions.length?t.dimensions[0]:void 0,o=await(await fetch(`/api/v1/meta/dataset/${encodeURIComponent(t.dataset)}`,n)).json().catch(()=>null);a=o?.item??o?.data??o,r=a?.object,i=((a?.dimensions||[]).find(t=>t?.name===e)??(a?.dimensions||[])[0])?.field??e}if(!r||!i){e||(w(null),E(null));return}let s=await(await fetch(`/api/v1/meta/object/${encodeURIComponent(r)}`,n)).json().catch(()=>null),c=s?.item??s?.data??s,l=ne(c?.fields?.[i]?.options),u=null;if(t.dataset&&Array.isArray(t.dimensions)){let e={};for(let n of t.dimensions){let t=(a?.dimensions||[]).find(e=>e?.name===n)?.field??n,r=re(c?.fields?.[t]?.options);r&&(e[n]=r)}Object.keys(e).length>0&&(u=e)}e||(w(l),E(u))}catch{e||(w(null),E(null))}})(),()=>{e=!0}},[t.objectName,t.dataset,fe,O,t.xAxisKey]);let A=(0,B.useCallback)(async(e,n)=>{if(t.aggregate&&typeof e.aggregate==`function`){let r=t.aggregate.groupBy;if(r&&typeof r==`object`&&!Array.isArray(r)){let i=t.aggregate.field,a=t.aggregate.function,o={function:a,alias:i||a};a!==`count`&&i&&(o.field=i);let s=await e.aggregate(t.objectName,{groupBy:[r],aggregations:[o],where:n});return Array.isArray(s)?s:[]}let i=await e.aggregate(t.objectName,{field:t.aggregate.field,function:t.aggregate.function,groupBy:r,filter:n});return Array.isArray(i)?i:[]}if(typeof e.find==`function`){let r=l(await e.find(t.objectName,{$filter:n}));return t.aggregate&&r.length>0&&(r=Ue(r,t.aggregate)),r}return[]},[t.objectName,O]),me=(0,B.useCallback)(async(e,n)=>{if(!e||!t.objectName&&!t.dataset){n.current&&y(!1);return}n.current&&(y(!0),x(null));try{if(t.dataset&&typeof e.queryDataset==`function`){let r=ie(t.filter),i=await e.queryDataset(t.dataset,{dimensions:Array.isArray(t.dimensions)?t.dimensions:[],measures:Array.isArray(t.values)?t.values:[],...r?{runtimeFilter:r}:{}});n.current&&(v(Array.isArray(i?.rows)?i.rows:[]),se(Array.isArray(i?.fields)?i.fields:null));return}let r=ie(t.filter),i=t.compareTo,a=!!i&&pe(t.chartType),o=a?h(t.filter,i):null,[s,c]=await Promise.all([A(e,r),o?A(e,o):Promise.resolve([])]),l=s,u=t.aggregate?.groupBy,d=u&&typeof u==`object`&&!Array.isArray(u)?u.alias||u.field:u||t.xAxisKey;if(a&&c.length>0&&t.aggregate){let e=t.aggregate.field,n=t.aggregate.function,r=t=>{if(t==null)return null;let r=`${e}_${n}`;return r in t?Number(t[r]):n===`count`&&`${e}_count`in t?Number(t[`${e}_count`]):e in t?Number(t[e]):`value`in t?Number(t.value):`count`in t?Number(t.count):null},i=`${e}__comparison`,a=d;if(a&&l.some(e=>e[a]!=null)&&c.some(e=>e[a]!=null)){let e=new Map;for(let t of c){let n=String(t[a]??``);e.set(n,r(t))}l=l.map(t=>{let n=String(t[a]??``),r=e.get(n);return r==null?t:{...t,[i]:r}});let t=new Set(l.map(e=>String(e[a]??``)));for(let e of c){let n=String(e[a]??``);t.has(n)||l.push({[a]:n,[i]:r(e)})}}else{let e=Math.max(l.length,c.length),t=[];for(let n=0;n<e;n++){let e=l[n]||{},a=c[n];t.push(a?{...e,[i]:r(a)}:e)}l=t}}if(d&&typeof e.getObjectSchema==`function`)try{let n=await e.getObjectSchema(t.objectName);l=await We(l,d,n,e,(e,n)=>_.current(t.objectName,d,e,n))}catch{}n.current&&v(l)}catch(e){console.error(`[ObjectChart] Fetch error:`,e),n.current&&x(e instanceof Error?e.message:`Failed to load chart data`)}finally{n.current&&y(!1)}},[t.objectName,fe,O,k,de,t.xAxisKey,t.chartType,A]);(0,B.useEffect)(()=>{let e={current:!0};return(t.objectName||t.dataset)&&!p&&!t.data?me(i,e):e.current&&y(!1),()=>{e.current=!1}},[t.objectName,fe,i,p,t.data,k,O,de,me]);let j=p||t.data||ae,M=Array.isArray(j)?j:[],N=t.drillDown,P=t.aggregate?.groupBy||t.xAxisKey,H=(0,B.useMemo)(()=>{if(!P)return new Map;let e=new Map,t=`__raw_${P}`;for(let n of M){let r=n?.[P];if(r==null)continue;let i=t in(n||{})?n[t]:r;e.set(String(r),i)}return e},[M,P]),U=t.compareTo,W=!!U&&pe(t.chartType)&&!!t.aggregate&&M.some(e=>e[`${t.aggregate.field}__comparison`]!=null),G=(0,B.useMemo)(()=>{let e=Array.isArray(t.series)?t.series:null;if(!W)return e;let n=e||[{dataKey:t.aggregate.field}],r={vsLastWeek:`Previous week`,vsLastMonth:`Previous month`,vsLastQuarter:`Previous quarter`,vsLastYear:`Previous year`,vsYesterday:`Yesterday`,vsPreviousPeriod:`Previous period`}[f(U,t.filter)]||`Previous period`;return[...n.map(e=>({...e,variant:e.variant||`current`})),{dataKey:`${t.aggregate.field}__comparison`,label:r,variant:`comparison`}]},[W,t.series,t.aggregate,t.filter,U]),K=t.dataset?m(te(M,T),t.dimensions,t.values,oe):null,Te=K?{...t,data:K.data,xAxisKey:K.xAxisKey,series:K.series}:{...t,data:M,...G?{series:G}:{}},q=t.colors&&!Array.isArray(t.colors)&&typeof t.colors==`object`?t.colors:null,J=Array.isArray(t.colors)?t.colors:void 0,Y=le||q?{...le||{},...q||{}}:void 0,X={...Te,colors:J,...Y?{categoryColors:Y}:{}};if(ce&&M.length===0)return(0,V.jsxs)(`div`,{className:`p-2 `+(t.className||``),"data-testid":`chart-loading`,role:`status`,"aria-busy":`true`,"aria-live":`polite`,children:[(0,V.jsx)(`span`,{className:`sr-only`,children:`Loading chart data…`}),(0,V.jsx)(L,{className:`h-full`})]});if(b)return(0,V.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-2 p-4 `+(t.className||``),"data-testid":`chart-error`,role:`alert`,children:[(0,V.jsx)(_e,{className:`h-6 w-6 text-destructive opacity-60`}),(0,V.jsx)(`p`,{className:`text-xs text-destructive font-medium`,children:`Failed to load chart data`}),(0,V.jsx)(`p`,{className:`text-xs text-muted-foreground max-w-xs text-center`,children:b})]});if(!i&&t.objectName&&M.length===0)return(0,V.jsxs)(`div`,{className:`flex items-center justify-center text-muted-foreground text-sm p-4 `+(t.className||``),"data-testid":`chart-no-datasource`,children:[`No data source available for “`,t.objectName,`”`]});let Ee=o(N)?e=>{let t=e.category,n=t!=null&&H.has(String(t))?H.get(String(t)):t;C({...e,category:n,categoryLabel:t,scope:`cell`})}:void 0,De=n??Ee,Oe=!n&&S&&t.objectName?(()=>{let e=u(N,S,{groupByField:P}),n={...t.filter||{},...e},r=a(N,S,t.title||`Details`),o=N?.target??`drawer`,c=(0,V.jsx)(`div`,{className:`overflow-auto`,"data-testid":`chart-drill-body`,children:(0,V.jsx)(s,{schema:{type:`object-data-table`,objectName:t.objectName,filter:n,pagination:!0,pageSize:N?.maxRows,columns:N?.columns?.map(e=>({accessorKey:e,header:e})),drillDown:{enabled:!0,mode:`record`,target:`dialog`}},dataSource:i})}),l=D&&t.objectName?(0,V.jsxs)(ge,{type:`button`,variant:`ghost`,size:`sm`,"data-testid":`drill-open-in-list`,onClick:()=>{D(t.objectName,n),C(null)},children:[ue(`dashboard.openInList`,`Open in list`),(0,V.jsx)(F,{className:`ml-1 h-3.5 w-3.5`})]}):null;return o===`dialog`?(0,V.jsx)(ye,{open:!0,onOpenChange:e=>!e&&C(null),children:(0,V.jsxs)(R,{className:`max-w-4xl`,children:[(0,V.jsxs)(Se,{className:`flex-row items-center justify-between gap-4 pr-8`,children:[(0,V.jsx)(Ce,{children:r}),l]}),c]})}):(0,V.jsx)(z,{open:!0,onOpenChange:e=>!e&&C(null),children:(0,V.jsxs)(he,{side:`right`,className:`w-full sm:max-w-2xl md:max-w-3xl lg:max-w-4xl flex flex-col`,children:[(0,V.jsxs)(be,{className:`flex-row items-center justify-between gap-4 pr-8`,children:[(0,V.jsx)(xe,{children:r}),l]}),(0,V.jsx)(`div`,{className:`flex-1 overflow-hidden mt-2`,children:c})]})})})():null;return(0,V.jsxs)(`div`,{className:`relative`,children:[(0,V.jsx)(ve,{active:ce&&M.length>0}),(0,V.jsx)($,{...e,schema:X,onChartClick:De}),Oe]})};p.register(`object-chart`,Ge,{namespace:`plugin-charts`,label:`Object Chart`,category:`view`,inputs:[{name:`objectName`,type:`string`,label:`Object Name`,required:!0},{name:`data`,type:`array`,label:`Data`,description:`Optional static data`},{name:`filter`,type:`array`,label:`Filter`},{name:`aggregate`,type:`object`,label:`Aggregate`,description:`Aggregation config: { field, function, groupBy }`}]});var Ke=t({ChartBarRenderer:()=>Ve,ChartRenderer:()=>$,ObjectChart:()=>Ge,chartComponents:()=>qe}),qe={"bar-chart":Ve,chart:$};p.register(`bar-chart`,Ve,{namespace:`plugin-charts`,label:`Bar Chart`,category:`plugin`,inputs:[{name:`data`,type:`array`,label:`Data`,required:!0},{name:`dataKey`,type:`string`,label:`Data Key`,defaultValue:`value`},{name:`xAxisKey`,type:`string`,label:`X-Axis Key`,defaultValue:`name`},{name:`height`,type:`number`,label:`Height`,defaultValue:400},{name:`color`,type:`color`,label:`Color`,defaultValue:`#8884d8`}],defaultProps:{data:[{name:`Jan`,value:400},{name:`Feb`,value:300},{name:`Mar`,value:600},{name:`Apr`,value:800},{name:`May`,value:500}],dataKey:`value`,xAxisKey:`name`,height:400,color:`#8884d8`}}),p.register(`chart`,Ge,{namespace:`view`,category:`view`,label:`Chart`,skipFallback:!0,inputs:[{name:`objectName`,type:`string`,label:`Object Name`,required:!0},{name:`type`,type:`string`,label:`Chart Type`},{name:`categoryField`,type:`string`,label:`Category Field`},{name:`valueField`,type:`string`,label:`Value Field`}]}),p.register(`chart`,$,{namespace:`plugin-charts`,label:`Chart`,category:`plugin`,inputs:[{name:`chartType`,type:`enum`,label:`Chart Type`,enum:[{label:`Bar`,value:`bar`},{label:`Line`,value:`line`},{label:`Area`,value:`area`},{label:`Pie`,value:`pie`},{label:`Donut`,value:`donut`},{label:`Radar`,value:`radar`},{label:`Scatter`,value:`scatter`}],defaultValue:`bar`},{name:`data`,type:`code`,label:`Data (JSON)`,required:!0},{name:`config`,type:`code`,label:`Config (JSON)`},{name:`xAxisKey`,type:`string`,label:`X Axis Key`,defaultValue:`name`},{name:`series`,type:`code`,label:`Series (JSON Array)`,required:!0},{name:`className`,type:`string`,label:`CSS Class`}],defaultProps:{chartType:`bar`,data:[{name:`Jan`,sales:400,revenue:240},{name:`Feb`,sales:300,revenue:139},{name:`Mar`,sales:600,revenue:380},{name:`Apr`,sales:800,revenue:430},{name:`May`,sales:500,revenue:220}],config:{sales:{label:`Sales`,color:`#8884d8`},revenue:{label:`Revenue`,color:`#82ca9d`}},xAxisKey:`name`,series:[{dataKey:`sales`},{dataKey:`revenue`}]}}),p.register(`chart:bar`,$,{namespace:`plugin-charts`,label:`Bar Chart (Alias)`,category:`plugin`,defaultProps:{chartType:`bar`}}),p.register(`pie-chart`,$,{namespace:`plugin-charts`,label:`Pie Chart`,category:`plugin`,defaultProps:{chartType:`pie`}}),p.register(`donut-chart`,$,{namespace:`plugin-charts`,label:`Donut Chart`,category:`plugin`,defaultProps:{chartType:`donut`}}),p.register(`radar-chart`,$,{namespace:`plugin-charts`,label:`Radar Chart`,category:`plugin`,defaultProps:{chartType:`radar`}}),p.register(`scatter-chart`,$,{namespace:`plugin-charts`,label:`Scatter Chart`,category:`plugin`,defaultProps:{chartType:`scatter`}});export{Ke as t};
|