@warkypublic/oranguru 0.0.44 → 0.0.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib.cjs.js +1 -1
- package/dist/lib.cjs.js.map +1 -1
- package/dist/lib.es.js +1 -1
- package/dist/lib.es.js.map +1 -1
- package/package.json +15 -15
package/dist/lib.cjs.js
CHANGED
|
@@ -18,7 +18,7 @@ React keys must be passed directly to JSX without using spread:
|
|
|
18
18
|
d="M15 17.5a.5.5 0 0 1-1 0V3.707l-2.146 2.147a.5.5 0 0 1-.708-.708l3-3a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L15 3.707zM2.5 16a.5.5 0 0 1 0-1h9a.5.5 0 0 1 0 1zM5 12.5a.5.5 0 0 0 .5.5h6a.5.5 0 0 0 0-1h-6a.5.5 0 0 0-.5.5M8.5 10a.5.5 0 0 1 0-1h3a.5.5 0 0 1 0 1z"
|
|
19
19
|
></path>
|
|
20
20
|
</svg>
|
|
21
|
-
`,fe=r=>d.jsx("img",{alt:r.alt??"Sprite Image",src:`data:image/svg+xml;utf8,${r.sprite({...r,sprite:void 0})}`}),{Provider:Xn,useStore:K}=pe.createSyncStore((r,o)=>({_events:new EventTarget,_loadingList:H.CompactSelection.empty(),_page_data:{},_refresh:async()=>{const e=o();await e.loadPage(0,"all"),await e.refreshCells(),await e.reload?.()},_visibleArea:{height:1e4,width:1e3,x:0,y:0},_visiblePages:{height:0,width:0,x:0,y:0},addError:(e,...t)=>{const n=o();console.log("Gridler Error",n.uniqueid,e,t),r(U.produce(s=>{s.errors=[...s.errors,e]}))},errors:[],get:()=>o(),getCellContent:e=>{const t=o(),[n,s]=e,i=t.getRowBuffer(s);return i!==void 0?t.toCell(i,n):{allowOverlay:!1,kind:H.GridCellKind.Loading}},getCellsForSelection:(e,t)=>async()=>{const n=o();await n.setStateFN("_visibleArea",i=>e);const s=[];for(let i=e.y;i<e.y+e.height;i++){const a=[];for(let l=e.x;l<e.x+e.width;l++)a.push(n.getCellContent([l,i]));s.push(a)}return s},getGridSelectedRows:()=>{const e=o(),t=[],n=e._page_data,s=e.pageSize;if(e._gridSelectionRows)for(const i of e._gridSelectionRows){let a;for(const l in n)for(const f in n[l]){const u=Number(l)*s+Number(f);if(!isNaN(u)){if(Number(n[l][f]?._rownumber)===i+1){a=n[l][f];break}else if(u===i+1){a=n[l][f];break}}}a!==void 0&&t.push(a)}return t},getRowBuffer:e=>{const t=o();if(t.data&&t.data.length>0)return t.data[e]===void 0?{allowOverlay:!1,kind:H.GridCellKind.Loading}:t.data[e];const n=Math.max(0,Math.floor(e/t.pageSize)),s=t.pageSize*n,i=e-s;return t._page_data?.[n]?.[i]},getRowIndexByKey:async e=>{const t=o();let n=-1;if(t.ready){const s=t._page_data,i=t.pageSize,a=t.keyField??"id";for(const l in s){for(const f in s[l]){const u=Number(l)*i+Number(f);if(String(s[l][f]?.[a])===String(e)){n=s[l][f]?._rownumber>0?s[l][f]?._rownumber:u>0?u:-1;break}}if(n>0)return n}if(n>0)return n;if(typeof t.askAPIRowNumber=="function"){const l=await t.askAPIRowNumber(String(e));if(l&&l>=0)return l}}},getState:e=>o()[e],hasLocalData:!1,isEmpty:!0,isValuesInPages:()=>{const e=o();if(e.values&&Object.keys(e._page_data).length>0){let t=!1;for(const n in e._page_data){const s=e._page_data[Number(n)];for(const i of s){const a=e.keyField??"id",l=i?.[a];if(l!==void 0&&e.values.find(u=>String(u?.[a])===String(l))){t=!0;break}}if(t)return!0}}return!1},keyField:"id",loadPage:async(e,t)=>{const n=o(),s=e<0?0:e;if(!n._events.dispatchEvent(new CustomEvent("before_loadPage",{detail:{clearMode:t,page:e,state:n}})))return;const a=[],l=Object.keys(n.renderColumns??[1,2,3]).length,f=n.pageSize*s,u=n._page_data?.[s]?.length>0;if(t==="all"){n._active_requests?.forEach(c=>{c.controller?.abort?.()}),n.setState("_page_data",{}),n.setState("_active_requests",[]),n.loadPage(s);return}if(!n.useAPIQuery){console.warn("No useAPIQuery function defined, cannot load page",s);return}!u&&t!=="page"&&n.useAPIQuery?.(s).then(c=>{n.setStateFN("_page_data",m=>({...m,[s]:c}));for(let m=s;m<=f+n.pageSize;m++)for(let g=0;g<=l;g++)a.push({cell:[g,m]});n._glideref?.updateCells(a),n._events.dispatchEvent(new CustomEvent("loadPage",{detail:{clearMode:t,data:c,page:e,state:n}}))}).catch(c=>{console.error("loadPage Error: ",s,c),n._events.dispatchEvent(new CustomEvent("loadPage_error",{detail:{clearMode:t,error:c,page:e,state:n}}))})},maxConcurrency:1,mounted:!1,onCellActivated:e=>{const t=o(),[n,s]=e;t._events.dispatchEvent(new CustomEvent("onCellActivated",{detail:{cell:e,col:n,row:s,state:t}})),t.glideProps?.onCellActivated?.(e)},onCellClicked:(e,t)=>{const n=o(),[s,i]=e,a=n.getRowBuffer(i);n.glideProps?.onCellClicked&&n.glideProps?.onCellClicked?.(e,t),n.values?.length&&n.values?.length>0?n.onChange&&n.onChange(n.values):a&&n.onChange&&n.onChange([a]),n._events.dispatchEvent(new CustomEvent("onCellClicked",{detail:{cell:e,col:s,row:i,state:n}}))},onCellEdited:(e,t)=>{const n=o(),[,s]=e;n._events.dispatchEvent(new CustomEvent("onCellEdited",{detail:{cell:e,newVal:t,row:s,state:n}})),n.glideProps?.onCellEdited?.(e,t)},onColumnMoved:(e,t)=>{const n=o(),s=n.renderColumns?.[e],i=n.renderColumns?.[t];s?.disableMove||i?.disableMove||n.setStateFN("colOrder",a=>{const l=a??n.renderColumns?.map((f,u)=>[f.id,u]).reduce((f,[u,c])=>({...f,[u]:c}),{});return!s?.id||!i?.id?l:{...l,[s?.id]:t,[i?.id]:e}})},onColumnProposeMove:(e,t)=>{const n=o(),s=n.renderColumns?.[e],i=n.renderColumns?.[t];return!(s?.disableMove||i?.disableMove)},onColumnResize:(e,t,n,s)=>{const i=o(),a=i.renderColumns?.find(l=>l.id===e.id);a?.disableResize||a?.maxWidth&&t<a?.maxWidth||a&&i.setStateFN("colSize",l=>l&&a&&l[a.id]===t?l:{...l,[a.id]:t})},onContextClick:(e,t,n,s)=>{const i=o(),a=i.renderColumns?.[n??-1],l=e==="menu"?[{leftSection:d.jsx(q.IconGrid4x4,{size:16}),title:i.title??"Grid"}]:a?[{leftSection:d.jsx(q.IconGrid4x4,{size:16}),title:i.title??"Grid"},{items:[{label:"Sort Ascending",leftSection:d.jsx(fe,{sprite:je}),onClick:()=>{i.setStateFN("colSort",f=>{const u=[...f??[]],c=u.findIndex(g=>g.id===a.id),m="asc";if(c<0){const g={direction:m,id:a.id,order:u?.length};u.push(g)}else c>=0&&(u[c].direction=m);return u})}},{label:"Sort Descending",leftSection:d.jsx(fe,{sprite:Ae}),onClick:()=>{i.setStateFN("colSort",f=>{const u=[...f??[]],c=u.findIndex(g=>g.id===a.id),m="desc";if(c<0){const g={direction:m,id:a.id,order:u?.length};u.push(g)}else c>=0&&(u[c].direction=m);return u})}},{label:`Filter ${a?.title??a?.id}`},{renderer:d.jsx(ke,{column:a,storeState:o()})}],label:`Column Settings for ${a?.title??a?.id}`,leftSection:d.jsx(q.IconGrid4x4,{size:16})}]:[];i.hideMenu?.(e),i.showMenu?.(e,{items:a?.getMenuItems?.(e,i,n&&s?i.getRowBuffer(s):void 0,a,l)??i.getMenuItems?.(e,i,n&&s?i.getRowBuffer(s):void 0,a,l)??l,x:t.clientX??t.bounds?.x,y:t.clientY??t.bounds?.y})},onHeaderClicked:(e,t)=>{const n=o();t.preventDefault();const s=n.renderColumns?.[e];s&&(s.disableSort||n.setStateFN("colSort",i=>{const a=[...i??[]],l=a.findIndex(f=>f.id===s.id);if(l<0){const f={direction:"asc",id:s.id,order:a?.length};a.push(f)}else l>=0&&a[l].direction==="asc"?a[l].direction="desc":l>=0&&a[l].direction==="desc"&&a.splice(l,1);return a}))},onHeaderMenuClick:(e,t)=>{const n=o(),s=n.renderColumns?.[e];if(!s)return;const i=[{label:`Sort ${s?.title??s?.id}`},{label:"Sort Ascending",leftSection:d.jsx(fe,{sprite:je}),onClick:()=>{n.setStateFN("colSort",l=>{const f=[...l??[]],u=f.findIndex(m=>m.id===s.id),c="asc";if(u<0){const m={direction:c,id:s.id,order:f?.length};f.push(m)}else u>=0&&(f[u].direction=c);return f})}},{label:"Sort Descending",leftSection:d.jsx(fe,{sprite:Ae}),onClick:()=>{n.setStateFN("colSort",l=>{const f=[...l??[]],u=f.findIndex(m=>m.id===s.id),c="desc";if(u<0){const m={direction:c,id:s.id,order:f?.length};f.push(m)}else u>=0&&(f[u].direction=c);return f})}},{isDivider:!0}],a=[...s.disableSort?[]:i,{label:`Filter ${s?.title??s?.id}`},{renderer:d.jsx(ke,{column:s,storeState:o()})},{isDivider:!0},{id:"refesh",label:"Refresh",onClick:()=>{o()._refresh?.()}}];n.hideMenu?.("header-menu"),n.showMenu?.("header-menu",{items:s?.getMenuItems?.("header-menu",n,void 0,s,a)??n.getMenuItems?.("header-menu",n,void 0,s,a),x:t.x,y:t.y})},onItemHovered:e=>{const t=o();if(t.setState("_activeTooltip",void 0),e.kind==="cell"){const n=t.renderColumns?.[e.location[0]];if(n?.tooltip&&typeof n?.tooltip=="string")t.setState("_activeTooltip",n?.tooltip);else if(n?.tooltip&&typeof n?.tooltip=="function"){const s=t.getRowBuffer(e.location[1]);t.setState("_activeTooltip",n?.tooltip(s,e.location[1],e.location[0]))}}},onVisibleRegionChanged:(e,t,n,s)=>{const i=o();i._scrollTimeout&&clearTimeout(i._scrollTimeout);const a=()=>{const l=o(),f=Math.max(0,Math.floor(e.y/l.pageSize)),u=Math.max(0,Math.floor(l._visiblePages.y/l.pageSize)),c=f-u;if(l.progressiveScroll&&c>1){const m=o(),g=(u+2)*m.pageSize*(m.rowHeight??22);m._glideref?.scrollTo(0,{amount:g,unit:"px"},"vertical");return}l.setState("_visiblePages",e)};i.setState("_scrollTimeout",setTimeout(()=>{a()},100))},pageSize:50,ready:!1,refreshCells:(e,t,n)=>{const s=o(),i=[],a=Object.keys(s.renderColumns??[1,2,3]).length,l=e&&e>0?e:0,f=t&&t>=l?t:l+s.pageSize;for(let u=l;u<=f;u++)if(n&&n>0)i.push({cell:[n,u]});else for(let c=0;c<=a;c++)i.push({cell:[c,u]});s._glideref?.updateCells(i)},setState:(e,t)=>{r(U.produce(n=>{n[e]=t}))},setStateFN:(e,t)=>new Promise((s,i)=>{r(U.produce(a=>{if(typeof t=="function")a[e]=t(a[e]);else throw i(new Error(`Not a function ${t}`)),Error(`Not a function ${t}`)})),s()}),toCell:(e,t)=>{const n=o(),i=n.renderColumns?.[t],a=i?.id??i?.title??String(t);if(a==null||e===void 0||e===null)return i?.Cell?i?.Cell(e,t,a,void 0,n):n.RenderCell?n.RenderCell(e,t,a,void 0,n):{allowOverlay:!1,kind:H.GridCellKind.Loading};try{const l=String(a).includes(".")?Un(a,e)??"":e?.[a];return i?.Cell?{kind:H.GridCellKind.Text,...i?.Cell(e,t,a,l,n)}:n.RenderCell?n.RenderCell(e,t,a,l,n):{allowOverlay:!0,data:l??"",displayData:String(l??""),kind:H.GridCellKind.Text}}catch{return n.RenderCell?n.RenderCell(e,t,a,e?.[a??""],n):{allowOverlay:!1,kind:H.GridCellKind.Loading,skeletonWidthVariability:50}}},total_rows:1e3,uniqueid:Te.getUUID()}),r=>{const[o,e]=r.useStore(n=>[n.setState,n.getState]),t=Fe();return S.useEffect(()=>{const n=e("onMounted");if(typeof n=="function"&&n(e,o),o("mounted",!0),window&&window.document&&!window.document.getElementById("portal")){const i=window.document.createElement("div");i.id="portal",i.setAttribute("data-gridler-portal",r.uniqueid),window.document.body.appendChild(i)}return e("_events").dispatchEvent(new CustomEvent("mounted",{detail:{}})),()=>{const s=e("onUnMounted");o("mounted",!1),e("_events").dispatchEvent(new CustomEvent("unmounted",{detail:{}})),typeof s=="function"&&s()}},[o,e]),e("_events").addEventListener("reload",n=>{e("_refresh")?.()}),{...r,colSort:r.defaultSort??e("colSort")??[],hideMenu:r.hideMenu??t.hide,scrollToRowKey:r.scrollToRowKey??r.selectedRowKey??e("scrollToRowKey"),showMenu:r.showMenu??t.show,total_rows:e("total_rows")??r.total_rows}});function Qn(r){const[o,e,t,n,s]=K(l=>[l.setStateFN,l.setState,l.getState,l.addError,l.mounted]),i=S.useCallback(async l=>{const f=t("columns"),u=t("colSort"),c=t("pageSize"),m=t("colFilters"),g=t("searchStr"),p=t("searchFields"),b=t("_active_requests"),E=t("keyField");e("loadingData",!0);try{if(r&&r.url){const R=new Headers;R.set("Authorization",`Token ${r.authtoken}`);const _=[{type:"limit",value:String(c??50)},{type:"offset",value:String((c??50)*l)}];u?.length&&u.length>0&&_.push({type:"sort",value:u?.map(v=>`${v.id} ${v.direction}`).reduce((v,O)=>`${v},${O}`)}),m?.filter(v=>v.value?.length>0)?.forEach(v=>{v.value&&v.value!==""&&_.push({name:`${v.id}`,op:v.operator,type:"searchop",value:v.value})}),g&&g!==""&&f?.filter(v=>!v.disableFilter&&!v.disableSearch&&!v.virtual&&v.id&&((p??[]).length==0||p?.includes(v.id)))?.forEach(v=>{_.push({name:`${v.id??""}`,op:"contains",type:"searchor",value:g})}),r.filter&&r.filter!==""&&_.push({name:"sql_filter",type:"custom-sql-w",value:r.filter}),(r.options??[]).length>0&&_.push(...r.options??[]);const k=f?.filter(v=>!v.virtual)?.map(v=>v.id)??[];if(r.hotfields&&r.hotfields.length>0&&k?.push(r.hotfields.join(",")),E&&(k.includes(E)||k.push(E)),k&&k.length>0&&_.push({type:"select-fields",value:k.join(",")}),_&&_.length>0){const v=re(_);for(const O in re(_))R.set(O,v[O])}const I=b?.findIndex(v=>v.page===l)??-1;if(b?.forEach(v=>{(v.page>=0&&v.page<l-2||l>=0&&v.page>l+2)&&v.controller?.abort?.()}),b&&I>=0&&b[I]){e("loadingData",!1);return}const N=new AbortController;await o("_active_requests",v=>[...v??[],{controller:N,page:l}]);const x=await fetch(`${r.url}?x-limit=${String(c??50)}&x-offset=${String((c??50)*l)}`,{headers:R,method:"GET",signal:N?.signal});if(x.ok){const v=x.headers.get("Content-Range")?.split("/");v?.[1]&&parseInt(v[1],10)>0&&e("total_rows",parseInt(v[1],10));const O=await x.json();return e("loadingData",!1),O??[]}n(`${x.status} ${x.statusText}`,"api",r.url),await o("_active_requests",v=>[...(v??[]).filter(O=>O.page!==l)])}}catch{}return e("loadingData",!1),[]},[t,r.authtoken,r.url,r.filter,JSON.stringify(r.options),e,o,n]),a=S.useCallback(async l=>{const f=t("colFilters");if(!l)return null;if(r&&r.url){const u=new Headers,c=[{type:"limit",value:String(10)},{type:"fetch-rownumber",value:l}];if(u.set("Authorization",`Token ${r.authtoken}`),f?.length&&f.length>0&&f?.filter(p=>p.value?.length>0)?.forEach(p=>{p.value&&p.value!==""&&u.set(`x-searchop-${p.operator}-${p.id}`,`${p.value}`)}),r.filter&&r.filter!==""&&c.push({name:"sql_filter",type:"custom-sql-w",value:`(${r.filter})`}),r.options&&r.options.length>0){const p=re(r.options);for(const b in p)u.set(b,p[b])}if(c&&c.length>0){const p=re(c);for(const b in re(c))u.set(b,p[b])}const m=new AbortController,g=await fetch(`${r.url}?x-fetch-rownumber=${l}`,{headers:u,method:"GET",signal:m?.signal});if(g.ok){const p=await g.json();return p?.[0]?._rownumber??p?._rownumber??0}n(`${g.status} ${g.statusText}`,"api",r.url)}return[]},[r.url,r.authtoken,r.filter,r.options,t,n]);return S.useEffect(()=>{e("useAPIQuery",i),e("askAPIRowNumber",a);const l=t("isValuesInPages"),f=t("_refresh");l||e("values",[]),f?.().then(()=>{const u=t("onChange"),c=t("getGridSelectedRows");if(u&&typeof u=="function"){const m=c?.();u(m)}})},[r.url,r.authtoken,r.filter,JSON.stringify(r.options),s,e]),d.jsx(d.Fragment,{})}const bt=S.memo(Qn);bt.displayName="Gridler-GlidlerAPIAdaptorForGoLangv2";function wt(r){const[o,e,t,n]=K(i=>[i.getState,i.mounted,i.setState,i._events]);S.useEffect(()=>{if(e&&r.changeOnActiveClick){const i=a=>{const{row:l,state:f}=a.detail,u=f.getRowBuffer;if(u){const c=u(l);if(!c)return;r.onRequestForm("change",c)}};return n?.addEventListener("onCellActivated",i),()=>{i&&n?.removeEventListener("onCellActivated",i)}}},[r.changeOnActiveClick,e,n]);const s=S.useCallback((i,a,l,f,u)=>{if(i==="header-menu")return u||[];const c=[];c.push(...u);const m=o("_gridSelection")?.rows.toArray()??[],g=m.length>1;if(!l){const E=m[0];E!==void 0&&(l=a.getRowBuffer(E))}const p=typeof r.descriptionField=="string"?l?.[r.descriptionField]:typeof r.descriptionField=="function"&&l?r.descriptionField(l):void 0;(i==="other"||i==="cell"&&!l)&&c.push({c:"blue",label:"Add",onClick:()=>{r.onRequestForm("insert",l)}}),i==="cell"&&l||i==="menu"&&l?(c.push({c:"teal",label:"Add",leftSection:d.jsx(q.IconSquarePlus,{color:"teal",size:16}),onClick:()=>{r.onRequestForm("insert",l)}}),g?(c.push({c:"green",label:`Modify All Selected (${m.length})`,leftSection:d.jsx(q.IconEdit,{color:"green",size:16}),onClick:()=>{r.onRequestForm("change",m.map(E=>a.getRowBuffer(E)))}}),c.push({c:"red",label:`Remove All Selected (${m.length})`,leftSection:d.jsx(q.IconTrashX,{color:"maroon",size:16}),onClick:()=>{r.onRequestForm("delete",m.map(E=>a.getRowBuffer(E)))}})):(c.push({c:"green",label:`Modify${p&&r.showDescriptionInMenu?` (${p})`:""}`,leftSection:d.jsx(q.IconEdit,{color:"green",size:16}),onClick:()=>{r.onRequestForm("change",l)}}),c.push({c:"red",label:`Remove${p&&r.showDescriptionInMenu?` (${p})`:""}`,leftSection:d.jsx(q.IconTrashX,{color:"maroon",size:16}),onClick:()=>{r.onRequestForm("delete",l)}})),c.push({isDivider:!0})):(i==="cell"&&!l||i==="menu"&&!l)&&c.push({c:"red",label:"Nothing Selected",leftSection:d.jsx(q.IconExclamationMark,{color:"yellow",size:16})}),c.push({c:"orange",label:"Refresh",leftSection:d.jsx(q.IconRefresh,{color:"orange",size:16}),onClickAsync:async()=>{await o("_refresh")?.()}});const b=r.getMenuItems?r.getMenuItems(i,a,l,f,c):c;return!c||c.length===0?u||[]:b},[r.onRequestForm,o]);return S.useEffect(()=>(e&&typeof t=="function"&&o("getMenuItems")!==s&&t("getMenuItems",s),()=>{}),[r.getMenuItems,e]),d.jsx(d.Fragment,{})}function Zn(r){const[o,e,t]=K(u=>[u.setState,u.getState,u.mounted]),{colFilters:n,colSort:s,columns:i,searchStr:a}=K(u=>({colFilters:u.colFilters,colOrder:u.colOrder,colSize:u.colSize,colSort:u.colSort,columns:u.columns,searchStr:u.searchStr})),l=S.useRef({colFilters:n,colSort:s,searchStr:a}),f=async u=>{const c=e("pageSize");return r.data&&Array.isArray(r.data)?(o("total_rows",r.data.length),r.data.slice(u*(c??50),(u+1)*(c??50))):[]};return S.useEffect(()=>{o("useAPIQuery",f)},[t,o]),S.useEffect(()=>{if(r.onColumnSort&&s!==l?.current?.colSort){const u=r.onColumnSort(s,i,r.data);o("total_rows",u.length),o("data",u),l.current.colSort=s,e("refreshCells")?.()}},[s,r.onColumnSort]),S.useEffect(()=>{if(r.onColumnFilter&&n!==l?.current?.colFilters){const u=r.onColumnFilter(n,i,r.data);o("total_rows",u.length),o("data",u),l.current.colFilters=n,e("refreshCells")?.()}},[n,r.onColumnFilter]),S.useEffect(()=>{if(r.onSearch&&a!==l?.current?.searchStr){const u=r.onSearch(a,i,r.data);o("total_rows",u.length),o("data",u),l.current.colFilters=n,e("refreshCells")?.()}},[a,r.onSearch]),d.jsx(d.Fragment,{})}const Me=S.memo(Zn);Me.displayName="Gridler-GlidlerLocalDataAdaptor";function xt(){const{loadingData:r,onContextClick:o}=K(e=>({loadingData:e.loadingData,onContextClick:e.onContextClick}));return d.jsx(w.ActionIcon,{loading:r,mr:"xs",mt:"2px",onClick:e=>o("menu",e),variant:"subtle",children:d.jsx(q.IconMenu2,{})})}function er(r,o){const[e,t]=K(n=>[n.setStateFN,n.getState]);return S.useImperativeHandle(o,()=>({getGlideRef:()=>t("_glideref"),getState:t,isEmpty:()=>t("isEmpty"),refresh:async n=>{const s=t("refreshCells");t("loadPage")?.(n?.pageIndex??0,"all").then(()=>{s?.()})},reload:async n=>{const s=t("refreshCells");t("loadPage")?.(n?.pageIndex??0,"all").then(()=>{s?.()})},reloadRow:async n=>{const s=t("refreshCells"),a=await t("getRowIndexByKey")?.(String(n));a&&a>=0&&s?.(a,a+1)},scrollToRow:async n=>{n&&Number(n)>=0&&e("scrollToRowKey",s=>Number(n??s))},selectRow:async n=>{n&&Number(n)>=0&&e("selectedRowKey",s=>Number(n??s))},setStateFN:e}),[]),d.jsx(d.Fragment,{children:r.children})}const tr=S.forwardRef(er);function nr(){const{_activeTooltip:r,tooltipBarProps:o}=K(e=>({_activeTooltip:e._activeTooltip,tooltipBarProps:e.tooltipBarProps}));return d.jsx("div",{"data-tooltip-bar":!0,style:{minHeight:"24px"},...o,children:r})}const Ct=S.memo(()=>{const r=S.useRef(0),o=S.useRef(""),e=S.useRef(null),{_glideref:t,_gridSelectionRows:n,colFilters:s,colOrder:i,colSize:a,colSort:l,columns:f,getRowIndexByKey:u,getState:c,loadPage:m,ready:g,scrollToRowKey:p,searchStr:b,selectedRowKey:E,selectFirstRowOnMount:R,setState:_,setStateFN:k,values:I}=K(x=>({_glideref:x._glideref,_gridSelectionRows:x._gridSelectionRows,colFilters:x.colFilters,colOrder:x.colOrder,colSize:x.colSize,colSort:x.colSort,columns:x.columns,getRowIndexByKey:x.getRowIndexByKey,getState:x.getState,loadPage:x.loadPage,ready:x.ready,scrollToRowKey:x.scrollToRowKey,searchStr:x.searchStr,selectedRowKey:x.selectedRowKey,selectFirstRowOnMount:x.selectFirstRowOnMount,setState:x.setState,setStateFN:x.setStateFN,uniqueid:x.uniqueid,values:x.values})),N=ie.useDebouncedCallback(x=>{m(0,"all").then(()=>{c("refreshCells")?.(),c("_events")?.dispatchEvent?.(new CustomEvent("onSearched",{detail:{search:x}}))})},{delay:300,leading:!1});return S.useEffect(()=>{I&&(async()=>{const v=c("_page_data"),O=c("pageSize"),z=c("keyField")??"id",B=[];for(const P in I){let F=-1;const T=String(typeof I?.[P]=="object"?I?.[P]?.[z]:typeof I?.[P]=="string"?I?.[P]:void 0);for(const G in v){for(const V in v[G]){const j=Number(G)*O+Number(V);if(String(v[G][V]?.[z])===T){F=j;break}}if(F>=0){B.push(F);break}}if(F>=0)B.push(F);else{const G=await u(T);G!==null&&B.push(G)}}return B})().then(v=>{let O=H.CompactSelection.empty();v.forEach(z=>{z!==void 0&&(O=O.add(z))}),k("_gridSelectionRows",()=>O),k("_gridSelection",z=>({columns:z?.columns??H.CompactSelection.empty(),...z,rows:O}))})},[I]),S.useEffect(()=>{const x=c("onChange");if(x&&typeof x=="function"){const O=c("getGridSelectedRows")(),z=c("values");JSON.stringify(z)!==JSON.stringify(O)&&x(O)}},[n,n?.length,c]),S.useEffect(()=>{_("renderColumns",f?.map(x=>({...x,hasMenu:x?.hasMenu??!0,icon:"sort"})))},[f]),S.useEffect(()=>{if(b==null){o.current="";return}o.current!==b&&(N(b),o.current=b)},[b]),S.useEffect(()=>{l&&(_("_gridSelection",{columns:H.CompactSelection.empty(),current:void 0,rows:H.CompactSelection.empty()}),_("_gridSelectionRows",H.CompactSelection.empty()),k("renderColumns",x=>x?.map(v=>({...v,icon:v.id&&l?.find(O=>O.id===v.id)?.direction?l?.find(O=>O.id===v.id)?.direction==="asc"?"sortup":"sortdown":v.defaultIcon??"sort"}))).then(()=>{m(0,"all").then(()=>{c("refreshCells")?.(),c("_events")?.dispatchEvent?.(new CustomEvent("onColumnSorted",{detail:{cols:l}}))})}))},[l]),S.useEffect(()=>{s&&JSON.stringify(e.current)!==JSON.stringify(s)&&(m(0,"all").then(()=>{c("refreshCells")?.(),c("_events")?.dispatchEvent?.(new CustomEvent("onColumnFiltered",{detail:{filters:s}}))}),e.current=s)},[s]),S.useEffect(()=>{a&&k("renderColumns",x=>x?.map(v=>({...v,width:v.id&&a?.[v.id]?a?.[v.id]:v.width}))).then(()=>{c("refreshCells")?.()})},[a]),S.useEffect(()=>{i&&k("renderColumns",x=>x?.sort((O,z)=>i[O.id]>i[z.id]?1:-1)).then(()=>{c("refreshCells")?.()})},[i]),S.useEffect(()=>{t&&(r.current>0||(r.current=1,m(0).then(()=>{c("refreshCells")?.()})))},[g,m]),S.useEffect(()=>{const x=c("_events"),v=()=>{const O=c("selectFirstRowOnMount");if(c("ready")&&O){const B=c("scrollToRowKey");if(B&&B>=0)return;const P=c("keyField")??"id",T=c("_page_data")?.[0]?.[0],G=T?.[P]??-1,V=c("values")??[];if(!T)return;if(G&&G>0&&(V.length??0)===0){const j=[T],J=c("onChange");J?J(j):_("values",j),_("scrollToRowKey",G)}}};return x?.addEventListener("loadPage",v),()=>{x?.removeEventListener("loadPage",v)}},[g,R,I]),S.useEffect(()=>{const x=c("ready"),v=c("_glideref"),O=c("getRowIndexByKey"),z=E??p;z&&v&&x&&O?.(z).then(B=>{if(B!==void 0){if(E){const P=c("onChange"),F=[{[c("keyField")??"id"]:E}];JSON.stringify(c("values"))!==JSON.stringify(F)&&(P?P(F):_("values",F))}v.scrollTo(0,B),c("_events").dispatchEvent(new CustomEvent("scrollToRowKeyFound",{detail:{rowNumber:B,scrollToRowKey:p,selectedRowKey:E}}))}})},[p,E]),d.jsx(d.Fragment,{})});Ct.displayName="Gridler-Computer";function rr(r,o,e=1){let t;if(o===void 0?(t=0,o=r):t=r,e===0)throw new Error("Step cannot be zero");const n=[];if(e>0)for(let s=t;s<o;s+=e)n.push(s);else for(let s=t;s>o;s+=e)n.push(s);return n}const _t=S.memo(()=>{const[r,o,e,t,n,s,i,a]=K(l=>[l.setState,l.getState,l._glideref,l._visiblePages,l.pageSize,l.loadPage,l._loadingList,l.hasLocalData]);return S.useEffect(()=>{e&&r("mounted",!0)},[r]),S.useEffect(()=>{if(!e)return;const l=Math.max(0,Math.floor(t.y/n)),f=Math.floor((t.y+t.height)/n);for(const u of rr(l,f+1,1))s(u).then(()=>{const c=o("_page_data")?.[0]??{};r("isEmpty",c&&c.length>0)})},[s,n,t,e,i,a]),d.jsx(d.Fragment,{})});_t.displayName="Gridler-Pager";const or=r=>`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20" fill="none">
|
|
21
|
+
`,fe=r=>d.jsx("img",{alt:r.alt??"Sprite Image",src:`data:image/svg+xml;utf8,${r.sprite({...r,sprite:void 0})}`}),{Provider:Xn,useStore:K}=pe.createSyncStore((r,o)=>({_events:new EventTarget,_loadingList:H.CompactSelection.empty(),_page_data:{},_refresh:async()=>{const e=o();await e.loadPage(0,"all"),await e.refreshCells(),await e.reload?.()},_visibleArea:{height:1e4,width:1e3,x:0,y:0},_visiblePages:{height:0,width:0,x:0,y:0},addError:(e,...t)=>{const n=o();console.log("Gridler Error",n.uniqueid,e,t),r(U.produce(s=>{s.errors=[...s.errors,e]}))},errors:[],get:()=>o(),getCellContent:e=>{const t=o(),[n,s]=e,i=t.getRowBuffer(s);return i!==void 0?t.toCell(i,n):{allowOverlay:!1,kind:H.GridCellKind.Loading}},getCellsForSelection:(e,t)=>async()=>{const n=o();await n.setStateFN("_visibleArea",i=>e);const s=[];for(let i=e.y;i<e.y+e.height;i++){const a=[];for(let l=e.x;l<e.x+e.width;l++)a.push(n.getCellContent([l,i]));s.push(a)}return s},getGridSelectedRows:()=>{const e=o(),t=[],n=e._page_data,s=e.pageSize;if(e._gridSelectionRows)for(const i of e._gridSelectionRows){let a;for(const l in n)for(const f in n[l]){const u=Number(l)*s+Number(f);if(!isNaN(u)){if(Number(n[l][f]?._rownumber)===i+1){a=n[l][f];break}else if(u===i+1){a=n[l][f];break}}}a!==void 0&&t.push(a)}return t},getRowBuffer:e=>{const t=o();if(t.data&&t.data.length>0)return t.data[e]===void 0?{allowOverlay:!1,kind:H.GridCellKind.Loading}:t.data[e];const n=Math.max(0,Math.floor(e/t.pageSize)),s=t.pageSize*n,i=e-s;return t._page_data?.[n]?.[i]},getRowIndexByKey:async e=>{const t=o();let n=-1;if(t.ready){const s=t._page_data,i=t.pageSize,a=t.keyField??"id";for(const l in s){for(const f in s[l]){const u=Number(l)*i+Number(f);if(String(s[l][f]?.[a])===String(e)){n=s[l][f]?._rownumber>0?s[l][f]?._rownumber:u>0?u:-1;break}}if(n>0)return n}if(n>0)return n;if(typeof t.askAPIRowNumber=="function"){const l=await t.askAPIRowNumber(String(e));if(l&&l>=0)return l}}},getState:e=>o()[e],hasLocalData:!1,isEmpty:!0,isValuesInPages:()=>{const e=o();if(e.values&&Object.keys(e._page_data).length>0){let t=!1;for(const n in e._page_data){const s=e._page_data[Number(n)];for(const i of s){const a=e.keyField??"id",l=i?.[a];if(l!==void 0&&e.values.find(u=>String(u?.[a])===String(l))){t=!0;break}}if(t)return!0}}return!1},keyField:"id",loadPage:async(e,t)=>{const n=o(),s=e<0?0:e;if(!n._events.dispatchEvent(new CustomEvent("before_loadPage",{detail:{clearMode:t,page:e,state:n}})))return;const a=[],l=Object.keys(n.renderColumns??[1,2,3]).length,f=n.pageSize*s,u=n._page_data?.[s]?.length>0;if(t==="all"){n._active_requests?.forEach(c=>{c.controller?.abort?.()}),n.setState("_page_data",{}),n.setState("_active_requests",[]),n.loadPage(s);return}if(!n.useAPIQuery){console.warn("No useAPIQuery function defined, cannot load page",s);return}!u&&t!=="page"&&n.useAPIQuery?.(s).then(c=>{n.setStateFN("_page_data",m=>({...m,[s]:c}));for(let m=s;m<=f+n.pageSize;m++)for(let g=0;g<=l;g++)a.push({cell:[g,m]});n._glideref?.updateCells(a),n._events.dispatchEvent(new CustomEvent("loadPage",{detail:{clearMode:t,data:c,page:e,state:n}}))}).catch(c=>{console.error("loadPage Error: ",s,c),n._events.dispatchEvent(new CustomEvent("loadPage_error",{detail:{clearMode:t,error:c,page:e,state:n}}))})},maxConcurrency:1,mounted:!1,onCellActivated:e=>{const t=o(),[n,s]=e;t._events.dispatchEvent(new CustomEvent("onCellActivated",{detail:{cell:e,col:n,row:s,state:t}})),t.glideProps?.onCellActivated?.(e)},onCellClicked:(e,t)=>{const n=o(),[s,i]=e,a=n.getRowBuffer(i);n.glideProps?.onCellClicked&&n.glideProps?.onCellClicked?.(e,t),n.values?.length&&n.values?.length>0?n.onChange&&n.onChange(n.values):a&&n.onChange&&n.onChange([a]),n._events.dispatchEvent(new CustomEvent("onCellClicked",{detail:{cell:e,col:s,row:i,state:n}}))},onCellEdited:(e,t)=>{const n=o(),[,s]=e;n._events.dispatchEvent(new CustomEvent("onCellEdited",{detail:{cell:e,newVal:t,row:s,state:n}})),n.glideProps?.onCellEdited?.(e,t)},onColumnMoved:(e,t)=>{const n=o(),s=n.renderColumns?.[e],i=n.renderColumns?.[t];s?.disableMove||i?.disableMove||n.setStateFN("colOrder",a=>{const l=a??n.renderColumns?.map((f,u)=>[f.id,u]).reduce((f,[u,c])=>({...f,[u]:c}),{});return!s?.id||!i?.id?l:{...l,[s?.id]:t,[i?.id]:e}})},onColumnProposeMove:(e,t)=>{const n=o(),s=n.renderColumns?.[e],i=n.renderColumns?.[t];return!(s?.disableMove||i?.disableMove)},onColumnResize:(e,t,n,s)=>{const i=o(),a=i.renderColumns?.find(l=>l.id===e.id);a?.disableResize||a?.maxWidth&&t<a?.maxWidth||a&&i.setStateFN("colSize",l=>l&&a&&l[a.id]===t?l:{...l,[a.id]:t})},onContextClick:(e,t,n,s)=>{const i=o(),a=i.renderColumns?.[n??-1],l=e==="menu"?[{leftSection:d.jsx(q.IconGrid4x4,{size:16}),title:i.title??"Grid"}]:a?[{leftSection:d.jsx(q.IconGrid4x4,{size:16}),title:i.title??"Grid"},{items:[{label:"Sort Ascending",leftSection:d.jsx(fe,{sprite:je}),onClick:()=>{i.setStateFN("colSort",f=>{const u=[...f??[]],c=u.findIndex(g=>g.id===a.id),m="asc";if(c<0){const g={direction:m,id:a.id,order:u?.length};u.push(g)}else c>=0&&(u[c].direction=m);return u})}},{label:"Sort Descending",leftSection:d.jsx(fe,{sprite:Ae}),onClick:()=>{i.setStateFN("colSort",f=>{const u=[...f??[]],c=u.findIndex(g=>g.id===a.id),m="desc";if(c<0){const g={direction:m,id:a.id,order:u?.length};u.push(g)}else c>=0&&(u[c].direction=m);return u})}},{label:`Filter ${a?.title??a?.id}`},{renderer:d.jsx(ke,{column:a,storeState:o()})}],label:`Column Settings for ${a?.title??a?.id}`,leftSection:d.jsx(q.IconGrid4x4,{size:16})}]:[];i.hideMenu?.(e),i.showMenu?.(e,{items:a?.getMenuItems?.(e,i,n&&s?i.getRowBuffer(s):void 0,a,l)??i.getMenuItems?.(e,i,n&&s?i.getRowBuffer(s):void 0,a,l)??l,x:t.clientX??t.bounds?.x,y:t.clientY??t.bounds?.y})},onHeaderClicked:(e,t)=>{const n=o();t.preventDefault();const s=n.renderColumns?.[e];s&&(s.disableSort||n.setStateFN("colSort",i=>{const a=[...i??[]],l=a.findIndex(f=>f.id===s.id);if(l<0){const f={direction:"asc",id:s.id,order:a?.length};a.push(f)}else l>=0&&a[l].direction==="asc"?a[l].direction="desc":l>=0&&a[l].direction==="desc"&&a.splice(l,1);return a}))},onHeaderMenuClick:(e,t)=>{const n=o(),s=n.renderColumns?.[e];if(!s)return;const i=[{label:`Sort ${s?.title??s?.id}`},{label:"Sort Ascending",leftSection:d.jsx(fe,{sprite:je}),onClick:()=>{n.setStateFN("colSort",l=>{const f=[...l??[]],u=f.findIndex(m=>m.id===s.id),c="asc";if(u<0){const m={direction:c,id:s.id,order:f?.length};f.push(m)}else u>=0&&(f[u].direction=c);return f})}},{label:"Sort Descending",leftSection:d.jsx(fe,{sprite:Ae}),onClick:()=>{n.setStateFN("colSort",l=>{const f=[...l??[]],u=f.findIndex(m=>m.id===s.id),c="desc";if(u<0){const m={direction:c,id:s.id,order:f?.length};f.push(m)}else u>=0&&(f[u].direction=c);return f})}},{isDivider:!0}],a=[...s.disableSort?[]:i,{label:`Filter ${s?.title??s?.id}`},{renderer:d.jsx(ke,{column:s,storeState:o()})},{isDivider:!0},{id:"refesh",label:"Refresh",onClick:()=>{o()._refresh?.()}}];n.hideMenu?.("header-menu"),n.showMenu?.("header-menu",{items:s?.getMenuItems?.("header-menu",n,void 0,s,a)??n.getMenuItems?.("header-menu",n,void 0,s,a),x:t.x,y:t.y})},onItemHovered:e=>{const t=o();if(t.setState("_activeTooltip",void 0),e.kind==="cell"){const n=t.renderColumns?.[e.location[0]];if(n?.tooltip&&typeof n?.tooltip=="string")t.setState("_activeTooltip",n?.tooltip);else if(n?.tooltip&&typeof n?.tooltip=="function"){const s=t.getRowBuffer(e.location[1]);t.setState("_activeTooltip",n?.tooltip(s,e.location[1],e.location[0]))}}},onVisibleRegionChanged:(e,t,n,s)=>{const i=o();i._scrollTimeout&&clearTimeout(i._scrollTimeout);const a=()=>{const l=o(),f=Math.max(0,Math.floor(e.y/l.pageSize)),u=Math.max(0,Math.floor(l._visiblePages.y/l.pageSize)),c=f-u;if(l.progressiveScroll&&c>1){const m=o(),g=(u+2)*m.pageSize*(m.rowHeight??22);m._glideref?.scrollTo(0,{amount:g,unit:"px"},"vertical");return}l.setState("_visiblePages",e)};i.setState("_scrollTimeout",setTimeout(()=>{a()},100))},pageSize:50,ready:!1,refreshCells:(e,t,n)=>{const s=o(),i=[],a=Object.keys(s.renderColumns??[1,2,3]).length,l=e&&e>0?e:0,f=t&&t>=l?t:l+s.pageSize;for(let u=l;u<=f;u++)if(n&&n>0)i.push({cell:[n,u]});else for(let c=0;c<=a;c++)i.push({cell:[c,u]});s._glideref?.updateCells(i)},setState:(e,t)=>{r(U.produce(n=>{n[e]=t}))},setStateFN:(e,t)=>new Promise((s,i)=>{r(U.produce(a=>{if(typeof t=="function")a[e]=t(a[e]);else throw i(new Error(`Not a function ${t}`)),Error(`Not a function ${t}`)})),s()}),toCell:(e,t)=>{const n=o(),i=n.renderColumns?.[t],a=i?.id??i?.title??String(t);if(a==null||e===void 0||e===null)return i?.Cell?i?.Cell(e,t,a,void 0,n):n.RenderCell?n.RenderCell(e,t,a,void 0,n):{allowOverlay:!1,kind:H.GridCellKind.Loading};try{const l=String(a).includes(".")?Un(a,e)??"":e?.[a];return i?.Cell?{kind:H.GridCellKind.Text,...i?.Cell(e,t,a,l,n)}:n.RenderCell?n.RenderCell(e,t,a,l,n):{allowOverlay:!0,data:l??"",displayData:String(l??""),kind:H.GridCellKind.Text}}catch{return n.RenderCell?n.RenderCell(e,t,a,e?.[a??""],n):{allowOverlay:!1,kind:H.GridCellKind.Loading,skeletonWidthVariability:50}}},total_rows:1e3,uniqueid:Te.getUUID()}),r=>{const[o,e]=r.useStore(n=>[n.setState,n.getState]),t=Fe();return S.useEffect(()=>{const n=e("onMounted");if(typeof n=="function"&&n(e,o),o("mounted",!0),window&&window.document&&!window.document.getElementById("portal")){const i=window.document.createElement("div");i.id="portal",i.setAttribute("data-gridler-portal",r.uniqueid),window.document.body.appendChild(i)}return e("_events").dispatchEvent(new CustomEvent("mounted",{detail:{}})),()=>{const s=e("onUnMounted");o("mounted",!1),e("_events").dispatchEvent(new CustomEvent("unmounted",{detail:{}})),typeof s=="function"&&s()}},[o,e]),e("_events").addEventListener("reload",n=>{e("_refresh")?.()}),{...r,colSort:r.defaultSort??e("colSort")??[],hideMenu:r.hideMenu??t.hide,scrollToRowKey:r.scrollToRowKey??r.selectedRowKey??e("scrollToRowKey"),showMenu:r.showMenu??t.show,total_rows:e("total_rows")??r.total_rows}});function Qn(r){const[o,e,t,n,s]=K(l=>[l.setStateFN,l.setState,l.getState,l.addError,l.mounted]),i=S.useCallback(async l=>{const f=t("columns"),u=t("colSort"),c=t("pageSize"),m=t("colFilters"),g=t("searchStr"),p=t("searchFields"),b=t("_active_requests"),E=t("keyField");e("loadingData",!0);try{if(r&&r.url){const R=new Headers;R.set("Authorization",`Token ${r.authtoken}`);const _=[{type:"limit",value:String(c??50)},{type:"offset",value:String((c??50)*l)}];u?.length&&u.length>0&&_.push({type:"sort",value:u?.map(v=>`${v.id} ${v.direction}`).reduce((v,O)=>`${v},${O}`)}),m?.filter(v=>v.value?.length>0)?.forEach(v=>{v.value&&v.value!==""&&_.push({name:`${v.id}`,op:v.operator,type:"searchop",value:v.value})}),g&&g!==""&&f?.filter(v=>!v.disableFilter&&!v.disableSearch&&!v.virtual&&v.id&&((p??[]).length==0||p?.includes(v.id)))?.forEach(v=>{_.push({name:`${v.id??""}`,op:"contains",type:"searchor",value:g})}),r.filter&&r.filter!==""&&_.push({name:"sql_filter",type:"custom-sql-w",value:r.filter}),(r.options??[]).length>0&&_.push(...r.options??[]);const k=f?.filter(v=>!v.virtual)?.map(v=>v.id)??[];if(r.hotfields&&r.hotfields.length>0&&k?.push(r.hotfields.join(",")),E&&(k.includes(E)||k.push(E)),k&&k.length>0&&_.push({type:"select-fields",value:k.join(",")}),_&&_.length>0){const v=re(_);for(const O in re(_))R.set(O,v[O])}const I=b?.findIndex(v=>v.page===l)??-1;if(b?.forEach(v=>{(v.page>=0&&v.page<l-2||l>=0&&v.page>l+2)&&v.controller?.abort?.()}),b&&I>=0&&b[I]){e("loadingData",!1);return}const N=new AbortController;await o("_active_requests",v=>[...v??[],{controller:N,page:l}]);const x=await fetch(`${r.url}?x-limit=${String(c??50)}&x-offset=${String((c??50)*l)}`,{headers:R,method:"GET",signal:N?.signal});if(x.ok){const v=x.headers.get("Content-Range")?.split("/");v?.[1]&&parseInt(v[1],10)>0&&e("total_rows",parseInt(v[1],10));const O=await x.json();return e("loadingData",!1),O??[]}n(`${x.status} ${x.statusText}`,"api",r.url),await o("_active_requests",v=>[...(v??[]).filter(O=>O.page!==l)])}}catch{}return e("loadingData",!1),[]},[t,r.authtoken,r.url,r.filter,JSON.stringify(r.options),e,o,n]),a=S.useCallback(async l=>{const f=t("colFilters");if(!l||l===""||!r.url)return null;if(r&&r.url){const u=new Headers,c=[{type:"limit",value:String(10)},{type:"fetch-rownumber",value:l}];if(u.set("Authorization",`Token ${r.authtoken}`),f?.length&&f.length>0&&f?.filter(p=>p.value?.length>0)?.forEach(p=>{p.value&&p.value!==""&&u.set(`x-searchop-${p.operator}-${p.id}`,`${p.value}`)}),r.filter&&r.filter!==""&&c.push({name:"sql_filter",type:"custom-sql-w",value:`(${r.filter})`}),r.options&&r.options.length>0){const p=re(r.options);for(const b in p)u.set(b,p[b])}if(c&&c.length>0){const p=re(c);for(const b in re(c))u.set(b,p[b])}const m=new AbortController,g=await fetch(`${r.url}?x-fetch-rownumber=${l}`,{headers:u,method:"GET",signal:m?.signal});if(g.ok){const p=await g.json();return p?.[0]?._rownumber??p?._rownumber??0}n(`${g.status} ${g.statusText}`,"api",r.url)}return[]},[r.url,r.authtoken,r.filter,r.options,t,n]);return S.useEffect(()=>{e("useAPIQuery",i),e("askAPIRowNumber",a);const l=t("isValuesInPages"),f=t("_refresh");l||e("values",[]),f?.().then(()=>{const u=t("onChange"),c=t("getGridSelectedRows");if(u&&typeof u=="function"){const m=c?.();u(m)}})},[r.url,r.authtoken,r.filter,JSON.stringify(r.options),s,e]),d.jsx(d.Fragment,{})}const bt=S.memo(Qn);bt.displayName="Gridler-GlidlerAPIAdaptorForGoLangv2";function wt(r){const[o,e,t,n]=K(i=>[i.getState,i.mounted,i.setState,i._events]);S.useEffect(()=>{if(e&&r.changeOnActiveClick){const i=a=>{const{row:l,state:f}=a.detail,u=f.getRowBuffer;if(u){const c=u(l);if(!c)return;r.onRequestForm("change",c)}};return n?.addEventListener("onCellActivated",i),()=>{i&&n?.removeEventListener("onCellActivated",i)}}},[r.changeOnActiveClick,e,n]);const s=S.useCallback((i,a,l,f,u)=>{if(i==="header-menu")return u||[];const c=[];c.push(...u);const m=o("_gridSelection")?.rows.toArray()??[],g=m.length>1;if(!l){const E=m[0];E!==void 0&&(l=a.getRowBuffer(E))}const p=typeof r.descriptionField=="string"?l?.[r.descriptionField]:typeof r.descriptionField=="function"&&l?r.descriptionField(l):void 0;(i==="other"||i==="cell"&&!l)&&c.push({c:"blue",label:"Add",onClick:()=>{r.onRequestForm("insert",l)}}),i==="cell"&&l||i==="menu"&&l?(c.push({c:"teal",label:"Add",leftSection:d.jsx(q.IconSquarePlus,{color:"teal",size:16}),onClick:()=>{r.onRequestForm("insert",l)}}),g?(c.push({c:"green",label:`Modify All Selected (${m.length})`,leftSection:d.jsx(q.IconEdit,{color:"green",size:16}),onClick:()=>{r.onRequestForm("change",m.map(E=>a.getRowBuffer(E)))}}),c.push({c:"red",label:`Remove All Selected (${m.length})`,leftSection:d.jsx(q.IconTrashX,{color:"maroon",size:16}),onClick:()=>{r.onRequestForm("delete",m.map(E=>a.getRowBuffer(E)))}})):(c.push({c:"green",label:`Modify${p&&r.showDescriptionInMenu?` (${p})`:""}`,leftSection:d.jsx(q.IconEdit,{color:"green",size:16}),onClick:()=>{r.onRequestForm("change",l)}}),c.push({c:"red",label:`Remove${p&&r.showDescriptionInMenu?` (${p})`:""}`,leftSection:d.jsx(q.IconTrashX,{color:"maroon",size:16}),onClick:()=>{r.onRequestForm("delete",l)}})),c.push({isDivider:!0})):(i==="cell"&&!l||i==="menu"&&!l)&&c.push({c:"red",label:"Nothing Selected",leftSection:d.jsx(q.IconExclamationMark,{color:"yellow",size:16})}),c.push({c:"orange",label:"Refresh",leftSection:d.jsx(q.IconRefresh,{color:"orange",size:16}),onClickAsync:async()=>{await o("_refresh")?.()}});const b=r.getMenuItems?r.getMenuItems(i,a,l,f,c):c;return!c||c.length===0?u||[]:b},[r.onRequestForm,o]);return S.useEffect(()=>(e&&typeof t=="function"&&o("getMenuItems")!==s&&t("getMenuItems",s),()=>{}),[r.getMenuItems,e]),d.jsx(d.Fragment,{})}function Zn(r){const[o,e,t]=K(u=>[u.setState,u.getState,u.mounted]),{colFilters:n,colSort:s,columns:i,searchStr:a}=K(u=>({colFilters:u.colFilters,colOrder:u.colOrder,colSize:u.colSize,colSort:u.colSort,columns:u.columns,searchStr:u.searchStr})),l=S.useRef({colFilters:n,colSort:s,searchStr:a}),f=async u=>{const c=e("pageSize");return r.data&&Array.isArray(r.data)?(o("total_rows",r.data.length),r.data.slice(u*(c??50),(u+1)*(c??50))):[]};return S.useEffect(()=>{o("useAPIQuery",f)},[t,o]),S.useEffect(()=>{if(r.onColumnSort&&s!==l?.current?.colSort){const u=r.onColumnSort(s,i,r.data);o("total_rows",u.length),o("data",u),l.current.colSort=s,e("refreshCells")?.()}},[s,r.onColumnSort]),S.useEffect(()=>{if(r.onColumnFilter&&n!==l?.current?.colFilters){const u=r.onColumnFilter(n,i,r.data);o("total_rows",u.length),o("data",u),l.current.colFilters=n,e("refreshCells")?.()}},[n,r.onColumnFilter]),S.useEffect(()=>{if(r.onSearch&&a!==l?.current?.searchStr){const u=r.onSearch(a,i,r.data);o("total_rows",u.length),o("data",u),l.current.colFilters=n,e("refreshCells")?.()}},[a,r.onSearch]),d.jsx(d.Fragment,{})}const Me=S.memo(Zn);Me.displayName="Gridler-GlidlerLocalDataAdaptor";function xt(){const{loadingData:r,onContextClick:o}=K(e=>({loadingData:e.loadingData,onContextClick:e.onContextClick}));return d.jsx(w.ActionIcon,{loading:r,mr:"xs",mt:"2px",onClick:e=>o("menu",e),variant:"subtle",children:d.jsx(q.IconMenu2,{})})}function er(r,o){const[e,t]=K(n=>[n.setStateFN,n.getState]);return S.useImperativeHandle(o,()=>({getGlideRef:()=>t("_glideref"),getState:t,isEmpty:()=>t("isEmpty"),refresh:async n=>{const s=t("refreshCells");t("loadPage")?.(n?.pageIndex??0,"all").then(()=>{s?.()})},reload:async n=>{const s=t("refreshCells");t("loadPage")?.(n?.pageIndex??0,"all").then(()=>{s?.()})},reloadRow:async n=>{const s=t("refreshCells"),a=await t("getRowIndexByKey")?.(String(n));a&&a>=0&&s?.(a,a+1)},scrollToRow:async n=>{n&&Number(n)>=0&&e("scrollToRowKey",s=>Number(n??s))},selectRow:async n=>{n&&Number(n)>=0&&e("selectedRowKey",s=>Number(n??s))},setStateFN:e}),[]),d.jsx(d.Fragment,{children:r.children})}const tr=S.forwardRef(er);function nr(){const{_activeTooltip:r,tooltipBarProps:o}=K(e=>({_activeTooltip:e._activeTooltip,tooltipBarProps:e.tooltipBarProps}));return d.jsx("div",{"data-tooltip-bar":!0,style:{minHeight:"24px"},...o,children:r})}const Ct=S.memo(()=>{const r=S.useRef(0),o=S.useRef(""),e=S.useRef(null),{_glideref:t,_gridSelectionRows:n,colFilters:s,colOrder:i,colSize:a,colSort:l,columns:f,getRowIndexByKey:u,getState:c,loadPage:m,ready:g,scrollToRowKey:p,searchStr:b,selectedRowKey:E,selectFirstRowOnMount:R,setState:_,setStateFN:k,values:I}=K(x=>({_glideref:x._glideref,_gridSelectionRows:x._gridSelectionRows,colFilters:x.colFilters,colOrder:x.colOrder,colSize:x.colSize,colSort:x.colSort,columns:x.columns,getRowIndexByKey:x.getRowIndexByKey,getState:x.getState,loadPage:x.loadPage,ready:x.ready,scrollToRowKey:x.scrollToRowKey,searchStr:x.searchStr,selectedRowKey:x.selectedRowKey,selectFirstRowOnMount:x.selectFirstRowOnMount,setState:x.setState,setStateFN:x.setStateFN,uniqueid:x.uniqueid,values:x.values})),N=ie.useDebouncedCallback(x=>{m(0,"all").then(()=>{c("refreshCells")?.(),c("_events")?.dispatchEvent?.(new CustomEvent("onSearched",{detail:{search:x}}))})},{delay:300,leading:!1});return S.useEffect(()=>{I&&(async()=>{const v=c("_page_data"),O=c("pageSize"),z=c("keyField")??"id",B=[];for(const P in I){let F=-1;const T=String(typeof I?.[P]=="object"?I?.[P]?.[z]:typeof I?.[P]=="string"?I?.[P]:void 0);for(const G in v){for(const V in v[G]){const j=Number(G)*O+Number(V);if(String(v[G][V]?.[z])===T){F=j;break}}if(F>=0){B.push(F);break}}if(F>=0)B.push(F);else{const G=await u(T);G!==null&&B.push(G)}}return B})().then(v=>{let O=H.CompactSelection.empty();v.forEach(z=>{z!==void 0&&(O=O.add(z))}),k("_gridSelectionRows",()=>O),k("_gridSelection",z=>({columns:z?.columns??H.CompactSelection.empty(),...z,rows:O}))})},[I]),S.useEffect(()=>{const x=c("onChange");if(x&&typeof x=="function"){const O=c("getGridSelectedRows")(),z=c("values");JSON.stringify(z)!==JSON.stringify(O)&&x(O)}},[n,n?.length,c]),S.useEffect(()=>{_("renderColumns",f?.map(x=>({...x,hasMenu:x?.hasMenu??!0,icon:"sort"})))},[f]),S.useEffect(()=>{if(b==null){o.current="";return}o.current!==b&&(N(b),o.current=b)},[b]),S.useEffect(()=>{l&&(_("_gridSelection",{columns:H.CompactSelection.empty(),current:void 0,rows:H.CompactSelection.empty()}),_("_gridSelectionRows",H.CompactSelection.empty()),k("renderColumns",x=>x?.map(v=>({...v,icon:v.id&&l?.find(O=>O.id===v.id)?.direction?l?.find(O=>O.id===v.id)?.direction==="asc"?"sortup":"sortdown":v.defaultIcon??"sort"}))).then(()=>{m(0,"all").then(()=>{c("refreshCells")?.(),c("_events")?.dispatchEvent?.(new CustomEvent("onColumnSorted",{detail:{cols:l}}))})}))},[l]),S.useEffect(()=>{s&&JSON.stringify(e.current)!==JSON.stringify(s)&&(m(0,"all").then(()=>{c("refreshCells")?.(),c("_events")?.dispatchEvent?.(new CustomEvent("onColumnFiltered",{detail:{filters:s}}))}),e.current=s)},[s]),S.useEffect(()=>{a&&k("renderColumns",x=>x?.map(v=>({...v,width:v.id&&a?.[v.id]?a?.[v.id]:v.width}))).then(()=>{c("refreshCells")?.()})},[a]),S.useEffect(()=>{i&&k("renderColumns",x=>x?.sort((O,z)=>i[O.id]>i[z.id]?1:-1)).then(()=>{c("refreshCells")?.()})},[i]),S.useEffect(()=>{t&&(r.current>0||(r.current=1,m(0).then(()=>{c("refreshCells")?.()})))},[g,m]),S.useEffect(()=>{const x=c("_events"),v=()=>{const O=c("selectFirstRowOnMount");if(c("ready")&&O){const B=c("scrollToRowKey");if(B&&B>=0)return;const P=c("keyField")??"id",T=c("_page_data")?.[0]?.[0],G=T?.[P]??-1,V=c("values")??[];if(!T)return;if(G&&G>0&&(V.length??0)===0){const j=[T],J=c("onChange");J?J(j):_("values",j),_("scrollToRowKey",G)}}};return x?.addEventListener("loadPage",v),()=>{x?.removeEventListener("loadPage",v)}},[g,R,I]),S.useEffect(()=>{const x=c("ready"),v=c("_glideref"),O=c("getRowIndexByKey"),z=E??p;z&&v&&x&&O?.(z).then(B=>{if(B!==void 0){if(E){const P=c("onChange"),F=[{[c("keyField")??"id"]:E}];JSON.stringify(c("values"))!==JSON.stringify(F)&&(P?P(F):_("values",F))}v.scrollTo(0,B),c("_events").dispatchEvent(new CustomEvent("scrollToRowKeyFound",{detail:{rowNumber:B,scrollToRowKey:p,selectedRowKey:E}}))}})},[p,E]),d.jsx(d.Fragment,{})});Ct.displayName="Gridler-Computer";function rr(r,o,e=1){let t;if(o===void 0?(t=0,o=r):t=r,e===0)throw new Error("Step cannot be zero");const n=[];if(e>0)for(let s=t;s<o;s+=e)n.push(s);else for(let s=t;s>o;s+=e)n.push(s);return n}const _t=S.memo(()=>{const[r,o,e,t,n,s,i,a]=K(l=>[l.setState,l.getState,l._glideref,l._visiblePages,l.pageSize,l.loadPage,l._loadingList,l.hasLocalData]);return S.useEffect(()=>{e&&r("mounted",!0)},[r]),S.useEffect(()=>{if(!e)return;const l=Math.max(0,Math.floor(t.y/n)),f=Math.floor((t.y+t.height)/n);for(const u of rr(l,f+1,1))s(u).then(()=>{const c=o("_page_data")?.[0]??{};r("isEmpty",c&&c.length>0)})},[s,n,t,e,i,a]),d.jsx(d.Fragment,{})});_t.displayName="Gridler-Pager";const or=r=>`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20" fill="none">
|
|
22
22
|
<path
|
|
23
23
|
fill="${r.fgColor??"currentColor"}"
|
|
24
24
|
d="M2.22 9.967L7.97 4.22l.085-.074l.058-.038l.072-.039l.105-.04l.105-.022l.052-.005L8.5 4l.057.002l.092.013l.107.03l.085.037l.054.03l.063.044l.072.064l5.75 5.747a.75.75 0 0 1-.976 1.133l-.084-.072L9.25 6.56v16.69a.75.75 0 0 1-1.493.102l-.007-.102V6.56l-4.47 4.468a.75.75 0 0 1-.976.072l-.084-.072a.75.75 0 0 1-.073-.977zM19.5 4a.75.75 0 0 1 .743.648l.007.102v16.687l4.47-4.467l.084-.073a.75.75 0 0 1 1.049 1.05l-.073.083l-5.728 5.727a.75.75 0 0 1-1.031.07l-.073-.07l-5.728-5.727l-.073-.084a.75.75 0 0 1-.007-.882l.08-.094l.084-.073a.75.75 0 0 1 .882-.007l.094.08l4.47 4.469V4.75l.007-.102A.75.75 0 0 1 19.5 4"
|