personal-page/_astro/Table.75cb7d63.js
woodpecker-bot 3b5ca4716c Updates
2023-11-25 21:42:49 +00:00

9 lines
6.4 KiB
JavaScript

import{r as h}from"./index.ed373d49.js";import{s as g,a as I}from"./index.8a9bd5b3.5eec2910.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 w=h,R=Symbol.for("react.element"),E=Symbol.for("react.fragment"),P=Object.prototype.hasOwnProperty,M=w.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,L={key:!0,ref:!0,__self:!0,__source:!0};function _(e,n,l){var r,c={},o=null,u=null;l!==void 0&&(o=""+l),n.key!==void 0&&(o=""+n.key),n.ref!==void 0&&(u=n.ref);for(r in n)P.call(n,r)&&!L.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:o,ref:u,props:c,_owner:M.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}),o=(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,i)=>{const a=i+1+v;return{page:a,current:a===d}})}return{changeOffset:o,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,o]=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=>{o(x=>n?[...x,m]:[m]),p(!1),v.current!==null&&(v.current.value="")},i=m=>{p(!1),o(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(F=>F.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:()=>{i(x)},children:"X"})]},x)),t.jsx("input",{ref:v,className:g.realInput,type:"text",onChange:b})]}),t.jsx("button",{onClick:()=>{l(null),o([])},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 o=[];return l?o=e.flatMap(u=>u[n]):o=e.map(u=>u[n]),o=[...new Set(o)],o=o.map(u=>({label:u,value:u})),o},[e,n]);return t.jsx(U,{options:c,isMultiple:l,onChange:r})}function $({keyData:e,onChange:n}){const[l,r]=h.useState(""),[c,o]=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})=>{o(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.search(e)!==-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()),o=h.useMemo(()=>e.filter(s=>Object.entries(l).every(([i,a])=>X(a,s[i]))),[e,l]),{items:u,changeOffset:f,getPaginationRange:d}=O({items:o,limit:10}),p=(s,i,a)=>{r(b=>a===null?(delete b[s],{...b}):{...b,[s]:{value:a,type:i}})};function v(s,i){return i.formatter!=null?t.jsx("div",{dangerouslySetInnerHTML:{__html:i.formatter(s)}}):i.type===j.Multiple?t.jsx("ul",{className:"text-start",children:s[i.key].map((a,b)=>t.jsx("li",{children:a},b))}):s[i.key]}function k(s){const i={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=>{i.onChange(a.target.value)}},i.key);case j.Number:return t.jsx($,{...i,onChange:a=>{p(s.key,s.type,a)}});case j.Select:return t.jsx(S,{data:e,...i});case j.Multiple:return t.jsx(S,{...i,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:I.table,children:[t.jsx("thead",{children:t.jsx("tr",{children:n.map((s,i)=>t.jsx("th",{children:t.jsxs("div",{className:"vstack",children:[s.header,k(s)]})},i))})}),t.jsx("tbody",{children:u.map((s,i)=>t.jsx("tr",{children:n.map((a,b)=>t.jsx("td",{children:v(s,a)},b))},i))})]})}),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};