@standardbeagle/edit-db 0.4.685 → 0.4.688

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("react"),require("@tanstack/react-query"),require("react/jsx-runtime"),require("lucide-react"),require("radix-ui"),require("@radix-ui/react-slot"),require("@tanstack/react-form"),require("@tanstack/react-table")):typeof define==`function`&&define.amd?define([`exports`,`react`,`@tanstack/react-query`,`react/jsx-runtime`,`lucide-react`,`radix-ui`,`@radix-ui/react-slot`,`@tanstack/react-form`,`@tanstack/react-table`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.editor={},e.React,e.ReactQuery,e.react_jsx_runtime,e.LucideReact,e.RadixUI,e.RadixReactSlot,e.ReactForm,e.ReactTable))})(this,function(e,t,n,r,i,a,o,s,c){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});var l=Object.create,u=Object.defineProperty,d=Object.getOwnPropertyDescriptor,f=Object.getOwnPropertyNames,p=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty,h=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=f(t),a=0,o=i.length,s;a<o;a++)s=i[a],!m.call(e,s)&&s!==n&&u(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=d(t,s))||r.enumerable});return e};t=((e,t,n)=>(n=e==null?{}:l(p(e)),h(t||!e||!e.__esModule||!m.call(e,`default`)?u(n,`default`,{value:e,enumerable:!0}):n,e)))(t,1);var g={path:`/`,history:[],location:0},_={path:`*`,data:{},hash:``,query:``},v=(0,t.createContext)(g),y=(0,t.createContext)(null),b=(0,t.createContext)(_),x=e=>({type:`NAVIGATE`,payload:e}),S=(e=1)=>({type:`BACK`,payload:e}),C=(e=1)=>({type:`FORWARD`,payload:e}),w=100;function T(e,t){switch(t.type){case`NAVIGATE`:{let{history:n}=e,{location:r}=e;return r>0&&(n=n.slice(r)),{path:re(e.path,t.payload),history:[t.payload,...n].slice(0,w),location:0}}case`BACK`:{let n=e.location+t.payload,r=e.history.at(n);return r?{path:r,history:e.history,location:n}:e}case`FORWARD`:{let n=e.location-t.payload,r=e.history.at(n);return r?{path:r,history:e.history,location:n}:e}default:return e}}function E(){return(0,t.useContext)(v).path}function D(){let e=(0,t.useContext)(y);return(0,t.useCallback)(t=>e?.(x(t)),[e])}function O(){let e=(0,t.useContext)(y),n=(0,t.useContext)(v);return(0,t.useMemo)(()=>({navigate:t=>e?.(x(t)),back:(t=1)=>e?.(S(t)),forward:(t=1)=>e?.(C(t)),hasBack:n.location<n.history.length-1,...n}),[e,n])}function k(){return(0,t.useContext)(b).data}function A(){let{query:e,hash:n}=(0,t.useContext)(b);return(0,t.useMemo)(()=>({search:new URLSearchParams(e),hash:n}),[e,n])}function j({path:e,children:n}){let[i,a]=(0,t.useReducer)(T,e?{path:e,history:[],location:0}:g);return(0,r.jsx)(v.Provider,{value:i,children:(0,r.jsx)(y.Provider,{value:a,children:(0,r.jsx)(b.Provider,{value:_,children:n})})})}var M=(0,t.forwardRef)(({to:e,children:t,...n},i)=>{let a=D(),o=t=>{t.defaultPrevented||t.preventDefault(),a(e)};return(0,r.jsx)(`a`,{...n,href:e,ref:i,onClick:o,children:t})});function N({children:e}){let n=(0,t.useContext)(b),i=(0,t.useContext)(v),a=ne(e,n.path),o=te(a.map(e=>e.route),i.path);if(!o)return(0,r.jsx)(r.Fragment,{});let s=a.find(e=>e.route===o.route).element;return(0,r.jsx)(b.Provider,{value:{...o.match},children:s})}function ee(e){let t=0;for(let n of e.split(`/`))n!==``&&n!==`*`&&(t+=n.startsWith(`:`)?1:100);return t}function te(e,t){let n=null;for(let r of e){let e=L(r,t);e.isMatch&&(n===null||ee(r)>ee(n.route))&&(n={route:r,match:e})}return n}function P(e){return(0,r.jsx)(r.Fragment,{})}function ne(e,n){let r=[];return t.Children.map(e,e=>{if(!(0,t.isValidElement)(e))return;if(e.type===t.default.Fragment){r.push(...ne(e.props.children,n));return}let i=e.props;return r.push({route:I(n,i.path),element:i.element}),e}),r}var re=(e,t)=>{if(t.startsWith(`/`))return t;if(t.startsWith(`?`)){let[n]=e?.split(`?`)??[``];return n+t}let n=0,r=t.split(`/`).filter(e=>e!==``);for(;r.length>0&&(r[0]===`.`||r[0]===`..`);)r.shift()==`..`&&++n;return F(e,r.join(`/`),n)},F=(e,t,n)=>{let r=e.split(`/`).filter(e=>e!==``),i=t.split(`/`).filter(e=>e!==``);return`/${[...r.slice(0,Math.max(0,r.length-n)),...i].join(`/`)}`},I=(e,t)=>{let n=e.split(`/`).filter(e=>e!==``),r=t.split(`/`).filter(e=>e!==``);return n.length>0&&n.at(-1)===`*`&&n.pop(),n.length===0?`/${r.join(`/`)}`:`/${n.join(`/`)}/${r.join(`/`)}`},L=(e,t)=>{let n=e.split(`/`),r=t.split(`/`);if(n.at(-1)===``&&(n=n.slice(0,-1)),r.at(-1)===``&&(r=r.slice(0,-1)),n.length>r.length||n.length<r.length&&n.at(-1)!==`*`)return{isMatch:!1,remainer:``,data:{},query:``,hash:``,path:``};let i={},a=``,o=``;for(let e=0;e<n.length;++e){let t=n[e],s=[...r[e].matchAll(/([?#]?)((?:(?![?#]).)*)/g)],c=s?.find(e=>e[1]===``)?.[2]??``;if(a=s?.find(e=>e[1]===`?`)?.[2]??``,o=s?.find(e=>e[1]===`#`)?.[2]??``,t.startsWith(`:`)&&c&&c!==``){i[t.substring(1)]=c;continue}if(t===`*`){let t=[...r.slice(e).join(`/`).matchAll(/([?#]?)((?:(?![?#]).)*)/g)];return{isMatch:!0,data:i,remainer:t.find(e=>e[1]===``)?.[2]??``,query:t.find(e=>e[1]===`?`)?.[2]??``,hash:t.find(e=>e[1]===`#`)?.[2]??``,path:r.slice(0,e).join(`/`)}}if(t!==c)return{isMatch:!1,data:{},remainer:``,query:``,hash:``,path:``}}return{isMatch:!0,remainer:``,data:i,query:a,hash:o,path:t?.split(`?`)?.[0]??``}},R=`
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("react"),require("@tanstack/react-query"),require("react/jsx-runtime"),require("lucide-react"),require("radix-ui"),require("@radix-ui/react-slot"),require("@tanstack/react-form"),require("@tanstack/react-table")):typeof define==`function`&&define.amd?define([`exports`,`react`,`@tanstack/react-query`,`react/jsx-runtime`,`lucide-react`,`radix-ui`,`@radix-ui/react-slot`,`@tanstack/react-form`,`@tanstack/react-table`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.editor={},e.React,e.ReactQuery,e.react_jsx_runtime,e.LucideReact,e.RadixUI,e.RadixReactSlot,e.ReactForm,e.ReactTable))})(this,function(e,t,n,r,i,a,o,s,c){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});var l=Object.create,u=Object.defineProperty,d=Object.getOwnPropertyDescriptor,f=Object.getOwnPropertyNames,p=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty,h=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=f(t),a=0,o=i.length,s;a<o;a++)s=i[a],!m.call(e,s)&&s!==n&&u(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=d(t,s))||r.enumerable});return e};t=((e,t,n)=>(n=e==null?{}:l(p(e)),h(t||!e||!e.__esModule||!m.call(e,`default`)?u(n,`default`,{value:e,enumerable:!0}):n,e)))(t,1);var g={path:`/`,history:[],location:0},_={path:`*`,data:{},hash:``,query:``},v=(0,t.createContext)(g),y=(0,t.createContext)(null),b=(0,t.createContext)(_),x=e=>({type:`NAVIGATE`,payload:e}),S=(e=1)=>({type:`BACK`,payload:e}),C=(e=1)=>({type:`FORWARD`,payload:e}),w=100;function T(e,t){switch(t.type){case`NAVIGATE`:{let{history:n}=e,{location:r}=e;return r>0&&(n=n.slice(r)),{path:ne(e.path,t.payload),history:[t.payload,...n].slice(0,w),location:0}}case`BACK`:{let n=e.location+t.payload,r=e.history.at(n);return r?{path:r,history:e.history,location:n}:e}case`FORWARD`:{let n=e.location-t.payload,r=e.history.at(n);return r?{path:r,history:e.history,location:n}:e}default:return e}}function E(){return(0,t.useContext)(v).path}function D(){let e=(0,t.useContext)(y);return(0,t.useCallback)(t=>e?.(x(t)),[e])}function O(){let e=(0,t.useContext)(y),n=(0,t.useContext)(v);return(0,t.useMemo)(()=>({navigate:t=>e?.(x(t)),back:(t=1)=>e?.(S(t)),forward:(t=1)=>e?.(C(t)),hasBack:n.location<n.history.length-1,...n}),[e,n])}function k(){return(0,t.useContext)(b).data}function A(){let{query:e,hash:n}=(0,t.useContext)(b);return(0,t.useMemo)(()=>({search:new URLSearchParams(e),hash:n}),[e,n])}function j({path:e,children:n}){let[i,a]=(0,t.useReducer)(T,e?{path:e,history:[],location:0}:g);return(0,r.jsx)(v.Provider,{value:i,children:(0,r.jsx)(y.Provider,{value:a,children:(0,r.jsx)(b.Provider,{value:_,children:n})})})}var M=(0,t.forwardRef)(({to:e,children:t,...n},i)=>{let a=D(),o=t=>{t.defaultPrevented||t.preventDefault(),a(e)};return(0,r.jsx)(`a`,{...n,href:e,ref:i,onClick:o,children:t})});function N({children:e}){let n=(0,t.useContext)(b),i=(0,t.useContext)(v),a=te(e,n.path),o=ee(a.map(e=>e.route),i.path);if(!o)return(0,r.jsx)(r.Fragment,{});let s=a.find(e=>e.route===o.route).element;return(0,r.jsx)(b.Provider,{value:{...o.match},children:s})}function P(e){let t=0;for(let n of e.split(`/`))n!==``&&n!==`*`&&(t+=n.startsWith(`:`)?1:100);return t}function ee(e,t){let n=null;for(let r of e){let e=L(r,t);e.isMatch&&(n===null||P(r)>P(n.route))&&(n={route:r,match:e})}return n}function F(e){return(0,r.jsx)(r.Fragment,{})}function te(e,n){let r=[];return t.Children.map(e,e=>{if(!(0,t.isValidElement)(e))return;if(e.type===t.default.Fragment){r.push(...te(e.props.children,n));return}let i=e.props;return r.push({route:re(n,i.path),element:i.element}),e}),r}var ne=(e,t)=>{if(t.startsWith(`/`))return t;if(t.startsWith(`?`)){let[n]=e?.split(`?`)??[``];return n+t}let n=0,r=t.split(`/`).filter(e=>e!==``);for(;r.length>0&&(r[0]===`.`||r[0]===`..`);)r.shift()==`..`&&++n;return I(e,r.join(`/`),n)},I=(e,t,n)=>{let r=e.split(`/`).filter(e=>e!==``),i=t.split(`/`).filter(e=>e!==``);return`/${[...r.slice(0,Math.max(0,r.length-n)),...i].join(`/`)}`},re=(e,t)=>{let n=e.split(`/`).filter(e=>e!==``),r=t.split(`/`).filter(e=>e!==``);return n.length>0&&n.at(-1)===`*`&&n.pop(),n.length===0?`/${r.join(`/`)}`:`/${n.join(`/`)}/${r.join(`/`)}`},L=(e,t)=>{let n=e.split(`/`),r=t.split(`/`);if(n.at(-1)===``&&(n=n.slice(0,-1)),r.at(-1)===``&&(r=r.slice(0,-1)),n.length>r.length||n.length<r.length&&n.at(-1)!==`*`)return{isMatch:!1,remainer:``,data:{},query:``,hash:``,path:``};let i={},a=``,o=``;for(let e=0;e<n.length;++e){let t=n[e],s=[...r[e].matchAll(/([?#]?)((?:(?![?#]).)*)/g)],c=s?.find(e=>e[1]===``)?.[2]??``;if(a=s?.find(e=>e[1]===`?`)?.[2]??``,o=s?.find(e=>e[1]===`#`)?.[2]??``,t.startsWith(`:`)&&c&&c!==``){i[t.substring(1)]=c;continue}if(t===`*`){let t=[...r.slice(e).join(`/`).matchAll(/([?#]?)((?:(?![?#]).)*)/g)];return{isMatch:!0,data:i,remainer:t.find(e=>e[1]===``)?.[2]??``,query:t.find(e=>e[1]===`?`)?.[2]??``,hash:t.find(e=>e[1]===`#`)?.[2]??``,path:r.slice(0,e).join(`/`)}}if(t!==c)return{isMatch:!1,data:{},remainer:``,query:``,hash:``,path:``}}return{isMatch:!0,remainer:``,data:i,query:a,hash:o,path:t?.split(`?`)?.[0]??``}},R=`
2
2
  query dbSchema {
3
3
  _dbSchema {
4
4
  dbName
@@ -71,39 +71,39 @@ query dbSchema {
71
71
  columns
72
72
  }
73
73
  }
74
- }`,ie=class extends Error{errors;data;constructor(e,t){super(e.map(e=>e.message).join(`; `)),this.errors=e,this.data=t,this.name=`GraphQLRequestError`}},ae=class{uri;constructor(e){this.uri=e}async query(e,t,n){let r=await fetch(this.uri,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({query:e,variables:t}),signal:n?.signal});if(!r.ok)throw Error(`GraphQL request failed: ${r.status} ${r.statusText}`);let i=await r.json();if(i.errors?.length)throw new ie(i.errors,i.data);return i.data}},z=(0,t.createContext)(null),B=z.Provider;function V(){let e=(0,t.useContext)(z);if(!e)throw Error(`useFetcher must be used within a FetcherProvider`);return e}function oe(e){let t=e.lastIndexOf(`.`);return t>=0?e.slice(t+1):e}function se(e){return oe(e).replace(/([a-z])([A-Z])/g,`$1 $2`).replace(/([A-Z]+)([A-Z][a-z])/g,`$1 $2`).split(/[_\-\s]+/).filter(Boolean)}function H(e){return e.length===0?e:e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}function ce(e){return e&&se(e).map(H).join(` `)}var le=(0,t.createContext)({showStats:!1});function ue({config:e,children:t}){return(0,r.jsx)(le.Provider,{value:e,children:t})}function de(){return(0,t.useContext)(le)}var fe=(0,t.createContext)({loading:!0,error:null,data:[],findTable:()=>void 0}),pe=({children:e})=>{let t=he();return(0,r.jsx)(fe.Provider,{value:t,children:e})};function U(){return(0,t.useContext)(fe)}function me(e,t){if(!t||t.length===0)return e;let n=new Set(t.map(e=>e.toLowerCase()));return e.filter(e=>n.has(e.graphQlName.toLowerCase())||n.has(e.dbName.toLowerCase()))}function he(){let e=V(),{tables:r}=de(),{isLoading:i,error:a,data:o}=(0,n.useQuery)({queryKey:[`dbSchema`],queryFn:()=>e.query(R),staleTime:1/0});return(0,t.useMemo)(()=>{if(i)return{loading:!0,error:null,data:[],findTable:()=>void 0};if(a)return{loading:!1,error:{message:a.message},data:[],findTable:()=>void 0};if(!o)return{loading:!1,error:null,data:[],findTable:()=>void 0};let e=me(o._dbSchema.map(e=>({...e,name:e.graphQlName,label:ce(e.dbName),metadata:ge(e.metadata),columns:e.columns.map(e=>({...e,name:e.graphQlName,label:ce(e.dbName),metadata:ge(e.metadata),inputType:be(e.inputType)}))})),r);return{loading:!1,error:null,data:e,findTable:t=>e.find(e=>e.graphQlName===t)}},[i,a,o,r])}function ge(e){return e.reduce((e,t)=>({...e,[t.key]:_e(t)}),{})}function _e({key:e,value:t}){return e===`type`?ve(t):t}function ve(e){let t=e.match(/lookup\s*\(\s*(?<id>\w+)\s*,\s*(?<label>\w+)\s*\)/m);if(t?.groups?.id&&t?.groups?.label)return{type:`lookup`,id:t.groups.id,label:t.groups.label}}var ye=[`text`,`email`,`url`,`tel`,`date`,`datetime-local`,`number`,`password`,`search`];function be(e){if(e&&ye.includes(e))return e}function xe(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=xe(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n)}return r}function Se(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=xe(e))&&(r&&(r+=` `),r+=t);return r}var Ce=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,we=Se,W=(e,t)=>n=>{if(t?.variants==null)return we(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=Ce(t)||Ce(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return we(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},Te=(e,t)=>{let n=Array(e.length+t.length);for(let t=0;t<e.length;t++)n[t]=e[t];for(let r=0;r<t.length;r++)n[e.length+r]=t[r];return n},Ee=(e,t)=>({classGroupId:e,validator:t}),De=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),Oe=`-`,ke=[],Ae=`arbitrary..`,je=e=>{let t=Pe(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return Ne(e);let n=e.split(Oe);return Me(n,+(n[0]===``&&n.length>1),t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?Te(i,t):t:i||ke}return n[e]||ke}}},Me=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=Me(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(Oe):e.slice(t).join(Oe),s=a.length;for(let e=0;e<s;e++){let t=a[e];if(t.validator(o))return t.classGroupId}},Ne=e=>e.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?Ae+r:void 0})(),Pe=e=>{let{theme:t,classGroups:n}=e;return Fe(n,t)},Fe=(e,t)=>{let n=De();for(let r in e){let i=e[r];Ie(i,n,r,t)}return n},Ie=(e,t,n,r)=>{let i=e.length;for(let a=0;a<i;a++){let i=e[a];Le(i,t,n,r)}},Le=(e,t,n,r)=>{if(typeof e==`string`){Re(e,t,n);return}if(typeof e==`function`){ze(e,t,n,r);return}Be(e,t,n,r)},Re=(e,t,n)=>{let r=e===``?t:Ve(t,e);r.classGroupId=n},ze=(e,t,n,r)=>{if(He(e)){Ie(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(Ee(n,e))},Be=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e<a;e++){let[a,o]=i[e];Ie(o,Ve(t,a),n,r)}},Ve=(e,t)=>{let n=e,r=t.split(Oe),i=r.length;for(let e=0;e<i;e++){let t=r[e],i=n.nextPart.get(t);i||(i=De(),n.nextPart.set(t,i)),n=i}return n},He=e=>`isThemeGetter`in e&&e.isThemeGetter===!0,Ue=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},We=`!`,Ge=`:`,Ke=[],qe=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),Je=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;s<o;s++){let o=e[s];if(n===0&&r===0){if(o===Ge){t.push(e.slice(i,s)),i=s+1;continue}if(o===`/`){a=s;continue}}o===`[`?n++:o===`]`?n--:o===`(`?r++:o===`)`&&r--}let s=t.length===0?e:e.slice(i),c=s,l=!1;s.endsWith(We)?(c=s.slice(0,-1),l=!0):s.startsWith(We)&&(c=s.slice(1),l=!0);let u=a&&a>i?a-i:void 0;return qe(t,l,c,u)};if(t){let e=t+Ge,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):qe(Ke,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},Ye=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i<e.length;i++){let a=e[i],o=a[0]===`[`,s=t.has(a);o||s?(r.length>0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},Xe=e=>({cache:Ue(e.cacheSize),parseClassName:Je(e),sortModifiers:Ye(e),postfixLookupClassGroupIds:Ze(e),...je(e)}),Ze=e=>{let t=Object.create(null),n=e.postfixLookupClassGroups;if(n)for(let e=0;e<n.length;e++)t[n[e]]=!0;return t},Qe=/\s+/,$e=(e,t)=>{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a,postfixLookupClassGroupIds:o}=t,s=[],c=e.trim().split(Qe),l=``;for(let e=c.length-1;e>=0;--e){let t=c[e],{isExternal:u,modifiers:d,hasImportantModifier:f,baseClassName:p,maybePostfixModifierPosition:m}=n(t);if(u){l=t+(l.length>0?` `+l:l);continue}let h=!!m,g;if(h){g=r(p.substring(0,m));let e=g&&o[g]?r(p):void 0;e&&e!==g&&(g=e,h=!1)}else g=r(p);if(!g){if(!h){l=t+(l.length>0?` `+l:l);continue}if(g=r(p),!g){l=t+(l.length>0?` `+l:l);continue}h=!1}let _=d.length===0?``:d.length===1?d[0]:a(d).join(`:`),v=f?_+We:_,y=v+g;if(s.indexOf(y)>-1)continue;s.push(y);let b=i(g,h);for(let e=0;e<b.length;++e){let t=b[e];s.push(v+t)}l=t+(l.length>0?` `+l:l)}return l},et=(...e)=>{let t=0,n,r,i=``;for(;t<e.length;)(n=e[t++])&&(r=tt(n))&&(i&&(i+=` `),i+=r);return i},tt=e=>{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r<e.length;r++)e[r]&&(t=tt(e[r]))&&(n&&(n+=` `),n+=t);return n},nt=(e,...t)=>{let n,r,i,a,o=o=>(n=Xe(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=$e(e,n);return i(e,a),a};return a=o,(...e)=>a(et(...e))},rt=[],G=e=>{let t=t=>t[e]||rt;return t.isThemeGetter=!0,t},it=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,at=/^\((?:(\w[\w-]*):)?(.+)\)$/i,ot=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,st=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,ct=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,lt=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,ut=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,dt=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ft=e=>ot.test(e),K=e=>!!e&&!Number.isNaN(Number(e)),pt=e=>!!e&&Number.isInteger(Number(e)),mt=e=>e.endsWith(`%`)&&K(e.slice(0,-1)),ht=e=>st.test(e),gt=()=>!0,_t=e=>ct.test(e)&&!lt.test(e),vt=()=>!1,yt=e=>ut.test(e),bt=e=>dt.test(e),xt=e=>!q(e)&&!J(e),St=e=>e.startsWith(`@container`)&&(e[10]===`/`&&e[11]!==void 0||e[11]===`s`&&e[16]!==void 0&&e.startsWith(`-size/`,10)||e[11]===`n`&&e[18]!==void 0&&e.startsWith(`-normal/`,10)),Ct=e=>Rt(e,Ht,vt),q=e=>it.test(e),wt=e=>Rt(e,Ut,_t),Tt=e=>Rt(e,Wt,K),Et=e=>Rt(e,Kt,gt),Dt=e=>Rt(e,Gt,vt),Ot=e=>Rt(e,Bt,vt),kt=e=>Rt(e,Vt,bt),At=e=>Rt(e,qt,yt),J=e=>at.test(e),jt=e=>zt(e,Ut),Mt=e=>zt(e,Gt),Nt=e=>zt(e,Bt),Pt=e=>zt(e,Ht),Ft=e=>zt(e,Vt),It=e=>zt(e,qt,!0),Lt=e=>zt(e,Kt,!0),Rt=(e,t,n)=>{let r=it.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},zt=(e,t,n=!1)=>{let r=at.exec(e);return r?r[1]?t(r[1]):n:!1},Bt=e=>e===`position`||e===`percentage`,Vt=e=>e===`image`||e===`url`,Ht=e=>e===`length`||e===`size`||e===`bg-size`,Ut=e=>e===`length`,Wt=e=>e===`number`,Gt=e=>e===`family-name`,Kt=e=>e===`number`||e===`weight`,qt=e=>e===`shadow`,Jt=nt(()=>{let e=G(`color`),t=G(`font`),n=G(`text`),r=G(`font-weight`),i=G(`tracking`),a=G(`leading`),o=G(`breakpoint`),s=G(`container`),c=G(`spacing`),l=G(`radius`),u=G(`shadow`),d=G(`inset-shadow`),f=G(`text-shadow`),p=G(`drop-shadow`),m=G(`blur`),h=G(`perspective`),g=G(`aspect`),_=G(`ease`),v=G(`animate`),y=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],b=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],x=()=>[...b(),J,q],S=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],C=()=>[`auto`,`contain`,`none`],w=()=>[J,q,c],T=()=>[ft,`full`,`auto`,...w()],E=()=>[pt,`none`,`subgrid`,J,q],D=()=>[`auto`,{span:[`full`,pt,J,q]},pt,J,q],O=()=>[pt,`auto`,J,q],k=()=>[`auto`,`min`,`max`,`fr`,J,q],A=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],j=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],M=()=>[`auto`,...w()],N=()=>[ft,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...w()],ee=()=>[ft,`screen`,`full`,`dvw`,`lvw`,`svw`,`min`,`max`,`fit`,...w()],te=()=>[ft,`screen`,`full`,`lh`,`dvh`,`lvh`,`svh`,`min`,`max`,`fit`,...w()],P=()=>[e,J,q],ne=()=>[...b(),Nt,Ot,{position:[J,q]}],re=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],F=()=>[`auto`,`cover`,`contain`,Pt,Ct,{size:[J,q]}],I=()=>[mt,jt,wt],L=()=>[``,`none`,`full`,l,J,q],R=()=>[``,K,jt,wt],ie=()=>[`solid`,`dashed`,`dotted`,`double`],ae=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],z=()=>[K,mt,Nt,Ot],B=()=>[``,`none`,m,J,q],V=()=>[`none`,K,J,q],oe=()=>[`none`,K,J,q],se=()=>[K,J,q],H=()=>[ft,`full`,...w()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[ht],breakpoint:[ht],color:[gt],container:[ht],"drop-shadow":[ht],ease:[`in`,`out`,`in-out`],font:[xt],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[ht],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[ht],shadow:[ht],spacing:[`px`,K],text:[ht],"text-shadow":[ht],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,ft,q,J,g]}],container:[`container`],"container-type":[{"@container":[``,`normal`,`size`,J,q]}],"container-named":[St],columns:[{columns:[K,q,J,s]}],"break-after":[{"break-after":y()}],"break-before":[{"break-before":y()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:x()}],overflow:[{overflow:S()}],"overflow-x":[{"overflow-x":S()}],"overflow-y":[{"overflow-y":S()}],overscroll:[{overscroll:C()}],"overscroll-x":[{"overscroll-x":C()}],"overscroll-y":[{"overscroll-y":C()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:T()}],"inset-x":[{"inset-x":T()}],"inset-y":[{"inset-y":T()}],start:[{"inset-s":T(),start:T()}],end:[{"inset-e":T(),end:T()}],"inset-bs":[{"inset-bs":T()}],"inset-be":[{"inset-be":T()}],top:[{top:T()}],right:[{right:T()}],bottom:[{bottom:T()}],left:[{left:T()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[pt,`auto`,J,q]}],basis:[{basis:[ft,`full`,`auto`,s,...w()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[K,ft,`auto`,`initial`,`none`,q]}],grow:[{grow:[``,K,J,q]}],shrink:[{shrink:[``,K,J,q]}],order:[{order:[pt,`first`,`last`,`none`,J,q]}],"grid-cols":[{"grid-cols":E()}],"col-start-end":[{col:D()}],"col-start":[{"col-start":O()}],"col-end":[{"col-end":O()}],"grid-rows":[{"grid-rows":E()}],"row-start-end":[{row:D()}],"row-start":[{"row-start":O()}],"row-end":[{"row-end":O()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":k()}],"auto-rows":[{"auto-rows":k()}],gap:[{gap:w()}],"gap-x":[{"gap-x":w()}],"gap-y":[{"gap-y":w()}],"justify-content":[{justify:[...A(),`normal`]}],"justify-items":[{"justify-items":[...j(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...j()]}],"align-content":[{content:[`normal`,...A()]}],"align-items":[{items:[...j(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...j(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":A()}],"place-items":[{"place-items":[...j(),`baseline`]}],"place-self":[{"place-self":[`auto`,...j()]}],p:[{p:w()}],px:[{px:w()}],py:[{py:w()}],ps:[{ps:w()}],pe:[{pe:w()}],pbs:[{pbs:w()}],pbe:[{pbe:w()}],pt:[{pt:w()}],pr:[{pr:w()}],pb:[{pb:w()}],pl:[{pl:w()}],m:[{m:M()}],mx:[{mx:M()}],my:[{my:M()}],ms:[{ms:M()}],me:[{me:M()}],mbs:[{mbs:M()}],mbe:[{mbe:M()}],mt:[{mt:M()}],mr:[{mr:M()}],mb:[{mb:M()}],ml:[{ml:M()}],"space-x":[{"space-x":w()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":w()}],"space-y-reverse":[`space-y-reverse`],size:[{size:N()}],"inline-size":[{inline:[`auto`,...ee()]}],"min-inline-size":[{"min-inline":[`auto`,...ee()]}],"max-inline-size":[{"max-inline":[`none`,...ee()]}],"block-size":[{block:[`auto`,...te()]}],"min-block-size":[{"min-block":[`auto`,...te()]}],"max-block-size":[{"max-block":[`none`,...te()]}],w:[{w:[s,`screen`,...N()]}],"min-w":[{"min-w":[s,`screen`,`none`,...N()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...N()]}],h:[{h:[`screen`,`lh`,...N()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...N()]}],"max-h":[{"max-h":[`screen`,`lh`,...N()]}],"font-size":[{text:[`base`,n,jt,wt]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,Lt,Et]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,mt,q]}],"font-family":[{font:[Mt,Dt,t]}],"font-features":[{"font-features":[q]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,J,q]}],"line-clamp":[{"line-clamp":[K,`none`,J,Tt]}],leading:[{leading:[a,...w()]}],"list-image":[{"list-image":[`none`,J,q]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,J,q]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:P()}],"text-color":[{text:P()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...ie(),`wavy`]}],"text-decoration-thickness":[{decoration:[K,`from-font`,`auto`,J,wt]}],"text-decoration-color":[{decoration:P()}],"underline-offset":[{"underline-offset":[K,`auto`,J,q]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:w()}],"tab-size":[{tab:[pt,J,q]}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,J,q]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,J,q]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:ne()}],"bg-repeat":[{bg:re()}],"bg-size":[{bg:F()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},pt,J,q],radial:[``,J,q],conic:[pt,J,q]},Ft,kt]}],"bg-color":[{bg:P()}],"gradient-from-pos":[{from:I()}],"gradient-via-pos":[{via:I()}],"gradient-to-pos":[{to:I()}],"gradient-from":[{from:P()}],"gradient-via":[{via:P()}],"gradient-to":[{to:P()}],rounded:[{rounded:L()}],"rounded-s":[{"rounded-s":L()}],"rounded-e":[{"rounded-e":L()}],"rounded-t":[{"rounded-t":L()}],"rounded-r":[{"rounded-r":L()}],"rounded-b":[{"rounded-b":L()}],"rounded-l":[{"rounded-l":L()}],"rounded-ss":[{"rounded-ss":L()}],"rounded-se":[{"rounded-se":L()}],"rounded-ee":[{"rounded-ee":L()}],"rounded-es":[{"rounded-es":L()}],"rounded-tl":[{"rounded-tl":L()}],"rounded-tr":[{"rounded-tr":L()}],"rounded-br":[{"rounded-br":L()}],"rounded-bl":[{"rounded-bl":L()}],"border-w":[{border:R()}],"border-w-x":[{"border-x":R()}],"border-w-y":[{"border-y":R()}],"border-w-s":[{"border-s":R()}],"border-w-e":[{"border-e":R()}],"border-w-bs":[{"border-bs":R()}],"border-w-be":[{"border-be":R()}],"border-w-t":[{"border-t":R()}],"border-w-r":[{"border-r":R()}],"border-w-b":[{"border-b":R()}],"border-w-l":[{"border-l":R()}],"divide-x":[{"divide-x":R()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":R()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[...ie(),`hidden`,`none`]}],"divide-style":[{divide:[...ie(),`hidden`,`none`]}],"border-color":[{border:P()}],"border-color-x":[{"border-x":P()}],"border-color-y":[{"border-y":P()}],"border-color-s":[{"border-s":P()}],"border-color-e":[{"border-e":P()}],"border-color-bs":[{"border-bs":P()}],"border-color-be":[{"border-be":P()}],"border-color-t":[{"border-t":P()}],"border-color-r":[{"border-r":P()}],"border-color-b":[{"border-b":P()}],"border-color-l":[{"border-l":P()}],"divide-color":[{divide:P()}],"outline-style":[{outline:[...ie(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[K,J,q]}],"outline-w":[{outline:[``,K,jt,wt]}],"outline-color":[{outline:P()}],shadow:[{shadow:[``,`none`,u,It,At]}],"shadow-color":[{shadow:P()}],"inset-shadow":[{"inset-shadow":[`none`,d,It,At]}],"inset-shadow-color":[{"inset-shadow":P()}],"ring-w":[{ring:R()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:P()}],"ring-offset-w":[{"ring-offset":[K,wt]}],"ring-offset-color":[{"ring-offset":P()}],"inset-ring-w":[{"inset-ring":R()}],"inset-ring-color":[{"inset-ring":P()}],"text-shadow":[{"text-shadow":[`none`,f,It,At]}],"text-shadow-color":[{"text-shadow":P()}],opacity:[{opacity:[K,J,q]}],"mix-blend":[{"mix-blend":[...ae(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":ae()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[K]}],"mask-image-linear-from-pos":[{"mask-linear-from":z()}],"mask-image-linear-to-pos":[{"mask-linear-to":z()}],"mask-image-linear-from-color":[{"mask-linear-from":P()}],"mask-image-linear-to-color":[{"mask-linear-to":P()}],"mask-image-t-from-pos":[{"mask-t-from":z()}],"mask-image-t-to-pos":[{"mask-t-to":z()}],"mask-image-t-from-color":[{"mask-t-from":P()}],"mask-image-t-to-color":[{"mask-t-to":P()}],"mask-image-r-from-pos":[{"mask-r-from":z()}],"mask-image-r-to-pos":[{"mask-r-to":z()}],"mask-image-r-from-color":[{"mask-r-from":P()}],"mask-image-r-to-color":[{"mask-r-to":P()}],"mask-image-b-from-pos":[{"mask-b-from":z()}],"mask-image-b-to-pos":[{"mask-b-to":z()}],"mask-image-b-from-color":[{"mask-b-from":P()}],"mask-image-b-to-color":[{"mask-b-to":P()}],"mask-image-l-from-pos":[{"mask-l-from":z()}],"mask-image-l-to-pos":[{"mask-l-to":z()}],"mask-image-l-from-color":[{"mask-l-from":P()}],"mask-image-l-to-color":[{"mask-l-to":P()}],"mask-image-x-from-pos":[{"mask-x-from":z()}],"mask-image-x-to-pos":[{"mask-x-to":z()}],"mask-image-x-from-color":[{"mask-x-from":P()}],"mask-image-x-to-color":[{"mask-x-to":P()}],"mask-image-y-from-pos":[{"mask-y-from":z()}],"mask-image-y-to-pos":[{"mask-y-to":z()}],"mask-image-y-from-color":[{"mask-y-from":P()}],"mask-image-y-to-color":[{"mask-y-to":P()}],"mask-image-radial":[{"mask-radial":[J,q]}],"mask-image-radial-from-pos":[{"mask-radial-from":z()}],"mask-image-radial-to-pos":[{"mask-radial-to":z()}],"mask-image-radial-from-color":[{"mask-radial-from":P()}],"mask-image-radial-to-color":[{"mask-radial-to":P()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":b()}],"mask-image-conic-pos":[{"mask-conic":[K]}],"mask-image-conic-from-pos":[{"mask-conic-from":z()}],"mask-image-conic-to-pos":[{"mask-conic-to":z()}],"mask-image-conic-from-color":[{"mask-conic-from":P()}],"mask-image-conic-to-color":[{"mask-conic-to":P()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:ne()}],"mask-repeat":[{mask:re()}],"mask-size":[{mask:F()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,J,q]}],filter:[{filter:[``,`none`,J,q]}],blur:[{blur:B()}],brightness:[{brightness:[K,J,q]}],contrast:[{contrast:[K,J,q]}],"drop-shadow":[{"drop-shadow":[``,`none`,p,It,At]}],"drop-shadow-color":[{"drop-shadow":P()}],grayscale:[{grayscale:[``,K,J,q]}],"hue-rotate":[{"hue-rotate":[K,J,q]}],invert:[{invert:[``,K,J,q]}],saturate:[{saturate:[K,J,q]}],sepia:[{sepia:[``,K,J,q]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,J,q]}],"backdrop-blur":[{"backdrop-blur":B()}],"backdrop-brightness":[{"backdrop-brightness":[K,J,q]}],"backdrop-contrast":[{"backdrop-contrast":[K,J,q]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,K,J,q]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[K,J,q]}],"backdrop-invert":[{"backdrop-invert":[``,K,J,q]}],"backdrop-opacity":[{"backdrop-opacity":[K,J,q]}],"backdrop-saturate":[{"backdrop-saturate":[K,J,q]}],"backdrop-sepia":[{"backdrop-sepia":[``,K,J,q]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":w()}],"border-spacing-x":[{"border-spacing-x":w()}],"border-spacing-y":[{"border-spacing-y":w()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,J,q]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[K,`initial`,J,q]}],ease:[{ease:[`linear`,`initial`,_,J,q]}],delay:[{delay:[K,J,q]}],animate:[{animate:[`none`,v,J,q]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[h,J,q]}],"perspective-origin":[{"perspective-origin":x()}],rotate:[{rotate:V()}],"rotate-x":[{"rotate-x":V()}],"rotate-y":[{"rotate-y":V()}],"rotate-z":[{"rotate-z":V()}],scale:[{scale:oe()}],"scale-x":[{"scale-x":oe()}],"scale-y":[{"scale-y":oe()}],"scale-z":[{"scale-z":oe()}],"scale-3d":[`scale-3d`],skew:[{skew:se()}],"skew-x":[{"skew-x":se()}],"skew-y":[{"skew-y":se()}],transform:[{transform:[J,q,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:x()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:H()}],"translate-x":[{"translate-x":H()}],"translate-y":[{"translate-y":H()}],"translate-z":[{"translate-z":H()}],"translate-none":[`translate-none`],zoom:[{zoom:[pt,J,q]}],accent:[{accent:P()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:P()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,J,q]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scrollbar-thumb-color":[{"scrollbar-thumb":P()}],"scrollbar-track-color":[{"scrollbar-track":P()}],"scrollbar-gutter":[{"scrollbar-gutter":[`auto`,`stable`,`both`]}],"scrollbar-w":[{scrollbar:[`auto`,`thin`,`none`]}],"scroll-m":[{"scroll-m":w()}],"scroll-mx":[{"scroll-mx":w()}],"scroll-my":[{"scroll-my":w()}],"scroll-ms":[{"scroll-ms":w()}],"scroll-me":[{"scroll-me":w()}],"scroll-mbs":[{"scroll-mbs":w()}],"scroll-mbe":[{"scroll-mbe":w()}],"scroll-mt":[{"scroll-mt":w()}],"scroll-mr":[{"scroll-mr":w()}],"scroll-mb":[{"scroll-mb":w()}],"scroll-ml":[{"scroll-ml":w()}],"scroll-p":[{"scroll-p":w()}],"scroll-px":[{"scroll-px":w()}],"scroll-py":[{"scroll-py":w()}],"scroll-ps":[{"scroll-ps":w()}],"scroll-pe":[{"scroll-pe":w()}],"scroll-pbs":[{"scroll-pbs":w()}],"scroll-pbe":[{"scroll-pbe":w()}],"scroll-pt":[{"scroll-pt":w()}],"scroll-pr":[{"scroll-pr":w()}],"scroll-pb":[{"scroll-pb":w()}],"scroll-pl":[{"scroll-pl":w()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,J,q]}],fill:[{fill:[`none`,...P()]}],"stroke-w":[{stroke:[K,jt,wt,Tt]}],stroke:[{stroke:[`none`,...P()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{"container-named":[`container-type`],overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`inset-bs`,`inset-be`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pbs`,`pbe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mbs`,`mbe`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},postfixLookupClassGroups:[`container-type`],orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}});function Y(...e){return Jt(Se(e))}var Yt=W(`relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current`,{variants:{variant:{default:`bg-card text-card-foreground`,destructive:`bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current`}},defaultVariants:{variant:`default`}});function Xt({className:e,variant:t,...n}){return(0,r.jsx)(`div`,{"data-slot":`alert`,role:`alert`,className:Y(Yt({variant:t}),e),...n})}function Zt({className:e,...t}){return(0,r.jsx)(`div`,{"data-slot":`alert-title`,className:Y(`col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight`,e),...t})}function Qt({className:e,...t}){return(0,r.jsx)(`div`,{"data-slot":`alert-description`,className:Y(`col-start-2 grid justify-items-start gap-1 text-sm text-muted-foreground [&_p]:leading-relaxed`,e),...t})}var $t=t.forwardRef(({className:e,type:t,...n},i)=>(0,r.jsx)(`input`,{type:t,ref:i,"data-slot":`input`,className:Y(`h-9 w-full min-w-0 rounded-md border border-input bg-transparent text-foreground px-3 py-0 text-sm shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 dark:bg-input/30`,`focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50`,`aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40`,e),...n}));$t.displayName=`Input`;function en({...e}){return(0,r.jsx)(a.DropdownMenu.Root,{"data-slot":`dropdown-menu`,...e})}function tn({...e}){return(0,r.jsx)(a.DropdownMenu.Trigger,{"data-slot":`dropdown-menu-trigger`,...e})}function nn({className:e,sideOffset:t=4,...n}){return(0,r.jsx)(a.DropdownMenu.Portal,{children:(0,r.jsx)(a.DropdownMenu.Content,{"data-slot":`dropdown-menu-content`,sideOffset:t,className:Y(`z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,e),...n})})}function rn({className:e,inset:t,variant:n=`default`,...i}){return(0,r.jsx)(a.DropdownMenu.Item,{"data-slot":`dropdown-menu-item`,"data-inset":t,"data-variant":n,className:Y(`relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!`,e),...i})}function an({className:e,children:t,checked:n,...o}){return(0,r.jsxs)(a.DropdownMenu.CheckboxItem,{"data-slot":`dropdown-menu-checkbox-item`,className:Y(`relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),checked:n,...o,children:[(0,r.jsx)(`span`,{className:`pointer-events-none absolute left-2 flex size-3.5 items-center justify-center`,children:(0,r.jsx)(a.DropdownMenu.ItemIndicator,{children:(0,r.jsx)(i.CheckIcon,{className:`size-4`})})}),t]})}function on({className:e,inset:t,...n}){return(0,r.jsx)(a.DropdownMenu.Label,{"data-slot":`dropdown-menu-label`,"data-inset":t,className:Y(`px-2 py-1.5 text-sm font-medium data-[inset]:pl-8`,e),...n})}function sn({className:e,...t}){return(0,r.jsx)(a.DropdownMenu.Separator,{"data-slot":`dropdown-menu-separator`,className:Y(`-mx-1 my-1 h-px bg-border`,e),...t})}function cn({...e}){return(0,r.jsx)(a.DropdownMenu.Sub,{"data-slot":`dropdown-menu-sub`,...e})}function ln({className:e,inset:t,children:n,...o}){return(0,r.jsxs)(a.DropdownMenu.SubTrigger,{"data-slot":`dropdown-menu-sub-trigger`,"data-inset":t,className:Y(`flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[inset]:pl-8 data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground`,e),...o,children:[n,(0,r.jsx)(i.ChevronRightIcon,{className:`ml-auto size-4`})]})}function un({className:e,...t}){return(0,r.jsx)(a.DropdownMenu.SubContent,{"data-slot":`dropdown-menu-sub-content`,className:Y(`z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,e),...t})}function dn(e){return(e??``).replace(`!`,``)}var fn=new Set([`Int`,`Short`,`Byte`,`BigInt`]),pn=new Set([`Float`,`Decimal`]),mn=new Set([`DateTime`,`DateTimeOffset`]),hn=new Set([`BigInt`,`Decimal`]);function gn(e){return fn.has(dn(e))}function _n(e){let t=dn(e);return fn.has(t)||pn.has(t)}function vn(e){return hn.has(dn(e))}function yn(e){return mn.has(dn(e))}function bn(e){return dn(e)===`String`}function xn(e,t){let n=e.trim();if(n===``||n===`-`||n===`+`||!(gn(t)?/^[+-]?\d+$/.test(n):/^[+-]?(?:(?:\d+\.?\d*)|(?:\.\d+))(?:[eE][+-]?\d+)?$/.test(n)))return null;if(vn(t))return n;let r=Number(n);return Number.isFinite(r)?r:null}function Sn(e,t){if(e==null)return null;if(vn(t))return String(e);if(gn(t)){let t=typeof e==`number`?e:Number(e);return Number.isFinite(t)?Math.trunc(t):e}switch(dn(t)){case`Float`:{let t=typeof e==`number`?e:Number(e);return Number.isFinite(t)?t:e}case`Boolean`:return typeof e==`boolean`?e:e===`true`||e===1?!0:e===`false`||e===0?!1:!!e;default:return String(e)}}function Cn(e){return e?.paramType?.replace(`!`,``)??`String`}function wn(e){return(e.sourceColumnNames?.length??0)>1}function Tn(e,t){let n=(e.sourceColumnNames??[]).indexOf(t);return n<0?null:(e.destinationColumnNames??[])[n]??null}function En(e,t,n,r=`fk`){if(!e)return null;let i=t.sourceColumnNames??[],a=t.destinationColumnNames??[];if(i.length===0||i.length!==a.length)return null;let o=new Map((n?.columns??[]).map(e=>[e.name,e])),s=[],c={},l=[];for(let t=0;t<i.length;t++){let n=i[t],u=a[t];if(!(n in e))return null;let d=Cn(o.get(u)),f=`${r}_${u}`;c[f]=Sn(e[n],d),l.push(`$${f}: ${d}`),s.push(`{${u}: {_eq: $${f}}}`)}return{filterText:s.length===1?s[0]:`{and: [${s.join(`, `)}]}`,variables:c,params:l}}var Dn=`::`;function On(e){return e==null?``:encodeURIComponent(String(e))}function kn(e){if(e===``)return null;try{return decodeURIComponent(e)}catch{return e}}function An(e){return e.map(On).join(Dn)}function jn(e,t){let n=t<=1?[e]:e.split(Dn);if(n.length!==t)throw Error(`Route id '${e}' has ${n.length} part(s) but ${t} were expected.`);return n.map(e=>e===``?``:kn(e)??``)}function Mn(e,t,n){let r=t.primaryKeys??[];return r.length===0?`row-${n}`:An(r.map(t=>e?.[t]))}function Nn(e,t){let n=t.primaryKeys??[];if(n.length===0||e==null)return null;let r={};for(let t of n){if(!(t in e))return null;r[t]=e[t]}return r}function Pn(e,t){let n=Nn(e,t);if(!n)return null;let r=new Map((t.columns??[]).map(e=>[e.name,e])),i=[],a={},o=[];for(let e of t.primaryKeys??[]){let t=Cn(r.get(e)),s=`pk_${e}`;a[s]=Sn(n[e],t),o.push(`$${s}: ${t}`),i.push(`{${e}: {_eq: $${s}}}`)}return{filterText:i.length===1?i[0]:`{and: [${i.join(`, `)}]}`,variables:a,params:o}}function Fn(e,t){let n=t.primaryKeys??[];return n.length===0?``:An(n.map(t=>e[t]))}function In(e,t){let n=t.primaryKeys??[];if(n.length===0)return null;let r=n.length===1?[e]:e.split(Dn);if(r.length!==n.length)return null;let i={};for(let e=0;e<n.length;e++){let t=kn(r[e]);if(t===null)return null;i[n[e]]=t}return i}function Ln(e,t,n){if(!e)return;let r=e.filter(e=>e.destinationTable===t);if(r.length!==0){if(r.length===1)return r[0];if(n)return r.find(e=>e.destinationColumnNames?.[0]===n)}}function Rn(e){return e.fieldName??e.destinationTable}var zn=new Set([`binary`,`varbinary`,`image`,`blob`,`tinyblob`,`mediumblob`,`longblob`,`bytea`]),Bn=new Set([`text`,`ntext`,`xml`]),Vn=new Set([`json`,`jsonb`]);function Hn(e){return zn.has(e.toLowerCase().replace(/\(.*\)/,``))}function Un(e){return Vn.has(e.toLowerCase().replace(/\(.*\)/,``))}function Wn(e){return Un(e.dbType)||e.paramType===`JSON`}function Gn(e){let t=e.toLowerCase(),n=t.replace(/\(.*\)/,``);return!!(Bn.has(n)||t.includes(`(max)`))}function Kn(e){return typeof e.isLargeValue==`boolean`?e.isLargeValue:Hn(e.dbType)||Gn(e.dbType)}function qn(e,t){if(!e)return`text`;if(t&&Hn(t))return`binary`;if(t&&Un(t))return`json`;let n=e.trimStart();if(n.startsWith(`{`)&&n.endsWith(`}`)||n.startsWith(`[`)&&n.endsWith(`]`))try{return JSON.parse(n),`json`}catch{}return n.startsWith(`<?xml`)||n.startsWith(`<`)&&n.includes(`</`)&&n.endsWith(`>`)?`xml`:/^[aOsidb]:\d+[:{;]/.test(n)?`php-serialized`:e.length>200||e.includes(`
75
- `)?`longtext`:`text`}function Jn(e){return e.length<=80?e:e.slice(0,80)+`...`}function Yn(e){let t=Math.ceil(e.length*3/4);return t<1024?`${t} bytes`:t<1048576?`${(t/1024).toFixed(1)} KB`:`${(t/1048576).toFixed(1)} MB`}function Xn(e){let t={kind:`unknown`,mime:`application/octet-stream`,extension:`.bin`},n;try{n=atob(e.slice(0,24))}catch{return t}let r=e=>n.charCodeAt(e);return n.length>=4&&r(0)===137&&n.slice(1,4)===`PNG`?{kind:`image`,mime:`image/png`,extension:`.png`}:n.length>=3&&r(0)===255&&r(1)===216&&r(2)===255?{kind:`image`,mime:`image/jpeg`,extension:`.jpg`}:n.slice(0,4)===`GIF8`?{kind:`image`,mime:`image/gif`,extension:`.gif`}:n.slice(0,4)===`RIFF`&&n.slice(8,12)===`WEBP`?{kind:`image`,mime:`image/webp`,extension:`.webp`}:n.slice(0,4)===`%PDF`?{kind:`pdf`,mime:`application/pdf`,extension:`.pdf`}:t}function Zn(e,t){return`data:${t};base64,${e}`}var Qn=[`_eq`,`_neq`,`_gt`,`_gte`,`_lt`,`_lte`,`_between`,`_null`],$n={String:[`_eq`,`_neq`,`_contains`,`_starts_with`,`_ends_with`,`_null`],Int:Qn,Float:Qn,Short:Qn,Byte:Qn,BigInt:Qn,Decimal:Qn,Boolean:[`_eq`,`_null`],DateTime:Qn,DateTimeOffset:Qn},er=new Set([`DateTime`,`DateTimeOffset`]),tr=/^[_A-Za-z][_0-9A-Za-z]*$/,nr=/^[_A-Za-z][_0-9A-Za-z]*!?$/,rr=new Set(Object.values($n).flat());function ir(e){return typeof e==`string`&&tr.test(e)}function X(e,t){if(!ir(e))throw Error(`Invalid GraphQL ${t}: ${String(e)}`)}function ar(e){return X(e.graphQlName,`table name`),`TableFilter${e.graphQlName}Input`}function or(e){return typeof e==`string`&&nr.test(e)}function sr(e,t){return typeof e==`string`&&cr(t).includes(e)}function cr(e){return $n[e.replace(`!`,``)]??$n.String}function lr(){return{variables:{},param:``,filterText:``,error:null}}function ur(e){return{variables:{},param:``,filterText:``,error:e}}function dr(e){if(!e)return lr();let t;try{t=JSON.parse(e)}catch{return ur(`The filter in the URL is not valid JSON.`)}if(!Array.isArray(t)||t.length<4)return ur(`The filter in the URL is malformed.`);let[n,r,i,a]=t;return ir(n)?or(a)?sr(r,a)?{variables:{filter:i},param:`, $filter: ${a}`,filterText:`{${n}: {${r}: $filter} }`,error:null}:ur(`Filter operator '${String(r)}' is not supported for ${String(a)} column '${String(n)}'.`):ur(`Filter type '${String(a)}' is not a valid type name.`):ur(`Filter column '${String(n)}' is not a valid column name.`)}function fr(e,t,n=0){return Mn(e,t,n)}function pr(e){let t=e.replace(`!`,``);switch(t){case`Int`:case`Float`:case`Short`:case`Byte`:case`Boolean`:case`BigInt`:case`Decimal`:case`DateTime`:case`DateTimeOffset`:return t;default:return`String`}}var mr=/^\d{4}-\d{2}-\d{2}$/;function hr(e){let t=e<=0?`+`:`-`,n=Math.abs(e);return`${t}${String(Math.floor(n/60)).padStart(2,`0`)}:${String(n%60).padStart(2,`0`)}`}function gr(e,t,n,r){let i=`${e}T${t===`start`?`00:00:00.000`:`23:59:59.999`}`;return n===`DateTimeOffset`?`${i}${hr(r??new Date(`${e}T00:00:00`).getTimezoneOffset())}`:i}function _r(e,t,n,r){if(!er.has(n))return{operator:e,value:t};let i=e=>gr(String(e),`start`,n,r),a=e=>gr(String(e),`end`,n,r),o=e=>typeof e==`string`&&mr.test(e);if(e===`_between`){let n=Array.isArray(t)?t:null;return!n||n.length!==2?{operator:e,value:t}:{operator:e,value:[o(n[0])?i(n[0]):n[0],o(n[1])?a(n[1]):n[1]]}}if(!o(t))return{operator:e,value:t};switch(e){case`_eq`:return{operator:`_between`,value:[i(t),a(t)]};case`_neq`:return{operator:`_nbetween`,value:[i(t),a(t)]};case`_gt`:case`_lte`:return{operator:e,value:a(t)};default:return{operator:e,value:i(t)}}}function vr(e,t){let n={},r=[],i=[],a=[];for(let o=0;o<e.length;o++){let s=e[o],c=s.value;if(c.value===void 0||c.value===null||c.value===``)continue;let l=t.columns.find(e=>e.name===s.id);if(!l){a.push(`Column '${String(s.id)}' is not on this table.`);continue}if(!ir(s.id)){a.push(`Column '${String(s.id)}' is not a valid column name.`);continue}if(!sr(c.operator,l.paramType)){a.push(`Operator '${String(c.operator)}' is not supported for column '${s.id}'.`);continue}let u=`cf_${s.id}_${o}`,d=pr(l.paramType);if(c.operator===`_null`){i.push(`{${s.id}: {_null: ${c.value?`true`:`false`}}}`);continue}let f=_r(c.operator,c.value,d);if(f.operator===`_between`||f.operator===`_nbetween`){let e=f.value;if(!Array.isArray(e)||e.length!==2){a.push(`The range filter on column '${s.id}' needs exactly two bounds.`);continue}let t=`${u}_lo`,o=`${u}_hi`;n[t]=Sn(e[0],d),n[o]=Sn(e[1],d),r.push(`$${t}: ${d}`,`$${o}: ${d}`),i.push(`{${s.id}: {${f.operator}: [$${t}, $${o}]}}`);continue}n[u]=Sn(f.value,d),r.push(`$${u}: ${d}`),i.push(`{${s.id}: {${f.operator}: $${u}}}`)}return{variables:n,params:r,filterTexts:i,errors:a}}function yr(e,t,n){let r=dr(t),i=vr(n,e);return r.error?[r.error,...i.errors]:i.errors}function br(e){return e.length===0?``:JSON.stringify(e.map(e=>[e.id,e.value.operator,e.value.value]))}function xr(e){try{if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(Sr).map(([e,t,n])=>({id:e,value:{operator:t,value:n}})):[]}catch{return[]}}function Sr(e){if(!Array.isArray(e)||e.length!==3)return!1;let[t,n]=e;return ir(t)&&typeof n==`string`&&rr.has(n)}function Cr(e){return wr(e)[0]?.gqlType??`Int`}function wr(e){let t=e.primaryKeys??[];if(t.length===0)return[];let n=new Map(e.columns.map(e=>[e.name,e]));return t.map(e=>({name:e,gqlType:n.get(e)?.paramType?.replace(`!`,``)??`String`}))}function Tr(e,t=()=>!0){let n=e.indexes??[];if(n.length===0)return null;let r=new Map(e.columns.map(e=>[e.name,e])),i=e=>{let n=e.columns[0],i=n?r.get(n):void 0;return i&&t(i)?i.name:null};for(let e of[e=>e.isClustered,e=>e.isUnique,()=>!0])for(let t of n){if(!e(t))continue;let n=i(t);if(n)return n}return null}function Er(e,t){if(wr(t).length<=1)return{id:Sn(kn(e),Cr(t))};let n=In(e,t);return n?Pn(n,t)?.variables??{}:{}}function Dr(e,t,n){X(e.name,`single-row table name`);for(let e of n)X(e,`single-row selection field`);let r=t.params.length>0?`(${t.params.join(`, `)})`:``;return`query GetSingleRow_${e.name}${r} { value: ${e.name}(filter: ${t.filterText}) { data { ${n.join(` `)} } } }`}function Or(e,t,n){X(e.name,`rows-by-pk table name`);for(let e of n)X(e,`rows-by-pk selection field`);let r=e.primaryKeys??[];if(r.length===0||t.length===0||n.length===0)return null;for(let e of r)X(e,`rows-by-pk key column`);let i=new Map((e.columns??[]).map(e=>[e.name,e])),a=[],o={},s=[];t.forEach((e,t)=>{let n=[];for(let s of r){let r=Cn(i.get(s)),c=`pk${t}_${s}`;o[c]=Sn(e[s],r),a.push(`$${c}: ${r}`),n.push(`{${s}: {_eq: $${c}}}`)}s.push(n.length===1?n[0]:`{and: [${n.join(`, `)}]}`)});let c=s.length===1?s[0]:`{or: [${s.join(`, `)}]}`;return{query:`query GetRowsByPk_${e.name}(${a.join(`, `)}) { value: ${e.name}(filter: ${c} limit: ${t.length}) { data { ${n.join(` `)} } } }`,variables:o}}var kr=11;function Ar(e,t){return t.map(t=>{let n=e.findTable(t.destinationTable),r=n?.labelColumn??`id`,i=[...n?.primaryKeys?.length?n.primaryKeys:[`id`]];return r&&!i.includes(r)&&i.push(r),`${t.fieldName??t.destinationTable}(limit: ${kr}) { total data { ${i.join(` `)} } }`}).join(` `)}function jr(e,t,n,r){return`query Get${e.name}($sort: [${e.graphQlName}SortEnum!], $limit: Int, $offset: Int ${t}) { ${e.name}(sort: $sort limit: $limit offset: $offset ${n}) { total offset limit data {${r}}}}`}function Mr(e,t,n){let r=new Set;return e.columns.filter(e=>e?.joinTable===void 0).filter(e=>e.isPrimaryKey||!Kn(e)).map(e=>{let r=n.singleJoins.find(t=>t.sourceColumnNames?.[0]===e.name);if(!r)return e;let i=t.findTable(r.destinationTable)?.labelColumn??`id`;return{...e,joinTable:r,joinLabelColumn:i}}).map(e=>{if(e?.joinTable){r.add(e.name);let n=t.findTable(e.joinTable.destinationTable),i=n?.primaryKeys?.length?n.primaryKeys:e.joinTable.destinationColumnNames,a=e.joinLabelColumn??`id`,o=a&&!i.includes(a)?` label: ${a}`:``,s=e.joinTable.fieldName??e.joinTable.destinationTable;return i.length===1?`${e.name} ${s} { id: ${i[0]}${o} }`:`${e.name} ${s} { ${i.join(` `)}${o} }`}return e.name}).join(` `)}function Nr(e,t,n,r,i,a,o,s=!1){let c=Hr(e,t,a,o);if(c&&Rr(c.childJoin)){let i=c.childJoin.destinationColumnNames[0],a=`, $id: ${wr(c.parentTable)[0]?.gqlType??`Int`}`,o=`filter: { ${i}: { _eq: $id } }`,l=s?``:Ar(t,n.multiJoins.filter(e=>!zr(e,c.childJoin)));return jr(e,a,o,l?`${r} ${l}`:r)}if(c){let t=`${c.childField}(limit: $limit offset: $offset sort: $sort) { total offset limit data {${i}} }`,n=wr(c.parentTable);if(n.length===0)return null;let r,a;if(n.length===1){let e=n[0].name;r=`, $id: ${n[0].gqlType}`,a=`{ ${e}: { _eq: $id}}`}else r=`, ${n.map(e=>`$pk_${e.name}: ${e.gqlType}`).join(`, `)}`,a=`{and: [${n.map(e=>`{${e.name}: {_eq: $pk_${e.name}}}`).join(`, `)}]}`;return`query Get${e.name}($sort: [${e.graphQlName}SortEnum!], $limit: Int, $offset: Int ${r}) { ${c.parentTable.name}(filter: ${a}) { data { ${t} } } }`}return null}function Pr(e,t,n){let r=wr(t);if(r.length===0)return null;let i,a;if(r.length===1){let e=Cr(t),n=r[0].name;i=`, $id: ${e}`,a=`{ ${n}: { _eq: $id}}`}else i=`, ${r.map(e=>`$pk_${e.name}: ${e.gqlType}`).join(`, `)}`,a=`{and: [${r.map(e=>`{${e.name}: {_eq: $pk_${e.name}}}`).join(`, `)}]}`;return jr(e,i,`filter: ${a}`,n)}function Fr(e,t,n,r){let{param:i,filterText:a}=dr(t),{params:o,filterTexts:s}=vr(n,e);o.length>0&&(i+=o.map(e=>`, ${e}`).join(``));let c=[];return a&&c.push(a),c.push(...s),a=c.length>1?`{and: [${c.join(`, `)}]}`:c.length===1?c[0]:``,jr(e,i,a?`filter: ${a}`:``,r)}function Ir(e){return e.columns.filter(e=>e.isPrimaryKey||!Hn(e.dbType))}function Lr(e,t,n,r,i,a,o,s){if(!e||!t?.data)return null;let c=t.findTable(e.graphQlName);if(!c)return null;let l=s?.fields===`export`,u=l?Ir(e).map(e=>e.name).join(` `):Mr(e,t,c),d=l?``:Ar(t,c.multiJoins),f=d?`${u} ${d}`:u;return i&&(o||a)?Nr(e,t,c,u,f,a,o,l):i&&!a&&!o?Pr(e,c,f):yr(e,n,r).length>0?null:Fr(e,n,r,f)}function Rr(e){return!wn(e)&&e.isPolymorphic!==!0&&(e.destinationColumnNames?.length??0)===1}function zr(e,t){return(e.fieldName??e.destinationTable)===(t.fieldName??t.destinationTable)&&e.destinationTable===t.destinationTable&&(e.destinationColumnNames??[]).join(`\0`)===(t.destinationColumnNames??[]).join(`\0`)&&(e.sourceColumnNames??[]).join(`\0`)===(t.sourceColumnNames??[]).join(`\0`)}var Br={data:[],total:0,offset:0,limit:0};function Vr(e,t,n){let r=(e?.[t])?.data?.[0]?.[n];return!r||!Array.isArray(r.data)?Br:r}function Hr(e,t,n,r){let i=n??t.findTable(e.graphQlName)?.singleJoins.find(e=>e.destinationTable===r)?.destinationTable;if(!i)return null;let a=t.findTable(i);if(!a)return null;let o=Ln(a.multiJoins,e.graphQlName,r);return o?{parentTable:a,childField:Rn(o),childJoin:o}:null}function Ur(e){let t=e.filter(ir);return t.length===0?null:`query GetTableRowCounts { ${t.map(e=>`${e}: ${e}(limit: 1) { total }`).join(` `)} }`}function Wr(e=!0){let{data:r,loading:i,error:a}=U(),o=V(),s=(0,t.useMemo)(()=>r.map(e=>e.name),[r]),c=(0,t.useMemo)(()=>Ur(s),[s]),{data:l,isLoading:u,error:d}=(0,n.useQuery)({queryKey:[`tableRowCounts`,s],queryFn:()=>o.query(c),enabled:e&&!!c&&s.length>0,staleTime:3e5});return{stats:(0,t.useMemo)(()=>{let e={};for(let t of r){let n=l?.[t.name]?.total??null;e[t.name]={columnCount:t.columns.length,rowCount:n,fkCount:t.singleJoins.length,isLoading:u,error:d?d.message:null}}return e},[r,l,u,d]),isLoading:i||u,error:a}}function Gr({kind:e}){return(0,r.jsx)(`span`,{className:`text-muted-foreground/60 italic select-none`,children:e===`null`?`NULL`:`empty`})}var Kr=new Set([`date`,`datetime`,`time`,`relative`,`number`,`percent`,`raw`]);function qr(e){return{param:(e.paramType??``).replace(`!`,``).toLowerCase(),db:(e.dbType??``).toLowerCase()}}function Jr({param:e,db:t}){return e===`date`||t===`date`}function Yr({param:e,db:t}){return e===`datetime`||e===`datetimeoffset`||t.includes(`datetime`)||t===`timestamp`||t===`smalldatetime`}function Xr(e,t){let n=(t?e.metadata?.[t]:void 0)??e.metadata?.[`display-format`];if(typeof n==`string`&&Kr.has(n.toLowerCase()))return n.toLowerCase();let r=qr(e);return Yr(r)?`datetime`:Jr(r)?`date`:null}function Zr(e){if(e instanceof Date)return isNaN(e.getTime())?null:e;if(typeof e==`number`){let t=new Date(e);return isNaN(t.getTime())?null:t}if(typeof e==`string`){let t=new Date(e);return isNaN(t.getTime())?null:t}return null}var Qr=new Intl.DateTimeFormat(void 0,{dateStyle:`medium`}),$r=new Intl.DateTimeFormat(void 0,{dateStyle:`medium`,timeStyle:`short`}),ei=new Intl.DateTimeFormat(void 0,{timeStyle:`short`}),ti=new Intl.DateTimeFormat(void 0,{dateStyle:`full`,timeStyle:`medium`}),ni=new Intl.RelativeTimeFormat(void 0,{numeric:`auto`}),ri=[[`year`,31536e3],[`month`,2592e3],[`week`,604800],[`day`,86400],[`hour`,3600],[`minute`,60],[`second`,1]];function ii(e,t=new Date){let n=Math.round((e.getTime()-t.getTime())/1e3),r=Math.abs(n);for(let[e,t]of ri)if(r>=t||e===`second`)return ni.format(Math.round(n/t),e);return ni.format(0,`second`)}function ai(e){let t=e.enumValues,n=e.enumLabels;return!t?.length||!n||n.length!==t.length?null:n}function oi(e,t){let n=ai(t);if(!n)return null;let r=t.enumValues.indexOf(String(e));return r<0?null:n[r]||null}function si(e,t,n){if(e==null)return(0,r.jsx)(Gr,{kind:`null`});if(e===``)return(0,r.jsx)(Gr,{kind:`empty`});let i=oi(e,t);if(i!==null)return(0,r.jsx)(`span`,{title:String(e),children:i});let a=Xr(t,n?.formatKey);if(a===null||a===`raw`)return String(e);if(a===`date`||a===`datetime`||a===`time`||a===`relative`){let t=Zr(e);if(!t)return String(e);let n=ti.format(t);if(a===`relative`)return(0,r.jsx)(`span`,{title:n,className:`cursor-help underline decoration-dotted decoration-muted-foreground/40 underline-offset-2`,children:ii(t)});let i=(a===`date`?Qr:a===`time`?ei:$r).format(t);return(0,r.jsx)(`span`,{title:n,children:i})}if(a===`number`||a===`percent`){let t=typeof e==`number`?e:Number(e);if(isNaN(t))return String(e);let n=a===`percent`?new Intl.NumberFormat(void 0,{style:`percent`,maximumFractionDigits:2}).format(t):new Intl.NumberFormat(void 0).format(t);return(0,r.jsx)(`span`,{title:String(e),children:n})}return String(e)}function ci(e){if(!e)return``;let t=new Date(e);return t.toString()===`Invalid Date`||t.getTime()===0||t.getUTCFullYear()<=1?``:t.toLocaleString()}function li(e){if(e===null)return`—`;if(e===0)return`0`;if(e<1e3)return e.toString();if(e<1e6){let t=e/1e3;return t%1==0?`${t.toFixed(0)}k`:`${t.toFixed(1)}k`}let t=e/1e6;return t%1==0?`${t.toFixed(0)}M`:`${t.toFixed(1)}M`}var ui=``,di=/["\n\r,]/,fi=/^[=+\-@\t\r]/;function pi(e){if(e==null)return``;let t=mi(e);return t===``?`""`:(typeof e==`string`&&fi.test(t)&&(t=`'${t}`),di.test(t)?`"${t.replace(/"/g,`""`)}"`:t)}function mi(e){switch(typeof e){case`string`:return e;case`bigint`:return e.toString();case`number`:case`boolean`:return String(e);case`object`:return e instanceof Date?e.toISOString():JSON.stringify(e);default:return String(e)}}function hi(e,t,n={}){let r=[e.map(pi).join(`,`),...t.map(e=>e.map(pi).join(`,`))].join(`\r
74
+ }`,ie=class extends Error{errors;data;constructor(e,t){super(e.map(e=>e.message).join(`; `)),this.errors=e,this.data=t,this.name=`GraphQLRequestError`}},z=class{uri;constructor(e){this.uri=e}async query(e,t,n){let r=await fetch(this.uri,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({query:e,variables:t}),signal:n?.signal});if(!r.ok)throw Error(`GraphQL request failed: ${r.status} ${r.statusText}`);let i=await r.json();if(i.errors?.length)throw new ie(i.errors,i.data);return i.data}},B=(0,t.createContext)(null),ae=B.Provider;function V(){let e=(0,t.useContext)(B);if(!e)throw Error(`useFetcher must be used within a FetcherProvider`);return e}function oe(e){let t=e.lastIndexOf(`.`);return t>=0?e.slice(t+1):e}function H(e){return oe(e).replace(/([a-z])([A-Z])/g,`$1 $2`).replace(/([A-Z]+)([A-Z][a-z])/g,`$1 $2`).split(/[_\-\s]+/).filter(Boolean)}function se(e){return e.length===0?e:e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}function ce(e){return e&&H(e).map(se).join(` `)}var le=(0,t.createContext)({showStats:!1});function ue({config:e,children:t}){return(0,r.jsx)(le.Provider,{value:e,children:t})}function de(){return(0,t.useContext)(le)}var U=(0,t.createContext)({loading:!0,error:null,data:[],findTable:()=>void 0}),fe=({children:e})=>{let t=me();return(0,r.jsx)(U.Provider,{value:t,children:e})};function W(){return(0,t.useContext)(U)}function pe(e,t){if(!t||t.length===0)return e;let n=new Set(t.map(e=>e.toLowerCase()));return e.filter(e=>n.has(e.graphQlName.toLowerCase())||n.has(e.dbName.toLowerCase()))}function me(){let e=V(),{tables:r}=de(),{isLoading:i,error:a,data:o}=(0,n.useQuery)({queryKey:[`dbSchema`],queryFn:()=>e.query(R),staleTime:1/0});return(0,t.useMemo)(()=>{if(i)return{loading:!0,error:null,data:[],findTable:()=>void 0};if(a)return{loading:!1,error:{message:a.message},data:[],findTable:()=>void 0};if(!o)return{loading:!1,error:null,data:[],findTable:()=>void 0};let e=pe(o._dbSchema.map(e=>({...e,name:e.graphQlName,label:ce(e.dbName),metadata:he(e.metadata),columns:e.columns.map(e=>({...e,name:e.graphQlName,label:ce(e.dbName),metadata:he(e.metadata),inputType:ye(e.inputType)}))})),r);return{loading:!1,error:null,data:e,findTable:t=>e.find(e=>e.graphQlName===t)}},[i,a,o,r])}function he(e){return e.reduce((e,t)=>({...e,[t.key]:ge(t)}),{})}function ge({key:e,value:t}){return e===`type`?_e(t):t}function _e(e){let t=e.match(/lookup\s*\(\s*(?<id>\w+)\s*,\s*(?<label>\w+)\s*\)/m);if(t?.groups?.id&&t?.groups?.label)return{type:`lookup`,id:t.groups.id,label:t.groups.label}}var ve=[`text`,`email`,`url`,`tel`,`date`,`datetime-local`,`number`,`password`,`search`];function ye(e){if(e&&ve.includes(e))return e}function be(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=be(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n)}return r}function xe(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=be(e))&&(r&&(r+=` `),r+=t);return r}var Se=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,Ce=xe,G=(e,t)=>n=>{if(t?.variants==null)return Ce(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=Se(t)||Se(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return Ce(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},we=(e,t)=>{let n=Array(e.length+t.length);for(let t=0;t<e.length;t++)n[t]=e[t];for(let r=0;r<t.length;r++)n[e.length+r]=t[r];return n},Te=(e,t)=>({classGroupId:e,validator:t}),Ee=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),De=`-`,Oe=[],ke=`arbitrary..`,Ae=e=>{let t=Ne(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return Me(e);let n=e.split(De);return je(n,+(n[0]===``&&n.length>1),t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?we(i,t):t:i||Oe}return n[e]||Oe}}},je=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=je(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(De):e.slice(t).join(De),s=a.length;for(let e=0;e<s;e++){let t=a[e];if(t.validator(o))return t.classGroupId}},Me=e=>e.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?ke+r:void 0})(),Ne=e=>{let{theme:t,classGroups:n}=e;return Pe(n,t)},Pe=(e,t)=>{let n=Ee();for(let r in e){let i=e[r];Fe(i,n,r,t)}return n},Fe=(e,t,n,r)=>{let i=e.length;for(let a=0;a<i;a++){let i=e[a];Ie(i,t,n,r)}},Ie=(e,t,n,r)=>{if(typeof e==`string`){Le(e,t,n);return}if(typeof e==`function`){Re(e,t,n,r);return}ze(e,t,n,r)},Le=(e,t,n)=>{let r=e===``?t:Be(t,e);r.classGroupId=n},Re=(e,t,n,r)=>{if(Ve(e)){Fe(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(Te(n,e))},ze=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e<a;e++){let[a,o]=i[e];Fe(o,Be(t,a),n,r)}},Be=(e,t)=>{let n=e,r=t.split(De),i=r.length;for(let e=0;e<i;e++){let t=r[e],i=n.nextPart.get(t);i||(i=Ee(),n.nextPart.set(t,i)),n=i}return n},Ve=e=>`isThemeGetter`in e&&e.isThemeGetter===!0,He=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},Ue=`!`,We=`:`,Ge=[],Ke=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),qe=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;s<o;s++){let o=e[s];if(n===0&&r===0){if(o===We){t.push(e.slice(i,s)),i=s+1;continue}if(o===`/`){a=s;continue}}o===`[`?n++:o===`]`?n--:o===`(`?r++:o===`)`&&r--}let s=t.length===0?e:e.slice(i),c=s,l=!1;s.endsWith(Ue)?(c=s.slice(0,-1),l=!0):s.startsWith(Ue)&&(c=s.slice(1),l=!0);let u=a&&a>i?a-i:void 0;return Ke(t,l,c,u)};if(t){let e=t+We,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):Ke(Ge,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},Je=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i<e.length;i++){let a=e[i],o=a[0]===`[`,s=t.has(a);o||s?(r.length>0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},Ye=e=>({cache:He(e.cacheSize),parseClassName:qe(e),sortModifiers:Je(e),postfixLookupClassGroupIds:Xe(e),...Ae(e)}),Xe=e=>{let t=Object.create(null),n=e.postfixLookupClassGroups;if(n)for(let e=0;e<n.length;e++)t[n[e]]=!0;return t},Ze=/\s+/,Qe=(e,t)=>{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a,postfixLookupClassGroupIds:o}=t,s=[],c=e.trim().split(Ze),l=``;for(let e=c.length-1;e>=0;--e){let t=c[e],{isExternal:u,modifiers:d,hasImportantModifier:f,baseClassName:p,maybePostfixModifierPosition:m}=n(t);if(u){l=t+(l.length>0?` `+l:l);continue}let h=!!m,g;if(h){g=r(p.substring(0,m));let e=g&&o[g]?r(p):void 0;e&&e!==g&&(g=e,h=!1)}else g=r(p);if(!g){if(!h){l=t+(l.length>0?` `+l:l);continue}if(g=r(p),!g){l=t+(l.length>0?` `+l:l);continue}h=!1}let _=d.length===0?``:d.length===1?d[0]:a(d).join(`:`),v=f?_+Ue:_,y=v+g;if(s.indexOf(y)>-1)continue;s.push(y);let b=i(g,h);for(let e=0;e<b.length;++e){let t=b[e];s.push(v+t)}l=t+(l.length>0?` `+l:l)}return l},$e=(...e)=>{let t=0,n,r,i=``;for(;t<e.length;)(n=e[t++])&&(r=et(n))&&(i&&(i+=` `),i+=r);return i},et=e=>{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r<e.length;r++)e[r]&&(t=et(e[r]))&&(n&&(n+=` `),n+=t);return n},tt=(e,...t)=>{let n,r,i,a,o=o=>(n=Ye(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=Qe(e,n);return i(e,a),a};return a=o,(...e)=>a($e(...e))},nt=[],rt=e=>{let t=t=>t[e]||nt;return t.isThemeGetter=!0,t},it=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,at=/^\((?:(\w[\w-]*):)?(.+)\)$/i,ot=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,st=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,ct=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,lt=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,ut=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,dt=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ft=e=>ot.test(e),K=e=>!!e&&!Number.isNaN(Number(e)),pt=e=>!!e&&Number.isInteger(Number(e)),mt=e=>e.endsWith(`%`)&&K(e.slice(0,-1)),ht=e=>st.test(e),gt=()=>!0,_t=e=>ct.test(e)&&!lt.test(e),vt=()=>!1,yt=e=>ut.test(e),bt=e=>dt.test(e),xt=e=>!q(e)&&!J(e),St=e=>e.startsWith(`@container`)&&(e[10]===`/`&&e[11]!==void 0||e[11]===`s`&&e[16]!==void 0&&e.startsWith(`-size/`,10)||e[11]===`n`&&e[18]!==void 0&&e.startsWith(`-normal/`,10)),Ct=e=>Rt(e,Ht,vt),q=e=>it.test(e),wt=e=>Rt(e,Ut,_t),Tt=e=>Rt(e,Wt,K),Et=e=>Rt(e,Kt,gt),Dt=e=>Rt(e,Gt,vt),Ot=e=>Rt(e,Bt,vt),kt=e=>Rt(e,Vt,bt),At=e=>Rt(e,qt,yt),J=e=>at.test(e),jt=e=>zt(e,Ut),Mt=e=>zt(e,Gt),Nt=e=>zt(e,Bt),Pt=e=>zt(e,Ht),Ft=e=>zt(e,Vt),It=e=>zt(e,qt,!0),Lt=e=>zt(e,Kt,!0),Rt=(e,t,n)=>{let r=it.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},zt=(e,t,n=!1)=>{let r=at.exec(e);return r?r[1]?t(r[1]):n:!1},Bt=e=>e===`position`||e===`percentage`,Vt=e=>e===`image`||e===`url`,Ht=e=>e===`length`||e===`size`||e===`bg-size`,Ut=e=>e===`length`,Wt=e=>e===`number`,Gt=e=>e===`family-name`,Kt=e=>e===`number`||e===`weight`,qt=e=>e===`shadow`,Jt=tt(()=>{let e=rt(`color`),t=rt(`font`),n=rt(`text`),r=rt(`font-weight`),i=rt(`tracking`),a=rt(`leading`),o=rt(`breakpoint`),s=rt(`container`),c=rt(`spacing`),l=rt(`radius`),u=rt(`shadow`),d=rt(`inset-shadow`),f=rt(`text-shadow`),p=rt(`drop-shadow`),m=rt(`blur`),h=rt(`perspective`),g=rt(`aspect`),_=rt(`ease`),v=rt(`animate`),y=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],b=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],x=()=>[...b(),J,q],S=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],C=()=>[`auto`,`contain`,`none`],w=()=>[J,q,c],T=()=>[ft,`full`,`auto`,...w()],E=()=>[pt,`none`,`subgrid`,J,q],D=()=>[`auto`,{span:[`full`,pt,J,q]},pt,J,q],O=()=>[pt,`auto`,J,q],k=()=>[`auto`,`min`,`max`,`fr`,J,q],A=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],j=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],M=()=>[`auto`,...w()],N=()=>[ft,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...w()],P=()=>[ft,`screen`,`full`,`dvw`,`lvw`,`svw`,`min`,`max`,`fit`,...w()],ee=()=>[ft,`screen`,`full`,`lh`,`dvh`,`lvh`,`svh`,`min`,`max`,`fit`,...w()],F=()=>[e,J,q],te=()=>[...b(),Nt,Ot,{position:[J,q]}],ne=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],I=()=>[`auto`,`cover`,`contain`,Pt,Ct,{size:[J,q]}],re=()=>[mt,jt,wt],L=()=>[``,`none`,`full`,l,J,q],R=()=>[``,K,jt,wt],ie=()=>[`solid`,`dashed`,`dotted`,`double`],z=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],B=()=>[K,mt,Nt,Ot],ae=()=>[``,`none`,m,J,q],V=()=>[`none`,K,J,q],oe=()=>[`none`,K,J,q],H=()=>[K,J,q],se=()=>[ft,`full`,...w()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[ht],breakpoint:[ht],color:[gt],container:[ht],"drop-shadow":[ht],ease:[`in`,`out`,`in-out`],font:[xt],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[ht],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[ht],shadow:[ht],spacing:[`px`,K],text:[ht],"text-shadow":[ht],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,ft,q,J,g]}],container:[`container`],"container-type":[{"@container":[``,`normal`,`size`,J,q]}],"container-named":[St],columns:[{columns:[K,q,J,s]}],"break-after":[{"break-after":y()}],"break-before":[{"break-before":y()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:x()}],overflow:[{overflow:S()}],"overflow-x":[{"overflow-x":S()}],"overflow-y":[{"overflow-y":S()}],overscroll:[{overscroll:C()}],"overscroll-x":[{"overscroll-x":C()}],"overscroll-y":[{"overscroll-y":C()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:T()}],"inset-x":[{"inset-x":T()}],"inset-y":[{"inset-y":T()}],start:[{"inset-s":T(),start:T()}],end:[{"inset-e":T(),end:T()}],"inset-bs":[{"inset-bs":T()}],"inset-be":[{"inset-be":T()}],top:[{top:T()}],right:[{right:T()}],bottom:[{bottom:T()}],left:[{left:T()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[pt,`auto`,J,q]}],basis:[{basis:[ft,`full`,`auto`,s,...w()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[K,ft,`auto`,`initial`,`none`,q]}],grow:[{grow:[``,K,J,q]}],shrink:[{shrink:[``,K,J,q]}],order:[{order:[pt,`first`,`last`,`none`,J,q]}],"grid-cols":[{"grid-cols":E()}],"col-start-end":[{col:D()}],"col-start":[{"col-start":O()}],"col-end":[{"col-end":O()}],"grid-rows":[{"grid-rows":E()}],"row-start-end":[{row:D()}],"row-start":[{"row-start":O()}],"row-end":[{"row-end":O()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":k()}],"auto-rows":[{"auto-rows":k()}],gap:[{gap:w()}],"gap-x":[{"gap-x":w()}],"gap-y":[{"gap-y":w()}],"justify-content":[{justify:[...A(),`normal`]}],"justify-items":[{"justify-items":[...j(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...j()]}],"align-content":[{content:[`normal`,...A()]}],"align-items":[{items:[...j(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...j(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":A()}],"place-items":[{"place-items":[...j(),`baseline`]}],"place-self":[{"place-self":[`auto`,...j()]}],p:[{p:w()}],px:[{px:w()}],py:[{py:w()}],ps:[{ps:w()}],pe:[{pe:w()}],pbs:[{pbs:w()}],pbe:[{pbe:w()}],pt:[{pt:w()}],pr:[{pr:w()}],pb:[{pb:w()}],pl:[{pl:w()}],m:[{m:M()}],mx:[{mx:M()}],my:[{my:M()}],ms:[{ms:M()}],me:[{me:M()}],mbs:[{mbs:M()}],mbe:[{mbe:M()}],mt:[{mt:M()}],mr:[{mr:M()}],mb:[{mb:M()}],ml:[{ml:M()}],"space-x":[{"space-x":w()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":w()}],"space-y-reverse":[`space-y-reverse`],size:[{size:N()}],"inline-size":[{inline:[`auto`,...P()]}],"min-inline-size":[{"min-inline":[`auto`,...P()]}],"max-inline-size":[{"max-inline":[`none`,...P()]}],"block-size":[{block:[`auto`,...ee()]}],"min-block-size":[{"min-block":[`auto`,...ee()]}],"max-block-size":[{"max-block":[`none`,...ee()]}],w:[{w:[s,`screen`,...N()]}],"min-w":[{"min-w":[s,`screen`,`none`,...N()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...N()]}],h:[{h:[`screen`,`lh`,...N()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...N()]}],"max-h":[{"max-h":[`screen`,`lh`,...N()]}],"font-size":[{text:[`base`,n,jt,wt]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,Lt,Et]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,mt,q]}],"font-family":[{font:[Mt,Dt,t]}],"font-features":[{"font-features":[q]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,J,q]}],"line-clamp":[{"line-clamp":[K,`none`,J,Tt]}],leading:[{leading:[a,...w()]}],"list-image":[{"list-image":[`none`,J,q]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,J,q]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:F()}],"text-color":[{text:F()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...ie(),`wavy`]}],"text-decoration-thickness":[{decoration:[K,`from-font`,`auto`,J,wt]}],"text-decoration-color":[{decoration:F()}],"underline-offset":[{"underline-offset":[K,`auto`,J,q]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:w()}],"tab-size":[{tab:[pt,J,q]}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,J,q]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,J,q]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:te()}],"bg-repeat":[{bg:ne()}],"bg-size":[{bg:I()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},pt,J,q],radial:[``,J,q],conic:[pt,J,q]},Ft,kt]}],"bg-color":[{bg:F()}],"gradient-from-pos":[{from:re()}],"gradient-via-pos":[{via:re()}],"gradient-to-pos":[{to:re()}],"gradient-from":[{from:F()}],"gradient-via":[{via:F()}],"gradient-to":[{to:F()}],rounded:[{rounded:L()}],"rounded-s":[{"rounded-s":L()}],"rounded-e":[{"rounded-e":L()}],"rounded-t":[{"rounded-t":L()}],"rounded-r":[{"rounded-r":L()}],"rounded-b":[{"rounded-b":L()}],"rounded-l":[{"rounded-l":L()}],"rounded-ss":[{"rounded-ss":L()}],"rounded-se":[{"rounded-se":L()}],"rounded-ee":[{"rounded-ee":L()}],"rounded-es":[{"rounded-es":L()}],"rounded-tl":[{"rounded-tl":L()}],"rounded-tr":[{"rounded-tr":L()}],"rounded-br":[{"rounded-br":L()}],"rounded-bl":[{"rounded-bl":L()}],"border-w":[{border:R()}],"border-w-x":[{"border-x":R()}],"border-w-y":[{"border-y":R()}],"border-w-s":[{"border-s":R()}],"border-w-e":[{"border-e":R()}],"border-w-bs":[{"border-bs":R()}],"border-w-be":[{"border-be":R()}],"border-w-t":[{"border-t":R()}],"border-w-r":[{"border-r":R()}],"border-w-b":[{"border-b":R()}],"border-w-l":[{"border-l":R()}],"divide-x":[{"divide-x":R()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":R()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[...ie(),`hidden`,`none`]}],"divide-style":[{divide:[...ie(),`hidden`,`none`]}],"border-color":[{border:F()}],"border-color-x":[{"border-x":F()}],"border-color-y":[{"border-y":F()}],"border-color-s":[{"border-s":F()}],"border-color-e":[{"border-e":F()}],"border-color-bs":[{"border-bs":F()}],"border-color-be":[{"border-be":F()}],"border-color-t":[{"border-t":F()}],"border-color-r":[{"border-r":F()}],"border-color-b":[{"border-b":F()}],"border-color-l":[{"border-l":F()}],"divide-color":[{divide:F()}],"outline-style":[{outline:[...ie(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[K,J,q]}],"outline-w":[{outline:[``,K,jt,wt]}],"outline-color":[{outline:F()}],shadow:[{shadow:[``,`none`,u,It,At]}],"shadow-color":[{shadow:F()}],"inset-shadow":[{"inset-shadow":[`none`,d,It,At]}],"inset-shadow-color":[{"inset-shadow":F()}],"ring-w":[{ring:R()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:F()}],"ring-offset-w":[{"ring-offset":[K,wt]}],"ring-offset-color":[{"ring-offset":F()}],"inset-ring-w":[{"inset-ring":R()}],"inset-ring-color":[{"inset-ring":F()}],"text-shadow":[{"text-shadow":[`none`,f,It,At]}],"text-shadow-color":[{"text-shadow":F()}],opacity:[{opacity:[K,J,q]}],"mix-blend":[{"mix-blend":[...z(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":z()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[K]}],"mask-image-linear-from-pos":[{"mask-linear-from":B()}],"mask-image-linear-to-pos":[{"mask-linear-to":B()}],"mask-image-linear-from-color":[{"mask-linear-from":F()}],"mask-image-linear-to-color":[{"mask-linear-to":F()}],"mask-image-t-from-pos":[{"mask-t-from":B()}],"mask-image-t-to-pos":[{"mask-t-to":B()}],"mask-image-t-from-color":[{"mask-t-from":F()}],"mask-image-t-to-color":[{"mask-t-to":F()}],"mask-image-r-from-pos":[{"mask-r-from":B()}],"mask-image-r-to-pos":[{"mask-r-to":B()}],"mask-image-r-from-color":[{"mask-r-from":F()}],"mask-image-r-to-color":[{"mask-r-to":F()}],"mask-image-b-from-pos":[{"mask-b-from":B()}],"mask-image-b-to-pos":[{"mask-b-to":B()}],"mask-image-b-from-color":[{"mask-b-from":F()}],"mask-image-b-to-color":[{"mask-b-to":F()}],"mask-image-l-from-pos":[{"mask-l-from":B()}],"mask-image-l-to-pos":[{"mask-l-to":B()}],"mask-image-l-from-color":[{"mask-l-from":F()}],"mask-image-l-to-color":[{"mask-l-to":F()}],"mask-image-x-from-pos":[{"mask-x-from":B()}],"mask-image-x-to-pos":[{"mask-x-to":B()}],"mask-image-x-from-color":[{"mask-x-from":F()}],"mask-image-x-to-color":[{"mask-x-to":F()}],"mask-image-y-from-pos":[{"mask-y-from":B()}],"mask-image-y-to-pos":[{"mask-y-to":B()}],"mask-image-y-from-color":[{"mask-y-from":F()}],"mask-image-y-to-color":[{"mask-y-to":F()}],"mask-image-radial":[{"mask-radial":[J,q]}],"mask-image-radial-from-pos":[{"mask-radial-from":B()}],"mask-image-radial-to-pos":[{"mask-radial-to":B()}],"mask-image-radial-from-color":[{"mask-radial-from":F()}],"mask-image-radial-to-color":[{"mask-radial-to":F()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":b()}],"mask-image-conic-pos":[{"mask-conic":[K]}],"mask-image-conic-from-pos":[{"mask-conic-from":B()}],"mask-image-conic-to-pos":[{"mask-conic-to":B()}],"mask-image-conic-from-color":[{"mask-conic-from":F()}],"mask-image-conic-to-color":[{"mask-conic-to":F()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:te()}],"mask-repeat":[{mask:ne()}],"mask-size":[{mask:I()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,J,q]}],filter:[{filter:[``,`none`,J,q]}],blur:[{blur:ae()}],brightness:[{brightness:[K,J,q]}],contrast:[{contrast:[K,J,q]}],"drop-shadow":[{"drop-shadow":[``,`none`,p,It,At]}],"drop-shadow-color":[{"drop-shadow":F()}],grayscale:[{grayscale:[``,K,J,q]}],"hue-rotate":[{"hue-rotate":[K,J,q]}],invert:[{invert:[``,K,J,q]}],saturate:[{saturate:[K,J,q]}],sepia:[{sepia:[``,K,J,q]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,J,q]}],"backdrop-blur":[{"backdrop-blur":ae()}],"backdrop-brightness":[{"backdrop-brightness":[K,J,q]}],"backdrop-contrast":[{"backdrop-contrast":[K,J,q]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,K,J,q]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[K,J,q]}],"backdrop-invert":[{"backdrop-invert":[``,K,J,q]}],"backdrop-opacity":[{"backdrop-opacity":[K,J,q]}],"backdrop-saturate":[{"backdrop-saturate":[K,J,q]}],"backdrop-sepia":[{"backdrop-sepia":[``,K,J,q]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":w()}],"border-spacing-x":[{"border-spacing-x":w()}],"border-spacing-y":[{"border-spacing-y":w()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,J,q]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[K,`initial`,J,q]}],ease:[{ease:[`linear`,`initial`,_,J,q]}],delay:[{delay:[K,J,q]}],animate:[{animate:[`none`,v,J,q]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[h,J,q]}],"perspective-origin":[{"perspective-origin":x()}],rotate:[{rotate:V()}],"rotate-x":[{"rotate-x":V()}],"rotate-y":[{"rotate-y":V()}],"rotate-z":[{"rotate-z":V()}],scale:[{scale:oe()}],"scale-x":[{"scale-x":oe()}],"scale-y":[{"scale-y":oe()}],"scale-z":[{"scale-z":oe()}],"scale-3d":[`scale-3d`],skew:[{skew:H()}],"skew-x":[{"skew-x":H()}],"skew-y":[{"skew-y":H()}],transform:[{transform:[J,q,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:x()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:se()}],"translate-x":[{"translate-x":se()}],"translate-y":[{"translate-y":se()}],"translate-z":[{"translate-z":se()}],"translate-none":[`translate-none`],zoom:[{zoom:[pt,J,q]}],accent:[{accent:F()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:F()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,J,q]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scrollbar-thumb-color":[{"scrollbar-thumb":F()}],"scrollbar-track-color":[{"scrollbar-track":F()}],"scrollbar-gutter":[{"scrollbar-gutter":[`auto`,`stable`,`both`]}],"scrollbar-w":[{scrollbar:[`auto`,`thin`,`none`]}],"scroll-m":[{"scroll-m":w()}],"scroll-mx":[{"scroll-mx":w()}],"scroll-my":[{"scroll-my":w()}],"scroll-ms":[{"scroll-ms":w()}],"scroll-me":[{"scroll-me":w()}],"scroll-mbs":[{"scroll-mbs":w()}],"scroll-mbe":[{"scroll-mbe":w()}],"scroll-mt":[{"scroll-mt":w()}],"scroll-mr":[{"scroll-mr":w()}],"scroll-mb":[{"scroll-mb":w()}],"scroll-ml":[{"scroll-ml":w()}],"scroll-p":[{"scroll-p":w()}],"scroll-px":[{"scroll-px":w()}],"scroll-py":[{"scroll-py":w()}],"scroll-ps":[{"scroll-ps":w()}],"scroll-pe":[{"scroll-pe":w()}],"scroll-pbs":[{"scroll-pbs":w()}],"scroll-pbe":[{"scroll-pbe":w()}],"scroll-pt":[{"scroll-pt":w()}],"scroll-pr":[{"scroll-pr":w()}],"scroll-pb":[{"scroll-pb":w()}],"scroll-pl":[{"scroll-pl":w()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,J,q]}],fill:[{fill:[`none`,...F()]}],"stroke-w":[{stroke:[K,jt,wt,Tt]}],stroke:[{stroke:[`none`,...F()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{"container-named":[`container-type`],overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`inset-bs`,`inset-be`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pbs`,`pbe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mbs`,`mbe`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},postfixLookupClassGroups:[`container-type`],orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}});function Y(...e){return Jt(xe(e))}var Yt=G(`relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current`,{variants:{variant:{default:`bg-card text-card-foreground`,destructive:`bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current`}},defaultVariants:{variant:`default`}});function Xt({className:e,variant:t,...n}){return(0,r.jsx)(`div`,{"data-slot":`alert`,role:`alert`,className:Y(Yt({variant:t}),e),...n})}function Zt({className:e,...t}){return(0,r.jsx)(`div`,{"data-slot":`alert-title`,className:Y(`col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight`,e),...t})}function Qt({className:e,...t}){return(0,r.jsx)(`div`,{"data-slot":`alert-description`,className:Y(`col-start-2 grid justify-items-start gap-1 text-sm text-muted-foreground [&_p]:leading-relaxed`,e),...t})}var $t=t.forwardRef(({className:e,type:t,...n},i)=>(0,r.jsx)(`input`,{type:t,ref:i,"data-slot":`input`,className:Y(`h-9 w-full min-w-0 rounded-md border border-input bg-transparent text-foreground px-3 py-0 text-sm shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 dark:bg-input/30`,`focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50`,`aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40`,e),...n}));$t.displayName=`Input`;function en({...e}){return(0,r.jsx)(a.DropdownMenu.Root,{"data-slot":`dropdown-menu`,...e})}function tn({...e}){return(0,r.jsx)(a.DropdownMenu.Trigger,{"data-slot":`dropdown-menu-trigger`,...e})}function nn({className:e,sideOffset:t=4,...n}){return(0,r.jsx)(a.DropdownMenu.Portal,{children:(0,r.jsx)(a.DropdownMenu.Content,{"data-slot":`dropdown-menu-content`,sideOffset:t,className:Y(`z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,e),...n})})}function rn({className:e,inset:t,variant:n=`default`,...i}){return(0,r.jsx)(a.DropdownMenu.Item,{"data-slot":`dropdown-menu-item`,"data-inset":t,"data-variant":n,className:Y(`relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!`,e),...i})}function an({className:e,children:t,checked:n,...o}){return(0,r.jsxs)(a.DropdownMenu.CheckboxItem,{"data-slot":`dropdown-menu-checkbox-item`,className:Y(`relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),checked:n,...o,children:[(0,r.jsx)(`span`,{className:`pointer-events-none absolute left-2 flex size-3.5 items-center justify-center`,children:(0,r.jsx)(a.DropdownMenu.ItemIndicator,{children:(0,r.jsx)(i.CheckIcon,{className:`size-4`})})}),t]})}function on({className:e,inset:t,...n}){return(0,r.jsx)(a.DropdownMenu.Label,{"data-slot":`dropdown-menu-label`,"data-inset":t,className:Y(`px-2 py-1.5 text-sm font-medium data-[inset]:pl-8`,e),...n})}function sn({className:e,...t}){return(0,r.jsx)(a.DropdownMenu.Separator,{"data-slot":`dropdown-menu-separator`,className:Y(`-mx-1 my-1 h-px bg-border`,e),...t})}function cn({...e}){return(0,r.jsx)(a.DropdownMenu.Sub,{"data-slot":`dropdown-menu-sub`,...e})}function ln({className:e,inset:t,children:n,...o}){return(0,r.jsxs)(a.DropdownMenu.SubTrigger,{"data-slot":`dropdown-menu-sub-trigger`,"data-inset":t,className:Y(`flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[inset]:pl-8 data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground`,e),...o,children:[n,(0,r.jsx)(i.ChevronRightIcon,{className:`ml-auto size-4`})]})}function un({className:e,...t}){return(0,r.jsx)(a.DropdownMenu.SubContent,{"data-slot":`dropdown-menu-sub-content`,className:Y(`z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,e),...t})}function dn(e){return(e??``).replace(`!`,``)}var fn=new Set([`Int`,`Short`,`Byte`,`BigInt`]),pn=new Set([`Float`,`Decimal`]),mn=new Set([`DateTime`,`DateTimeOffset`]),hn=new Set([`BigInt`,`Decimal`]);function gn(e){return fn.has(dn(e))}function _n(e){let t=dn(e);return fn.has(t)||pn.has(t)}function vn(e){return hn.has(dn(e))}function yn(e){return mn.has(dn(e))}function bn(e){return dn(e)===`String`}function xn(e,t){let n=e.trim();if(n===``||n===`-`||n===`+`||!(gn(t)?/^[+-]?\d+$/.test(n):/^[+-]?(?:(?:\d+\.?\d*)|(?:\.\d+))(?:[eE][+-]?\d+)?$/.test(n)))return null;if(vn(t))return n;let r=Number(n);return Number.isFinite(r)?r:null}function Sn(e,t){if(e==null)return null;if(vn(t))return String(e);if(gn(t)){let t=typeof e==`number`?e:Number(e);return Number.isFinite(t)?Math.trunc(t):e}switch(dn(t)){case`Float`:{let t=typeof e==`number`?e:Number(e);return Number.isFinite(t)?t:e}case`Boolean`:return typeof e==`boolean`?e:e===`true`||e===1?!0:e===`false`||e===0?!1:!!e;default:return String(e)}}function Cn(e){return e?.paramType?.replace(`!`,``)??`String`}function wn(e){return(e.sourceColumnNames?.length??0)>1}function Tn(e,t){let n=(e.sourceColumnNames??[]).indexOf(t);return n<0?null:(e.destinationColumnNames??[])[n]??null}function En(e,t,n,r=`fk`){if(!e)return null;let i=t.sourceColumnNames??[],a=t.destinationColumnNames??[];if(i.length===0||i.length!==a.length)return null;let o=new Map((n?.columns??[]).map(e=>[e.name,e])),s=[],c={},l=[];for(let t=0;t<i.length;t++){let n=i[t],u=a[t];if(!(n in e))return null;let d=Cn(o.get(u)),f=`${r}_${u}`;c[f]=Sn(e[n],d),l.push(`$${f}: ${d}`),s.push(`{${u}: {_eq: $${f}}}`)}return{filterText:s.length===1?s[0]:`{and: [${s.join(`, `)}]}`,variables:c,params:l}}var Dn=`::`;function On(e){return e==null?``:encodeURIComponent(String(e))}function kn(e){if(e===``)return null;try{return decodeURIComponent(e)}catch{return e}}function An(e){return e.map(On).join(Dn)}function jn(e,t){let n=t<=1?[e]:e.split(Dn);if(n.length!==t)throw Error(`Route id '${e}' has ${n.length} part(s) but ${t} were expected.`);return n.map(e=>e===``?``:kn(e)??``)}function Mn(e,t,n){let r=t.primaryKeys??[];return r.length===0?`row-${n}`:An(r.map(t=>e?.[t]))}function Nn(e,t){let n=t.primaryKeys??[];if(n.length===0||e==null)return null;let r={};for(let t of n){if(!(t in e))return null;r[t]=e[t]}return r}function Pn(e,t){let n=Nn(e,t);if(!n)return null;let r=new Map((t.columns??[]).map(e=>[e.name,e])),i=[],a={},o=[];for(let e of t.primaryKeys??[]){let t=Cn(r.get(e)),s=`pk_${e}`;a[s]=Sn(n[e],t),o.push(`$${s}: ${t}`),i.push(`{${e}: {_eq: $${s}}}`)}return{filterText:i.length===1?i[0]:`{and: [${i.join(`, `)}]}`,variables:a,params:o}}function Fn(e,t){let n=t.primaryKeys??[];return n.length===0?``:An(n.map(t=>e[t]))}function In(e,t){let n=t.primaryKeys??[];if(n.length===0)return null;let r=n.length===1?[e]:e.split(Dn);if(r.length!==n.length)return null;let i={};for(let e=0;e<n.length;e++){let t=kn(r[e]);if(t===null)return null;i[n[e]]=t}return i}function Ln(e,t,n){if(!e)return;let r=e.filter(e=>e.destinationTable===t);if(r.length!==0){if(r.length===1)return r[0];if(n)return r.find(e=>e.destinationColumnNames?.[0]===n)}}function Rn(e){return e.fieldName??e.destinationTable}var zn=new Set([`binary`,`varbinary`,`image`,`blob`,`tinyblob`,`mediumblob`,`longblob`,`bytea`]),Bn=new Set([`text`,`ntext`,`xml`]),Vn=new Set([`json`,`jsonb`]);function Hn(e){return zn.has(e.toLowerCase().replace(/\(.*\)/,``))}function Un(e){return Vn.has(e.toLowerCase().replace(/\(.*\)/,``))}function Wn(e){return Un(e.dbType)||e.paramType===`JSON`}function Gn(e){let t=e.toLowerCase(),n=t.replace(/\(.*\)/,``);return!!(Bn.has(n)||t.includes(`(max)`))}function Kn(e){return typeof e.isLargeValue==`boolean`?e.isLargeValue:Hn(e.dbType)||Gn(e.dbType)}function qn(e,t){if(!e)return`text`;if(t&&Hn(t))return`binary`;if(t&&Un(t))return`json`;let n=e.trimStart();if(n.startsWith(`{`)&&n.endsWith(`}`)||n.startsWith(`[`)&&n.endsWith(`]`))try{return JSON.parse(n),`json`}catch{}return n.startsWith(`<?xml`)||n.startsWith(`<`)&&n.includes(`</`)&&n.endsWith(`>`)?`xml`:/^[aOsidb]:\d+[:{;]/.test(n)?`php-serialized`:e.length>200||e.includes(`
75
+ `)?`longtext`:`text`}function Jn(e){return e.length<=80?e:e.slice(0,80)+`...`}function Yn(e){let t=Math.ceil(e.length*3/4);return t<1024?`${t} bytes`:t<1048576?`${(t/1024).toFixed(1)} KB`:`${(t/1048576).toFixed(1)} MB`}function Xn(e){let t={kind:`unknown`,mime:`application/octet-stream`,extension:`.bin`},n;try{n=atob(e.slice(0,24))}catch{return t}let r=e=>n.charCodeAt(e);return n.length>=4&&r(0)===137&&n.slice(1,4)===`PNG`?{kind:`image`,mime:`image/png`,extension:`.png`}:n.length>=3&&r(0)===255&&r(1)===216&&r(2)===255?{kind:`image`,mime:`image/jpeg`,extension:`.jpg`}:n.slice(0,4)===`GIF8`?{kind:`image`,mime:`image/gif`,extension:`.gif`}:n.slice(0,4)===`RIFF`&&n.slice(8,12)===`WEBP`?{kind:`image`,mime:`image/webp`,extension:`.webp`}:n.slice(0,4)===`%PDF`?{kind:`pdf`,mime:`application/pdf`,extension:`.pdf`}:t}function Zn(e,t){return`data:${t};base64,${e}`}var Qn=[`_eq`,`_neq`,`_gt`,`_gte`,`_lt`,`_lte`,`_between`,`_null`],$n={String:[`_eq`,`_neq`,`_contains`,`_starts_with`,`_ends_with`,`_null`],Int:Qn,Float:Qn,Short:Qn,Byte:Qn,BigInt:Qn,Decimal:Qn,Boolean:[`_eq`,`_null`],DateTime:Qn,DateTimeOffset:Qn},er=new Set([`DateTime`,`DateTimeOffset`]),tr=/^[_A-Za-z][_0-9A-Za-z]*$/,nr=/^[_A-Za-z][_0-9A-Za-z]*!?$/,rr=new Set(Object.values($n).flat());function ir(e){return typeof e==`string`&&tr.test(e)}function X(e,t){if(!ir(e))throw Error(`Invalid GraphQL ${t}: ${String(e)}`)}function ar(e){return X(e.graphQlName,`table name`),`TableFilter${e.graphQlName}Input`}function or(e){return typeof e==`string`&&nr.test(e)}function sr(e,t){return typeof e==`string`&&cr(t).includes(e)}function cr(e){return $n[e.replace(`!`,``)]??$n.String}function lr(){return{variables:{},param:``,filterText:``,error:null}}function ur(e){return{variables:{},param:``,filterText:``,error:e}}function dr(e){if(!e)return lr();let t;try{t=JSON.parse(e)}catch{return ur(`The filter in the URL is not valid JSON.`)}if(!Array.isArray(t)||t.length<4)return ur(`The filter in the URL is malformed.`);let[n,r,i,a]=t;return ir(n)?or(a)?sr(r,a)?{variables:{filter:i},param:`, $filter: ${a}`,filterText:`{${n}: {${r}: $filter} }`,error:null}:ur(`Filter operator '${String(r)}' is not supported for ${String(a)} column '${String(n)}'.`):ur(`Filter type '${String(a)}' is not a valid type name.`):ur(`Filter column '${String(n)}' is not a valid column name.`)}function fr(e,t,n=0){return Mn(e,t,n)}function pr(e){let t=e.replace(`!`,``);switch(t){case`Int`:case`Float`:case`Short`:case`Byte`:case`Boolean`:case`BigInt`:case`Decimal`:case`DateTime`:case`DateTimeOffset`:return t;default:return`String`}}var mr=/^\d{4}-\d{2}-\d{2}$/;function hr(e){let t=e<=0?`+`:`-`,n=Math.abs(e);return`${t}${String(Math.floor(n/60)).padStart(2,`0`)}:${String(n%60).padStart(2,`0`)}`}function gr(e,t,n,r){let i=`${e}T${t===`start`?`00:00:00.000`:`23:59:59.999`}`;return n===`DateTimeOffset`?`${i}${hr(r??new Date(`${e}T00:00:00`).getTimezoneOffset())}`:i}function _r(e,t,n,r){if(!er.has(n))return{operator:e,value:t};let i=e=>gr(String(e),`start`,n,r),a=e=>gr(String(e),`end`,n,r),o=e=>typeof e==`string`&&mr.test(e);if(e===`_between`){let n=Array.isArray(t)?t:null;return!n||n.length!==2?{operator:e,value:t}:{operator:e,value:[o(n[0])?i(n[0]):n[0],o(n[1])?a(n[1]):n[1]]}}if(!o(t))return{operator:e,value:t};switch(e){case`_eq`:return{operator:`_between`,value:[i(t),a(t)]};case`_neq`:return{operator:`_nbetween`,value:[i(t),a(t)]};case`_gt`:case`_lte`:return{operator:e,value:a(t)};default:return{operator:e,value:i(t)}}}function vr(e,t){let n={},r=[],i=[],a=[];for(let o=0;o<e.length;o++){let s=e[o],c=s.value;if(c.value===void 0||c.value===null||c.value===``)continue;let l=t.columns.find(e=>e.name===s.id);if(!l){a.push(`Column '${String(s.id)}' is not on this table.`);continue}if(!ir(s.id)){a.push(`Column '${String(s.id)}' is not a valid column name.`);continue}if(!sr(c.operator,l.paramType)){a.push(`Operator '${String(c.operator)}' is not supported for column '${s.id}'.`);continue}let u=`cf_${s.id}_${o}`,d=pr(l.paramType);if(c.operator===`_null`){i.push(`{${s.id}: {_null: ${c.value?`true`:`false`}}}`);continue}let f=_r(c.operator,c.value,d);if(f.operator===`_between`||f.operator===`_nbetween`){let e=f.value;if(!Array.isArray(e)||e.length!==2){a.push(`The range filter on column '${s.id}' needs exactly two bounds.`);continue}let t=`${u}_lo`,o=`${u}_hi`;n[t]=Sn(e[0],d),n[o]=Sn(e[1],d),r.push(`$${t}: ${d}`,`$${o}: ${d}`),i.push(`{${s.id}: {${f.operator}: [$${t}, $${o}]}}`);continue}n[u]=Sn(f.value,d),r.push(`$${u}: ${d}`),i.push(`{${s.id}: {${f.operator}: $${u}}}`)}return{variables:n,params:r,filterTexts:i,errors:a}}function yr(e,t,n){let r=dr(t),i=vr(n,e);return r.error?[r.error,...i.errors]:i.errors}function br(e){return e.length===0?``:JSON.stringify(e.map(e=>[e.id,e.value.operator,e.value.value]))}function xr(e){try{if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(Sr).map(([e,t,n])=>({id:e,value:{operator:t,value:n}})):[]}catch{return[]}}function Sr(e){if(!Array.isArray(e)||e.length!==3)return!1;let[t,n]=e;return ir(t)&&typeof n==`string`&&rr.has(n)}function Cr(e){return wr(e)[0]?.gqlType??`Int`}function wr(e){let t=e.primaryKeys??[];if(t.length===0)return[];let n=new Map(e.columns.map(e=>[e.name,e]));return t.map(e=>({name:e,gqlType:n.get(e)?.paramType?.replace(`!`,``)??`String`}))}function Tr(e,t=()=>!0){let n=e.indexes??[];if(n.length===0)return null;let r=new Map(e.columns.map(e=>[e.name,e])),i=e=>{let n=e.columns[0],i=n?r.get(n):void 0;return i&&t(i)?i.name:null};for(let e of[e=>e.isClustered,e=>e.isUnique,()=>!0])for(let t of n){if(!e(t))continue;let n=i(t);if(n)return n}return null}function Er(e,t){if(wr(t).length<=1)return{id:Sn(kn(e),Cr(t))};let n=In(e,t);return n?Pn(n,t)?.variables??{}:{}}function Dr(e,t,n){X(e.name,`single-row table name`);for(let e of n)X(e,`single-row selection field`);let r=t.params.length>0?`(${t.params.join(`, `)})`:``;return`query GetSingleRow_${e.name}${r} { value: ${e.name}(filter: ${t.filterText}) { data { ${n.join(` `)} } } }`}function Or(e,t,n){X(e.name,`rows-by-pk table name`);for(let e of n)X(e,`rows-by-pk selection field`);let r=e.primaryKeys??[];if(r.length===0||t.length===0||n.length===0)return null;for(let e of r)X(e,`rows-by-pk key column`);let i=new Map((e.columns??[]).map(e=>[e.name,e])),a=[],o={},s=[];t.forEach((e,t)=>{let n=[];for(let s of r){let r=Cn(i.get(s)),c=`pk${t}_${s}`;o[c]=Sn(e[s],r),a.push(`$${c}: ${r}`),n.push(`{${s}: {_eq: $${c}}}`)}s.push(n.length===1?n[0]:`{and: [${n.join(`, `)}]}`)});let c=s.length===1?s[0]:`{or: [${s.join(`, `)}]}`;return{query:`query GetRowsByPk_${e.name}(${a.join(`, `)}) { value: ${e.name}(filter: ${c} limit: ${t.length}) { data { ${n.join(` `)} } } }`,variables:o}}var kr=11;function Ar(e,t){return t.map(t=>{let n=e.findTable(t.destinationTable),r=n?.labelColumn??`id`,i=[...n?.primaryKeys?.length?n.primaryKeys:[`id`]];return r&&!i.includes(r)&&i.push(r),`${t.fieldName??t.destinationTable}(limit: ${kr}) { total data { ${i.join(` `)} } }`}).join(` `)}function jr(e,t,n,r){return`query Get${e.name}($sort: [${e.graphQlName}SortEnum!], $limit: Int, $offset: Int ${t}) { ${e.name}(sort: $sort limit: $limit offset: $offset ${n}) { total offset limit data {${r}}}}`}function Mr(e,t,n){let r=new Set;return e.columns.filter(e=>e?.joinTable===void 0).filter(e=>e.isPrimaryKey||!Kn(e)).map(e=>{let r=n.singleJoins.find(t=>t.sourceColumnNames?.[0]===e.name);if(!r)return e;let i=t.findTable(r.destinationTable)?.labelColumn??`id`;return{...e,joinTable:r,joinLabelColumn:i}}).map(e=>{if(e?.joinTable){r.add(e.name);let n=t.findTable(e.joinTable.destinationTable),i=n?.primaryKeys?.length?n.primaryKeys:e.joinTable.destinationColumnNames,a=e.joinLabelColumn??`id`,o=a&&!i.includes(a)?` label: ${a}`:``,s=e.joinTable.fieldName??e.joinTable.destinationTable;return i.length===1?`${e.name} ${s} { id: ${i[0]}${o} }`:`${e.name} ${s} { ${i.join(` `)}${o} }`}return e.name}).join(` `)}function Nr(e,t,n,r,i,a,o,s=!1){let c=Hr(e,t,a,o);if(c&&Rr(c.childJoin)){let i=c.childJoin.destinationColumnNames[0],a=`, $id: ${wr(c.parentTable)[0]?.gqlType??`Int`}`,o=`filter: { ${i}: { _eq: $id } }`,l=s?``:Ar(t,n.multiJoins.filter(e=>!zr(e,c.childJoin)));return jr(e,a,o,l?`${r} ${l}`:r)}if(c){let t=`${c.childField}(limit: $limit offset: $offset sort: $sort) { total offset limit data {${i}} }`,n=wr(c.parentTable);if(n.length===0)return null;let r,a;if(n.length===1){let e=n[0].name;r=`, $id: ${n[0].gqlType}`,a=`{ ${e}: { _eq: $id}}`}else r=`, ${n.map(e=>`$pk_${e.name}: ${e.gqlType}`).join(`, `)}`,a=`{and: [${n.map(e=>`{${e.name}: {_eq: $pk_${e.name}}}`).join(`, `)}]}`;return`query Get${e.name}($sort: [${e.graphQlName}SortEnum!], $limit: Int, $offset: Int ${r}) { ${c.parentTable.name}(filter: ${a}) { data { ${t} } } }`}return null}function Pr(e,t,n){let r=wr(t);if(r.length===0)return null;let i,a;if(r.length===1){let e=Cr(t),n=r[0].name;i=`, $id: ${e}`,a=`{ ${n}: { _eq: $id}}`}else i=`, ${r.map(e=>`$pk_${e.name}: ${e.gqlType}`).join(`, `)}`,a=`{and: [${r.map(e=>`{${e.name}: {_eq: $pk_${e.name}}}`).join(`, `)}]}`;return jr(e,i,`filter: ${a}`,n)}function Fr(e,t,n,r){let{param:i,filterText:a}=dr(t),{params:o,filterTexts:s}=vr(n,e);o.length>0&&(i+=o.map(e=>`, ${e}`).join(``));let c=[];return a&&c.push(a),c.push(...s),a=c.length>1?`{and: [${c.join(`, `)}]}`:c.length===1?c[0]:``,jr(e,i,a?`filter: ${a}`:``,r)}function Ir(e){return e.columns.filter(e=>e.isPrimaryKey||!Hn(e.dbType))}function Lr(e,t,n,r,i,a,o,s){if(!e||!t?.data)return null;let c=t.findTable(e.graphQlName);if(!c)return null;let l=s?.fields===`export`,u=l?Ir(e).map(e=>e.name).join(` `):Mr(e,t,c),d=l?``:Ar(t,c.multiJoins),f=d?`${u} ${d}`:u;return i&&(o||a)?Nr(e,t,c,u,f,a,o,l):i&&!a&&!o?Pr(e,c,f):yr(e,n,r).length>0?null:Fr(e,n,r,f)}function Rr(e){return!wn(e)&&e.isPolymorphic!==!0&&(e.destinationColumnNames?.length??0)===1}function zr(e,t){return(e.fieldName??e.destinationTable)===(t.fieldName??t.destinationTable)&&e.destinationTable===t.destinationTable&&(e.destinationColumnNames??[]).join(`\0`)===(t.destinationColumnNames??[]).join(`\0`)&&(e.sourceColumnNames??[]).join(`\0`)===(t.sourceColumnNames??[]).join(`\0`)}var Br={data:[],total:0,offset:0,limit:0};function Vr(e,t,n){let r=(e?.[t])?.data?.[0]?.[n];return!r||!Array.isArray(r.data)?Br:r}function Hr(e,t,n,r){let i=n??t.findTable(e.graphQlName)?.singleJoins.find(e=>e.destinationTable===r)?.destinationTable;if(!i)return null;let a=t.findTable(i);if(!a)return null;let o=Ln(a.multiJoins,e.graphQlName,r);return o?{parentTable:a,childField:Rn(o),childJoin:o}:null}function Ur(e){let t=e.filter(ir);return t.length===0?null:`query GetTableRowCounts { ${t.map(e=>`${e}: ${e}(limit: 1) { total }`).join(` `)} }`}function Wr(e=!0){let{data:r,loading:i,error:a}=W(),o=V(),s=(0,t.useMemo)(()=>r.map(e=>e.name),[r]),c=(0,t.useMemo)(()=>Ur(s),[s]),{data:l,isLoading:u,error:d}=(0,n.useQuery)({queryKey:[`tableRowCounts`,s],queryFn:()=>o.query(c),enabled:e&&!!c&&s.length>0,staleTime:3e5});return{stats:(0,t.useMemo)(()=>{let e={};for(let t of r){let n=l?.[t.name]?.total??null;e[t.name]={columnCount:t.columns.length,rowCount:n,fkCount:t.singleJoins.length,isLoading:u,error:d?d.message:null}}return e},[r,l,u,d]),isLoading:i||u,error:a}}function Gr({kind:e}){return(0,r.jsx)(`span`,{className:`text-muted-foreground/60 italic select-none`,children:e===`null`?`NULL`:`empty`})}var Kr=new Set([`date`,`datetime`,`time`,`relative`,`number`,`percent`,`raw`]);function qr(e){return{param:(e.paramType??``).replace(`!`,``).toLowerCase(),db:(e.dbType??``).toLowerCase()}}function Jr({param:e,db:t}){return e===`date`||t===`date`}function Yr({param:e,db:t}){return e===`datetime`||e===`datetimeoffset`||t.includes(`datetime`)||t===`timestamp`||t===`smalldatetime`}function Xr(e,t){let n=(t?e.metadata?.[t]:void 0)??e.metadata?.[`display-format`];if(typeof n==`string`&&Kr.has(n.toLowerCase()))return n.toLowerCase();let r=qr(e);return Yr(r)?`datetime`:Jr(r)?`date`:null}function Zr(e){if(e instanceof Date)return isNaN(e.getTime())?null:e;if(typeof e==`number`){let t=new Date(e);return isNaN(t.getTime())?null:t}if(typeof e==`string`){let t=new Date(e);return isNaN(t.getTime())?null:t}return null}var Qr=new Intl.DateTimeFormat(void 0,{dateStyle:`medium`}),$r=new Intl.DateTimeFormat(void 0,{dateStyle:`medium`,timeStyle:`short`}),ei=new Intl.DateTimeFormat(void 0,{timeStyle:`short`}),ti=new Intl.DateTimeFormat(void 0,{dateStyle:`full`,timeStyle:`medium`}),ni=new Intl.RelativeTimeFormat(void 0,{numeric:`auto`}),ri=[[`year`,31536e3],[`month`,2592e3],[`week`,604800],[`day`,86400],[`hour`,3600],[`minute`,60],[`second`,1]];function ii(e,t=new Date){let n=Math.round((e.getTime()-t.getTime())/1e3),r=Math.abs(n);for(let[e,t]of ri)if(r>=t||e===`second`)return ni.format(Math.round(n/t),e);return ni.format(0,`second`)}function ai(e){let t=e.enumValues,n=e.enumLabels;return!t?.length||!n||n.length!==t.length?null:n}function oi(e,t){let n=ai(t);if(!n)return null;let r=t.enumValues.indexOf(String(e));return r<0?null:n[r]||null}function si(e,t,n){if(e==null)return(0,r.jsx)(Gr,{kind:`null`});if(e===``)return(0,r.jsx)(Gr,{kind:`empty`});let i=oi(e,t);if(i!==null)return(0,r.jsx)(`span`,{title:String(e),children:i});let a=Xr(t,n?.formatKey);if(a===null||a===`raw`)return String(e);if(a===`date`||a===`datetime`||a===`time`||a===`relative`){let t=Zr(e);if(!t)return String(e);let n=ti.format(t);if(a===`relative`)return(0,r.jsx)(`span`,{title:n,className:`cursor-help underline decoration-dotted decoration-muted-foreground/40 underline-offset-2`,children:ii(t)});let i=(a===`date`?Qr:a===`time`?ei:$r).format(t);return(0,r.jsx)(`span`,{title:n,children:i})}if(a===`number`||a===`percent`){let t=typeof e==`number`?e:Number(e);if(isNaN(t))return String(e);let n=a===`percent`?new Intl.NumberFormat(void 0,{style:`percent`,maximumFractionDigits:2}).format(t):new Intl.NumberFormat(void 0).format(t);return(0,r.jsx)(`span`,{title:String(e),children:n})}return String(e)}function ci(e){if(!e)return``;let t=new Date(e);return t.toString()===`Invalid Date`||t.getTime()===0||t.getUTCFullYear()<=1?``:t.toLocaleString()}function li(e){if(e===null)return`—`;if(e===0)return`0`;if(e<1e3)return e.toString();if(e<1e6){let t=e/1e3;return t%1==0?`${t.toFixed(0)}k`:`${t.toFixed(1)}k`}let t=e/1e6;return t%1==0?`${t.toFixed(0)}M`:`${t.toFixed(1)}M`}var ui=``,di=/["\n\r,]/,fi=/^[=+\-@\t\r]/;function pi(e){if(e==null)return``;let t=mi(e);return t===``?`""`:(typeof e==`string`&&fi.test(t)&&(t=`'${t}`),di.test(t)?`"${t.replace(/"/g,`""`)}"`:t)}function mi(e){switch(typeof e){case`string`:return e;case`bigint`:return e.toString();case`number`:case`boolean`:return String(e);case`object`:return e instanceof Date?e.toISOString():JSON.stringify(e);default:return String(e)}}function hi(e,t,n={}){let r=[e.map(pi).join(`,`),...t.map(e=>e.map(pi).join(`,`))].join(`\r
76
76
  `);return n.bom?``+r:r}function gi(e,t){return typeof t==`bigint`?t.toString():t}function _i(e,t){let n={};for(let r=0;r<e.length;r++)n[e[r]]=t[r];return n}function vi(e,t,n={}){if(n.mode===`lines`)return t.map(t=>JSON.stringify(_i(e,t),gi)).join(`
77
- `);let r=t.map(t=>_i(e,t));return JSON.stringify(r,gi,2)}var yi=500;function bi(e){if(e?.aborted)throw new DOMException(`Export cancelled`,`AbortError`)}async function xi(e){let t=e.pageSize??yi,{rowCap:n,signal:r}=e,i=[],a=0,o=!1;bi(r);let s=0,c=1/0;for(;s<c;){bi(r);let l=await e.fetchPage(s,t,r);a=l.total,c=l.total;for(let e of l.rows){if(n!==void 0&&i.length>=n){o=!0;break}i.push(e)}if(e.onProgress?.(i.length,a),o||l.rows.length===0)break;s+=l.rows.length}return bi(r),{content:e.format===`csv`?hi(e.headers,i,e.csv):vi(e.headers,i,e.json),rowCount:i.length,total:a,truncated:o}}var Si=1e5;function Ci(e){return e===`csv`?`text/csv;charset=utf-8;`:`application/json;charset=utf-8;`}function wi(e,t){return`${e}-export.${t}`}function Ti(e,t,n){if(typeof window>`u`||typeof document>`u`)return;let r=new Blob([e],{type:n}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=t,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(i)}function Ei(e,t,n){if(typeof window>`u`||typeof document>`u`)return;let r=Uint8Array.from(atob(e),e=>e.charCodeAt(0)),i=new Blob([r],{type:n}),a=URL.createObjectURL(i),o=document.createElement(`a`);o.href=a,o.download=t,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(a)}function Di(){let{saveFile:e}=de();return(0,t.useCallback)(async(t,n,r)=>{if(e){await e({filename:t,content:n,mime:r});return}Ti(n,t,r)},[e])}function Oi(){let e=U(),n=V(),r=Di();return(0,t.useCallback)(async(t,i,a)=>{let o=Lr(t,e,``,[],void 0,void 0,void 0,{fields:`export`});if(!o)throw Error(`Cannot export '${t.label??t.name}': no export query could be built.`);let s=Ir(t),c=await xi({format:i,headers:s.map(e=>e.label??e.name),csv:{bom:!0},rowCap:Si,signal:a,fetchPage:async(e,r,i)=>{let a=(await n.query(o,{limit:r,offset:e},{signal:i}))?.[t.name],c=a?.data??[];return{rows:c.map(e=>s.map(t=>e[t.name])),total:a?.total??c.length}}});return await r(wi(t.name,i),c.content,Ci(i)),c},[e,n,r])}var ki=(0,t.createContext)({toast:()=>{}}),Ai=4e3;function ji({children:e}){let[n,a]=(0,t.useState)([]),o=(0,t.useRef)(0),s=(0,t.useRef)(new Set),c=(0,t.useCallback)(e=>{a(t=>t.filter(t=>t.id!==e))},[]),l=(0,t.useCallback)((e,t=`success`)=>{let n=o.current++;a(r=>[...r,{id:n,message:e,variant:t}]);let r=setTimeout(()=>{c(n),s.current.delete(r)},Ai);s.current.add(r)},[c]);(0,t.useEffect)(()=>{let e=s.current;return()=>{e.forEach(clearTimeout)}},[]);let u=(0,t.useMemo)(()=>({toast:l}),[l]);return(0,r.jsxs)(ki.Provider,{value:u,children:[e,(0,r.jsx)(`div`,{className:`fixed bottom-4 right-4 z-[100] flex flex-col gap-2 max-w-sm`,role:`region`,"aria-label":`Notifications`,children:n.map(e=>(0,r.jsxs)(`div`,{role:`status`,className:Y(`flex items-start gap-2 rounded-md border px-3 py-2 text-sm shadow-md bg-popover`,e.variant===`error`?`border-destructive/40 text-destructive`:`border-border text-foreground`),children:[e.variant===`error`?(0,r.jsx)(i.AlertCircle,{className:`size-4 shrink-0 mt-0.5`}):(0,r.jsx)(i.CheckCircle2,{className:`size-4 shrink-0 mt-0.5 text-green-600`}),(0,r.jsx)(`span`,{className:`flex-1 break-words`,children:e.message}),(0,r.jsx)(`button`,{type:`button`,onClick:()=>c(e.id),"aria-label":`Dismiss notification`,className:`shrink-0 opacity-60 hover:opacity-100`,children:(0,r.jsx)(i.X,{className:`size-3.5`})})]},e.id))})]})}function Mi(){return(0,t.useContext)(ki)}var Ni=50;function Pi(e,t){return e===null||t<=0?0:Math.max(2,Math.min(100,Math.round(e/t*100)))}function Fi({percent:e,label:t}){return(0,r.jsx)(`span`,{className:`flex-1 min-w-[1.5em] h-[0.5em] rounded-full bg-muted/70 overflow-hidden`,role:`img`,"aria-label":t,title:t,children:(0,r.jsx)(`span`,{className:`block h-full rounded-full bg-emerald-500/70 dark:bg-emerald-400/70`,style:{width:`${e}%`}})})}function Ii({count:e}){return e<=0?null:(0,r.jsxs)(`span`,{className:`shrink-0 rounded px-1 py-px text-[0.85em] tabular-nums bg-blue-100 text-blue-700 dark:bg-blue-900/60 dark:text-blue-300`,children:[e,` FK`]})}function Li(e){try{return decodeURIComponent(e)}catch{return e}}function Ri({stats:e,maxRowCount:t}){let n=Pi(e.rowCount,t),a=`flex items-center gap-1.5 text-xs leading-none min-w-0`;return e.isLoading?(0,r.jsxs)(`div`,{className:`${a} text-muted-foreground`,children:[(0,r.jsxs)(`span`,{className:`tabular-nums shrink-0`,children:[e.columnCount,`c`]}),(0,r.jsx)(`span`,{className:`flex-1 min-w-[1.5em] h-[0.5em] rounded-full bg-muted/70 overflow-hidden`,children:(0,r.jsx)(`span`,{className:`block h-full w-1/3 rounded-full bg-muted-foreground/30 animate-pulse`})}),(0,r.jsx)(i.Loader2,{className:`size-[1em] shrink-0 animate-spin`}),(0,r.jsx)(Ii,{count:e.fkCount})]}):e.error?(0,r.jsxs)(`div`,{className:a,children:[(0,r.jsxs)(`span`,{className:`tabular-nums shrink-0 text-muted-foreground`,children:[e.columnCount,`c`]}),(0,r.jsx)(`span`,{className:`flex-1 text-destructive truncate`,title:e.error,children:`err`}),(0,r.jsx)(Ii,{count:e.fkCount})]}):(0,r.jsxs)(`div`,{className:a,children:[(0,r.jsxs)(`span`,{className:`tabular-nums shrink-0 text-muted-foreground/70`,children:[e.columnCount,`c`]}),(0,r.jsx)(Fi,{percent:n,label:`${e.rowCount?.toLocaleString()??`unknown`} rows`}),(0,r.jsx)(`span`,{className:`tabular-nums shrink-0 text-right text-muted-foreground`,children:li(e.rowCount)}),(0,r.jsx)(Ii,{count:e.fkCount})]})}function zi({table:e,stats:t,maxRowCount:n,showStats:a,active:o,actions:s}){let c=(s??[]).filter(t=>t.enabled?.(e)??!0);return(0,r.jsxs)(`div`,{className:`group/tablerow flex items-stretch border-l-2 ${o?`bg-accent text-accent-foreground border-primary`:`text-foreground border-transparent hover:bg-muted/50`}`,children:[(0,r.jsx)(M,{to:`/${e.name}`,"aria-current":o?`page`:void 0,className:`plain-link flex-1 min-w-0 no-underline py-1.5 px-2 text-sm font-medium ${o?``:`hover:text-primary`}`,children:(0,r.jsxs)(`div`,{className:`flex flex-col gap-0.5 min-w-0`,children:[(0,r.jsx)(`span`,{className:`truncate`,title:e.label,children:e.label}),a&&(0,r.jsx)(Ri,{stats:t,maxRowCount:n})]})}),c.length>0&&(0,r.jsxs)(en,{children:[(0,r.jsx)(tn,{asChild:!0,children:(0,r.jsx)(`button`,{type:`button`,"aria-label":`Actions for ${e.label}`,className:`shrink-0 px-1 opacity-0 group-hover/tablerow:opacity-100 focus:opacity-100 data-[state=open]:opacity-100 text-muted-foreground hover:text-foreground`,children:(0,r.jsx)(i.MoreVertical,{className:`size-3.5`})})}),(0,r.jsx)(nn,{align:`start`,children:c.map(t=>{let n=t.icon;return(0,r.jsxs)(rn,{onSelect:()=>void t.onSelect(e),children:[n&&(0,r.jsx)(n,{className:`size-3.5`}),t.label]},t.id)})})]})]})}function Bi(e){let t=e.dbName.lastIndexOf(`.`);return t>0?e.dbName.slice(0,t):null}function Vi({schema:e,count:t,collapsed:n,context:a,onToggle:o}){let s=(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n?i.ChevronRight:i.ChevronDown,{className:`size-3.5 shrink-0 text-muted-foreground`}),(0,r.jsx)(`span`,{className:`truncate font-semibold`,title:e,children:e}),(0,r.jsx)(`span`,{className:`ml-auto shrink-0 tabular-nums text-[0.85em] text-muted-foreground`,children:t})]}),c=`flex items-center gap-1.5 w-full px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground bg-muted/40 border-y border-border sticky top-0 z-10`;return a?(0,r.jsx)(`div`,{className:c,"aria-hidden":`true`,children:s}):(0,r.jsx)(`button`,{type:`button`,onClick:o,"aria-expanded":!n,className:`${c} hover:bg-muted/70 text-left`,children:s})}function Hi(){let{showStats:e,tableActions:n}=de(),{loading:a,error:o,data:s}=U(),c=Oi(),{toast:l}=Mi(),u=(0,t.useCallback)(async(e,t)=>{try{let n=await c(e,t);l(n.truncated?`${e.label} exported (truncated to ${n.rowCount.toLocaleString()} of ${n.total.toLocaleString()} rows)`:`${e.label} exported (${n.rowCount.toLocaleString()} rows)`)}catch(e){l(`Export failed: ${e.message}`,`error`)}},[c,l]),d=(0,t.useMemo)(()=>[{id:`download-csv`,label:`Download CSV`,icon:i.Download,onSelect:e=>u(e,`csv`)},{id:`download-json`,label:`Download JSON`,icon:i.Download,onSelect:e=>u(e,`json`)},...n??[]],[u,n]),{stats:f,isLoading:p}=Wr(e),[m,h]=(0,t.useState)(``),[g,_]=(0,t.useState)(new Set),[v,y]=(0,t.useState)(0),b=Li(E().split(`/`)[1]??``),x=(0,t.useMemo)(()=>{let e=Object.values(f).map(e=>e.rowCount).filter(e=>e!==null);return e.length>0?Math.max(...e):0},[f]),S=m.trim().length>0,C=(0,t.useMemo)(()=>{let e=m.trim().toLowerCase();return e?s.filter(t=>{let n=Bi(t);return t.label.toLowerCase().includes(e)||t.dbName.toLowerCase().includes(e)||(n?.toLowerCase().includes(e)??!1)}):s},[s,m]),{schemas:w,grouped:T,multiSchema:D}=(0,t.useMemo)(()=>{let e=new Map;for(let t of C){let n=Bi(t),r=e.get(n)??[];r.push(t),e.set(n,r)}let t=[...e.keys()].filter(e=>e!==null).sort((e,t)=>e.localeCompare(t));return{schemas:t,grouped:e,multiSchema:t.length>1}},[C]),O=(0,t.useMemo)(()=>{let e=[];if(D){let t=[...w,...T.has(null)?[null]:[]];for(let n of t){let t=T.get(n===void 0?null:n)??[],r=!S&&g.has(n);if(e.push({kind:`group`,schema:n??`(no schema)`,count:t.length,collapsed:r}),!r)for(let r of t)e.push({kind:`table`,schema:n,table:r})}}else for(let t of C)e.push({kind:`table`,schema:Bi(t),table:t});return e},[D,w,T,C,g,S]);(0,t.useEffect)(()=>{y(0)},[m]);let k=Math.max(1,Math.ceil(O.length/Ni)),A=Math.min(v,k-1),j=A*Ni,M=O.slice(j,j+Ni),N=D&&M[0]?.kind===`table`&&M[0].schema?M[0].schema:null,ee=e=>_(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n});return a?(0,r.jsxs)(`div`,{className:`flex items-center justify-center gap-2 p-4`,children:[(0,r.jsx)(i.Loader2,{className:`size-4 animate-spin text-muted-foreground`}),(0,r.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`Loading...`})]}):o?(0,r.jsx)(Xt,{variant:`destructive`,className:`m-2`,children:(0,r.jsxs)(Qt,{children:[`Error: `,o.message]})}):s.length===0?(0,r.jsxs)(`div`,{className:`p-4 text-center text-sm text-muted-foreground`,children:[(0,r.jsx)(`p`,{className:`font-medium`,children:`No tables found`}),(0,r.jsx)(`p`,{className:`mt-1`,children:`The database may be empty or the connection may have failed.`})]}):(0,r.jsxs)(`div`,{className:`@container min-w-0 flex flex-col h-full`,children:[(0,r.jsxs)(`div`,{className:`sticky top-0 z-20 bg-background p-2 border-b border-border`,children:[(0,r.jsxs)(`div`,{className:`relative`,children:[(0,r.jsx)(i.Search,{className:`absolute left-2 top-1/2 -translate-y-1/2 size-4 text-muted-foreground pointer-events-none`}),(0,r.jsx)($t,{type:`search`,value:m,onChange:e=>h(e.target.value),placeholder:`Search tables...`,"aria-label":`Search tables`,className:`pl-8 pr-8 h-8 text-sm`}),S&&(0,r.jsx)(`button`,{type:`button`,onClick:()=>h(``),"aria-label":`Clear search`,className:`absolute right-1.5 top-1/2 -translate-y-1/2 p-0.5 rounded text-muted-foreground hover:text-foreground hover:bg-muted`,children:(0,r.jsx)(i.X,{className:`size-4`})})]}),S&&(0,r.jsxs)(`p`,{className:`mt-1 px-0.5 text-xs text-muted-foreground`,children:[C.length,` match`,C.length===1?``:`es`]})]}),(0,r.jsx)(`div`,{className:`flex-1 overflow-y-auto min-h-0`,children:O.length===0?(0,r.jsxs)(`p`,{className:`p-4 text-center text-sm text-muted-foreground`,children:[`No tables match “`,m,`”.`]}):(0,r.jsxs)(r.Fragment,{children:[N&&(0,r.jsx)(Vi,{schema:N,count:T.get(N)?.length??0,collapsed:!1,context:!0}),M.map(t=>t.kind===`group`?(0,r.jsx)(Vi,{schema:t.schema,count:t.count,collapsed:t.collapsed,onToggle:()=>ee(t.schema)},`g:${t.schema}`):(0,r.jsx)(zi,{table:t.table,stats:f[t.table.name]??{columnCount:t.table.columns.length,rowCount:null,fkCount:t.table.singleJoins.length,isLoading:p,error:null},maxRowCount:x,showStats:e,active:t.table.name===b,actions:d},`t:${t.table.name}`))]})}),k>1&&(0,r.jsxs)(`div`,{className:`sticky bottom-0 z-20 bg-background border-t border-border flex items-center justify-between gap-2 px-2 py-1.5`,children:[(0,r.jsx)(`button`,{type:`button`,onClick:()=>y(e=>Math.max(0,e-1)),disabled:A===0,"aria-label":`Previous page`,className:`p-1 rounded text-muted-foreground hover:text-foreground hover:bg-muted disabled:opacity-40 disabled:pointer-events-none`,children:(0,r.jsx)(i.ChevronLeft,{className:`size-4`})}),(0,r.jsxs)(`span`,{className:`text-xs text-muted-foreground tabular-nums`,children:[j+1,`–`,Math.min(j+Ni,O.length),` of `,O.length]}),(0,r.jsx)(`button`,{type:`button`,onClick:()=>y(e=>Math.min(k-1,e+1)),disabled:A>=k-1,"aria-label":`Next page`,className:`p-1 rounded text-muted-foreground hover:text-foreground hover:bg-muted disabled:opacity-40 disabled:pointer-events-none`,children:(0,r.jsx)(i.ChevronRight,{className:`size-4`})})]})]})}var Ui=W(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,outline:`border border-input bg-background text-foreground hover:bg-accent hover:text-accent-foreground`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`text-foreground hover:bg-accent hover:text-accent-foreground`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-10 px-4 py-2`,sm:`h-9 rounded-md px-3`,lg:`h-11 rounded-md px-8`,icon:`h-10 w-10`,"icon-sm":`h-8 w-8 rounded-md`}},defaultVariants:{variant:`default`,size:`default`}}),Z=t.forwardRef(({className:e,variant:t,size:n,asChild:i=!1,...a},s)=>(0,r.jsx)(i?o.Slot:`button`,{className:Y(Ui({variant:t,size:n,className:e})),ref:s,...a}));Z.displayName=`Button`;var Wi=t.forwardRef(({...e},t)=>(0,r.jsx)(a.HoverCard.Root,{"data-slot":`hover-card`,...e}));Wi.displayName=`HoverCard`;var Gi=t.forwardRef(({...e},t)=>(0,r.jsx)(a.HoverCard.Trigger,{"data-slot":`hover-card-trigger`,...e}));Gi.displayName=`HoverCardTrigger`;var Ki=t.forwardRef(({className:e,align:t=`center`,sideOffset:n=4,...i},o)=>(0,r.jsx)(a.HoverCard.Portal,{children:(0,r.jsx)(a.HoverCard.Content,{ref:o,"data-slot":`hover-card-content`,align:t,sideOffset:n,className:Y(`z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`,e),...i})}));Ki.displayName=`HoverCardContent`;function qi({...e}){return(0,r.jsx)(a.Select.Root,{"data-slot":`select`,...e})}function Ji({...e}){return(0,r.jsx)(a.Select.Value,{"data-slot":`select-value`,...e})}function Yi({className:e,size:t=`default`,children:n,...o}){return(0,r.jsxs)(a.Select.Trigger,{"data-slot":`select-trigger`,"data-size":t,className:Y(`flex w-fit items-center justify-between gap-2 rounded-md border border-input bg-transparent text-foreground px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground`,e),...o,children:[n,(0,r.jsx)(a.Select.Icon,{asChild:!0,children:(0,r.jsx)(i.ChevronDownIcon,{className:`size-4 opacity-50`})})]})}function Xi({className:e,children:t,position:n=`item-aligned`,align:i=`center`,...o}){return(0,r.jsx)(a.Select.Portal,{children:(0,r.jsxs)(a.Select.Content,{"data-slot":`select-content`,className:Y(`relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,n===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,e),position:n,align:i,...o,children:[(0,r.jsx)(Zi,{}),(0,r.jsx)(a.Select.Viewport,{className:Y(`p-1`,n===`popper`&&`h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1`),children:t}),(0,r.jsx)(Qi,{})]})})}function Q({className:e,children:t,...n}){return(0,r.jsxs)(a.Select.Item,{"data-slot":`select-item`,className:Y(`relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2`,e),...n,children:[(0,r.jsx)(`span`,{"data-slot":`select-item-indicator`,className:`absolute right-2 flex size-3.5 items-center justify-center`,children:(0,r.jsx)(a.Select.ItemIndicator,{children:(0,r.jsx)(i.CheckIcon,{className:`size-4`})})}),(0,r.jsx)(a.Select.ItemText,{children:t})]})}function Zi({className:e,...t}){return(0,r.jsx)(a.Select.ScrollUpButton,{"data-slot":`select-scroll-up-button`,className:Y(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,r.jsx)(i.ChevronUpIcon,{className:`size-4`})})}function Qi({className:e,...t}){return(0,r.jsx)(a.Select.ScrollDownButton,{"data-slot":`select-scroll-down-button`,className:Y(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,r.jsx)(i.ChevronDownIcon,{className:`size-4`})})}function $i(e){let n=(0,t.useRef)(null),r=(0,t.useRef)(null),i=(0,t.useRef)(e);i.current=e;let a=(0,t.useMemo)(()=>{let e=()=>{n.current&&=(clearTimeout(n.current),null)},t=()=>{e();let t=r.current;r.current=null,t?.()};return{schedule:a=>{e(),r.current=a,n.current=setTimeout(t,i.current)},cancel:()=>{e(),r.current=null},flush:t}},[]);return(0,t.useEffect)(()=>()=>a.flush(),[a]),a}var ea={_contains:`Contains`,_starts_with:`Starts with`,_ends_with:`Ends with`,_eq:`Equals`,_neq:`Not equals`,_null:`Is null`},ta=300;function na({column:e}){let n=(e.columnDef.meta?.filterOperators??[]).filter(e=>e in ea),a=e.getFilterValue(),[o,s]=(0,t.useState)(a?.operator??`_contains`),[c,l]=(0,t.useState)(a?.operator===`_null`?``:String(a?.value??``)),{schedule:u,cancel:d}=$i(ta),f=o===`_null`,p=(t,n)=>{if(t===`_null`){d(),e.setFilterValue({operator:`_null`,value:!0});return}if(!n){d(),e.setFilterValue(void 0);return}u(()=>e.setFilterValue({operator:t,value:n}))},m=t=>{s(t),t===`_null`?(l(``),p(`_null`,``)):c?p(t,c):(d(),e.setFilterValue(void 0))},h=e=>{l(e),p(o,e)};return n.length===0?null:(0,r.jsxs)(`div`,{className:`flex flex-col gap-2 p-2 min-w-[220px]`,children:[(0,r.jsxs)(qi,{value:o,onValueChange:m,children:[(0,r.jsx)(Yi,{size:`sm`,className:`w-full text-xs`,children:(0,r.jsx)(Ji,{})}),(0,r.jsx)(Xi,{children:n.map(e=>(0,r.jsx)(Q,{value:e,children:ea[e]},e))})]}),!f&&(0,r.jsx)($t,{placeholder:`Filter value...`,value:c,onChange:e=>h(e.target.value),className:`h-8 text-xs`,autoFocus:!0}),a!==void 0&&(0,r.jsxs)(Z,{variant:`ghost`,size:`sm`,className:`h-7 text-xs justify-start`,onClick:()=>{d(),s(`_contains`),l(``),e.setFilterValue(void 0)},children:[(0,r.jsx)(i.X,{className:`size-3`}),`Clear filter`]})]})}var ra={_eq:`Equals`,_neq:`Not equals`,_gt:`Greater than`,_gte:`Greater or equal`,_lt:`Less than`,_lte:`Less or equal`,_between:`Between`,_null:`Is null`},ia=300;function aa(e){return e.columnDef.meta?.paramType??``}function oa(e,t){return xn(e,t)}function sa({column:e}){let n=(e.columnDef.meta?.filterOperators??[]).filter(e=>e in ra),a=aa(e),o=gn(a),s=vn(a),c=e.getFilterValue(),l=c?.operator??`_eq`,[u,d]=(0,t.useState)(l),[f,p]=(0,t.useState)(()=>!c||c.operator===`_null`||c.operator===`_between`?``:String(c.value??``)),[m,h]=(0,t.useState)(()=>c?.operator===`_between`&&Array.isArray(c.value)?String(c.value[0]??``):``),[g,_]=(0,t.useState)(()=>c?.operator===`_between`&&Array.isArray(c.value)?String(c.value[1]??``):``),{schedule:v,cancel:y}=$i(ia),b=(t,n)=>{if(t===`_null`){y(),e.setFilterValue({operator:`_null`,value:!0});return}let r=oa(n,a);if(r===null){y(),e.setFilterValue(void 0);return}v(()=>e.setFilterValue({operator:t,value:r}))},x=(t,n)=>{let r=oa(t,a),i=oa(n,a);if(r===null||i===null){y(),e.setFilterValue(void 0);return}v(()=>e.setFilterValue({operator:`_between`,value:[r,i]}))},S=t=>{d(t),t===`_null`?(p(``),h(``),_(``),b(`_null`,``)):t===`_between`?(p(``),m&&g?x(m,g):(y(),e.setFilterValue(void 0))):(h(``),_(``),f?b(t,f):(y(),e.setFilterValue(void 0)))},C=e=>{p(e),b(u,e)},w=e=>{h(e),x(e,g)},T=e=>{_(e),x(m,e)},E=()=>{y(),d(`_eq`),p(``),h(``),_(``),e.setFilterValue(void 0)};if(n.length===0)return null;let D=u===`_between`,O=u===`_null`,k=s?`text`:`number`,A=s?o?`numeric`:`decimal`:void 0;return(0,r.jsxs)(`div`,{className:`flex flex-col gap-2 p-2 min-w-[220px]`,children:[(0,r.jsxs)(qi,{value:u,onValueChange:S,children:[(0,r.jsx)(Yi,{size:`sm`,className:`w-full text-xs`,children:(0,r.jsx)(Ji,{})}),(0,r.jsx)(Xi,{children:n.map(e=>(0,r.jsx)(Q,{value:e,children:ra[e]},e))})]}),!O&&!D&&(0,r.jsx)($t,{type:k,inputMode:A,placeholder:`Filter value...`,value:f,onChange:e=>C(e.target.value),className:`h-8 text-xs`,autoFocus:!0}),D&&(0,r.jsxs)(`div`,{className:`flex gap-2`,children:[(0,r.jsx)($t,{type:k,inputMode:A,placeholder:`Min`,value:m,onChange:e=>w(e.target.value),className:`h-8 text-xs`,autoFocus:!0}),(0,r.jsx)($t,{type:k,inputMode:A,placeholder:`Max`,value:g,onChange:e=>T(e.target.value),className:`h-8 text-xs`})]}),c!==void 0&&(0,r.jsxs)(Z,{variant:`ghost`,size:`sm`,className:`h-7 text-xs justify-start`,onClick:E,children:[(0,r.jsx)(i.X,{className:`size-3`}),`Clear filter`]})]})}var ca={_eq:`On`,_neq:`Not on`,_gt:`After`,_gte:`On or after`,_lt:`Before`,_lte:`On or before`,_between:`Between`,_null:`Is null`};function la({column:e}){let n=(e.columnDef.meta?.filterOperators??[]).filter(e=>e in ca),a=e.getFilterValue(),o=a?.operator??`_eq`,[s,c]=(0,t.useState)(o),[l,u]=(0,t.useState)(()=>!a||a.operator===`_null`||a.operator===`_between`?``:String(a.value??``)),[d,f]=(0,t.useState)(()=>a?.operator===`_between`&&Array.isArray(a.value)?String(a.value[0]??``):``),[p,m]=(0,t.useState)(()=>a?.operator===`_between`&&Array.isArray(a.value)?String(a.value[1]??``):``),h=(t,n)=>{if(t===`_null`){e.setFilterValue({operator:`_null`,value:!0});return}if(!n){e.setFilterValue(void 0);return}e.setFilterValue({operator:t,value:n})},g=(t,n)=>{if(!t||!n){e.setFilterValue(void 0);return}e.setFilterValue({operator:`_between`,value:[t,n]})},_=t=>{c(t),t===`_null`?(u(``),f(``),m(``),e.setFilterValue({operator:`_null`,value:!0})):t===`_between`?(u(``),d&&p?g(d,p):e.setFilterValue(void 0)):(f(``),m(``),l?h(t,l):e.setFilterValue(void 0))},v=e=>{u(e),h(s,e)},y=e=>{f(e),g(e,p)},b=e=>{m(e),g(d,e)},x=()=>{c(`_eq`),u(``),f(``),m(``),e.setFilterValue(void 0)};if(n.length===0)return null;let S=s===`_between`,C=s===`_null`;return(0,r.jsxs)(`div`,{className:`flex flex-col gap-2 p-2 min-w-[220px]`,children:[(0,r.jsxs)(qi,{value:s,onValueChange:_,children:[(0,r.jsx)(Yi,{size:`sm`,className:`w-full text-xs`,children:(0,r.jsx)(Ji,{})}),(0,r.jsx)(Xi,{children:n.map(e=>(0,r.jsx)(Q,{value:e,children:ca[e]},e))})]}),!C&&!S&&(0,r.jsx)($t,{type:`date`,value:l,onChange:e=>v(e.target.value),className:`h-8 text-xs`}),S&&(0,r.jsxs)(`div`,{className:`flex gap-2`,children:[(0,r.jsx)($t,{type:`date`,value:d,onChange:e=>y(e.target.value),className:`h-8 text-xs`}),(0,r.jsx)($t,{type:`date`,value:p,onChange:e=>b(e.target.value),className:`h-8 text-xs`})]}),a!==void 0&&(0,r.jsxs)(Z,{variant:`ghost`,size:`sm`,className:`h-7 text-xs justify-start`,onClick:x,children:[(0,r.jsx)(i.X,{className:`size-3`}),`Clear filter`]})]})}var ua={all:`All`,true:`True`,false:`False`,_null:`Is null`};function da(e){return e?e.operator===`_null`?`_null`:e.operator===`_eq`&&e.value===!0?`true`:e.operator===`_eq`&&e.value===!1?`false`:`all`:`all`}function fa({column:e}){let t=(e.columnDef.meta?.filterOperators??[]).includes(`_null`),n=e.getFilterValue(),a=da(n),o=t?[`all`,`true`,`false`,`_null`]:[`all`,`true`,`false`];return(0,r.jsxs)(`div`,{className:`flex flex-col gap-2 p-2 min-w-[220px]`,children:[(0,r.jsxs)(qi,{value:a,onValueChange:t=>{switch(t){case`true`:e.setFilterValue({operator:`_eq`,value:!0});break;case`false`:e.setFilterValue({operator:`_eq`,value:!1});break;case`_null`:e.setFilterValue({operator:`_null`,value:!0});break;default:e.setFilterValue(void 0)}},children:[(0,r.jsx)(Yi,{size:`sm`,className:`w-full text-xs`,children:(0,r.jsx)(Ji,{})}),(0,r.jsx)(Xi,{children:o.map(e=>(0,r.jsx)(Q,{value:e,children:ua[e]},e))})]}),n!==void 0&&(0,r.jsxs)(Z,{variant:`ghost`,size:`sm`,className:`h-7 text-xs justify-start`,onClick:()=>{e.setFilterValue(void 0)},children:[(0,r.jsx)(i.X,{className:`size-3`}),`Clear filter`]})]})}function pa(e,t,n,r){return!ir(e)||!ir(t)||!ir(n)||r&&(!r.some(e=>e.name===t)||!r.some(e=>e.name===n))?null:`query Lookup${e} { ${e}(sort: [${t}_asc], limit: 100) { data { id: ${n} label: ${t} } } }`}function ma({column:e,joinTable:t,joinLabelColumn:a,joinFkColumn:o}){let s=V(),c=U().findTable(t),l=pa(t,a,o,c?.columns),u=Cn(c?.columns.find(e=>e.name===o)),{data:d}=(0,n.useQuery)({queryKey:[`fkLookup`,t,a,o],queryFn:()=>s.query(l),staleTime:3e5,enabled:!!c&&!!l}),f=d?.[t]?.data??[],p=e.getFilterValue(),m=p?.operator===`_eq`&&p.value!=null?String(p.value):`all`;return(0,r.jsxs)(`div`,{className:`flex flex-col gap-2 p-2 min-w-[220px]`,children:[(0,r.jsxs)(qi,{value:m,onValueChange:t=>{if(t===`all`){e.setFilterValue(void 0);return}e.setFilterValue({operator:`_eq`,value:Sn(t,u)})},children:[(0,r.jsx)(Yi,{size:`sm`,className:`w-full text-xs`,children:(0,r.jsx)(Ji,{})}),(0,r.jsxs)(Xi,{children:[(0,r.jsx)(Q,{value:`all`,children:`All`}),f.map(e=>(0,r.jsx)(Q,{value:String(e.id),children:String(e.label)},String(e.id)))]})]}),p!==void 0&&(0,r.jsxs)(Z,{variant:`ghost`,size:`sm`,className:`h-7 text-xs justify-start`,onClick:()=>{e.setFilterValue(void 0)},children:[(0,r.jsx)(i.X,{className:`size-3`}),`Clear filter`]})]})}function ha(e){return(e.columnDef.meta?.paramType??``).replace(`!`,``)}function ga(e){return ha(e)===`String`}function _a(e){return _n(ha(e))}function va(e){return yn(ha(e))}function ya(e){return ha(e)===`Boolean`}function ba(e){let t=e.columnDef.meta;return t?.joinTable?{joinTable:t.joinTable,joinLabelColumn:t.joinLabelColumn??`id`,joinFkColumn:t.joinFkColumn??null,isSelfReference:t.isSelfReference===!0}:null}function xa(e){return e.columnDef.meta?.column}function Sa(e){let t=e.paramType.replace(`!`,``);if(e.dbType){let t=e.dbType.toUpperCase();return e.maxLength&&(t.includes(`VARCHAR`)||t.includes(`CHAR`))?`${t}(${e.maxLength})`:(t.includes(`DECIMAL`)||t.includes(`NUMERIC`),t)}return t}function Ca(e){let t=e.paramType.replace(`!`,``);return e.isPrimaryKey?(0,r.jsx)(i.Key,{className:`size-3.5`}):_n(t)?(0,r.jsx)(i.Hash,{className:`size-3.5`}):yn(t)?(0,r.jsx)(i.Calendar,{className:`size-3.5`}):t===`Boolean`?(0,r.jsx)(i.ToggleLeft,{className:`size-3.5`}):(0,r.jsx)(i.Type,{className:`size-3.5`})}function wa({column:e,fkMeta:t}){let n=Sa(e),a=e.isNullable,o=e.isPrimaryKey,s=e.isIdentity,c=e.defaultValue;return(0,r.jsxs)(`div`,{className:`space-y-2`,children:[(0,r.jsxs)(`div`,{className:`flex items-center gap-2 border-b pb-2`,children:[Ca(e),(0,r.jsx)(`span`,{className:`font-semibold text-foreground`,children:e.label})]}),(0,r.jsxs)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 text-xs`,children:[(0,r.jsx)(`dt`,{className:`text-muted-foreground`,children:`Type`}),(0,r.jsx)(`dd`,{className:`text-foreground font-medium`,children:n}),(0,r.jsx)(`dt`,{className:`text-muted-foreground`,children:`Nullable`}),(0,r.jsx)(`dd`,{className:`text-foreground`,children:a?`Yes`:`No`}),o&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`dt`,{className:`text-muted-foreground`,children:`Primary Key`}),(0,r.jsxs)(`dd`,{className:`text-foreground text-primary flex items-center gap-1`,children:[(0,r.jsx)(i.Key,{className:`size-3`}),`Yes`]})]}),s&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`dt`,{className:`text-muted-foreground`,children:`Auto Increment`}),(0,r.jsx)(`dd`,{className:`text-foreground`,children:`Yes`})]}),t&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`dt`,{className:`text-muted-foreground`,children:`Foreign Key`}),(0,r.jsxs)(`dd`,{className:`text-foreground text-primary flex items-center gap-1`,children:[(0,r.jsx)(i.Link2,{className:`size-3`}),t.joinTable,t.isSelfReference&&(0,r.jsx)(`span`,{className:`ml-1 px-1 rounded bg-primary/10 text-[10px] font-medium`,children:`self-ref`})]})]}),c!=null&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`dt`,{className:`text-muted-foreground`,children:`Default`}),(0,r.jsx)(`dd`,{className:`text-foreground font-mono text-xs truncate max-w-[150px]`,children:String(c)})]}),e.maxLength!==void 0&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`dt`,{className:`text-muted-foreground`,children:`Max Length`}),(0,r.jsx)(`dd`,{className:`text-foreground`,children:e.maxLength})]}),e.min!==void 0&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`dt`,{className:`text-muted-foreground`,children:`Min`}),(0,r.jsx)(`dd`,{className:`text-foreground`,children:e.min})]}),e.max!==void 0&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`dt`,{className:`text-muted-foreground`,children:`Max`}),(0,r.jsx)(`dd`,{className:`text-foreground`,children:e.max})]})]})]})}function Ta({column:e,table:t,title:n}){let a=t.options.meta?.onResetColumnWidths;if(!e.getCanSort())return(0,r.jsx)(`span`,{children:n});let o=e.getIsSorted(),s=e.getFilterValue()!==void 0,c=ba(e),l=c?.joinFkColumn??null,u=!l&&ga(e),d=!l&&_a(e),f=!l&&va(e),p=!l&&ya(e),m=xa(e),h=(0,r.jsxs)(Z,{variant:`ghost`,size:`sm`,className:Y(`-ml-2 h-7 text-xs data-[state=open]:bg-accent`,o&&`text-foreground`),children:[(0,r.jsx)(`span`,{children:n}),s&&(0,r.jsx)(i.Filter,{className:`size-3 text-primary`}),o===`desc`?(0,r.jsx)(i.ArrowDown,{className:`size-4`}):o===`asc`?(0,r.jsx)(i.ArrowUp,{className:`size-4`}):(0,r.jsx)(i.ArrowUpDown,{className:`size-4`})]});return(0,r.jsxs)(Wi,{openDelay:400,closeDelay:200,children:[(0,r.jsx)(Gi,{asChild:!0,children:(0,r.jsx)(`span`,{className:`inline-flex`,children:(0,r.jsxs)(en,{children:[(0,r.jsx)(tn,{asChild:!0,children:h}),(0,r.jsxs)(nn,{align:`start`,children:[m&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(on,{className:`text-xs font-normal text-muted-foreground`,children:[Sa(m),m.isNullable?` · nullable`:` · required`,m.isPrimaryKey?` · PK`:``,c?` · FK → ${c.joinTable}`:``]}),(0,r.jsx)(sn,{})]}),(0,r.jsxs)(rn,{onClick:()=>e.toggleSorting(!1),children:[(0,r.jsx)(i.ArrowUp,{className:`size-3.5 text-muted-foreground`}),`Asc`]}),(0,r.jsxs)(rn,{onClick:()=>e.toggleSorting(!0),children:[(0,r.jsx)(i.ArrowDown,{className:`size-3.5 text-muted-foreground`}),`Desc`]}),o&&(0,r.jsxs)(rn,{onClick:()=>e.clearSorting(),children:[(0,r.jsx)(i.ArrowUpDown,{className:`size-3.5 text-muted-foreground`}),`Clear`]}),u&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(sn,{}),(0,r.jsxs)(cn,{children:[(0,r.jsxs)(ln,{children:[(0,r.jsx)(i.Filter,{className:Y(`size-3.5`,s?`text-primary`:`text-muted-foreground`)}),`Filter`]}),(0,r.jsx)(un,{children:(0,r.jsx)(na,{column:e})})]})]}),d&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(sn,{}),(0,r.jsxs)(cn,{children:[(0,r.jsxs)(ln,{children:[(0,r.jsx)(i.Filter,{className:Y(`size-3.5`,s?`text-primary`:`text-muted-foreground`)}),`Filter`]}),(0,r.jsx)(un,{children:(0,r.jsx)(sa,{column:e})})]})]}),f&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(sn,{}),(0,r.jsxs)(cn,{children:[(0,r.jsxs)(ln,{children:[(0,r.jsx)(i.Filter,{className:Y(`size-3.5`,s?`text-primary`:`text-muted-foreground`)}),`Filter`]}),(0,r.jsx)(un,{children:(0,r.jsx)(la,{column:e})})]})]}),p&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(sn,{}),(0,r.jsxs)(cn,{children:[(0,r.jsxs)(ln,{children:[(0,r.jsx)(i.Filter,{className:Y(`size-3.5`,s?`text-primary`:`text-muted-foreground`)}),`Filter`]}),(0,r.jsx)(un,{children:(0,r.jsx)(fa,{column:e})})]})]}),c&&l&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(sn,{}),(0,r.jsxs)(cn,{children:[(0,r.jsxs)(ln,{children:[(0,r.jsx)(i.Filter,{className:Y(`size-3.5`,s?`text-primary`:`text-muted-foreground`)}),`Filter`]}),(0,r.jsx)(un,{children:(0,r.jsx)(ma,{column:e,joinTable:c.joinTable,joinLabelColumn:c.joinLabelColumn,joinFkColumn:l})})]})]}),e.getCanHide()&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(sn,{}),(0,r.jsxs)(rn,{onClick:()=>e.toggleVisibility(!1),children:[(0,r.jsx)(i.EyeOff,{className:`size-3.5 text-muted-foreground`}),`Hide`]})]}),a&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(sn,{}),(0,r.jsxs)(rn,{onClick:a,children:[(0,r.jsx)(i.RotateCcw,{className:`size-3.5 text-muted-foreground`}),`Reset column widths`]})]})]})]})})}),m&&(0,r.jsx)(Ki,{align:`start`,className:`w-64`,children:(0,r.jsx)(wa,{column:m,fkMeta:c})})]})}var Ea=5,Da=400,Oa=200;function ka(e){return e.filter(e=>!e.isPrimaryKey&&!Kn(e)).slice(0,Ea)}function Aa(e,t,n,r){return`query FkPreview($id: ${r}) { ${e}(filter: { ${n}: { _eq: $id } } limit: 1) { data { ${t.map(e=>e.name).join(` `)} } } }`}function ja(e,t,n,r){return`query FkPreview(${n}) { ${e}(filter: ${r} limit: 1) { data { ${t.map(e=>e.name).join(` `)} } } }`}function Ma(e,t,n,r,i,a,o){if(n.length===0)return null;if(r&&wn(r)&&i){let a=En(i,r,t);return a?{query:ja(e,n,a.params.join(`, `),a.filterText),variables:a.variables,cacheKey:a.variables}:null}let s=pr(t.columns.find(e=>e.name===o)?.paramType??`Int`),c={id:Sn(a,s)};return{query:Aa(e,n,o,s),variables:c,cacheKey:`${o}:${a}`}}function Na({tableName:e,fkValue:i,filterColumn:a,join:o,sourceRow:s,children:c}){let[l,u]=(0,t.useState)(!1),d=U(),f=V(),p=d.findTable(e),m=p?ka(p.columns):[],h=p?Ma(e,p,m,o,s,i,a):null,{data:g,isLoading:_}=(0,n.useQuery)({queryKey:[`fkPreview`,e,h?.cacheKey],queryFn:()=>f.query(h.query,h.variables),enabled:l&&!!h,staleTime:3e5}),v=g?.[e]?.data?.[0];return(0,r.jsxs)(Wi,{openDelay:Da,closeDelay:Oa,open:l,onOpenChange:u,children:[(0,r.jsx)(Gi,{asChild:!0,children:c}),(0,r.jsx)(Ki,{align:`start`,className:`w-72`,children:(0,r.jsxs)(`div`,{className:`space-y-2`,children:[(0,r.jsx)(`p`,{className:`text-sm font-semibold text-foreground`,children:p?.label??e}),_&&(0,r.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Loading...`}),v&&(0,r.jsx)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 text-xs`,children:m.map(e=>(0,r.jsxs)(`div`,{className:`contents`,children:[(0,r.jsx)(`dt`,{className:`text-muted-foreground truncate`,children:e.label}),(0,r.jsx)(`dd`,{className:`text-foreground truncate`,children:si(v[e.name],e,{formatKey:`display-format-preview`})})]},e.name))}),!_&&!v&&l&&(0,r.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Record not found`})]})})]})}var Pa={json:i.Braces,xml:i.Code,"php-serialized":i.Database,binary:i.Binary,longtext:i.FileText,text:i.FileText},Fa={json:`JSON`,xml:`XML`,"php-serialized":`PHP`,binary:`Binary`,longtext:`Text`,text:`Text`};function Ia(e,t){if(t===`json`)try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}return e}function La({value:e,dbType:t,onExpand:n,deferred:a}){if(e===void 0&&a)return(0,r.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-muted-foreground`,children:[(0,r.jsx)(i.FileText,{className:`size-3.5`}),(0,r.jsx)(`span`,{className:`text-xs italic`,children:`content`}),n&&(0,r.jsx)(`button`,{type:`button`,className:`shrink-0 opacity-40 hover:opacity-100 transition-opacity`,onClick:e=>{e.stopPropagation(),n()},"aria-label":`Expand content`,children:(0,r.jsx)(i.Expand,{className:`size-3`})})]});if(e==null)return(0,r.jsx)(Gr,{kind:`null`});let o=typeof e==`object`?JSON.stringify(e):String(e);if(o===``)return(0,r.jsx)(Gr,{kind:`empty`});let s=qn(o,t);if(s===`text`)return(0,r.jsx)(`span`,{children:o});if(s===`binary`)return(0,r.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-muted-foreground`,children:[(0,r.jsx)(i.Binary,{className:`size-3.5`}),(0,r.jsx)(`span`,{className:`text-xs font-mono`,children:Yn(o)}),n&&(0,r.jsx)(`button`,{type:`button`,className:`shrink-0 opacity-40 hover:opacity-100 transition-opacity`,onClick:e=>{e.stopPropagation(),n()},"aria-label":`Expand content`,children:(0,r.jsx)(i.Expand,{className:`size-3`})})]});let c=Pa[s],l=Jn(o);return o.length>80||s===`json`||s===`xml`||s===`php-serialized`?(0,r.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 max-w-full`,children:[(0,r.jsxs)(Wi,{openDelay:300,closeDelay:200,children:[(0,r.jsx)(Gi,{asChild:!0,children:(0,r.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1.5 text-left hover:text-primary transition-colors min-w-0`,children:[(0,r.jsx)(c,{className:`size-3 text-muted-foreground shrink-0`}),(0,r.jsx)(`span`,{className:`font-mono text-xs truncate`,children:l})]})}),(0,r.jsxs)(Ki,{side:`bottom`,align:`start`,className:`w-[420px] max-h-[320px] p-0`,children:[(0,r.jsxs)(`div`,{className:`flex items-center gap-1.5 px-3 py-1.5 border-b border-border bg-muted/30`,children:[(0,r.jsx)(c,{className:`size-3.5 text-muted-foreground`}),(0,r.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground`,children:Fa[s]}),(0,r.jsxs)(`span`,{className:`text-xs text-muted-foreground ml-auto`,children:[o.length,` chars`]})]}),(0,r.jsx)(`pre`,{className:`p-3 text-xs font-mono overflow-auto max-h-[280px] whitespace-pre-wrap break-all`,children:Ia(o,s)})]})]}),n&&(0,r.jsx)(`button`,{type:`button`,className:`shrink-0 opacity-40 hover:opacity-100 transition-opacity`,onClick:e=>{e.stopPropagation(),n()},"aria-label":`Expand content`,children:(0,r.jsx)(i.Expand,{className:`size-3`})})]}):(0,r.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,r.jsx)(c,{className:`size-3 text-muted-foreground shrink-0`}),(0,r.jsx)(`span`,{className:`font-mono text-xs`,children:o}),n&&(0,r.jsx)(`button`,{type:`button`,className:`shrink-0 opacity-40 hover:opacity-100 transition-opacity`,onClick:e=>{e.stopPropagation(),n()},"aria-label":`Expand content`,children:(0,r.jsx)(i.Expand,{className:`size-3`})})]})}var Ra=/^[_A-Za-z][_0-9A-Za-z]*$/;function za(e,t){return!e||!t?null:t.columns.find(t=>t.name===e||t.graphQlName===e)??null}var Ba={field:`key`,desc:!1};function Va(e,t){if(!e||!t)return null;let n=za(e,t);return n&&/^(byte|short|int|long|float|double|decimal|numeric|money|real)/i.test(n.paramType.replace(/[![\]]/g,``))?n:null}function Ha(e,t,n){let r=new URLSearchParams(e);return n?r.set(t,n):r.delete(t),r}function Ua(e){let t=new URLSearchParams(e);return t.delete(`gb`),t.delete(`gs`),t}function Wa(e,t,n){let r=[];try{let e=JSON.parse(n);if(Array.isArray(e)&&e.length===4){let[n,i,a,o]=e,s=typeof n==`string`?t.columns.find(e=>e.name===n):void 0;s&&o===s.paramType&&typeof i==`string`&&cr(s.paramType).includes(i)&&r.push({[s.graphQlName]:{[i]:i===`_null`?!!a:a}})}}catch{}for(let n of e){let e=n.value,i=t.columns.find(e=>e.name===n.id);!i||!cr(i.paramType).includes(e.operator)||(e.operator===`_null`||e.value!==void 0&&e.value!==null&&e.value!==``)&&r.push({[i.graphQlName]:{[e.operator]:e.operator===`_null`?!!e.value:e.value}})}return r.length===0?void 0:r.length===1?r[0]:{and:r}}function Ga(e,t,n,r,i=null,a=Ba){for(let n of[e.name,e.graphQlName,t.graphQlName,...i?[i.graphQlName]:[]])if(!Ra.test(n))throw Error(`Invalid schema-derived grouping name.`);let o=Wa(n,e,r),s=o?`($filter: ${ar(e)})`:``,c=[o?`filter: $filter`:``,`groupBy: [${t.graphQlName}]`].filter(Boolean).join(`, `);return{query:`query GridGrouping${s} { ${e.name}Aggregate(${c}) { ${t.graphQlName} _count${i?` _sum { ${i.graphQlName} }`:``} } }`,variables:o?{filter:o}:{},groupBy:t,sumBy:i,sort:a}}function Ka(e,t){return e.value===t.value?0:e.value===null||e.value===void 0?-1:t.value===null||t.value===void 0?1:typeof e.value==`number`&&typeof t.value==`number`?e.value-t.value:String(e.value).localeCompare(String(t.value))}function qa(e,t,n=Ba){if(n.field===`count`){let r=e.count-t.count;return r===0?Ka(e,t):n.desc?-r:r}let r=Ka(e,t);return n.desc?-r:r}function Ja(e,t,n,r,i=Ba){let a=e?.[`${t.name}Aggregate`];return Array.isArray(a)?a.map(e=>{let t=e;return{value:t[n.graphQlName],count:Number(t._count??0),sum:r?t._sum?.[r.graphQlName]:void 0}}).sort((e,t)=>qa(e,t,i)):[]}function Ya(e,t,n,r,i,a=[]){for(let n of[e.name,e.graphQlName,t.graphQlName,...e.columns.map(e=>e.graphQlName)])if(!Ra.test(n))throw Error(`Invalid schema-derived grouping name.`);let o=Wa(r,e,i),s={[t.graphQlName]:n==null?{_null:!0}:{_eq:n}},c=o?{and:[o,s]}:s,l=e.columns.map(e=>e.graphQlName).join(` `);return{query:`query GridGroupMembers($filter: ${ar(e)}, $sort: [${e.graphQlName}SortEnum!], $limit: Int, $offset: Int) { ${e.name}(filter: $filter sort: $sort limit: $limit offset: $offset) { total offset limit data { ${l} } } }`,variables:{filter:c,sort:[...a],limit:50,offset:0},responseKey:e.name}}function Xa(e,t){if(!e||!t)return``;if((t.primaryKeys?.length??0)<=1){let t=e?.id;return t==null?``:String(t)}return Mn(e,t,0)}function Za(e,t){let n=Math.max(0,t-1);return e<0?0:e>n?n:e}function Qa(e,t){return br(e)===t?e:xr(t)}function $a(e,t){return e[t.fieldName??t.destinationTable]?.data??[]}function eo(e,t){return e[t.fieldName??t.destinationTable]}function to(e,t){let n=e[t.fieldName??t.destinationTable];return n?.total??n?.data?.length??0}function no(e,t,n={}){return{sortField:e.name,paramType:e.paramType,filterOperators:t,column:e,...n}}function ro(e,t,n,a,o,s){let c=a.findTable(t.destinationTable),l=c?.labelColumn??`id`,u=wn(t),d=t.destinationTable===n.name,f=d?`Parent ${e.label}`:e.label;return{id:e.name,accessorKey:e.name,header:({column:e,table:t})=>(0,r.jsx)(Ta,{column:e,table:t,title:f}),enableSorting:!0,meta:no(e,o,{joinTable:t.destinationTable,joinLabelColumn:l,joinFkColumn:t.destinationColumnNames[0],isSelfReference:d,isCompositeFk:u}),cell:({row:e})=>{let n=eo(e.original,t);if(!n)return(0,r.jsx)(Gr,{kind:`null`});let a=Xa(n,c);if(!a)return(0,r.jsx)(r.Fragment,{children:n?.label});let o=u?a:An([a]);return(0,r.jsxs)(`span`,{className:`group/fk inline-flex items-center gap-0.5`,children:[(0,r.jsx)(Na,{tableName:t.destinationTable,fkValue:a,filterColumn:t.destinationColumnNames[0],join:t,sourceRow:e.original,children:(0,r.jsx)(M,{to:`/`+c?.name+`/`+o,className:`text-primary hover:text-primary/80 hover:underline`,children:n?.label})}),s&&(0,r.jsx)(Z,{variant:`ghost`,size:`icon-sm`,className:`opacity-0 group-hover/fk:opacity-100 size-5 shrink-0`,onClick:e=>{e.stopPropagation(),s({tableName:t.destinationTable,filterId:o})},"aria-label":`Open in side column`,title:`Open in side column`,children:(0,r.jsx)(i.PanelRight,{className:`size-3`})})]})}}}function io(e,t,n,i,a,o){if(t){let o=i.findTable(t.destinationTable)?.labelColumn??`id`,s=t.destinationTable===n.name;return{id:e.name,accessorFn:t=>e.name?String(t?.[e.name]??``):``,cell:({row:t})=>si(t.original[e.name],e),header:({column:t,table:n})=>(0,r.jsx)(Ta,{column:t,table:n,title:e.label}),enableSorting:!0,meta:no(e,a,{dbType:e.dbType,joinTable:t.destinationTable,joinLabelColumn:o,joinFkColumn:Tn(t,e.name),isSelfReference:s,isCompositeFk:!0,isCompositeFkMember:!0})}}return e?.paramType===`DateTime`?{id:e.name,accessorFn:t=>ci(t?.[e.name]),cell:({row:t})=>{let n=t.original[e.name];return n==null||n===``?(0,r.jsx)(Gr,{kind:n===``?`empty`:`null`}):ci(n)},header:({column:t,table:n})=>(0,r.jsx)(Ta,{column:t,table:n,title:e.label}),enableSorting:!0,meta:no(e,a,{dbType:e.dbType})}:Kn(e)||Wn(e)?{id:e.name,accessorFn:t=>e.name?String(t?.[e.name]??``):``,header:({column:t,table:n})=>(0,r.jsx)(Ta,{column:t,table:n,title:e.label}),enableSorting:!0,meta:no(e,a,{dbType:e.dbType}),cell:({row:t})=>(0,r.jsx)(La,{value:t.original[e.name],dbType:e.dbType,deferred:Kn(e),onExpand:o?()=>o(t.index,e.name):void 0})}:{id:e.name,accessorFn:t=>e.name?String(t?.[e.name]??``):``,cell:({row:t})=>{let n=t.original[e.name];if(typeof n==`string`&&n.length>1){let i=qn(n);if(i===`json`||i===`xml`||i===`php-serialized`)return(0,r.jsx)(La,{value:n,dbType:e.dbType,onExpand:o?()=>o(t.index,e.name):void 0})}return si(n,e)},header:({column:t,table:n})=>(0,r.jsx)(Ta,{column:t,table:n,title:e.label}),enableSorting:!0,meta:no(e,a,{dbType:e.dbType})}}var ao=(e,t,n,a)=>{if(!e||!t)return[];let o=e.columns.map(r=>{let i=e.singleJoins.find(e=>e.sourceColumnNames?.[0]===r.name),o=i?void 0:e.singleJoins.find(e=>(e.sourceColumnNames??[]).includes(r.name)),s=cr(r.paramType);return i?ro(r,i,e,t,s,a):io(r,o,e,t,s,n)}),s=e.multiJoins.map(n=>{let o=t.findTable(n.destinationTable),s=o?.labelColumn??`id`,c=n.destinationTable===e.name?`Child ${o?.label??n.destinationTable}`:o?.label??n.destinationTable;return{id:`join_${n.fieldName??n.destinationTable}`,header:c,enableSorting:!1,enableHiding:!0,cell:({row:t})=>{let c=fr(t.original,e,t.index),l=$a(t.original,n),u=to(t.original,n);if(u===0)return(0,r.jsx)(`span`,{className:`text-muted-foreground`,children:`—`});let d=l.slice(0,10).map(e=>String(e[s]??``)).filter(Boolean),f=o?.label??n.destinationTable;return(0,r.jsxs)(`span`,{className:`group/fk inline-flex items-center gap-1`,children:[(0,r.jsxs)(Wi,{openDelay:300,closeDelay:100,children:[(0,r.jsx)(Gi,{asChild:!0,children:(0,r.jsxs)(M,{to:`/`+o?.name+`/from/`+e.name+`/`+c,className:`inline-flex items-center gap-1 rounded-full border border-border bg-muted/40 px-2 py-0.5 text-xs font-medium text-primary hover:bg-muted hover:border-primary/40 transition-colors`,children:[(0,r.jsx)(i.List,{className:`size-3`}),u]})}),(0,r.jsxs)(Ki,{align:`start`,sideOffset:6,className:`w-auto max-w-xs p-3`,children:[(0,r.jsxs)(`div`,{className:`flex items-center gap-2 border-b pb-2 mb-2`,children:[(0,r.jsx)(i.List,{className:`size-3.5 text-primary`}),(0,r.jsxs)(`span`,{className:`text-xs font-semibold text-foreground`,children:[u,` `,f]})]}),(0,r.jsxs)(`ul`,{className:`space-y-0.5 text-xs text-foreground`,children:[d.map((e,t)=>(0,r.jsx)(`li`,{className:`truncate`,children:e},t)),u>10&&(0,r.jsxs)(`li`,{className:`text-muted-foreground italic`,children:[`… and `,u-10,` more`]})]})]})]}),a&&(0,r.jsx)(Z,{variant:`ghost`,size:`icon-sm`,className:`opacity-40 group-hover/fk:opacity-100 size-5 shrink-0 transition-opacity`,onClick:t=>{t.stopPropagation(),a({tableName:n.destinationTable,filterTable:e.name,filterId:c,...wn(n)?{}:{filterColumn:n.destinationColumnNames[0]}})},"aria-label":`Open in side column`,title:`Open in side column`,children:(0,r.jsx)(i.PanelRight,{className:`size-3`})})]})}}});return[...o,...s]};function oo(e,t,n,r,i){if(!r&&!i)return Er(e,t);let a=Hr(t,n,r,i);return a?Er(e,a.parentTable):Er(e,t)}function so(e,r,i,a,o,s){let{search:c}=A(),l=D(),u=c.get(`filter`)??``,d=c.get(`cf`)??``,f=c.get(`gb`),p=c.get(`gs`),m=(0,t.useMemo)(()=>dr(u).variables,[u]),h=U(),g=V(),[_,v]=(0,t.useState)([]),[y,b]=(0,t.useState)(Ba),[x,S]=(0,t.useState)(()=>xr(d)),[C,w]=(0,t.useState)(0),[T,E]=(0,t.useState)(50),O=(0,t.useRef)(e);e&&e!==O.current&&(O.current=e,_.length>0&&v([]),y!==Ba&&b(Ba),C!==0&&w(0)),(0,t.useEffect)(()=>{S(e=>Qa(e,d))},[d]);let k=(0,t.useMemo)(()=>Qa(x,d),[x,d]),j=(0,t.useRef)(e?.name),M=j.current!==e?.name;M&&(j.current=e?.name);let N=(0,t.useMemo)(()=>M?null:za(f,e),[M,f,e]),ee=(0,t.useMemo)(()=>M?null:Va(p,e),[M,p,e]);(0,t.useEffect)(()=>{if(!M||!f)return;let e=Ua(c).toString();l(e?`?${e}`:`?`)},[M,f,c,l]);let te=(0,t.useMemo)(()=>{if(!e)return`id`;let t=wr(e)[0]?.name;return t&&e.columns.some(e=>e.name===t)?t:Tr(e,e=>!Kn(e)&&!Wn(e))||(e.columns.find(e=>!Kn(e)&&!Wn(e))?.name??e.columns.at(0)?.name??`id`)},[e]),P=(0,t.useMemo)(()=>{if(_.length>0&&e){let t=_[0];if(e.columns.some(e=>e.name===t.id))return[`${t.id}_${t.desc?`desc`:`asc`}`]}return e?[`${te}_asc`]:[]},[_,e,te]),ne=(0,t.useMemo)(()=>Lr(e,h,u,k,r,i,a),[e,h,u,k,r,i,a]),re=(0,t.useMemo)(()=>e?vr(k,e).variables:{},[k,e]),F=(0,t.useMemo)(()=>{if(!e)return null;let t=yr(e,u,k);return t.length===0?null:Error(`These rows can't be shown because the filter can't be applied: ${t.join(` `)}`)},[e,u,k]),I=C*T,L=(0,t.useMemo)(()=>({sort:P,limit:T,offset:I,...r&&e?oo(r,e,h,i,a):{},...m,...re}),[P,T,I,r,e,h,i,a,m,re]),{isLoading:R,isFetching:ie,error:ae,data:z}=(0,n.useQuery)({queryKey:[`tableData`,e?.name,ne,L],queryFn:({signal:e})=>g.query(ne,L,{signal:e}),enabled:!!ne&&!!e&&P.length>0,placeholderData:(t,n)=>n?.queryKey?.[1]===e?.name?t:void 0}),B=(0,t.useMemo)(()=>e&&N?Ga(e,N,k,u,ee,y):null,[e,N,ee,k,u,y]),oe=(0,n.useQuery)({queryKey:[`tableGrouping`,e?.name,B?.query,B?.variables],queryFn:({signal:e})=>g.query(B.query,B.variables,{signal:e}),enabled:B!==null,placeholderData:void 0}),se=(0,t.useMemo)(()=>e?ao(e,h,o,s):[],[e,h,o,s]),H=(0,t.useMemo)(()=>r&&(i||a)&&e?Hr(e,h,i,a):null,[r,i,a,e,h]),ce,le;if(H&&!Rr(H.childJoin)){let e=Vr(z,H.parentTable.name,H.childField);ce=e.data,le=e.total}else{let t=z?.[e?.name??``];ce=t?.data??[],le=t?.total??0}let ue=Math.max(1,Math.ceil(le/T));(0,t.useEffect)(()=>{let e=Za(C,ue);e!==C&&w(e)},[C,ue]);let de=(0,t.useCallback)(e=>{let t=new URLSearchParams(c),n=br(e);n?t.set(`cf`,n):t.delete(`cf`);let r=t.toString();l(r?`?${r}`:`?`)},[c,l]),fe=(0,t.useCallback)(e=>{v(e),w(0)},[]),pe=(0,t.useCallback)(e=>{S(e),w(0),de(e)},[de]),me=(0,t.useCallback)(e=>{w(e)},[]),he=(0,t.useCallback)(e=>{E(e),w(0)},[]),ge=(0,t.useCallback)(e=>{let t=Ha(c,`gb`,e);e||t.delete(`gs`);let n=t.toString();l(n?`?${n}`:`?`)},[c,l]),_e=(0,t.useCallback)(e=>{let t=Ha(c,`gs`,e).toString();l(t?`?${t}`:`?`)},[c,l]),ve=e?.primaryKeys??[],ye=(0,t.useMemo)(()=>e?Lr(e,h,u,k,r,i,a,{fields:`export`}):null,[e,h,u,k,r,i,a]),be=(0,t.useCallback)(async t=>{if(!ye||!e)return null;let n=Ir(e),r=n.map(e=>e.label),i=n.map(e=>e.name);return xi({headers:r,format:t.format,signal:t.signal,onProgress:t.onProgress,rowCap:t.rowCap,csv:{bom:!0},fetchPage:async(t,n,r)=>{let a={...L,limit:n,offset:t},o=await g.query(ye,a,{signal:r}),s,c;if(H&&!Rr(H.childJoin)){let e=Vr(o,H.parentTable.name,H.childField);s=e.data,c=e.total}else{let t=o?.[e.name];s=t?.data??[],c=t?.total??0}return{rows:s.map(e=>i.map(t=>e[t])),total:c}}})},[ye,e,L,g,H]);return{columns:se,sorting:_,columnFilters:x,primaryKeys:ve,pageIndex:C,pageSize:T,pageCount:ue,rows:ce,totalRows:le,grouping:B?{column:B.groupBy,sumColumn:B.sumBy,rows:Ja(oe.data,e,B.groupBy,B.sumBy,B.sort),loading:oe.isLoading,error:oe.error,sort:B.sort,onSortChange:b,memberRequest:t=>Ya(e,B.groupBy,t,k,u,P)}:null,exportRows:be,loading:R,fetching:ie&&!R,error:F??ae,onSortingChange:fe,onColumnFiltersChange:pe,onPageIndexChange:me,onPageSizeChange:he,onGroupingChange:ge,onGroupingSumChange:_e}}var co=new Set([`tableData`,`editRecord`,`tableRowCounts`,`m2mRows`,`fkPreview`]),lo=new Set([`tableRef`,`tableRefValue`,`compositeTableRef`,`m2mTargets`]);function uo(e,t){return e.invalidateQueries({predicate:e=>{let[n,r]=e.queryKey;return typeof n==`string`?co.has(n)?!0:lo.has(n)?r===t:!1:!1}})}function fo(e){return typeof e==`object`&&!!e}function po(e,t){if(e==null)return null;if(!t)return e;let n=dn(t);if(vn(t))return String(e);if(gn(t)){let t=typeof e==`number`?e:Number(e);return Number.isFinite(t)?Math.trunc(t):e}if(n===`Float`){let t=typeof e==`number`?e:Number(e);return Number.isFinite(t)?t:e}return n===`Boolean`?typeof e==`boolean`?e:e===`true`||e===1:String(e)}function mo(e){X(e.name,`delete mutation table name`);let r=V(),i=(0,n.useQueryClient)(),{toast:a}=Mi(),o=(0,t.useMemo)(()=>{let t=new Map;for(let n of e.columns)t.set(n.name,n.paramType);return t},[e]),s=(0,t.useMemo)(()=>e.primaryKeys??[],[e]),c=t=>{if(s.length===0)throw Error(`Cannot delete from '${e.name}': the table has no primary key.`);let n={};if(fo(t)){for(let e of s){let r=t[e];if(r==null)throw Error(`Cannot delete row: missing value for primary-key column '${e}'.`);n[e]=po(r,o.get(e))}return n}if(s.length!==1)throw Error(`Cannot delete from '${e.name}': composite primary key requires an object key, not a scalar.`);if(t==null)throw Error(`Cannot delete row: missing value for primary-key column '${s[0]}'.`);let r=s[0];return n[r]=po(t,o.get(r)),n},l=(0,t.useMemo)(()=>`mutation deleteSingle($detail: Delete_${e.name}){
77
+ `);let r=t.map(t=>_i(e,t));return JSON.stringify(r,gi,2)}var yi=500;function bi(e){if(e?.aborted)throw new DOMException(`Export cancelled`,`AbortError`)}async function xi(e){let t=e.pageSize??yi,{rowCap:n,signal:r}=e,i=[],a=0,o=!1;bi(r);let s=0,c=1/0;for(;s<c;){bi(r);let l=await e.fetchPage(s,t,r);a=l.total,c=l.total;for(let e of l.rows){if(n!==void 0&&i.length>=n){o=!0;break}i.push(e)}if(e.onProgress?.(i.length,a),o||l.rows.length===0)break;s+=l.rows.length}return bi(r),{content:e.format===`csv`?hi(e.headers,i,e.csv):vi(e.headers,i,e.json),rowCount:i.length,total:a,truncated:o}}var Si=1e5;function Ci(e){return e===`csv`?`text/csv;charset=utf-8;`:`application/json;charset=utf-8;`}function wi(e,t){return`${e}-export.${t}`}function Ti(e,t,n){if(typeof window>`u`||typeof document>`u`)return;let r=new Blob([e],{type:n}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=t,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(i)}function Ei(e,t,n){if(typeof window>`u`||typeof document>`u`)return;let r=Uint8Array.from(atob(e),e=>e.charCodeAt(0)),i=new Blob([r],{type:n}),a=URL.createObjectURL(i),o=document.createElement(`a`);o.href=a,o.download=t,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(a)}function Di(){let{saveFile:e}=de();return(0,t.useCallback)(async(t,n,r)=>{if(e){await e({filename:t,content:n,mime:r});return}Ti(n,t,r)},[e])}function Oi(){let e=W(),n=V(),r=Di();return(0,t.useCallback)(async(t,i,a)=>{let o=Lr(t,e,``,[],void 0,void 0,void 0,{fields:`export`});if(!o)throw Error(`Cannot export '${t.label??t.name}': no export query could be built.`);let s=Ir(t),c=await xi({format:i,headers:s.map(e=>e.label??e.name),csv:{bom:!0},rowCap:Si,signal:a,fetchPage:async(e,r,i)=>{let a=(await n.query(o,{limit:r,offset:e},{signal:i}))?.[t.name],c=a?.data??[];return{rows:c.map(e=>s.map(t=>e[t.name])),total:a?.total??c.length}}});return await r(wi(t.name,i),c.content,Ci(i)),c},[e,n,r])}var ki=(0,t.createContext)({toast:()=>{}}),Ai=4e3;function ji({children:e}){let[n,a]=(0,t.useState)([]),o=(0,t.useRef)(0),s=(0,t.useRef)(new Set),c=(0,t.useCallback)(e=>{a(t=>t.filter(t=>t.id!==e))},[]),l=(0,t.useCallback)((e,t=`success`)=>{let n=o.current++;a(r=>[...r,{id:n,message:e,variant:t}]);let r=setTimeout(()=>{c(n),s.current.delete(r)},Ai);s.current.add(r)},[c]);(0,t.useEffect)(()=>{let e=s.current;return()=>{e.forEach(clearTimeout)}},[]);let u=(0,t.useMemo)(()=>({toast:l}),[l]);return(0,r.jsxs)(ki.Provider,{value:u,children:[e,(0,r.jsx)(`div`,{className:`fixed bottom-4 right-4 z-[100] flex flex-col gap-2 max-w-sm`,role:`region`,"aria-label":`Notifications`,children:n.map(e=>(0,r.jsxs)(`div`,{role:`status`,className:Y(`flex items-start gap-2 rounded-md border px-3 py-2 text-sm shadow-md bg-popover`,e.variant===`error`?`border-destructive/40 text-destructive`:`border-border text-foreground`),children:[e.variant===`error`?(0,r.jsx)(i.AlertCircle,{className:`size-4 shrink-0 mt-0.5`}):(0,r.jsx)(i.CheckCircle2,{className:`size-4 shrink-0 mt-0.5 text-green-600`}),(0,r.jsx)(`span`,{className:`flex-1 break-words`,children:e.message}),(0,r.jsx)(`button`,{type:`button`,onClick:()=>c(e.id),"aria-label":`Dismiss notification`,className:`shrink-0 opacity-60 hover:opacity-100`,children:(0,r.jsx)(i.X,{className:`size-3.5`})})]},e.id))})]})}function Mi(){return(0,t.useContext)(ki)}var Ni=50;function Pi(e,t){return e===null||t<=0?0:Math.max(2,Math.min(100,Math.round(e/t*100)))}function Fi({percent:e,label:t}){return(0,r.jsx)(`span`,{className:`flex-1 min-w-[1.5em] h-[0.5em] rounded-full bg-muted/70 overflow-hidden`,role:`img`,"aria-label":t,title:t,children:(0,r.jsx)(`span`,{className:`block h-full rounded-full bg-emerald-500/70 dark:bg-emerald-400/70`,style:{width:`${e}%`}})})}function Ii({count:e}){return e<=0?null:(0,r.jsxs)(`span`,{className:`shrink-0 rounded px-1 py-px text-[0.85em] tabular-nums bg-blue-100 text-blue-700 dark:bg-blue-900/60 dark:text-blue-300`,children:[e,` FK`]})}function Li(e){try{return decodeURIComponent(e)}catch{return e}}function Ri({stats:e,maxRowCount:t}){let n=Pi(e.rowCount,t),a=`flex items-center gap-1.5 text-xs leading-none min-w-0`;return e.isLoading?(0,r.jsxs)(`div`,{className:`${a} text-muted-foreground`,children:[(0,r.jsxs)(`span`,{className:`tabular-nums shrink-0`,children:[e.columnCount,`c`]}),(0,r.jsx)(`span`,{className:`flex-1 min-w-[1.5em] h-[0.5em] rounded-full bg-muted/70 overflow-hidden`,children:(0,r.jsx)(`span`,{className:`block h-full w-1/3 rounded-full bg-muted-foreground/30 animate-pulse`})}),(0,r.jsx)(i.Loader2,{className:`size-[1em] shrink-0 animate-spin`}),(0,r.jsx)(Ii,{count:e.fkCount})]}):e.error?(0,r.jsxs)(`div`,{className:a,children:[(0,r.jsxs)(`span`,{className:`tabular-nums shrink-0 text-muted-foreground`,children:[e.columnCount,`c`]}),(0,r.jsx)(`span`,{className:`flex-1 text-destructive truncate`,title:e.error,children:`err`}),(0,r.jsx)(Ii,{count:e.fkCount})]}):(0,r.jsxs)(`div`,{className:a,children:[(0,r.jsxs)(`span`,{className:`tabular-nums shrink-0 text-muted-foreground/70`,children:[e.columnCount,`c`]}),(0,r.jsx)(Fi,{percent:n,label:`${e.rowCount?.toLocaleString()??`unknown`} rows`}),(0,r.jsx)(`span`,{className:`tabular-nums shrink-0 text-right text-muted-foreground`,children:li(e.rowCount)}),(0,r.jsx)(Ii,{count:e.fkCount})]})}function zi({table:e,stats:t,maxRowCount:n,showStats:a,active:o,actions:s}){let c=(s??[]).filter(t=>t.enabled?.(e)??!0);return(0,r.jsxs)(`div`,{className:`group/tablerow flex items-stretch border-l-2 ${o?`bg-accent text-accent-foreground border-primary`:`text-foreground border-transparent hover:bg-muted/50`}`,children:[(0,r.jsx)(M,{to:`/${e.name}`,"aria-current":o?`page`:void 0,className:`plain-link flex-1 min-w-0 no-underline py-1.5 px-2 text-sm font-medium ${o?``:`hover:text-primary`}`,children:(0,r.jsxs)(`div`,{className:`flex flex-col gap-0.5 min-w-0`,children:[(0,r.jsx)(`span`,{className:`truncate`,title:e.label,children:e.label}),a&&(0,r.jsx)(Ri,{stats:t,maxRowCount:n})]})}),c.length>0&&(0,r.jsxs)(en,{children:[(0,r.jsx)(tn,{asChild:!0,children:(0,r.jsx)(`button`,{type:`button`,"aria-label":`Actions for ${e.label}`,className:`shrink-0 px-1 opacity-0 group-hover/tablerow:opacity-100 focus:opacity-100 data-[state=open]:opacity-100 text-muted-foreground hover:text-foreground`,children:(0,r.jsx)(i.MoreVertical,{className:`size-3.5`})})}),(0,r.jsx)(nn,{align:`start`,children:c.map(t=>{let n=t.icon;return(0,r.jsxs)(rn,{onSelect:()=>void t.onSelect(e),children:[n&&(0,r.jsx)(n,{className:`size-3.5`}),t.label]},t.id)})})]})]})}function Bi(e){let t=e.dbName.lastIndexOf(`.`);return t>0?e.dbName.slice(0,t):null}function Vi({schema:e,count:t,collapsed:n,context:a,onToggle:o}){let s=(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n?i.ChevronRight:i.ChevronDown,{className:`size-3.5 shrink-0 text-muted-foreground`}),(0,r.jsx)(`span`,{className:`truncate font-semibold`,title:e,children:e}),(0,r.jsx)(`span`,{className:`ml-auto shrink-0 tabular-nums text-[0.85em] text-muted-foreground`,children:t})]}),c=`flex items-center gap-1.5 w-full px-2 py-1 text-xs uppercase tracking-wide text-muted-foreground bg-muted/40 border-y border-border sticky top-0 z-10`;return a?(0,r.jsx)(`div`,{className:c,"aria-hidden":`true`,children:s}):(0,r.jsx)(`button`,{type:`button`,onClick:o,"aria-expanded":!n,className:`${c} hover:bg-muted/70 text-left`,children:s})}function Hi(){let{showStats:e,tableActions:n}=de(),{loading:a,error:o,data:s}=W(),c=Oi(),{toast:l}=Mi(),u=(0,t.useCallback)(async(e,t)=>{try{let n=await c(e,t);l(n.truncated?`${e.label} exported (truncated to ${n.rowCount.toLocaleString()} of ${n.total.toLocaleString()} rows)`:`${e.label} exported (${n.rowCount.toLocaleString()} rows)`)}catch(e){l(`Export failed: ${e.message}`,`error`)}},[c,l]),d=(0,t.useMemo)(()=>[{id:`download-csv`,label:`Download CSV`,icon:i.Download,onSelect:e=>u(e,`csv`)},{id:`download-json`,label:`Download JSON`,icon:i.Download,onSelect:e=>u(e,`json`)},...n??[]],[u,n]),{stats:f,isLoading:p}=Wr(e),[m,h]=(0,t.useState)(``),[g,_]=(0,t.useState)(new Set),[v,y]=(0,t.useState)(0),b=Li(E().split(`/`)[1]??``),x=(0,t.useMemo)(()=>{let e=Object.values(f).map(e=>e.rowCount).filter(e=>e!==null);return e.length>0?Math.max(...e):0},[f]),S=m.trim().length>0,C=(0,t.useMemo)(()=>{let e=m.trim().toLowerCase();return e?s.filter(t=>{let n=Bi(t);return t.label.toLowerCase().includes(e)||t.dbName.toLowerCase().includes(e)||(n?.toLowerCase().includes(e)??!1)}):s},[s,m]),{schemas:w,grouped:T,multiSchema:D}=(0,t.useMemo)(()=>{let e=new Map;for(let t of C){let n=Bi(t),r=e.get(n)??[];r.push(t),e.set(n,r)}let t=[...e.keys()].filter(e=>e!==null).sort((e,t)=>e.localeCompare(t));return{schemas:t,grouped:e,multiSchema:t.length>1}},[C]),O=(0,t.useMemo)(()=>{let e=[];if(D){let t=[...w,...T.has(null)?[null]:[]];for(let n of t){let t=T.get(n===void 0?null:n)??[],r=!S&&g.has(n);if(e.push({kind:`group`,schema:n??`(no schema)`,count:t.length,collapsed:r}),!r)for(let r of t)e.push({kind:`table`,schema:n,table:r})}}else for(let t of C)e.push({kind:`table`,schema:Bi(t),table:t});return e},[D,w,T,C,g,S]);(0,t.useEffect)(()=>{y(0)},[m]);let k=Math.max(1,Math.ceil(O.length/Ni)),A=Math.min(v,k-1),j=A*Ni,M=O.slice(j,j+Ni),N=D&&M[0]?.kind===`table`&&M[0].schema?M[0].schema:null,P=e=>_(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n});return a?(0,r.jsxs)(`div`,{className:`flex items-center justify-center gap-2 p-4`,children:[(0,r.jsx)(i.Loader2,{className:`size-4 animate-spin text-muted-foreground`}),(0,r.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`Loading...`})]}):o?(0,r.jsx)(Xt,{variant:`destructive`,className:`m-2`,children:(0,r.jsxs)(Qt,{children:[`Error: `,o.message]})}):s.length===0?(0,r.jsxs)(`div`,{className:`p-4 text-center text-sm text-muted-foreground`,children:[(0,r.jsx)(`p`,{className:`font-medium`,children:`No tables found`}),(0,r.jsx)(`p`,{className:`mt-1`,children:`The database may be empty or the connection may have failed.`})]}):(0,r.jsxs)(`div`,{className:`@container min-w-0 flex flex-col h-full`,children:[(0,r.jsxs)(`div`,{className:`sticky top-0 z-20 bg-background p-2 border-b border-border`,children:[(0,r.jsxs)(`div`,{className:`relative`,children:[(0,r.jsx)(i.Search,{className:`absolute left-2 top-1/2 -translate-y-1/2 size-4 text-muted-foreground pointer-events-none`}),(0,r.jsx)($t,{type:`search`,value:m,onChange:e=>h(e.target.value),placeholder:`Search tables...`,"aria-label":`Search tables`,className:`pl-8 pr-8 h-8 text-sm`}),S&&(0,r.jsx)(`button`,{type:`button`,onClick:()=>h(``),"aria-label":`Clear search`,className:`absolute right-1.5 top-1/2 -translate-y-1/2 p-0.5 rounded text-muted-foreground hover:text-foreground hover:bg-muted`,children:(0,r.jsx)(i.X,{className:`size-4`})})]}),S&&(0,r.jsxs)(`p`,{className:`mt-1 px-0.5 text-xs text-muted-foreground`,children:[C.length,` match`,C.length===1?``:`es`]})]}),(0,r.jsx)(`div`,{className:`flex-1 overflow-y-auto min-h-0`,children:O.length===0?(0,r.jsxs)(`p`,{className:`p-4 text-center text-sm text-muted-foreground`,children:[`No tables match “`,m,`”.`]}):(0,r.jsxs)(r.Fragment,{children:[N&&(0,r.jsx)(Vi,{schema:N,count:T.get(N)?.length??0,collapsed:!1,context:!0}),M.map(t=>t.kind===`group`?(0,r.jsx)(Vi,{schema:t.schema,count:t.count,collapsed:t.collapsed,onToggle:()=>P(t.schema)},`g:${t.schema}`):(0,r.jsx)(zi,{table:t.table,stats:f[t.table.name]??{columnCount:t.table.columns.length,rowCount:null,fkCount:t.table.singleJoins.length,isLoading:p,error:null},maxRowCount:x,showStats:e,active:t.table.name===b,actions:d},`t:${t.table.name}`))]})}),k>1&&(0,r.jsxs)(`div`,{className:`sticky bottom-0 z-20 bg-background border-t border-border flex items-center justify-between gap-2 px-2 py-1.5`,children:[(0,r.jsx)(`button`,{type:`button`,onClick:()=>y(e=>Math.max(0,e-1)),disabled:A===0,"aria-label":`Previous page`,className:`p-1 rounded text-muted-foreground hover:text-foreground hover:bg-muted disabled:opacity-40 disabled:pointer-events-none`,children:(0,r.jsx)(i.ChevronLeft,{className:`size-4`})}),(0,r.jsxs)(`span`,{className:`text-xs text-muted-foreground tabular-nums`,children:[j+1,`–`,Math.min(j+Ni,O.length),` of `,O.length]}),(0,r.jsx)(`button`,{type:`button`,onClick:()=>y(e=>Math.min(k-1,e+1)),disabled:A>=k-1,"aria-label":`Next page`,className:`p-1 rounded text-muted-foreground hover:text-foreground hover:bg-muted disabled:opacity-40 disabled:pointer-events-none`,children:(0,r.jsx)(i.ChevronRight,{className:`size-4`})})]})]})}var Ui=G(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,outline:`border border-input bg-background text-foreground hover:bg-accent hover:text-accent-foreground`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`text-foreground hover:bg-accent hover:text-accent-foreground`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-10 px-4 py-2`,sm:`h-9 rounded-md px-3`,lg:`h-11 rounded-md px-8`,icon:`h-10 w-10`,"icon-sm":`h-8 w-8 rounded-md`}},defaultVariants:{variant:`default`,size:`default`}}),Z=t.forwardRef(({className:e,variant:t,size:n,asChild:i=!1,...a},s)=>(0,r.jsx)(i?o.Slot:`button`,{className:Y(Ui({variant:t,size:n,className:e})),ref:s,...a}));Z.displayName=`Button`;var Wi=t.forwardRef(({...e},t)=>(0,r.jsx)(a.HoverCard.Root,{"data-slot":`hover-card`,...e}));Wi.displayName=`HoverCard`;var Gi=t.forwardRef(({...e},t)=>(0,r.jsx)(a.HoverCard.Trigger,{"data-slot":`hover-card-trigger`,...e}));Gi.displayName=`HoverCardTrigger`;var Ki=t.forwardRef(({className:e,align:t=`center`,sideOffset:n=4,...i},o)=>(0,r.jsx)(a.HoverCard.Portal,{children:(0,r.jsx)(a.HoverCard.Content,{ref:o,"data-slot":`hover-card-content`,align:t,sideOffset:n,className:Y(`z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`,e),...i})}));Ki.displayName=`HoverCardContent`;function qi({...e}){return(0,r.jsx)(a.Select.Root,{"data-slot":`select`,...e})}function Ji({...e}){return(0,r.jsx)(a.Select.Value,{"data-slot":`select-value`,...e})}function Yi({className:e,size:t=`default`,children:n,...o}){return(0,r.jsxs)(a.Select.Trigger,{"data-slot":`select-trigger`,"data-size":t,className:Y(`flex w-fit items-center justify-between gap-2 rounded-md border border-input bg-transparent text-foreground px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground`,e),...o,children:[n,(0,r.jsx)(a.Select.Icon,{asChild:!0,children:(0,r.jsx)(i.ChevronDownIcon,{className:`size-4 opacity-50`})})]})}function Xi({className:e,children:t,position:n=`popper`,align:i=`center`,...o}){return(0,r.jsx)(a.Select.Portal,{children:(0,r.jsxs)(a.Select.Content,{"data-slot":`select-content`,className:Y(`relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,n===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,e),position:n,align:i,...o,children:[(0,r.jsx)(Zi,{}),(0,r.jsx)(a.Select.Viewport,{className:Y(`p-1`,n===`popper`&&`h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1`),children:t}),(0,r.jsx)(Qi,{})]})})}function Q({className:e,children:t,...n}){return(0,r.jsxs)(a.Select.Item,{"data-slot":`select-item`,className:Y(`relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2`,e),...n,children:[(0,r.jsx)(`span`,{"data-slot":`select-item-indicator`,className:`absolute right-2 flex size-3.5 items-center justify-center`,children:(0,r.jsx)(a.Select.ItemIndicator,{children:(0,r.jsx)(i.CheckIcon,{className:`size-4`})})}),(0,r.jsx)(a.Select.ItemText,{children:t})]})}function Zi({className:e,...t}){return(0,r.jsx)(a.Select.ScrollUpButton,{"data-slot":`select-scroll-up-button`,className:Y(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,r.jsx)(i.ChevronUpIcon,{className:`size-4`})})}function Qi({className:e,...t}){return(0,r.jsx)(a.Select.ScrollDownButton,{"data-slot":`select-scroll-down-button`,className:Y(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,r.jsx)(i.ChevronDownIcon,{className:`size-4`})})}function $i(e){let n=(0,t.useRef)(null),r=(0,t.useRef)(null),i=(0,t.useRef)(e);i.current=e;let a=(0,t.useMemo)(()=>{let e=()=>{n.current&&=(clearTimeout(n.current),null)},t=()=>{e();let t=r.current;r.current=null,t?.()};return{schedule:a=>{e(),r.current=a,n.current=setTimeout(t,i.current)},cancel:()=>{e(),r.current=null},flush:t}},[]);return(0,t.useEffect)(()=>()=>a.flush(),[a]),a}var ea={_contains:`Contains`,_starts_with:`Starts with`,_ends_with:`Ends with`,_eq:`Equals`,_neq:`Not equals`,_null:`Is null`},ta=300;function na({column:e}){let n=(e.columnDef.meta?.filterOperators??[]).filter(e=>e in ea),a=e.getFilterValue(),[o,s]=(0,t.useState)(a?.operator??`_contains`),[c,l]=(0,t.useState)(a?.operator===`_null`?``:String(a?.value??``)),{schedule:u,cancel:d}=$i(ta),f=o===`_null`,p=(t,n)=>{if(t===`_null`){d(),e.setFilterValue({operator:`_null`,value:!0});return}if(!n){d(),e.setFilterValue(void 0);return}u(()=>e.setFilterValue({operator:t,value:n}))},m=t=>{s(t),t===`_null`?(l(``),p(`_null`,``)):c?p(t,c):(d(),e.setFilterValue(void 0))},h=e=>{l(e),p(o,e)};return n.length===0?null:(0,r.jsxs)(`div`,{className:`flex flex-col gap-2 p-2 min-w-[220px]`,children:[(0,r.jsxs)(qi,{value:o,onValueChange:m,children:[(0,r.jsx)(Yi,{size:`sm`,className:`w-full text-xs`,children:(0,r.jsx)(Ji,{})}),(0,r.jsx)(Xi,{children:n.map(e=>(0,r.jsx)(Q,{value:e,children:ea[e]},e))})]}),!f&&(0,r.jsx)($t,{placeholder:`Filter value...`,value:c,onChange:e=>h(e.target.value),className:`h-8 text-xs`,autoFocus:!0}),a!==void 0&&(0,r.jsxs)(Z,{variant:`ghost`,size:`sm`,className:`h-7 text-xs justify-start`,onClick:()=>{d(),s(`_contains`),l(``),e.setFilterValue(void 0)},children:[(0,r.jsx)(i.X,{className:`size-3`}),`Clear filter`]})]})}var ra={_eq:`Equals`,_neq:`Not equals`,_gt:`Greater than`,_gte:`Greater or equal`,_lt:`Less than`,_lte:`Less or equal`,_between:`Between`,_null:`Is null`},ia=300;function aa(e){return e.columnDef.meta?.paramType??``}function oa(e,t){return xn(e,t)}function sa({column:e}){let n=(e.columnDef.meta?.filterOperators??[]).filter(e=>e in ra),a=aa(e),o=gn(a),s=vn(a),c=e.getFilterValue(),l=c?.operator??`_eq`,[u,d]=(0,t.useState)(l),[f,p]=(0,t.useState)(()=>!c||c.operator===`_null`||c.operator===`_between`?``:String(c.value??``)),[m,h]=(0,t.useState)(()=>c?.operator===`_between`&&Array.isArray(c.value)?String(c.value[0]??``):``),[g,_]=(0,t.useState)(()=>c?.operator===`_between`&&Array.isArray(c.value)?String(c.value[1]??``):``),{schedule:v,cancel:y}=$i(ia),b=(t,n)=>{if(t===`_null`){y(),e.setFilterValue({operator:`_null`,value:!0});return}let r=oa(n,a);if(r===null){y(),e.setFilterValue(void 0);return}v(()=>e.setFilterValue({operator:t,value:r}))},x=(t,n)=>{let r=oa(t,a),i=oa(n,a);if(r===null||i===null){y(),e.setFilterValue(void 0);return}v(()=>e.setFilterValue({operator:`_between`,value:[r,i]}))},S=t=>{d(t),t===`_null`?(p(``),h(``),_(``),b(`_null`,``)):t===`_between`?(p(``),m&&g?x(m,g):(y(),e.setFilterValue(void 0))):(h(``),_(``),f?b(t,f):(y(),e.setFilterValue(void 0)))},C=e=>{p(e),b(u,e)},w=e=>{h(e),x(e,g)},T=e=>{_(e),x(m,e)},E=()=>{y(),d(`_eq`),p(``),h(``),_(``),e.setFilterValue(void 0)};if(n.length===0)return null;let D=u===`_between`,O=u===`_null`,k=s?`text`:`number`,A=s?o?`numeric`:`decimal`:void 0;return(0,r.jsxs)(`div`,{className:`flex flex-col gap-2 p-2 min-w-[220px]`,children:[(0,r.jsxs)(qi,{value:u,onValueChange:S,children:[(0,r.jsx)(Yi,{size:`sm`,className:`w-full text-xs`,children:(0,r.jsx)(Ji,{})}),(0,r.jsx)(Xi,{children:n.map(e=>(0,r.jsx)(Q,{value:e,children:ra[e]},e))})]}),!O&&!D&&(0,r.jsx)($t,{type:k,inputMode:A,placeholder:`Filter value...`,value:f,onChange:e=>C(e.target.value),className:`h-8 text-xs`,autoFocus:!0}),D&&(0,r.jsxs)(`div`,{className:`flex gap-2`,children:[(0,r.jsx)($t,{type:k,inputMode:A,placeholder:`Min`,value:m,onChange:e=>w(e.target.value),className:`h-8 text-xs`,autoFocus:!0}),(0,r.jsx)($t,{type:k,inputMode:A,placeholder:`Max`,value:g,onChange:e=>T(e.target.value),className:`h-8 text-xs`})]}),c!==void 0&&(0,r.jsxs)(Z,{variant:`ghost`,size:`sm`,className:`h-7 text-xs justify-start`,onClick:E,children:[(0,r.jsx)(i.X,{className:`size-3`}),`Clear filter`]})]})}var ca={_eq:`On`,_neq:`Not on`,_gt:`After`,_gte:`On or after`,_lt:`Before`,_lte:`On or before`,_between:`Between`,_null:`Is null`};function la({column:e}){let n=(e.columnDef.meta?.filterOperators??[]).filter(e=>e in ca),a=e.getFilterValue(),o=a?.operator??`_eq`,[s,c]=(0,t.useState)(o),[l,u]=(0,t.useState)(()=>!a||a.operator===`_null`||a.operator===`_between`?``:String(a.value??``)),[d,f]=(0,t.useState)(()=>a?.operator===`_between`&&Array.isArray(a.value)?String(a.value[0]??``):``),[p,m]=(0,t.useState)(()=>a?.operator===`_between`&&Array.isArray(a.value)?String(a.value[1]??``):``),h=(t,n)=>{if(t===`_null`){e.setFilterValue({operator:`_null`,value:!0});return}if(!n){e.setFilterValue(void 0);return}e.setFilterValue({operator:t,value:n})},g=(t,n)=>{if(!t||!n){e.setFilterValue(void 0);return}e.setFilterValue({operator:`_between`,value:[t,n]})},_=t=>{c(t),t===`_null`?(u(``),f(``),m(``),e.setFilterValue({operator:`_null`,value:!0})):t===`_between`?(u(``),d&&p?g(d,p):e.setFilterValue(void 0)):(f(``),m(``),l?h(t,l):e.setFilterValue(void 0))},v=e=>{u(e),h(s,e)},y=e=>{f(e),g(e,p)},b=e=>{m(e),g(d,e)},x=()=>{c(`_eq`),u(``),f(``),m(``),e.setFilterValue(void 0)};if(n.length===0)return null;let S=s===`_between`,C=s===`_null`;return(0,r.jsxs)(`div`,{className:`flex flex-col gap-2 p-2 min-w-[220px]`,children:[(0,r.jsxs)(qi,{value:s,onValueChange:_,children:[(0,r.jsx)(Yi,{size:`sm`,className:`w-full text-xs`,children:(0,r.jsx)(Ji,{})}),(0,r.jsx)(Xi,{children:n.map(e=>(0,r.jsx)(Q,{value:e,children:ca[e]},e))})]}),!C&&!S&&(0,r.jsx)($t,{type:`date`,value:l,onChange:e=>v(e.target.value),className:`h-8 text-xs`}),S&&(0,r.jsxs)(`div`,{className:`flex gap-2`,children:[(0,r.jsx)($t,{type:`date`,value:d,onChange:e=>y(e.target.value),className:`h-8 text-xs`}),(0,r.jsx)($t,{type:`date`,value:p,onChange:e=>b(e.target.value),className:`h-8 text-xs`})]}),a!==void 0&&(0,r.jsxs)(Z,{variant:`ghost`,size:`sm`,className:`h-7 text-xs justify-start`,onClick:x,children:[(0,r.jsx)(i.X,{className:`size-3`}),`Clear filter`]})]})}var ua={all:`All`,true:`True`,false:`False`,_null:`Is null`};function da(e){return e?e.operator===`_null`?`_null`:e.operator===`_eq`&&e.value===!0?`true`:e.operator===`_eq`&&e.value===!1?`false`:`all`:`all`}function fa({column:e}){let t=(e.columnDef.meta?.filterOperators??[]).includes(`_null`),n=e.getFilterValue(),a=da(n),o=t?[`all`,`true`,`false`,`_null`]:[`all`,`true`,`false`];return(0,r.jsxs)(`div`,{className:`flex flex-col gap-2 p-2 min-w-[220px]`,children:[(0,r.jsxs)(qi,{value:a,onValueChange:t=>{switch(t){case`true`:e.setFilterValue({operator:`_eq`,value:!0});break;case`false`:e.setFilterValue({operator:`_eq`,value:!1});break;case`_null`:e.setFilterValue({operator:`_null`,value:!0});break;default:e.setFilterValue(void 0)}},children:[(0,r.jsx)(Yi,{size:`sm`,className:`w-full text-xs`,children:(0,r.jsx)(Ji,{})}),(0,r.jsx)(Xi,{children:o.map(e=>(0,r.jsx)(Q,{value:e,children:ua[e]},e))})]}),n!==void 0&&(0,r.jsxs)(Z,{variant:`ghost`,size:`sm`,className:`h-7 text-xs justify-start`,onClick:()=>{e.setFilterValue(void 0)},children:[(0,r.jsx)(i.X,{className:`size-3`}),`Clear filter`]})]})}function pa(e,t,n,r){return!ir(e)||!ir(t)||!ir(n)||r&&(!r.some(e=>e.name===t)||!r.some(e=>e.name===n))?null:`query Lookup${e} { ${e}(sort: [${t}_asc], limit: 100) { data { id: ${n} label: ${t} } } }`}function ma({column:e,joinTable:t,joinLabelColumn:a,joinFkColumn:o}){let s=V(),c=W().findTable(t),l=pa(t,a,o,c?.columns),u=Cn(c?.columns.find(e=>e.name===o)),{data:d}=(0,n.useQuery)({queryKey:[`fkLookup`,t,a,o],queryFn:()=>s.query(l),staleTime:3e5,enabled:!!c&&!!l}),f=d?.[t]?.data??[],p=e.getFilterValue(),m=p?.operator===`_eq`&&p.value!=null?String(p.value):`all`;return(0,r.jsxs)(`div`,{className:`flex flex-col gap-2 p-2 min-w-[220px]`,children:[(0,r.jsxs)(qi,{value:m,onValueChange:t=>{if(t===`all`){e.setFilterValue(void 0);return}e.setFilterValue({operator:`_eq`,value:Sn(t,u)})},children:[(0,r.jsx)(Yi,{size:`sm`,className:`w-full text-xs`,children:(0,r.jsx)(Ji,{})}),(0,r.jsxs)(Xi,{children:[(0,r.jsx)(Q,{value:`all`,children:`All`}),f.map(e=>(0,r.jsx)(Q,{value:String(e.id),children:String(e.label)},String(e.id)))]})]}),p!==void 0&&(0,r.jsxs)(Z,{variant:`ghost`,size:`sm`,className:`h-7 text-xs justify-start`,onClick:()=>{e.setFilterValue(void 0)},children:[(0,r.jsx)(i.X,{className:`size-3`}),`Clear filter`]})]})}function ha(e){return(e.columnDef.meta?.paramType??``).replace(`!`,``)}function ga(e){return ha(e)===`String`}function _a(e){return _n(ha(e))}function va(e){return yn(ha(e))}function ya(e){return ha(e)===`Boolean`}function ba(e){let t=e.columnDef.meta;return t?.joinTable?{joinTable:t.joinTable,joinLabelColumn:t.joinLabelColumn??`id`,joinFkColumn:t.joinFkColumn??null,isSelfReference:t.isSelfReference===!0}:null}function xa(e){return e.columnDef.meta?.column}function Sa(e){let t=e.paramType.replace(`!`,``);if(e.dbType){let t=e.dbType.toUpperCase();return e.maxLength&&(t.includes(`VARCHAR`)||t.includes(`CHAR`))?`${t}(${e.maxLength})`:(t.includes(`DECIMAL`)||t.includes(`NUMERIC`),t)}return t}function Ca(e){let t=e.paramType.replace(`!`,``);return e.isPrimaryKey?(0,r.jsx)(i.Key,{className:`size-3.5`}):_n(t)?(0,r.jsx)(i.Hash,{className:`size-3.5`}):yn(t)?(0,r.jsx)(i.Calendar,{className:`size-3.5`}):t===`Boolean`?(0,r.jsx)(i.ToggleLeft,{className:`size-3.5`}):(0,r.jsx)(i.Type,{className:`size-3.5`})}function wa({column:e,fkMeta:t}){let n=Sa(e),a=e.isNullable,o=e.isPrimaryKey,s=e.isIdentity,c=e.defaultValue;return(0,r.jsxs)(`div`,{className:`space-y-2`,children:[(0,r.jsxs)(`div`,{className:`flex items-center gap-2 border-b pb-2`,children:[Ca(e),(0,r.jsx)(`span`,{className:`font-semibold text-foreground`,children:e.label})]}),(0,r.jsxs)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 text-xs`,children:[(0,r.jsx)(`dt`,{className:`text-muted-foreground`,children:`Type`}),(0,r.jsx)(`dd`,{className:`text-foreground font-medium`,children:n}),(0,r.jsx)(`dt`,{className:`text-muted-foreground`,children:`Nullable`}),(0,r.jsx)(`dd`,{className:`text-foreground`,children:a?`Yes`:`No`}),o&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`dt`,{className:`text-muted-foreground`,children:`Primary Key`}),(0,r.jsxs)(`dd`,{className:`text-foreground text-primary flex items-center gap-1`,children:[(0,r.jsx)(i.Key,{className:`size-3`}),`Yes`]})]}),s&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`dt`,{className:`text-muted-foreground`,children:`Auto Increment`}),(0,r.jsx)(`dd`,{className:`text-foreground`,children:`Yes`})]}),t&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`dt`,{className:`text-muted-foreground`,children:`Foreign Key`}),(0,r.jsxs)(`dd`,{className:`text-foreground text-primary flex items-center gap-1`,children:[(0,r.jsx)(i.Link2,{className:`size-3`}),t.joinTable,t.isSelfReference&&(0,r.jsx)(`span`,{className:`ml-1 px-1 rounded bg-primary/10 text-[10px] font-medium`,children:`self-ref`})]})]}),c!=null&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`dt`,{className:`text-muted-foreground`,children:`Default`}),(0,r.jsx)(`dd`,{className:`text-foreground font-mono text-xs truncate max-w-[150px]`,children:String(c)})]}),e.maxLength!==void 0&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`dt`,{className:`text-muted-foreground`,children:`Max Length`}),(0,r.jsx)(`dd`,{className:`text-foreground`,children:e.maxLength})]}),e.min!==void 0&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`dt`,{className:`text-muted-foreground`,children:`Min`}),(0,r.jsx)(`dd`,{className:`text-foreground`,children:e.min})]}),e.max!==void 0&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`dt`,{className:`text-muted-foreground`,children:`Max`}),(0,r.jsx)(`dd`,{className:`text-foreground`,children:e.max})]})]})]})}function Ta({column:e,table:t,title:n}){let a=t.options.meta?.onResetColumnWidths;if(!e.getCanSort())return(0,r.jsx)(`span`,{children:n});let o=e.getIsSorted(),s=e.getFilterValue()!==void 0,c=ba(e),l=c?.joinFkColumn??null,u=!l&&ga(e),d=!l&&_a(e),f=!l&&va(e),p=!l&&ya(e),m=xa(e),h=(0,r.jsxs)(Z,{variant:`ghost`,size:`sm`,className:Y(`-ml-2 h-7 text-xs data-[state=open]:bg-accent`,o&&`text-foreground`),children:[(0,r.jsx)(`span`,{children:n}),s&&(0,r.jsx)(i.Filter,{className:`size-3 text-primary`}),o===`desc`?(0,r.jsx)(i.ArrowDown,{className:`size-4`}):o===`asc`?(0,r.jsx)(i.ArrowUp,{className:`size-4`}):(0,r.jsx)(i.ArrowUpDown,{className:`size-4`})]});return(0,r.jsxs)(Wi,{openDelay:400,closeDelay:200,children:[(0,r.jsx)(Gi,{asChild:!0,children:(0,r.jsx)(`span`,{className:`inline-flex`,children:(0,r.jsxs)(en,{children:[(0,r.jsx)(tn,{asChild:!0,children:h}),(0,r.jsxs)(nn,{align:`start`,children:[m&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(on,{className:`text-xs font-normal text-muted-foreground`,children:[Sa(m),m.isNullable?` · nullable`:` · required`,m.isPrimaryKey?` · PK`:``,c?` · FK → ${c.joinTable}`:``]}),(0,r.jsx)(sn,{})]}),(0,r.jsxs)(rn,{onClick:()=>e.toggleSorting(!1),children:[(0,r.jsx)(i.ArrowUp,{className:`size-3.5 text-muted-foreground`}),`Asc`]}),(0,r.jsxs)(rn,{onClick:()=>e.toggleSorting(!0),children:[(0,r.jsx)(i.ArrowDown,{className:`size-3.5 text-muted-foreground`}),`Desc`]}),o&&(0,r.jsxs)(rn,{onClick:()=>e.clearSorting(),children:[(0,r.jsx)(i.ArrowUpDown,{className:`size-3.5 text-muted-foreground`}),`Clear`]}),u&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(sn,{}),(0,r.jsxs)(cn,{children:[(0,r.jsxs)(ln,{children:[(0,r.jsx)(i.Filter,{className:Y(`size-3.5`,s?`text-primary`:`text-muted-foreground`)}),`Filter`]}),(0,r.jsx)(un,{children:(0,r.jsx)(na,{column:e})})]})]}),d&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(sn,{}),(0,r.jsxs)(cn,{children:[(0,r.jsxs)(ln,{children:[(0,r.jsx)(i.Filter,{className:Y(`size-3.5`,s?`text-primary`:`text-muted-foreground`)}),`Filter`]}),(0,r.jsx)(un,{children:(0,r.jsx)(sa,{column:e})})]})]}),f&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(sn,{}),(0,r.jsxs)(cn,{children:[(0,r.jsxs)(ln,{children:[(0,r.jsx)(i.Filter,{className:Y(`size-3.5`,s?`text-primary`:`text-muted-foreground`)}),`Filter`]}),(0,r.jsx)(un,{children:(0,r.jsx)(la,{column:e})})]})]}),p&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(sn,{}),(0,r.jsxs)(cn,{children:[(0,r.jsxs)(ln,{children:[(0,r.jsx)(i.Filter,{className:Y(`size-3.5`,s?`text-primary`:`text-muted-foreground`)}),`Filter`]}),(0,r.jsx)(un,{children:(0,r.jsx)(fa,{column:e})})]})]}),c&&l&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(sn,{}),(0,r.jsxs)(cn,{children:[(0,r.jsxs)(ln,{children:[(0,r.jsx)(i.Filter,{className:Y(`size-3.5`,s?`text-primary`:`text-muted-foreground`)}),`Filter`]}),(0,r.jsx)(un,{children:(0,r.jsx)(ma,{column:e,joinTable:c.joinTable,joinLabelColumn:c.joinLabelColumn,joinFkColumn:l})})]})]}),e.getCanHide()&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(sn,{}),(0,r.jsxs)(rn,{onClick:()=>e.toggleVisibility(!1),children:[(0,r.jsx)(i.EyeOff,{className:`size-3.5 text-muted-foreground`}),`Hide`]})]}),a&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(sn,{}),(0,r.jsxs)(rn,{onClick:a,children:[(0,r.jsx)(i.RotateCcw,{className:`size-3.5 text-muted-foreground`}),`Reset column widths`]})]})]})]})})}),m&&(0,r.jsx)(Ki,{align:`start`,className:`w-64`,children:(0,r.jsx)(wa,{column:m,fkMeta:c})})]})}var Ea=5,Da=400,Oa=200;function ka(e){return e.filter(e=>!e.isPrimaryKey&&!Kn(e)).slice(0,Ea)}function Aa(e,t,n,r){return`query FkPreview($id: ${r}) { ${e}(filter: { ${n}: { _eq: $id } } limit: 1) { data { ${t.map(e=>e.name).join(` `)} } } }`}function ja(e,t,n,r){return`query FkPreview(${n}) { ${e}(filter: ${r} limit: 1) { data { ${t.map(e=>e.name).join(` `)} } } }`}function Ma(e,t,n,r,i,a,o){if(n.length===0)return null;if(r&&wn(r)&&i){let a=En(i,r,t);return a?{query:ja(e,n,a.params.join(`, `),a.filterText),variables:a.variables,cacheKey:a.variables}:null}let s=pr(t.columns.find(e=>e.name===o)?.paramType??`Int`),c={id:Sn(a,s)};return{query:Aa(e,n,o,s),variables:c,cacheKey:`${o}:${a}`}}function Na({tableName:e,fkValue:i,filterColumn:a,join:o,sourceRow:s,children:c}){let[l,u]=(0,t.useState)(!1),d=W(),f=V(),p=d.findTable(e),m=p?ka(p.columns):[],h=p?Ma(e,p,m,o,s,i,a):null,{data:g,isLoading:_}=(0,n.useQuery)({queryKey:[`fkPreview`,e,h?.cacheKey],queryFn:()=>f.query(h.query,h.variables),enabled:l&&!!h,staleTime:3e5}),v=g?.[e]?.data?.[0];return(0,r.jsxs)(Wi,{openDelay:Da,closeDelay:Oa,open:l,onOpenChange:u,children:[(0,r.jsx)(Gi,{asChild:!0,children:c}),(0,r.jsx)(Ki,{align:`start`,className:`w-72`,children:(0,r.jsxs)(`div`,{className:`space-y-2`,children:[(0,r.jsx)(`p`,{className:`text-sm font-semibold text-foreground`,children:p?.label??e}),_&&(0,r.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Loading...`}),v&&(0,r.jsx)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 text-xs`,children:m.map(e=>(0,r.jsxs)(`div`,{className:`contents`,children:[(0,r.jsx)(`dt`,{className:`text-muted-foreground truncate`,children:e.label}),(0,r.jsx)(`dd`,{className:`text-foreground truncate`,children:si(v[e.name],e,{formatKey:`display-format-preview`})})]},e.name))}),!_&&!v&&l&&(0,r.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Record not found`})]})})]})}var Pa={json:i.Braces,xml:i.Code,"php-serialized":i.Database,binary:i.Binary,longtext:i.FileText,text:i.FileText},Fa={json:`JSON`,xml:`XML`,"php-serialized":`PHP`,binary:`Binary`,longtext:`Text`,text:`Text`};function Ia(e,t){if(t===`json`)try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}return e}function La({value:e,dbType:t,onExpand:n,deferred:a}){if(e===void 0&&a)return(0,r.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-muted-foreground`,children:[(0,r.jsx)(i.FileText,{className:`size-3.5`}),(0,r.jsx)(`span`,{className:`text-xs italic`,children:`content`}),n&&(0,r.jsx)(`button`,{type:`button`,className:`shrink-0 opacity-40 hover:opacity-100 transition-opacity`,onClick:e=>{e.stopPropagation(),n()},"aria-label":`Expand content`,children:(0,r.jsx)(i.Expand,{className:`size-3`})})]});if(e==null)return(0,r.jsx)(Gr,{kind:`null`});let o=typeof e==`object`?JSON.stringify(e):String(e);if(o===``)return(0,r.jsx)(Gr,{kind:`empty`});let s=qn(o,t);if(s===`text`)return(0,r.jsx)(`span`,{children:o});if(s===`binary`)return(0,r.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-muted-foreground`,children:[(0,r.jsx)(i.Binary,{className:`size-3.5`}),(0,r.jsx)(`span`,{className:`text-xs font-mono`,children:Yn(o)}),n&&(0,r.jsx)(`button`,{type:`button`,className:`shrink-0 opacity-40 hover:opacity-100 transition-opacity`,onClick:e=>{e.stopPropagation(),n()},"aria-label":`Expand content`,children:(0,r.jsx)(i.Expand,{className:`size-3`})})]});let c=Pa[s],l=Jn(o);return o.length>80||s===`json`||s===`xml`||s===`php-serialized`?(0,r.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 max-w-full`,children:[(0,r.jsxs)(Wi,{openDelay:300,closeDelay:200,children:[(0,r.jsx)(Gi,{asChild:!0,children:(0,r.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1.5 text-left hover:text-primary transition-colors min-w-0`,children:[(0,r.jsx)(c,{className:`size-3 text-muted-foreground shrink-0`}),(0,r.jsx)(`span`,{className:`font-mono text-xs truncate`,children:l})]})}),(0,r.jsxs)(Ki,{side:`bottom`,align:`start`,className:`w-[420px] max-h-[320px] p-0`,children:[(0,r.jsxs)(`div`,{className:`flex items-center gap-1.5 px-3 py-1.5 border-b border-border bg-muted/30`,children:[(0,r.jsx)(c,{className:`size-3.5 text-muted-foreground`}),(0,r.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground`,children:Fa[s]}),(0,r.jsxs)(`span`,{className:`text-xs text-muted-foreground ml-auto`,children:[o.length,` chars`]})]}),(0,r.jsx)(`pre`,{className:`p-3 text-xs font-mono overflow-auto max-h-[280px] whitespace-pre-wrap break-all`,children:Ia(o,s)})]})]}),n&&(0,r.jsx)(`button`,{type:`button`,className:`shrink-0 opacity-40 hover:opacity-100 transition-opacity`,onClick:e=>{e.stopPropagation(),n()},"aria-label":`Expand content`,children:(0,r.jsx)(i.Expand,{className:`size-3`})})]}):(0,r.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[(0,r.jsx)(c,{className:`size-3 text-muted-foreground shrink-0`}),(0,r.jsx)(`span`,{className:`font-mono text-xs`,children:o}),n&&(0,r.jsx)(`button`,{type:`button`,className:`shrink-0 opacity-40 hover:opacity-100 transition-opacity`,onClick:e=>{e.stopPropagation(),n()},"aria-label":`Expand content`,children:(0,r.jsx)(i.Expand,{className:`size-3`})})]})}var Ra=/^[_A-Za-z][_0-9A-Za-z]*$/;function za(e,t){return!e||!t?null:t.columns.find(t=>t.name===e||t.graphQlName===e)??null}var Ba={field:`key`,desc:!1};function Va(e,t){if(!e||!t)return null;let n=za(e,t);return n&&/^(byte|short|int|long|float|double|decimal|numeric|money|real)/i.test(n.paramType.replace(/[![\]]/g,``))?n:null}function Ha(e,t,n){let r=new URLSearchParams(e);return n?r.set(t,n):r.delete(t),r}function Ua(e){let t=new URLSearchParams(e);return t.delete(`gb`),t.delete(`gs`),t}function Wa(e,t,n){let r=[];try{let e=JSON.parse(n);if(Array.isArray(e)&&e.length===4){let[n,i,a,o]=e,s=typeof n==`string`?t.columns.find(e=>e.name===n):void 0;s&&o===s.paramType&&typeof i==`string`&&cr(s.paramType).includes(i)&&r.push({[s.graphQlName]:{[i]:i===`_null`?!!a:a}})}}catch{}for(let n of e){let e=n.value,i=t.columns.find(e=>e.name===n.id);!i||!cr(i.paramType).includes(e.operator)||(e.operator===`_null`||e.value!==void 0&&e.value!==null&&e.value!==``)&&r.push({[i.graphQlName]:{[e.operator]:e.operator===`_null`?!!e.value:e.value}})}return r.length===0?void 0:r.length===1?r[0]:{and:r}}function Ga(e,t,n,r,i=null,a=Ba){for(let n of[e.name,e.graphQlName,t.graphQlName,...i?[i.graphQlName]:[]])if(!Ra.test(n))throw Error(`Invalid schema-derived grouping name.`);let o=Wa(n,e,r),s=o?`($filter: ${ar(e)})`:``,c=[o?`filter: $filter`:``,`groupBy: [${t.graphQlName}]`].filter(Boolean).join(`, `);return{query:`query GridGrouping${s} { ${e.name}Aggregate(${c}) { ${t.graphQlName} _count${i?` _sum { ${i.graphQlName} }`:``} } }`,variables:o?{filter:o}:{},groupBy:t,sumBy:i,sort:a}}function Ka(e,t){return e.value===t.value?0:e.value===null||e.value===void 0?-1:t.value===null||t.value===void 0?1:typeof e.value==`number`&&typeof t.value==`number`?e.value-t.value:String(e.value).localeCompare(String(t.value))}function qa(e,t,n=Ba){if(n.field===`count`){let r=e.count-t.count;return r===0?Ka(e,t):n.desc?-r:r}let r=Ka(e,t);return n.desc?-r:r}function Ja(e,t,n,r,i=Ba){let a=e?.[`${t.name}Aggregate`];return Array.isArray(a)?a.map(e=>{let t=e;return{value:t[n.graphQlName],count:Number(t._count??0),sum:r?t._sum?.[r.graphQlName]:void 0}}).sort((e,t)=>qa(e,t,i)):[]}function Ya(e,t,n,r,i,a=[]){for(let n of[e.name,e.graphQlName,t.graphQlName,...e.columns.map(e=>e.graphQlName)])if(!Ra.test(n))throw Error(`Invalid schema-derived grouping name.`);let o=Wa(r,e,i),s={[t.graphQlName]:n==null?{_null:!0}:{_eq:n}},c=o?{and:[o,s]}:s,l=e.columns.map(e=>e.graphQlName).join(` `);return{query:`query GridGroupMembers($filter: ${ar(e)}, $sort: [${e.graphQlName}SortEnum!], $limit: Int, $offset: Int) { ${e.name}(filter: $filter sort: $sort limit: $limit offset: $offset) { total offset limit data { ${l} } } }`,variables:{filter:c,sort:[...a],limit:50,offset:0},responseKey:e.name}}function Xa(e,t){if(!e||!t)return``;if((t.primaryKeys?.length??0)<=1){let t=e?.id;return t==null?``:String(t)}return Mn(e,t,0)}function Za(e,t){let n=Math.max(0,t-1);return e<0?0:e>n?n:e}function Qa(e,t){return br(e)===t?e:xr(t)}function $a(e,t){return e[t.fieldName??t.destinationTable]?.data??[]}function eo(e,t){return e[t.fieldName??t.destinationTable]}function to(e,t){let n=e[t.fieldName??t.destinationTable];return n?.total??n?.data?.length??0}function no(e,t,n={}){return{sortField:e.name,paramType:e.paramType,filterOperators:t,column:e,...n}}function ro(e,t,n,a,o,s){let c=a.findTable(t.destinationTable),l=c?.labelColumn??`id`,u=wn(t),d=t.destinationTable===n.name,f=d?`Parent ${e.label}`:e.label;return{id:e.name,accessorKey:e.name,header:({column:e,table:t})=>(0,r.jsx)(Ta,{column:e,table:t,title:f}),enableSorting:!0,meta:no(e,o,{joinTable:t.destinationTable,joinLabelColumn:l,joinFkColumn:t.destinationColumnNames[0],isSelfReference:d,isCompositeFk:u}),cell:({row:e})=>{let n=eo(e.original,t);if(!n)return(0,r.jsx)(Gr,{kind:`null`});let a=Xa(n,c);if(!a)return(0,r.jsx)(r.Fragment,{children:n?.label});let o=u?a:An([a]);return(0,r.jsxs)(`span`,{className:`group/fk inline-flex items-center gap-0.5`,children:[(0,r.jsx)(Na,{tableName:t.destinationTable,fkValue:a,filterColumn:t.destinationColumnNames[0],join:t,sourceRow:e.original,children:(0,r.jsx)(M,{to:`/`+c?.name+`/`+o,className:`text-primary hover:text-primary/80 hover:underline`,children:n?.label})}),s&&(0,r.jsx)(Z,{variant:`ghost`,size:`icon-sm`,className:`opacity-0 group-hover/fk:opacity-100 size-5 shrink-0`,onClick:e=>{e.stopPropagation(),s({tableName:t.destinationTable,filterId:o})},"aria-label":`Open in side column`,title:`Open in side column`,children:(0,r.jsx)(i.PanelRight,{className:`size-3`})})]})}}}function io(e,t,n,i,a,o){if(t){let o=i.findTable(t.destinationTable)?.labelColumn??`id`,s=t.destinationTable===n.name;return{id:e.name,accessorFn:t=>e.name?String(t?.[e.name]??``):``,cell:({row:t})=>si(t.original[e.name],e),header:({column:t,table:n})=>(0,r.jsx)(Ta,{column:t,table:n,title:e.label}),enableSorting:!0,meta:no(e,a,{dbType:e.dbType,joinTable:t.destinationTable,joinLabelColumn:o,joinFkColumn:Tn(t,e.name),isSelfReference:s,isCompositeFk:!0,isCompositeFkMember:!0})}}return e?.paramType===`DateTime`?{id:e.name,accessorFn:t=>ci(t?.[e.name]),cell:({row:t})=>{let n=t.original[e.name];return n==null||n===``?(0,r.jsx)(Gr,{kind:n===``?`empty`:`null`}):ci(n)},header:({column:t,table:n})=>(0,r.jsx)(Ta,{column:t,table:n,title:e.label}),enableSorting:!0,meta:no(e,a,{dbType:e.dbType})}:Kn(e)||Wn(e)?{id:e.name,accessorFn:t=>e.name?String(t?.[e.name]??``):``,header:({column:t,table:n})=>(0,r.jsx)(Ta,{column:t,table:n,title:e.label}),enableSorting:!0,meta:no(e,a,{dbType:e.dbType}),cell:({row:t})=>(0,r.jsx)(La,{value:t.original[e.name],dbType:e.dbType,deferred:Kn(e),onExpand:o?()=>o(t.index,e.name):void 0})}:{id:e.name,accessorFn:t=>e.name?String(t?.[e.name]??``):``,cell:({row:t})=>{let n=t.original[e.name];if(typeof n==`string`&&n.length>1){let i=qn(n);if(i===`json`||i===`xml`||i===`php-serialized`)return(0,r.jsx)(La,{value:n,dbType:e.dbType,onExpand:o?()=>o(t.index,e.name):void 0})}return si(n,e)},header:({column:t,table:n})=>(0,r.jsx)(Ta,{column:t,table:n,title:e.label}),enableSorting:!0,meta:no(e,a,{dbType:e.dbType})}}var ao=(e,t,n,a)=>{if(!e||!t)return[];let o=e.columns.map(r=>{let i=e.singleJoins.find(e=>e.sourceColumnNames?.[0]===r.name),o=i?void 0:e.singleJoins.find(e=>(e.sourceColumnNames??[]).includes(r.name)),s=cr(r.paramType);return i?ro(r,i,e,t,s,a):io(r,o,e,t,s,n)}),s=e.multiJoins.map(n=>{let o=t.findTable(n.destinationTable),s=o?.labelColumn??`id`,c=n.destinationTable===e.name?`Child ${o?.label??n.destinationTable}`:o?.label??n.destinationTable;return{id:`join_${n.fieldName??n.destinationTable}`,header:c,enableSorting:!1,enableHiding:!0,cell:({row:t})=>{let c=fr(t.original,e,t.index),l=$a(t.original,n),u=to(t.original,n);if(u===0)return(0,r.jsx)(`span`,{className:`text-muted-foreground`,children:`—`});let d=l.slice(0,10).map(e=>String(e[s]??``)).filter(Boolean),f=o?.label??n.destinationTable;return(0,r.jsxs)(`span`,{className:`group/fk inline-flex items-center gap-1`,children:[(0,r.jsxs)(Wi,{openDelay:300,closeDelay:100,children:[(0,r.jsx)(Gi,{asChild:!0,children:(0,r.jsxs)(M,{to:`/`+o?.name+`/from/`+e.name+`/`+c,className:`inline-flex items-center gap-1 rounded-full border border-border bg-muted/40 px-2 py-0.5 text-xs font-medium text-primary hover:bg-muted hover:border-primary/40 transition-colors`,children:[(0,r.jsx)(i.List,{className:`size-3`}),u]})}),(0,r.jsxs)(Ki,{align:`start`,sideOffset:6,className:`w-auto max-w-xs p-3`,children:[(0,r.jsxs)(`div`,{className:`flex items-center gap-2 border-b pb-2 mb-2`,children:[(0,r.jsx)(i.List,{className:`size-3.5 text-primary`}),(0,r.jsxs)(`span`,{className:`text-xs font-semibold text-foreground`,children:[u,` `,f]})]}),(0,r.jsxs)(`ul`,{className:`space-y-0.5 text-xs text-foreground`,children:[d.map((e,t)=>(0,r.jsx)(`li`,{className:`truncate`,children:e},t)),u>10&&(0,r.jsxs)(`li`,{className:`text-muted-foreground italic`,children:[`… and `,u-10,` more`]})]})]})]}),a&&(0,r.jsx)(Z,{variant:`ghost`,size:`icon-sm`,className:`opacity-40 group-hover/fk:opacity-100 size-5 shrink-0 transition-opacity`,onClick:t=>{t.stopPropagation(),a({tableName:n.destinationTable,filterTable:e.name,filterId:c,...wn(n)?{}:{filterColumn:n.destinationColumnNames[0]}})},"aria-label":`Open in side column`,title:`Open in side column`,children:(0,r.jsx)(i.PanelRight,{className:`size-3`})})]})}}});return[...o,...s]};function oo(e,t,n,r,i){if(!r&&!i)return Er(e,t);let a=Hr(t,n,r,i);return a?Er(e,a.parentTable):Er(e,t)}function so(e,t){if(!e||!t)return[];let n=t[e.name]??t[`*`];if(!n)return[];let r=e.columns.find(e=>e.name===n.column);return!r||Kn(r)||Wn(r)?[]:[{id:r.name,desc:n.desc===!0}]}function co(e,r,i,a,o,s){let{search:c}=A(),l=D(),u=c.get(`filter`)??``,d=c.get(`cf`)??``,f=c.get(`gb`),p=c.get(`gs`),m=(0,t.useMemo)(()=>dr(u).variables,[u]),h=W(),g=V(),{defaultSort:_}=de(),v=(0,t.useMemo)(()=>so(e,_),[e,_]),[y,b]=(0,t.useState)(v),[x,S]=(0,t.useState)(Ba),[C,w]=(0,t.useState)(()=>xr(d)),[T,E]=(0,t.useState)(0),[O,k]=(0,t.useState)(50),j=(0,t.useRef)(e);e&&e!==j.current&&(j.current=e,y!==v&&b(v),x!==Ba&&S(Ba),T!==0&&E(0)),(0,t.useEffect)(()=>{w(e=>Qa(e,d))},[d]);let M=(0,t.useMemo)(()=>Qa(C,d),[C,d]),N=(0,t.useRef)(e?.name),P=N.current!==e?.name;P&&(N.current=e?.name);let ee=(0,t.useMemo)(()=>P?null:za(f,e),[P,f,e]),F=(0,t.useMemo)(()=>P?null:Va(p,e),[P,p,e]);(0,t.useEffect)(()=>{if(!P||!f)return;let e=Ua(c).toString();l(e?`?${e}`:`?`)},[P,f,c,l]);let te=(0,t.useMemo)(()=>{if(!e)return`id`;let t=wr(e)[0]?.name;return t&&e.columns.some(e=>e.name===t)?t:Tr(e,e=>!Kn(e)&&!Wn(e))||(e.columns.find(e=>!Kn(e)&&!Wn(e))?.name??e.columns.at(0)?.name??`id`)},[e]),ne=(0,t.useMemo)(()=>{if(y.length>0&&e){let t=y[0];if(e.columns.some(e=>e.name===t.id))return[`${t.id}_${t.desc?`desc`:`asc`}`]}return e?[`${te}_asc`]:[]},[y,e,te]),I=(0,t.useMemo)(()=>Lr(e,h,u,M,r,i,a),[e,h,u,M,r,i,a]),re=(0,t.useMemo)(()=>e?vr(M,e).variables:{},[M,e]),L=(0,t.useMemo)(()=>{if(!e)return null;let t=yr(e,u,M);return t.length===0?null:Error(`These rows can't be shown because the filter can't be applied: ${t.join(` `)}`)},[e,u,M]),R=T*O,ie=(0,t.useMemo)(()=>({sort:ne,limit:O,offset:R,...r&&e?oo(r,e,h,i,a):{},...m,...re}),[ne,O,R,r,e,h,i,a,m,re]),{isLoading:z,isFetching:B,error:ae,data:oe}=(0,n.useQuery)({queryKey:[`tableData`,e?.name,I,ie],queryFn:({signal:e})=>g.query(I,ie,{signal:e}),enabled:!!I&&!!e&&ne.length>0,placeholderData:(t,n)=>n?.queryKey?.[1]===e?.name?t:void 0}),H=(0,t.useMemo)(()=>e&&ee?Ga(e,ee,M,u,F,x):null,[e,ee,F,M,u,x]),se=(0,n.useQuery)({queryKey:[`tableGrouping`,e?.name,H?.query,H?.variables],queryFn:({signal:e})=>g.query(H.query,H.variables,{signal:e}),enabled:H!==null,placeholderData:void 0}),ce=(0,t.useMemo)(()=>e?ao(e,h,o,s):[],[e,h,o,s]),le=(0,t.useMemo)(()=>r&&(i||a)&&e?Hr(e,h,i,a):null,[r,i,a,e,h]),ue,U;if(le&&!Rr(le.childJoin)){let e=Vr(oe,le.parentTable.name,le.childField);ue=e.data,U=e.total}else{let t=oe?.[e?.name??``];ue=t?.data??[],U=t?.total??0}let fe=Math.max(1,Math.ceil(U/O));(0,t.useEffect)(()=>{let e=Za(T,fe);e!==T&&E(e)},[T,fe]);let pe=(0,t.useCallback)(e=>{let t=new URLSearchParams(c),n=br(e);n?t.set(`cf`,n):t.delete(`cf`);let r=t.toString();l(r?`?${r}`:`?`)},[c,l]),me=(0,t.useCallback)(e=>{b(e),E(0)},[]),he=(0,t.useCallback)(e=>{w(e),E(0),pe(e)},[pe]),ge=(0,t.useCallback)(e=>{E(e)},[]),_e=(0,t.useCallback)(e=>{k(e),E(0)},[]),ve=(0,t.useCallback)(e=>{let t=Ha(c,`gb`,e);e||t.delete(`gs`);let n=t.toString();l(n?`?${n}`:`?`)},[c,l]),ye=(0,t.useCallback)(e=>{let t=Ha(c,`gs`,e).toString();l(t?`?${t}`:`?`)},[c,l]),be=e?.primaryKeys??[],xe=(0,t.useMemo)(()=>e?Lr(e,h,u,M,r,i,a,{fields:`export`}):null,[e,h,u,M,r,i,a]),Se=(0,t.useCallback)(async t=>{if(!xe||!e)return null;let n=Ir(e),r=n.map(e=>e.label),i=n.map(e=>e.name);return xi({headers:r,format:t.format,signal:t.signal,onProgress:t.onProgress,rowCap:t.rowCap,csv:{bom:!0},fetchPage:async(t,n,r)=>{let a={...ie,limit:n,offset:t},o=await g.query(xe,a,{signal:r}),s,c;if(le&&!Rr(le.childJoin)){let e=Vr(o,le.parentTable.name,le.childField);s=e.data,c=e.total}else{let t=o?.[e.name];s=t?.data??[],c=t?.total??0}return{rows:s.map(e=>i.map(t=>e[t])),total:c}}})},[xe,e,ie,g,le]);return{columns:ce,sorting:y,columnFilters:C,primaryKeys:be,pageIndex:T,pageSize:O,pageCount:fe,rows:ue,totalRows:U,grouping:H?{column:H.groupBy,sumColumn:H.sumBy,rows:Ja(se.data,e,H.groupBy,H.sumBy,H.sort),loading:se.isLoading,error:se.error,sort:H.sort,onSortChange:S,memberRequest:t=>Ya(e,H.groupBy,t,M,u,ne)}:null,exportRows:Se,loading:z,fetching:B&&!z,error:L??ae,onSortingChange:me,onColumnFiltersChange:he,onPageIndexChange:ge,onPageSizeChange:_e,onGroupingChange:ve,onGroupingSumChange:ye}}var lo=new Set([`tableData`,`editRecord`,`tableRowCounts`,`m2mRows`,`fkPreview`]),uo=new Set([`tableRef`,`tableRefValue`,`compositeTableRef`,`m2mTargets`]);function fo(e,t){return e.invalidateQueries({predicate:e=>{let[n,r]=e.queryKey;return typeof n==`string`?lo.has(n)?!0:uo.has(n)?r===t:!1:!1}})}function po(e){return typeof e==`object`&&!!e}function mo(e,t){if(e==null)return null;if(!t)return e;let n=dn(t);if(vn(t))return String(e);if(gn(t)){let t=typeof e==`number`?e:Number(e);return Number.isFinite(t)?Math.trunc(t):e}if(n===`Float`){let t=typeof e==`number`?e:Number(e);return Number.isFinite(t)?t:e}return n===`Boolean`?typeof e==`boolean`?e:e===`true`||e===1:String(e)}function ho(e){X(e.name,`delete mutation table name`);let r=V(),i=(0,n.useQueryClient)(),{toast:a}=Mi(),o=(0,t.useMemo)(()=>{let t=new Map;for(let n of e.columns)t.set(n.name,n.paramType);return t},[e]),s=(0,t.useMemo)(()=>e.primaryKeys??[],[e]),c=t=>{if(s.length===0)throw Error(`Cannot delete from '${e.name}': the table has no primary key.`);let n={};if(po(t)){for(let e of s){let r=t[e];if(r==null)throw Error(`Cannot delete row: missing value for primary-key column '${e}'.`);n[e]=mo(r,o.get(e))}return n}if(s.length!==1)throw Error(`Cannot delete from '${e.name}': composite primary key requires an object key, not a scalar.`);if(t==null)throw Error(`Cannot delete row: missing value for primary-key column '${s[0]}'.`);let r=s[0];return n[r]=mo(t,o.get(r)),n},l=(0,t.useMemo)(()=>`mutation deleteSingle($detail: Delete_${e.name}){
78
78
  ${e.name}(delete: $detail)
79
79
  }`,[e]),u=(0,t.useMemo)(()=>`mutation deleteMany($delta: ${e.name}_delta){
80
80
  ${e.name}(delta: $delta)
81
- }`,[e]),d=(0,n.useMutation)({mutationFn:e=>r.query(l,{detail:e}),onSuccess:()=>{uo(i,e.name),a(`Row deleted`)}}),f=(0,n.useMutation)({mutationFn:e=>r.query(u,{delta:{deleted:e}}),onSuccess:(t,n)=>{uo(i,e.name);let r=n.length;a(`${r} ${r===1?`row`:`rows`} deleted`)}}),p=e=>{let t;try{t=c(e)}catch(e){return Promise.reject(e)}return d.mutateAsync(t)},m=e=>{let t;try{t=e.map(e=>c(e))}catch(e){return Promise.reject(e)}return f.mutateAsync(t)},h=d.error??f.error;return{deleteRow:p,deleteRows:m,isPending:d.isPending||f.isPending,error:h}}function ho(e){return(e.inserted?.length??0)+(e.updated?.length??0)+(e.deleted?.length??0)}function go(e){X(e.name,`delta mutation table name`);let r=V(),i=(0,n.useQueryClient)(),{toast:a}=Mi(),o=(0,t.useMemo)(()=>`mutation saveDelta($delta: ${e.name}_delta){
81
+ }`,[e]),d=(0,n.useMutation)({mutationFn:e=>r.query(l,{detail:e}),onSuccess:()=>{fo(i,e.name),a(`Row deleted`)}}),f=(0,n.useMutation)({mutationFn:e=>r.query(u,{delta:{deleted:e}}),onSuccess:(t,n)=>{fo(i,e.name);let r=n.length;a(`${r} ${r===1?`row`:`rows`} deleted`)}}),p=e=>{let t;try{t=c(e)}catch(e){return Promise.reject(e)}return d.mutateAsync(t)},m=e=>{let t;try{t=e.map(e=>c(e))}catch(e){return Promise.reject(e)}return f.mutateAsync(t)},h=d.error??f.error;return{deleteRow:p,deleteRows:m,isPending:d.isPending||f.isPending,error:h}}function go(e){return(e.inserted?.length??0)+(e.updated?.length??0)+(e.deleted?.length??0)}function _o(e){X(e.name,`delta mutation table name`);let r=V(),i=(0,n.useQueryClient)(),{toast:a}=Mi(),o=(0,t.useMemo)(()=>`mutation saveDelta($delta: ${e.name}_delta){
82
82
  ${e.name}(delta: $delta)
83
- }`,[e]),s=(0,n.useMutation)({mutationFn:e=>r.query(o,{delta:e}),onSuccess:(t,n)=>{uo(i,e.name);let r=ho(n);a(`${r} ${r===1?`change`:`changes`} saved`)}});return{saveDelta:e=>s.mutateAsync(e),isPending:s.isPending,error:s.error}}function _o(e){return _n(e.paramType)}function vo(e){return gn(e.paramType)}var yo={Int:{min:-2147483648,max:2147483647},Short:{min:-32768,max:32767},Byte:{min:0,max:255}},bo=-(2n**63n),xo=2n**63n-1n;function So(e){let t=(e.dbType??``).toLowerCase().trim(),n=t.includes(`(`)?t.slice(0,t.indexOf(`(`)).trimEnd():t;if(n===`datetimeoffset`||n===`datetime`||n===`datetime2`||n===`smalldatetime`||n.startsWith(`timestamp`))return`datetime`;if(n===`date`)return`date`;if(n.startsWith(`time`))return`time`}function Co(e){let t=/^[+-]?(\d*)(?:\.\d*)?$/.exec(e.trim());if(t)return t[1].replace(/^0+/,``).length}function wo(e){return e.startsWith(`^`)?e:`^(?:${e})$`}function To(e){if(e!==e.trim()||/\s/.test(e))return!1;let t=e.lastIndexOf(`@`);if(t<=0||t===e.length-1)return!1;let n=e.slice(t+1);return n.includes(`.`)&&!n.startsWith(`.`)&&!n.endsWith(`.`)}function Eo(e){try{let t=new URL(e);return t.protocol===`http:`||t.protocol===`https:`}catch{return!1}}function Do(e,t,n){let r=e.label;if(n&&(t==null||t===``))return`${r} is required`;if(t==null||t===``)return;if(typeof t==`string`){if(e.pattern){let n;try{n=new RegExp(wo(e.pattern))}catch{return`${r} has an invalid validation pattern`}if(!n.test(t))return e.patternMessage||`${r} format is invalid`}if(e.minLength&&t.length<e.minLength)return`${r} must be at least ${e.minLength} characters`;if(e.maxLength&&t.length>e.maxLength)return`${r} must be at most ${e.maxLength} characters`;if(e.inputType===`email`&&!To(t))return`Invalid email address`;if(e.inputType===`url`&&!Eo(t))return`Invalid URL`}let i=So(e);if(i&&typeof t==`string`){if(!(i===`time`?/^\d{1,2}:\d{2}(:\d{2}(\.\d+)?)?$/.test(t.trim()):!Number.isNaN(new Date(t).getTime())))return`${r} must be a valid ${i===`datetime`?`date/time`:i}`;if(i!==`time`){let n=new Date(t).getTime(),i=typeof e.min==`string`?new Date(e.min).getTime():NaN,a=typeof e.max==`string`?new Date(e.max).getTime():NaN;if(!Number.isNaN(i)&&n<i)return`${r} must be on or after ${e.min}`;if(!Number.isNaN(a)&&n>a)return`${r} must be on or before ${e.max}`}return}if(dn(e.paramType)===`BigInt`&&typeof t==`string`&&t.trim()!==``){let e=t.trim();if(!/^[+-]?\d+$/.test(e))return`${r} must be a whole number`;let n=BigInt(e);return n<bo||n>xo?`${r} is out of range for a 64-bit integer`:void 0}if(e.precision!=null&&(typeof t==`string`||typeof t==`number`)){let n=Math.max(e.precision-(e.scale??0),0),i=Co(String(t));if(i!==void 0&&i>n)return`${r} must have at most ${n} digits before the decimal point`}if(_o(e)){let n=Number(t);if(!Number.isFinite(n))return`${r} must be a number`;if(vo(e)&&!Number.isInteger(n))return`${r} must be a whole number`;let i=yo[dn(e.paramType)];if(i&&(n<i.min||n>i.max))return`${r} must be between ${i.min} and ${i.max}`;let a=e.min==null?NaN:Number(e.min),o=e.max==null?NaN:Number(e.max);if(!Number.isNaN(a)&&n<a)return`${r} must be at least ${e.min}`;if(!Number.isNaN(o)&&n>o)return`${r} must be at most ${e.max}`}}function Oo(e,t){let n=[];for(let r of e){let e=t[r.name];if(e==null||e===``)continue;let i=Do(r,e,!1);i&&n.push(i)}return n}var ko=e=>_n(e)&&!vn(e),Ao=[`Boolean`,`Boolean!`];function jo(e,t,n){let r=dn(t),i=gn(t);if(typeof e==`number`){if(Number.isFinite(e)&&(!i||Number.isInteger(e)))return e;throw Error(`Invalid ${r} value for column '${n}'.`)}let a=String(e).trim();if(!(i?/^[+-]?\d+$/.test(a):/^[+-]?(?:(?:\d+\.?\d*)|(?:\.\d+))(?:[eE][+-]?\d+)?$/.test(a)))throw Error(`Invalid ${r} value for column '${n}'.`);let o=Number(a);if(!Number.isFinite(o))throw Error(`Invalid ${r} value for column '${n}'.`);return o}function Mo(e,t,n,r,i){let a={...e};for(let{column:e}of t){if(a[e.name]===null){a[e.name]=i?void 0:null;continue}if(ko(e.paramType)){let t=a[e.name];a[e.name]=t==null?void 0:t===``?i?void 0:null:jo(t,e.paramType,e.name)}if(vn(e.paramType)){let t=a[e.name];a[e.name]=t==null?void 0:t===``?i?void 0:null:String(t)}if(Ao.some(t=>t===e.paramType)){let t=a[e.name];e.isNullable&&t==null?a[e.name]=i?void 0:null:a[e.name]=!!t}if(Wn(e)){let t=a[e.name];if(typeof t==`string`&&t.trim()!==``)try{a[e.name]=JSON.parse(t)}catch{}}}if(!i&&r)for(let e of n){let t=r[e.name];ko(e.paramType)?a[e.name]=t==null?null:jo(t,e.paramType,e.name):a[e.name]=t}return a}function No(e,t,n,r,i){let a=t.map(e=>({column:e}));return r.map(r=>{let o=Nn(r,e);if(!o)throw Error(`Cannot bulk edit: a selected row has no resolvable primary key.`);let s={};for(let e of t)s[e.name]=r[e.name]??null;Object.assign(s,i);let c=Oo(t,s);if(c.length>0)throw Error(c.join(` `));return Mo(s,a,n,o,!1)})}function Po(e,t,n,r,i){return r.map(r=>{let a=i(r);if(!a||Object.keys(a).length===0)throw Error(`Cannot save: a fetched row carries no staged changes.`);let o=Nn(r,e);if(!o)throw Error(`Cannot save: an edited row has no resolvable primary key.`);let s=t.filter(e=>!e.isNullable||e.name in a),c={};for(let e of s)c[e.name]=r[e.name]??null;Object.assign(c,a);let l=Oo(s,c);if(l.length>0)throw Error(l.join(` `));return Mo(c,s.map(e=>({column:e})),n,o,!1)})}function Fo(e,r,i,a){X(e.name,`table mutation table name`);let o=V(),s=(0,n.useQueryClient)(),{toast:c}=Mi(),l=a===void 0||a===``,u=(0,t.useMemo)(()=>`mutation updateSingle($detail: Update_${e.name}){
83
+ }`,[e]),s=(0,n.useMutation)({mutationFn:e=>r.query(o,{delta:e}),onSuccess:(t,n)=>{fo(i,e.name);let r=go(n);a(`${r} ${r===1?`change`:`changes`} saved`)}});return{saveDelta:e=>s.mutateAsync(e),isPending:s.isPending,error:s.error}}function vo(e){return _n(e.paramType)}function yo(e){return gn(e.paramType)}var bo={Int:{min:-2147483648,max:2147483647},Short:{min:-32768,max:32767},Byte:{min:0,max:255}},xo=-(2n**63n),So=2n**63n-1n;function Co(e){let t=(e.dbType??``).toLowerCase().trim(),n=t.includes(`(`)?t.slice(0,t.indexOf(`(`)).trimEnd():t;if(n===`datetimeoffset`||n===`datetime`||n===`datetime2`||n===`smalldatetime`||n.startsWith(`timestamp`))return`datetime`;if(n===`date`)return`date`;if(n.startsWith(`time`))return`time`}function wo(e){let t=/^[+-]?(\d*)(?:\.\d*)?$/.exec(e.trim());if(t)return t[1].replace(/^0+/,``).length}function To(e){return e.startsWith(`^`)?e:`^(?:${e})$`}function Eo(e){if(e!==e.trim()||/\s/.test(e))return!1;let t=e.lastIndexOf(`@`);if(t<=0||t===e.length-1)return!1;let n=e.slice(t+1);return n.includes(`.`)&&!n.startsWith(`.`)&&!n.endsWith(`.`)}function Do(e){try{let t=new URL(e);return t.protocol===`http:`||t.protocol===`https:`}catch{return!1}}function Oo(e,t,n){let r=e.label;if(n&&(t==null||t===``))return`${r} is required`;if(t==null||t===``)return;if(typeof t==`string`){if(e.pattern){let n;try{n=new RegExp(To(e.pattern))}catch{return`${r} has an invalid validation pattern`}if(!n.test(t))return e.patternMessage||`${r} format is invalid`}if(e.minLength&&t.length<e.minLength)return`${r} must be at least ${e.minLength} characters`;if(e.maxLength&&t.length>e.maxLength)return`${r} must be at most ${e.maxLength} characters`;if(e.inputType===`email`&&!Eo(t))return`Invalid email address`;if(e.inputType===`url`&&!Do(t))return`Invalid URL`}let i=Co(e);if(i&&typeof t==`string`){if(!(i===`time`?/^\d{1,2}:\d{2}(:\d{2}(\.\d+)?)?$/.test(t.trim()):!Number.isNaN(new Date(t).getTime())))return`${r} must be a valid ${i===`datetime`?`date/time`:i}`;if(i!==`time`){let n=new Date(t).getTime(),i=typeof e.min==`string`?new Date(e.min).getTime():NaN,a=typeof e.max==`string`?new Date(e.max).getTime():NaN;if(!Number.isNaN(i)&&n<i)return`${r} must be on or after ${e.min}`;if(!Number.isNaN(a)&&n>a)return`${r} must be on or before ${e.max}`}return}if(dn(e.paramType)===`BigInt`&&typeof t==`string`&&t.trim()!==``){let e=t.trim();if(!/^[+-]?\d+$/.test(e))return`${r} must be a whole number`;let n=BigInt(e);return n<xo||n>So?`${r} is out of range for a 64-bit integer`:void 0}if(e.precision!=null&&(typeof t==`string`||typeof t==`number`)){let n=Math.max(e.precision-(e.scale??0),0),i=wo(String(t));if(i!==void 0&&i>n)return`${r} must have at most ${n} digits before the decimal point`}if(vo(e)){let n=Number(t);if(!Number.isFinite(n))return`${r} must be a number`;if(yo(e)&&!Number.isInteger(n))return`${r} must be a whole number`;let i=bo[dn(e.paramType)];if(i&&(n<i.min||n>i.max))return`${r} must be between ${i.min} and ${i.max}`;let a=e.min==null?NaN:Number(e.min),o=e.max==null?NaN:Number(e.max);if(!Number.isNaN(a)&&n<a)return`${r} must be at least ${e.min}`;if(!Number.isNaN(o)&&n>o)return`${r} must be at most ${e.max}`}}function ko(e,t){let n=[];for(let r of e){let e=t[r.name];if(e==null||e===``)continue;let i=Oo(r,e,!1);i&&n.push(i)}return n}var Ao=e=>_n(e)&&!vn(e),jo=[`Boolean`,`Boolean!`];function Mo(e,t,n){let r=dn(t),i=gn(t);if(typeof e==`number`){if(Number.isFinite(e)&&(!i||Number.isInteger(e)))return e;throw Error(`Invalid ${r} value for column '${n}'.`)}let a=String(e).trim();if(!(i?/^[+-]?\d+$/.test(a):/^[+-]?(?:(?:\d+\.?\d*)|(?:\.\d+))(?:[eE][+-]?\d+)?$/.test(a)))throw Error(`Invalid ${r} value for column '${n}'.`);let o=Number(a);if(!Number.isFinite(o))throw Error(`Invalid ${r} value for column '${n}'.`);return o}function No(e,t,n,r,i){let a={...e};for(let{column:e}of t){if(a[e.name]===null){a[e.name]=i?void 0:null;continue}if(Ao(e.paramType)){let t=a[e.name];a[e.name]=t==null?void 0:t===``?i?void 0:null:Mo(t,e.paramType,e.name)}if(vn(e.paramType)){let t=a[e.name];a[e.name]=t==null?void 0:t===``?i?void 0:null:String(t)}if(jo.some(t=>t===e.paramType)){let t=a[e.name];e.isNullable&&t==null?a[e.name]=i?void 0:null:a[e.name]=!!t}if(Wn(e)){let t=a[e.name];if(typeof t==`string`&&t.trim()!==``)try{a[e.name]=JSON.parse(t)}catch{}}}if(!i&&r)for(let e of n){let t=r[e.name];Ao(e.paramType)?a[e.name]=t==null?null:Mo(t,e.paramType,e.name):a[e.name]=t}return a}function Po(e,t,n,r,i){let a=t.map(e=>({column:e}));return r.map(r=>{let o=Nn(r,e);if(!o)throw Error(`Cannot bulk edit: a selected row has no resolvable primary key.`);let s={};for(let e of t)s[e.name]=r[e.name]??null;Object.assign(s,i);let c=ko(t,s);if(c.length>0)throw Error(c.join(` `));return No(s,a,n,o,!1)})}function Fo(e,t,n,r,i){return r.map(r=>{let a=i(r);if(!a||Object.keys(a).length===0)throw Error(`Cannot save: a fetched row carries no staged changes.`);let o=Nn(r,e);if(!o)throw Error(`Cannot save: an edited row has no resolvable primary key.`);let s=t.filter(e=>!e.isNullable||e.name in a),c={};for(let e of s)c[e.name]=r[e.name]??null;Object.assign(c,a);let l=ko(s,c);if(l.length>0)throw Error(l.join(` `));return No(c,s.map(e=>({column:e})),n,o,!1)})}function Io(e,r,i,a){X(e.name,`table mutation table name`);let o=V(),s=(0,n.useQueryClient)(),{toast:c}=Mi(),l=a===void 0||a===``,u=(0,t.useMemo)(()=>`mutation updateSingle($detail: Update_${e.name}){
84
84
  ${e.name}(update: $detail)
85
85
  }`,[e]),d=(0,t.useMemo)(()=>`mutation insertSingle($detail: Insert_${e.name}){
86
86
  ${e.name}(insert: $detail)
87
- }`,[e]),f=(0,n.useMutation)({mutationFn:e=>o.query(u,{detail:e}),onSuccess:()=>{uo(s,e.name),c(`${e.label??e.name} saved`)}}),p=(0,n.useMutation)({mutationFn:e=>o.query(d,{detail:e}),onSuccess:()=>{uo(s,e.name),c(`${e.label??e.name} created`)}}),m=(0,t.useMemo)(()=>l||!a?null:In(a,e),[l,a,e]),[h,g]=(0,t.useState)(null),_=e=>{let t=e instanceof Error?e:Error(String(e));return g(t),Promise.reject(t)},v=t=>{if(g(null),!m||i.length===0)return _(Error(`Cannot update ${e.label??e.name}: the record has no resolvable primary key.`));let n=Oo(r.map(e=>e.column),t);if(n.length>0)return _(Error(n.join(` `)));let a;try{a=Mo(t,r,i,m,!1)}catch(e){return _(e)}return f.mutateAsync(a)},y=e=>{g(null);let t=Oo(r.map(e=>e.column),e);if(t.length>0)return _(Error(t.join(` `)));let n;try{n=Mo(e,r,i,null,!0)}catch(e){return _(e)}return p.mutateAsync(n)},b=h??f.error??p.error;return{update:v,insert:y,isPending:f.isPending||p.isPending,error:b}}var Io=1e3;function Lo(e){let t=e.labelColumn||wr(e)[0]?.name||e.columns[0]?.name;if(!t)throw Error(`Table '${e.name}' has no usable label column for a reference dropdown.`);return t}function Ro(e,t,n){X(e.name,`reference table name`),X(t,`reference key column`);let r=Lo(e);if(X(r,`reference label column`),!e.columns.some(e=>e.name===t))throw Error(`Reference table '${e.name}' has no key column '${t}'.`);let i=e.columns.find(e=>e.name===r)?.paramType?.replace(`!`,``)===`String`,a=!!n&&n.trim()!==``&&i,o=a?`$limit: Int, $search: String`:`$limit: Int`,s=a?`filter: {${r}: {_contains: $search}} `:``;return{query:`query Get_${e.name}_Ref(${o}) {
87
+ }`,[e]),f=(0,n.useMutation)({mutationFn:e=>o.query(u,{detail:e}),onSuccess:()=>{fo(s,e.name),c(`${e.label??e.name} saved`)}}),p=(0,n.useMutation)({mutationFn:e=>o.query(d,{detail:e}),onSuccess:()=>{fo(s,e.name),c(`${e.label??e.name} created`)}}),m=(0,t.useMemo)(()=>l||!a?null:In(a,e),[l,a,e]),[h,g]=(0,t.useState)(null),_=e=>{let t=e instanceof Error?e:Error(String(e));return g(t),Promise.reject(t)},v=t=>{if(g(null),!m||i.length===0)return _(Error(`Cannot update ${e.label??e.name}: the record has no resolvable primary key.`));let n=ko(r.map(e=>e.column),t);if(n.length>0)return _(Error(n.join(` `)));let a;try{a=No(t,r,i,m,!1)}catch(e){return _(e)}return f.mutateAsync(a)},y=e=>{g(null);let t=ko(r.map(e=>e.column),e);if(t.length>0)return _(Error(t.join(` `)));let n;try{n=No(e,r,i,null,!0)}catch(e){return _(e)}return p.mutateAsync(n)},b=h??f.error??p.error;return{update:v,insert:y,isPending:f.isPending||p.isPending,error:b}}var Lo=1e3;function Ro(e){let t=e.labelColumn||wr(e)[0]?.name||e.columns[0]?.name;if(!t)throw Error(`Table '${e.name}' has no usable label column for a reference dropdown.`);return t}function zo(e,t,n){X(e.name,`reference table name`),X(t,`reference key column`);let r=Ro(e);if(X(r,`reference label column`),!e.columns.some(e=>e.name===t))throw Error(`Reference table '${e.name}' has no key column '${t}'.`);let i=e.columns.find(e=>e.name===r)?.paramType?.replace(`!`,``)===`String`,a=!!n&&n.trim()!==``&&i,o=a?`$limit: Int, $search: String`:`$limit: Int`,s=a?`filter: {${r}: {_contains: $search}} `:``;return{query:`query Get_${e.name}_Ref(${o}) {
88
88
  values: ${e.name}(${s}limit: $limit sort: [${r}_asc]) {
89
89
  data {
90
90
  key: ${t}
91
91
  label: ${r}
92
92
  }
93
93
  }
94
- }`,labelColumn:r,serverSearch:i}}function zo(e,t){X(e.name,`reference table name`),X(t,`reference key column`);let n=Lo(e);X(n,`reference label column`);let r=e.columns.find(e=>e.name===t);if(!r)throw Error(`Reference table '${e.name}' has no key column '${t}'.`);let i=r.paramType.replace(`!`,``);return{query:`query Get_${e.name}_RefValue($key: ${i}) {
94
+ }`,labelColumn:r,serverSearch:i}}function Bo(e,t){X(e.name,`reference table name`),X(t,`reference key column`);let n=Ro(e);X(n,`reference label column`);let r=e.columns.find(e=>e.name===t);if(!r)throw Error(`Reference table '${e.name}' has no key column '${t}'.`);let i=r.paramType.replace(`!`,``);return{query:`query Get_${e.name}_RefValue($key: ${i}) {
95
95
  values: ${e.name}(filter: {${t}: {_eq: $key}} limit: 1) {
96
96
  data {
97
97
  key: ${t}
98
98
  label: ${n}
99
99
  }
100
100
  }
101
- }`,keyType:i}}function Bo(e,t){return Sn(t,e)}function Vo(e,t){return e?.data?.find(e=>e.graphQlName===t)}function Ho(e,r,i,a=``,o=!0){let s=V(),c=(0,t.useMemo)(()=>Vo(e,r),[e,r]),l=a.trim(),u=(0,t.useMemo)(()=>e.loading||e.error||!c?null:Ro(c,i,l),[i,c,e.loading,e.error,l]),d=u?.serverSearch?l:``,{isLoading:f,error:p,data:m}=(0,n.useQuery)({queryKey:[`tableRef`,r,i,d],queryFn:({signal:e})=>s.query(u.query,d?{limit:50,search:d}:{limit:Io},{signal:e}),enabled:!!u&&o});return{loading:f||e.loading,error:p||e.error,data:m?.values?.data??[],serverSearch:u?.serverSearch??!1}}function Uo(e,r,i,a){let o=V(),s=(0,t.useMemo)(()=>Vo(e,r),[e,r]),c=!e.loading&&!e.error&&!!s&&a!=null&&a!==``,l=(0,t.useMemo)(()=>c?zo(s,i):null,[c,s,i]),{isLoading:u,error:d,data:f}=(0,n.useQuery)({queryKey:[`tableRefValue`,r,i,String(a??``)],queryFn:({signal:e})=>o.query(l.query,{key:Bo(l.keyType,a)},{signal:e}),enabled:!!l});return{loading:u,error:d||e.error,value:f?.values?.data?.at(0)??null}}var Wo=500,Go=50;function Ko(e,r,i,a={}){let o=V(),{search:s=``,enabled:c=!0,currentValues:l=null}=a,u=s.trim(),d=(0,t.useMemo)(()=>e?.data?.find(e=>e.graphQlName===r),[e,r]),f=(0,t.useMemo)(()=>d?.labelColumn||i[0],[d,i]),p=(0,t.useMemo)(()=>d?.columns.find(e=>e.name===f)?.paramType?.replace(`!`,``)===`String`,[d,f]),m=(0,t.useMemo)(()=>{if(!d||i.length===0||!ir(r)||!ir(f))return!1;let e=new Set(d.columns.map(e=>e.name));return e.has(f)?i.every(t=>ir(t)&&e.has(t)):!1},[d,r,i,f]),h=(0,t.useMemo)(()=>{if(!d||!m)return``;let e=new Set(i);return e.add(f),Array.from(e).join(` `)},[d,m,i,f]),g=!!u&&p,_=(0,t.useMemo)(()=>e.loading||e.error||!d||i.length===0||!m?null:`query Get_${r}_CompositeRef${g?`($limit: Int, $search: String)`:`($limit: Int)`} { values: ${r}(${g?`filter: {${f}: {_contains: $search}} `:``}limit: $limit sort: [${f}_asc]) { data { ${h} } } }`,[d,r,h,f,g,e.loading,e.error,i.length,m]),v=p?u:``,{isLoading:y,error:b,data:x}=(0,n.useQuery)({queryKey:[`compositeTableRef`,r,i.join(`|`),v],queryFn:()=>o.query(_,v?{limit:Go,search:v}:{limit:Wo}),enabled:!!_&&c}),S=(0,t.useMemo)(()=>{if(!d||!x)return[];let e={primaryKeys:i};return(x.values?.data??[]).map((t,n)=>{let r={};for(let e of i)r[e]=t[e];let a=Mn(t,e,n);return{route:a,values:r,label:String(t[f]??a)}})},[d,i,f,x]),C=(0,t.useMemo)(()=>{if(!l)return``;let e=[];for(let t of i){let n=l[t];if(n==null||n===``)return``;e.push(n)}return An(e)},[l,i]),w=C===``||S.some(e=>e.route===C),T=(0,t.useMemo)(()=>{if(!d||!m||w||C===``||!l)return null;let e=new Map(d.columns.map(e=>[e.name,e])),t=[],n=[],a={};for(let r=0;r<i.length;r++){let o=i[r],s=Cn(e.get(o)),c=`k${r}`;n.push(`$${c}: ${s}`),t.push(`{${o}: {_eq: $${c}}}`),a[c]=Sn(l[o],s)}let o=t.length===1?t[0]:`{and: [${t.join(`, `)}]}`;return{query:`query Get_${r}_CompositeRefValue(${n.join(`, `)}) { values: ${r}(filter: ${o} limit: 1) { data { ${h} } } }`,variables:a}},[d,r,h,i,w,C,l,m]),{data:E}=(0,n.useQuery)({queryKey:[`compositeTableRefValue`,r,C],queryFn:()=>o.query(T.query,T.variables),enabled:!!T}),D=(0,t.useMemo)(()=>{let e=E?.values?.data?.[0];if(!e)return S;let t={};for(let n of i)t[n]=e[n];let n=An(i.map(t=>e[t]));return S.some(e=>e.route===n)?S:[{route:n,values:t,label:String(e[f]??n)},...S]},[S,E,i,f]);return{loading:y||e.loading,error:b||e.error,data:D,serverSearch:p}}var qo=new Set([`DateTime`,`DateTime!`]);function Jo(e){return qo.has(e.paramType)}function Yo(e){return Xr(e)===`datetime`}function Xo(e,t){if(!e)return``;let n=e.match(/^(\d{4}-\d{2}-\d{2})(?:[T ](\d{2}:\d{2}(?::\d{2})?))?/);if(!n||n[1]===`0001-01-01`)return``;if(!t||!n[2])return n[1];let r=n[2].length===5?`${n[2]}:00`:n[2];return`${n[1]}T${r}`}function Zo(e,t,n){let r={...e};for(let e of n){if(!Jo(e))continue;let n=t[e.name];typeof n==`string`&&n!==``&&Xo(n,Yo(e))===r[e.name]&&(r[e.name]=n)}return r}function Qo(e,t,n){let r=e;return String(r.label??r[t]??``).toLowerCase().includes(n.toLowerCase())}var $o=t.forwardRef(({...e},t)=>(0,r.jsx)(a.Dialog.Root,{"data-slot":`dialog`,...e}));$o.displayName=`Dialog`;var es=t.forwardRef(({...e},t)=>(0,r.jsx)(a.Dialog.Trigger,{"data-slot":`dialog-trigger`,...e}));es.displayName=`DialogTrigger`;var ts=t.forwardRef(({...e},t)=>(0,r.jsx)(a.Dialog.Portal,{"data-slot":`dialog-portal`,...e}));ts.displayName=`DialogPortal`;var ns=t.forwardRef(({...e},t)=>(0,r.jsx)(a.Dialog.Close,{"data-slot":`dialog-close`,...e}));ns.displayName=`DialogClose`;var rs=t.forwardRef(({className:e,...t},n)=>(0,r.jsx)(a.Dialog.Overlay,{ref:n,"data-slot":`dialog-overlay`,className:Y(`fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0`,e),...t}));rs.displayName=`DialogOverlay`;var is=t.forwardRef(({className:e,children:t,showCloseButton:n=!0,...o},s)=>(0,r.jsxs)(ts,{"data-slot":`dialog-portal`,children:[(0,r.jsx)(rs,{}),(0,r.jsxs)(a.Dialog.Content,{ref:s,"data-slot":`dialog-content`,className:Y(`fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-lg`,e),...o,children:[t,n&&(0,r.jsxs)(a.Dialog.Close,{"data-slot":`dialog-close`,className:`absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,children:[(0,r.jsx)(i.XIcon,{}),(0,r.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]}));is.displayName=`DialogContent`;var as=t.forwardRef(({className:e,...t},n)=>(0,r.jsx)(`div`,{ref:n,"data-slot":`dialog-header`,className:Y(`flex flex-col gap-2 text-center sm:text-left`,e),...t}));as.displayName=`DialogHeader`;var os=t.forwardRef(({className:e,showCloseButton:t=!1,children:n,...i},o)=>(0,r.jsxs)(`div`,{ref:o,"data-slot":`dialog-footer`,className:Y(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,e),...i,children:[n,t&&(0,r.jsx)(a.Dialog.Close,{asChild:!0,children:(0,r.jsx)(Z,{variant:`outline`,children:`Close`})})]}));os.displayName=`DialogFooter`;var ss=t.forwardRef(({className:e,...t},n)=>(0,r.jsx)(a.Dialog.Title,{ref:n,"data-slot":`dialog-title`,className:Y(`text-lg leading-none font-semibold`,e),...t}));ss.displayName=`DialogTitle`;var cs=t.forwardRef(({className:e,...t},n)=>(0,r.jsx)(a.Dialog.Description,{ref:n,"data-slot":`dialog-description`,className:Y(`text-sm text-muted-foreground`,e),...t}));cs.displayName=`DialogDescription`;function ls({className:e,...t}){return(0,r.jsx)(a.Checkbox.Root,{"data-slot":`checkbox`,className:Y(`peer size-4 shrink-0 rounded-[4px] border border-input shadow-xs transition-shadow outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:bg-input/30 dark:aria-invalid:ring-destructive/40 dark:data-[state=checked]:bg-primary`,e),...t,children:(0,r.jsx)(a.Checkbox.Indicator,{"data-slot":`checkbox-indicator`,className:`grid place-content-center text-current transition-none`,children:(0,r.jsx)(i.CheckIcon,{className:`size-3.5`})})})}function us({className:e,...t}){return(0,r.jsx)(a.Label.Root,{"data-slot":`label`,className:Y(`flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,e),...t})}function ds({open:e,onOpenChange:t,title:n,description:i,confirmLabel:a=`Confirm`,cancelLabel:o=`Cancel`,variant:s=`default`,isPending:c=!1,onConfirm:l}){return(0,r.jsx)($o,{open:e,onOpenChange:t,children:(0,r.jsxs)(is,{showCloseButton:!1,children:[(0,r.jsxs)(as,{children:[(0,r.jsx)(ss,{children:n}),(0,r.jsx)(cs,{asChild:!0,children:(0,r.jsx)(`div`,{children:i})})]}),(0,r.jsxs)(os,{children:[(0,r.jsx)(Z,{variant:`outline`,onClick:()=>t(!1),disabled:c,children:o}),(0,r.jsx)(Z,{variant:s===`destructive`?`destructive`:`default`,onClick:l,disabled:c,children:c?`${a}…`:a})]})]})})}function fs({name:e,label:n,value:a,dbType:o,onChange:s,onBlur:c,required:l,invalid:u}){let d=Hn(o),f=Gn(o),p=qn(a,o),[m,h]=(0,t.useState)(null),g=(0,t.useRef)(null),_=(0,t.useCallback)(()=>{let e=g.current;e&&(e.style.height=`auto`,e.style.height=Math.min(e.scrollHeight,400)+`px`)},[]);return(0,t.useEffect)(_,[a,_]),d?(0,r.jsx)(ps,{name:e,label:n,value:a}):!f&&p===`text`?null:(0,r.jsxs)(`div`,{className:`grid gap-1`,children:[(p===`json`||p===`xml`)&&(0,r.jsxs)(`div`,{className:`flex items-center gap-1 justify-end`,children:[(0,r.jsxs)(Z,{type:`button`,variant:`ghost`,size:`sm`,className:`h-6 text-xs px-2`,onClick:()=>{if(h(null),p===`json`)try{s(JSON.stringify(JSON.parse(a),null,2))}catch{h(`Invalid JSON`)}else if(p===`xml`)try{s(a.replace(/>\s*</g,`>
101
+ }`,keyType:i}}function Vo(e,t){return Sn(t,e)}function Ho(e,t){return e?.data?.find(e=>e.graphQlName===t)}function Uo(e,r,i,a=``,o=!0){let s=V(),c=(0,t.useMemo)(()=>Ho(e,r),[e,r]),l=a.trim(),u=(0,t.useMemo)(()=>e.loading||e.error||!c?null:zo(c,i,l),[i,c,e.loading,e.error,l]),d=u?.serverSearch?l:``,{isLoading:f,error:p,data:m}=(0,n.useQuery)({queryKey:[`tableRef`,r,i,d],queryFn:({signal:e})=>s.query(u.query,d?{limit:50,search:d}:{limit:Lo},{signal:e}),enabled:!!u&&o});return{loading:f||e.loading,error:p||e.error,data:m?.values?.data??[],serverSearch:u?.serverSearch??!1}}function Wo(e,r,i,a){let o=V(),s=(0,t.useMemo)(()=>Ho(e,r),[e,r]),c=!e.loading&&!e.error&&!!s&&a!=null&&a!==``,l=(0,t.useMemo)(()=>c?Bo(s,i):null,[c,s,i]),{isLoading:u,error:d,data:f}=(0,n.useQuery)({queryKey:[`tableRefValue`,r,i,String(a??``)],queryFn:({signal:e})=>o.query(l.query,{key:Vo(l.keyType,a)},{signal:e}),enabled:!!l});return{loading:u,error:d||e.error,value:f?.values?.data?.at(0)??null}}var Go=500,Ko=50;function qo(e,r,i,a={}){let o=V(),{search:s=``,enabled:c=!0,currentValues:l=null}=a,u=s.trim(),d=(0,t.useMemo)(()=>e?.data?.find(e=>e.graphQlName===r),[e,r]),f=(0,t.useMemo)(()=>d?.labelColumn||i[0],[d,i]),p=(0,t.useMemo)(()=>d?.columns.find(e=>e.name===f)?.paramType?.replace(`!`,``)===`String`,[d,f]),m=(0,t.useMemo)(()=>{if(!d||i.length===0||!ir(r)||!ir(f))return!1;let e=new Set(d.columns.map(e=>e.name));return e.has(f)?i.every(t=>ir(t)&&e.has(t)):!1},[d,r,i,f]),h=(0,t.useMemo)(()=>{if(!d||!m)return``;let e=new Set(i);return e.add(f),Array.from(e).join(` `)},[d,m,i,f]),g=!!u&&p,_=(0,t.useMemo)(()=>e.loading||e.error||!d||i.length===0||!m?null:`query Get_${r}_CompositeRef${g?`($limit: Int, $search: String)`:`($limit: Int)`} { values: ${r}(${g?`filter: {${f}: {_contains: $search}} `:``}limit: $limit sort: [${f}_asc]) { data { ${h} } } }`,[d,r,h,f,g,e.loading,e.error,i.length,m]),v=p?u:``,{isLoading:y,error:b,data:x}=(0,n.useQuery)({queryKey:[`compositeTableRef`,r,i.join(`|`),v],queryFn:()=>o.query(_,v?{limit:Ko,search:v}:{limit:Go}),enabled:!!_&&c}),S=(0,t.useMemo)(()=>{if(!d||!x)return[];let e={primaryKeys:i};return(x.values?.data??[]).map((t,n)=>{let r={};for(let e of i)r[e]=t[e];let a=Mn(t,e,n);return{route:a,values:r,label:String(t[f]??a)}})},[d,i,f,x]),C=(0,t.useMemo)(()=>{if(!l)return``;let e=[];for(let t of i){let n=l[t];if(n==null||n===``)return``;e.push(n)}return An(e)},[l,i]),w=C===``||S.some(e=>e.route===C),T=(0,t.useMemo)(()=>{if(!d||!m||w||C===``||!l)return null;let e=new Map(d.columns.map(e=>[e.name,e])),t=[],n=[],a={};for(let r=0;r<i.length;r++){let o=i[r],s=Cn(e.get(o)),c=`k${r}`;n.push(`$${c}: ${s}`),t.push(`{${o}: {_eq: $${c}}}`),a[c]=Sn(l[o],s)}let o=t.length===1?t[0]:`{and: [${t.join(`, `)}]}`;return{query:`query Get_${r}_CompositeRefValue(${n.join(`, `)}) { values: ${r}(filter: ${o} limit: 1) { data { ${h} } } }`,variables:a}},[d,r,h,i,w,C,l,m]),{data:E}=(0,n.useQuery)({queryKey:[`compositeTableRefValue`,r,C],queryFn:()=>o.query(T.query,T.variables),enabled:!!T}),D=(0,t.useMemo)(()=>{let e=E?.values?.data?.[0];if(!e)return S;let t={};for(let n of i)t[n]=e[n];let n=An(i.map(t=>e[t]));return S.some(e=>e.route===n)?S:[{route:n,values:t,label:String(e[f]??n)},...S]},[S,E,i,f]);return{loading:y||e.loading,error:b||e.error,data:D,serverSearch:p}}var Jo=new Set([`DateTime`,`DateTime!`]);function Yo(e){return Jo.has(e.paramType)}function Xo(e){return Xr(e)===`datetime`}function Zo(e,t){if(!e)return``;let n=e.match(/^(\d{4}-\d{2}-\d{2})(?:[T ](\d{2}:\d{2}(?::\d{2})?))?/);if(!n||n[1]===`0001-01-01`)return``;if(!t||!n[2])return n[1];let r=n[2].length===5?`${n[2]}:00`:n[2];return`${n[1]}T${r}`}function Qo(e,t,n){let r={...e};for(let e of n){if(!Yo(e))continue;let n=t[e.name];typeof n==`string`&&n!==``&&Zo(n,Xo(e))===r[e.name]&&(r[e.name]=n)}return r}function $o(e,t,n){let r=e;return String(r.label??r[t]??``).toLowerCase().includes(n.toLowerCase())}var es=t.forwardRef(({...e},t)=>(0,r.jsx)(a.Dialog.Root,{"data-slot":`dialog`,...e}));es.displayName=`Dialog`;var ts=t.forwardRef(({...e},t)=>(0,r.jsx)(a.Dialog.Trigger,{"data-slot":`dialog-trigger`,...e}));ts.displayName=`DialogTrigger`;var ns=t.forwardRef(({...e},t)=>(0,r.jsx)(a.Dialog.Portal,{"data-slot":`dialog-portal`,...e}));ns.displayName=`DialogPortal`;var rs=t.forwardRef(({...e},t)=>(0,r.jsx)(a.Dialog.Close,{"data-slot":`dialog-close`,...e}));rs.displayName=`DialogClose`;var is=t.forwardRef(({className:e,...t},n)=>(0,r.jsx)(a.Dialog.Overlay,{ref:n,"data-slot":`dialog-overlay`,className:Y(`fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0`,e),...t}));is.displayName=`DialogOverlay`;var as=t.forwardRef(({className:e,children:t,showCloseButton:n=!0,...o},s)=>(0,r.jsxs)(ns,{"data-slot":`dialog-portal`,children:[(0,r.jsx)(is,{}),(0,r.jsxs)(a.Dialog.Content,{ref:s,"data-slot":`dialog-content`,className:Y(`fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-lg`,e),...o,children:[t,n&&(0,r.jsxs)(a.Dialog.Close,{"data-slot":`dialog-close`,className:`absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,children:[(0,r.jsx)(i.XIcon,{}),(0,r.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]}));as.displayName=`DialogContent`;var os=t.forwardRef(({className:e,...t},n)=>(0,r.jsx)(`div`,{ref:n,"data-slot":`dialog-header`,className:Y(`flex flex-col gap-2 text-center sm:text-left`,e),...t}));os.displayName=`DialogHeader`;var ss=t.forwardRef(({className:e,showCloseButton:t=!1,children:n,...i},o)=>(0,r.jsxs)(`div`,{ref:o,"data-slot":`dialog-footer`,className:Y(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,e),...i,children:[n,t&&(0,r.jsx)(a.Dialog.Close,{asChild:!0,children:(0,r.jsx)(Z,{variant:`outline`,children:`Close`})})]}));ss.displayName=`DialogFooter`;var cs=t.forwardRef(({className:e,...t},n)=>(0,r.jsx)(a.Dialog.Title,{ref:n,"data-slot":`dialog-title`,className:Y(`text-lg leading-none font-semibold`,e),...t}));cs.displayName=`DialogTitle`;var ls=t.forwardRef(({className:e,...t},n)=>(0,r.jsx)(a.Dialog.Description,{ref:n,"data-slot":`dialog-description`,className:Y(`text-sm text-muted-foreground`,e),...t}));ls.displayName=`DialogDescription`;function us({className:e,...t}){return(0,r.jsx)(a.Checkbox.Root,{"data-slot":`checkbox`,className:Y(`peer size-4 shrink-0 rounded-[4px] border border-input shadow-xs transition-shadow outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:bg-input/30 dark:aria-invalid:ring-destructive/40 dark:data-[state=checked]:bg-primary`,e),...t,children:(0,r.jsx)(a.Checkbox.Indicator,{"data-slot":`checkbox-indicator`,className:`grid place-content-center text-current transition-none`,children:(0,r.jsx)(i.CheckIcon,{className:`size-3.5`})})})}function ds({className:e,...t}){return(0,r.jsx)(a.Label.Root,{"data-slot":`label`,className:Y(`flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,e),...t})}function fs({open:e,onOpenChange:t,title:n,description:i,confirmLabel:a=`Confirm`,cancelLabel:o=`Cancel`,variant:s=`default`,isPending:c=!1,onConfirm:l}){return(0,r.jsx)(es,{open:e,onOpenChange:t,children:(0,r.jsxs)(as,{showCloseButton:!1,children:[(0,r.jsxs)(os,{children:[(0,r.jsx)(cs,{children:n}),(0,r.jsx)(ls,{asChild:!0,children:(0,r.jsx)(`div`,{children:i})})]}),(0,r.jsxs)(ss,{children:[(0,r.jsx)(Z,{variant:`outline`,onClick:()=>t(!1),disabled:c,children:o}),(0,r.jsx)(Z,{variant:s===`destructive`?`destructive`:`default`,onClick:l,disabled:c,children:c?`${a}…`:a})]})]})})}function ps({name:e,label:n,value:a,dbType:o,onChange:s,onBlur:c,required:l,invalid:u}){let d=Hn(o),f=Gn(o),p=qn(a,o),[m,h]=(0,t.useState)(null),g=(0,t.useRef)(null),_=(0,t.useCallback)(()=>{let e=g.current;e&&(e.style.height=`auto`,e.style.height=Math.min(e.scrollHeight,400)+`px`)},[]);return(0,t.useEffect)(_,[a,_]),d?(0,r.jsx)(ms,{name:e,label:n,value:a}):!f&&p===`text`?null:(0,r.jsxs)(`div`,{className:`grid gap-1`,children:[(p===`json`||p===`xml`)&&(0,r.jsxs)(`div`,{className:`flex items-center gap-1 justify-end`,children:[(0,r.jsxs)(Z,{type:`button`,variant:`ghost`,size:`sm`,className:`h-6 text-xs px-2`,onClick:()=>{if(h(null),p===`json`)try{s(JSON.stringify(JSON.parse(a),null,2))}catch{h(`Invalid JSON`)}else if(p===`xml`)try{s(a.replace(/>\s*</g,`>
102
102
  <`).replace(/(<[^/][^>]*[^/]>)\n/g,`$1
103
- `).trim())}catch{h(`Could not format XML`)}},children:[(0,r.jsx)(i.WrapText,{className:`size-3`}),`Format`]}),(0,r.jsx)(Z,{type:`button`,variant:`ghost`,size:`sm`,className:`h-6 text-xs px-2`,onClick:()=>{if(h(null),p===`json`)try{s(JSON.stringify(JSON.parse(a)))}catch{h(`Invalid JSON`)}else p===`xml`&&s(a.replace(/\n\s*/g,``).trim())},children:`Minify`})]}),(0,r.jsx)(`textarea`,{ref:g,id:e,value:a,onChange:e=>{s(e.target.value),h(null)},onBlur:c,required:l,"aria-invalid":u,className:Y(`flex w-full rounded-md border border-input bg-background px-3 py-2`,`text-xs font-mono leading-relaxed`,`ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,`disabled:cursor-not-allowed disabled:opacity-50`,`resize-none min-h-[80px] max-h-[400px]`,u&&`border-destructive`)}),m&&(0,r.jsx)(`p`,{className:`text-xs text-destructive`,children:m})]})}function ps({name:e,label:t,value:n}){let a=n?Math.ceil(n.length*3/4):0,o=a<1024?`${a} bytes`:a<1048576?`${(a/1024).toFixed(1)} KB`:`${(a/1048576).toFixed(1)} MB`,s=n?n.slice(0,256)+(n.length>256?`...`:``):`(empty)`,c=n?Xn(n):null;return(0,r.jsxs)(`div`,{className:`grid gap-2`,children:[(0,r.jsxs)(us,{htmlFor:e,className:`flex items-center gap-1.5`,children:[(0,r.jsx)(i.Binary,{className:`size-3.5 text-muted-foreground`}),t,(0,r.jsxs)(`span`,{className:`text-xs text-muted-foreground font-normal ml-1`,children:[`(binary, `,o,`)`]})]}),c?.kind===`image`?(0,r.jsx)(`img`,{src:Zn(n,c.mime),alt:t,className:`max-h-[160px] w-fit rounded-md border border-input`}):(0,r.jsx)(`div`,{className:`rounded-md border border-input bg-muted/30 p-3 max-h-[160px] overflow-auto`,children:(0,r.jsx)(`pre`,{className:`text-xs font-mono text-muted-foreground break-all whitespace-pre-wrap`,children:s})}),(0,r.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Binary fields are read-only in this editor.`})]})}var ms=[`Boolean`,`Boolean!`],hs=`__none__`;function gs(e,t){return e==null||e===``?t?hs:``:String(e)}function _s(e){return t=>{t!==``&&e(t)}}function vs(e,t){let n=({value:n})=>Do(e,n,t);return{onSubmit:n,onBlur:n}}function ys(e,t){let n=e.state.meta.errors.length>0;return{hasError:n,ariaProps:{"aria-invalid":n,"aria-describedby":n?t:void 0}}}function bs(e){return Hn(e.dbType)||Gn(e.dbType)||Wn(e)}var xs={filterText:``,variables:{},params:[]};function Ss(e,t){return t!==`none`||(e.enumValues?.length??0)>0}function Cs(e,n){return(0,t.useMemo)(()=>{let t=e?.data?.find(e=>e.graphQlName===n);if(!t)throw Error(`useTable: table '${n}' not found in schema`);let r=t.columns.filter(e=>!e.isReadOnly&&!e.isIdentity).map(e=>{let n=t.singleJoins.find(t=>t.sourceColumnNames[0]===e.graphQlName);if(n)return{column:e,join:n,fkRole:wn(n)?`anchor-composite`:`anchor-single`};let r=t.singleJoins.find(t=>(t.sourceColumnNames??[]).includes(e.graphQlName));return r?{column:e,join:r,fkRole:`member-composite`}:{column:e,fkRole:`none`}}),i=new Map(t.columns.map(e=>[e.name,e]));return[t,r,(t.primaryKeys??[]).map(e=>i.get(e)).filter(e=>!!e)]},[e,n])}function ws(e,r,i){let a=V(),o=i===void 0||i===``,s=(0,t.useMemo)(()=>o?null:In(i,e),[o,i,e]),c=(0,t.useMemo)(()=>o||!s?xs:Pn(s,e)??xs,[o,s,e]),l=!o&&c.filterText===``,u=(0,t.useMemo)(()=>{let t=c.params.length>0?c.params.join(`, `):``;return`query GetSingleEdit_${e.name}(${t}){
103
+ `).trim())}catch{h(`Could not format XML`)}},children:[(0,r.jsx)(i.WrapText,{className:`size-3`}),`Format`]}),(0,r.jsx)(Z,{type:`button`,variant:`ghost`,size:`sm`,className:`h-6 text-xs px-2`,onClick:()=>{if(h(null),p===`json`)try{s(JSON.stringify(JSON.parse(a)))}catch{h(`Invalid JSON`)}else p===`xml`&&s(a.replace(/\n\s*/g,``).trim())},children:`Minify`})]}),(0,r.jsx)(`textarea`,{ref:g,id:e,value:a,onChange:e=>{s(e.target.value),h(null)},onBlur:c,required:l,"aria-invalid":u,className:Y(`flex w-full rounded-md border border-input bg-background px-3 py-2`,`text-xs font-mono leading-relaxed`,`ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,`disabled:cursor-not-allowed disabled:opacity-50`,`resize-none min-h-[80px] max-h-[400px]`,u&&`border-destructive`)}),m&&(0,r.jsx)(`p`,{className:`text-xs text-destructive`,children:m})]})}function ms({name:e,label:t,value:n}){let a=n?Math.ceil(n.length*3/4):0,o=a<1024?`${a} bytes`:a<1048576?`${(a/1024).toFixed(1)} KB`:`${(a/1048576).toFixed(1)} MB`,s=n?n.slice(0,256)+(n.length>256?`...`:``):`(empty)`,c=n?Xn(n):null;return(0,r.jsxs)(`div`,{className:`grid gap-2`,children:[(0,r.jsxs)(ds,{htmlFor:e,className:`flex items-center gap-1.5`,children:[(0,r.jsx)(i.Binary,{className:`size-3.5 text-muted-foreground`}),t,(0,r.jsxs)(`span`,{className:`text-xs text-muted-foreground font-normal ml-1`,children:[`(binary, `,o,`)`]})]}),c?.kind===`image`?(0,r.jsx)(`img`,{src:Zn(n,c.mime),alt:t,className:`max-h-[160px] w-fit rounded-md border border-input`}):(0,r.jsx)(`div`,{className:`rounded-md border border-input bg-muted/30 p-3 max-h-[160px] overflow-auto`,children:(0,r.jsx)(`pre`,{className:`text-xs font-mono text-muted-foreground break-all whitespace-pre-wrap`,children:s})}),(0,r.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Binary fields are read-only in this editor.`})]})}var hs=[`Boolean`,`Boolean!`],gs=`__none__`;function _s(e,t){return e==null||e===``?t?gs:``:String(e)}function vs(e){return t=>{t!==``&&e(t)}}function ys(e,t){let n=({value:n})=>Oo(e,n,t);return{onSubmit:n,onBlur:n}}function bs(e,t){let n=e.state.meta.errors.length>0;return{hasError:n,ariaProps:{"aria-invalid":n,"aria-describedby":n?t:void 0}}}function xs(e){return Hn(e.dbType)||Gn(e.dbType)||Wn(e)}var Ss={filterText:``,variables:{},params:[]};function Cs(e,t){return t!==`none`||(e.enumValues?.length??0)>0}function ws(e,n){return(0,t.useMemo)(()=>{let t=e?.data?.find(e=>e.graphQlName===n);if(!t)throw Error(`useTable: table '${n}' not found in schema`);let r=t.columns.filter(e=>!e.isReadOnly&&!e.isIdentity).map(e=>{let n=t.singleJoins.find(t=>t.sourceColumnNames[0]===e.graphQlName);if(n)return{column:e,join:n,fkRole:wn(n)?`anchor-composite`:`anchor-single`};let r=t.singleJoins.find(t=>(t.sourceColumnNames??[]).includes(e.graphQlName));return r?{column:e,join:r,fkRole:`member-composite`}:{column:e,fkRole:`none`}}),i=new Map(t.columns.map(e=>[e.name,e]));return[t,r,(t.primaryKeys??[]).map(e=>i.get(e)).filter(e=>!!e)]},[e,n])}function Ts(e,r,i){let a=V(),o=i===void 0||i===``,s=(0,t.useMemo)(()=>o?null:In(i,e),[o,i,e]),c=(0,t.useMemo)(()=>o||!s?Ss:Pn(s,e)??Ss,[o,s,e]),l=!o&&c.filterText===``,u=(0,t.useMemo)(()=>{let t=c.params.length>0?c.params.join(`, `):``;return`query GetSingleEdit_${e.name}(${t}){
104
104
  value: ${e.name}(filter: ${c.filterText||`{}`}) {
105
105
  data { ${r.map(({column:e})=>e.name).join(` `)} }
106
106
  }
107
- }`},[e,r,c]),{isLoading:d,error:f,data:p}=(0,n.useQuery)({queryKey:[`editRecord`,e.name,i],queryFn:()=>a.query(u,c.variables),enabled:!!e&&!o&&c.filterText!==``}),m=p?.value?.data?.at(0),h=!o&&p!==void 0&&m===void 0,g=(0,t.useMemo)(()=>m??{},[m]);return{isLoading:d,error:f,value:g,defaultValues:(0,t.useMemo)(()=>{let e={};for(let{column:t,fkRole:n}of r){let r=Ss(t,n);if(Jo(t))e[t.name]=Xo(g[t.name],Yo(t));else if(ms.some(e=>e===t.paramType)){let n=g[t.name];e[t.name]=t.isNullable&&n==null?null:!!n}else if(Wn(t)){let n=g[t.name];e[t.name]=n==null?``:JSON.stringify(n,null,2)}else if(r){let n=g[t.name];e[t.name]=n??null}else e[t.name]=g[t.name]??``}return e},[g,r]),pkResolveFailed:l,recordNotFound:h}}function Ts({table:e,schema:n,editId:a,onClose:o}){let c=a===void 0||a===``,[l,u,d]=Cs(n,e),f=l.labelColumn,p=l.label,m=Fo(l,u,d,a),{isLoading:h,error:g,value:_,defaultValues:v,pkResolveFailed:y,recordNotFound:b}=ws(l,u,a),x=(0,s.useForm)({defaultValues:v,onSubmit:async({value:e})=>{let t=Zo(e,_,u.map(({column:e})=>e));await(c?m.insert:m.update)(t),o()}}),S=(0,s.useStore)(x.store,e=>e.isDirty),[C,w]=(0,t.useState)(!1),T=()=>{S?w(!0):o()};if(h&&!c)return(0,r.jsx)($o,{open:!0,onOpenChange:e=>{e||o()},children:(0,r.jsxs)(is,{showCloseButton:!1,className:`sm:max-w-2xl`,children:[(0,r.jsx)(ss,{className:`sr-only`,children:`Loading record`}),(0,r.jsx)(cs,{className:`sr-only`,children:`Loading record for editing`}),(0,r.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-10 text-sm text-muted-foreground`,children:[(0,r.jsx)(i.LoaderCircle,{className:`size-4 animate-spin`}),`Loading…`]})]})});if(g)return(0,r.jsxs)(`div`,{children:[`Error: `,g.message]});if(y||b)return(0,r.jsx)($o,{open:!0,onOpenChange:e=>{e||o()},children:(0,r.jsxs)(is,{showCloseButton:!1,className:`sm:max-w-md`,children:[(0,r.jsx)(ss,{className:`text-sm font-semibold`,children:`Cannot edit record`}),(0,r.jsxs)(cs,{className:`text-sm text-muted-foreground`,children:[y?`This record can't be opened for editing: its key (${a||`empty`}) is missing or malformed for the ${p} table.`:`No ${p} record matches the key ${a}. It may have been deleted or is no longer visible to you.`,` `,`Return to the grid and try again.`]}),(0,r.jsx)(`div`,{className:`flex justify-end`,children:(0,r.jsx)(Z,{type:`button`,size:`sm`,onClick:o,children:`Close`})})]})});let E=_?.[f]??a,D=u.filter(({column:e})=>ms.some(t=>t===e.paramType)),O=u.filter(({column:e})=>bs(e)),k=u.filter(({column:e})=>!ms.some(t=>t===e.paramType)&&!bs(e));return(0,r.jsxs)($o,{open:!0,onOpenChange:e=>{e||T()},children:[(0,r.jsxs)(is,{showCloseButton:!1,className:`sm:max-w-2xl max-h-[90vh] flex flex-col gap-0 p-0 overflow-hidden`,children:[(0,r.jsxs)(`div`,{className:`flex items-center justify-between px-5 py-3 border-b border-border bg-muted/30 shrink-0`,children:[(0,r.jsxs)(`div`,{className:`min-w-0`,children:[(0,r.jsx)(ss,{className:`text-sm font-semibold truncate`,children:c?`New ${p}`:`${p} : ${E}`}),(0,r.jsxs)(cs,{className:`sr-only`,children:[c?`Create`:`Edit`,` `,p,` record`]})]}),(0,r.jsx)(Z,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:T,"aria-label":`Close`,className:`shrink-0 -mr-1`,children:(0,r.jsx)(i.X,{className:`size-4`})})]}),m.error&&(0,r.jsxs)(`div`,{className:`flex items-center gap-2 px-5 py-2 bg-destructive/10 border-b border-destructive/20 text-destructive text-sm shrink-0`,children:[(0,r.jsx)(i.AlertCircle,{className:`size-3.5 shrink-0`}),(0,r.jsx)(`span`,{className:`truncate`,children:m.error.message})]}),(0,r.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),e.stopPropagation(),x.handleSubmit().catch(()=>{})},className:`flex flex-col flex-1 min-h-0`,children:[(0,r.jsxs)(`div`,{className:`flex-1 overflow-y-auto px-5 py-4`,children:[k.length>0&&(0,r.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-x-4 gap-y-3`,children:k.map(({column:e,join:t,fkRole:i})=>(0,r.jsx)(As,{column:e,join:t,fkRole:i,form:x,schema:n},e.name))}),D.length>0&&(0,r.jsx)(`div`,{className:k.length>0?`mt-4 pt-4 border-t border-border`:``,children:(0,r.jsx)(`div`,{className:`flex flex-wrap gap-x-6 gap-y-2`,children:D.map(({column:e})=>(0,r.jsx)(Ps,{column:e,form:x},e.name))})}),O.length>0&&(0,r.jsx)(`div`,{className:k.length>0||D.length>0?`mt-4 pt-4 border-t border-border`:``,children:(0,r.jsx)(`div`,{className:`grid gap-3`,children:O.map(({column:e})=>(0,r.jsx)(Fs,{column:e,form:x},e.name))})})]}),(0,r.jsxs)(`div`,{className:`flex items-center justify-end gap-2 px-5 py-3 border-t border-border bg-muted/30 shrink-0`,children:[(0,r.jsx)(Z,{type:`button`,variant:`outline`,size:`sm`,onClick:T,children:`Cancel`}),(0,r.jsxs)(Z,{type:`submit`,size:`sm`,disabled:m.isPending,children:[m.isPending?(0,r.jsx)(i.LoaderCircle,{className:`size-3.5 animate-spin`}):(0,r.jsx)(i.Save,{className:`size-3.5`}),c?`Create`:`Save`]})]})]})]}),(0,r.jsx)(ds,{open:C,onOpenChange:w,title:`Discard unsaved changes?`,description:(0,r.jsx)(`p`,{children:`You have unsaved changes. Closing now will discard them.`}),confirmLabel:`Discard`,cancelLabel:`Keep editing`,variant:`destructive`,onConfirm:()=>{w(!1),o()}})]})}function Es(){let{table:e,editId:t}=k(),n=D();if(!e)return(0,r.jsx)(`div`,{children:`Table missing`});let i=t?`../..`:`..`;return(0,r.jsx)(Ds,{table:e,editId:t??``,onClose:()=>n(i)})}function Ds({table:e,editId:t,onClose:n}){let i=U();return e?i.loading?(0,r.jsx)(`div`,{children:`Loading...`}):i.error?(0,r.jsxs)(`div`,{children:[`Error: `,i.error.message]}):i.findTable(e)?(0,r.jsx)(Ts,{table:e,schema:i,editId:t,onClose:n}):(0,r.jsxs)(`div`,{className:`p-4 text-sm text-destructive`,children:[`Table not found: `,e]}):(0,r.jsx)(`div`,{children:`Table missing`})}function Os({current:e,max:t}){let n=t-e;return(0,r.jsx)(`div`,{className:`text-xs text-right mt-0.5`,"aria-live":`polite`,children:(0,r.jsxs)(`span`,{className:n<=0?`text-destructive font-medium`:n<=10&&n>0?`text-amber-500`:`text-muted-foreground`,children:[e,`/`,t]})})}function ks({min:e,max:t,step:n}){if(e===void 0&&t===void 0)return null;let i=``;return e!=null&&t!=null?i=`Range: ${e} to ${t}`:e==null?t!=null&&(i=`Max: ${t}`):i=`Min: ${e}`,n!=null&&n!==1&&(i+=` (step: ${n})`),(0,r.jsx)(`div`,{className:`text-xs text-muted-foreground mt-0.5`,"aria-live":`polite`,children:i})}function As({column:e,join:t,fkRole:n,form:i,schema:a}){let o=e.name,s=!e.isNullable;if(n===`member-composite`)return null;let c=Jo(e),l=_n(e.paramType),u=e.maxLength&&e.maxLength>0&&!c&&!l;if(e.enumValues&&e.enumValues.length>0)return(0,r.jsx)(js,{column:e,form:i,isRequired:s});if(t&&a)return n===`anchor-composite`?(0,r.jsx)(zs,{column:e,join:t,form:i,schema:a,isRequired:s}):(0,r.jsx)(Rs,{column:e,join:t,form:i,schema:a,isRequired:s});let d=vn(e.paramType),f=e.inputType||(c?Yo(e)?`datetime-local`:`date`:d?`text`:l?`number`:`text`),p=d?gn(e.paramType)?`numeric`:`decimal`:void 0,m=`${o}-error`;return(0,r.jsx)(i.Field,{name:o,validators:vs(e,s),children:t=>{let{ariaProps:n}=ys(t,m);return(0,r.jsxs)(`div`,{className:`grid gap-1`,children:[(0,r.jsxs)(us,{htmlFor:o,className:`text-xs text-muted-foreground`,children:[e.label,s&&(0,r.jsx)(`span`,{className:`text-destructive ml-0.5`,children:`*`})]}),(0,r.jsx)($t,{id:o,type:f,inputMode:p,value:t.state.value??``,onChange:e=>t.handleChange(e.target.value),onBlur:t.handleBlur,required:s,maxLength:e.maxLength,minLength:e.minLength,min:e.min,max:e.max,step:e.step,pattern:e.pattern,title:e.patternMessage,...n,className:`h-8 text-sm`}),u&&(0,r.jsx)(Os,{current:String(t.state.value??``).length,max:e.maxLength}),l&&(e.min!==void 0||e.max!==void 0)&&(0,r.jsx)(ks,{min:e.min,max:e.max,step:e.step}),(0,r.jsx)(Bs,{errors:t.state.meta.errors,id:m})]})}})}function js({column:e,form:t,isRequired:n}){let i=e.name,a=e.enumValues||[],o=ai(e)??a,s=`${i}-error`;return(0,r.jsx)(t.Field,{name:i,validators:vs(e,n),children:t=>{let{ariaProps:c}=ys(t,s);return(0,r.jsxs)(`div`,{className:`grid gap-1`,children:[(0,r.jsxs)(us,{htmlFor:i,className:`text-xs text-muted-foreground`,children:[e.label,n&&(0,r.jsx)(`span`,{className:`text-destructive ml-0.5`,children:`*`})]}),(0,r.jsxs)(qi,{value:gs(t.state.value,!n),onValueChange:_s(e=>t.handleChange(e===`__none__`?null:e)),children:[(0,r.jsx)(Yi,{id:i,className:`w-full h-8 text-sm`,...c,children:(0,r.jsx)(Ji,{placeholder:`Select ${e.label}`})}),(0,r.jsxs)(Xi,{children:[!n&&(0,r.jsx)(Q,{value:`__none__`,className:`text-muted-foreground`,children:`(none)`}),a.map((e,t)=>(0,r.jsx)(Q,{value:e,children:o[t]||e},e))]})]}),(0,r.jsx)(Bs,{errors:t.state.meta.errors,id:s})]})}})}var Ms=`true`,Ns=`false`;function Ps({column:e,form:t}){let n=e.name;return e.isNullable?(0,r.jsx)(t.Field,{name:n,children:t=>{let i=t.state.value,a=i==null?hs:i?Ms:Ns;return(0,r.jsxs)(`div`,{className:`grid gap-1 min-w-[10rem]`,children:[(0,r.jsx)(us,{htmlFor:n,className:`text-xs text-muted-foreground`,children:e.label}),(0,r.jsxs)(qi,{value:a,onValueChange:_s(e=>t.handleChange(e===`__none__`?null:e===Ms)),children:[(0,r.jsx)(Yi,{id:n,className:`w-full h-8 text-sm`,children:(0,r.jsx)(Ji,{})}),(0,r.jsxs)(Xi,{children:[(0,r.jsx)(Q,{value:hs,className:`text-muted-foreground`,children:`(unset)`}),(0,r.jsx)(Q,{value:Ms,children:`Yes`}),(0,r.jsx)(Q,{value:Ns,children:`No`})]})]})]})}}):(0,r.jsx)(t.Field,{name:n,children:t=>(0,r.jsxs)(`label`,{htmlFor:n,className:`flex items-center gap-2 cursor-pointer select-none`,children:[(0,r.jsx)(ls,{id:n,checked:!!t.state.value,onCheckedChange:e=>t.handleChange(!!e),onBlur:t.handleBlur}),(0,r.jsx)(`span`,{className:`text-sm`,children:e.label})]})})}function Fs({column:e,form:t}){let n=e.name,i=!e.isNullable,a=`${n}-error`;return(0,r.jsx)(t.Field,{name:n,validators:vs(e,i),children:t=>{let{hasError:o}=ys(t,a);return(0,r.jsxs)(`div`,{className:`grid gap-1`,children:[(0,r.jsxs)(us,{htmlFor:n,className:`text-xs text-muted-foreground`,children:[e.label,i&&(0,r.jsx)(`span`,{className:`text-destructive ml-0.5`,children:`*`})]}),(0,r.jsx)(fs,{name:n,label:e.label,value:String(t.state.value??``),dbType:e.dbType,onChange:e=>t.handleChange(e),onBlur:t.handleBlur,required:i,invalid:o}),(0,r.jsx)(Bs,{errors:t.state.meta.errors,id:a})]})}})}function Is(){let[e,n]=(0,t.useState)(``),[r,i]=(0,t.useState)(``),[a,o]=(0,t.useState)(!1);return(0,t.useEffect)(()=>{let t=setTimeout(()=>i(e),300);return()=>clearTimeout(t)},[e]),{search:e,setSearch:n,debounced:r,open:a,onOpenChange:e=>{o(e),e||(n(``),i(``))}}}function Ls({field:e,column:t,isRequired:n,errorId:i,value:a,onValueChange:o,search:s,setSearch:c,onOpenChange:l,loadError:u,composite:d,children:f}){let{ariaProps:p}=ys(e,i);return(0,r.jsxs)(`div`,{className:d?`grid gap-1 sm:col-span-2`:`grid gap-1`,children:[(0,r.jsxs)(us,{htmlFor:t.name,className:`text-xs text-muted-foreground`,children:[t.label,n&&(0,r.jsx)(`span`,{className:`text-destructive ml-0.5`,children:`*`}),d&&(0,r.jsxs)(`span`,{className:`ml-2 px-1 rounded bg-primary/10 text-[10px] font-medium text-primary`,children:[`composite FK (`,d.cols,` cols)`]})]}),(0,r.jsxs)(qi,{value:a,onValueChange:_s(o),onOpenChange:l,children:[(0,r.jsx)(Yi,{id:t.name,className:`w-full h-8 text-sm`,...p,children:(0,r.jsx)(Ji,{placeholder:`Select ${t.label}`})}),(0,r.jsxs)(Xi,{children:[(0,r.jsx)(`div`,{className:`px-1 pb-1 sticky top-0 bg-popover z-10`,children:(0,r.jsx)($t,{value:s,onChange:e=>c(e.target.value),onKeyDown:e=>{(e.key.length===1||e.key===`Backspace`||e.key===`Delete`)&&e.stopPropagation()},placeholder:`Search…`,className:`h-7 text-xs`})}),f]})]}),u!=null&&(0,r.jsxs)(`p`,{className:`text-xs text-destructive`,role:`alert`,children:[`Failed to load `,t.label,` options: `,String(u?.message??u)]}),(0,r.jsx)(Bs,{errors:e.state.meta.errors,id:i})]})}function Rs({column:e,join:t,form:n,schema:i,isRequired:a}){let o=e.name,c=t.destinationColumnNames[0],{search:l,setSearch:u,debounced:d,open:f,onOpenChange:p}=Is(),m=Ho(i,t.destinationTable,c,d,f),h=(0,s.useStore)(n.store,e=>e.values?.[o]),g=h==null||h===``||m.data.some(e=>String(e.key)===String(h)),_=Uo(i,t.destinationTable,c,!m.loading&&!g?h:null),v=`${o}-error`,y=d.trim(),b=m.serverSearch||!y?m.data:m.data.filter(e=>Qo(e,`key`,y)),x=h==null||h===``?null:m.data.find(e=>String(e.key)===String(h))??_.value??{key:String(h),label:String(h)};return(0,r.jsx)(n.Field,{name:o,validators:vs(e,a),children:t=>(0,r.jsxs)(Ls,{field:t,column:e,isRequired:a,errorId:v,value:gs(t.state.value,!a),onValueChange:e=>t.handleChange(e===`__none__`?null:e),search:l,setSearch:u,onOpenChange:p,loadError:m.error,children:[!a&&(0,r.jsx)(Q,{value:`__none__`,className:`text-muted-foreground`,children:`(none)`}),x&&!b.some(e=>String(e.key)===String(x.key))&&(0,r.jsx)(Q,{value:String(x.key),children:x.label}),b.map(e=>(0,r.jsx)(Q,{value:String(e.key),children:e.label},e.key)),b.length===0&&(0,r.jsx)(`div`,{className:`px-2 py-1.5 text-xs text-muted-foreground`,children:`No matches.`})]})})}function zs({column:e,join:n,form:i,schema:a,isRequired:o}){let c=(0,t.useMemo)(()=>n.sourceColumnNames??[],[n.sourceColumnNames]),l=(0,t.useMemo)(()=>n.destinationColumnNames??[],[n.destinationColumnNames]),{search:u,setSearch:d,debounced:f,open:p,onOpenChange:m}=Is(),h=(0,s.useStore)(i.store,e=>{let t={};for(let n=0;n<c.length;n++)t[l[n]]=e.values?.[c[n]];return t}),g=Ko(a,n.destinationTable,l,{search:f,enabled:p,currentValues:h}),_=(0,t.useMemo)(()=>{let e=[];for(let t=0;t<c.length;t++){let n=h[l[t]];if(n==null||n===``)return``;e.push(n)}return An(e)},[h,c,l]),v=f.trim(),y=g.serverSearch||!v?g.data:g.data.filter(e=>e.label.toLowerCase().includes(v.toLowerCase())),b=e=>{let t=g.data.find(t=>t.route===e);if(t)for(let e=0;e<c.length;e++){let n=l[e],r=c[e];i.setFieldValue(r,t.values[n])}},x=`${e.name}-error`;return(0,r.jsx)(i.Field,{name:e.name,validators:vs(e,o),children:t=>(0,r.jsxs)(Ls,{field:t,column:e,isRequired:o,errorId:x,value:_,onValueChange:b,search:u,setSearch:d,onOpenChange:m,loadError:g.error,composite:{cols:c.length},children:[y.map(e=>(0,r.jsx)(Q,{value:e.route,children:e.label},e.route)),y.length===0&&(0,r.jsx)(`div`,{className:`px-2 py-1.5 text-xs text-muted-foreground`,children:`No matches.`})]})})}function Bs({errors:e,id:t}){return e.length===0?null:(0,r.jsx)(`div`,{id:t,role:`alert`,children:e.map((e,t)=>(0,r.jsx)(`p`,{className:`text-xs text-destructive`,children:String(e)},t))})}function Vs({className:e,...t}){return(0,r.jsx)(`div`,{"data-slot":`table-container`,className:`relative w-full h-full overflow-x-auto`,children:(0,r.jsx)(`table`,{"data-slot":`table`,className:Y(`min-w-full caption-bottom text-sm border-separate border-spacing-0`,e),...t})})}function Hs({className:e,...t}){return(0,r.jsx)(`thead`,{"data-slot":`table-header`,className:Y(`[&_tr]:border-b`,e),...t})}function Us({className:e,...t}){return(0,r.jsx)(`tbody`,{"data-slot":`table-body`,className:Y(`[&_tr:last-child]:border-0 [&_tr:nth-child(even)]:bg-muted/25`,e),...t})}function Ws({className:e,style:t,...n}){return(0,r.jsx)(`tr`,{"data-slot":`table-row`,className:Y(`border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted`,e),style:{height:40,...t},...n})}function Gs({className:e,style:t,...n}){return(0,r.jsx)(`th`,{"data-slot":`table-head`,className:Y(`px-2 text-left align-middle font-medium whitespace-nowrap text-muted-foreground text-xs border-r border-border last:border-r-0 [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,e),style:{height:32,...t},...n})}function Ks({className:e,...t}){return(0,r.jsx)(`td`,{"data-slot":`table-cell`,className:Y(`px-2 py-1 align-middle whitespace-nowrap text-[13px] overflow-hidden text-ellipsis border-r border-border last:border-r-0 [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,e),...t})}function qs({anchorEl:e,onEdit:n,onDelete:a,onMouseEnter:o,onDismiss:s}){let c=(0,t.useRef)(null);return(0,t.useEffect)(()=>{let t=c.current;return t?((()=>{let n=e.getBoundingClientRect(),r=t.offsetHeight,i=t.offsetWidth;t.style.top=`${n.top+(n.height-r)/2}px`;let a=Math.min(n.right-i-8,window.innerWidth-i-8);t.style.left=`${Math.max(8,a)}px`})(),t.showPopover(),()=>{try{t.hidePopover()}catch{}}):void 0},[e]),(0,t.useEffect)(()=>{let e=e=>{let t=c.current;t&&!t.contains(e.target)&&s()};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[s]),(0,r.jsxs)(`div`,{ref:c,popover:`manual`,className:`flex items-center gap-0.5 rounded-md border border-border bg-popover px-1 py-0.5 shadow-md m-0`,style:{position:`fixed`},onClick:e=>e.stopPropagation(),onMouseEnter:o,onMouseLeave:s,onFocusCapture:o,onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||s()},children:[n&&(0,r.jsx)(Z,{variant:`ghost`,size:`icon-sm`,onClick:n,"aria-label":`Edit row`,title:`Edit`,className:`size-6`,children:(0,r.jsx)(i.Pencil,{className:`size-3.5`})}),a&&(0,r.jsx)(Z,{variant:`ghost`,size:`icon-sm`,onClick:a,"aria-label":`Delete row`,title:`Delete`,className:`size-6 text-destructive hover:text-destructive`,children:(0,r.jsx)(i.Trash2,{className:`size-3.5`})})]})}function Js({exportRows:e,total:n,tableName:a,rowCap:o=Si}){let{toast:s}=Mi(),c=Di(),[l,u]=(0,t.useState)(!1),[d,f]=(0,t.useState)(0),p=(0,t.useRef)(null);(0,t.useEffect)(()=>()=>p.current?.abort(),[]);let m=(0,t.useCallback)(async t=>{if(l||n>o&&typeof window<`u`&&!window.confirm(`This export has ${n.toLocaleString()} rows, over the ${o.toLocaleString()} row limit. Only the first ${o.toLocaleString()} rows will be exported. Continue?`))return;let r=new AbortController;p.current=r,u(!0),f(0);try{let n=await e({format:t,signal:r.signal,rowCap:o,onProgress:e=>f(e)});if(!n)return;await c(wi(a,t),n.content,Ci(t)),n.truncated&&s(`Export truncated at ${n.rowCount.toLocaleString()} rows.`,`error`)}catch(e){if(r.signal.aborted)return;s(`Export failed: ${e instanceof Error?e.message:String(e)}`,`error`)}finally{u(!1),p.current=null}},[l,n,o,e,a,s,c]),h=(0,t.useCallback)(()=>p.current?.abort(),[]);return l?(0,r.jsxs)(Z,{variant:`outline`,size:`sm`,onClick:h,title:`Cancel export`,children:[(0,r.jsx)(i.X,{className:`size-3.5`}),`Cancel (`,d.toLocaleString(),`)`]}):(0,r.jsxs)(en,{children:[(0,r.jsx)(tn,{asChild:!0,children:(0,r.jsxs)(Z,{variant:`outline`,size:`sm`,children:[(0,r.jsx)(i.Download,{className:`size-3.5`}),`Export`,(0,r.jsx)(i.ChevronDown,{className:`size-3.5`})]})}),(0,r.jsxs)(nn,{align:`end`,children:[(0,r.jsx)(rn,{onClick:()=>void m(`csv`),children:`CSV`}),(0,r.jsx)(rn,{onClick:()=>void m(`json`),children:`JSON`})]})]})}var Ys=`bifrost-col-sizes:`;function Xs(e){try{let t=localStorage.getItem(Ys+e);return t?Zs(JSON.parse(t)):{}}catch{return{}}}function Zs(e){if(typeof e!=`object`||!e||Array.isArray(e))return{};let t={};for(let[n,r]of Object.entries(e))typeof r!=`number`||!Number.isFinite(r)||(t[n]=Math.min(Math.max(r,60),450));return t}function Qs(e,t){try{Object.keys(t).length===0?localStorage.removeItem(Ys+e):localStorage.setItem(Ys+e,JSON.stringify(t))}catch{}}function $s(e){let[n,r]=(0,t.useState)(()=>e?Xs(e):{}),i=(0,t.useRef)(null),a=(0,t.useRef)(!0);(0,t.useEffect)(()=>{let t=i.current;if(t&&t.tableName!==e&&(i.current=null,Qs(t.tableName,t.sizing)),!e)return;if(a.current){a.current=!1;return}i.current={tableName:e,sizing:n};let r=setTimeout(()=>{i.current=null,Qs(e,n)},300);return()=>clearTimeout(r)},[e,n]),(0,t.useEffect)(()=>()=>{let e=i.current;e&&Qs(e.tableName,e.sizing)},[]);let o=(0,t.useRef)(e);return e&&e!==o.current&&(o.current=e,a.current=!0,r(Xs(e))),{columnSizing:n,setColumnSizing:r}}var ec=`bifrost-col-visibility:`;function tc(e){return ec+e}function nc(e){try{let t=localStorage.getItem(tc(e));return t?rc(JSON.parse(t)):null}catch{return null}}function rc(e){if(typeof e!=`object`||!e||Array.isArray(e))return null;let t={};for(let[n,r]of Object.entries(e))typeof r==`boolean`&&(t[n]=r);return t}function ic(e,t){try{localStorage.setItem(tc(e),JSON.stringify(t))}catch{}}function ac(e){try{localStorage.removeItem(tc(e))}catch{}}function oc(e,t){if(!t||t.length===0)return{};let n=new Set(t),r={};for(let t of e)r[t]=n.has(t);return r}function sc(e,n){let[r,i]=(0,t.useState)(()=>(e?nc(e):null)??n),a=(0,t.useRef)(r),o=(0,t.useCallback)(e=>{a.current=e,i(e)},[]),s=(0,t.useCallback)(t=>{let n=typeof t==`function`?t(a.current):t;o(n),e&&ic(e,n)},[o,e]),c=(0,t.useCallback)(()=>{e&&ac(e),o(n)},[o,n,e]),l=(0,t.useRef)(e);e&&e!==l.current&&(l.current=e,o(nc(e)??n));let u=(0,t.useRef)(n);return e&&u.current!==n&&(u.current=n,nc(e)===null&&o(n)),{columnVisibility:r,setColumnVisibility:s,resetColumnVisibility:c}}var cc=500;function lc(){let[e,n]=(0,t.useState)(null),r=(0,t.useRef)(null),i=(0,t.useCallback)((e,t)=>{r.current&&=(clearTimeout(r.current),null),n({rowId:e,el:t})},[]),a=(0,t.useCallback)(()=>{r.current&&clearTimeout(r.current),r.current=setTimeout(()=>n(null),150)},[]),o=(0,t.useCallback)(()=>{r.current&&=(clearTimeout(r.current),null)},[]),s=(0,t.useRef)(null),c=(0,t.useRef)(!1),l=(0,t.useRef)(!1),u=(0,t.useCallback)(()=>{s.current&&=(clearTimeout(s.current),null)},[]);return{hoveredRow:e,hoverRow:i,scheduleDismiss:a,cancelDismiss:o,suppressClick:l,startPress:(0,t.useCallback)((e,t,n)=>{n.pointerType===`touch`&&(c.current=!1,u(),s.current=setTimeout(()=>{c.current||(l.current=!0,i(e,t))},cc))},[u,i]),onPressMove:(0,t.useCallback)(()=>{c.current=!0,u()},[u]),cancelPress:u}}function uc(e){return Math.max(5,Math.floor((e-32)/40))}function dc(e,n){let[r,i]=(0,t.useState)(!0),a=(0,t.useRef)(0),o=(0,t.useCallback)(()=>{let t=e.current;return t?uc(t.clientHeight):10},[e]);return(0,t.useEffect)(()=>{if(!r)return;let t=e.current;if(!t)return;let i=()=>{let e=o();e!==a.current&&(a.current=e,n(e))},s=requestAnimationFrame(i),c=null,l=new ResizeObserver(()=>{c&&clearTimeout(c),c=setTimeout(()=>requestAnimationFrame(i),200)});return l.observe(t),()=>{cancelAnimationFrame(s),c&&clearTimeout(c),l.disconnect()}},[r,o,n,e]),{fitMode:r,setFitMode:i,computeFitSize:o}}function fc(e){return e.id??(`accessorKey`in e?String(e.accessorKey):void 0)}function pc(e,t){return t.map(t=>e.find(e=>fc(e)===t)).filter(e=>e!==void 0)}function mc(e,{leading:t,trailing:n}){let r=t?pc(e,t):[],i=n?pc(e,n):[];if(r.length===0&&i.length===0)return e;let a=new Set([...r,...i]),o=e.filter(e=>!a.has(e));return[...r,...o,...i]}function hc({label:e,rows:i,loading:a,error:o,sumLabel:s,pageSize:c,sort:l,onSortChange:u,memberRequest:d}){let f=V(),[p,m]=(0,t.useState)(0),[h,g]=(0,t.useState)(null),_=h===null?null:d(h.value),v=(0,n.useQuery)({queryKey:[`groupMembers`,_?.query,_?.variables],queryFn:({signal:e})=>f.query(_.query,_.variables,{signal:e}),enabled:_!==null}),y=i.map(e=>`${String(e.value)}:${e.count}:${String(e.sum)}`).join(`|`);if((0,t.useEffect)(()=>{m(0),g(null)},[e,y,c]),o)return(0,r.jsxs)(`p`,{role:`alert`,className:`px-2 py-1 text-sm text-destructive`,children:[`Grouping failed: `,o.message]});if(a)return(0,r.jsx)(`p`,{className:`px-2 py-1 text-sm text-muted-foreground`,children:`Loading grouped results…`});let b=Math.max(1,c),x=Math.max(1,Math.ceil(i.length/b)),S=i.slice(Math.min(p,x-1)*b,(Math.min(p,x-1)+1)*b),C=_?v.data?.[_.responseKey]:void 0;return(0,r.jsxs)(`div`,{className:`border-b px-2 py-2`,"aria-label":`Grouped by ${e}`,children:[(0,r.jsxs)(`div`,{className:`mb-1 flex items-center justify-between gap-2 text-sm font-medium`,children:[(0,r.jsxs)(`span`,{children:[`Grouped by `,e]}),(0,r.jsxs)(`label`,{className:`text-xs font-normal text-muted-foreground`,children:[`Group order`,(0,r.jsxs)(`select`,{"aria-label":`Group order`,className:`ml-1 rounded border bg-background px-1 py-0.5 text-foreground`,value:`${l.field}:${l.desc?`desc`:`asc`}`,onChange:e=>{let[t,n]=e.target.value.split(`:`);u({field:t===`count`?`count`:`key`,desc:n===`desc`})},children:[(0,r.jsxs)(`option`,{value:`key:asc`,children:[e,` ascending`]}),(0,r.jsxs)(`option`,{value:`key:desc`,children:[e,` descending`]}),(0,r.jsx)(`option`,{value:`count:desc`,children:`Count high to low`}),(0,r.jsx)(`option`,{value:`count:asc`,children:`Count low to high`})]})]}),(0,r.jsxs)(`span`,{className:`text-muted-foreground`,children:[i.length,` groups`]})]}),(0,r.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_auto_auto] gap-x-4 gap-y-1 text-sm`,children:[S.map((e,t)=>(0,r.jsxs)(`div`,{className:`contents`,children:[(0,r.jsx)(`button`,{type:`button`,className:`text-left underline-offset-2 hover:underline`,"aria-expanded":h===e,onClick:()=>g(h===e?null:e),children:e.value===null||e.value===void 0?`(null)`:String(e.value)}),(0,r.jsx)(`span`,{className:`tabular-nums text-muted-foreground`,children:e.count}),(0,r.jsx)(`span`,{className:`tabular-nums text-muted-foreground`,children:s?String(e.sum??`—`):``})]},`${String(e.value)}-${t}`)),i.length===0&&(0,r.jsx)(`span`,{className:`text-muted-foreground`,children:`No grouped results.`})]}),i.length>b&&(0,r.jsxs)(`div`,{className:`mt-2 flex items-center gap-2 text-xs`,children:[(0,r.jsx)(`button`,{type:`button`,disabled:p===0,onClick:()=>m(e=>e-1),children:`Previous groups`}),(0,r.jsxs)(`span`,{children:[`Group page `,Math.min(p,x-1)+1,` of `,x]}),(0,r.jsx)(`button`,{type:`button`,disabled:p>=x-1,onClick:()=>m(e=>e+1),children:`Next groups`})]}),_&&(0,r.jsx)(`div`,{className:`mt-2 rounded bg-muted/40 p-2 text-xs`,"aria-live":`polite`,children:v.isLoading?`Loading group members…`:v.error?`Group member query failed.`:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(`div`,{children:[C?.total??0,` matching members`]}),(0,r.jsx)(`pre`,{className:`max-h-32 overflow-auto`,children:JSON.stringify(C?.data??[],null,2)})]})})]})}var gc=[10,20,30,50,100];function _c({columns:e,data:n,tableName:a,pageCount:o,pageIndex:s,pageSize:l,sorting:u,columnFilters:d,loading:f,fetching:p=!1,selectable:m=!1,primaryKeys:h=[],selectedRowId:g,onRowSelect:_,onSortingChange:v,onColumnFiltersChange:y,onPageIndexChange:b,onPageSizeChange:x,onEditRow:S,onDeleteRow:C,onDeleteSelected:w,onBulkEditSelected:T,inlineEditableColumns:E,inlineBooleanColumns:D,pendingEdits:O,onCellCommit:k,onSaveAllEdits:A,onDiscardAllEdits:j,savingEdits:M=!1,stackingEnabled:N,onToggleStacking:ee,exportRows:te,totalRows:P,onVisualize:ne,groupableColumns:re,grouping:F,onGroupingChange:I,onGroupingSumChange:L}){let{hoveredRow:R,hoverRow:ie,scheduleDismiss:ae,cancelDismiss:z,suppressClick:B,startPress:V,onPressMove:oe,cancelPress:se}=lc(),{defaultColumns:H,trailingColumns:ce}=de(),[le,ue]=(0,t.useState)({}),[fe,pe]=(0,t.useState)(null),{columnSizing:U,setColumnSizing:me}=$s(a),he=(0,t.useRef)(null),{fitMode:ge,setFitMode:_e,computeFitSize:ve}=dc(he,x),ye=(0,t.useCallback)(e=>{let t=he.current;if(!t)return;let n=t.querySelectorAll(`[data-col-id="${e}"]`),r=60;n.forEach(e=>{let t=e.scrollWidth+4;t>r&&(r=t)});let i=Math.min(r,450);me(t=>({...t,[e]:i}))},[me]),be=(0,t.useCallback)(()=>{me({})},[me]);(0,t.useEffect)(()=>{ue({})},[n,s]);let xe=(0,t.useMemo)(()=>{let t=[];return m&&t.push({id:`_select`,header:({table:e})=>(0,r.jsx)(ls,{checked:e.getIsAllPageRowsSelected()||e.getIsSomePageRowsSelected()&&`indeterminate`,onCheckedChange:t=>e.toggleAllPageRowsSelected(!!t),"aria-label":`Select all`}),cell:({row:e})=>(0,r.jsx)(ls,{checked:e.getIsSelected(),onCheckedChange:t=>e.toggleSelected(!!t),onClick:e=>e.stopPropagation(),"aria-label":`Select row`}),enableSorting:!1,enableHiding:!1,enableResizing:!1,size:32}),t.push(...mc(e,{leading:a?H?.[a]:void 0,trailing:ce})),t},[e,m,H,a,ce]),{columnVisibility:Se,setColumnVisibility:Ce,resetColumnVisibility:we}=sc(a,(0,t.useMemo)(()=>oc(xe.filter(e=>e.enableHiding!==!1).map(e=>e.id).filter(e=>e!==void 0),a?H?.[a]:void 0),[xe,H,a])),W=(0,c.useReactTable)({data:n,columns:xe,pageCount:o,getRowId:(e,t)=>Mn(e,{primaryKeys:h},t),state:{sorting:u,columnFilters:d,pagination:{pageIndex:s,pageSize:l},columnVisibility:Se,rowSelection:le,columnSizing:U},defaultColumn:{minSize:60,size:150},columnResizeMode:`onChange`,enableColumnResizing:!0,onColumnSizingChange:me,meta:{onResetColumnWidths:be},onSortingChange:e=>{v(typeof e==`function`?e(u):e)},onPaginationChange:e=>{let t=typeof e==`function`?e({pageIndex:s,pageSize:l}):e;t.pageSize===l?b(t.pageIndex):(x(t.pageSize),b(0))},onColumnFiltersChange:e=>{y(typeof e==`function`?e(d):e)},onColumnVisibilityChange:Ce,onRowSelectionChange:ue,enableRowSelection:m,getCoreRowModel:(0,c.getCoreRowModel)(),manualSorting:!0,manualFiltering:!0,manualPagination:!0}),Te=Object.keys(le).length,Ee=W.getVisibleLeafColumns().map(e=>e.id).join(`|`),De=(0,t.useCallback)(()=>{let e=[];for(let t of W.getSelectedRowModel().rows){let n=Nn(t.original,{primaryKeys:h});n&&e.push(n)}return e},[W,h]),Oe=(0,t.useCallback)(()=>{if(!w)return;let e=De();e.length>0&&w(e)},[De,w]),ke=(0,t.useCallback)(()=>{if(!T)return;let e=De();e.length>0&&T(e)},[De,T]),Ae=(0,t.useCallback)((e,t)=>{pe({rowId:e,columnId:t})},[]),je=(0,t.useCallback)((e,t,n)=>{pe(null),!M&&k?.(e,t,n)},[k,M]),Me=(0,t.useCallback)(()=>pe(null),[]),Ne=(0,t.useCallback)(e=>{let t=W.getRow(e);return t?Nn(t.original,{primaryKeys:h}):null},[W,h]),Pe=(0,t.useCallback)(e=>{if(!S)return;let t=Ne(e);t&&S(t)},[S,Ne]),Fe=(0,t.useCallback)(e=>{if(!C)return;let t=Ne(e);t&&C(t)},[C,Ne]),Ie=(0,t.useCallback)(()=>{R&&Pe(R.rowId)},[R,Pe]),Le=(0,t.useCallback)(()=>{R&&Fe(R.rowId)},[R,Fe]);return(0,r.jsxs)(`div`,{className:`flex flex-col w-full min-h-0 flex-1`,children:[(0,r.jsxs)(`div`,{className:`flex items-center justify-between py-1 px-2`,children:[(0,r.jsxs)(`div`,{className:`flex items-center gap-2`,children:[d.length>0&&(0,r.jsxs)(Z,{variant:`outline`,size:`sm`,onClick:()=>W.resetColumnFilters(),title:`Clear all column filters`,children:[(0,r.jsx)(i.FilterX,{className:`size-3.5`}),`Clear filters`]}),Te>0&&(w||T)&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[Te,` selected`]}),T&&(0,r.jsxs)(Z,{variant:`outline`,size:`sm`,onClick:ke,title:`Apply one set of field changes to every selected row in one transaction`,children:[(0,r.jsx)(i.Pencil,{className:`size-3.5`}),`Edit`]}),w&&(0,r.jsxs)(Z,{variant:`outline`,size:`sm`,onClick:Oe,className:`text-destructive hover:text-destructive`,children:[(0,r.jsx)(i.Trash2,{className:`size-3.5`}),`Delete`]})]}),(O?.size??0)>0&&A&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(`span`,{className:`text-xs text-amber-600 dark:text-amber-400`,children:[O.size,` unsaved `,O.size===1?`row`:`rows`]}),(0,r.jsx)(Z,{size:`sm`,onClick:A,disabled:M,children:M?`Saving…`:`Save all`}),j&&(0,r.jsx)(Z,{variant:`outline`,size:`sm`,onClick:j,disabled:M,children:`Discard`})]})]}),(0,r.jsxs)(`div`,{className:`flex items-center gap-2`,children:[ne&&(0,r.jsx)(Z,{variant:`outline`,size:`sm`,onClick:ne,title:`Open a chart using this table and its active filters`,children:`Visualize`}),te&&(0,r.jsx)(Js,{exportRows:te,total:P??0,tableName:a??`export`}),ee&&(0,r.jsxs)(Z,{variant:N?`secondary`:`outline`,size:`sm`,role:`switch`,"aria-checked":!!N,onClick:()=>ee(!N),title:N?`Stacked drill-down active — click for flat grid`:`Flat grid active — click for stacked drill-down`,children:[N?(0,r.jsx)(i.PanelRight,{className:`size-3.5`}):(0,r.jsx)(i.Rows3,{className:`size-3.5`}),N?`Stacked`:`Grid`]}),I&&re&&(0,r.jsxs)(qi,{value:F?.column.name??`__none`,onValueChange:e=>I(e===`__none`?null:e),children:[(0,r.jsx)(Yi,{size:`sm`,className:`w-40`,"aria-label":`Group grid by column`,children:(0,r.jsx)(Ji,{placeholder:`Group by`})}),(0,r.jsxs)(Xi,{children:[(0,r.jsx)(Q,{value:`__none`,children:`No grouping`}),re.map(e=>(0,r.jsx)(Q,{value:e.name,children:e.label},e.name))]})]}),F&&L&&re&&(0,r.jsxs)(qi,{value:F.sumColumn?.name??`__none`,onValueChange:e=>L(e===`__none`?null:e),children:[(0,r.jsx)(Yi,{size:`sm`,className:`w-40`,"aria-label":`Group sum column`,children:(0,r.jsx)(Ji,{placeholder:`Sum column`})}),(0,r.jsxs)(Xi,{children:[(0,r.jsx)(Q,{value:`__none`,children:`Count only`}),re.filter(e=>/^(byte|short|int|long|float|double|decimal|numeric|money|real)/i.test(e.paramType.replace(/[![\]]/g,``))).map(e=>(0,r.jsxs)(Q,{value:e.name,children:[`Sum `,e.label]},e.name))]})]}),(0,r.jsxs)(en,{children:[(0,r.jsx)(tn,{asChild:!0,children:(0,r.jsxs)(Z,{variant:`outline`,size:`sm`,children:[(0,r.jsx)(i.Columns3,{className:`size-3.5`}),`Columns`,(0,r.jsx)(i.ChevronDown,{className:`size-3.5`})]})}),(0,r.jsxs)(nn,{align:`end`,children:[W.getAllColumns().filter(e=>e.getCanHide()).map(e=>{let t=e.columnDef.meta?.column?.label??(typeof e.columnDef.header==`string`?e.columnDef.header:e.id);return(0,r.jsx)(an,{checked:e.getIsVisible(),onCheckedChange:t=>e.toggleVisibility(!!t),children:t},e.id)}),(0,r.jsx)(sn,{}),(0,r.jsx)(rn,{onClick:we,children:`Reset to default columns`})]})]})]})]}),F?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(hc,{label:F.column.label,rows:F.rows,loading:F.loading,error:F.error,sumLabel:F.sumColumn?.label,pageSize:l,sort:F.sort,onSortChange:F.onSortChange,memberRequest:F.memberRequest}),(0,r.jsx)(`p`,{className:`border-b px-2 py-1 text-xs text-muted-foreground`,role:`note`,children:`Inline editing is disabled while grouping is active; expand a group to inspect its server-filtered members.`})]}):(0,r.jsxs)(r.Fragment,{children:[p&&(0,r.jsx)(`div`,{className:`relative h-0 z-20`,children:(0,r.jsxs)(`div`,{"data-testid":`fetch-indicator`,role:`progressbar`,"aria-label":`Loading page`,className:`absolute inset-x-0 top-0 h-0.5 overflow-hidden bg-primary/20`,children:[(0,r.jsx)(`div`,{className:`h-full w-1/3 bg-primary`,style:{animation:`edit-db-indeterminate 1.2s ease-in-out infinite`}}),(0,r.jsx)(`style`,{children:`@keyframes edit-db-indeterminate { 0% { transform: translateX(-100%); } 100% { transform: translateX(300%); } }`})]})}),(0,r.jsxs)(`div`,{ref:he,className:`relative flex-1 overflow-auto min-h-0`,"aria-busy":p||f,children:[(0,r.jsxs)(Vs,{style:{tableLayout:`fixed`,width:W.getTotalSize()},children:[(0,r.jsx)(`colgroup`,{children:W.getVisibleLeafColumns().map(e=>(0,r.jsx)(`col`,{style:{width:e.getSize()}},e.id))}),(0,r.jsx)(Hs,{children:W.getHeaderGroups().map(e=>(0,r.jsx)(Ws,{children:e.headers.map(e=>(0,r.jsxs)(Gs,{"data-col-id":e.column.id,className:`relative`,"aria-sort":e.column.getIsSorted()===`asc`?`ascending`:e.column.getIsSorted()===`desc`?`descending`:e.column.getCanSort()?`none`:void 0,children:[e.isPlaceholder?null:(0,c.flexRender)(e.column.columnDef.header,e.getContext()),e.column.getCanResize()&&(0,r.jsx)(`div`,{onMouseDown:e.getResizeHandler(),onTouchStart:e.getResizeHandler(),onDoubleClick:()=>ye(e.column.id),className:`absolute top-0 right-0 w-1 h-full cursor-col-resize select-none touch-none opacity-0 hover:opacity-100 transition-opacity ${e.column.getIsResizing()?`bg-primary opacity-100`:`bg-border hover:bg-muted-foreground`}`})]},e.id))},e.id))}),(0,r.jsx)(Us,{children:f?(0,r.jsx)(Ws,{children:(0,r.jsx)(Ks,{colSpan:xe.length,className:`h-24 text-center`,children:`Loading...`})}):W.getRowModel().rows.length===0?(0,r.jsx)(Ws,{children:(0,r.jsx)(Ks,{colSpan:xe.length,className:`h-24 text-center`,children:`No results.`})}):W.getRowModel().rows.map(e=>(0,r.jsx)(yc,{row:e,isSelected:g!=null&&e.id===g,checked:e.getIsSelected(),visibleKey:Ee,pending:O?.get(e.id),editingColumnId:fe?.rowId===e.id?fe.columnId:null,inlineEditableColumns:k&&!M?E:void 0,inlineBooleanColumns:D,onStartEditCell:k&&!M?Ae:void 0,onCommitCell:je,onCancelEditCell:Me,onRowSelect:_,onEditRow:S?Pe:void 0,onDeleteRow:C?Fe:void 0,suppressClick:B,hoverRow:ie,scheduleDismiss:ae,startPress:V,onPressMove:oe,cancelPress:se},e.id))})]}),R&&(S||C)&&(0,r.jsx)(qs,{anchorEl:R.el,onEdit:S?Ie:void 0,onDelete:C?Le:void 0,onMouseEnter:z,onDismiss:ae})]}),(0,r.jsxs)(`div`,{className:`flex items-center justify-between px-2 py-1.5 border-t border-border mt-auto shrink-0`,children:[(0,r.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,r.jsx)(`span`,{children:`Rows per page`}),(0,r.jsxs)(qi,{value:ge?`-1`:String(l),onValueChange:e=>{let t=Number(e);t===-1?(_e(!0),x(ve())):(_e(!1),x(t))},children:[(0,r.jsx)(Yi,{size:`sm`,className:`w-auto h-7 text-xs`,"aria-label":`Rows per page`,children:(0,r.jsx)(Ji,{children:ge?`Fit`:l})}),(0,r.jsxs)(Xi,{children:[(0,r.jsx)(Q,{value:`-1`,children:`Fit`}),gc.map(e=>(0,r.jsx)(Q,{value:String(e),children:e},e))]})]})]}),(0,r.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,r.jsxs)(`span`,{className:`text-xs text-muted-foreground mr-2`,children:[`Page `,s+1,` of `,o||1]}),(0,r.jsx)(Z,{variant:`outline`,size:`icon-sm`,onClick:()=>b(0),disabled:s===0,"aria-label":`First page`,title:`First page`,children:(0,r.jsx)(i.ChevronsLeft,{className:`size-4`})}),(0,r.jsx)(Z,{variant:`outline`,size:`icon-sm`,onClick:()=>b(s-1),disabled:!W.getCanPreviousPage(),"aria-label":`Previous page`,title:`Previous page`,children:(0,r.jsx)(i.ChevronLeft,{className:`size-4`})}),(0,r.jsx)(Z,{variant:`outline`,size:`icon-sm`,onClick:()=>b(s+1),disabled:!W.getCanNextPage(),"aria-label":`Next page`,title:`Next page`,children:(0,r.jsx)(i.ChevronRight,{className:`size-4`})}),(0,r.jsx)(Z,{variant:`outline`,size:`icon-sm`,onClick:()=>b(o-1),disabled:s>=o-1,"aria-label":`Last page`,title:`Last page`,children:(0,r.jsx)(i.ChevronsRight,{className:`size-4`})})]})]})]})]})}function vc({row:e,isSelected:t,checked:n,pending:i,editingColumnId:a,inlineEditableColumns:o,inlineBooleanColumns:s,onStartEditCell:l,onCommitCell:u,onCancelEditCell:d,onRowSelect:f,onEditRow:p,onDeleteRow:m,suppressClick:h,hoverRow:g,scheduleDismiss:_,startPress:v,onPressMove:y,cancelPress:b}){let x=!!(f||p||m);return(0,r.jsx)(Ws,{"data-state":t||n?`selected`:void 0,className:f?`cursor-pointer group/row focus-visible:outline-2 focus-visible:outline-primary`:`group/row focus-visible:outline-2 focus-visible:outline-primary`,tabIndex:x?0:void 0,onClick:f?()=>{if(h.current){h.current=!1;return}window.getSelection()?.toString()||f(t?null:e.id)}:void 0,onKeyDown:x?n=>{n.target===n.currentTarget&&((n.key===`Enter`||n.key===` `)&&f?(n.preventDefault(),f(t?null:e.id)):(n.key===`e`||n.key===`E`)&&p?(n.preventDefault(),p(e.id)):(n.key===`Delete`||n.key===`Backspace`)&&m&&(n.preventDefault(),m(e.id)))}:void 0,onFocus:t=>{t.target===t.currentTarget&&g(e.id,t.currentTarget)},onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||_()},onPointerEnter:t=>{t.pointerType===`mouse`&&g(e.id,t.currentTarget)},onPointerLeave:e=>{e.pointerType===`mouse`&&_()},onPointerDown:t=>v(e.id,t.currentTarget,t),onPointerMove:y,onPointerUp:b,onPointerCancel:b,children:e.getVisibleCells().map(t=>{let n=t.column.id,f=!!l&&!!o?.has(n),p=a===n,m=!!i&&n in i;return(0,r.jsx)(Ks,{"data-col-id":n,"data-dirty":m?`true`:void 0,className:m?`bg-amber-500/10 border-l-2 border-l-amber-500`:void 0,title:f&&!p?`Double-click to edit`:void 0,onDoubleClick:f&&!p?()=>l(e.id,n):void 0,children:p&&u&&d?(0,r.jsx)(bc,{initialValue:m?i[n]:e.original[n],boolean:!!s?.has(n),onCommit:t=>u(e.id,n,t),onCancel:d}):m?(0,r.jsx)(`span`,{title:`Unsaved change`,children:i[n]==null?``:String(i[n])}):(0,c.flexRender)(t.column.columnDef.cell,t.getContext())},t.id)})})}var yc=(0,t.memo)(vc);function bc({initialValue:e,boolean:n,onCommit:i,onCancel:a}){let[o,s]=(0,t.useState)(e==null?``:String(e));return n?(0,r.jsx)(`input`,{type:`checkbox`,autoFocus:!0,defaultChecked:e===!0||e===`true`,onChange:e=>i(e.target.checked),onKeyDown:e=>{e.key===`Escape`&&a()},onBlur:a,"aria-label":`Edit cell value`}):(0,r.jsx)(`input`,{autoFocus:!0,className:`w-full bg-background border border-primary rounded px-1 py-0.5 text-sm outline-none`,value:o,onChange:e=>s(e.target.value),onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),i(o)):e.key===`Escape`&&(e.preventDefault(),a()),e.stopPropagation()},onBlur:()=>i(o),onClick:e=>e.stopPropagation(),onDoubleClick:e=>e.stopPropagation(),"aria-label":`Edit cell value`})}function xc({table:e,pks:n,onClose:i}){let a=V(),{toast:o}=Mi(),s=go(e),[c,l]=(0,t.useState)({}),[u,d]=(0,t.useState)(null),[f,p]=(0,t.useState)(!1),m=(0,t.useMemo)(()=>e.columns.filter(e=>!e.isReadOnly&&!e.isIdentity&&!e.isPrimaryKey&&!Hn(e.dbType)),[e]),h=(0,t.useMemo)(()=>e.columns.some(e=>!e.isReadOnly&&!e.isIdentity&&!e.isPrimaryKey&&!e.isNullable&&Hn(e.dbType)),[e]),g=(0,t.useMemo)(()=>{let t=new Map(e.columns.map(e=>[e.name,e]));return(e.primaryKeys??[]).map(e=>t.get(e)).filter(e=>!!e)},[e]),_=m.filter(e=>c[e.name]?.enabled),v=f||s.isPending,y=(e,t)=>l(n=>{let r=n[e]??{enabled:!1,value:``,setNull:!1};return{...n,[e]:{...r,...t}}}),b=e=>{let t=c[e.name];return t.setNull?null:e.paramType.startsWith(`Boolean`)?t.value===`true`:t.value};return(0,r.jsx)($o,{open:!0,onOpenChange:e=>{!e&&!v&&i()},children:(0,r.jsxs)(is,{showCloseButton:!1,className:`max-w-lg`,children:[(0,r.jsxs)(as,{children:[(0,r.jsxs)(ss,{children:[`Edit `,n.length,` `,n.length===1?`row`:`rows`]}),(0,r.jsx)(cs,{children:`Chosen fields are applied to every selected row and saved in one transaction — if any row fails, nothing changes.`})]}),h?(0,r.jsx)(`p`,{className:`text-sm text-destructive`,children:`This table has a required binary column, which bulk edit cannot echo. Edit rows individually.`}):(0,r.jsx)(`div`,{className:`flex flex-col gap-2 max-h-80 overflow-y-auto py-1`,children:m.map(e=>{let t=c[e.name]??{enabled:!1,value:``,setNull:!1},n=e.paramType.startsWith(`Boolean`);return(0,r.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,r.jsx)(ls,{id:`bulk-${e.name}`,checked:t.enabled,onCheckedChange:t=>y(e.name,{enabled:t===!0})}),(0,r.jsx)(us,{htmlFor:`bulk-${e.name}`,className:`w-40 truncate`,title:e.label??e.name,children:e.label??e.name}),n?(0,r.jsxs)(`select`,{className:`h-8 rounded-md border bg-transparent px-2 text-sm flex-1`,disabled:!t.enabled||t.setNull,value:t.value===`true`?`true`:`false`,onChange:t=>y(e.name,{value:t.target.value}),children:[(0,r.jsx)(`option`,{value:`true`,children:`true`}),(0,r.jsx)(`option`,{value:`false`,children:`false`})]}):(0,r.jsx)($t,{className:`h-8 flex-1`,disabled:!t.enabled||t.setNull,value:t.value,onChange:t=>y(e.name,{value:t.target.value})}),e.isNullable&&(0,r.jsxs)(`label`,{className:`flex items-center gap-1 text-xs text-muted-foreground`,children:[(0,r.jsx)(ls,{checked:t.setNull,disabled:!t.enabled,onCheckedChange:t=>y(e.name,{setNull:t===!0})}),`null`]})]},e.name)})}),u&&(0,r.jsx)(`p`,{className:`text-sm text-destructive`,children:u}),(0,r.jsxs)(os,{children:[(0,r.jsx)(Z,{variant:`outline`,onClick:i,disabled:v,children:`Cancel`}),(0,r.jsx)(Z,{onClick:async()=>{if(d(null),_.length===0){d(`Choose at least one field to change.`);return}p(!0);try{let t={};for(let e of _)t[e.name]=b(e);let r=m.filter(e=>!e.isNullable||t[e.name]!==void 0),o=Or(e,n,[...new Set([...e.primaryKeys??[],...r.map(e=>e.name)])]);if(!o)throw Error(`The selected rows have no resolvable primary keys.`);let c=(await a.query(o.query,o.variables))?.value?.data??[];if(c.length!==n.length)throw Error(`Only ${c.length} of ${n.length} selected rows still exist. Refresh and retry.`);let l=No(e,r,g,c,t);await s.saveDelta({updated:l}),i()}catch(e){let t=e.message??String(e);d(t),o(`Bulk edit failed: ${t}`,`error`)}finally{p(!1)}},disabled:v||h,children:v?`Saving…`:`Apply to ${n.length} ${n.length===1?`row`:`rows`}`})]})]})})}function Sc({...e}){return(0,r.jsx)(a.Dialog.Root,{"data-slot":`sheet`,...e})}function Cc({...e}){return(0,r.jsx)(a.Dialog.Portal,{"data-slot":`sheet-portal`,...e})}function wc({className:e,...t}){return(0,r.jsx)(a.Dialog.Overlay,{"data-slot":`sheet-overlay`,className:Y(`fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0`,e),...t})}function Tc({className:e,children:t,side:n=`right`,...o}){return(0,r.jsxs)(Cc,{children:[(0,r.jsx)(wc,{}),(0,r.jsxs)(a.Dialog.Content,{"data-slot":`sheet-content`,className:Y(`fixed z-50 flex flex-col gap-4 bg-background shadow-lg transition ease-in-out duration-200 outline-none`,`data-[state=closed]:animate-out data-[state=open]:animate-in data-[state=closed]:duration-200 data-[state=open]:duration-200`,n===`right`&&`inset-y-0 right-0 h-full w-3/4 max-w-md border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right`,n===`left`&&`inset-y-0 left-0 h-full w-3/4 max-w-md border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left`,n===`top`&&`inset-x-0 top-0 h-auto border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top`,n===`bottom`&&`inset-x-0 bottom-0 h-auto border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom`,e),...o,children:[t,(0,r.jsxs)(a.Dialog.Close,{"data-slot":`sheet-close`,className:`absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,children:[(0,r.jsx)(i.XIcon,{}),(0,r.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]})}function Ec({className:e,...t}){return(0,r.jsx)(`div`,{"data-slot":`sheet-header`,className:Y(`flex flex-col gap-2 p-4 pb-0`,e),...t})}function Dc({className:e,...t}){return(0,r.jsx)(a.Dialog.Title,{"data-slot":`sheet-title`,className:Y(`text-lg leading-none font-semibold`,e),...t})}function Oc({className:e,...t}){return(0,r.jsx)(a.Dialog.Description,{"data-slot":`sheet-description`,className:Y(`text-sm text-muted-foreground`,e),...t})}var kc={json:i.Braces,xml:i.Code,"php-serialized":i.Database,binary:i.Binary,longtext:i.FileText,text:i.FileText},Ac={json:`JSON`,xml:`XML`,"php-serialized":`PHP Serialized`,binary:`Binary`,longtext:`Text`,text:`Text`};function jc(e,t){if(t===`json`)try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}return t===`xml`?e.replace(/>\s*</g,`>
108
- <`).trim():e}function Mc({target:e,onClose:n,onNavigate:a,onSave:o,canNavigatePrev:s,canNavigateNext:c}){let{toast:l}=Mi(),[u,d]=(0,t.useState)(!1),[f,p]=(0,t.useState)(!1),[m,h]=(0,t.useState)(``),[g,_]=(0,t.useState)(!1),[v,y]=(0,t.useState)(!1),b=(0,t.useRef)(null),x=e?.value??``,S=qn(x,e?.dbType),C=kc[S],w=jc(x,S),T=S===`binary`&&x?Xn(x):null,E=(0,t.useCallback)(()=>{!e||!T||Ei(x,`${e.columnName}${T.extension}`,T.mime)},[e,T,x]);(0,t.useEffect)(()=>{p(!1),h(``),_(!1),y(!1)},[e?.rowKey,e?.columnName]),(0,t.useEffect)(()=>{if(!e)return;let t=e=>{f||(e.key===`ArrowUp`&&s?(e.preventDefault(),a(`prev`)):e.key===`ArrowDown`&&c&&(e.preventDefault(),a(`next`)))};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e,f,s,c,a]);let D=(0,t.useRef)(null);(0,t.useEffect)(()=>()=>{D.current&&clearTimeout(D.current)},[]);let O=(0,t.useCallback)(async()=>{try{await navigator.clipboard.writeText(x)}catch(e){l(`Copy failed: ${e instanceof Error?e.message:String(e)}`,`error`);return}_(!0),D.current&&clearTimeout(D.current),D.current=setTimeout(()=>_(!1),1500)},[x,l]),k=(0,t.useCallback)(()=>{h(w),p(!0),requestAnimationFrame(()=>b.current?.focus())},[w]),A=(0,t.useCallback)(()=>{p(!1),h(``)},[]),j=(0,t.useCallback)(async()=>{if(m===w){p(!1);return}if(!(!o||v)){y(!0);try{await o(m),p(!1)}catch{}finally{y(!1)}}},[o,m,w,v]),M=(0,t.useCallback)(()=>{if(S===`json`)try{h(JSON.stringify(JSON.parse(m),null,2))}catch{}else S===`xml`&&h(m.replace(/>\s*</g,`>
109
- <`).trim())},[m,S]),N=S===`json`||S===`xml`,ee=!!o&&!e?.isReadOnly&&S!==`binary`,te=(0,r.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,r.jsx)(C,{className:`size-4 text-muted-foreground shrink-0`}),(0,r.jsx)(`span`,{className:`truncate font-semibold text-sm`,children:e?.columnLabel}),(0,r.jsx)(`span`,{className:`text-xs text-muted-foreground shrink-0`,children:T?T.kind===`image`?T.mime.replace(`image/`,``).toUpperCase()+` image`:T.kind===`pdf`?`PDF document`:Ac[S]:Ac[S]}),(0,r.jsx)(`span`,{className:`text-xs text-muted-foreground shrink-0`,children:T?Yn(x):`${x.length} chars`})]}),P=(0,r.jsxs)(`div`,{className:`flex items-center gap-1 px-4 pb-2`,children:[(0,r.jsxs)(Z,{type:`button`,variant:`ghost`,size:`sm`,className:`h-7 text-xs px-2`,onClick:O,children:[g?(0,r.jsx)(i.Check,{className:`size-3`}):(0,r.jsx)(i.Copy,{className:`size-3`}),g?`Copied`:`Copy`]}),T&&(0,r.jsxs)(Z,{type:`button`,variant:`ghost`,size:`sm`,className:`h-7 text-xs px-2`,onClick:E,children:[(0,r.jsx)(i.Download,{className:`size-3`}),`Download`]}),ee&&!f&&(0,r.jsxs)(Z,{type:`button`,variant:`ghost`,size:`sm`,className:`h-7 text-xs px-2`,onClick:k,children:[(0,r.jsx)(i.Pencil,{className:`size-3`}),`Edit`]}),f&&N&&(0,r.jsxs)(Z,{type:`button`,variant:`ghost`,size:`sm`,className:`h-7 text-xs px-2`,onClick:M,children:[(0,r.jsx)(i.WrapText,{className:`size-3`}),`Format`]}),(0,r.jsxs)(`div`,{className:`flex items-center gap-1 ml-auto`,children:[(0,r.jsx)(Z,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:()=>a(`prev`),disabled:!s,"aria-label":`Previous row`,title:`Previous row`,children:(0,r.jsx)(i.ChevronUp,{className:`size-4`})}),(0,r.jsx)(Z,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:()=>a(`next`),disabled:!c,"aria-label":`Next row`,title:`Next row`,children:(0,r.jsx)(i.ChevronDown,{className:`size-4`})}),(0,r.jsx)(Z,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:()=>d(e=>!e),"aria-label":u?`Exit full screen`:`Full screen`,title:u?`Exit full screen`:`Full screen`,children:u?(0,r.jsx)(i.Minimize2,{className:`size-4`}):(0,r.jsx)(i.Maximize2,{className:`size-4`})})]})]}),ne=(0,r.jsx)(`div`,{className:`flex-1 min-h-0 overflow-auto px-4 pb-4`,children:f?(0,r.jsxs)(`div`,{className:`flex flex-col gap-2 h-full`,children:[(0,r.jsx)(`textarea`,{ref:b,value:m,onChange:e=>h(e.target.value),className:Y(`flex-1 w-full rounded-md border border-input bg-background px-3 py-2`,`text-xs font-mono leading-relaxed`,`ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,`resize-none min-h-[200px]`)}),(0,r.jsxs)(`div`,{className:`flex items-center gap-2 justify-end`,children:[(0,r.jsx)(Z,{type:`button`,variant:`ghost`,size:`sm`,onClick:A,disabled:v,children:`Cancel`}),(0,r.jsx)(Z,{type:`button`,size:`sm`,onClick:j,disabled:v,children:v?`Saving…`:`Save`})]})]}):T?.kind===`image`?(0,r.jsx)(`img`,{src:Zn(x,T.mime),alt:e?.columnLabel??`Image content`,className:`max-w-full rounded-md border border-input`}):T?(0,r.jsxs)(`div`,{className:`rounded-md border border-input bg-muted/30 p-4 text-sm text-muted-foreground`,children:[(0,r.jsxs)(`p`,{children:[T.kind===`pdf`?`PDF document`:`Binary content`,` · `,Yn(x)]}),(0,r.jsx)(`p`,{className:`mt-1 text-xs`,children:`Use Download to save and open the file.`})]}):(0,r.jsx)(`pre`,{className:`text-xs font-mono leading-relaxed whitespace-pre-wrap break-all`,children:w})}),re=!!e;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(Sc,{open:re&&!u,onOpenChange:e=>{e||n()},children:(0,r.jsxs)(Tc,{side:`right`,className:`w-[480px] max-w-[90vw]`,children:[(0,r.jsxs)(Ec,{children:[(0,r.jsx)(Dc,{children:te}),(0,r.jsx)(Oc,{className:`sr-only`,children:`Content viewer panel`})]}),P,ne]})}),(0,r.jsx)($o,{open:re&&u,onOpenChange:e=>{e||d(!1)},children:(0,r.jsxs)(is,{className:`max-w-[90vw] max-h-[90vh] w-full h-full flex flex-col`,children:[(0,r.jsxs)(as,{children:[(0,r.jsx)(ss,{children:te}),(0,r.jsx)(cs,{className:`sr-only`,children:`Content viewer full screen`})]}),P,ne]})})]})}function Nc(e,t){if(vr(e,t).filterTexts.length===0)return;let n=[];for(let r of e){let e=r.value,i=t.columns.find(e=>e.name===r.id);!i||!cr(i.paramType).includes(e.operator)||e.value===void 0||e.value===``&&e.operator!==`_null`||n.push({[i.graphQlName]:{[e.operator]:e.value}})}return n.length===1?n[0]:n.length>1?{and:n}:void 0}function Pc({table:e,id:i,filterTable:a,filterColumn:o,selectedRowId:s,onRowSelect:c,onOpenColumn:l,stackingEnabled:u,onToggleStacking:d}){let f=mo(e),[p,m]=(0,t.useState)(null),[h,g]=(0,t.useState)(null),[_,v]=(0,t.useState)(null),y=(0,t.useRef)([]),b=(0,t.useCallback)(t=>{g(Fn(t,e))},[e]),x=(0,t.useCallback)(e=>{m({type:`single`,pk:e})},[]),S=(0,t.useCallback)(e=>{e.length!==0&&m({type:`batch`,pks:e})},[]),[C,w]=(0,t.useState)(null),T=(0,t.useCallback)(e=>{e.length!==0&&w(e)},[]),[E,D]=(0,t.useState)(new Map),O=(0,t.useRef)(E);O.current=E;let[k,A]=(0,t.useState)(!1),j=go(e),M=(0,t.useCallback)((t,n)=>{let r=y.current[t];v({columnName:n,pk:r?Nn(r,e):null,rowIndex:t,tableName:e.name})},[e]),{columns:N,sorting:ee,columnFilters:te,pageIndex:P,pageSize:ne,pageCount:re,rows:F,totalRows:I,grouping:L,exportRows:R,loading:ie,fetching:ae,error:z,onSortingChange:B,onColumnFiltersChange:oe,onPageIndexChange:se,onPageSizeChange:H,onGroupingChange:ce,onGroupingSumChange:le}=so(e,i,a,o,M,l),ue=(0,t.useCallback)(async()=>{if(p)try{p.type===`single`?await f.deleteRow(p.pk):await f.deleteRows(p.pks),m(null)}catch{}},[p,f]),de=p?.type===`batch`?p.pks.length:1;y.current=F;let{toast:fe}=Mi(),pe=V(),U=e.isEditable!==!1,me=(0,t.useMemo)(()=>_?.pk?Fn(_.pk,e):null,[_,e]),he=(0,t.useMemo)(()=>!_||_.tableName!==e.name?-1:me===null?_.rowIndex<F.length?_.rowIndex:-1:F.findIndex(t=>{let n=Nn(t,e);return n!==null&&Fn(n,e)===me}),[_,me,F,e]),ge=he>=0?F[he]:void 0,_e=(0,t.useMemo)(()=>_?.pk?Pn(_.pk,e):null,[_,e]),ve=_?e.columns.find(e=>e.name===_.columnName):void 0,ye=!!_&&!!ve&&!!_e&&Kn(ve)&&ge!==void 0&&!(ve.name in ge),{data:be,isLoading:xe,error:Se}=(0,n.useQuery)({queryKey:[`contentPanelValue`,e.name,_?.columnName,me],queryFn:async()=>{let t=Dr(e,_e,[ve.name]),n=(await pe.query(t,_e.variables))?.value?.data?.at(0);if(!n)throw Error(`Row no longer exists.`);return n[ve.name]??null},enabled:ye});(0,t.useEffect)(()=>{_!==null&&ye&&Se&&(v(null),fe(`Could not load content: ${Se.message}`,`error`))},[_,ye,Se,fe]),(0,t.useEffect)(()=>{_!==null&&_.tableName!==e.name&&v(null)},[_,e.name]),(0,t.useEffect)(()=>{_!==null&&_.tableName===e.name&&!ie&&he===-1&&(v(null),fe(`Row is no longer in the current view; panel closed.`,`error`))},[_,e.name,ie,he,fe]);let Ce=(0,t.useMemo)(()=>{if(!_||!ge)return null;let t=e.columns.find(e=>e.name===_.columnName);if(!t||ye&&(xe||Se))return null;let n=ye?be:ge[_.columnName],r=Wn(t);return{value:n==null?``:r||typeof n==`object`?JSON.stringify(n,null,2):String(n),columnName:t.name,columnLabel:t.label,dbType:t.dbType,rowKey:me??`row-${_.rowIndex}`,isReadOnly:t.isReadOnly||t.isPrimaryKey||t.isIdentity}},[_,ge,me,e,ye,be,xe,Se]),we=(0,t.useMemo)(()=>e.columns.filter(e=>!e.isReadOnly&&!e.isIdentity),[e]),W=(0,t.useMemo)(()=>we.filter(e=>!e.isNullable||e.name===_?.columnName),[we,_?.columnName]),Te=Fo(e,(0,t.useMemo)(()=>W.map(e=>({column:e})),[W]),(0,t.useMemo)(()=>{let t=new Map(e.columns.map(e=>[e.name,e]));return(e.primaryKeys??[]).map(e=>t.get(e)).filter(e=>!!e)},[e]),me??``),Ee=U&&_e!==null&&!Te.isPending,De=(0,t.useCallback)(async t=>{if(!_||!_e)return;let n=e.columns.find(e=>e.name===_.columnName),r=t;if(n&&Wn(n))try{r=JSON.parse(t)}catch{}try{let t=Dr(e,_e,W.map(e=>e.name)),n=(await pe.query(t,_e.variables))?.value?.data?.[0];if(!n)throw Error(`Row no longer exists.`);let i={};for(let e of W)i[e.name]=n[e.name]??null;i[_.columnName]=r,await Te.update(i)}catch(e){throw fe(`Save failed: ${e.message}`,`error`),e}},[_,_e,e,W,Te,pe,fe]),Oe=(0,t.useCallback)(()=>{v(null)},[]),ke=(0,t.useCallback)(e=>{if(!_||he<0)return;let t=e===`prev`?Math.max(0,he-1):Math.min(F.length-1,he+1);M(t,_.columnName)},[_,he,F.length,M]),Ae=(0,t.useMemo)(()=>new Set(e.columns.filter(e=>!e.isReadOnly&&!e.isIdentity&&!e.isPrimaryKey&&!Hn(e.dbType)&&!Kn(e)).map(e=>e.name)),[e]),je=(0,t.useMemo)(()=>new Set(e.columns.filter(e=>e.paramType.startsWith(`Boolean`)).map(e=>e.name)),[e]),Me=(0,t.useCallback)((t,n,r)=>{let i=In(t,e);if(!i)return;let a=y.current.find(n=>Mn(n,e,-1)===t);D(e=>{let o=new Map(e),s={...o.get(t)?.changes??{}},c=a?.[n];return a!==void 0&&c==null==(r==null)&&String(c??``)===String(r??``)?delete s[n]:s[n]=r,Object.keys(s).length===0?o.delete(t):o.set(t,{pk:i,changes:s}),o})},[e]),Ne=(0,t.useCallback)(()=>D(new Map),[]),Pe=(0,t.useCallback)(async()=>{let t=[...O.current.entries()];if(t.length!==0){A(!0);try{let n=e.columns.filter(e=>Ae.has(e.name)),r=(e.primaryKeys??[]).map(t=>e.columns.find(e=>e.name===t)).filter(e=>!!e),i=new Set(t.flatMap(([,e])=>Object.keys(e.changes))),a=n.filter(e=>!e.isNullable||i.has(e.name)),o=[...new Set([...e.primaryKeys??[],...a.map(e=>e.name)])],s=Or(e,t.map(([,e])=>e.pk),o);if(!s)throw Error(`The edited rows have no resolvable primary keys.`);let c=(await pe.query(s.query,s.variables))?.value?.data??[];if(c.length!==t.length)throw Error(`Only ${c.length} of ${t.length} edited rows still exist. Refresh and retry.`);let l=Po(e,n,r,c,t=>O.current.get(Mn(t,e,-1))?.changes);await j.saveDelta({updated:l}),D(new Map)}catch(e){fe(`Save failed: ${e.message}`,`error`)}finally{A(!1)}}},[e,Ae,j,pe,fe]),Fe=(0,t.useRef)(e.name);(0,t.useEffect)(()=>{Fe.current!==e.name&&(Fe.current=e.name,O.current.size>0&&(D(new Map),fe(`Unsaved cell edits were discarded on table switch`,`error`)))},[e.name,fe]);let Ie=(0,t.useMemo)(()=>new Map([...E].map(([e,t])=>[e,t.changes])),[E]),Le=(0,t.useCallback)(()=>{let t=Nc(te,e);window.dispatchEvent(new CustomEvent(`bifrostql:visualize`,{detail:{table:e.graphQlName,filter:t,filterType:ar(e)}}))},[te,e]);return z?(0,r.jsx)(Xt,{variant:`destructive`,className:`m-2`,children:(0,r.jsxs)(Qt,{children:[`Error: `,z.message]})}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(_c,{columns:N,data:F,tableName:e.name,pageCount:re,pageIndex:P,pageSize:ne,sorting:ee,columnFilters:te,loading:ie,fetching:ae,primaryKeys:e.primaryKeys??[],selectable:U&&!L,selectedRowId:s,onRowSelect:c,onSortingChange:B,onColumnFiltersChange:oe,onPageIndexChange:se,onPageSizeChange:H,onEditRow:U&&!L?b:void 0,onDeleteRow:U&&!L?x:void 0,onDeleteSelected:U&&!L?S:void 0,onBulkEditSelected:U&&!L?T:void 0,inlineEditableColumns:Ae,inlineBooleanColumns:je,pendingEdits:Ie,onCellCommit:U&&!L?Me:void 0,onSaveAllEdits:Pe,onDiscardAllEdits:Ne,savingEdits:k,stackingEnabled:u,onToggleStacking:d,exportRows:R,totalRows:I,groupableColumns:e.columns,grouping:L,onGroupingChange:ce,onGroupingSumChange:le,onVisualize:Le}),(0,r.jsx)(ds,{open:p!==null,onOpenChange:e=>{e||m(null)},title:`Delete ${de} ${de===1?`row`:`rows`}?`,description:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`p`,{children:`This action cannot be undone.`}),f.error&&(0,r.jsx)(`p`,{className:`mt-2 text-sm text-destructive`,children:f.error.message})]}),confirmLabel:`Delete ${de===1?`row`:`${de} rows`}`,variant:`destructive`,isPending:f.isPending,onConfirm:ue}),(0,r.jsx)(Mc,{target:Ce,onClose:Oe,onNavigate:ke,onSave:Ee?De:void 0,canNavigatePrev:he>0,canNavigateNext:he>=0&&he<F.length-1}),C!==null&&(0,r.jsx)(xc,{table:e,pks:C,onClose:()=>w(null)}),h!==null&&(0,r.jsx)(Ds,{table:e.graphQlName,editId:h,onClose:()=>g(null)})]})}function Fc(e){return new Set((e.manyToManyJoins??[]).map(e=>e.junctionTable))}function Ic(e){let t=Fc(e),n=e.multiJoins.filter(e=>!t.has(e.destinationTable)).map(e=>({kind:`child`,key:`child:${e.fieldName??e.destinationTable}`,join:e})),r=(e.manyToManyJoins??[]).map(e=>({kind:`m2m`,key:`m2m:${e.junctionTable}:${e.targetTable}`,m2m:e}));return[...n,...r]}function Lc(e,t){let n=new Set([...t.junctionSourceColumnNames,...t.junctionTargetColumnNames]);return e.columns.filter(e=>!e.isPrimaryKey&&!n.has(e.name))}function Rc(e,t,n,r){let i=n.junctionSourceColumnNames;if(i.length===0)throw Error(`Many-to-many relationship '${n.name}' has no junction source columns.`);let a=jn(r,i.length),o=new Map(e.columns.map(e=>[e.name,e])),s=[],c=[],l={};i.forEach((t,r)=>{let i=o.get(t);if(!i)throw Error(`Junction table '${e.name}' has no column '${t}' (junction source column of many-to-many relationship '${n.name}').`);let u=i.paramType.replace(`!`,``),d=`src${r}`;s.push(`$${d}: ${u}`),c.push(`{ ${t}: { _eq: $${d} } }`),l[d]=Sn(a[r],u)});let u=c.length===1?c[0]:`{ and: [${c.join(`, `)}] }`,d=e.primaryKeys??[],f=Lc(e,n).map(e=>e.name),p=t.primaryKeys?.length?t.primaryKeys:n.targetColumnNames,m=t.labelColumn,h=[...p];m&&!p.includes(m)&&h.push(`label: ${m}`);let g=`${n.junctionTargetField} { ${h.join(` `)} }`,_=[...d,...f,g].join(` `);return{query:`query GetLinks_${e.name}(${s.join(`, `)}, $limit: Int, $offset: Int) { ${e.name}(filter: ${u} limit: $limit offset: $offset) { total offset limit data { ${_} } } }`,variables:l}}function zc(e,t){let n=wr(e).map(e=>e.name);return n.length>0?n:[...t.targetColumnNames]}function Bc(e,t,n){X(e.name,`many-to-many target table name`);let r=zc(e,t),i=t.targetColumnNames[0],a=e.labelColumn||r[0];for(let e of r)X(e,`many-to-many target identity column`);X(i,`many-to-many junction target column`),X(a,`many-to-many target label column`);let o=`${[...new Set([...r,i])].join(` `)} label: ${a}`,s=e.columns.find(e=>e.name===a);if(!s)throw Error(`Target table '${e.name}' has no column '${a}' (label column for the '${t.name}' many-to-many picker).`);let c=s.paramType.replace(`!`,``)===`String`,l=!!n&&n.trim()!==``&&c,u=l?`$limit: Int, $search: String`:`$limit: Int`,d=l?`filter: {${a}: {_contains: $search}} `:``;return{query:`query PickTarget(${u}) { ${e.name}(${d}limit: $limit sort: [${a}_asc]) { data { ${o} } } }`,identityColumns:r,linkColumn:i,serverSearch:c}}function Vc(e,t,n){let r=e[t.junctionTargetField];if(!r)return null;let i=Mn(r,n,0);return{id:i,label:r.label==null?i:String(r.label)}}function Hc(e,t,n){if(e.junctionSourceColumnNames.length!==1||e.junctionTargetColumnNames.length!==1)throw Error(`attachJunctionDetail supports single-column junction FKs only; this relationship uses a composite key which is not yet supported.`);let[r]=jn(t,1);return{[e.junctionSourceColumnNames[0]]:r,[e.junctionTargetColumnNames[0]]:n}}var Uc=200,Wc=50,Gc=500;function Kc({m2m:e,parentRowId:t,onOpenColumn:n}){let i=U(),a=i.findTable(e.junctionTable),o=i.findTable(e.targetTable);return!a||!o?(0,r.jsx)(`div`,{className:`p-4 text-sm text-muted-foreground`,children:`Relationship schema unavailable.`}):(0,r.jsx)(qc,{m2m:e,parentRowId:t,onOpenColumn:n,junction:a,target:o})}function qc({m2m:e,parentRowId:a,onOpenColumn:o,junction:s,target:c}){let l=V(),u=(0,n.useQueryClient)(),{toast:d}=Mi(),[f,p]=(0,t.useState)(!1),[m,h]=(0,t.useState)(null),g=mo(s),_={query:null,variables:{}},v=null;try{_=Rc(s,c,e,a)}catch(e){v=e}let{query:y,variables:b}=_,x=(0,t.useMemo)(()=>[`m2mRows`,e.junctionTable,e.targetTable,a],[e.junctionTable,e.targetTable,a]),{data:S,isLoading:C,error:w}=(0,n.useQuery)({queryKey:x,queryFn:()=>l.query(y,{...b,limit:Uc,offset:0}),enabled:!!y}),T=(0,t.useCallback)(()=>u.invalidateQueries({queryKey:x}),[u,x]),E=(0,t.useCallback)(async e=>{let t=Nn(e,s);if(!t)throw Error(`This link cannot be removed: its ${s.label} row is missing one or more key columns (${(s.primaryKeys??[]).join(`, `)||`none declared`}).`);await g.deleteRow(t),await T()},[s,g,T]);if(v)return(0,r.jsxs)(`div`,{className:`p-4 text-sm text-destructive`,children:[`Relationship misconfigured: `,v.message]});let D=S?.[s.name]?.data??[],O=Lc(s,e),k=s.isEditable!==!1,A=zc(c,e),j=new Set;for(let t of D){let n=t[e.junctionTargetField];n&&(A.some(e=>n[e]==null)||j.add(An(A.map(e=>n[e]))))}return(0,r.jsxs)(`div`,{className:`flex flex-col min-h-0 flex-1 overflow-hidden`,children:[(0,r.jsxs)(`div`,{className:`flex items-center gap-2 px-2 py-1 bg-muted/20 border-b border-border shrink-0`,children:[(0,r.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full border border-border bg-muted/40 px-2 py-0.5 text-xs text-muted-foreground`,title:`Linked through ${s.label}`,children:[(0,r.jsx)(i.Link2,{className:`size-3`}),`via `,s.label]}),k&&(0,r.jsxs)(Z,{variant:`ghost`,size:`sm`,className:`h-7 px-2 text-xs ml-auto`,onClick:()=>p(!0),children:[(0,r.jsx)(i.Plus,{className:`size-3 mr-1`}),` Add link`]})]}),(0,r.jsxs)(`div`,{className:`flex-1 min-h-0 overflow-auto`,children:[w&&(0,r.jsxs)(`div`,{className:`p-3 text-sm text-destructive`,children:[`Error: `,w.message]}),C&&(0,r.jsxs)(`div`,{className:`flex items-center gap-2 p-3 text-sm text-muted-foreground`,children:[(0,r.jsx)(i.Loader2,{className:`size-4 animate-spin`}),` Loading…`]}),!C&&D.length===0&&(0,r.jsxs)(`div`,{className:`p-3 text-sm text-muted-foreground`,children:[`No linked `,c.label,`.`]}),D.length>0&&(0,r.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,r.jsx)(`thead`,{children:(0,r.jsxs)(`tr`,{className:`border-b border-border text-left text-xs text-muted-foreground`,children:[(0,r.jsx)(`th`,{className:`px-2 py-1 font-medium`,children:c.label}),O.map(e=>(0,r.jsx)(`th`,{className:`px-2 py-1 font-medium`,children:e.label},e.name)),k&&(0,r.jsx)(`th`,{className:`px-2 py-1 w-8`,"aria-label":`actions`})]})}),(0,r.jsx)(`tbody`,{children:D.map((t,n)=>{let a=Vc(t,e,c);return(0,r.jsxs)(`tr`,{className:`border-b border-border/50 hover:bg-muted/30`,children:[(0,r.jsx)(`td`,{className:`px-2 py-1`,children:a?(0,r.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,r.jsx)(M,{to:`/${c.name}/${a.id}`,className:`text-primary hover:underline`,children:a.label}),o&&(0,r.jsx)(Z,{variant:`ghost`,size:`icon-sm`,className:`size-5`,onClick:()=>o({tableName:c.name,filterId:a.id}),"aria-label":`Open ${a.label} in side column`,title:`Open in side column`,children:(0,r.jsx)(i.Search,{className:`size-3`})})]}):(0,r.jsx)(`span`,{className:`text-muted-foreground`,children:`—`})}),O.map(e=>(0,r.jsx)(`td`,{className:`px-2 py-1`,children:si(t[e.name],e)},e.name)),k&&(0,r.jsx)(`td`,{className:`px-2 py-1`,children:(0,r.jsx)(Z,{variant:`ghost`,size:`icon-sm`,className:`size-6 text-muted-foreground hover:text-destructive`,onClick:()=>h(t),disabled:g.isPending,"aria-label":`Detach ${a?.label??`link`}`,title:`Detach`,children:(0,r.jsx)(i.Unlink,{className:`size-3.5`})})})]},n)})})]}),D.length>=Uc&&(0,r.jsxs)(`div`,{className:`px-3 py-2 text-xs text-muted-foreground italic border-t border-border`,children:[`Showing the first `,Uc,` links. Detach some or narrow the parent selection to see more.`]})]}),f&&(0,r.jsx)(Jc,{target:c,junction:s,m2m:e,parentRowId:a,linkedIds:j,onClose:()=>p(!1),onLinked:T}),(0,r.jsx)(ds,{open:m!==null,onOpenChange:e=>{e||h(null)},title:`Detach this link?`,description:(0,r.jsxs)(`p`,{children:[`This removes the link row. The `,c.label,` record itself is not deleted.`]}),confirmLabel:`Detach`,variant:`destructive`,isPending:g.isPending,onConfirm:async()=>{try{m&&await E(m)}catch(e){d(`Detach failed: ${e.message}`,`error`)}finally{h(null)}}})]})}function Jc({target:e,junction:a,m2m:o,parentRowId:s,linkedIds:c,onClose:l,onLinked:u}){let d=V(),f=Fo(a,a.columns.filter(e=>o.junctionSourceColumnNames.includes(e.name)||o.junctionTargetColumnNames.includes(e.name)).map(e=>({column:e})),[]),[p,m]=(0,t.useState)(``),[h,g]=(0,t.useState)(``);(0,t.useEffect)(()=>{let e=setTimeout(()=>g(p),300);return()=>clearTimeout(e)},[p]);let _=h.trim(),v=null,y=null;try{v=Bc(e,o,_)}catch(e){y=e}let{query:b,identityColumns:x,linkColumn:S,serverSearch:C}=v??{query:``,identityColumns:[],linkColumn:``,serverSearch:!1},w=C?Wc:Gc,{data:T,isLoading:E}=(0,n.useQuery)({queryKey:[`m2mTargets`,e.name,C?_:``],queryFn:({signal:e})=>d.query(b,C&&_?{limit:w,search:_}:{limit:w},{signal:e}),enabled:v!==null}),D=T?.[e.name]?.data??[],O=C||!_?D:D.filter(e=>Qo(e,`label`,_)),k=D.length>=w,[A,j]=(0,t.useState)(null),M=(0,t.useCallback)(async(e,t)=>{if(c.has(e))return;let n;try{n=Hc(o,s,t)}catch(e){j(e);return}j(null);try{await f.insert(n)}catch{return}await u(),l()},[f,o,s,c,u,l]);return y?(0,r.jsx)($o,{open:!0,onOpenChange:e=>{e||l()},children:(0,r.jsxs)(is,{className:`max-w-md`,children:[(0,r.jsx)(as,{children:(0,r.jsxs)(ss,{children:[`Add `,e.label,` link`]})}),(0,r.jsxs)(`p`,{className:`text-sm text-destructive`,children:[`Relationship misconfigured: `,y.message]})]})}):(0,r.jsx)($o,{open:!0,onOpenChange:e=>{e||l()},children:(0,r.jsxs)(is,{className:`max-w-md`,children:[(0,r.jsx)(as,{children:(0,r.jsxs)(ss,{children:[`Add `,e.label,` link`]})}),(0,r.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,r.jsx)(i.Search,{className:`size-4 text-muted-foreground`}),(0,r.jsx)($t,{autoFocus:!0,placeholder:`Search ${e.label}…`,value:p,onChange:e=>m(e.target.value)})]}),A&&(0,r.jsx)(`p`,{className:`text-sm text-destructive`,children:A.message}),f.error&&(0,r.jsx)(`p`,{className:`text-sm text-destructive`,children:f.error.message}),(0,r.jsxs)(`div`,{className:`max-h-72 overflow-auto border border-border rounded-md`,children:[E&&(0,r.jsxs)(`div`,{className:`flex items-center gap-2 p-3 text-sm text-muted-foreground`,children:[(0,r.jsx)(i.Loader2,{className:`size-4 animate-spin`}),` Loading…`]}),!E&&O.length===0&&(0,r.jsx)(`div`,{className:`p-3 text-sm text-muted-foreground`,children:`No matches.`}),O.map((e,t)=>{let n=An(x.map(t=>e[t])),i=String(e[S]??``),a=e.label==null?n:String(e.label),o=c.has(n);return(0,r.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-between gap-2 text-left px-3 py-1.5 text-sm hover:bg-muted/50 disabled:opacity-50 disabled:hover:bg-transparent`,disabled:f.isPending||o,onClick:()=>M(n,i),children:[(0,r.jsx)(`span`,{className:`truncate`,children:a}),o&&(0,r.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground italic`,children:`Already linked`})]},t)}),!E&&k&&(0,r.jsx)(`div`,{className:`px-3 py-1.5 text-xs text-muted-foreground italic border-t border-border`,children:C?`Showing the first ${w} matches — type to narrow.`:`Showing the first ${w} rows; some may not be listed.`})]})]})})}function Yc(e){return e.kind===`child`?e.join.destinationTable:e.m2m.targetTable}function Xc({parentTable:e,selectedRowId:n,onClose:a,onOpenColumn:o}){let s=U(),c=Ic(e),[l,u]=(0,t.useState)(c[0]?.key??``),[d,f]=(0,t.useState)(!1),[p,m]=(0,t.useState)(null),h=c.find(e=>e.key===l)??c[0];if((0,t.useEffect)(()=>{m(null)},[l,n]),c.length===0||!s.data)return null;let g=h.kind===`child`?s.findTable(h.join.destinationTable):void 0,_=(g?.multiJoins?.length??0)>0;return(0,r.jsxs)(`div`,{className:`border-t-2 border-primary/20 flex flex-col flex-1 shrink-0`,children:[(0,r.jsxs)(`div`,{className:`flex items-center gap-1 px-2 py-1 bg-muted/30 border-b border-border shrink-0`,children:[(0,r.jsx)(Z,{variant:`ghost`,size:`icon-sm`,onClick:()=>f(!d),"aria-label":d?`Expand detail panel`:`Collapse detail panel`,title:d?`Expand detail panel`:`Collapse detail panel`,children:d?(0,r.jsx)(i.ChevronUp,{className:`size-3.5`}):(0,r.jsx)(i.ChevronDown,{className:`size-3.5`})}),(0,r.jsx)(`span`,{className:`text-xs text-muted-foreground mr-1`,children:`Detail:`}),(0,r.jsx)(`div`,{className:`flex items-center gap-0.5 overflow-x-auto`,children:c.map(t=>{let a=s.findTable(Yc(t))?.label??Yc(t),c=t.key===h.key;return(0,r.jsxs)(`span`,{className:`group/tab inline-flex items-center`,children:[(0,r.jsx)(Z,{variant:c?`secondary`:`ghost`,size:`sm`,className:Y(`text-xs h-7 px-2.5`,c&&`font-semibold`),onClick:()=>u(t.key),children:a}),o&&t.kind===`child`&&(0,r.jsx)(Z,{variant:`ghost`,size:`icon-sm`,className:`opacity-0 group-hover/tab:opacity-100 size-5 shrink-0`,onClick:()=>o({tableName:t.join.destinationTable,filterTable:e.name,filterId:n,...wn(t.join)?{}:{filterColumn:t.join.destinationColumnNames[0]}}),"aria-label":`Open in side column`,title:`Open in side column`,children:(0,r.jsx)(i.PanelRight,{className:`size-3`})})]},t.key)})}),a&&(0,r.jsx)(Z,{variant:`ghost`,size:`icon-sm`,onClick:a,className:`ml-auto shrink-0`,"aria-label":`Close detail panel`,title:`Close detail panel`,children:(0,r.jsx)(i.X,{className:`size-3.5`})})]}),!d&&(0,r.jsx)(`div`,{className:`flex-1 flex flex-col`,children:h.kind===`child`&&!g?(0,r.jsx)(`div`,{className:`p-4 text-sm text-muted-foreground`,children:`This related table is not available.`}):h.kind===`child`?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`div`,{className:`flex-1 min-h-[11rem] overflow-hidden flex flex-col`,children:(0,r.jsx)(Pc,{table:g,id:n,filterTable:e.name,...wn(h.join)?{}:{filterColumn:h.join.destinationColumnNames[0]},selectedRowId:_?p:void 0,onRowSelect:_?m:void 0,onOpenColumn:o},`${h.key}-${n}`)}),_&&p&&(0,r.jsx)(`div`,{className:`flex-1 flex flex-col`,children:(0,r.jsx)(Xc,{parentTable:g,selectedRowId:p,onClose:()=>m(null),onOpenColumn:o})})]}):(0,r.jsx)(Kc,{m2m:h.m2m,parentRowId:n,onOpenColumn:o},`${h.key}-${n}`)})]})}var Zc=(0,t.createContext)({mainTable:null,columns:[],focusedIndex:0,focusColumn:()=>{},closeColumn:()=>{}}),Qc=(0,t.createContext)({register:()=>{},unregister:()=>{}});function $c({children:e}){let[n,i]=(0,t.useState)(null),[a,o]=(0,t.useState)(0),s=(0,t.useCallback)(e=>{i(e)},[]),c=(0,t.useCallback)(()=>{i(null),o(0)},[]),l=(0,t.useCallback)(e=>{if(o(e),!n)return;let t=n.columnRefs.get(e);t&&t.scrollIntoView({behavior:`smooth`,block:`nearest`,inline:`nearest`})},[n]),u=(0,t.useCallback)(e=>{n&&e>0&&n.onClose(e-1)},[n]),d=(0,t.useMemo)(()=>n?n.columns.map((e,t)=>({panel:e,element:n.columnRefs.get(t+1)??null})):[],[n]),f=(0,t.useMemo)(()=>({mainTable:n?.mainTable??null,columns:d,focusedIndex:a,focusColumn:l,closeColumn:u}),[n,d,a,l,u]),p=(0,t.useMemo)(()=>({register:s,unregister:c}),[s,c]);return(0,r.jsx)(Qc.Provider,{value:p,children:(0,r.jsx)(Zc.Provider,{value:f,children:e})})}function el(){return(0,t.useContext)(Zc)}function tl(){return(0,t.useContext)(Qc)}function nl(e,t){return e.tableName===t.tableName&&e.filterTable===t.filterTable&&e.filterId===t.filterId&&e.filterColumn===t.filterColumn}function rl(e,t){let n=e[e.length-1];if(n&&nl(n,t))return e;let r=e.findIndex(e=>nl(e,t));return r>=0?e.slice(0,r+1):[...e,t]}function il(e,t){return t<0?[]:t>=e.length?e:e.slice(0,t)}function al(e,t,n){let r=e=>n(e)??e,i=[{index:-1,label:r(e)}];for(let n=0;n<t.length;n++){let a=t[n],o=a.filterTable?r(a.filterTable):r(n===0?e:t[n-1].tableName),s=a.filterId?`from ${o} #${a.filterId}`:void 0;i.push({index:n,label:r(a.tableName),detail:s,frame:a})}return i}var ol=`edit-db:panel:`,sl=16;function cl(e,t,n){return Math.min(n,Math.max(t,e))}function ll(e,t,n,r){try{let i=localStorage.getItem(ol+e),a=i===null?NaN:Number(i);return Number.isFinite(a)?cl(a,n,r):t}catch{return t}}function ul(e,t){try{localStorage.setItem(ol+e,String(Math.round(t)))}catch{}}function dl({key:e,initial:n,min:r,max:i,axis:a,invert:o=!1}){let[s,c]=(0,t.useState)(()=>ll(e,n,r,i)),l=(0,t.useRef)(null),u=(0,t.useCallback)(t=>{let n=cl(t,r,i);return c(n),ul(e,n),n},[e,r,i]);return{size:s,onPointerDown:(0,t.useCallback)(e=>{if(e.button!==0)return;e.preventDefault();let t=e.currentTarget;t.setPointerCapture(e.pointerId),l.current={start:a===`x`?e.clientX:e.clientY,startSize:s};let n=e=>{if(!l.current)return;let t=((a===`x`?e.clientX:e.clientY)-l.current.start)*(o?-1:1);u(l.current.startSize+t)},r=e=>{l.current=null;try{t.releasePointerCapture(e.pointerId)}catch{}t.removeEventListener(`pointermove`,n),t.removeEventListener(`pointerup`,r),t.removeEventListener(`pointercancel`,r)};t.addEventListener(`pointermove`,n),t.addEventListener(`pointerup`,r),t.addEventListener(`pointercancel`,r)},[u,a,o,s]),onKeyDown:(0,t.useCallback)(e=>{let t=a===`x`?`ArrowRight`:`ArrowDown`,n=a===`x`?`ArrowLeft`:`ArrowUp`;if(e.key!==t&&e.key!==n)return;e.preventDefault();let r=(e.key===t?1:-1)*(o?-1:1);u(s+r*sl)},[u,a,o,s])}}function fl(e,t){return e.find(e=>e.name===t)}function pl(){let{table:e,id:n,filterTable:a}=k(),{loading:o,error:s,data:c}=U(),[l,u]=(0,t.useState)(null),d=dl({key:`detail-height`,initial:300,min:120,max:800,axis:`y`,invert:!0}),[f,p]=(0,t.useState)([]),[m,h]=(0,t.useState)(!0),[g,_]=(0,t.useState)(new Set),v=(0,t.useRef)(e);e!==v.current&&(v.current=e,f.length>0&&p([]),g.size>0&&_(new Set));let y=(0,t.useCallback)(e=>{_(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),{register:b,unregister:x}=tl(),S=(0,t.useRef)(null),C=(0,t.useRef)(new Map),w=(0,t.useMemo)(()=>c?fl(c,e):void 0,[c,e]),T=w?Ic(w).length>0:!1,E=(0,t.useCallback)(e=>{p(t=>rl(t,e))},[]),D=(0,t.useCallback)(e=>{h(e),e||p([])},[]),O=m?E:void 0,A=(0,t.useCallback)(e=>{p(t=>t.filter((t,n)=>n!==e))},[]),j=(0,t.useCallback)(e=>{p(t=>il(t,e+1))},[]),M=(0,t.useMemo)(()=>al(e??``,f,e=>{if(c)return fl(c,e)?.label}),[e,f,c]);if((0,t.useEffect)(()=>{let t=C.current;t.set(0,S.current);for(let e of t.keys())e>f.length&&t.delete(e);return b({mainTable:e,columns:f,columnRefs:t,onClose:A}),()=>x()},[e,f,b,x,A]),!e)return(0,r.jsx)(`div`,{className:`p-5 text-center text-muted-foreground`,children:`Table missing`});if(o)return(0,r.jsxs)(`div`,{className:`flex items-center justify-center gap-2 p-5`,children:[(0,r.jsx)(i.Loader2,{className:`size-4 animate-spin text-muted-foreground`}),(0,r.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`Loading...`})]});if(s)return(0,r.jsx)(Xt,{variant:`destructive`,className:`m-2`,children:(0,r.jsxs)(Qt,{children:[`Error: `,s.message]})});if(!w)return(0,r.jsx)(`div`,{className:`p-5 text-center text-muted-foreground`,children:`Table not found`});let N=(0,r.jsx)(Pc,{table:w,id:n,filterTable:a,selectedRowId:T?l:void 0,onRowSelect:T?u:void 0,onOpenColumn:O,stackingEnabled:m,onToggleStacking:D});if(f.length===0)return(0,r.jsx)(`div`,{className:`flex flex-col flex-1 min-h-0`,children:(0,r.jsxs)(`div`,{ref:S,className:`flex flex-col flex-1 min-h-0 min-w-0`,children:[(0,r.jsx)(`div`,{className:`flex-1 min-h-0 overflow-hidden flex flex-col`,children:N}),T&&l&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`div`,{role:`separator`,"aria-orientation":`horizontal`,"aria-label":`Resize detail panel`,tabIndex:0,"data-testid":`detail-resize-handle`,className:`h-1.5 shrink-0 cursor-row-resize select-none touch-none hover:bg-primary/40 focus-visible:bg-primary/60 focus-visible:outline-none`,onPointerDown:d.onPointerDown,onKeyDown:d.onKeyDown}),(0,r.jsx)(`div`,{className:`min-h-0 overflow-y-auto flex flex-col`,style:{flex:`0 0 ${d.size}px`},children:(0,r.jsx)(Xc,{parentTable:w,selectedRowId:l,onClose:()=>u(null),onOpenColumn:O})})]})]})});let ee=f.length-1,te=(e,t)=>t||g.has(e);return(0,r.jsxs)(`div`,{className:`flex flex-col flex-1 min-h-0`,children:[(0,r.jsx)(ml,{crumbs:M,onCrumbClick:j,activeIndex:f.length-1}),(0,r.jsxs)(`div`,{className:`flex-1 min-h-0 overflow-y-auto flex flex-col gap-0.5 p-0.5`,children:[(0,r.jsx)(hl,{title:w.label,selectedRowId:f[0]?.filterId,expanded:te(-1,!1),active:!1,onToggle:()=>y(-1),onRef:e=>{S.current=e,C.current.set(0,e)},children:N}),f.map((e,t)=>{let n=t===ee;return(0,r.jsx)(hl,{title:fl(c,e.tableName)?.label??e.tableName,selectedRowId:f[t+1]?.filterId,expanded:te(t,n),active:n,onToggle:()=>y(t),onClose:()=>A(t),onRef:e=>{C.current.set(t+1,e)},children:(0,r.jsx)(Pc,{table:fl(c,e.tableName),id:e.filterId,filterTable:e.filterTable,filterColumn:e.filterColumn,onOpenColumn:E})},`${e.tableName}|${e.filterTable??``}|${e.filterId??``}|${e.filterColumn??``}`)})]})]})}function ml({crumbs:e,onCrumbClick:t,activeIndex:n}){return(0,r.jsx)(`nav`,{"aria-label":`Drill-down breadcrumb`,className:`flex items-center gap-1 px-2 py-1 bg-muted/20 border-b border-border shrink-0 overflow-x-auto`,children:e.map((e,a)=>{let o=e.index===n,s=a===0;return(0,r.jsxs)(`span`,{className:`inline-flex items-center gap-1 shrink-0`,children:[!s&&(0,r.jsx)(i.ChevronRight,{className:`size-3 text-muted-foreground shrink-0`}),(0,r.jsxs)(Z,{variant:o?`secondary`:`ghost`,size:`sm`,className:Y(`h-6 px-2 text-xs gap-1`,o&&`font-semibold`),onClick:()=>t(e.index),"aria-current":o?`page`:void 0,title:e.detail?`${e.label} (${e.detail})`:e.label,children:[s&&(0,r.jsx)(i.Home,{className:`size-3`}),(0,r.jsx)(`span`,{className:`truncate max-w-[12rem]`,children:e.label}),e.detail&&(0,r.jsx)(`span`,{className:`text-muted-foreground font-normal truncate max-w-[10rem]`,children:e.detail})]})]},`${e.index}-${e.label}`)})})}function hl({title:e,selectedRowId:t,expanded:n,active:a,onToggle:o,onClose:s,onRef:c,children:l}){return(0,r.jsxs)(`div`,{ref:c,className:`shrink-0 flex flex-col border border-border rounded-sm overflow-hidden`,children:[(0,r.jsxs)(`div`,{className:`flex items-center gap-1 px-2 py-1 bg-muted/30 border-b border-border shrink-0`,children:[(0,r.jsx)(`button`,{type:`button`,onClick:o,className:`inline-flex items-center justify-center size-5 shrink-0 text-muted-foreground hover:text-foreground`,"aria-expanded":n,"aria-label":n?`Collapse table`:`Expand table`,title:n?`Collapse`:`Expand`,children:n?(0,r.jsx)(i.ChevronDown,{className:`size-3.5`}):(0,r.jsx)(i.ChevronRight,{className:`size-3.5`})}),(0,r.jsx)(`span`,{className:`text-xs font-medium truncate`,children:e}),a&&(0,r.jsx)(`span`,{className:`text-[10px] uppercase tracking-wide text-primary/70 shrink-0`,children:`active`}),!n&&t&&(0,r.jsxs)(`span`,{className:`text-xs text-muted-foreground truncate`,children:[`#`,t]}),(0,r.jsx)(`div`,{className:`flex-1`}),s&&(0,r.jsx)(Z,{variant:`ghost`,size:`icon-sm`,className:`shrink-0`,onClick:s,"aria-label":`Close column`,title:`Close column`,children:(0,r.jsx)(i.X,{className:`size-3.5`})})]}),n&&(0,r.jsx)(`div`,{className:`flex flex-col min-h-[18rem] max-h-[34rem]`,children:l})]})}function gl(){let e=k(),{loading:n,error:a,data:o}=U(),{columns:s,focusedIndex:c,focusColumn:l,closeColumn:u}=el(),[d,f]=(0,t.useState)(``),p=D(),{search:m}=A(),h=!!m.get(`filter`),{back:g,hasBack:_}=O(),v=e?.table,y=s.length>0,b=(0,t.useMemo)(()=>o?.find(e=>e.graphQlName===v),[o,v]),x=(0,t.useMemo)(()=>b?.columns?.filter(e=>bn(e.paramType)||_n(e.paramType)).map(e=>({key:e.name,value:`${e.name},${e.paramType}`,label:e.label})),[b]),[S,C]=(0,t.useState)(x?.at(0)?.value??``);(0,t.useEffect)(()=>{f(``),C(x?.at(0)?.value??``)},[x]);let w=()=>{if(!d)return;let[e,t]=S.split(`,`);if(!t)return;let n=t.replace(`!`,``);if(_n(n)){let r=xn(d,n);if(r===null)return;p(`?filter=["${e}", "_eq", ${JSON.stringify(r)}, "${t}"]`)}else n===`String`&&p(`?filter=["${e}", "_contains", ${JSON.stringify(d)}, "${t}"]`)};return n?(0,r.jsxs)(`div`,{className:`flex items-center gap-2 p-2.5`,children:[(0,r.jsx)(i.Loader2,{className:`size-4 animate-spin text-muted-foreground`}),(0,r.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`Loading...`})]}):a?(0,r.jsx)(Xt,{variant:`destructive`,className:`m-2`,children:(0,r.jsxs)(Qt,{children:[`Error: `,a.message]})}):(0,r.jsxs)(`header`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1.5 px-3 py-1.5 min-h-[2.5rem]`,children:[(0,r.jsxs)(`div`,{className:`flex items-center gap-1.5 overflow-x-auto min-w-0 flex-1`,children:[(0,r.jsx)(Z,{variant:`ghost`,size:`icon-sm`,onClick:()=>_&&g(),disabled:!_,"aria-label":`Go back`,title:`Go back`,className:`shrink-0`,children:(0,r.jsx)(i.ChevronLeft,{className:`size-4`})}),y?(0,r.jsxs)(`div`,{className:`flex items-center gap-1 overflow-x-auto`,children:[(0,r.jsx)(`button`,{type:`button`,onClick:()=>l(0),className:`flex items-center gap-1 px-2 py-0.5 rounded text-xs font-medium whitespace-nowrap transition-colors ${c===0?`bg-primary text-primary-foreground`:`bg-muted/50 text-muted-foreground hover:bg-muted`}`,children:b?.label??ce(e?.table??``)}),s.map((e,t)=>{let n=o?.find(t=>t.graphQlName===e.panel.tableName)?.label??ce(e.panel.tableName);return(0,r.jsxs)(`span`,{className:`inline-flex items-center gap-1 pl-2 pr-1 py-0.5 rounded text-xs font-medium whitespace-nowrap transition-colors ${c===t+1?`bg-primary text-primary-foreground`:`bg-muted/50 text-muted-foreground hover:bg-muted`}`,children:[(0,r.jsx)(`button`,{type:`button`,onClick:()=>l(t+1),className:`whitespace-nowrap`,children:n}),(0,r.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),u(t+1)},className:`rounded-sm hover:bg-background/50 p-px`,"aria-label":`Close ${n}`,children:(0,r.jsx)(i.X,{className:`size-3`})})]},`${e.panel.tableName}-${e.panel.filterId??t}`)})]}):(0,r.jsx)(`h2`,{className:`text-sm font-semibold whitespace-nowrap`,children:b?.label??e?.table??`(Select)`})]}),x&&x.length>0&&(0,r.jsxs)(`div`,{className:`flex items-center border border-border rounded-md overflow-hidden flex-[2_2_16rem] min-w-[12rem]`,children:[(0,r.jsxs)(qi,{value:S,onValueChange:C,children:[(0,r.jsx)(Yi,{size:`sm`,className:`w-auto min-w-[120px] shrink-0 border-0 rounded-none border-r border-border h-8 text-xs`,children:(0,r.jsx)(Ji,{})}),(0,r.jsx)(Xi,{children:x.map(e=>(0,r.jsx)(Q,{value:e.value,children:e.label},e.key))})]}),(0,r.jsxs)(`div`,{className:`relative flex-1 min-w-[180px]`,children:[(0,r.jsx)(i.Search,{className:`absolute left-3 top-1/2 -translate-y-1/2 size-3.5 text-muted-foreground pointer-events-none`}),(0,r.jsx)($t,{type:`search`,value:d,onChange:e=>f(e.target.value),onKeyDown:e=>e.key===`Enter`&&w(),className:`h-8 border-0 rounded-none focus-visible:ring-0 focus-visible:ring-offset-0`,style:{paddingLeft:`2.25rem`},placeholder:`Search...`})]}),(0,r.jsxs)(Z,{variant:`ghost`,size:`sm`,onClick:w,className:`shrink-0 rounded-none border-l border-border h-8 px-3 text-xs`,children:[(0,r.jsx)(i.Filter,{className:`size-3.5`}),`Filter`]}),h&&(0,r.jsx)(Z,{variant:`ghost`,size:`sm`,onClick:()=>{f(``);let e=new URLSearchParams(m.toString());e.delete(`filter`);let t=e.toString();p(t?`?${t}`:`?`)},title:`Clear filter`,"aria-label":`Clear filter`,className:`shrink-0 rounded-none border-l border-border h-8 px-2 text-xs text-muted-foreground`,children:(0,r.jsx)(i.X,{className:`size-3.5`})})]}),b&&(0,r.jsxs)(`div`,{className:`flex items-center gap-px border border-border rounded-md overflow-hidden shrink-0`,children:[(0,r.jsxs)(Z,{variant:`ghost`,size:`sm`,onClick:()=>p(`/`),title:`Back to table list`,className:`text-muted-foreground text-xs h-8 px-3 rounded-none`,children:[(0,r.jsx)(i.Home,{className:`size-3.5`}),`Home`]}),b?.isEditable&&(0,r.jsxs)(Z,{variant:`default`,size:`sm`,onClick:()=>p(`edit/`),className:`h-8 text-xs px-4 rounded-none`,children:[(0,r.jsx)(i.Plus,{className:`size-3.5`}),`Add`]})]})]})}var _l=class extends t.Component{constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){let{onError:n,section:r}=this.props;console.error(`Error in ${r??`component`}:`,e,t),n?.(e,t)}handleRetry=()=>{this.setState({hasError:!1,error:null})};render(){let{hasError:e,error:t}=this.state,{children:n,fallback:a,section:o}=this.props;return e?a||(0,r.jsx)(`div`,{className:`flex items-center justify-center p-5 min-h-[100px]`,children:(0,r.jsxs)(Xt,{variant:`destructive`,className:`max-w-[400px]`,children:[(0,r.jsx)(i.AlertCircle,{className:`size-4`}),(0,r.jsxs)(Zt,{children:[`Something went wrong`,o?` in ${o}`:``]}),(0,r.jsxs)(Qt,{className:`mt-2`,children:[(0,r.jsx)(`p`,{children:t?.message??`An unexpected error occurred`}),(0,r.jsx)(Z,{variant:`destructive`,size:`sm`,className:`mt-3`,onClick:this.handleRetry,children:`Try Again`})]})]})}):n}};function vl(){let{loading:e,error:t,data:n}=U();return e?(0,r.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-muted-foreground`,children:[(0,r.jsx)(i.Database,{className:`size-10 animate-pulse`}),(0,r.jsx)(`p`,{className:`text-sm`,children:`Loading schema...`})]}):t?(0,r.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-4 max-w-md mx-auto text-center`,children:[(0,r.jsx)(i.Database,{className:`size-12 text-destructive`}),(0,r.jsxs)(`div`,{children:[(0,r.jsx)(`h2`,{className:`text-lg font-semibold text-foreground`,children:`Connection Error`}),(0,r.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:t.message})]})]}):n.length===0?(0,r.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-4 max-w-md mx-auto text-center`,children:[(0,r.jsx)(i.Database,{className:`size-12 text-muted-foreground/50`}),(0,r.jsxs)(`div`,{children:[(0,r.jsx)(`h2`,{className:`text-lg font-semibold text-foreground`,children:`No Tables Found`}),(0,r.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`This database doesn't contain any tables. It may be a new or empty database.`}),(0,r.jsx)(`p`,{className:`mt-3 text-xs text-muted-foreground/70`,children:`Create tables in your database and reconnect, or try a different connection.`})]})]}):(0,r.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-6 max-w-lg mx-auto text-center`,children:[(0,r.jsxs)(`div`,{className:`flex items-center gap-3 text-muted-foreground/50`,children:[(0,r.jsx)(i.Table2,{className:`size-10`}),(0,r.jsx)(i.MousePointerClick,{className:`size-6`})]}),(0,r.jsxs)(`div`,{children:[(0,r.jsx)(`h2`,{className:`text-lg font-semibold text-foreground`,children:`Select a Table`}),(0,r.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`Choose a table from the sidebar to browse and edit its data.`})]}),(0,r.jsxs)(`div`,{className:`text-xs text-muted-foreground/60 border border-border rounded-md px-4 py-3 bg-muted/30`,children:[(0,r.jsxs)(`p`,{className:`font-medium text-muted-foreground mb-1`,children:[n.length,` table`,n.length===1?``:`s`,` available`]}),(0,r.jsxs)(`p`,{className:`leading-relaxed`,children:[n.slice(0,8).map(e=>e.label).join(`, `),n.length>8?`, and ${n.length-8} more`:``]})]})]})}function yl({children:e}){let{loading:t,error:n}=U();return t?(0,r.jsxs)(`div`,{className:`flex items-center justify-center flex-1 gap-3 text-muted-foreground`,children:[(0,r.jsx)(i.Loader2,{className:`size-6 animate-spin`}),(0,r.jsx)(`span`,{className:`text-sm`,children:`Connecting to database...`})]}):n?(0,r.jsx)(`div`,{className:`flex items-center justify-center flex-1`,children:(0,r.jsxs)(Xt,{variant:`destructive`,className:`max-w-lg`,children:[(0,r.jsx)(i.AlertCircle,{className:`size-4`}),(0,r.jsx)(Zt,{children:`Database Connection Error`}),(0,r.jsxs)(Qt,{className:`mt-2`,children:[(0,r.jsx)(`p`,{className:`text-sm`,children:n.message}),(0,r.jsx)(`p`,{className:`text-xs text-muted-foreground mt-2`,children:`Check your connection string and ensure the database server is running.`})]})]})}):(0,r.jsx)(r.Fragment,{children:e})}function bl(){let[e,n]=(0,t.useState)(!0),a=dl({key:`sidebar-width`,initial:240,min:150,max:560,axis:`x`});return(0,r.jsx)(yl,{children:(0,r.jsx)($c,{children:(0,r.jsxs)(`div`,{className:`grid h-full flex-1 min-h-0 grid-rows-[auto_1fr]`,style:{gridTemplateColumns:e?`${a.size}px 1fr`:`0px 1fr`},children:[(0,r.jsxs)(`div`,{className:`col-span-full sticky top-0 z-50 bg-background border-b border-border flex items-center`,children:[(0,r.jsx)(Z,{variant:`ghost`,size:`icon`,className:`md:hidden ml-1 shrink-0`,onClick:()=>n(!e),"aria-label":`Toggle sidebar`,title:`Toggle sidebar`,children:(0,r.jsx)(i.PanelLeft,{className:`size-5`})}),(0,r.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,r.jsx)(_l,{section:`Header`,children:(0,r.jsxs)(N,{children:[(0,r.jsx)(P,{path:`/:table/*`,element:(0,r.jsx)(gl,{})}),(0,r.jsx)(P,{path:`/:table`,element:(0,r.jsx)(gl,{})}),(0,r.jsx)(P,{path:`/`,element:(0,r.jsx)(gl,{})})]})})})]}),(0,r.jsxs)(`nav`,{"aria-label":`Tables`,className:`relative border-r border-border overflow-hidden min-h-0 ${e?``:`hidden`} md:block`,children:[(0,r.jsx)(_l,{section:`Table List`,children:(0,r.jsx)(Hi,{})}),(0,r.jsx)(`div`,{role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize table list`,tabIndex:0,"data-testid":`sidebar-resize-handle`,className:`absolute inset-y-0 right-0 w-1.5 cursor-col-resize select-none touch-none hover:bg-primary/40 focus-visible:bg-primary/60 focus-visible:outline-none`,onPointerDown:a.onPointerDown,onKeyDown:a.onKeyDown})]}),(0,r.jsxs)(`main`,{className:`flex flex-col overflow-hidden min-h-0 px-1 py-0.5`,children:[(0,r.jsx)(_l,{section:`Data Panel`,children:(0,r.jsxs)(N,{children:[(0,r.jsx)(P,{path:`/:table/from/:filterTable/:id/edit/:editId`,element:(0,r.jsx)(pl,{})}),(0,r.jsx)(P,{path:`/:table/from/:filterTable/:id`,element:(0,r.jsx)(pl,{})}),(0,r.jsx)(P,{path:`/:table/:id/edit/:editId`,element:(0,r.jsx)(pl,{})}),(0,r.jsx)(P,{path:`/:table/:id`,element:(0,r.jsx)(pl,{})}),(0,r.jsx)(P,{path:`/:table/edit/:editId`,element:(0,r.jsx)(pl,{})}),(0,r.jsx)(P,{path:`/:table/edit`,element:(0,r.jsx)(pl,{})}),(0,r.jsx)(P,{path:`/:table`,element:(0,r.jsx)(pl,{})}),(0,r.jsx)(P,{path:`/`,element:(0,r.jsx)(vl,{})})]})}),(0,r.jsx)(_l,{section:`Data Edit`,children:(0,r.jsxs)(N,{children:[(0,r.jsx)(P,{path:`/:table/from/:filterTable/:id/edit/:editId`,element:(0,r.jsx)(Es,{})}),(0,r.jsx)(P,{path:`/:table/:id/edit/:editId`,element:(0,r.jsx)(Es,{})}),(0,r.jsx)(P,{path:`/:table/edit/:editId`,element:(0,r.jsx)(Es,{})}),(0,r.jsx)(P,{path:`/:table/edit`,element:(0,r.jsx)(Es,{})})]})})]})]})})})}function xl({onLocate:e}){let n=E();return(0,t.useEffect)(()=>{e?.(n)},[n,e]),(0,r.jsx)(bl,{})}function Sl({uri:e,fetcher:i,uiPath:a,onLocate:o,showStats:s=!1,tables:c,defaultColumns:l,trailingColumns:u,tableActions:d,saveFile:f}){let p=(0,t.useMemo)(()=>i||(e?new ae(e):null),[e,i]),m=(0,t.useMemo)(()=>({showStats:s,tables:c,defaultColumns:l,trailingColumns:u,tableActions:d,saveFile:f}),[s,c,l,u,d,f]),h=(0,t.useMemo)(()=>new n.QueryClient({defaultOptions:{queries:{staleTime:3e5,retry:1}}}),[]);if(!p)throw Error("Editor requires either a `fetcher` (GraphQLFetcher) or a `uri` prop to reach the GraphQL endpoint; neither was provided.");return(0,r.jsx)(n.QueryClientProvider,{client:h,children:(0,r.jsx)(B,{value:p,children:(0,r.jsx)(ue,{config:m,children:(0,r.jsx)(ji,{children:(0,r.jsx)(j,{path:a||`/`,children:(0,r.jsx)(pe,{children:(0,r.jsx)(xl,{onLocate:o})})})})})})})}var Cl=[`query`,`form`,`report`,`dashboard`],wl=class extends Error{constructor(e){super(e),this.name=`SavedObjectConflictError`}},Tl=`/_saved-objects`;function El(e=``){let t=`${e}${Tl}`,n=encodeURIComponent;async function r(e){try{return(await e.json())?.error??`${e.status} ${e.statusText}`}catch{return`${e.status} ${e.statusText}`}}return{async list(e,i,a){let o=e?`${t}/${n(e)}`:t,s=await fetch(o,{signal:i});if(!s.ok)throw Error(`Failed to list saved objects: ${await r(s)}`);let c=await s.json();if(!Array.isArray(c))throw Error(`Failed to list saved objects: the server did not return a list.`);let l=c.map(Dl),u=l.filter(e=>e!==null);return u.length!==l.length&&a?.(l.length-u.length),u},async get(e,i,a){let o=await fetch(`${t}/${n(e)}/${n(i)}`,{signal:a});if(o.status===404)return null;if(!o.ok)throw Error(`Failed to load saved object: ${await r(o)}`);return Dl(await o.json())},async put(e,i){let a=await fetch(`${t}/${n(e.type)}/${n(e.id)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e),signal:i});if(a.status===409)throw new wl(await r(a));if(!a.ok)throw Error(`Failed to save object: ${await r(a)}`);let o=Dl(await a.json());if(o===null)throw Error(`Server returned a malformed saved object.`);return o},async remove(e,i,a){let o=await fetch(`${t}/${n(e)}/${n(i)}`,{method:`DELETE`,signal:a});if(!o.ok&&o.status!==404)throw Error(`Failed to delete saved object: ${await r(o)}`)}}}function Dl(e){if(typeof e!=`object`||!e)return null;let t=e;return typeof t.id!=`string`||t.id.length===0||typeof t.type!=`string`||!Cl.includes(t.type)||typeof t.name!=`string`||typeof t.version!=`number`||!(`definition`in t)?null:{id:t.id,type:t.type,name:t.name,folder:typeof t.folder==`string`?t.folder:void 0,definition:t.definition,version:t.version}}var Ol=4,kl=new Set([`text`,`textarea`,`number`,`checkbox`,`date`,`datetime`,`select`]);function Al(e){return typeof e==`string`&&kl.has(e)?e:`text`}function jl(e){return typeof e!=`number`||!Number.isFinite(e)?1:Math.min(Ol,Math.max(1,Math.trunc(e)))}function Ml(e){if(typeof e!=`object`||!e)return null;let t=e;return typeof t.column!=`string`||t.column===``?null:{column:t.column,label:typeof t.label==`string`?t.label:t.column,control:Al(t.control),readOnly:t.readOnly===!0,required:t.required===!0,include:t.include!==!1}}function Nl(e){if(typeof e!=`object`||!e)return null;let t=e;return typeof t.relationship!=`string`||typeof t.childTable!=`string`||!Array.isArray(t.parentColumns)||!Array.isArray(t.childColumns)||!t.parentColumns.every(e=>typeof e==`string`)||!t.childColumns.every(e=>typeof e==`string`)||t.parentColumns.length===0||t.parentColumns.length!==t.childColumns.length?null:{relationship:t.relationship,childTable:t.childTable,parentColumns:t.parentColumns,childColumns:t.childColumns,label:typeof t.label==`string`?t.label:t.childTable,mode:t.mode===`stacked`?`stacked`:`grid`}}function Pl(e){if(typeof e!=`object`||!e)return null;let t=e;if(typeof t.table!=`string`||t.table===``||!Array.isArray(t.fields))return null;let n=t.fields.map(Ml).filter(e=>e!==null);return n.length===0?null:{table:t.table,title:typeof t.title==`string`?t.title:t.table,columns:jl(t.columns),fields:n,subforms:Array.isArray(t.subforms)?t.subforms.map(Nl).filter(e=>e!==null):void 0}}function Fl(e){return e.fields.filter(e=>e.include)}var Il=new Set([`text`,`textarea`,`number`,`checkbox`,`date`,`datetime`,`select`]);function Ll(e){return e!==void 0&&Il.has(e)?e:void 0}function Rl(e,t){return{control:Ll(t?.widget)??e.control,readOnly:e.readOnly||t?.readOnly===!0,visible:e.include&&t?.visible!==!1}}function zl(e){switch(e){case`textarea`:return{kind:`textarea`};case`checkbox`:return{kind:`checkbox`};case`select`:return{kind:`select`};case`number`:return{kind:`input`,type:`number`};case`date`:return{kind:`input`,type:`date`};case`datetime`:return{kind:`input`,type:`datetime-local`};default:return{kind:`input`,type:`text`}}}function Bl(e,t,n){let r=Math.max(0,t-1);switch(n){case`first`:return 0;case`last`:return r;case`prev`:return Math.max(0,Math.min(r,e-1));case`next`:return Math.max(0,Math.min(r,e+1))}}function Vl(e,t,n){return Bl(e,t,n)!==e}function Hl(e,t){return t<=0?`0 of 0`:`${e+1} of ${t}`}function Ul(e,t,n){return n.sourceColumnNames.length>0&&n.sourceColumnNames.length===n.destinationColumnNames.length&&n.sourceColumnNames.every(t=>e.columns.some(e=>e.name===t))&&n.destinationColumnNames.every(e=>t.columns.some(t=>t.name===e))}function Wl(e,t,n,r){if(!r||!Ul(e,t,n))return null;let i=[],a=[],o={};for(let e=0;e<n.sourceColumnNames.length;e++){let s=n.sourceColumnNames[e],c=n.destinationColumnNames[e],l=r[s];if(l==null)return null;let u=t.columns.find(e=>e.name===c)?.paramType.replace(`!`,``)??`String`,d=`parent_${s}`;i.push(`$${d}: ${u}`),a.push(`{${c}: {_eq: $${d}}}`),o[d]=Sn(l,u)}return{params:i,filter:a.length===1?a[0]:`{and: [${a.join(`, `)}]}`,variables:o}}function Gl(e,t){return!t||e.sourceColumnNames.length!==e.destinationColumnNames.length?{}:Object.fromEntries(e.destinationColumnNames.map((n,r)=>[n,t[e.sourceColumnNames[r]]]))}function Kl(e){return{table:e.name,title:e.label,columns:1,fields:e.columns.map(e=>({column:e.name,label:e.label,control:e.paramType.startsWith(`Boolean`)?`checkbox`:e.paramType.startsWith(`Int`)||e.paramType.startsWith(`Float`)||e.paramType.startsWith(`Decimal`)?`number`:`text`,readOnly:e.isReadOnly||e.isIdentity,required:!e.isNullable,include:!0}))}}function ql({parent:e,child:i,subform:a,row:o}){let s=V(),c=(0,n.useQueryClient)(),l=mo(i),[u,d]=(0,t.useState)(null),f=(0,t.useMemo)(()=>({name:a.relationship,fieldName:a.relationship,sourceColumnNames:a.parentColumns,destinationTable:i.name,destinationColumnNames:a.childColumns}),[a,i.name]),p=(0,t.useMemo)(()=>Wl(e,i,f,o),[e,i,f,o]),m=(0,t.useMemo)(()=>i.columns.map(e=>(X(e.name,`form subform field`),e.name)),[i]),h=(0,t.useMemo)(()=>p?(X(i.name,`form subform table`),`query FormSubform_${i.name}(${p.params.join(`, `)}) { ${i.name}(filter: ${p.filter}) { data { ${m.join(` `)} } } }`):null,[i.name,m,p]),g=[`formSubform`,e.name,i.name,Mn(o,e,0)],{data:_,isLoading:v,error:y}=(0,n.useQuery)({queryKey:g,queryFn:()=>s.query(h,p.variables),enabled:!!h}),b=(0,t.useMemo)(()=>Kl(i),[i]),x=(0,t.useMemo)(()=>Gl(f,o),[f,o]);if(!p)return(0,r.jsx)(`p`,{style:Jl.notice,children:`Related records unavailable: this relationship is incomplete.`});if(v)return(0,r.jsxs)(`p`,{style:Jl.notice,children:[`Loading `,a.label,`…`]});if(y)return(0,r.jsxs)(`p`,{role:`alert`,style:Jl.error,children:[`Failed to load `,a.label,`: `,y.message]});let S=_?.[i.name]?.data??[],C=async e=>{let t=Nn(e,i);t&&(await l.deleteRow(t),await c.invalidateQueries({queryKey:g}))},w=async()=>{d(null),await c.invalidateQueries({queryKey:g})};return(0,r.jsxs)(`section`,{style:Jl.root,"aria-label":a.label,children:[(0,r.jsx)(`h3`,{style:Jl.title,children:a.label}),(0,r.jsxs)(`button`,{type:`button`,onClick:()=>d({kind:`create`}),children:[`Add `,a.label]}),u?(0,r.jsx)(`div`,{style:Jl.childForm,children:(0,r.jsx)(ru,{table:i,definition:b,hiddenFields:a.childColumns,initialValues:u.kind===`create`?x:void 0,startInNewMode:u.kind===`create`,initialPkRoute:u.kind===`edit`?Mn(u.row,i,u.index??0):void 0,onClose:()=>{w()}},u.kind===`create`?`create`:Mn(u.row,i,u.index??0))}):S.length===0?(0,r.jsx)(`p`,{style:Jl.notice,children:`No related records.`}):a.mode===`grid`?(0,r.jsxs)(`table`,{style:Jl.table,children:[(0,r.jsx)(`thead`,{children:(0,r.jsxs)(`tr`,{children:[i.columns.map(e=>(0,r.jsx)(`th`,{style:Jl.cell,children:e.label},e.name)),(0,r.jsx)(`th`,{})]})}),(0,r.jsx)(`tbody`,{children:S.map((e,t)=>(0,r.jsxs)(`tr`,{children:[i.columns.map(t=>(0,r.jsx)(`td`,{style:Jl.cell,children:String(e[t.name]??``)},t.name)),(0,r.jsxs)(`td`,{children:[(0,r.jsx)(`button`,{type:`button`,onClick:()=>d({kind:`edit`,row:e,index:t}),children:`Edit`}),(0,r.jsx)(`button`,{type:`button`,onClick:()=>C(e),disabled:l.isPending,children:`Delete`})]})]},Mn(e,i,t)))})]}):(0,r.jsx)(`div`,{children:S.map((e,t)=>(0,r.jsxs)(`article`,{style:Jl.card,children:[i.columns.map(t=>(0,r.jsxs)(`div`,{children:[(0,r.jsxs)(`strong`,{children:[t.label,`: `]}),String(e[t.name]??``)]},t.name)),(0,r.jsx)(`button`,{type:`button`,onClick:()=>d({kind:`edit`,row:e,index:t}),children:`Edit`}),(0,r.jsx)(`button`,{type:`button`,onClick:()=>C(e),disabled:l.isPending,children:`Delete`})]},Mn(e,i,t)))})]})}var Jl={root:{marginTop:20,borderTop:`1px solid #d1d5db`,paddingTop:12},title:{margin:`0 0 8px`,fontSize:15},notice:{color:`#6b7280`,fontSize:13},error:{color:`#b91c1c`,fontSize:13},table:{width:`100%`,borderCollapse:`collapse`,fontSize:13},cell:{textAlign:`left`,padding:5,borderBottom:`1px solid #e5e7eb`},card:{border:`1px solid #e5e7eb`,borderRadius:6,padding:8,marginBottom:8,fontSize:13},childForm:{minHeight:420,border:`1px solid #e5e7eb`,borderRadius:6,marginTop:8}},Yl={};function Xl(e){let t=e.lastIndexOf(`.`);return t>=0?e.slice(t+1):e}function Zl(e,t){let n=e.findTable(t);if(n)return n;let r=Xl(t);return e.data.find(e=>e.graphQlName===t||e.dbName===t||e.graphQlName===r||e.dbName===r)}var Ql=`\0new`;function $l(e,t){let n=new Set;for(let t of e)n.add(t.column.name);for(let e of t.primaryKeys??[])n.add(e);return[...n]}function eu(e,t){X(e.name,`form browse table name`);for(let e of t)X(e,`form browse selection field`);return`query FormBrowse_${e.name}($limit: Int, $offset: Int) { ${e.name}(limit: $limit offset: $offset) { total data { ${t.join(` `)} } } }`}function tu(e,t,n){return e===`checkbox`?!!n:(e===`date`||e===`datetime`)&&(n==null||typeof n==`string`)?Xo(n??void 0,e===`datetime`||Jo(t)&&!1):n==null?``:String(n)}function nu(e,t){let n={fields:{},form:null},r=e?.errors;if(Array.isArray(r)){let e=[];for(let i of r){let r=i.path?.[i.path.length-1];typeof r==`string`&&t.has(r)?n.fields[r]=i.message:e.push(i.message)}return n.form=e.length>0?e.join(`; `):null,n}return n.form=e instanceof Error?e.message:String(e),n}function ru({table:e,definition:i,fieldMetadata:a,onClose:o,schema:s,initialValues:c=Yl,hiddenFields:l=[],startInNewMode:u=!1,initialPkRoute:d}){let f=V(),p=(0,n.useQueryClient)(),m=(0,t.useMemo)(()=>new Map(e.columns.map(e=>[e.name,e])),[e]),[h,g]=(0,t.useState)(d?{kind:`pk`,route:d}:{kind:`offset`,index:0}),[_,v]=(0,t.useState)(u?`new`:`browse`),[y,b]=(0,t.useState)(c),[x,S]=(0,t.useState)({}),[C,w]=(0,t.useState)(null),[T,E]=(0,t.useState)(``),[D,O]=(0,t.useState)(0),k=_===`new`,A=(0,t.useMemo)(()=>Fl(i).map(e=>{let t=m.get(e.column);if(!t)return null;let n=Rl(e,a?.[e.column]);return n.visible?{field:e,column:t,control:n.control,readOnly:n.readOnly}:null}).filter(e=>e!==null),[i,m,a]),j=(0,t.useCallback)(e=>!(e.readOnly||e.column.isReadOnly||e.column.isIdentity||e.column.isPrimaryKey&&!k),[k]),M=(0,t.useMemo)(()=>A.filter(j).map(e=>({column:e.column})),[A,j]),N=(0,t.useMemo)(()=>(e.primaryKeys??[]).map(e=>m.get(e)).filter(e=>!!e),[e,m]),ee=(0,t.useMemo)(()=>new Set(M.map(e=>e.column.name)),[M]),te=(0,t.useMemo)(()=>{let t=new Set($l(A,e));for(let e of i.subforms??[])for(let n of e.parentColumns)t.add(n);return[...t]},[A,e,i.subforms]),P=(0,t.useMemo)(()=>{if(k||A.length===0)return null;if(h.kind===`offset`)return{text:eu(e,te),variables:{limit:1,offset:h.index},kind:`offset`};let t=In(h.route,e),n=t?Pn(t,e):null;return n?{text:Dr(e,n,te),variables:n.variables,kind:`pk`}:null},[k,A.length,h,e,te]),{data:ne,isLoading:re,error:F}=(0,n.useQuery)({queryKey:[`formRunner`,e.name,h,k],queryFn:()=>f.query(P.text,P.variables),enabled:!k&&P!==null}),I=(0,t.useMemo)(()=>!ne||!P?null:P.kind===`offset`?ne[e.name]?.data?.[0]??null:ne.value?.data?.[0]??null,[ne,P,e.name]);(0,t.useEffect)(()=>{if(ne&&P?.kind===`offset`){let t=ne[e.name];t&&O(t.total)}},[ne,P,e.name]);let L=k?Ql:I?Mn(I,e,0):null,R=(0,t.useRef)(null),ie=(0,t.useRef)(!1);(0,t.useEffect)(()=>{if(R.current===L&&ie.current)return;if(R.current=L,ie.current=!1,S({}),w(null),k){b(c);return}let e={};for(let t of A)e[t.column.name]=I?.[t.column.name]??null;b(e)},[L,I,k,A,c]);let ae=h.kind===`offset`?h.index:-1,z=Fo(e,M,N,(0,t.useMemo)(()=>k||!I?``:Mn(I,e,ae<0?0:ae),[k,I,e,ae])),B=mo(e),oe=(0,t.useCallback)(e=>{v(`browse`),g(t=>({kind:`offset`,index:Bl(t.kind===`offset`?t.index:0,D,e)}))},[D]),se=(0,t.useCallback)(()=>{v(`new`)},[]),H=(0,t.useCallback)(()=>{let e=T.trim();e!==``&&(v(`browse`),g({kind:`pk`,route:e}))},[T]),ce=(0,t.useCallback)((e,t)=>{ie.current=!0,b(n=>({...n,[e]:t}))},[]),le=(0,t.useCallback)(async()=>{let t={};for(let e of A){if(!j(e))continue;let n=e.field.required||!e.column.isNullable,r=Do(e.column,y[e.column.name],n);r&&(t[e.column.name]=r)}if(Object.keys(t).length>0){S(t),w(null);return}S({}),w(null);let n={};for(let e of ee)n[e]=y[e];try{if(k){let t=(await z.insert(n))?.[e.name],r={},i=e.primaryKeys??[];for(let e of i){let n=m.get(e);r[e]=i.length===1&&n?.isIdentity?t:y[e]}v(`browse`),g({kind:`pk`,route:Fn(r,e)})}else await z.update(n),ie.current=!1,await p.invalidateQueries({queryKey:[`formRunner`,e.name]})}catch(e){let t=nu(e,ee);S(t.fields),w(t.form)}},[A,j,y,ee,k,z,e,m,p]),ue=(0,t.useCallback)(async()=>{let t=Nn(I,e);if(t)try{await B.deleteRow(t),v(`browse`),g({kind:`offset`,index:Math.max(0,(ae<0?0:ae)-1)}),await p.invalidateQueries({queryKey:[`formRunner`,e.name]})}catch(e){w(e instanceof Error?e.message:String(e))}},[I,e,B,ae,p]);if(A.length===0)return(0,r.jsx)(`div`,{style:$.notice,children:`This form has no fields that match the current schema.`});let de=h.kind===`pk`?`key ${h.route}`:Hl(ae,D),fe=!k&&h.kind===`offset`&&D===0&&!re;return(0,r.jsxs)(`div`,{style:$.root,children:[(0,r.jsxs)(`div`,{style:$.toolbar,role:`toolbar`,"aria-label":`Record navigation`,children:[(0,r.jsx)(`button`,{type:`button`,style:$.btn,onClick:()=>oe(`first`),disabled:k||!Vl(ae,D,`first`),"aria-label":`First record`,children:`⏮`}),(0,r.jsx)(`button`,{type:`button`,style:$.btn,onClick:()=>oe(`prev`),disabled:k||!Vl(ae,D,`prev`),"aria-label":`Previous record`,children:`◀`}),(0,r.jsx)(`span`,{style:$.position,"aria-label":`Record position`,children:k?`New record`:de}),(0,r.jsx)(`button`,{type:`button`,style:$.btn,onClick:()=>oe(`next`),disabled:k||!Vl(ae,D,`next`),"aria-label":`Next record`,children:`▶`}),(0,r.jsx)(`button`,{type:`button`,style:$.btn,onClick:()=>oe(`last`),disabled:k||!Vl(ae,D,`last`),"aria-label":`Last record`,children:`⏭`}),(0,r.jsx)(`span`,{style:$.spacer}),(0,r.jsx)(`input`,{style:$.jump,value:T,onChange:e=>E(e.target.value),placeholder:`Jump to key…`,"aria-label":`Jump to key`}),(0,r.jsx)(`button`,{type:`button`,style:$.btn,onClick:H,"aria-label":`Go to key`,children:`Go`}),(0,r.jsx)(`button`,{type:`button`,style:$.btn,onClick:se,"aria-label":`New record`,children:`New`}),o&&(0,r.jsx)(`button`,{type:`button`,style:$.btn,onClick:o,"aria-label":`Close form`,children:`✕`})]}),(0,r.jsxs)(`div`,{style:$.body,children:[(0,r.jsx)(`h2`,{style:$.title,children:i.title}),C&&(0,r.jsx)(`div`,{role:`alert`,style:$.formError,children:C}),F&&(0,r.jsxs)(`div`,{role:`alert`,style:$.formError,children:[`Failed to load record: `,F.message]}),fe?(0,r.jsx)(`p`,{style:$.notice,children:`No records. Use “New” to create one.`}):(0,r.jsx)(`div`,{style:{...$.grid,gridTemplateColumns:`repeat(${i.columns}, minmax(0, 1fr))`},children:A.filter(e=>!l.includes(e.column.name)).map(e=>{let t=j(e),n=y[e.column.name],i=x[e.column.name],a=e.field.required||!e.column.isNullable;return(0,r.jsxs)(`label`,{style:$.field,children:[(0,r.jsxs)(`span`,{style:$.label,children:[e.field.label,a&&(0,r.jsx)(`span`,{style:$.req,children:` *`})]}),iu(e,n,t,a,ce),i&&(0,r.jsx)(`span`,{role:`alert`,style:$.fieldError,children:i})]},e.column.name)})}),!k&&I&&s&&(i.subforms??[]).map(t=>{let n=Zl(s,t.childTable);return n?(0,r.jsx)(ql,{parent:e,child:n,subform:t,row:I},t.relationship):(0,r.jsxs)(`p`,{style:$.notice,children:[t.label,` is not available in this schema.`]},t.relationship)})]}),(0,r.jsxs)(`div`,{style:$.footer,children:[(0,r.jsx)(`button`,{type:`button`,style:$.primaryBtn,onClick:le,disabled:z.isPending||fe&&!k,children:k?`Create`:`Save`}),!k&&!fe&&(0,r.jsx)(`button`,{type:`button`,style:$.btn,onClick:ue,disabled:B.isPending,children:`Delete`})]})]})}function iu(e,t,n,i,a){let o=e.column.name,s=zl(e.control),c={id:o,"aria-label":e.field.label,disabled:!n,style:$.control};if(s.kind===`checkbox`)return(0,r.jsx)(`input`,{...c,type:`checkbox`,checked:!!tu(`checkbox`,e.column,t),onChange:e=>a(o,e.target.checked)});if(s.kind===`textarea`)return(0,r.jsx)(`textarea`,{...c,rows:3,required:i,value:String(tu(`text`,e.column,t)),onChange:e=>a(o,e.target.value)});if(s.kind===`select`){let n=e.column.enumValues??[],s=e.column.enumLabels&&e.column.enumLabels.length===n.length?e.column.enumLabels:n;return(0,r.jsxs)(`select`,{...c,value:String(tu(`text`,e.column,t)),onChange:e=>a(o,e.target.value===``?null:e.target.value),children:[!i&&(0,r.jsx)(`option`,{value:``,children:`(none)`}),n.map((e,t)=>(0,r.jsx)(`option`,{value:e,children:s[t]??e},e))]})}return(0,r.jsx)(`input`,{...c,type:s.type,required:i,value:String(tu(e.control,e.column,t)),onChange:e=>a(o,e.target.value)})}function au({definition:e,fieldMetadata:t,onClose:n}){let i=U();if(i.loading)return(0,r.jsx)(`div`,{style:$.notice,children:`Loading schema…`});if(i.error)return(0,r.jsxs)(`div`,{style:$.notice,children:[`Could not load schema: `,i.error.message]});let a=Zl(i,e.table);return a?(0,r.jsx)(ru,{table:a,definition:e,fieldMetadata:t,onClose:n,schema:i}):(0,r.jsxs)(`div`,{style:$.notice,children:[`Table “`,e.table,`” is not in the current schema.`]})}var $={root:{display:`flex`,flexDirection:`column`,height:`100%`,minHeight:0},toolbar:{display:`flex`,alignItems:`center`,gap:6,padding:`8px 12px`,borderBottom:`1px solid var(--border, #d1d5db)`,flexWrap:`wrap`},position:{fontSize:13,color:`#374151`,minWidth:80,textAlign:`center`},spacer:{flex:1},jump:{padding:`4px 6px`,border:`1px solid var(--border, #d1d5db)`,borderRadius:6,font:`inherit`,fontSize:13,width:120},body:{flex:1,minHeight:0,overflow:`auto`,padding:16},title:{margin:`0 0 16px`,fontSize:18},grid:{display:`grid`,gap:14,maxWidth:720},field:{display:`flex`,flexDirection:`column`,gap:4,minWidth:0},label:{fontSize:12,fontWeight:600,color:`#374151`},control:{padding:`6px 8px`,border:`1px solid var(--border, #d1d5db)`,borderRadius:6,font:`inherit`,fontSize:13},footer:{display:`flex`,gap:8,padding:`8px 12px`,borderTop:`1px solid var(--border, #d1d5db)`},btn:{border:`1px solid var(--border, #d1d5db)`,background:`transparent`,borderRadius:6,padding:`6px 12px`,cursor:`pointer`,font:`inherit`},primaryBtn:{border:`1px solid #2563eb`,background:`#2563eb`,color:`#fff`,borderRadius:6,padding:`6px 16px`,cursor:`pointer`,font:`inherit`},req:{color:`#dc2626`},formError:{background:`#fef2f2`,border:`1px solid #fecaca`,color:`#b91c1c`,borderRadius:6,padding:`8px 10px`,marginBottom:12,fontSize:13},fieldError:{color:`#dc2626`,fontSize:12},notice:{padding:24,color:`#6b7280`}};function ou({fetcher:e,definition:i,fieldMetadata:a,onClose:o}){let s=(0,t.useMemo)(()=>new n.QueryClient({defaultOptions:{queries:{staleTime:3e5,retry:1}}}),[]);return(0,r.jsx)(n.QueryClientProvider,{client:s,children:(0,r.jsx)(B,{value:e,children:(0,r.jsx)(ji,{children:(0,r.jsx)(pe,{children:(0,r.jsx)(au,{definition:i,fieldMetadata:a,onClose:o})})})})})}var su=Sl;e.DEFAULT_ROW_CAP=Si,e.Editor=Sl,e.FormRunner=au,e.FormRunnerHost=ou,e.FormRunnerView=ru,e.GraphQLRequestError=ie,e.HttpGraphQLFetcher=ae,e.SAVED_OBJECTS_PATH=Tl,e.SavedObjectConflictError=wl,e.UTF8_BOM=ui,e.buildCsv=hi,e.buildJson=vi,e.createSavedObjectsClient=El,e.default=su,e.deserializeColumnFilters=xr,e.downloadTextFile=Ti,e.exportAllRows=xi,e.filenameFor=wi,e.formatCsvCell=pi,e.mimeFor=Ci,e.parseFormDefinition=Pl,e.parseSavedObject=Dl,e.resolveDefinitionTable=Zl,e.serializeColumnFilters=br,e.useTableMutation=Fo,e.visibleFields=Fl});
107
+ }`},[e,r,c]),{isLoading:d,error:f,data:p}=(0,n.useQuery)({queryKey:[`editRecord`,e.name,i],queryFn:()=>a.query(u,c.variables),enabled:!!e&&!o&&c.filterText!==``}),m=p?.value?.data?.at(0),h=!o&&p!==void 0&&m===void 0,g=(0,t.useMemo)(()=>m??{},[m]);return{isLoading:d,error:f,value:g,defaultValues:(0,t.useMemo)(()=>{let e={};for(let{column:t,fkRole:n}of r){let r=Cs(t,n);if(Yo(t))e[t.name]=Zo(g[t.name],Xo(t));else if(hs.some(e=>e===t.paramType)){let n=g[t.name];e[t.name]=t.isNullable&&n==null?null:!!n}else if(Wn(t)){let n=g[t.name];e[t.name]=n==null?``:JSON.stringify(n,null,2)}else if(r){let n=g[t.name];e[t.name]=n??null}else e[t.name]=g[t.name]??``}return e},[g,r]),pkResolveFailed:l,recordNotFound:h}}function Es({table:e,schema:n,editId:a,onClose:o}){let c=a===void 0||a===``,[l,u,d]=ws(n,e),f=l.labelColumn,p=l.label,m=Io(l,u,d,a),{isLoading:h,error:g,value:_,defaultValues:v,pkResolveFailed:y,recordNotFound:b}=Ts(l,u,a),x=(0,s.useForm)({defaultValues:v,onSubmit:async({value:e})=>{let t=Qo(e,_,u.map(({column:e})=>e));await(c?m.insert:m.update)(t),o()}}),S=(0,s.useStore)(x.store,e=>e.isDirty),[C,w]=(0,t.useState)(!1),T=()=>{S?w(!0):o()};if(h&&!c)return(0,r.jsx)(es,{open:!0,onOpenChange:e=>{e||o()},children:(0,r.jsxs)(as,{showCloseButton:!1,className:`sm:max-w-2xl`,children:[(0,r.jsx)(cs,{className:`sr-only`,children:`Loading record`}),(0,r.jsx)(ls,{className:`sr-only`,children:`Loading record for editing`}),(0,r.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-10 text-sm text-muted-foreground`,children:[(0,r.jsx)(i.LoaderCircle,{className:`size-4 animate-spin`}),`Loading…`]})]})});if(g)return(0,r.jsxs)(`div`,{children:[`Error: `,g.message]});if(y||b)return(0,r.jsx)(es,{open:!0,onOpenChange:e=>{e||o()},children:(0,r.jsxs)(as,{showCloseButton:!1,className:`sm:max-w-md`,children:[(0,r.jsx)(cs,{className:`text-sm font-semibold`,children:`Cannot edit record`}),(0,r.jsxs)(ls,{className:`text-sm text-muted-foreground`,children:[y?`This record can't be opened for editing: its key (${a||`empty`}) is missing or malformed for the ${p} table.`:`No ${p} record matches the key ${a}. It may have been deleted or is no longer visible to you.`,` `,`Return to the grid and try again.`]}),(0,r.jsx)(`div`,{className:`flex justify-end`,children:(0,r.jsx)(Z,{type:`button`,size:`sm`,onClick:o,children:`Close`})})]})});let E=_?.[f]??a,D=u.filter(({column:e})=>hs.some(t=>t===e.paramType)),O=u.filter(({column:e})=>xs(e)),k=u.filter(({column:e})=>!hs.some(t=>t===e.paramType)&&!xs(e));return(0,r.jsxs)(es,{open:!0,onOpenChange:e=>{e||T()},children:[(0,r.jsxs)(as,{showCloseButton:!1,className:`sm:max-w-2xl max-h-[90vh] flex flex-col gap-0 p-0 overflow-hidden`,children:[(0,r.jsxs)(`div`,{className:`flex items-center justify-between px-5 py-3 border-b border-border bg-muted/30 shrink-0`,children:[(0,r.jsxs)(`div`,{className:`min-w-0`,children:[(0,r.jsx)(cs,{className:`text-sm font-semibold truncate`,children:c?`New ${p}`:`${p} : ${E}`}),(0,r.jsxs)(ls,{className:`sr-only`,children:[c?`Create`:`Edit`,` `,p,` record`]})]}),(0,r.jsx)(Z,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:T,"aria-label":`Close`,className:`shrink-0 -mr-1`,children:(0,r.jsx)(i.X,{className:`size-4`})})]}),m.error&&(0,r.jsxs)(`div`,{className:`flex items-center gap-2 px-5 py-2 bg-destructive/10 border-b border-destructive/20 text-destructive text-sm shrink-0`,children:[(0,r.jsx)(i.AlertCircle,{className:`size-3.5 shrink-0`}),(0,r.jsx)(`span`,{className:`truncate`,children:m.error.message})]}),(0,r.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),e.stopPropagation(),x.handleSubmit().catch(()=>{})},className:`flex flex-col flex-1 min-h-0`,children:[(0,r.jsxs)(`div`,{className:`flex-1 overflow-y-auto px-5 py-4`,children:[k.length>0&&(0,r.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-x-4 gap-y-3`,children:k.map(({column:e,join:t,fkRole:i})=>(0,r.jsx)(js,{column:e,join:t,fkRole:i,form:x,schema:n},e.name))}),D.length>0&&(0,r.jsx)(`div`,{className:k.length>0?`mt-4 pt-4 border-t border-border`:``,children:(0,r.jsx)(`div`,{className:`flex flex-wrap gap-x-6 gap-y-2`,children:D.map(({column:e})=>(0,r.jsx)(Fs,{column:e,form:x},e.name))})}),O.length>0&&(0,r.jsx)(`div`,{className:k.length>0||D.length>0?`mt-4 pt-4 border-t border-border`:``,children:(0,r.jsx)(`div`,{className:`grid gap-3`,children:O.map(({column:e})=>(0,r.jsx)(Is,{column:e,form:x},e.name))})})]}),(0,r.jsxs)(`div`,{className:`flex items-center justify-end gap-2 px-5 py-3 border-t border-border bg-muted/30 shrink-0`,children:[(0,r.jsx)(Z,{type:`button`,variant:`outline`,size:`sm`,onClick:T,children:`Cancel`}),(0,r.jsxs)(Z,{type:`submit`,size:`sm`,disabled:m.isPending,children:[m.isPending?(0,r.jsx)(i.LoaderCircle,{className:`size-3.5 animate-spin`}):(0,r.jsx)(i.Save,{className:`size-3.5`}),c?`Create`:`Save`]})]})]})]}),(0,r.jsx)(fs,{open:C,onOpenChange:w,title:`Discard unsaved changes?`,description:(0,r.jsx)(`p`,{children:`You have unsaved changes. Closing now will discard them.`}),confirmLabel:`Discard`,cancelLabel:`Keep editing`,variant:`destructive`,onConfirm:()=>{w(!1),o()}})]})}function Ds(){let{table:e,editId:t}=k(),n=D();if(!e)return(0,r.jsx)(`div`,{children:`Table missing`});let i=t?`../..`:`..`;return(0,r.jsx)(Os,{table:e,editId:t??``,onClose:()=>n(i)})}function Os({table:e,editId:t,onClose:n}){let i=W();return e?i.loading?(0,r.jsx)(`div`,{children:`Loading...`}):i.error?(0,r.jsxs)(`div`,{children:[`Error: `,i.error.message]}):i.findTable(e)?(0,r.jsx)(Es,{table:e,schema:i,editId:t,onClose:n}):(0,r.jsxs)(`div`,{className:`p-4 text-sm text-destructive`,children:[`Table not found: `,e]}):(0,r.jsx)(`div`,{children:`Table missing`})}function ks({current:e,max:t}){let n=t-e;return(0,r.jsx)(`div`,{className:`text-xs text-right mt-0.5`,"aria-live":`polite`,children:(0,r.jsxs)(`span`,{className:n<=0?`text-destructive font-medium`:n<=10&&n>0?`text-amber-500`:`text-muted-foreground`,children:[e,`/`,t]})})}function As({min:e,max:t,step:n}){if(e===void 0&&t===void 0)return null;let i=``;return e!=null&&t!=null?i=`Range: ${e} to ${t}`:e==null?t!=null&&(i=`Max: ${t}`):i=`Min: ${e}`,n!=null&&n!==1&&(i+=` (step: ${n})`),(0,r.jsx)(`div`,{className:`text-xs text-muted-foreground mt-0.5`,"aria-live":`polite`,children:i})}function js({column:e,join:t,fkRole:n,form:i,schema:a}){let o=e.name,s=!e.isNullable;if(n===`member-composite`)return null;let c=Yo(e),l=_n(e.paramType),u=e.maxLength&&e.maxLength>0&&!c&&!l;if(e.enumValues&&e.enumValues.length>0)return(0,r.jsx)(Ms,{column:e,form:i,isRequired:s});if(t&&a)return n===`anchor-composite`?(0,r.jsx)(Bs,{column:e,join:t,form:i,schema:a,isRequired:s}):(0,r.jsx)(zs,{column:e,join:t,form:i,schema:a,isRequired:s});let d=vn(e.paramType),f=e.inputType||(c?Xo(e)?`datetime-local`:`date`:d?`text`:l?`number`:`text`),p=d?gn(e.paramType)?`numeric`:`decimal`:void 0,m=`${o}-error`;return(0,r.jsx)(i.Field,{name:o,validators:ys(e,s),children:t=>{let{ariaProps:n}=bs(t,m);return(0,r.jsxs)(`div`,{className:`grid gap-1`,children:[(0,r.jsxs)(ds,{htmlFor:o,className:`text-xs text-muted-foreground`,children:[e.label,s&&(0,r.jsx)(`span`,{className:`text-destructive ml-0.5`,children:`*`})]}),(0,r.jsx)($t,{id:o,type:f,inputMode:p,value:t.state.value??``,onChange:e=>t.handleChange(e.target.value),onBlur:t.handleBlur,required:s,maxLength:e.maxLength,minLength:e.minLength,min:e.min,max:e.max,step:e.step,pattern:e.pattern,title:e.patternMessage,...n,className:`h-8 text-sm`}),u&&(0,r.jsx)(ks,{current:String(t.state.value??``).length,max:e.maxLength}),l&&(e.min!==void 0||e.max!==void 0)&&(0,r.jsx)(As,{min:e.min,max:e.max,step:e.step}),(0,r.jsx)(Vs,{errors:t.state.meta.errors,id:m})]})}})}function Ms({column:e,form:t,isRequired:n}){let i=e.name,a=e.enumValues||[],o=ai(e)??a,s=`${i}-error`;return(0,r.jsx)(t.Field,{name:i,validators:ys(e,n),children:t=>{let{ariaProps:c}=bs(t,s);return(0,r.jsxs)(`div`,{className:`grid gap-1`,children:[(0,r.jsxs)(ds,{htmlFor:i,className:`text-xs text-muted-foreground`,children:[e.label,n&&(0,r.jsx)(`span`,{className:`text-destructive ml-0.5`,children:`*`})]}),(0,r.jsxs)(qi,{value:_s(t.state.value,!n),onValueChange:vs(e=>t.handleChange(e===`__none__`?null:e)),children:[(0,r.jsx)(Yi,{id:i,className:`w-full h-8 text-sm`,...c,children:(0,r.jsx)(Ji,{placeholder:`Select ${e.label}`})}),(0,r.jsxs)(Xi,{children:[!n&&(0,r.jsx)(Q,{value:`__none__`,className:`text-muted-foreground`,children:`(none)`}),a.map((e,t)=>(0,r.jsx)(Q,{value:e,children:o[t]||e},e))]})]}),(0,r.jsx)(Vs,{errors:t.state.meta.errors,id:s})]})}})}var Ns=`true`,Ps=`false`;function Fs({column:e,form:t}){let n=e.name;return e.isNullable?(0,r.jsx)(t.Field,{name:n,children:t=>{let i=t.state.value,a=i==null?gs:i?Ns:Ps;return(0,r.jsxs)(`div`,{className:`grid gap-1 min-w-[10rem]`,children:[(0,r.jsx)(ds,{htmlFor:n,className:`text-xs text-muted-foreground`,children:e.label}),(0,r.jsxs)(qi,{value:a,onValueChange:vs(e=>t.handleChange(e===`__none__`?null:e===Ns)),children:[(0,r.jsx)(Yi,{id:n,className:`w-full h-8 text-sm`,children:(0,r.jsx)(Ji,{})}),(0,r.jsxs)(Xi,{children:[(0,r.jsx)(Q,{value:gs,className:`text-muted-foreground`,children:`(unset)`}),(0,r.jsx)(Q,{value:Ns,children:`Yes`}),(0,r.jsx)(Q,{value:Ps,children:`No`})]})]})]})}}):(0,r.jsx)(t.Field,{name:n,children:t=>(0,r.jsxs)(`label`,{htmlFor:n,className:`flex items-center gap-2 cursor-pointer select-none`,children:[(0,r.jsx)(us,{id:n,checked:!!t.state.value,onCheckedChange:e=>t.handleChange(!!e),onBlur:t.handleBlur}),(0,r.jsx)(`span`,{className:`text-sm`,children:e.label})]})})}function Is({column:e,form:t}){let n=e.name,i=!e.isNullable,a=`${n}-error`;return(0,r.jsx)(t.Field,{name:n,validators:ys(e,i),children:t=>{let{hasError:o}=bs(t,a);return(0,r.jsxs)(`div`,{className:`grid gap-1`,children:[(0,r.jsxs)(ds,{htmlFor:n,className:`text-xs text-muted-foreground`,children:[e.label,i&&(0,r.jsx)(`span`,{className:`text-destructive ml-0.5`,children:`*`})]}),(0,r.jsx)(ps,{name:n,label:e.label,value:String(t.state.value??``),dbType:e.dbType,onChange:e=>t.handleChange(e),onBlur:t.handleBlur,required:i,invalid:o}),(0,r.jsx)(Vs,{errors:t.state.meta.errors,id:a})]})}})}function Ls(){let[e,n]=(0,t.useState)(``),[r,i]=(0,t.useState)(``),[a,o]=(0,t.useState)(!1);return(0,t.useEffect)(()=>{let t=setTimeout(()=>i(e),300);return()=>clearTimeout(t)},[e]),{search:e,setSearch:n,debounced:r,open:a,onOpenChange:e=>{o(e),e||(n(``),i(``))}}}function Rs({field:e,column:t,isRequired:n,errorId:i,value:a,onValueChange:o,search:s,setSearch:c,onOpenChange:l,loadError:u,composite:d,children:f}){let{ariaProps:p}=bs(e,i);return(0,r.jsxs)(`div`,{className:d?`grid gap-1 sm:col-span-2`:`grid gap-1`,children:[(0,r.jsxs)(ds,{htmlFor:t.name,className:`text-xs text-muted-foreground`,children:[t.label,n&&(0,r.jsx)(`span`,{className:`text-destructive ml-0.5`,children:`*`}),d&&(0,r.jsxs)(`span`,{className:`ml-2 px-1 rounded bg-primary/10 text-[10px] font-medium text-primary`,children:[`composite FK (`,d.cols,` cols)`]})]}),(0,r.jsxs)(qi,{value:a,onValueChange:vs(o),onOpenChange:l,children:[(0,r.jsx)(Yi,{id:t.name,className:`w-full h-8 text-sm`,...p,children:(0,r.jsx)(Ji,{placeholder:`Select ${t.label}`})}),(0,r.jsxs)(Xi,{children:[(0,r.jsx)(`div`,{className:`px-1 pb-1 sticky top-0 bg-popover z-10`,children:(0,r.jsx)($t,{value:s,onChange:e=>c(e.target.value),onKeyDown:e=>{(e.key.length===1||e.key===`Backspace`||e.key===`Delete`)&&e.stopPropagation()},placeholder:`Search…`,className:`h-7 text-xs`})}),f]})]}),u!=null&&(0,r.jsxs)(`p`,{className:`text-xs text-destructive`,role:`alert`,children:[`Failed to load `,t.label,` options: `,String(u?.message??u)]}),(0,r.jsx)(Vs,{errors:e.state.meta.errors,id:i})]})}function zs({column:e,join:t,form:n,schema:i,isRequired:a}){let o=e.name,c=t.destinationColumnNames[0],{search:l,setSearch:u,debounced:d,open:f,onOpenChange:p}=Ls(),m=Uo(i,t.destinationTable,c,d,f),h=(0,s.useStore)(n.store,e=>e.values?.[o]),g=h==null||h===``||m.data.some(e=>String(e.key)===String(h)),_=Wo(i,t.destinationTable,c,!m.loading&&!g?h:null),v=`${o}-error`,y=d.trim(),b=m.serverSearch||!y?m.data:m.data.filter(e=>$o(e,`key`,y)),x=h==null||h===``?null:m.data.find(e=>String(e.key)===String(h))??_.value??{key:String(h),label:String(h)};return(0,r.jsx)(n.Field,{name:o,validators:ys(e,a),children:t=>(0,r.jsxs)(Rs,{field:t,column:e,isRequired:a,errorId:v,value:_s(t.state.value,!a),onValueChange:e=>t.handleChange(e===`__none__`?null:e),search:l,setSearch:u,onOpenChange:p,loadError:m.error,children:[!a&&(0,r.jsx)(Q,{value:`__none__`,className:`text-muted-foreground`,children:`(none)`}),x&&!b.some(e=>String(e.key)===String(x.key))&&(0,r.jsx)(Q,{value:String(x.key),children:x.label}),b.map(e=>(0,r.jsx)(Q,{value:String(e.key),children:e.label},e.key)),b.length===0&&(0,r.jsx)(`div`,{className:`px-2 py-1.5 text-xs text-muted-foreground`,children:`No matches.`})]})})}function Bs({column:e,join:n,form:i,schema:a,isRequired:o}){let c=(0,t.useMemo)(()=>n.sourceColumnNames??[],[n.sourceColumnNames]),l=(0,t.useMemo)(()=>n.destinationColumnNames??[],[n.destinationColumnNames]),{search:u,setSearch:d,debounced:f,open:p,onOpenChange:m}=Ls(),h=(0,s.useStore)(i.store,e=>{let t={};for(let n=0;n<c.length;n++)t[l[n]]=e.values?.[c[n]];return t}),g=qo(a,n.destinationTable,l,{search:f,enabled:p,currentValues:h}),_=(0,t.useMemo)(()=>{let e=[];for(let t=0;t<c.length;t++){let n=h[l[t]];if(n==null||n===``)return``;e.push(n)}return An(e)},[h,c,l]),v=f.trim(),y=g.serverSearch||!v?g.data:g.data.filter(e=>e.label.toLowerCase().includes(v.toLowerCase())),b=e=>{let t=g.data.find(t=>t.route===e);if(t)for(let e=0;e<c.length;e++){let n=l[e],r=c[e];i.setFieldValue(r,t.values[n])}},x=`${e.name}-error`;return(0,r.jsx)(i.Field,{name:e.name,validators:ys(e,o),children:t=>(0,r.jsxs)(Rs,{field:t,column:e,isRequired:o,errorId:x,value:_,onValueChange:b,search:u,setSearch:d,onOpenChange:m,loadError:g.error,composite:{cols:c.length},children:[y.map(e=>(0,r.jsx)(Q,{value:e.route,children:e.label},e.route)),y.length===0&&(0,r.jsx)(`div`,{className:`px-2 py-1.5 text-xs text-muted-foreground`,children:`No matches.`})]})})}function Vs({errors:e,id:t}){return e.length===0?null:(0,r.jsx)(`div`,{id:t,role:`alert`,children:e.map((e,t)=>(0,r.jsx)(`p`,{className:`text-xs text-destructive`,children:String(e)},t))})}function Hs({className:e,...t}){return(0,r.jsx)(`div`,{"data-slot":`table-container`,className:`relative w-full h-full overflow-x-auto`,children:(0,r.jsx)(`table`,{"data-slot":`table`,className:Y(`min-w-full caption-bottom text-sm border-separate border-spacing-0`,e),...t})})}function Us({className:e,...t}){return(0,r.jsx)(`thead`,{"data-slot":`table-header`,className:Y(`[&_tr]:border-b`,e),...t})}function Ws({className:e,...t}){return(0,r.jsx)(`tbody`,{"data-slot":`table-body`,className:Y(`[&_tr:last-child]:border-0 [&_tr:nth-child(even)]:bg-muted/25`,e),...t})}function Gs({className:e,style:t,...n}){return(0,r.jsx)(`tr`,{"data-slot":`table-row`,className:Y(`border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted`,e),style:{height:40,...t},...n})}function Ks({className:e,style:t,...n}){return(0,r.jsx)(`th`,{"data-slot":`table-head`,className:Y(`px-2 text-left align-middle font-medium whitespace-nowrap text-muted-foreground text-xs border-r border-border last:border-r-0 [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,e),style:{height:32,...t},...n})}function qs({className:e,...t}){return(0,r.jsx)(`td`,{"data-slot":`table-cell`,className:Y(`px-2 py-1 align-middle whitespace-nowrap text-[13px] overflow-hidden text-ellipsis border-r border-border last:border-r-0 [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,e),...t})}function Js({anchorEl:e,onEdit:n,onDelete:a,onMouseEnter:o,onDismiss:s}){let c=(0,t.useRef)(null);return(0,t.useEffect)(()=>{let t=c.current;return t?((()=>{let n=e.getBoundingClientRect(),r=t.offsetHeight,i=t.offsetWidth;t.style.top=`${n.top+(n.height-r)/2}px`;let a=Math.min(n.right-i-8,window.innerWidth-i-8);t.style.left=`${Math.max(8,a)}px`})(),t.showPopover(),()=>{try{t.hidePopover()}catch{}}):void 0},[e]),(0,t.useEffect)(()=>{let e=e=>{let t=c.current;t&&!t.contains(e.target)&&s()};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[s]),(0,r.jsxs)(`div`,{ref:c,popover:`manual`,className:`flex items-center gap-0.5 rounded-md border border-border bg-popover px-1 py-0.5 shadow-md m-0`,style:{position:`fixed`},onClick:e=>e.stopPropagation(),onMouseEnter:o,onMouseLeave:s,onFocusCapture:o,onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||s()},children:[n&&(0,r.jsx)(Z,{variant:`ghost`,size:`icon-sm`,onClick:n,"aria-label":`Edit row`,title:`Edit`,className:`size-6`,children:(0,r.jsx)(i.Pencil,{className:`size-3.5`})}),a&&(0,r.jsx)(Z,{variant:`ghost`,size:`icon-sm`,onClick:a,"aria-label":`Delete row`,title:`Delete`,className:`size-6 text-destructive hover:text-destructive`,children:(0,r.jsx)(i.Trash2,{className:`size-3.5`})})]})}function Ys({exportRows:e,total:n,tableName:a,rowCap:o=Si}){let{toast:s}=Mi(),c=Di(),[l,u]=(0,t.useState)(!1),[d,f]=(0,t.useState)(0),p=(0,t.useRef)(null);(0,t.useEffect)(()=>()=>p.current?.abort(),[]);let m=(0,t.useCallback)(async t=>{if(l||n>o&&typeof window<`u`&&!window.confirm(`This export has ${n.toLocaleString()} rows, over the ${o.toLocaleString()} row limit. Only the first ${o.toLocaleString()} rows will be exported. Continue?`))return;let r=new AbortController;p.current=r,u(!0),f(0);try{let n=await e({format:t,signal:r.signal,rowCap:o,onProgress:e=>f(e)});if(!n)return;await c(wi(a,t),n.content,Ci(t)),n.truncated&&s(`Export truncated at ${n.rowCount.toLocaleString()} rows.`,`error`)}catch(e){if(r.signal.aborted)return;s(`Export failed: ${e instanceof Error?e.message:String(e)}`,`error`)}finally{u(!1),p.current=null}},[l,n,o,e,a,s,c]),h=(0,t.useCallback)(()=>p.current?.abort(),[]);return l?(0,r.jsxs)(Z,{variant:`outline`,size:`sm`,onClick:h,title:`Cancel export`,children:[(0,r.jsx)(i.X,{className:`size-3.5`}),`Cancel (`,d.toLocaleString(),`)`]}):(0,r.jsxs)(en,{children:[(0,r.jsx)(tn,{asChild:!0,children:(0,r.jsxs)(Z,{variant:`outline`,size:`sm`,children:[(0,r.jsx)(i.Download,{className:`size-3.5`}),`Export`,(0,r.jsx)(i.ChevronDown,{className:`size-3.5`})]})}),(0,r.jsxs)(nn,{align:`end`,children:[(0,r.jsx)(rn,{onClick:()=>void m(`csv`),children:`CSV`}),(0,r.jsx)(rn,{onClick:()=>void m(`json`),children:`JSON`})]})]})}var Xs=`bifrost-col-sizes:`;function Zs(e){try{let t=localStorage.getItem(Xs+e);return t?Qs(JSON.parse(t)):{}}catch{return{}}}function Qs(e){if(typeof e!=`object`||!e||Array.isArray(e))return{};let t={};for(let[n,r]of Object.entries(e))typeof r!=`number`||!Number.isFinite(r)||(t[n]=Math.min(Math.max(r,60),450));return t}function $s(e,t){try{Object.keys(t).length===0?localStorage.removeItem(Xs+e):localStorage.setItem(Xs+e,JSON.stringify(t))}catch{}}function ec(e){let[n,r]=(0,t.useState)(()=>e?Zs(e):{}),i=(0,t.useRef)(null),a=(0,t.useRef)(!0);(0,t.useEffect)(()=>{let t=i.current;if(t&&t.tableName!==e&&(i.current=null,$s(t.tableName,t.sizing)),!e)return;if(a.current){a.current=!1;return}i.current={tableName:e,sizing:n};let r=setTimeout(()=>{i.current=null,$s(e,n)},300);return()=>clearTimeout(r)},[e,n]),(0,t.useEffect)(()=>()=>{let e=i.current;e&&$s(e.tableName,e.sizing)},[]);let o=(0,t.useRef)(e);return e&&e!==o.current&&(o.current=e,a.current=!0,r(Zs(e))),{columnSizing:n,setColumnSizing:r}}var tc=`bifrost-col-visibility:`;function nc(e){return tc+e}function rc(e){try{let t=localStorage.getItem(nc(e));return t?ic(JSON.parse(t)):null}catch{return null}}function ic(e){if(typeof e!=`object`||!e||Array.isArray(e))return null;let t={};for(let[n,r]of Object.entries(e))typeof r==`boolean`&&(t[n]=r);return t}function ac(e,t){try{localStorage.setItem(nc(e),JSON.stringify(t))}catch{}}function oc(e){try{localStorage.removeItem(nc(e))}catch{}}function sc(e,t){if(!t||t.length===0)return{};let n=new Set(t),r={};for(let t of e)r[t]=n.has(t);return r}function cc(e,n){let[r,i]=(0,t.useState)(()=>(e?rc(e):null)??n),a=(0,t.useRef)(r),o=(0,t.useCallback)(e=>{a.current=e,i(e)},[]),s=(0,t.useCallback)(t=>{let n=typeof t==`function`?t(a.current):t;o(n),e&&ac(e,n)},[o,e]),c=(0,t.useCallback)(()=>{e&&oc(e),o(n)},[o,n,e]),l=(0,t.useRef)(e);e&&e!==l.current&&(l.current=e,o(rc(e)??n));let u=(0,t.useRef)(n);return e&&u.current!==n&&(u.current=n,rc(e)===null&&o(n)),{columnVisibility:r,setColumnVisibility:s,resetColumnVisibility:c}}var lc=500;function uc(){let[e,n]=(0,t.useState)(null),r=(0,t.useRef)(null),i=(0,t.useCallback)((e,t)=>{r.current&&=(clearTimeout(r.current),null),n({rowId:e,el:t})},[]),a=(0,t.useCallback)(()=>{r.current&&clearTimeout(r.current),r.current=setTimeout(()=>n(null),150)},[]),o=(0,t.useCallback)(()=>{r.current&&=(clearTimeout(r.current),null)},[]),s=(0,t.useRef)(null),c=(0,t.useRef)(!1),l=(0,t.useRef)(!1),u=(0,t.useCallback)(()=>{s.current&&=(clearTimeout(s.current),null)},[]);return{hoveredRow:e,hoverRow:i,scheduleDismiss:a,cancelDismiss:o,suppressClick:l,startPress:(0,t.useCallback)((e,t,n)=>{n.pointerType===`touch`&&(c.current=!1,u(),s.current=setTimeout(()=>{c.current||(l.current=!0,i(e,t))},lc))},[u,i]),onPressMove:(0,t.useCallback)(()=>{c.current=!0,u()},[u]),cancelPress:u}}function dc(e){return Math.max(5,Math.floor((e-32)/40))}function fc(e,n){let[r,i]=(0,t.useState)(!0),a=(0,t.useRef)(0),o=(0,t.useCallback)(()=>{let t=e.current;return t?dc(t.clientHeight):10},[e]);return(0,t.useEffect)(()=>{if(!r)return;let t=e.current;if(!t)return;let i=()=>{let e=o();e!==a.current&&(a.current=e,n(e))},s=requestAnimationFrame(i),c=null,l=new ResizeObserver(()=>{c&&clearTimeout(c),c=setTimeout(()=>requestAnimationFrame(i),200)});return l.observe(t),()=>{cancelAnimationFrame(s),c&&clearTimeout(c),l.disconnect()}},[r,o,n,e]),{fitMode:r,setFitMode:i,computeFitSize:o}}function pc(e){return e.id??(`accessorKey`in e?String(e.accessorKey):void 0)}function mc(e,t){return t.map(t=>e.find(e=>pc(e)===t)).filter(e=>e!==void 0)}function hc(e,{leading:t,trailing:n}){let r=t?mc(e,t):[],i=n?mc(e,n):[];if(r.length===0&&i.length===0)return e;let a=new Set([...r,...i]),o=e.filter(e=>!a.has(e));return[...r,...o,...i]}function gc({label:e,rows:i,loading:a,error:o,sumLabel:s,pageSize:c,sort:l,onSortChange:u,memberRequest:d}){let f=V(),[p,m]=(0,t.useState)(0),[h,g]=(0,t.useState)(null),_=h===null?null:d(h.value),v=(0,n.useQuery)({queryKey:[`groupMembers`,_?.query,_?.variables],queryFn:({signal:e})=>f.query(_.query,_.variables,{signal:e}),enabled:_!==null}),y=i.map(e=>`${String(e.value)}:${e.count}:${String(e.sum)}`).join(`|`);if((0,t.useEffect)(()=>{m(0),g(null)},[e,y,c]),o)return(0,r.jsxs)(`p`,{role:`alert`,className:`px-2 py-1 text-sm text-destructive`,children:[`Grouping failed: `,o.message]});if(a)return(0,r.jsx)(`p`,{className:`px-2 py-1 text-sm text-muted-foreground`,children:`Loading grouped results…`});let b=Math.max(1,c),x=Math.max(1,Math.ceil(i.length/b)),S=i.slice(Math.min(p,x-1)*b,(Math.min(p,x-1)+1)*b),C=_?v.data?.[_.responseKey]:void 0;return(0,r.jsxs)(`div`,{className:`border-b px-2 py-2`,"aria-label":`Grouped by ${e}`,children:[(0,r.jsxs)(`div`,{className:`mb-1 flex items-center justify-between gap-2 text-sm font-medium`,children:[(0,r.jsxs)(`span`,{children:[`Grouped by `,e]}),(0,r.jsxs)(`label`,{className:`text-xs font-normal text-muted-foreground`,children:[`Group order`,(0,r.jsxs)(`select`,{"aria-label":`Group order`,className:`ml-1 rounded border bg-background px-1 py-0.5 text-foreground`,value:`${l.field}:${l.desc?`desc`:`asc`}`,onChange:e=>{let[t,n]=e.target.value.split(`:`);u({field:t===`count`?`count`:`key`,desc:n===`desc`})},children:[(0,r.jsxs)(`option`,{value:`key:asc`,children:[e,` ascending`]}),(0,r.jsxs)(`option`,{value:`key:desc`,children:[e,` descending`]}),(0,r.jsx)(`option`,{value:`count:desc`,children:`Count high to low`}),(0,r.jsx)(`option`,{value:`count:asc`,children:`Count low to high`})]})]}),(0,r.jsxs)(`span`,{className:`text-muted-foreground`,children:[i.length,` groups`]})]}),(0,r.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_auto_auto] gap-x-4 gap-y-1 text-sm`,children:[S.map((e,t)=>(0,r.jsxs)(`div`,{className:`contents`,children:[(0,r.jsx)(`button`,{type:`button`,className:`text-left underline-offset-2 hover:underline`,"aria-expanded":h===e,onClick:()=>g(h===e?null:e),children:e.value===null||e.value===void 0?`(null)`:String(e.value)}),(0,r.jsx)(`span`,{className:`tabular-nums text-muted-foreground`,children:e.count}),(0,r.jsx)(`span`,{className:`tabular-nums text-muted-foreground`,children:s?String(e.sum??`—`):``})]},`${String(e.value)}-${t}`)),i.length===0&&(0,r.jsx)(`span`,{className:`text-muted-foreground`,children:`No grouped results.`})]}),i.length>b&&(0,r.jsxs)(`div`,{className:`mt-2 flex items-center gap-2 text-xs`,children:[(0,r.jsx)(`button`,{type:`button`,disabled:p===0,onClick:()=>m(e=>e-1),children:`Previous groups`}),(0,r.jsxs)(`span`,{children:[`Group page `,Math.min(p,x-1)+1,` of `,x]}),(0,r.jsx)(`button`,{type:`button`,disabled:p>=x-1,onClick:()=>m(e=>e+1),children:`Next groups`})]}),_&&(0,r.jsx)(`div`,{className:`mt-2 rounded bg-muted/40 p-2 text-xs`,"aria-live":`polite`,children:v.isLoading?`Loading group members…`:v.error?`Group member query failed.`:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(`div`,{children:[C?.total??0,` matching members`]}),(0,r.jsx)(`pre`,{className:`max-h-32 overflow-auto`,children:JSON.stringify(C?.data??[],null,2)})]})})]})}var _c=[10,20,30,50,100];function vc({columns:e,data:n,tableName:a,pageCount:o,pageIndex:s,pageSize:l,sorting:u,columnFilters:d,loading:f,fetching:p=!1,selectable:m=!1,primaryKeys:h=[],selectedRowId:g,onRowSelect:_,onSortingChange:v,onColumnFiltersChange:y,onPageIndexChange:b,onPageSizeChange:x,onEditRow:S,onDeleteRow:C,onDeleteSelected:w,onBulkEditSelected:T,inlineEditableColumns:E,inlineBooleanColumns:D,pendingEdits:O,onCellCommit:k,onSaveAllEdits:A,onDiscardAllEdits:j,savingEdits:M=!1,stackingEnabled:N,onToggleStacking:P,exportRows:ee,totalRows:F,onVisualize:te,groupableColumns:ne,grouping:I,onGroupingChange:re,onGroupingSumChange:L}){let{hoveredRow:R,hoverRow:ie,scheduleDismiss:z,cancelDismiss:B,suppressClick:ae,startPress:V,onPressMove:oe,cancelPress:H}=uc(),{defaultColumns:se,trailingColumns:ce}=de(),[le,ue]=(0,t.useState)({}),[U,fe]=(0,t.useState)(null),{columnSizing:W,setColumnSizing:pe}=ec(a),me=(0,t.useRef)(null),{fitMode:he,setFitMode:ge,computeFitSize:_e}=fc(me,x),ve=(0,t.useCallback)(e=>{let t=me.current;if(!t)return;let n=t.querySelectorAll(`[data-col-id="${e}"]`),r=60;n.forEach(e=>{let t=e.scrollWidth+4;t>r&&(r=t)});let i=Math.min(r,450);pe(t=>({...t,[e]:i}))},[pe]),ye=(0,t.useCallback)(()=>{pe({})},[pe]);(0,t.useEffect)(()=>{ue({})},[n,s]);let be=(0,t.useMemo)(()=>{let t=[];return m&&t.push({id:`_select`,header:({table:e})=>(0,r.jsx)(us,{checked:e.getIsAllPageRowsSelected()||e.getIsSomePageRowsSelected()&&`indeterminate`,onCheckedChange:t=>e.toggleAllPageRowsSelected(!!t),"aria-label":`Select all`}),cell:({row:e})=>(0,r.jsx)(us,{checked:e.getIsSelected(),onCheckedChange:t=>e.toggleSelected(!!t),onClick:e=>e.stopPropagation(),"aria-label":`Select row`}),enableSorting:!1,enableHiding:!1,enableResizing:!1,size:32}),t.push(...hc(e,{leading:a?se?.[a]:void 0,trailing:ce})),t},[e,m,se,a,ce]),{columnVisibility:xe,setColumnVisibility:Se,resetColumnVisibility:Ce}=cc(a,(0,t.useMemo)(()=>sc(be.filter(e=>e.enableHiding!==!1).map(e=>e.id).filter(e=>e!==void 0),a?se?.[a]:void 0),[be,se,a])),G=(0,c.useReactTable)({data:n,columns:be,pageCount:o,getRowId:(e,t)=>Mn(e,{primaryKeys:h},t),state:{sorting:u,columnFilters:d,pagination:{pageIndex:s,pageSize:l},columnVisibility:xe,rowSelection:le,columnSizing:W},defaultColumn:{minSize:60,size:150},columnResizeMode:`onChange`,enableColumnResizing:!0,onColumnSizingChange:pe,meta:{onResetColumnWidths:ye},onSortingChange:e=>{v(typeof e==`function`?e(u):e)},onPaginationChange:e=>{let t=typeof e==`function`?e({pageIndex:s,pageSize:l}):e;t.pageSize===l?b(t.pageIndex):(x(t.pageSize),b(0))},onColumnFiltersChange:e=>{y(typeof e==`function`?e(d):e)},onColumnVisibilityChange:Se,onRowSelectionChange:ue,enableRowSelection:m,getCoreRowModel:(0,c.getCoreRowModel)(),manualSorting:!0,manualFiltering:!0,manualPagination:!0}),we=Object.keys(le).length,Te=G.getVisibleLeafColumns().map(e=>e.id).join(`|`),Ee=(0,t.useCallback)(()=>{let e=[];for(let t of G.getSelectedRowModel().rows){let n=Nn(t.original,{primaryKeys:h});n&&e.push(n)}return e},[G,h]),De=(0,t.useCallback)(()=>{if(!w)return;let e=Ee();e.length>0&&w(e)},[Ee,w]),Oe=(0,t.useCallback)(()=>{if(!T)return;let e=Ee();e.length>0&&T(e)},[Ee,T]),ke=(0,t.useCallback)((e,t)=>{fe({rowId:e,columnId:t})},[]),Ae=(0,t.useCallback)((e,t,n)=>{fe(null),!M&&k?.(e,t,n)},[k,M]),je=(0,t.useCallback)(()=>fe(null),[]),Me=(0,t.useCallback)(e=>{let t=G.getRow(e);return t?Nn(t.original,{primaryKeys:h}):null},[G,h]),Ne=(0,t.useCallback)(e=>{if(!S)return;let t=Me(e);t&&S(t)},[S,Me]),Pe=(0,t.useCallback)(e=>{if(!C)return;let t=Me(e);t&&C(t)},[C,Me]),Fe=(0,t.useCallback)(()=>{R&&Ne(R.rowId)},[R,Ne]),Ie=(0,t.useCallback)(()=>{R&&Pe(R.rowId)},[R,Pe]);return(0,r.jsxs)(`div`,{className:`flex flex-col w-full min-h-0 flex-1`,children:[(0,r.jsxs)(`div`,{className:`flex items-center justify-between py-1 px-2`,children:[(0,r.jsxs)(`div`,{className:`flex items-center gap-2`,children:[d.length>0&&(0,r.jsxs)(Z,{variant:`outline`,size:`sm`,onClick:()=>G.resetColumnFilters(),title:`Clear all column filters`,children:[(0,r.jsx)(i.FilterX,{className:`size-3.5`}),`Clear filters`]}),we>0&&(w||T)&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[we,` selected`]}),T&&(0,r.jsxs)(Z,{variant:`outline`,size:`sm`,onClick:Oe,title:`Apply one set of field changes to every selected row in one transaction`,children:[(0,r.jsx)(i.Pencil,{className:`size-3.5`}),`Edit`]}),w&&(0,r.jsxs)(Z,{variant:`outline`,size:`sm`,onClick:De,className:`text-destructive hover:text-destructive`,children:[(0,r.jsx)(i.Trash2,{className:`size-3.5`}),`Delete`]})]}),(O?.size??0)>0&&A&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(`span`,{className:`text-xs text-amber-600 dark:text-amber-400`,children:[O.size,` unsaved `,O.size===1?`row`:`rows`]}),(0,r.jsx)(Z,{size:`sm`,onClick:A,disabled:M,children:M?`Saving…`:`Save all`}),j&&(0,r.jsx)(Z,{variant:`outline`,size:`sm`,onClick:j,disabled:M,children:`Discard`})]})]}),(0,r.jsxs)(`div`,{className:`flex items-center gap-2`,children:[te&&(0,r.jsx)(Z,{variant:`outline`,size:`sm`,onClick:te,title:`Open a chart using this table and its active filters`,children:`Visualize`}),ee&&(0,r.jsx)(Ys,{exportRows:ee,total:F??0,tableName:a??`export`}),P&&(0,r.jsxs)(Z,{variant:N?`secondary`:`outline`,size:`sm`,role:`switch`,"aria-checked":!!N,onClick:()=>P(!N),title:N?`Stacked drill-down active — click for flat grid`:`Flat grid active — click for stacked drill-down`,children:[N?(0,r.jsx)(i.PanelRight,{className:`size-3.5`}):(0,r.jsx)(i.Rows3,{className:`size-3.5`}),N?`Stacked`:`Grid`]}),re&&ne&&(0,r.jsxs)(qi,{value:I?.column.name??`__none`,onValueChange:e=>re(e===`__none`?null:e),children:[(0,r.jsx)(Yi,{size:`sm`,className:`w-40`,"aria-label":`Group grid by column`,children:(0,r.jsx)(Ji,{placeholder:`Group by`})}),(0,r.jsxs)(Xi,{children:[(0,r.jsx)(Q,{value:`__none`,children:`No grouping`}),ne.map(e=>(0,r.jsx)(Q,{value:e.name,children:e.label},e.name))]})]}),I&&L&&ne&&(0,r.jsxs)(qi,{value:I.sumColumn?.name??`__none`,onValueChange:e=>L(e===`__none`?null:e),children:[(0,r.jsx)(Yi,{size:`sm`,className:`w-40`,"aria-label":`Group sum column`,children:(0,r.jsx)(Ji,{placeholder:`Sum column`})}),(0,r.jsxs)(Xi,{children:[(0,r.jsx)(Q,{value:`__none`,children:`Count only`}),ne.filter(e=>/^(byte|short|int|long|float|double|decimal|numeric|money|real)/i.test(e.paramType.replace(/[![\]]/g,``))).map(e=>(0,r.jsxs)(Q,{value:e.name,children:[`Sum `,e.label]},e.name))]})]}),(0,r.jsxs)(en,{children:[(0,r.jsx)(tn,{asChild:!0,children:(0,r.jsxs)(Z,{variant:`outline`,size:`sm`,children:[(0,r.jsx)(i.Columns3,{className:`size-3.5`}),`Columns`,(0,r.jsx)(i.ChevronDown,{className:`size-3.5`})]})}),(0,r.jsxs)(nn,{align:`end`,children:[G.getAllColumns().filter(e=>e.getCanHide()).map(e=>{let t=e.columnDef.meta?.column?.label??(typeof e.columnDef.header==`string`?e.columnDef.header:e.id);return(0,r.jsx)(an,{checked:e.getIsVisible(),onCheckedChange:t=>e.toggleVisibility(!!t),children:t},e.id)}),(0,r.jsx)(sn,{}),(0,r.jsx)(rn,{onClick:Ce,children:`Reset to default columns`})]})]})]})]}),I?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(gc,{label:I.column.label,rows:I.rows,loading:I.loading,error:I.error,sumLabel:I.sumColumn?.label,pageSize:l,sort:I.sort,onSortChange:I.onSortChange,memberRequest:I.memberRequest}),(0,r.jsx)(`p`,{className:`border-b px-2 py-1 text-xs text-muted-foreground`,role:`note`,children:`Inline editing is disabled while grouping is active; expand a group to inspect its server-filtered members.`})]}):(0,r.jsxs)(r.Fragment,{children:[p&&(0,r.jsx)(`div`,{className:`relative h-0 z-20`,children:(0,r.jsxs)(`div`,{"data-testid":`fetch-indicator`,role:`progressbar`,"aria-label":`Loading page`,className:`absolute inset-x-0 top-0 h-0.5 overflow-hidden bg-primary/20`,children:[(0,r.jsx)(`div`,{className:`h-full w-1/3 bg-primary`,style:{animation:`edit-db-indeterminate 1.2s ease-in-out infinite`}}),(0,r.jsx)(`style`,{children:`@keyframes edit-db-indeterminate { 0% { transform: translateX(-100%); } 100% { transform: translateX(300%); } }`})]})}),(0,r.jsxs)(`div`,{ref:me,className:`relative flex-1 overflow-auto min-h-0`,"aria-busy":p||f,children:[(0,r.jsxs)(Hs,{style:{tableLayout:`fixed`,width:G.getTotalSize()},children:[(0,r.jsx)(`colgroup`,{children:G.getVisibleLeafColumns().map(e=>(0,r.jsx)(`col`,{style:{width:e.getSize()}},e.id))}),(0,r.jsx)(Us,{children:G.getHeaderGroups().map(e=>(0,r.jsx)(Gs,{children:e.headers.map(e=>(0,r.jsxs)(Ks,{"data-col-id":e.column.id,className:`relative`,"aria-sort":e.column.getIsSorted()===`asc`?`ascending`:e.column.getIsSorted()===`desc`?`descending`:e.column.getCanSort()?`none`:void 0,children:[e.isPlaceholder?null:(0,c.flexRender)(e.column.columnDef.header,e.getContext()),e.column.getCanResize()&&(0,r.jsx)(`div`,{onMouseDown:e.getResizeHandler(),onTouchStart:e.getResizeHandler(),onDoubleClick:()=>ve(e.column.id),className:`absolute top-0 right-0 w-1 h-full cursor-col-resize select-none touch-none opacity-0 hover:opacity-100 transition-opacity ${e.column.getIsResizing()?`bg-primary opacity-100`:`bg-border hover:bg-muted-foreground`}`})]},e.id))},e.id))}),(0,r.jsx)(Ws,{children:f?(0,r.jsx)(Gs,{children:(0,r.jsx)(qs,{colSpan:be.length,className:`h-24 text-center`,children:`Loading...`})}):G.getRowModel().rows.length===0?(0,r.jsx)(Gs,{children:(0,r.jsx)(qs,{colSpan:be.length,className:`h-24 text-center`,children:`No results.`})}):G.getRowModel().rows.map(e=>(0,r.jsx)(bc,{row:e,isSelected:g!=null&&e.id===g,checked:e.getIsSelected(),visibleKey:Te,pending:O?.get(e.id),editingColumnId:U?.rowId===e.id?U.columnId:null,inlineEditableColumns:k&&!M?E:void 0,inlineBooleanColumns:D,onStartEditCell:k&&!M?ke:void 0,onCommitCell:Ae,onCancelEditCell:je,onRowSelect:_,onEditRow:S?Ne:void 0,onDeleteRow:C?Pe:void 0,suppressClick:ae,hoverRow:ie,scheduleDismiss:z,startPress:V,onPressMove:oe,cancelPress:H},e.id))})]}),R&&(S||C)&&(0,r.jsx)(Js,{anchorEl:R.el,onEdit:S?Fe:void 0,onDelete:C?Ie:void 0,onMouseEnter:B,onDismiss:z})]}),(0,r.jsxs)(`div`,{className:`flex items-center justify-between px-2 py-1.5 border-t border-border mt-auto shrink-0`,children:[(0,r.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,r.jsx)(`span`,{children:`Rows per page`}),(0,r.jsxs)(qi,{value:he?`-1`:String(l),onValueChange:e=>{let t=Number(e);t===-1?(ge(!0),x(_e())):(ge(!1),x(t))},children:[(0,r.jsx)(Yi,{size:`sm`,className:`w-auto h-7 text-xs`,"aria-label":`Rows per page`,children:(0,r.jsx)(Ji,{children:he?`Fit`:l})}),(0,r.jsxs)(Xi,{children:[(0,r.jsx)(Q,{value:`-1`,children:`Fit`}),_c.map(e=>(0,r.jsx)(Q,{value:String(e),children:e},e))]})]})]}),(0,r.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,r.jsxs)(`span`,{className:`text-xs text-muted-foreground mr-2`,children:[`Page `,s+1,` of `,o||1]}),(0,r.jsx)(Z,{variant:`outline`,size:`icon-sm`,onClick:()=>b(0),disabled:s===0,"aria-label":`First page`,title:`First page`,children:(0,r.jsx)(i.ChevronsLeft,{className:`size-4`})}),(0,r.jsx)(Z,{variant:`outline`,size:`icon-sm`,onClick:()=>b(s-1),disabled:!G.getCanPreviousPage(),"aria-label":`Previous page`,title:`Previous page`,children:(0,r.jsx)(i.ChevronLeft,{className:`size-4`})}),(0,r.jsx)(Z,{variant:`outline`,size:`icon-sm`,onClick:()=>b(s+1),disabled:!G.getCanNextPage(),"aria-label":`Next page`,title:`Next page`,children:(0,r.jsx)(i.ChevronRight,{className:`size-4`})}),(0,r.jsx)(Z,{variant:`outline`,size:`icon-sm`,onClick:()=>b(o-1),disabled:s>=o-1,"aria-label":`Last page`,title:`Last page`,children:(0,r.jsx)(i.ChevronsRight,{className:`size-4`})})]})]})]})]})}function yc({row:e,isSelected:t,checked:n,pending:i,editingColumnId:a,inlineEditableColumns:o,inlineBooleanColumns:s,onStartEditCell:l,onCommitCell:u,onCancelEditCell:d,onRowSelect:f,onEditRow:p,onDeleteRow:m,suppressClick:h,hoverRow:g,scheduleDismiss:_,startPress:v,onPressMove:y,cancelPress:b}){let x=!!(f||p||m);return(0,r.jsx)(Gs,{"data-state":t||n?`selected`:void 0,className:f?`cursor-pointer group/row focus-visible:outline-2 focus-visible:outline-primary`:`group/row focus-visible:outline-2 focus-visible:outline-primary`,tabIndex:x?0:void 0,onClick:f?()=>{if(h.current){h.current=!1;return}window.getSelection()?.toString()||f(t?null:e.id)}:void 0,onKeyDown:x?n=>{n.target===n.currentTarget&&((n.key===`Enter`||n.key===` `)&&f?(n.preventDefault(),f(t?null:e.id)):(n.key===`e`||n.key===`E`)&&p?(n.preventDefault(),p(e.id)):(n.key===`Delete`||n.key===`Backspace`)&&m&&(n.preventDefault(),m(e.id)))}:void 0,onFocus:t=>{t.target===t.currentTarget&&g(e.id,t.currentTarget)},onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||_()},onPointerEnter:t=>{t.pointerType===`mouse`&&g(e.id,t.currentTarget)},onPointerLeave:e=>{e.pointerType===`mouse`&&_()},onPointerDown:t=>v(e.id,t.currentTarget,t),onPointerMove:y,onPointerUp:b,onPointerCancel:b,children:e.getVisibleCells().map(t=>{let n=t.column.id,f=!!l&&!!o?.has(n),p=a===n,m=!!i&&n in i;return(0,r.jsx)(qs,{"data-col-id":n,"data-dirty":m?`true`:void 0,className:m?`bg-amber-500/10 border-l-2 border-l-amber-500`:void 0,title:f&&!p?`Double-click to edit`:void 0,onDoubleClick:f&&!p?()=>l(e.id,n):void 0,children:p&&u&&d?(0,r.jsx)(xc,{initialValue:m?i[n]:e.original[n],boolean:!!s?.has(n),onCommit:t=>u(e.id,n,t),onCancel:d}):m?(0,r.jsx)(`span`,{title:`Unsaved change`,children:i[n]==null?``:String(i[n])}):(0,c.flexRender)(t.column.columnDef.cell,t.getContext())},t.id)})})}var bc=(0,t.memo)(yc);function xc({initialValue:e,boolean:n,onCommit:i,onCancel:a}){let[o,s]=(0,t.useState)(e==null?``:String(e));return n?(0,r.jsx)(`input`,{type:`checkbox`,autoFocus:!0,defaultChecked:e===!0||e===`true`,onChange:e=>i(e.target.checked),onKeyDown:e=>{e.key===`Escape`&&a()},onBlur:a,"aria-label":`Edit cell value`}):(0,r.jsx)(`input`,{autoFocus:!0,className:`w-full bg-background border border-primary rounded px-1 py-0.5 text-sm outline-none`,value:o,onChange:e=>s(e.target.value),onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),i(o)):e.key===`Escape`&&(e.preventDefault(),a()),e.stopPropagation()},onBlur:()=>i(o),onClick:e=>e.stopPropagation(),onDoubleClick:e=>e.stopPropagation(),"aria-label":`Edit cell value`})}function Sc({table:e,pks:n,onClose:i}){let a=V(),{toast:o}=Mi(),s=_o(e),[c,l]=(0,t.useState)({}),[u,d]=(0,t.useState)(null),[f,p]=(0,t.useState)(!1),m=(0,t.useMemo)(()=>e.columns.filter(e=>!e.isReadOnly&&!e.isIdentity&&!e.isPrimaryKey&&!Hn(e.dbType)),[e]),h=(0,t.useMemo)(()=>e.columns.some(e=>!e.isReadOnly&&!e.isIdentity&&!e.isPrimaryKey&&!e.isNullable&&Hn(e.dbType)),[e]),g=(0,t.useMemo)(()=>{let t=new Map(e.columns.map(e=>[e.name,e]));return(e.primaryKeys??[]).map(e=>t.get(e)).filter(e=>!!e)},[e]),_=m.filter(e=>c[e.name]?.enabled),v=f||s.isPending,y=(e,t)=>l(n=>{let r=n[e]??{enabled:!1,value:``,setNull:!1};return{...n,[e]:{...r,...t}}}),b=e=>{let t=c[e.name];return t.setNull?null:e.paramType.startsWith(`Boolean`)?t.value===`true`:t.value};return(0,r.jsx)(es,{open:!0,onOpenChange:e=>{!e&&!v&&i()},children:(0,r.jsxs)(as,{showCloseButton:!1,className:`max-w-lg`,children:[(0,r.jsxs)(os,{children:[(0,r.jsxs)(cs,{children:[`Edit `,n.length,` `,n.length===1?`row`:`rows`]}),(0,r.jsx)(ls,{children:`Chosen fields are applied to every selected row and saved in one transaction — if any row fails, nothing changes.`})]}),h?(0,r.jsx)(`p`,{className:`text-sm text-destructive`,children:`This table has a required binary column, which bulk edit cannot echo. Edit rows individually.`}):(0,r.jsx)(`div`,{className:`flex flex-col gap-2 max-h-80 overflow-y-auto py-1`,children:m.map(e=>{let t=c[e.name]??{enabled:!1,value:``,setNull:!1},n=e.paramType.startsWith(`Boolean`);return(0,r.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,r.jsx)(us,{id:`bulk-${e.name}`,checked:t.enabled,onCheckedChange:t=>y(e.name,{enabled:t===!0})}),(0,r.jsx)(ds,{htmlFor:`bulk-${e.name}`,className:`w-40 truncate`,title:e.label??e.name,children:e.label??e.name}),n?(0,r.jsxs)(`select`,{className:`h-8 rounded-md border bg-transparent px-2 text-sm flex-1`,disabled:!t.enabled||t.setNull,value:t.value===`true`?`true`:`false`,onChange:t=>y(e.name,{value:t.target.value}),children:[(0,r.jsx)(`option`,{value:`true`,children:`true`}),(0,r.jsx)(`option`,{value:`false`,children:`false`})]}):(0,r.jsx)($t,{className:`h-8 flex-1`,disabled:!t.enabled||t.setNull,value:t.value,onChange:t=>y(e.name,{value:t.target.value})}),e.isNullable&&(0,r.jsxs)(`label`,{className:`flex items-center gap-1 text-xs text-muted-foreground`,children:[(0,r.jsx)(us,{checked:t.setNull,disabled:!t.enabled,onCheckedChange:t=>y(e.name,{setNull:t===!0})}),`null`]})]},e.name)})}),u&&(0,r.jsx)(`p`,{className:`text-sm text-destructive`,children:u}),(0,r.jsxs)(ss,{children:[(0,r.jsx)(Z,{variant:`outline`,onClick:i,disabled:v,children:`Cancel`}),(0,r.jsx)(Z,{onClick:async()=>{if(d(null),_.length===0){d(`Choose at least one field to change.`);return}p(!0);try{let t={};for(let e of _)t[e.name]=b(e);let r=m.filter(e=>!e.isNullable||t[e.name]!==void 0),o=Or(e,n,[...new Set([...e.primaryKeys??[],...r.map(e=>e.name)])]);if(!o)throw Error(`The selected rows have no resolvable primary keys.`);let c=(await a.query(o.query,o.variables))?.value?.data??[];if(c.length!==n.length)throw Error(`Only ${c.length} of ${n.length} selected rows still exist. Refresh and retry.`);let l=Po(e,r,g,c,t);await s.saveDelta({updated:l}),i()}catch(e){let t=e.message??String(e);d(t),o(`Bulk edit failed: ${t}`,`error`)}finally{p(!1)}},disabled:v||h,children:v?`Saving…`:`Apply to ${n.length} ${n.length===1?`row`:`rows`}`})]})]})})}function Cc({...e}){return(0,r.jsx)(a.Dialog.Root,{"data-slot":`sheet`,...e})}function wc({...e}){return(0,r.jsx)(a.Dialog.Portal,{"data-slot":`sheet-portal`,...e})}function Tc({className:e,...t}){return(0,r.jsx)(a.Dialog.Overlay,{"data-slot":`sheet-overlay`,className:Y(`fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0`,e),...t})}function Ec({className:e,children:t,side:n=`right`,...o}){return(0,r.jsxs)(wc,{children:[(0,r.jsx)(Tc,{}),(0,r.jsxs)(a.Dialog.Content,{"data-slot":`sheet-content`,className:Y(`fixed z-50 flex flex-col gap-4 bg-background shadow-lg transition ease-in-out duration-200 outline-none`,`data-[state=closed]:animate-out data-[state=open]:animate-in data-[state=closed]:duration-200 data-[state=open]:duration-200`,n===`right`&&`inset-y-0 right-0 h-full w-3/4 max-w-md border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right`,n===`left`&&`inset-y-0 left-0 h-full w-3/4 max-w-md border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left`,n===`top`&&`inset-x-0 top-0 h-auto border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top`,n===`bottom`&&`inset-x-0 bottom-0 h-auto border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom`,e),...o,children:[t,(0,r.jsxs)(a.Dialog.Close,{"data-slot":`sheet-close`,className:`absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,children:[(0,r.jsx)(i.XIcon,{}),(0,r.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]})}function Dc({className:e,...t}){return(0,r.jsx)(`div`,{"data-slot":`sheet-header`,className:Y(`flex flex-col gap-2 p-4 pb-0`,e),...t})}function Oc({className:e,...t}){return(0,r.jsx)(a.Dialog.Title,{"data-slot":`sheet-title`,className:Y(`text-lg leading-none font-semibold`,e),...t})}function kc({className:e,...t}){return(0,r.jsx)(a.Dialog.Description,{"data-slot":`sheet-description`,className:Y(`text-sm text-muted-foreground`,e),...t})}var Ac={json:i.Braces,xml:i.Code,"php-serialized":i.Database,binary:i.Binary,longtext:i.FileText,text:i.FileText},jc={json:`JSON`,xml:`XML`,"php-serialized":`PHP Serialized`,binary:`Binary`,longtext:`Text`,text:`Text`};function Mc(e,t){if(t===`json`)try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}return t===`xml`?e.replace(/>\s*</g,`>
108
+ <`).trim():e}function Nc({target:e,onClose:n,onNavigate:a,onSave:o,canNavigatePrev:s,canNavigateNext:c}){let{toast:l}=Mi(),[u,d]=(0,t.useState)(!1),[f,p]=(0,t.useState)(!1),[m,h]=(0,t.useState)(``),[g,_]=(0,t.useState)(!1),[v,y]=(0,t.useState)(!1),b=(0,t.useRef)(null),x=e?.value??``,S=qn(x,e?.dbType),C=Ac[S],w=Mc(x,S),T=S===`binary`&&x?Xn(x):null,E=(0,t.useCallback)(()=>{!e||!T||Ei(x,`${e.columnName}${T.extension}`,T.mime)},[e,T,x]);(0,t.useEffect)(()=>{p(!1),h(``),_(!1),y(!1)},[e?.rowKey,e?.columnName]),(0,t.useEffect)(()=>{if(!e)return;let t=e=>{f||(e.key===`ArrowUp`&&s?(e.preventDefault(),a(`prev`)):e.key===`ArrowDown`&&c&&(e.preventDefault(),a(`next`)))};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e,f,s,c,a]);let D=(0,t.useRef)(null);(0,t.useEffect)(()=>()=>{D.current&&clearTimeout(D.current)},[]);let O=(0,t.useCallback)(async()=>{try{await navigator.clipboard.writeText(x)}catch(e){l(`Copy failed: ${e instanceof Error?e.message:String(e)}`,`error`);return}_(!0),D.current&&clearTimeout(D.current),D.current=setTimeout(()=>_(!1),1500)},[x,l]),k=(0,t.useCallback)(()=>{h(w),p(!0),requestAnimationFrame(()=>b.current?.focus())},[w]),A=(0,t.useCallback)(()=>{p(!1),h(``)},[]),j=(0,t.useCallback)(async()=>{if(m===w){p(!1);return}if(!(!o||v)){y(!0);try{await o(m),p(!1)}catch{}finally{y(!1)}}},[o,m,w,v]),M=(0,t.useCallback)(()=>{if(S===`json`)try{h(JSON.stringify(JSON.parse(m),null,2))}catch{}else S===`xml`&&h(m.replace(/>\s*</g,`>
109
+ <`).trim())},[m,S]),N=S===`json`||S===`xml`,P=!!o&&!e?.isReadOnly&&S!==`binary`,ee=(0,r.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,r.jsx)(C,{className:`size-4 text-muted-foreground shrink-0`}),(0,r.jsx)(`span`,{className:`truncate font-semibold text-sm`,children:e?.columnLabel}),(0,r.jsx)(`span`,{className:`text-xs text-muted-foreground shrink-0`,children:T?T.kind===`image`?T.mime.replace(`image/`,``).toUpperCase()+` image`:T.kind===`pdf`?`PDF document`:jc[S]:jc[S]}),(0,r.jsx)(`span`,{className:`text-xs text-muted-foreground shrink-0`,children:T?Yn(x):`${x.length} chars`})]}),F=(0,r.jsxs)(`div`,{className:`flex items-center gap-1 px-4 pb-2`,children:[(0,r.jsxs)(Z,{type:`button`,variant:`ghost`,size:`sm`,className:`h-7 text-xs px-2`,onClick:O,children:[g?(0,r.jsx)(i.Check,{className:`size-3`}):(0,r.jsx)(i.Copy,{className:`size-3`}),g?`Copied`:`Copy`]}),T&&(0,r.jsxs)(Z,{type:`button`,variant:`ghost`,size:`sm`,className:`h-7 text-xs px-2`,onClick:E,children:[(0,r.jsx)(i.Download,{className:`size-3`}),`Download`]}),P&&!f&&(0,r.jsxs)(Z,{type:`button`,variant:`ghost`,size:`sm`,className:`h-7 text-xs px-2`,onClick:k,children:[(0,r.jsx)(i.Pencil,{className:`size-3`}),`Edit`]}),f&&N&&(0,r.jsxs)(Z,{type:`button`,variant:`ghost`,size:`sm`,className:`h-7 text-xs px-2`,onClick:M,children:[(0,r.jsx)(i.WrapText,{className:`size-3`}),`Format`]}),(0,r.jsxs)(`div`,{className:`flex items-center gap-1 ml-auto`,children:[(0,r.jsx)(Z,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:()=>a(`prev`),disabled:!s,"aria-label":`Previous row`,title:`Previous row`,children:(0,r.jsx)(i.ChevronUp,{className:`size-4`})}),(0,r.jsx)(Z,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:()=>a(`next`),disabled:!c,"aria-label":`Next row`,title:`Next row`,children:(0,r.jsx)(i.ChevronDown,{className:`size-4`})}),(0,r.jsx)(Z,{type:`button`,variant:`ghost`,size:`icon-sm`,onClick:()=>d(e=>!e),"aria-label":u?`Exit full screen`:`Full screen`,title:u?`Exit full screen`:`Full screen`,children:u?(0,r.jsx)(i.Minimize2,{className:`size-4`}):(0,r.jsx)(i.Maximize2,{className:`size-4`})})]})]}),te=(0,r.jsx)(`div`,{className:`flex-1 min-h-0 overflow-auto px-4 pb-4`,children:f?(0,r.jsxs)(`div`,{className:`flex flex-col gap-2 h-full`,children:[(0,r.jsx)(`textarea`,{ref:b,value:m,onChange:e=>h(e.target.value),className:Y(`flex-1 w-full rounded-md border border-input bg-background px-3 py-2`,`text-xs font-mono leading-relaxed`,`ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,`resize-none min-h-[200px]`)}),(0,r.jsxs)(`div`,{className:`flex items-center gap-2 justify-end`,children:[(0,r.jsx)(Z,{type:`button`,variant:`ghost`,size:`sm`,onClick:A,disabled:v,children:`Cancel`}),(0,r.jsx)(Z,{type:`button`,size:`sm`,onClick:j,disabled:v,children:v?`Saving…`:`Save`})]})]}):T?.kind===`image`?(0,r.jsx)(`img`,{src:Zn(x,T.mime),alt:e?.columnLabel??`Image content`,className:`max-w-full rounded-md border border-input`}):T?(0,r.jsxs)(`div`,{className:`rounded-md border border-input bg-muted/30 p-4 text-sm text-muted-foreground`,children:[(0,r.jsxs)(`p`,{children:[T.kind===`pdf`?`PDF document`:`Binary content`,` · `,Yn(x)]}),(0,r.jsx)(`p`,{className:`mt-1 text-xs`,children:`Use Download to save and open the file.`})]}):(0,r.jsx)(`pre`,{className:`text-xs font-mono leading-relaxed whitespace-pre-wrap break-all`,children:w})}),ne=!!e;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(Cc,{open:ne&&!u,onOpenChange:e=>{e||n()},children:(0,r.jsxs)(Ec,{side:`right`,className:`w-[480px] max-w-[90vw]`,children:[(0,r.jsxs)(Dc,{children:[(0,r.jsx)(Oc,{children:ee}),(0,r.jsx)(kc,{className:`sr-only`,children:`Content viewer panel`})]}),F,te]})}),(0,r.jsx)(es,{open:ne&&u,onOpenChange:e=>{e||d(!1)},children:(0,r.jsxs)(as,{className:`max-w-[90vw] max-h-[90vh] w-full h-full flex flex-col`,children:[(0,r.jsxs)(os,{children:[(0,r.jsx)(cs,{children:ee}),(0,r.jsx)(ls,{className:`sr-only`,children:`Content viewer full screen`})]}),F,te]})})]})}function Pc(e,t){if(vr(e,t).filterTexts.length===0)return;let n=[];for(let r of e){let e=r.value,i=t.columns.find(e=>e.name===r.id);!i||!cr(i.paramType).includes(e.operator)||e.value===void 0||e.value===``&&e.operator!==`_null`||n.push({[i.graphQlName]:{[e.operator]:e.value}})}return n.length===1?n[0]:n.length>1?{and:n}:void 0}function Fc({table:e,id:i,filterTable:a,filterColumn:o,selectedRowId:s,onRowSelect:c,onOpenColumn:l,stackingEnabled:u,onToggleStacking:d}){let f=ho(e),[p,m]=(0,t.useState)(null),[h,g]=(0,t.useState)(null),[_,v]=(0,t.useState)(null),y=(0,t.useRef)([]),b=(0,t.useCallback)(t=>{g(Fn(t,e))},[e]),x=(0,t.useCallback)(e=>{m({type:`single`,pk:e})},[]),S=(0,t.useCallback)(e=>{e.length!==0&&m({type:`batch`,pks:e})},[]),[C,w]=(0,t.useState)(null),T=(0,t.useCallback)(e=>{e.length!==0&&w(e)},[]),[E,D]=(0,t.useState)(new Map),O=(0,t.useRef)(E);O.current=E;let[k,A]=(0,t.useState)(!1),j=_o(e),M=(0,t.useCallback)((t,n)=>{let r=y.current[t];v({columnName:n,pk:r?Nn(r,e):null,rowIndex:t,tableName:e.name})},[e]),{columns:N,sorting:P,columnFilters:ee,pageIndex:F,pageSize:te,pageCount:ne,rows:I,totalRows:re,grouping:L,exportRows:R,loading:ie,fetching:z,error:B,onSortingChange:ae,onColumnFiltersChange:oe,onPageIndexChange:H,onPageSizeChange:se,onGroupingChange:ce,onGroupingSumChange:le}=co(e,i,a,o,M,l),ue=(0,t.useCallback)(async()=>{if(p)try{p.type===`single`?await f.deleteRow(p.pk):await f.deleteRows(p.pks),m(null)}catch{}},[p,f]),de=p?.type===`batch`?p.pks.length:1;y.current=I;let{toast:U}=Mi(),fe=V(),W=e.isEditable!==!1,pe=(0,t.useMemo)(()=>_?.pk?Fn(_.pk,e):null,[_,e]),me=(0,t.useMemo)(()=>!_||_.tableName!==e.name?-1:pe===null?_.rowIndex<I.length?_.rowIndex:-1:I.findIndex(t=>{let n=Nn(t,e);return n!==null&&Fn(n,e)===pe}),[_,pe,I,e]),he=me>=0?I[me]:void 0,ge=(0,t.useMemo)(()=>_?.pk?Pn(_.pk,e):null,[_,e]),_e=_?e.columns.find(e=>e.name===_.columnName):void 0,ve=!!_&&!!_e&&!!ge&&Kn(_e)&&he!==void 0&&!(_e.name in he),{data:ye,isLoading:be,error:xe}=(0,n.useQuery)({queryKey:[`contentPanelValue`,e.name,_?.columnName,pe],queryFn:async()=>{let t=Dr(e,ge,[_e.name]),n=(await fe.query(t,ge.variables))?.value?.data?.at(0);if(!n)throw Error(`Row no longer exists.`);return n[_e.name]??null},enabled:ve});(0,t.useEffect)(()=>{_!==null&&ve&&xe&&(v(null),U(`Could not load content: ${xe.message}`,`error`))},[_,ve,xe,U]),(0,t.useEffect)(()=>{_!==null&&_.tableName!==e.name&&v(null)},[_,e.name]),(0,t.useEffect)(()=>{_!==null&&_.tableName===e.name&&!ie&&me===-1&&(v(null),U(`Row is no longer in the current view; panel closed.`,`error`))},[_,e.name,ie,me,U]);let Se=(0,t.useMemo)(()=>{if(!_||!he)return null;let t=e.columns.find(e=>e.name===_.columnName);if(!t||ve&&(be||xe))return null;let n=ve?ye:he[_.columnName],r=Wn(t);return{value:n==null?``:r||typeof n==`object`?JSON.stringify(n,null,2):String(n),columnName:t.name,columnLabel:t.label,dbType:t.dbType,rowKey:pe??`row-${_.rowIndex}`,isReadOnly:t.isReadOnly||t.isPrimaryKey||t.isIdentity}},[_,he,pe,e,ve,ye,be,xe]),Ce=(0,t.useMemo)(()=>e.columns.filter(e=>!e.isReadOnly&&!e.isIdentity),[e]),G=(0,t.useMemo)(()=>Ce.filter(e=>!e.isNullable||e.name===_?.columnName),[Ce,_?.columnName]),we=Io(e,(0,t.useMemo)(()=>G.map(e=>({column:e})),[G]),(0,t.useMemo)(()=>{let t=new Map(e.columns.map(e=>[e.name,e]));return(e.primaryKeys??[]).map(e=>t.get(e)).filter(e=>!!e)},[e]),pe??``),Te=W&&ge!==null&&!we.isPending,Ee=(0,t.useCallback)(async t=>{if(!_||!ge)return;let n=e.columns.find(e=>e.name===_.columnName),r=t;if(n&&Wn(n))try{r=JSON.parse(t)}catch{}try{let t=Dr(e,ge,G.map(e=>e.name)),n=(await fe.query(t,ge.variables))?.value?.data?.[0];if(!n)throw Error(`Row no longer exists.`);let i={};for(let e of G)i[e.name]=n[e.name]??null;i[_.columnName]=r,await we.update(i)}catch(e){throw U(`Save failed: ${e.message}`,`error`),e}},[_,ge,e,G,we,fe,U]),De=(0,t.useCallback)(()=>{v(null)},[]),Oe=(0,t.useCallback)(e=>{if(!_||me<0)return;let t=e===`prev`?Math.max(0,me-1):Math.min(I.length-1,me+1);M(t,_.columnName)},[_,me,I.length,M]),ke=(0,t.useMemo)(()=>new Set(e.columns.filter(e=>!e.isReadOnly&&!e.isIdentity&&!e.isPrimaryKey&&!Hn(e.dbType)&&!Kn(e)).map(e=>e.name)),[e]),Ae=(0,t.useMemo)(()=>new Set(e.columns.filter(e=>e.paramType.startsWith(`Boolean`)).map(e=>e.name)),[e]),je=(0,t.useCallback)((t,n,r)=>{let i=In(t,e);if(!i)return;let a=y.current.find(n=>Mn(n,e,-1)===t);D(e=>{let o=new Map(e),s={...o.get(t)?.changes??{}},c=a?.[n];return a!==void 0&&c==null==(r==null)&&String(c??``)===String(r??``)?delete s[n]:s[n]=r,Object.keys(s).length===0?o.delete(t):o.set(t,{pk:i,changes:s}),o})},[e]),Me=(0,t.useCallback)(()=>D(new Map),[]),Ne=(0,t.useCallback)(async()=>{let t=[...O.current.entries()];if(t.length!==0){A(!0);try{let n=e.columns.filter(e=>ke.has(e.name)),r=(e.primaryKeys??[]).map(t=>e.columns.find(e=>e.name===t)).filter(e=>!!e),i=new Set(t.flatMap(([,e])=>Object.keys(e.changes))),a=n.filter(e=>!e.isNullable||i.has(e.name)),o=[...new Set([...e.primaryKeys??[],...a.map(e=>e.name)])],s=Or(e,t.map(([,e])=>e.pk),o);if(!s)throw Error(`The edited rows have no resolvable primary keys.`);let c=(await fe.query(s.query,s.variables))?.value?.data??[];if(c.length!==t.length)throw Error(`Only ${c.length} of ${t.length} edited rows still exist. Refresh and retry.`);let l=Fo(e,n,r,c,t=>O.current.get(Mn(t,e,-1))?.changes);await j.saveDelta({updated:l}),D(new Map)}catch(e){U(`Save failed: ${e.message}`,`error`)}finally{A(!1)}}},[e,ke,j,fe,U]),Pe=(0,t.useRef)(e.name);(0,t.useEffect)(()=>{Pe.current!==e.name&&(Pe.current=e.name,O.current.size>0&&(D(new Map),U(`Unsaved cell edits were discarded on table switch`,`error`)))},[e.name,U]);let Fe=(0,t.useMemo)(()=>new Map([...E].map(([e,t])=>[e,t.changes])),[E]),Ie=(0,t.useCallback)(()=>{let t=Pc(ee,e);window.dispatchEvent(new CustomEvent(`bifrostql:visualize`,{detail:{table:e.graphQlName,filter:t,filterType:ar(e)}}))},[ee,e]);return B?(0,r.jsx)(Xt,{variant:`destructive`,className:`m-2`,children:(0,r.jsxs)(Qt,{children:[`Error: `,B.message]})}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(vc,{columns:N,data:I,tableName:e.name,pageCount:ne,pageIndex:F,pageSize:te,sorting:P,columnFilters:ee,loading:ie,fetching:z,primaryKeys:e.primaryKeys??[],selectable:W&&!L,selectedRowId:s,onRowSelect:c,onSortingChange:ae,onColumnFiltersChange:oe,onPageIndexChange:H,onPageSizeChange:se,onEditRow:W&&!L?b:void 0,onDeleteRow:W&&!L?x:void 0,onDeleteSelected:W&&!L?S:void 0,onBulkEditSelected:W&&!L?T:void 0,inlineEditableColumns:ke,inlineBooleanColumns:Ae,pendingEdits:Fe,onCellCommit:W&&!L?je:void 0,onSaveAllEdits:Ne,onDiscardAllEdits:Me,savingEdits:k,stackingEnabled:u,onToggleStacking:d,exportRows:R,totalRows:re,groupableColumns:e.columns,grouping:L,onGroupingChange:ce,onGroupingSumChange:le,onVisualize:Ie}),(0,r.jsx)(fs,{open:p!==null,onOpenChange:e=>{e||m(null)},title:`Delete ${de} ${de===1?`row`:`rows`}?`,description:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`p`,{children:`This action cannot be undone.`}),f.error&&(0,r.jsx)(`p`,{className:`mt-2 text-sm text-destructive`,children:f.error.message})]}),confirmLabel:`Delete ${de===1?`row`:`${de} rows`}`,variant:`destructive`,isPending:f.isPending,onConfirm:ue}),(0,r.jsx)(Nc,{target:Se,onClose:De,onNavigate:Oe,onSave:Te?Ee:void 0,canNavigatePrev:me>0,canNavigateNext:me>=0&&me<I.length-1}),C!==null&&(0,r.jsx)(Sc,{table:e,pks:C,onClose:()=>w(null)}),h!==null&&(0,r.jsx)(Os,{table:e.graphQlName,editId:h,onClose:()=>g(null)})]})}function Ic(e){return new Set((e.manyToManyJoins??[]).map(e=>e.junctionTable))}function Lc(e){let t=Ic(e),n=e.multiJoins.filter(e=>!t.has(e.destinationTable)).map(e=>({kind:`child`,key:`child:${e.fieldName??e.destinationTable}`,join:e})),r=(e.manyToManyJoins??[]).map(e=>({kind:`m2m`,key:`m2m:${e.junctionTable}:${e.targetTable}`,m2m:e}));return[...n,...r]}function Rc(e,t){let n=new Set([...t.junctionSourceColumnNames,...t.junctionTargetColumnNames]);return e.columns.filter(e=>!e.isPrimaryKey&&!n.has(e.name))}function zc(e,t,n,r){let i=n.junctionSourceColumnNames;if(i.length===0)throw Error(`Many-to-many relationship '${n.name}' has no junction source columns.`);let a=jn(r,i.length),o=new Map(e.columns.map(e=>[e.name,e])),s=[],c=[],l={};i.forEach((t,r)=>{let i=o.get(t);if(!i)throw Error(`Junction table '${e.name}' has no column '${t}' (junction source column of many-to-many relationship '${n.name}').`);let u=i.paramType.replace(`!`,``),d=`src${r}`;s.push(`$${d}: ${u}`),c.push(`{ ${t}: { _eq: $${d} } }`),l[d]=Sn(a[r],u)});let u=c.length===1?c[0]:`{ and: [${c.join(`, `)}] }`,d=e.primaryKeys??[],f=Rc(e,n).map(e=>e.name),p=t.primaryKeys?.length?t.primaryKeys:n.targetColumnNames,m=t.labelColumn,h=[...p];m&&!p.includes(m)&&h.push(`label: ${m}`);let g=`${n.junctionTargetField} { ${h.join(` `)} }`,_=[...d,...f,g].join(` `);return{query:`query GetLinks_${e.name}(${s.join(`, `)}, $limit: Int, $offset: Int) { ${e.name}(filter: ${u} limit: $limit offset: $offset) { total offset limit data { ${_} } } }`,variables:l}}function Bc(e,t){let n=wr(e).map(e=>e.name);return n.length>0?n:[...t.targetColumnNames]}function Vc(e,t,n){X(e.name,`many-to-many target table name`);let r=Bc(e,t),i=t.targetColumnNames[0],a=e.labelColumn||r[0];for(let e of r)X(e,`many-to-many target identity column`);X(i,`many-to-many junction target column`),X(a,`many-to-many target label column`);let o=`${[...new Set([...r,i])].join(` `)} label: ${a}`,s=e.columns.find(e=>e.name===a);if(!s)throw Error(`Target table '${e.name}' has no column '${a}' (label column for the '${t.name}' many-to-many picker).`);let c=s.paramType.replace(`!`,``)===`String`,l=!!n&&n.trim()!==``&&c,u=l?`$limit: Int, $search: String`:`$limit: Int`,d=l?`filter: {${a}: {_contains: $search}} `:``;return{query:`query PickTarget(${u}) { ${e.name}(${d}limit: $limit sort: [${a}_asc]) { data { ${o} } } }`,identityColumns:r,linkColumn:i,serverSearch:c}}function Hc(e,t,n){let r=e[t.junctionTargetField];if(!r)return null;let i=Mn(r,n,0);return{id:i,label:r.label==null?i:String(r.label)}}function Uc(e,t,n){if(e.junctionSourceColumnNames.length!==1||e.junctionTargetColumnNames.length!==1)throw Error(`attachJunctionDetail supports single-column junction FKs only; this relationship uses a composite key which is not yet supported.`);let[r]=jn(t,1);return{[e.junctionSourceColumnNames[0]]:r,[e.junctionTargetColumnNames[0]]:n}}var Wc=200,Gc=50,Kc=500;function qc({m2m:e,parentRowId:t,onOpenColumn:n}){let i=W(),a=i.findTable(e.junctionTable),o=i.findTable(e.targetTable);return!a||!o?(0,r.jsx)(`div`,{className:`p-4 text-sm text-muted-foreground`,children:`Relationship schema unavailable.`}):(0,r.jsx)(Jc,{m2m:e,parentRowId:t,onOpenColumn:n,junction:a,target:o})}function Jc({m2m:e,parentRowId:a,onOpenColumn:o,junction:s,target:c}){let l=V(),u=(0,n.useQueryClient)(),{toast:d}=Mi(),[f,p]=(0,t.useState)(!1),[m,h]=(0,t.useState)(null),g=ho(s),_={query:null,variables:{}},v=null;try{_=zc(s,c,e,a)}catch(e){v=e}let{query:y,variables:b}=_,x=(0,t.useMemo)(()=>[`m2mRows`,e.junctionTable,e.targetTable,a],[e.junctionTable,e.targetTable,a]),{data:S,isLoading:C,error:w}=(0,n.useQuery)({queryKey:x,queryFn:()=>l.query(y,{...b,limit:Wc,offset:0}),enabled:!!y}),T=(0,t.useCallback)(()=>u.invalidateQueries({queryKey:x}),[u,x]),E=(0,t.useCallback)(async e=>{let t=Nn(e,s);if(!t)throw Error(`This link cannot be removed: its ${s.label} row is missing one or more key columns (${(s.primaryKeys??[]).join(`, `)||`none declared`}).`);await g.deleteRow(t),await T()},[s,g,T]);if(v)return(0,r.jsxs)(`div`,{className:`p-4 text-sm text-destructive`,children:[`Relationship misconfigured: `,v.message]});let D=S?.[s.name]?.data??[],O=Rc(s,e),k=s.isEditable!==!1,A=Bc(c,e),j=new Set;for(let t of D){let n=t[e.junctionTargetField];n&&(A.some(e=>n[e]==null)||j.add(An(A.map(e=>n[e]))))}return(0,r.jsxs)(`div`,{className:`flex flex-col min-h-0 flex-1 overflow-hidden`,children:[(0,r.jsxs)(`div`,{className:`flex items-center gap-2 px-2 py-1 bg-muted/20 border-b border-border shrink-0`,children:[(0,r.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full border border-border bg-muted/40 px-2 py-0.5 text-xs text-muted-foreground`,title:`Linked through ${s.label}`,children:[(0,r.jsx)(i.Link2,{className:`size-3`}),`via `,s.label]}),k&&(0,r.jsxs)(Z,{variant:`ghost`,size:`sm`,className:`h-7 px-2 text-xs ml-auto`,onClick:()=>p(!0),children:[(0,r.jsx)(i.Plus,{className:`size-3 mr-1`}),` Add link`]})]}),(0,r.jsxs)(`div`,{className:`flex-1 min-h-0 overflow-auto`,children:[w&&(0,r.jsxs)(`div`,{className:`p-3 text-sm text-destructive`,children:[`Error: `,w.message]}),C&&(0,r.jsxs)(`div`,{className:`flex items-center gap-2 p-3 text-sm text-muted-foreground`,children:[(0,r.jsx)(i.Loader2,{className:`size-4 animate-spin`}),` Loading…`]}),!C&&D.length===0&&(0,r.jsxs)(`div`,{className:`p-3 text-sm text-muted-foreground`,children:[`No linked `,c.label,`.`]}),D.length>0&&(0,r.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,r.jsx)(`thead`,{children:(0,r.jsxs)(`tr`,{className:`border-b border-border text-left text-xs text-muted-foreground`,children:[(0,r.jsx)(`th`,{className:`px-2 py-1 font-medium`,children:c.label}),O.map(e=>(0,r.jsx)(`th`,{className:`px-2 py-1 font-medium`,children:e.label},e.name)),k&&(0,r.jsx)(`th`,{className:`px-2 py-1 w-8`,"aria-label":`actions`})]})}),(0,r.jsx)(`tbody`,{children:D.map((t,n)=>{let a=Hc(t,e,c);return(0,r.jsxs)(`tr`,{className:`border-b border-border/50 hover:bg-muted/30`,children:[(0,r.jsx)(`td`,{className:`px-2 py-1`,children:a?(0,r.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,r.jsx)(M,{to:`/${c.name}/${a.id}`,className:`text-primary hover:underline`,children:a.label}),o&&(0,r.jsx)(Z,{variant:`ghost`,size:`icon-sm`,className:`size-5`,onClick:()=>o({tableName:c.name,filterId:a.id}),"aria-label":`Open ${a.label} in side column`,title:`Open in side column`,children:(0,r.jsx)(i.Search,{className:`size-3`})})]}):(0,r.jsx)(`span`,{className:`text-muted-foreground`,children:`—`})}),O.map(e=>(0,r.jsx)(`td`,{className:`px-2 py-1`,children:si(t[e.name],e)},e.name)),k&&(0,r.jsx)(`td`,{className:`px-2 py-1`,children:(0,r.jsx)(Z,{variant:`ghost`,size:`icon-sm`,className:`size-6 text-muted-foreground hover:text-destructive`,onClick:()=>h(t),disabled:g.isPending,"aria-label":`Detach ${a?.label??`link`}`,title:`Detach`,children:(0,r.jsx)(i.Unlink,{className:`size-3.5`})})})]},n)})})]}),D.length>=Wc&&(0,r.jsxs)(`div`,{className:`px-3 py-2 text-xs text-muted-foreground italic border-t border-border`,children:[`Showing the first `,Wc,` links. Detach some or narrow the parent selection to see more.`]})]}),f&&(0,r.jsx)(Yc,{target:c,junction:s,m2m:e,parentRowId:a,linkedIds:j,onClose:()=>p(!1),onLinked:T}),(0,r.jsx)(fs,{open:m!==null,onOpenChange:e=>{e||h(null)},title:`Detach this link?`,description:(0,r.jsxs)(`p`,{children:[`This removes the link row. The `,c.label,` record itself is not deleted.`]}),confirmLabel:`Detach`,variant:`destructive`,isPending:g.isPending,onConfirm:async()=>{try{m&&await E(m)}catch(e){d(`Detach failed: ${e.message}`,`error`)}finally{h(null)}}})]})}function Yc({target:e,junction:a,m2m:o,parentRowId:s,linkedIds:c,onClose:l,onLinked:u}){let d=V(),f=Io(a,a.columns.filter(e=>o.junctionSourceColumnNames.includes(e.name)||o.junctionTargetColumnNames.includes(e.name)).map(e=>({column:e})),[]),[p,m]=(0,t.useState)(``),[h,g]=(0,t.useState)(``);(0,t.useEffect)(()=>{let e=setTimeout(()=>g(p),300);return()=>clearTimeout(e)},[p]);let _=h.trim(),v=null,y=null;try{v=Vc(e,o,_)}catch(e){y=e}let{query:b,identityColumns:x,linkColumn:S,serverSearch:C}=v??{query:``,identityColumns:[],linkColumn:``,serverSearch:!1},w=C?Gc:Kc,{data:T,isLoading:E}=(0,n.useQuery)({queryKey:[`m2mTargets`,e.name,C?_:``],queryFn:({signal:e})=>d.query(b,C&&_?{limit:w,search:_}:{limit:w},{signal:e}),enabled:v!==null}),D=T?.[e.name]?.data??[],O=C||!_?D:D.filter(e=>$o(e,`label`,_)),k=D.length>=w,[A,j]=(0,t.useState)(null),M=(0,t.useCallback)(async(e,t)=>{if(c.has(e))return;let n;try{n=Uc(o,s,t)}catch(e){j(e);return}j(null);try{await f.insert(n)}catch{return}await u(),l()},[f,o,s,c,u,l]);return y?(0,r.jsx)(es,{open:!0,onOpenChange:e=>{e||l()},children:(0,r.jsxs)(as,{className:`max-w-md`,children:[(0,r.jsx)(os,{children:(0,r.jsxs)(cs,{children:[`Add `,e.label,` link`]})}),(0,r.jsxs)(`p`,{className:`text-sm text-destructive`,children:[`Relationship misconfigured: `,y.message]})]})}):(0,r.jsx)(es,{open:!0,onOpenChange:e=>{e||l()},children:(0,r.jsxs)(as,{className:`max-w-md`,children:[(0,r.jsx)(os,{children:(0,r.jsxs)(cs,{children:[`Add `,e.label,` link`]})}),(0,r.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,r.jsx)(i.Search,{className:`size-4 text-muted-foreground`}),(0,r.jsx)($t,{autoFocus:!0,placeholder:`Search ${e.label}…`,value:p,onChange:e=>m(e.target.value)})]}),A&&(0,r.jsx)(`p`,{className:`text-sm text-destructive`,children:A.message}),f.error&&(0,r.jsx)(`p`,{className:`text-sm text-destructive`,children:f.error.message}),(0,r.jsxs)(`div`,{className:`max-h-72 overflow-auto border border-border rounded-md`,children:[E&&(0,r.jsxs)(`div`,{className:`flex items-center gap-2 p-3 text-sm text-muted-foreground`,children:[(0,r.jsx)(i.Loader2,{className:`size-4 animate-spin`}),` Loading…`]}),!E&&O.length===0&&(0,r.jsx)(`div`,{className:`p-3 text-sm text-muted-foreground`,children:`No matches.`}),O.map((e,t)=>{let n=An(x.map(t=>e[t])),i=String(e[S]??``),a=e.label==null?n:String(e.label),o=c.has(n);return(0,r.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-between gap-2 text-left px-3 py-1.5 text-sm hover:bg-muted/50 disabled:opacity-50 disabled:hover:bg-transparent`,disabled:f.isPending||o,onClick:()=>M(n,i),children:[(0,r.jsx)(`span`,{className:`truncate`,children:a}),o&&(0,r.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground italic`,children:`Already linked`})]},t)}),!E&&k&&(0,r.jsx)(`div`,{className:`px-3 py-1.5 text-xs text-muted-foreground italic border-t border-border`,children:C?`Showing the first ${w} matches — type to narrow.`:`Showing the first ${w} rows; some may not be listed.`})]})]})})}function Xc(e){return e.kind===`child`?e.join.destinationTable:e.m2m.targetTable}function Zc({parentTable:e,selectedRowId:n,onClose:a,onOpenColumn:o}){let s=W(),c=Lc(e),[l,u]=(0,t.useState)(c[0]?.key??``),[d,f]=(0,t.useState)(!1),[p,m]=(0,t.useState)(null),h=c.find(e=>e.key===l)??c[0];if((0,t.useEffect)(()=>{m(null)},[l,n]),c.length===0||!s.data)return null;let g=h.kind===`child`?s.findTable(h.join.destinationTable):void 0,_=(g?.multiJoins?.length??0)>0;return(0,r.jsxs)(`div`,{className:`border-t-2 border-primary/20 flex flex-col flex-1 shrink-0`,children:[(0,r.jsxs)(`div`,{className:`flex items-center gap-1 px-2 py-1 bg-muted/30 border-b border-border shrink-0`,children:[(0,r.jsx)(Z,{variant:`ghost`,size:`icon-sm`,onClick:()=>f(!d),"aria-label":d?`Expand detail panel`:`Collapse detail panel`,title:d?`Expand detail panel`:`Collapse detail panel`,children:d?(0,r.jsx)(i.ChevronUp,{className:`size-3.5`}):(0,r.jsx)(i.ChevronDown,{className:`size-3.5`})}),(0,r.jsx)(`span`,{className:`text-xs text-muted-foreground mr-1`,children:`Detail:`}),(0,r.jsx)(`div`,{className:`flex items-center gap-0.5 overflow-x-auto`,children:c.map(t=>{let a=s.findTable(Xc(t))?.label??Xc(t),c=t.key===h.key;return(0,r.jsxs)(`span`,{className:`group/tab inline-flex items-center`,children:[(0,r.jsx)(Z,{variant:c?`secondary`:`ghost`,size:`sm`,className:Y(`text-xs h-7 px-2.5`,c&&`font-semibold`),onClick:()=>u(t.key),children:a}),o&&t.kind===`child`&&(0,r.jsx)(Z,{variant:`ghost`,size:`icon-sm`,className:`opacity-0 group-hover/tab:opacity-100 size-5 shrink-0`,onClick:()=>o({tableName:t.join.destinationTable,filterTable:e.name,filterId:n,...wn(t.join)?{}:{filterColumn:t.join.destinationColumnNames[0]}}),"aria-label":`Open in side column`,title:`Open in side column`,children:(0,r.jsx)(i.PanelRight,{className:`size-3`})})]},t.key)})}),a&&(0,r.jsx)(Z,{variant:`ghost`,size:`icon-sm`,onClick:a,className:`ml-auto shrink-0`,"aria-label":`Close detail panel`,title:`Close detail panel`,children:(0,r.jsx)(i.X,{className:`size-3.5`})})]}),!d&&(0,r.jsx)(`div`,{className:`flex-1 flex flex-col`,children:h.kind===`child`&&!g?(0,r.jsx)(`div`,{className:`p-4 text-sm text-muted-foreground`,children:`This related table is not available.`}):h.kind===`child`?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`div`,{className:`flex-1 min-h-[11rem] overflow-hidden flex flex-col`,children:(0,r.jsx)(Fc,{table:g,id:n,filterTable:e.name,...wn(h.join)?{}:{filterColumn:h.join.destinationColumnNames[0]},selectedRowId:_?p:void 0,onRowSelect:_?m:void 0,onOpenColumn:o},`${h.key}-${n}`)}),_&&p&&(0,r.jsx)(`div`,{className:`flex-1 flex flex-col`,children:(0,r.jsx)(Zc,{parentTable:g,selectedRowId:p,onClose:()=>m(null),onOpenColumn:o})})]}):(0,r.jsx)(qc,{m2m:h.m2m,parentRowId:n,onOpenColumn:o},`${h.key}-${n}`)})]})}var Qc=(0,t.createContext)({mainTable:null,columns:[],focusedIndex:0,focusColumn:()=>{},closeColumn:()=>{}}),$c=(0,t.createContext)({register:()=>{},unregister:()=>{}});function el({children:e}){let[n,i]=(0,t.useState)(null),[a,o]=(0,t.useState)(0),s=(0,t.useCallback)(e=>{i(e)},[]),c=(0,t.useCallback)(()=>{i(null),o(0)},[]),l=(0,t.useCallback)(e=>{if(o(e),!n)return;let t=n.columnRefs.get(e);t&&t.scrollIntoView({behavior:`smooth`,block:`nearest`,inline:`nearest`})},[n]),u=(0,t.useCallback)(e=>{n&&e>0&&n.onClose(e-1)},[n]),d=(0,t.useMemo)(()=>n?n.columns.map((e,t)=>({panel:e,element:n.columnRefs.get(t+1)??null})):[],[n]),f=(0,t.useMemo)(()=>({mainTable:n?.mainTable??null,columns:d,focusedIndex:a,focusColumn:l,closeColumn:u}),[n,d,a,l,u]),p=(0,t.useMemo)(()=>({register:s,unregister:c}),[s,c]);return(0,r.jsx)($c.Provider,{value:p,children:(0,r.jsx)(Qc.Provider,{value:f,children:e})})}function tl(){return(0,t.useContext)(Qc)}function nl(){return(0,t.useContext)($c)}function rl(e,t){return e.tableName===t.tableName&&e.filterTable===t.filterTable&&e.filterId===t.filterId&&e.filterColumn===t.filterColumn}function il(e,t){let n=e[e.length-1];if(n&&rl(n,t))return e;let r=e.findIndex(e=>rl(e,t));return r>=0?e.slice(0,r+1):[...e,t]}function al(e,t){return t<0?[]:t>=e.length?e:e.slice(0,t)}function ol(e,t,n){let r=e=>n(e)??e,i=[{index:-1,label:r(e)}];for(let n=0;n<t.length;n++){let a=t[n],o=a.filterTable?r(a.filterTable):r(n===0?e:t[n-1].tableName),s=a.filterId?`from ${o} #${a.filterId}`:void 0;i.push({index:n,label:r(a.tableName),detail:s,frame:a})}return i}var sl=`edit-db:panel:`,cl=16;function ll(e,t,n){return Math.min(n,Math.max(t,e))}function ul(e,t,n,r){try{let i=localStorage.getItem(sl+e),a=i===null?NaN:Number(i);return Number.isFinite(a)?ll(a,n,r):t}catch{return t}}function dl(e,t){try{localStorage.setItem(sl+e,String(Math.round(t)))}catch{}}function fl({key:e,initial:n,min:r,max:i,axis:a,invert:o=!1}){let[s,c]=(0,t.useState)(()=>ul(e,n,r,i)),l=(0,t.useRef)(null),u=(0,t.useCallback)(t=>{let n=ll(t,r,i);return c(n),dl(e,n),n},[e,r,i]);return{size:s,onPointerDown:(0,t.useCallback)(e=>{if(e.button!==0)return;e.preventDefault();let t=e.currentTarget;t.setPointerCapture(e.pointerId),l.current={start:a===`x`?e.clientX:e.clientY,startSize:s};let n=e=>{if(!l.current)return;let t=((a===`x`?e.clientX:e.clientY)-l.current.start)*(o?-1:1);u(l.current.startSize+t)},r=e=>{l.current=null;try{t.releasePointerCapture(e.pointerId)}catch{}t.removeEventListener(`pointermove`,n),t.removeEventListener(`pointerup`,r),t.removeEventListener(`pointercancel`,r)};t.addEventListener(`pointermove`,n),t.addEventListener(`pointerup`,r),t.addEventListener(`pointercancel`,r)},[u,a,o,s]),onKeyDown:(0,t.useCallback)(e=>{let t=a===`x`?`ArrowRight`:`ArrowDown`,n=a===`x`?`ArrowLeft`:`ArrowUp`;if(e.key!==t&&e.key!==n)return;e.preventDefault();let r=(e.key===t?1:-1)*(o?-1:1);u(s+r*cl)},[u,a,o,s])}}function pl(e,t){return e.find(e=>e.name===t)}function ml(){let{table:e,id:n,filterTable:a}=k(),{loading:o,error:s,data:c}=W(),[l,u]=(0,t.useState)(null),d=fl({key:`detail-height`,initial:300,min:120,max:800,axis:`y`,invert:!0}),[f,p]=(0,t.useState)([]),[m,h]=(0,t.useState)(!0),[g,_]=(0,t.useState)(new Set),v=(0,t.useRef)(e);e!==v.current&&(v.current=e,f.length>0&&p([]),g.size>0&&_(new Set));let y=(0,t.useCallback)(e=>{_(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),{register:b,unregister:x}=nl(),S=(0,t.useRef)(null),C=(0,t.useRef)(new Map),w=(0,t.useMemo)(()=>c?pl(c,e):void 0,[c,e]),T=w?Lc(w).length>0:!1,E=(0,t.useCallback)(e=>{p(t=>il(t,e))},[]),D=(0,t.useCallback)(e=>{h(e),e||p([])},[]),O=m?E:void 0,A=(0,t.useCallback)(e=>{p(t=>t.filter((t,n)=>n!==e))},[]),j=(0,t.useCallback)(e=>{p(t=>al(t,e+1))},[]),M=(0,t.useMemo)(()=>ol(e??``,f,e=>{if(c)return pl(c,e)?.label}),[e,f,c]);if((0,t.useEffect)(()=>{let t=C.current;t.set(0,S.current);for(let e of t.keys())e>f.length&&t.delete(e);return b({mainTable:e,columns:f,columnRefs:t,onClose:A}),()=>x()},[e,f,b,x,A]),!e)return(0,r.jsx)(`div`,{className:`p-5 text-center text-muted-foreground`,children:`Table missing`});if(o)return(0,r.jsxs)(`div`,{className:`flex items-center justify-center gap-2 p-5`,children:[(0,r.jsx)(i.Loader2,{className:`size-4 animate-spin text-muted-foreground`}),(0,r.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`Loading...`})]});if(s)return(0,r.jsx)(Xt,{variant:`destructive`,className:`m-2`,children:(0,r.jsxs)(Qt,{children:[`Error: `,s.message]})});if(!w)return(0,r.jsx)(`div`,{className:`p-5 text-center text-muted-foreground`,children:`Table not found`});let N=(0,r.jsx)(Fc,{table:w,id:n,filterTable:a,selectedRowId:T?l:void 0,onRowSelect:T?u:void 0,onOpenColumn:O,stackingEnabled:m,onToggleStacking:D});if(f.length===0)return(0,r.jsx)(`div`,{className:`flex flex-col flex-1 min-h-0`,children:(0,r.jsxs)(`div`,{ref:S,className:`flex flex-col flex-1 min-h-0 min-w-0`,children:[(0,r.jsx)(`div`,{className:`flex-1 min-h-0 overflow-hidden flex flex-col`,children:N}),T&&l&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`div`,{role:`separator`,"aria-orientation":`horizontal`,"aria-label":`Resize detail panel`,tabIndex:0,"data-testid":`detail-resize-handle`,className:`h-1.5 shrink-0 cursor-row-resize select-none touch-none hover:bg-primary/40 focus-visible:bg-primary/60 focus-visible:outline-none`,onPointerDown:d.onPointerDown,onKeyDown:d.onKeyDown}),(0,r.jsx)(`div`,{className:`min-h-0 overflow-y-auto flex flex-col`,style:{flex:`0 0 ${d.size}px`},children:(0,r.jsx)(Zc,{parentTable:w,selectedRowId:l,onClose:()=>u(null),onOpenColumn:O})})]})]})});let P=f.length-1,ee=(e,t)=>t||g.has(e);return(0,r.jsxs)(`div`,{className:`flex flex-col flex-1 min-h-0`,children:[(0,r.jsx)(hl,{crumbs:M,onCrumbClick:j,activeIndex:f.length-1}),(0,r.jsxs)(`div`,{className:`flex-1 min-h-0 overflow-y-auto flex flex-col gap-0.5 p-0.5`,children:[(0,r.jsx)(gl,{title:w.label,selectedRowId:f[0]?.filterId,expanded:ee(-1,!1),active:!1,onToggle:()=>y(-1),onRef:e=>{S.current=e,C.current.set(0,e)},children:N}),f.map((e,t)=>{let n=t===P;return(0,r.jsx)(gl,{title:pl(c,e.tableName)?.label??e.tableName,selectedRowId:f[t+1]?.filterId,expanded:ee(t,n),active:n,onToggle:()=>y(t),onClose:()=>A(t),onRef:e=>{C.current.set(t+1,e)},children:(0,r.jsx)(Fc,{table:pl(c,e.tableName),id:e.filterId,filterTable:e.filterTable,filterColumn:e.filterColumn,onOpenColumn:E})},`${e.tableName}|${e.filterTable??``}|${e.filterId??``}|${e.filterColumn??``}`)})]})]})}function hl({crumbs:e,onCrumbClick:t,activeIndex:n}){return(0,r.jsx)(`nav`,{"aria-label":`Drill-down breadcrumb`,className:`flex items-center gap-1 px-2 py-1 bg-muted/20 border-b border-border shrink-0 overflow-x-auto`,children:e.map((e,a)=>{let o=e.index===n,s=a===0;return(0,r.jsxs)(`span`,{className:`inline-flex items-center gap-1 shrink-0`,children:[!s&&(0,r.jsx)(i.ChevronRight,{className:`size-3 text-muted-foreground shrink-0`}),(0,r.jsxs)(Z,{variant:o?`secondary`:`ghost`,size:`sm`,className:Y(`h-6 px-2 text-xs gap-1`,o&&`font-semibold`),onClick:()=>t(e.index),"aria-current":o?`page`:void 0,title:e.detail?`${e.label} (${e.detail})`:e.label,children:[s&&(0,r.jsx)(i.Home,{className:`size-3`}),(0,r.jsx)(`span`,{className:`truncate max-w-[12rem]`,children:e.label}),e.detail&&(0,r.jsx)(`span`,{className:`text-muted-foreground font-normal truncate max-w-[10rem]`,children:e.detail})]})]},`${e.index}-${e.label}`)})})}function gl({title:e,selectedRowId:t,expanded:n,active:a,onToggle:o,onClose:s,onRef:c,children:l}){return(0,r.jsxs)(`div`,{ref:c,className:`shrink-0 flex flex-col border border-border rounded-sm overflow-hidden`,children:[(0,r.jsxs)(`div`,{className:`flex items-center gap-1 px-2 py-1 bg-muted/30 border-b border-border shrink-0`,children:[(0,r.jsx)(`button`,{type:`button`,onClick:o,className:`inline-flex items-center justify-center size-5 shrink-0 text-muted-foreground hover:text-foreground`,"aria-expanded":n,"aria-label":n?`Collapse table`:`Expand table`,title:n?`Collapse`:`Expand`,children:n?(0,r.jsx)(i.ChevronDown,{className:`size-3.5`}):(0,r.jsx)(i.ChevronRight,{className:`size-3.5`})}),(0,r.jsx)(`span`,{className:`text-xs font-medium truncate`,children:e}),a&&(0,r.jsx)(`span`,{className:`text-[10px] uppercase tracking-wide text-primary/70 shrink-0`,children:`active`}),!n&&t&&(0,r.jsxs)(`span`,{className:`text-xs text-muted-foreground truncate`,children:[`#`,t]}),(0,r.jsx)(`div`,{className:`flex-1`}),s&&(0,r.jsx)(Z,{variant:`ghost`,size:`icon-sm`,className:`shrink-0`,onClick:s,"aria-label":`Close column`,title:`Close column`,children:(0,r.jsx)(i.X,{className:`size-3.5`})})]}),n&&(0,r.jsx)(`div`,{className:`flex flex-col min-h-[18rem] max-h-[34rem]`,children:l})]})}function _l(e,t){if(!e||e.length===0)return``;if(t){let n=e.find(e=>e.key===t);if(n)return n.value}return e[0].value}function vl(){let e=k(),{loading:n,error:a,data:o}=W(),{columns:s,focusedIndex:c,focusColumn:l,closeColumn:u}=tl(),[d,f]=(0,t.useState)(``),p=D(),{search:m}=A(),h=!!m.get(`filter`),{back:g,hasBack:_}=O(),v=e?.table,y=s.length>0,b=(0,t.useMemo)(()=>o?.find(e=>e.graphQlName===v),[o,v]),x=(0,t.useMemo)(()=>b?.columns?.filter(e=>bn(e.paramType)||_n(e.paramType)).map(e=>({key:e.name,value:`${e.name},${e.paramType}`,label:e.label})),[b]),{defaultSearchColumns:S}=de(),C=v?S?.[v]:void 0,[w,T]=(0,t.useState)(()=>_l(x,C));(0,t.useEffect)(()=>{f(``),T(_l(x,C))},[x,C]);let E=()=>{if(!d)return;let[e,t]=w.split(`,`);if(!t)return;let n=t.replace(`!`,``);if(_n(n)){let r=xn(d,n);if(r===null)return;p(`?filter=["${e}", "_eq", ${JSON.stringify(r)}, "${t}"]`)}else n===`String`&&p(`?filter=["${e}", "_contains", ${JSON.stringify(d)}, "${t}"]`)};return n?(0,r.jsxs)(`div`,{className:`flex items-center gap-2 p-2.5`,children:[(0,r.jsx)(i.Loader2,{className:`size-4 animate-spin text-muted-foreground`}),(0,r.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:`Loading...`})]}):a?(0,r.jsx)(Xt,{variant:`destructive`,className:`m-2`,children:(0,r.jsxs)(Qt,{children:[`Error: `,a.message]})}):(0,r.jsxs)(`header`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1.5 px-3 py-1.5 min-h-[2.5rem]`,children:[(0,r.jsxs)(`div`,{className:`flex items-center gap-1.5 overflow-x-auto min-w-0 flex-1`,children:[(0,r.jsx)(Z,{variant:`ghost`,size:`icon-sm`,onClick:()=>_&&g(),disabled:!_,"aria-label":`Go back`,title:`Go back`,className:`shrink-0`,children:(0,r.jsx)(i.ChevronLeft,{className:`size-4`})}),y?(0,r.jsxs)(`div`,{className:`flex items-center gap-1 overflow-x-auto`,children:[(0,r.jsx)(`button`,{type:`button`,onClick:()=>l(0),className:`flex items-center gap-1 px-2 py-0.5 rounded text-xs font-medium whitespace-nowrap transition-colors ${c===0?`bg-primary text-primary-foreground`:`bg-muted/50 text-muted-foreground hover:bg-muted`}`,children:b?.label??ce(e?.table??``)}),s.map((e,t)=>{let n=o?.find(t=>t.graphQlName===e.panel.tableName)?.label??ce(e.panel.tableName);return(0,r.jsxs)(`span`,{className:`inline-flex items-center gap-1 pl-2 pr-1 py-0.5 rounded text-xs font-medium whitespace-nowrap transition-colors ${c===t+1?`bg-primary text-primary-foreground`:`bg-muted/50 text-muted-foreground hover:bg-muted`}`,children:[(0,r.jsx)(`button`,{type:`button`,onClick:()=>l(t+1),className:`whitespace-nowrap`,children:n}),(0,r.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),u(t+1)},className:`rounded-sm hover:bg-background/50 p-px`,"aria-label":`Close ${n}`,children:(0,r.jsx)(i.X,{className:`size-3`})})]},`${e.panel.tableName}-${e.panel.filterId??t}`)})]}):(0,r.jsx)(`h2`,{className:`text-sm font-semibold whitespace-nowrap`,children:b?.label??e?.table??`(Select)`})]}),x&&x.length>0&&(0,r.jsxs)(`div`,{className:`flex items-center border border-border rounded-md overflow-hidden flex-[2_2_16rem] min-w-[12rem]`,children:[(0,r.jsxs)(qi,{value:w,onValueChange:T,children:[(0,r.jsx)(Yi,{size:`sm`,className:`w-auto min-w-[120px] shrink-0 border-0 rounded-none border-r border-border h-8 text-xs`,children:(0,r.jsx)(Ji,{})}),(0,r.jsx)(Xi,{children:x.map(e=>(0,r.jsx)(Q,{value:e.value,children:e.label},e.key))})]}),(0,r.jsxs)(`div`,{className:`relative flex-1 min-w-[180px]`,children:[(0,r.jsx)(i.Search,{className:`absolute left-3 top-1/2 -translate-y-1/2 size-3.5 text-muted-foreground pointer-events-none`}),(0,r.jsx)($t,{type:`search`,value:d,onChange:e=>f(e.target.value),onKeyDown:e=>e.key===`Enter`&&E(),className:`h-8 border-0 rounded-none focus-visible:ring-0 focus-visible:ring-offset-0`,style:{paddingLeft:`2.25rem`},placeholder:`Search...`})]}),(0,r.jsxs)(Z,{variant:`ghost`,size:`sm`,onClick:E,className:`shrink-0 rounded-none border-l border-border h-8 px-3 text-xs`,children:[(0,r.jsx)(i.Filter,{className:`size-3.5`}),`Filter`]}),h&&(0,r.jsx)(Z,{variant:`ghost`,size:`sm`,onClick:()=>{f(``);let e=new URLSearchParams(m.toString());e.delete(`filter`);let t=e.toString();p(t?`?${t}`:`?`)},title:`Clear filter`,"aria-label":`Clear filter`,className:`shrink-0 rounded-none border-l border-border h-8 px-2 text-xs text-muted-foreground`,children:(0,r.jsx)(i.X,{className:`size-3.5`})})]}),b&&(0,r.jsxs)(`div`,{className:`flex items-center gap-px border border-border rounded-md overflow-hidden shrink-0`,children:[(0,r.jsxs)(Z,{variant:`ghost`,size:`sm`,onClick:()=>p(`/`),title:`Back to table list`,className:`text-muted-foreground text-xs h-8 px-3 rounded-none`,children:[(0,r.jsx)(i.Home,{className:`size-3.5`}),`Home`]}),b?.isEditable&&(0,r.jsxs)(Z,{variant:`default`,size:`sm`,onClick:()=>p(`edit/`),className:`h-8 text-xs px-4 rounded-none`,children:[(0,r.jsx)(i.Plus,{className:`size-3.5`}),`Add`]})]})]})}var yl=class extends t.Component{constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){let{onError:n,section:r}=this.props;console.error(`Error in ${r??`component`}:`,e,t),n?.(e,t)}handleRetry=()=>{this.setState({hasError:!1,error:null})};render(){let{hasError:e,error:t}=this.state,{children:n,fallback:a,section:o}=this.props;return e?a||(0,r.jsx)(`div`,{className:`flex items-center justify-center p-5 min-h-[100px]`,children:(0,r.jsxs)(Xt,{variant:`destructive`,className:`max-w-[400px]`,children:[(0,r.jsx)(i.AlertCircle,{className:`size-4`}),(0,r.jsxs)(Zt,{children:[`Something went wrong`,o?` in ${o}`:``]}),(0,r.jsxs)(Qt,{className:`mt-2`,children:[(0,r.jsx)(`p`,{children:t?.message??`An unexpected error occurred`}),(0,r.jsx)(Z,{variant:`destructive`,size:`sm`,className:`mt-3`,onClick:this.handleRetry,children:`Try Again`})]})]})}):n}};function bl(){let{loading:e,error:t,data:n}=W();return e?(0,r.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-muted-foreground`,children:[(0,r.jsx)(i.Database,{className:`size-10 animate-pulse`}),(0,r.jsx)(`p`,{className:`text-sm`,children:`Loading schema...`})]}):t?(0,r.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-4 max-w-md mx-auto text-center`,children:[(0,r.jsx)(i.Database,{className:`size-12 text-destructive`}),(0,r.jsxs)(`div`,{children:[(0,r.jsx)(`h2`,{className:`text-lg font-semibold text-foreground`,children:`Connection Error`}),(0,r.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:t.message})]})]}):n.length===0?(0,r.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-4 max-w-md mx-auto text-center`,children:[(0,r.jsx)(i.Database,{className:`size-12 text-muted-foreground/50`}),(0,r.jsxs)(`div`,{children:[(0,r.jsx)(`h2`,{className:`text-lg font-semibold text-foreground`,children:`No Tables Found`}),(0,r.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`This database doesn't contain any tables. It may be a new or empty database.`}),(0,r.jsx)(`p`,{className:`mt-3 text-xs text-muted-foreground/70`,children:`Create tables in your database and reconnect, or try a different connection.`})]})]}):(0,r.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-6 max-w-lg mx-auto text-center`,children:[(0,r.jsxs)(`div`,{className:`flex items-center gap-3 text-muted-foreground/50`,children:[(0,r.jsx)(i.Table2,{className:`size-10`}),(0,r.jsx)(i.MousePointerClick,{className:`size-6`})]}),(0,r.jsxs)(`div`,{children:[(0,r.jsx)(`h2`,{className:`text-lg font-semibold text-foreground`,children:`Select a Table`}),(0,r.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:`Choose a table from the sidebar to browse and edit its data.`})]}),(0,r.jsxs)(`div`,{className:`text-xs text-muted-foreground/60 border border-border rounded-md px-4 py-3 bg-muted/30`,children:[(0,r.jsxs)(`p`,{className:`font-medium text-muted-foreground mb-1`,children:[n.length,` table`,n.length===1?``:`s`,` available`]}),(0,r.jsxs)(`p`,{className:`leading-relaxed`,children:[n.slice(0,8).map(e=>e.label).join(`, `),n.length>8?`, and ${n.length-8} more`:``]})]})]})}function xl({children:e}){let{loading:t,error:n}=W();return t?(0,r.jsxs)(`div`,{className:`flex items-center justify-center flex-1 gap-3 text-muted-foreground`,children:[(0,r.jsx)(i.Loader2,{className:`size-6 animate-spin`}),(0,r.jsx)(`span`,{className:`text-sm`,children:`Connecting to database...`})]}):n?(0,r.jsx)(`div`,{className:`flex items-center justify-center flex-1`,children:(0,r.jsxs)(Xt,{variant:`destructive`,className:`max-w-lg`,children:[(0,r.jsx)(i.AlertCircle,{className:`size-4`}),(0,r.jsx)(Zt,{children:`Database Connection Error`}),(0,r.jsxs)(Qt,{className:`mt-2`,children:[(0,r.jsx)(`p`,{className:`text-sm`,children:n.message}),(0,r.jsx)(`p`,{className:`text-xs text-muted-foreground mt-2`,children:`Check your connection string and ensure the database server is running.`})]})]})}):(0,r.jsx)(r.Fragment,{children:e})}function Sl(){let[e,n]=(0,t.useState)(!0),a=fl({key:`sidebar-width`,initial:240,min:150,max:560,axis:`x`});return(0,r.jsx)(xl,{children:(0,r.jsx)(el,{children:(0,r.jsxs)(`div`,{className:`grid h-full flex-1 min-h-0 grid-rows-[auto_1fr]`,style:{gridTemplateColumns:e?`${a.size}px 1fr`:`0px 1fr`},children:[(0,r.jsxs)(`div`,{className:`col-span-full sticky top-0 z-50 bg-background border-b border-border flex items-center`,children:[(0,r.jsx)(Z,{variant:`ghost`,size:`icon`,className:`md:hidden ml-1 shrink-0`,onClick:()=>n(!e),"aria-label":`Toggle sidebar`,title:`Toggle sidebar`,children:(0,r.jsx)(i.PanelLeft,{className:`size-5`})}),(0,r.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,r.jsx)(yl,{section:`Header`,children:(0,r.jsxs)(N,{children:[(0,r.jsx)(F,{path:`/:table/*`,element:(0,r.jsx)(vl,{})}),(0,r.jsx)(F,{path:`/:table`,element:(0,r.jsx)(vl,{})}),(0,r.jsx)(F,{path:`/`,element:(0,r.jsx)(vl,{})})]})})})]}),(0,r.jsxs)(`nav`,{"aria-label":`Tables`,className:`relative border-r border-border overflow-hidden min-h-0 ${e?``:`hidden`} md:block`,children:[(0,r.jsx)(yl,{section:`Table List`,children:(0,r.jsx)(Hi,{})}),(0,r.jsx)(`div`,{role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize table list`,tabIndex:0,"data-testid":`sidebar-resize-handle`,className:`absolute inset-y-0 right-0 w-1.5 cursor-col-resize select-none touch-none hover:bg-primary/40 focus-visible:bg-primary/60 focus-visible:outline-none`,onPointerDown:a.onPointerDown,onKeyDown:a.onKeyDown})]}),(0,r.jsxs)(`main`,{className:`flex flex-col overflow-hidden min-h-0 px-1 py-0.5`,children:[(0,r.jsx)(yl,{section:`Data Panel`,children:(0,r.jsxs)(N,{children:[(0,r.jsx)(F,{path:`/:table/from/:filterTable/:id/edit/:editId`,element:(0,r.jsx)(ml,{})}),(0,r.jsx)(F,{path:`/:table/from/:filterTable/:id`,element:(0,r.jsx)(ml,{})}),(0,r.jsx)(F,{path:`/:table/:id/edit/:editId`,element:(0,r.jsx)(ml,{})}),(0,r.jsx)(F,{path:`/:table/:id`,element:(0,r.jsx)(ml,{})}),(0,r.jsx)(F,{path:`/:table/edit/:editId`,element:(0,r.jsx)(ml,{})}),(0,r.jsx)(F,{path:`/:table/edit`,element:(0,r.jsx)(ml,{})}),(0,r.jsx)(F,{path:`/:table`,element:(0,r.jsx)(ml,{})}),(0,r.jsx)(F,{path:`/`,element:(0,r.jsx)(bl,{})})]})}),(0,r.jsx)(yl,{section:`Data Edit`,children:(0,r.jsxs)(N,{children:[(0,r.jsx)(F,{path:`/:table/from/:filterTable/:id/edit/:editId`,element:(0,r.jsx)(Ds,{})}),(0,r.jsx)(F,{path:`/:table/:id/edit/:editId`,element:(0,r.jsx)(Ds,{})}),(0,r.jsx)(F,{path:`/:table/edit/:editId`,element:(0,r.jsx)(Ds,{})}),(0,r.jsx)(F,{path:`/:table/edit`,element:(0,r.jsx)(Ds,{})})]})})]})]})})})}function Cl({onLocate:e}){let n=E();return(0,t.useEffect)(()=>{e?.(n)},[n,e]),(0,r.jsx)(Sl,{})}function wl({uri:e,fetcher:i,uiPath:a,onLocate:o,showStats:s=!1,tables:c,defaultColumns:l,trailingColumns:u,defaultSort:d,defaultSearchColumns:f,tableActions:p,saveFile:m}){let h=(0,t.useMemo)(()=>i||(e?new z(e):null),[e,i]),g=(0,t.useMemo)(()=>({showStats:s,tables:c,defaultColumns:l,trailingColumns:u,defaultSort:d,defaultSearchColumns:f,tableActions:p,saveFile:m}),[s,c,l,u,d,f,p,m]),_=(0,t.useMemo)(()=>new n.QueryClient({defaultOptions:{queries:{staleTime:3e5,retry:1}}}),[]);if(!h)throw Error("Editor requires either a `fetcher` (GraphQLFetcher) or a `uri` prop to reach the GraphQL endpoint; neither was provided.");return(0,r.jsx)(n.QueryClientProvider,{client:_,children:(0,r.jsx)(ae,{value:h,children:(0,r.jsx)(ue,{config:g,children:(0,r.jsx)(ji,{children:(0,r.jsx)(j,{path:a||`/`,children:(0,r.jsx)(fe,{children:(0,r.jsx)(Cl,{onLocate:o})})})})})})})}var Tl=[`query`,`form`,`report`,`dashboard`],El=class extends Error{constructor(e){super(e),this.name=`SavedObjectConflictError`}},Dl=`/_saved-objects`;function Ol(e=``){let t=`${e}${Dl}`,n=encodeURIComponent;async function r(e){try{return(await e.json())?.error??`${e.status} ${e.statusText}`}catch{return`${e.status} ${e.statusText}`}}return{async list(e,i,a){let o=e?`${t}/${n(e)}`:t,s=await fetch(o,{signal:i});if(!s.ok)throw Error(`Failed to list saved objects: ${await r(s)}`);let c=await s.json();if(!Array.isArray(c))throw Error(`Failed to list saved objects: the server did not return a list.`);let l=c.map(kl),u=l.filter(e=>e!==null);return u.length!==l.length&&a?.(l.length-u.length),u},async get(e,i,a){let o=await fetch(`${t}/${n(e)}/${n(i)}`,{signal:a});if(o.status===404)return null;if(!o.ok)throw Error(`Failed to load saved object: ${await r(o)}`);return kl(await o.json())},async put(e,i){let a=await fetch(`${t}/${n(e.type)}/${n(e.id)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e),signal:i});if(a.status===409)throw new El(await r(a));if(!a.ok)throw Error(`Failed to save object: ${await r(a)}`);let o=kl(await a.json());if(o===null)throw Error(`Server returned a malformed saved object.`);return o},async remove(e,i,a){let o=await fetch(`${t}/${n(e)}/${n(i)}`,{method:`DELETE`,signal:a});if(!o.ok&&o.status!==404)throw Error(`Failed to delete saved object: ${await r(o)}`)}}}function kl(e){if(typeof e!=`object`||!e)return null;let t=e;return typeof t.id!=`string`||t.id.length===0||typeof t.type!=`string`||!Tl.includes(t.type)||typeof t.name!=`string`||typeof t.version!=`number`||!(`definition`in t)?null:{id:t.id,type:t.type,name:t.name,folder:typeof t.folder==`string`?t.folder:void 0,definition:t.definition,version:t.version}}var Al=4,jl=new Set([`text`,`textarea`,`number`,`checkbox`,`date`,`datetime`,`select`]);function Ml(e){return typeof e==`string`&&jl.has(e)?e:`text`}function Nl(e){return typeof e!=`number`||!Number.isFinite(e)?1:Math.min(Al,Math.max(1,Math.trunc(e)))}function Pl(e){if(typeof e!=`object`||!e)return null;let t=e;return typeof t.column!=`string`||t.column===``?null:{column:t.column,label:typeof t.label==`string`?t.label:t.column,control:Ml(t.control),readOnly:t.readOnly===!0,required:t.required===!0,include:t.include!==!1}}function Fl(e){if(typeof e!=`object`||!e)return null;let t=e;return typeof t.relationship!=`string`||typeof t.childTable!=`string`||!Array.isArray(t.parentColumns)||!Array.isArray(t.childColumns)||!t.parentColumns.every(e=>typeof e==`string`)||!t.childColumns.every(e=>typeof e==`string`)||t.parentColumns.length===0||t.parentColumns.length!==t.childColumns.length?null:{relationship:t.relationship,childTable:t.childTable,parentColumns:t.parentColumns,childColumns:t.childColumns,label:typeof t.label==`string`?t.label:t.childTable,mode:t.mode===`stacked`?`stacked`:`grid`}}function Il(e){if(typeof e!=`object`||!e)return null;let t=e;if(typeof t.table!=`string`||t.table===``||!Array.isArray(t.fields))return null;let n=t.fields.map(Pl).filter(e=>e!==null);return n.length===0?null:{table:t.table,title:typeof t.title==`string`?t.title:t.table,columns:Nl(t.columns),fields:n,subforms:Array.isArray(t.subforms)?t.subforms.map(Fl).filter(e=>e!==null):void 0}}function Ll(e){return e.fields.filter(e=>e.include)}var Rl=new Set([`text`,`textarea`,`number`,`checkbox`,`date`,`datetime`,`select`]);function zl(e){return e!==void 0&&Rl.has(e)?e:void 0}function Bl(e,t){return{control:zl(t?.widget)??e.control,readOnly:e.readOnly||t?.readOnly===!0,visible:e.include&&t?.visible!==!1}}function Vl(e){switch(e){case`textarea`:return{kind:`textarea`};case`checkbox`:return{kind:`checkbox`};case`select`:return{kind:`select`};case`number`:return{kind:`input`,type:`number`};case`date`:return{kind:`input`,type:`date`};case`datetime`:return{kind:`input`,type:`datetime-local`};default:return{kind:`input`,type:`text`}}}function Hl(e,t,n){let r=Math.max(0,t-1);switch(n){case`first`:return 0;case`last`:return r;case`prev`:return Math.max(0,Math.min(r,e-1));case`next`:return Math.max(0,Math.min(r,e+1))}}function Ul(e,t,n){return Hl(e,t,n)!==e}function Wl(e,t){return t<=0?`0 of 0`:`${e+1} of ${t}`}function Gl(e,t,n){return n.sourceColumnNames.length>0&&n.sourceColumnNames.length===n.destinationColumnNames.length&&n.sourceColumnNames.every(t=>e.columns.some(e=>e.name===t))&&n.destinationColumnNames.every(e=>t.columns.some(t=>t.name===e))}function Kl(e,t,n,r){if(!r||!Gl(e,t,n))return null;let i=[],a=[],o={};for(let e=0;e<n.sourceColumnNames.length;e++){let s=n.sourceColumnNames[e],c=n.destinationColumnNames[e],l=r[s];if(l==null)return null;let u=t.columns.find(e=>e.name===c)?.paramType.replace(`!`,``)??`String`,d=`parent_${s}`;i.push(`$${d}: ${u}`),a.push(`{${c}: {_eq: $${d}}}`),o[d]=Sn(l,u)}return{params:i,filter:a.length===1?a[0]:`{and: [${a.join(`, `)}]}`,variables:o}}function ql(e,t){return!t||e.sourceColumnNames.length!==e.destinationColumnNames.length?{}:Object.fromEntries(e.destinationColumnNames.map((n,r)=>[n,t[e.sourceColumnNames[r]]]))}function Jl(e){return{table:e.name,title:e.label,columns:1,fields:e.columns.map(e=>({column:e.name,label:e.label,control:e.paramType.startsWith(`Boolean`)?`checkbox`:e.paramType.startsWith(`Int`)||e.paramType.startsWith(`Float`)||e.paramType.startsWith(`Decimal`)?`number`:`text`,readOnly:e.isReadOnly||e.isIdentity,required:!e.isNullable,include:!0}))}}function Yl({parent:e,child:i,subform:a,row:o}){let s=V(),c=(0,n.useQueryClient)(),l=ho(i),[u,d]=(0,t.useState)(null),f=(0,t.useMemo)(()=>({name:a.relationship,fieldName:a.relationship,sourceColumnNames:a.parentColumns,destinationTable:i.name,destinationColumnNames:a.childColumns}),[a,i.name]),p=(0,t.useMemo)(()=>Kl(e,i,f,o),[e,i,f,o]),m=(0,t.useMemo)(()=>i.columns.map(e=>(X(e.name,`form subform field`),e.name)),[i]),h=(0,t.useMemo)(()=>p?(X(i.name,`form subform table`),`query FormSubform_${i.name}(${p.params.join(`, `)}) { ${i.name}(filter: ${p.filter}) { data { ${m.join(` `)} } } }`):null,[i.name,m,p]),g=[`formSubform`,e.name,i.name,Mn(o,e,0)],{data:_,isLoading:v,error:y}=(0,n.useQuery)({queryKey:g,queryFn:()=>s.query(h,p.variables),enabled:!!h}),b=(0,t.useMemo)(()=>Jl(i),[i]),x=(0,t.useMemo)(()=>ql(f,o),[f,o]);if(!p)return(0,r.jsx)(`p`,{style:Xl.notice,children:`Related records unavailable: this relationship is incomplete.`});if(v)return(0,r.jsxs)(`p`,{style:Xl.notice,children:[`Loading `,a.label,`…`]});if(y)return(0,r.jsxs)(`p`,{role:`alert`,style:Xl.error,children:[`Failed to load `,a.label,`: `,y.message]});let S=_?.[i.name]?.data??[],C=async e=>{let t=Nn(e,i);t&&(await l.deleteRow(t),await c.invalidateQueries({queryKey:g}))},w=async()=>{d(null),await c.invalidateQueries({queryKey:g})};return(0,r.jsxs)(`section`,{style:Xl.root,"aria-label":a.label,children:[(0,r.jsx)(`h3`,{style:Xl.title,children:a.label}),(0,r.jsxs)(`button`,{type:`button`,onClick:()=>d({kind:`create`}),children:[`Add `,a.label]}),u?(0,r.jsx)(`div`,{style:Xl.childForm,children:(0,r.jsx)(au,{table:i,definition:b,hiddenFields:a.childColumns,initialValues:u.kind===`create`?x:void 0,startInNewMode:u.kind===`create`,initialPkRoute:u.kind===`edit`?Mn(u.row,i,u.index??0):void 0,onClose:()=>{w()}},u.kind===`create`?`create`:Mn(u.row,i,u.index??0))}):S.length===0?(0,r.jsx)(`p`,{style:Xl.notice,children:`No related records.`}):a.mode===`grid`?(0,r.jsxs)(`table`,{style:Xl.table,children:[(0,r.jsx)(`thead`,{children:(0,r.jsxs)(`tr`,{children:[i.columns.map(e=>(0,r.jsx)(`th`,{style:Xl.cell,children:e.label},e.name)),(0,r.jsx)(`th`,{})]})}),(0,r.jsx)(`tbody`,{children:S.map((e,t)=>(0,r.jsxs)(`tr`,{children:[i.columns.map(t=>(0,r.jsx)(`td`,{style:Xl.cell,children:String(e[t.name]??``)},t.name)),(0,r.jsxs)(`td`,{children:[(0,r.jsx)(`button`,{type:`button`,onClick:()=>d({kind:`edit`,row:e,index:t}),children:`Edit`}),(0,r.jsx)(`button`,{type:`button`,onClick:()=>C(e),disabled:l.isPending,children:`Delete`})]})]},Mn(e,i,t)))})]}):(0,r.jsx)(`div`,{children:S.map((e,t)=>(0,r.jsxs)(`article`,{style:Xl.card,children:[i.columns.map(t=>(0,r.jsxs)(`div`,{children:[(0,r.jsxs)(`strong`,{children:[t.label,`: `]}),String(e[t.name]??``)]},t.name)),(0,r.jsx)(`button`,{type:`button`,onClick:()=>d({kind:`edit`,row:e,index:t}),children:`Edit`}),(0,r.jsx)(`button`,{type:`button`,onClick:()=>C(e),disabled:l.isPending,children:`Delete`})]},Mn(e,i,t)))})]})}var Xl={root:{marginTop:20,borderTop:`1px solid #d1d5db`,paddingTop:12},title:{margin:`0 0 8px`,fontSize:15},notice:{color:`#6b7280`,fontSize:13},error:{color:`#b91c1c`,fontSize:13},table:{width:`100%`,borderCollapse:`collapse`,fontSize:13},cell:{textAlign:`left`,padding:5,borderBottom:`1px solid #e5e7eb`},card:{border:`1px solid #e5e7eb`,borderRadius:6,padding:8,marginBottom:8,fontSize:13},childForm:{minHeight:420,border:`1px solid #e5e7eb`,borderRadius:6,marginTop:8}},Zl={};function Ql(e){let t=e.lastIndexOf(`.`);return t>=0?e.slice(t+1):e}function $l(e,t){let n=e.findTable(t);if(n)return n;let r=Ql(t);return e.data.find(e=>e.graphQlName===t||e.dbName===t||e.graphQlName===r||e.dbName===r)}var eu=`\0new`;function tu(e,t){let n=new Set;for(let t of e)n.add(t.column.name);for(let e of t.primaryKeys??[])n.add(e);return[...n]}function nu(e,t){X(e.name,`form browse table name`);for(let e of t)X(e,`form browse selection field`);return`query FormBrowse_${e.name}($limit: Int, $offset: Int) { ${e.name}(limit: $limit offset: $offset) { total data { ${t.join(` `)} } } }`}function ru(e,t,n){return e===`checkbox`?!!n:(e===`date`||e===`datetime`)&&(n==null||typeof n==`string`)?Zo(n??void 0,e===`datetime`||Yo(t)&&!1):n==null?``:String(n)}function iu(e,t){let n={fields:{},form:null},r=e?.errors;if(Array.isArray(r)){let e=[];for(let i of r){let r=i.path?.[i.path.length-1];typeof r==`string`&&t.has(r)?n.fields[r]=i.message:e.push(i.message)}return n.form=e.length>0?e.join(`; `):null,n}return n.form=e instanceof Error?e.message:String(e),n}function au({table:e,definition:i,fieldMetadata:a,onClose:o,schema:s,initialValues:c=Zl,hiddenFields:l=[],startInNewMode:u=!1,initialPkRoute:d}){let f=V(),p=(0,n.useQueryClient)(),m=(0,t.useMemo)(()=>new Map(e.columns.map(e=>[e.name,e])),[e]),[h,g]=(0,t.useState)(d?{kind:`pk`,route:d}:{kind:`offset`,index:0}),[_,v]=(0,t.useState)(u?`new`:`browse`),[y,b]=(0,t.useState)(c),[x,S]=(0,t.useState)({}),[C,w]=(0,t.useState)(null),[T,E]=(0,t.useState)(``),[D,O]=(0,t.useState)(0),k=_===`new`,A=(0,t.useMemo)(()=>Ll(i).map(e=>{let t=m.get(e.column);if(!t)return null;let n=Bl(e,a?.[e.column]);return n.visible?{field:e,column:t,control:n.control,readOnly:n.readOnly}:null}).filter(e=>e!==null),[i,m,a]),j=(0,t.useCallback)(e=>!(e.readOnly||e.column.isReadOnly||e.column.isIdentity||e.column.isPrimaryKey&&!k),[k]),M=(0,t.useMemo)(()=>A.filter(j).map(e=>({column:e.column})),[A,j]),N=(0,t.useMemo)(()=>(e.primaryKeys??[]).map(e=>m.get(e)).filter(e=>!!e),[e,m]),P=(0,t.useMemo)(()=>new Set(M.map(e=>e.column.name)),[M]),ee=(0,t.useMemo)(()=>{let t=new Set(tu(A,e));for(let e of i.subforms??[])for(let n of e.parentColumns)t.add(n);return[...t]},[A,e,i.subforms]),F=(0,t.useMemo)(()=>{if(k||A.length===0)return null;if(h.kind===`offset`)return{text:nu(e,ee),variables:{limit:1,offset:h.index},kind:`offset`};let t=In(h.route,e),n=t?Pn(t,e):null;return n?{text:Dr(e,n,ee),variables:n.variables,kind:`pk`}:null},[k,A.length,h,e,ee]),{data:te,isLoading:ne,error:I}=(0,n.useQuery)({queryKey:[`formRunner`,e.name,h,k],queryFn:()=>f.query(F.text,F.variables),enabled:!k&&F!==null}),re=(0,t.useMemo)(()=>!te||!F?null:F.kind===`offset`?te[e.name]?.data?.[0]??null:te.value?.data?.[0]??null,[te,F,e.name]);(0,t.useEffect)(()=>{if(te&&F?.kind===`offset`){let t=te[e.name];t&&O(t.total)}},[te,F,e.name]);let L=k?eu:re?Mn(re,e,0):null,R=(0,t.useRef)(null),ie=(0,t.useRef)(!1);(0,t.useEffect)(()=>{if(R.current===L&&ie.current)return;if(R.current=L,ie.current=!1,S({}),w(null),k){b(c);return}let e={};for(let t of A)e[t.column.name]=re?.[t.column.name]??null;b(e)},[L,re,k,A,c]);let z=h.kind===`offset`?h.index:-1,B=Io(e,M,N,(0,t.useMemo)(()=>k||!re?``:Mn(re,e,z<0?0:z),[k,re,e,z])),ae=ho(e),oe=(0,t.useCallback)(e=>{v(`browse`),g(t=>({kind:`offset`,index:Hl(t.kind===`offset`?t.index:0,D,e)}))},[D]),H=(0,t.useCallback)(()=>{v(`new`)},[]),se=(0,t.useCallback)(()=>{let e=T.trim();e!==``&&(v(`browse`),g({kind:`pk`,route:e}))},[T]),ce=(0,t.useCallback)((e,t)=>{ie.current=!0,b(n=>({...n,[e]:t}))},[]),le=(0,t.useCallback)(async()=>{let t={};for(let e of A){if(!j(e))continue;let n=e.field.required||!e.column.isNullable,r=Oo(e.column,y[e.column.name],n);r&&(t[e.column.name]=r)}if(Object.keys(t).length>0){S(t),w(null);return}S({}),w(null);let n={};for(let e of P)n[e]=y[e];try{if(k){let t=(await B.insert(n))?.[e.name],r={},i=e.primaryKeys??[];for(let e of i){let n=m.get(e);r[e]=i.length===1&&n?.isIdentity?t:y[e]}v(`browse`),g({kind:`pk`,route:Fn(r,e)})}else await B.update(n),ie.current=!1,await p.invalidateQueries({queryKey:[`formRunner`,e.name]})}catch(e){let t=iu(e,P);S(t.fields),w(t.form)}},[A,j,y,P,k,B,e,m,p]),ue=(0,t.useCallback)(async()=>{let t=Nn(re,e);if(t)try{await ae.deleteRow(t),v(`browse`),g({kind:`offset`,index:Math.max(0,(z<0?0:z)-1)}),await p.invalidateQueries({queryKey:[`formRunner`,e.name]})}catch(e){w(e instanceof Error?e.message:String(e))}},[re,e,ae,z,p]);if(A.length===0)return(0,r.jsx)(`div`,{style:$.notice,children:`This form has no fields that match the current schema.`});let de=h.kind===`pk`?`key ${h.route}`:Wl(z,D),U=!k&&h.kind===`offset`&&D===0&&!ne;return(0,r.jsxs)(`div`,{style:$.root,children:[(0,r.jsxs)(`div`,{style:$.toolbar,role:`toolbar`,"aria-label":`Record navigation`,children:[(0,r.jsx)(`button`,{type:`button`,style:$.btn,onClick:()=>oe(`first`),disabled:k||!Ul(z,D,`first`),"aria-label":`First record`,children:`⏮`}),(0,r.jsx)(`button`,{type:`button`,style:$.btn,onClick:()=>oe(`prev`),disabled:k||!Ul(z,D,`prev`),"aria-label":`Previous record`,children:`◀`}),(0,r.jsx)(`span`,{style:$.position,"aria-label":`Record position`,children:k?`New record`:de}),(0,r.jsx)(`button`,{type:`button`,style:$.btn,onClick:()=>oe(`next`),disabled:k||!Ul(z,D,`next`),"aria-label":`Next record`,children:`▶`}),(0,r.jsx)(`button`,{type:`button`,style:$.btn,onClick:()=>oe(`last`),disabled:k||!Ul(z,D,`last`),"aria-label":`Last record`,children:`⏭`}),(0,r.jsx)(`span`,{style:$.spacer}),(0,r.jsx)(`input`,{style:$.jump,value:T,onChange:e=>E(e.target.value),placeholder:`Jump to key…`,"aria-label":`Jump to key`}),(0,r.jsx)(`button`,{type:`button`,style:$.btn,onClick:se,"aria-label":`Go to key`,children:`Go`}),(0,r.jsx)(`button`,{type:`button`,style:$.btn,onClick:H,"aria-label":`New record`,children:`New`}),o&&(0,r.jsx)(`button`,{type:`button`,style:$.btn,onClick:o,"aria-label":`Close form`,children:`✕`})]}),(0,r.jsxs)(`div`,{style:$.body,children:[(0,r.jsx)(`h2`,{style:$.title,children:i.title}),C&&(0,r.jsx)(`div`,{role:`alert`,style:$.formError,children:C}),I&&(0,r.jsxs)(`div`,{role:`alert`,style:$.formError,children:[`Failed to load record: `,I.message]}),U?(0,r.jsx)(`p`,{style:$.notice,children:`No records. Use “New” to create one.`}):(0,r.jsx)(`div`,{style:{...$.grid,gridTemplateColumns:`repeat(${i.columns}, minmax(0, 1fr))`},children:A.filter(e=>!l.includes(e.column.name)).map(e=>{let t=j(e),n=y[e.column.name],i=x[e.column.name],a=e.field.required||!e.column.isNullable;return(0,r.jsxs)(`label`,{style:$.field,children:[(0,r.jsxs)(`span`,{style:$.label,children:[e.field.label,a&&(0,r.jsx)(`span`,{style:$.req,children:` *`})]}),ou(e,n,t,a,ce),i&&(0,r.jsx)(`span`,{role:`alert`,style:$.fieldError,children:i})]},e.column.name)})}),!k&&re&&s&&(i.subforms??[]).map(t=>{let n=$l(s,t.childTable);return n?(0,r.jsx)(Yl,{parent:e,child:n,subform:t,row:re},t.relationship):(0,r.jsxs)(`p`,{style:$.notice,children:[t.label,` is not available in this schema.`]},t.relationship)})]}),(0,r.jsxs)(`div`,{style:$.footer,children:[(0,r.jsx)(`button`,{type:`button`,style:$.primaryBtn,onClick:le,disabled:B.isPending||U&&!k,children:k?`Create`:`Save`}),!k&&!U&&(0,r.jsx)(`button`,{type:`button`,style:$.btn,onClick:ue,disabled:ae.isPending,children:`Delete`})]})]})}function ou(e,t,n,i,a){let o=e.column.name,s=Vl(e.control),c={id:o,"aria-label":e.field.label,disabled:!n,style:$.control};if(s.kind===`checkbox`)return(0,r.jsx)(`input`,{...c,type:`checkbox`,checked:!!ru(`checkbox`,e.column,t),onChange:e=>a(o,e.target.checked)});if(s.kind===`textarea`)return(0,r.jsx)(`textarea`,{...c,rows:3,required:i,value:String(ru(`text`,e.column,t)),onChange:e=>a(o,e.target.value)});if(s.kind===`select`){let n=e.column.enumValues??[],s=e.column.enumLabels&&e.column.enumLabels.length===n.length?e.column.enumLabels:n;return(0,r.jsxs)(`select`,{...c,value:String(ru(`text`,e.column,t)),onChange:e=>a(o,e.target.value===``?null:e.target.value),children:[!i&&(0,r.jsx)(`option`,{value:``,children:`(none)`}),n.map((e,t)=>(0,r.jsx)(`option`,{value:e,children:s[t]??e},e))]})}return(0,r.jsx)(`input`,{...c,type:s.type,required:i,value:String(ru(e.control,e.column,t)),onChange:e=>a(o,e.target.value)})}function su({definition:e,fieldMetadata:t,onClose:n}){let i=W();if(i.loading)return(0,r.jsx)(`div`,{style:$.notice,children:`Loading schema…`});if(i.error)return(0,r.jsxs)(`div`,{style:$.notice,children:[`Could not load schema: `,i.error.message]});let a=$l(i,e.table);return a?(0,r.jsx)(au,{table:a,definition:e,fieldMetadata:t,onClose:n,schema:i}):(0,r.jsxs)(`div`,{style:$.notice,children:[`Table “`,e.table,`” is not in the current schema.`]})}var $={root:{display:`flex`,flexDirection:`column`,height:`100%`,minHeight:0},toolbar:{display:`flex`,alignItems:`center`,gap:6,padding:`8px 12px`,borderBottom:`1px solid var(--border, #d1d5db)`,flexWrap:`wrap`},position:{fontSize:13,color:`#374151`,minWidth:80,textAlign:`center`},spacer:{flex:1},jump:{padding:`4px 6px`,border:`1px solid var(--border, #d1d5db)`,borderRadius:6,font:`inherit`,fontSize:13,width:120},body:{flex:1,minHeight:0,overflow:`auto`,padding:16},title:{margin:`0 0 16px`,fontSize:18},grid:{display:`grid`,gap:14,maxWidth:720},field:{display:`flex`,flexDirection:`column`,gap:4,minWidth:0},label:{fontSize:12,fontWeight:600,color:`#374151`},control:{padding:`6px 8px`,border:`1px solid var(--border, #d1d5db)`,borderRadius:6,font:`inherit`,fontSize:13},footer:{display:`flex`,gap:8,padding:`8px 12px`,borderTop:`1px solid var(--border, #d1d5db)`},btn:{border:`1px solid var(--border, #d1d5db)`,background:`transparent`,borderRadius:6,padding:`6px 12px`,cursor:`pointer`,font:`inherit`},primaryBtn:{border:`1px solid #2563eb`,background:`#2563eb`,color:`#fff`,borderRadius:6,padding:`6px 16px`,cursor:`pointer`,font:`inherit`},req:{color:`#dc2626`},formError:{background:`#fef2f2`,border:`1px solid #fecaca`,color:`#b91c1c`,borderRadius:6,padding:`8px 10px`,marginBottom:12,fontSize:13},fieldError:{color:`#dc2626`,fontSize:12},notice:{padding:24,color:`#6b7280`}};function cu({fetcher:e,definition:i,fieldMetadata:a,onClose:o}){let s=(0,t.useMemo)(()=>new n.QueryClient({defaultOptions:{queries:{staleTime:3e5,retry:1}}}),[]);return(0,r.jsx)(n.QueryClientProvider,{client:s,children:(0,r.jsx)(ae,{value:e,children:(0,r.jsx)(ji,{children:(0,r.jsx)(fe,{children:(0,r.jsx)(su,{definition:i,fieldMetadata:a,onClose:o})})})})})}var lu=wl;e.DEFAULT_ROW_CAP=Si,e.Editor=wl,e.FormRunner=su,e.FormRunnerHost=cu,e.FormRunnerView=au,e.GraphQLRequestError=ie,e.HttpGraphQLFetcher=z,e.SAVED_OBJECTS_PATH=Dl,e.SavedObjectConflictError=El,e.UTF8_BOM=ui,e.buildCsv=hi,e.buildJson=vi,e.createSavedObjectsClient=Ol,e.default=lu,e.deserializeColumnFilters=xr,e.downloadTextFile=Ti,e.exportAllRows=xi,e.filenameFor=wi,e.formatCsvCell=pi,e.mimeFor=Ci,e.parseFormDefinition=Il,e.parseSavedObject=kl,e.resolveDefinitionTable=$l,e.serializeColumnFilters=br,e.useTableMutation=Io,e.visibleFields=Ll});