personal-page/_astro/Table.Fyb9iCTi.js
woodpecker-bot 58501c036b Updates
2024-03-22 01:51:04 +00:00

9 lines
6.4 KiB
JavaScript

import{r as h}from"./index.LFf77hJu.js";import{s as g,a as F}from"./index.ed2e8225.fVIVoRGp.js";var C={exports:{}},N={};/**
* @license React
* react-jsx-runtime.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var I=h,R=Symbol.for("react.element"),E=Symbol.for("react.fragment"),L=Object.prototype.hasOwnProperty,P=I.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,M={key:!0,ref:!0,__self:!0,__source:!0};function _(e,n,l){var r,c={},i=null,u=null;l!==void 0&&(i=""+l),n.key!==void 0&&(i=""+n.key),n.ref!==void 0&&(u=n.ref);for(r in n)L.call(n,r)&&!M.hasOwnProperty(r)&&(c[r]=n[r]);if(e&&e.defaultProps)for(r in n=e.defaultProps,n)c[r]===void 0&&(c[r]=n[r]);return{$$typeof:R,type:e,key:i,ref:u,props:c,_owner:P.current}}N.Fragment=E;N.jsx=_;N.jsxs=_;C.exports=N;var t=C.exports,y=(e=>(e[e.Next=0]="Next",e[e.Prev=1]="Prev",e[e.First=2]="First",e[e.Last=3]="Last",e[e.To=4]="To",e))(y||{});function O({items:e,limit:n=30}){const l=(f,d)=>{switch(d.type){case"update":return{...f,[d.name]:d.value};default:return f}},[r,c]=h.useReducer(l,{offset:0,total:0,limit:n}),i=(f,d=1)=>{let p=0;switch(f){case 0:p=r.offset+r.limit;break;case 1:p=r.offset-r.limit;break;case 2:p=0;break;case 3:p=e.length-r.limit;break;case 4:p=(d-1)*r.limit;break}p<0||p>e.length-r.limit||c({type:"update",name:"offset",value:p})};function u(){const d=Math.ceil(r.offset/r.limit)+1,p=Math.ceil(e.length/r.limit),v=Math.max(d-5-1,0),k=Math.min(d+5,p);return Array.from({length:k-v},(s,o)=>{const a=o+1+v;return{page:a,current:a===d}})}return{changeOffset:i,getPaginationRange:u,items:e.slice(r.offset,r.offset+r.limit)}}var j=(e=>(e[e.Index=0]="Index",e[e.String=1]="String",e[e.Number=2]="Number",e[e.Select=3]="Select",e[e.Multiple=4]="Multiple",e))(j||{});function U({options:e,isMultiple:n=!1,onChange:l,value:r=[]}){const[c,i]=h.useState([]),[u,f]=h.useState([]),[d,p]=h.useState(!1),v=h.useRef(null);h.useEffect(()=>{f(e)},[e]),h.useEffect(()=>{if(c.length===0){l(null);return}l(n?c:c[0])},[c]);const k=()=>{p(!0),v.current?.focus()},s=m=>{i(x=>n?[...x,m]:[m]),p(!1),v.current!==null&&(v.current.value="")},o=m=>{p(!1),i(x=>(x.splice(m,1),[...x]))},a=m=>{m.currentTarget.contains(m.relatedTarget)||p(!1)},b=({target:m})=>{if(m.value===""){f(e);return}const x=e.filter(w=>w.label.toLowerCase().search(m.value.toLowerCase())!==-1);f(x)};return t.jsxs("div",{className:g.wrapper,onBlur:a,children:[t.jsxs("div",{className:g.input,onClick:()=>{k()},children:[c.map((m,x)=>t.jsxs("div",{className:g.selectedItem+" hstack",children:[t.jsx("div",{children:m}),t.jsx("div",{className:g.deleteItem,onClick:()=>{o(x)},children:"X"})]},x)),t.jsx("input",{ref:v,className:g.realInput,type:"text",onChange:b})]}),t.jsx("button",{onClick:()=>{l(null),i([])},children:"X"}),t.jsx("div",{className:g.optionList,hidden:!d,children:u.map((m,x)=>t.jsx("button",{className:g.optionItem,disabled:c.includes(m.value),onClick:()=>{s(m.value)},children:m.label},x))})]})}function S({data:e,keyData:n,isMultiple:l=!1,onChange:r}){const c=h.useMemo(()=>{let i=[];return l?i=e.flatMap(u=>u[n]):i=e.map(u=>u[n]),i=[...new Set(i)],i=i.map(u=>({label:u,value:u})),i},[e,n]);return t.jsx(U,{options:c,isMultiple:l,onChange:r})}function $({keyData:e,onChange:n}){const[l,r]=h.useState(""),[c,i]=h.useState("=");return h.useEffect(()=>{n([c,l===""?null:parseFloat(l)])},[l,c]),t.jsxs("div",{className:"hstack",children:[t.jsxs("select",{name:`number-select-${e}`,id:`number-select-${e}`,defaultValue:"=",onChange:({target:u})=>{i(u.value)},children:[t.jsx("option",{value:"=",children:"="}),t.jsx("option",{value:">",children:">"}),t.jsx("option",{value:"<",children:"<"}),t.jsx("option",{value:">=",children:">="}),t.jsx("option",{value:"<=",children:"<="})]}),t.jsx("input",{name:`number-input-${e}`,id:"foo",type:"number",placeholder:"1",onChange:({target:u})=>{r(u.value)}})]})}const A=(e,n)=>n.toLowerCase().search(e.toLowerCase())!==-1,T=(e,n)=>{if(!Array.isArray(e))throw new Error("Value should be an array in the form of [operator: string, value: number]");const[l,r]=e;if(r===null)return!0;switch(l){case"=":return n===r;case"<":return n<r;case">":return n>r;case"<=":return n<=r;case">=":return n>=r;default:return n===r}},V=(e,n)=>n===e,B=(e,n)=>e===null?!0:typeof e=="string"||typeof e=="number"?n.includes(e):e.every(l=>n.includes(l)),X=(e,n)=>{switch(e.type){case j.String:return A(e.value,n);case j.Number:return T(e.value,n);case j.Select:return V(e.value,n);case j.Multiple:return B(e.value,n)}return!0};function J({data:e,headers:n}){const[l,r]=h.useState({}),c=h.useRef(crypto.randomUUID()),i=h.useMemo(()=>e.filter(s=>Object.entries(l).every(([o,a])=>X(a,s[o]))),[e,l]),{items:u,changeOffset:f,getPaginationRange:d}=O({items:i,limit:10}),p=(s,o,a)=>{r(b=>a===null?(delete b[s],{...b}):{...b,[s]:{value:a,type:o}})};function v(s,o){return o.hasCustomCell?t.jsx("div",{dangerouslySetInnerHTML:{__html:s.customCell}}):o.type===j.Multiple?t.jsx("ul",{className:"text-start",children:s[o.key].map((a,b)=>t.jsx("li",{children:a},b))}):s[o.key]}function k(s){const o={key:s.key+c.current,keyData:s.key,value:l[s.key]?.value,onChange:a=>{p(s.key,s.type,a)}};switch(s.type){case j.String:return t.jsx("input",{onChange:a=>{o.onChange(a.target.value)}},o.key);case j.Number:return t.jsx($,{...o,onChange:a=>{p(s.key,s.type,a)}});case j.Select:return t.jsx(S,{data:e,...o});case j.Multiple:return t.jsx(S,{...o,isMultiple:!0,data:e})}return t.jsx(t.Fragment,{})}return t.jsxs(t.Fragment,{children:[t.jsx("section",{className:"hstack",children:t.jsx("button",{className:"ml-auto",onClick:()=>{r({}),c.current=crypto.randomUUID()},children:"Clear Filters"})}),t.jsx("section",{className:"mt-1 overflow-scroll",children:t.jsxs("table",{className:F.table,children:[t.jsx("thead",{children:t.jsx("tr",{children:n.map((s,o)=>t.jsx("th",{children:t.jsxs("div",{className:"vstack",children:[s.header,k(s)]})},o))})}),t.jsx("tbody",{children:u.map((s,o)=>t.jsx("tr",{children:n.map((a,b)=>t.jsx("td",{children:v(s,a)},b))},o))})]})}),t.jsxs("section",{className:"mt-1",children:[t.jsx("button",{onClick:()=>{f(y.First)},children:"First"}),t.jsx("button",{onClick:()=>{f(y.Prev)},children:"Prev"}),d().map(s=>t.jsx("button",{className:s.current?"btn-primary":"",onClick:()=>{f(y.To,s.page)},children:s.page},s.page)),t.jsx("button",{onClick:()=>{f(y.Next)},children:"Next"}),t.jsx("button",{onClick:()=>{f(y.Last)},children:"Last"})]})]})}export{J as default};