tinybase 4.3.0-beta.0 → 4.3.0
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/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
- package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-partykit-client.cjs +1 -0
- package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-partykit-server.cjs +1 -0
- package/lib/cjs/persisters/persister-partykit-server.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
- package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
- package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
- package/lib/cjs/store.cjs +1 -1
- package/lib/cjs/store.cjs.gz +0 -0
- package/lib/cjs/tinybase.cjs +1 -1
- package/lib/cjs/tinybase.cjs.gz +0 -0
- package/lib/cjs/tools.cjs +1 -1
- package/lib/cjs/tools.cjs.gz +0 -0
- package/lib/cjs/ui-react-dom-debug.cjs +1 -1
- package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
- package/lib/cjs/ui-react-dom.cjs +1 -1
- package/lib/cjs/ui-react-dom.cjs.gz +0 -0
- package/lib/cjs/ui-react.cjs +1 -1
- package/lib/cjs/ui-react.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -0
- package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-partykit-server.cjs +1 -0
- package/lib/cjs-es6/persisters/persister-partykit-server.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
- package/lib/cjs-es6/store.cjs +1 -1
- package/lib/cjs-es6/store.cjs.gz +0 -0
- package/lib/cjs-es6/tinybase.cjs +1 -1
- package/lib/cjs-es6/tinybase.cjs.gz +0 -0
- package/lib/cjs-es6/tools.cjs +1 -1
- package/lib/cjs-es6/tools.cjs.gz +0 -0
- package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
- package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
- package/lib/cjs-es6/ui-react-dom.cjs +1 -1
- package/lib/cjs-es6/ui-react-dom.cjs.gz +0 -0
- package/lib/cjs-es6/ui-react.cjs +1 -1
- package/lib/cjs-es6/ui-react.cjs.gz +0 -0
- package/lib/debug/persisters/persister-cr-sqlite-wasm.js +10 -7
- package/lib/debug/persisters/persister-expo-sqlite.js +10 -7
- package/lib/debug/persisters/persister-partykit-client.js +249 -0
- package/lib/debug/persisters/persister-partykit-server.js +161 -0
- package/lib/debug/persisters/persister-sqlite-wasm.js +10 -7
- package/lib/debug/persisters/persister-sqlite3.js +10 -7
- package/lib/debug/queries.js +2 -2
- package/lib/debug/store.js +13 -13
- package/lib/debug/tinybase.js +14 -14
- package/lib/debug/tools.js +3 -4
- package/lib/debug/ui-react-dom.js +35 -24
- package/lib/debug/ui-react.js +38 -1
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
- package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/es6/persisters/persister-partykit-client.js +1 -0
- package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/es6/persisters/persister-partykit-server.js +1 -0
- package/lib/es6/persisters/persister-partykit-server.js.gz +0 -0
- package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/es6/persisters/persister-sqlite3.js +1 -1
- package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/es6/store.js +1 -1
- package/lib/es6/store.js.gz +0 -0
- package/lib/es6/tinybase.js +1 -1
- package/lib/es6/tinybase.js.gz +0 -0
- package/lib/es6/tools.js +1 -1
- package/lib/es6/tools.js.gz +0 -0
- package/lib/es6/ui-react-dom-debug.js +1 -1
- package/lib/es6/ui-react-dom-debug.js.gz +0 -0
- package/lib/es6/ui-react-dom.js +1 -1
- package/lib/es6/ui-react-dom.js.gz +0 -0
- package/lib/es6/ui-react.js +1 -1
- package/lib/es6/ui-react.js.gz +0 -0
- package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/persisters/persister-expo-sqlite.js +1 -1
- package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/persisters/persister-partykit-client.js +1 -0
- package/lib/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/persisters/persister-partykit-server.js +1 -0
- package/lib/persisters/persister-partykit-server.js.gz +0 -0
- package/lib/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/persisters/persister-sqlite3.js +1 -1
- package/lib/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/store.js +1 -1
- package/lib/store.js.gz +0 -0
- package/lib/tinybase.js +1 -1
- package/lib/tinybase.js.gz +0 -0
- package/lib/tools.js +1 -1
- package/lib/tools.js.gz +0 -0
- package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +2 -0
- package/lib/types/persisters/persister-expo-sqlite.d.ts +2 -0
- package/lib/types/persisters/persister-partykit-client.d.ts +88 -0
- package/lib/types/persisters/persister-partykit-server.d.ts +114 -0
- package/lib/types/persisters/persister-sqlite-wasm.d.ts +2 -0
- package/lib/types/persisters/persister-sqlite3.d.ts +2 -0
- package/lib/types/store.d.ts +6 -0
- package/lib/types/ui-react.d.ts +187 -4
- package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +2 -0
- package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +2 -0
- package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +99 -0
- package/lib/types/with-schemas/persisters/persister-partykit-server.d.ts +114 -0
- package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +2 -0
- package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +2 -0
- package/lib/types/with-schemas/store.d.ts +6 -0
- package/lib/types/with-schemas/ui-react.d.ts +223 -8
- package/lib/ui-react-dom.js +1 -1
- package/lib/ui-react-dom.js.gz +0 -0
- package/lib/ui-react.js +1 -1
- package/lib/ui-react.js.gz +0 -0
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
- package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/umd/persisters/persister-partykit-client.js +1 -0
- package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/umd/persisters/persister-partykit-server.js +1 -0
- package/lib/umd/persisters/persister-partykit-server.js.gz +0 -0
- package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/umd/persisters/persister-sqlite3.js +1 -1
- package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/umd/store.js +1 -1
- package/lib/umd/store.js.gz +0 -0
- package/lib/umd/tinybase.js +1 -1
- package/lib/umd/tinybase.js.gz +0 -0
- package/lib/umd/tools.js +1 -1
- package/lib/umd/tools.js.gz +0 -0
- package/lib/umd/ui-react-dom-debug.js +1 -1
- package/lib/umd/ui-react-dom-debug.js.gz +0 -0
- package/lib/umd/ui-react-dom.js +1 -1
- package/lib/umd/ui-react-dom.js.gz +0 -0
- package/lib/umd/ui-react.js +1 -1
- package/lib/umd/ui-react.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
- package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
- package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-partykit-client.js +1 -0
- package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-partykit-server.js +1 -0
- package/lib/umd-es6/persisters/persister-partykit-server.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
- package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
- package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
- package/lib/umd-es6/store.js +1 -1
- package/lib/umd-es6/store.js.gz +0 -0
- package/lib/umd-es6/tinybase.js +1 -1
- package/lib/umd-es6/tinybase.js.gz +0 -0
- package/lib/umd-es6/tools.js +1 -1
- package/lib/umd-es6/tools.js.gz +0 -0
- package/lib/umd-es6/ui-react-dom-debug.js +1 -1
- package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
- package/lib/umd-es6/ui-react-dom.js +1 -1
- package/lib/umd-es6/ui-react-dom.js.gz +0 -0
- package/lib/umd-es6/ui-react.js +1 -1
- package/lib/umd-es6/ui-react.js.gz +0 -0
- package/package.json +42 -31
- package/readme.md +13 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("react"),t=require("./ui-react");const l=e=>typeof e,r=l(""),o=l(!0),a=l(0),n="Value",s="currentTarget",i="value",d=isFinite,u=e=>null==e,{PureComponent:c,Fragment:m,createElement:h,useCallback:b,useLayoutEffect:p,useRef:g,useState:f}=e,w=(e,...t)=>u(e)?{}:e(...t),v=(e,t)=>e.map(t),I=Object,y=(e=[])=>I.fromEntries(e),C=(e,t)=>v(I.entries(e),(([e,l])=>t(l,e))),x="M20 80l5-15l40-40l10 10l-40 40l-15 5m5-15l10 10",k='content:url("',O=k+"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' stroke-width='4' stroke='white' fill='none'>",R='</svg>")',S=k+"data:image/svg+xml,%3csvg viewBox='0 0 680 680' xmlns='http://www.w3.org/2000/svg' style='width:680px%3bheight:680px'%3e %3cpath stroke='white' stroke-width='80' fill='none' d='M340 617a84 241 90 11.01 0zM131 475a94 254 70 10428-124 114 286 70 01-428 124zm0-140a94 254 70 10428-124 114 286 70 01-428 124zm-12-127a94 254 70 00306 38 90 260 90 01-306-38zm221 3a74 241 90 11.01 0z' /%3e %3cpath fill='%23d81b60' d='M131 475a94 254 70 10428-124 114 286 70 01-428 124zm0-140a94 254 70 10428-124 114 286 70 01-428 124z' /%3e %3cpath d='M249 619a94 240 90 00308-128 114 289 70 01-308 128zM119 208a94 254 70 00306 38 90 260 90 01-306-38zm221 3a74 241 90 11.01 0z' /%3e%3c/svg%3e\")",T=v([[20,20,20,60],[20,20,60,20],[20,60,60,20],[60,20,20,60],[30,30,40,40]],(([e,t,l,r])=>O+`<rect x='20' y='20' width='60' height='60' fill='grey'/><rect x='${e}' y='${t}' width='${l}' height='${r}' fill='white'/>`+R)),N=O+"<path d='M20 20l60 60M20 80l60-60' />"+R,V=O+`<path d='${x}' />`+R,P=O+`<path d='${x}M20 20l60 60' />`+R;var j=Object.defineProperty,z=Object.defineProperties,q=Object.getOwnPropertyDescriptors,M=Object.getOwnPropertySymbols,$=Object.prototype.hasOwnProperty,E=Object.prototype.propertyIsEnumerable,F=(e,t,l)=>t in e?j(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,H=(e,t)=>{for(var l in t||(t={}))$.call(t,l)&&F(e,l,t[l]);if(M)for(var l of M(t))E.call(t,l)&&F(e,l,t[l]);return e},B=(e,t)=>z(e,q(t));const D="*::-webkit-scrollbar";((e,t="")=>{e.join(t)})(C(B(H(B(H(B(H({"*":"all:revert","*::before":"all:revert","*::after":"all:revert",[D]:"width:0.5rem;height:0.5rem;",[D+"-track"]:"background:#111",[D+"-thumb"]:"background:#999;border:1px solid #111",[D+"-thumb:hover"]:"background:#fff",[D+"-corner"]:"background:#111",img:"width:1rem;height:1rem;background:#111;border:0;vertical-align:text-bottom",">img":"padding:0.25rem;bottom:0;right:0;position:fixed;"+S},y(v(["bottom:0;left:0","top:0;right:0"],((e,t)=>[`>img[data-position='${t}']`,e])))),{main:"display:flex;flex-direction:column;background:#111d;color:#fff;position:fixed;"}),y(v(["bottom:0;left:0;width:35vw;height:100vh","top:0;right:0;width:100vw;height:30vh","bottom:0;left:0;width:100vw;height:30vh","top:0;right:0;width:35vw;height:100vh","top:0;right:0;width:100vw;height:100vh"],((e,t)=>[`main[data-position='${t}']`,e])))),{header:"display:flex;padding:0.25rem;background:#000;align-items:center","header>img:nth-of-type(1)":S,"header>img:nth-of-type(6)":N}),y(v(T,((e,t)=>[`header>img[data-id='${t}']`,e])))),{"header>span":"flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-left:0.25rem",article:"padding:0.25rem 0.25rem 0.25rem 0.5rem;overflow:auto;flex:1",details:"margin-left:0.75rem;width:fit-content;","details img":"display:none","details[open]>summary img":"display:unset;background:none;margin-left:0.25rem","details[open]>summary img.edit":V,"details[open]>summary img.done":P,summary:"margin-left:-0.75rem;line-height:1.25rem;user-select:none;width:fit-content",table:"border-collapse:collapse;table-layout:fixed;margin-bottom:0.5rem","table input":"background:#111;color:unset;padding:0 0.25rem;border:0;font-size:unset;vertical-align:top;margin:0",'table input[type="number"]':"width:4rem","table tbody button":"font-size:0;background:#fff;border-radius:50%;margin:0 0.125rem 0 0;width:0.85rem;color:#111","table button:first-letter":"font-size:0.75rem",thead:"background:#222","th:nth-of-type(1)":"min-width:2rem;","th.sorted":"background:#000","table caption":"text-align:left;white-space:nowrap;line-height:1.25rem",button:"width:1.5rem;border:none;background:none;color:#fff;padding:0","button[disabled]":"color:#777","button.next":"margin-right:0.5rem","th,td":"overflow:hidden;text-overflow:ellipsis;padding:0.25rem 0.5rem;max-width:12rem;white-space:nowrap;border-width:1px 0;border-style:solid;border-color:#777;text-align:left","span.warn":"margin:0.25rem;color:#d81b60"}),((e,t)=>e?`& ${t}{${e}}`:"")));const A=(e,t,l,o)=>e==r?t:e==a?l:o;var L=Object.defineProperty,G=Object.defineProperties,J=Object.getOwnPropertyDescriptors,K=Object.getOwnPropertySymbols,Q=Object.prototype.hasOwnProperty,U=Object.prototype.propertyIsEnumerable,W=(e,t,l)=>t in e?L(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,X=(e,t)=>{for(var l in t||(t={}))Q.call(t,l)&&W(e,l,t[l]);if(K)for(var l of K(t))U.call(t,l)&&W(e,l,t[l]);return e},Y=(e,t)=>G(e,J(t)),Z=(e,t)=>{var l={};for(var r in e)Q.call(e,r)&&t.indexOf(r)<0&&(l[r]=e[r]);if(null!=e&&K)for(var r of K(e))t.indexOf(r)<0&&U.call(e,r)&&(l[r]=e[r]);return l};const{useCallback:_,useMemo:ee,useState:te}=e,le="editable",re=(e,l)=>v(t.useTableCellIds(e,l),(t=>e+"."+t)),oe=(e,t,l)=>{const r=_(e,t);return l?r:void 0},ae=(...e)=>ee((()=>e),e),ne=(e,t)=>ee((()=>({store:e,tableId:t})),[e,t]),se=(e,t)=>ee((()=>({queries:e,queryId:t})),[e,t]),ie=(e,t=!1,l,r=0,o,a,n,s)=>{const[[i,d,u],c]=te([e,t,r]),m=_((e=>{c(e),null==s||s(e)}),[s]),b=oe((e=>m([e,e==i&&!d,u])),[m,i,d,u],l),p=_((e=>m([i,d,e])),[m,i,d]),g=!0===n?ge:n;return[[i,d,u],b,ee((()=>!1===n?null:h(g,{offset:u,limit:o,total:a,onChange:p})),[n,g,u,o,a,p])]},de=(e,t,o)=>ee((()=>{const a=null!=t?t:e;return y(C(Array.isArray(a)?y(v(a,(e=>[e,e]))):a,((e,t)=>{return[t,X(X({},{label:t,component:o}),(a=e,l(a)==r?{label:e}:e))];var a})))}),[t,o,e]),ue=({className:e,headerRow:t,idColumn:l,params:[r,o,a,n,s,i]})=>h("table",{className:e},i?h("caption",null,i):null,!1===t?null:h("thead",null,h("tr",null,!1===l?null:h(ce,{sort:null!=n?n:[],label:"Id",onClick:s}),C(r,(({label:e},t)=>h(ce,{key:t,cellId:t,label:e,sort:null!=n?n:[],onClick:s}))))),h("tbody",null,v(a,(e=>h("tr",{key:e},!1===l?null:h("th",null,e),C(r,(({component:t,getComponentProps:l},r)=>h("td",{key:r},h(t,Y(X(X({},w(l,e,r)),o),{rowId:e,cellId:r})))))))))),ce=({cellId:e,sort:[t,l],label:r=(null!=e?e:""),onClick:o})=>h("th",{onClick:oe((()=>null==o?void 0:o(e)),[o,e],o),className:u(l)||t!=e?void 0:`sorted ${l?"de":"a"}scending`},u(l)||t!=e?null:(l?"↓":"↑")+" ",r),me=({localRowId:l,params:[r,o,a,n,s,i,d]})=>{const c=t.useRemoteRowId(s,l,i);return h("tr",null,!1===r?null:h(e.Fragment,null,h("th",null,l),h("th",null,c)),C(o,(({component:e,getComponentProps:t},r)=>{const[o,s]=r.split(".",2),i=o===a?l:o===n?c:null;return u(i)?null:h("td",{key:r},h(e,Y(X({},w(t,i,s)),{store:d,tableId:o,rowId:i,cellId:s})))})))},he=({thing:e,onThingChange:t,className:n,hasSchema:u})=>{const[c,m]=te(),[b,p]=te(),[g,f]=te(),[w,v]=te(),[I,y]=te();b!==e&&(m((e=>{const t=l(e);return(e=>e==r||e==o)(t)||t==a&&d(e)?t:void 0})(e)),p(e),f(e+""),v(Number(e)||0),y(!!e));const C=_(((e,l)=>{l(e),p(e),t(e)}),[t]);return h("div",{className:n},h("button",{className:c,onClick:_((()=>{if(!(null==u?void 0:u())){const e=A(c,a,o,r),l=A(e,g,w,I);m(e),p(l),t(l)}}),[u,t,g,w,I,c])},c),A(c,h("input",{key:c,value:g,onChange:_((e=>C(e[s][i]+"",f)),[C])}),h("input",{key:c,type:"number",value:w,onChange:_((e=>C(Number(e[s][i]||0),v)),[C])}),h("input",{key:c,type:"checkbox",checked:I,onChange:_((e=>C(!!e[s].checked,y)),[C])})))},be=({tableId:e,rowId:l,cellId:r,store:o,className:a})=>{var n;return h(he,{thing:t.useCell(e,l,r,o),onThingChange:t.useSetCellCallback(e,l,r,(e=>e),[],o),className:null!=a?a:le+"Cell",hasSchema:null==(n=t.useStoreOrStoreById(o))?void 0:n.hasTablesSchema})},pe=({valueId:e,store:l,className:r})=>{var o;return h(he,{thing:t.useValue(e,l),onThingChange:t.useSetValueCallback(e,(e=>e),[],l),className:null!=r?r:le+n,hasSchema:null==(o=t.useStoreOrStoreById(l))?void 0:o.hasValuesSchema})},ge=({onChange:t,total:l,offset:r=0,limit:o=l,singular:a="row",plural:n=a+"s"})=>{(r>l||r<0)&&(r=0,t(0));const s=oe((()=>t(r-o)),[t,r,o],r>0),i=oe((()=>t(r+o)),[t,r,o],r+o<l);return h(e.Fragment,null,l>o&&h(e.Fragment,null,h("button",{className:"previous",disabled:0==r,onClick:s},"←"),h("button",{className:"next",disabled:r+o>=l,onClick:i},"→"),r+1," to ",Math.min(l,r+o)," of "),l," ",1!=l?n:a)};var fe=Object.defineProperty,we=(e,t,l)=>(((e,t,l)=>{t in e?fe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l})(e,"symbol"!=typeof t?t+"":t,l),l);we(class extends c{constructor(e){super(e),we(this,"componentDidCatch",((e,t)=>console.error(e,t.componentStack))),this.state={e:0}}render(){return this.state.e?h("span",{className:"warn"},"Inspector error: please see console for details."):this.props.children}},"getDerivedStateFromError",(()=>({e:1})));const ve=e=>new Map(e);ve(),ve(),exports.EditableCellView=be,exports.EditableValueView=pe,exports.RelationshipInHtmlTable=({relationshipId:l,relationships:r,editable:o,customCells:a,className:n,headerRow:s,idColumn:i=!0})=>{const[d,u,c,m]=((e,t)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getLocalTableId(t),null==e?void 0:e.getRemoteTableId(t)])(t.useRelationshipsOrRelationshipsById(r),l),b=de([...re(c,u),...re(m,u)],a,o?be:t.CellView),p=ae(i,b,c,m,l,d,u);return h("table",{className:n},!1===s?null:h("thead",null,h("tr",null,!1===i?null:h(e.Fragment,null,h("th",null,c,".Id"),h("th",null,m,".Id")),C(b,(({label:e},t)=>h("th",{key:t},e))))),h("tbody",null,v(t.useRowIds(c,u),(e=>h(me,{key:e,localRowId:e,params:p})))))},exports.ResultSortedTableInHtmlTable=e=>{var l=e,{queryId:r,cellId:o,descending:a,offset:n,limit:s,queries:i,sortOnClick:d,paginator:u=!1,customCells:c,onChange:m}=l,b=Z(l,["queryId","cellId","descending","offset","limit","queries","sortOnClick","paginator","customCells","onChange"]);const[p,g,f]=ie(o,a,d,n,s,t.useResultRowCount(r,i),u,m);return h(ue,Y(X({},b),{params:ae(de(t.useResultTableCellIds(r,i),c,t.ResultCellView),se(i,r),t.useResultSortedRowIds(r,...p,s,i),p,g,f)}))},exports.ResultTableInHtmlTable=e=>{var l=e,{queryId:r,queries:o,customCells:a}=l,n=Z(l,["queryId","queries","customCells"]);return h(ue,Y(X({},n),{params:ae(de(t.useResultTableCellIds(r,o),a,t.ResultCellView),se(o,r),t.useResultRowIds(r,o))}))},exports.SliceInHtmlTable=e=>{var l=e,{indexId:r,sliceId:o,indexes:a,editable:n,customCells:s}=l,i=Z(l,["indexId","sliceId","indexes","editable","customCells"]);const[d,u,c]=((e,t)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getTableId(t)])(t.useIndexesOrIndexesById(a),r);return h(ue,Y(X({},i),{params:ae(de(t.useTableCellIds(c,u),s,n?be:t.CellView),ne(u,c),t.useSliceRowIds(r,o,d))}))},exports.SortedTableInHtmlTable=e=>{var l=e,{tableId:r,cellId:o,descending:a,offset:n,limit:s,store:i,editable:d,sortOnClick:u,paginator:c=!1,onChange:m,customCells:b}=l,p=Z(l,["tableId","cellId","descending","offset","limit","store","editable","sortOnClick","paginator","onChange","customCells"]);const[g,f,w]=ie(o,a,u,n,s,t.useRowCount(r,i),c,m);return h(ue,Y(X({},p),{params:ae(de(t.useTableCellIds(r,i),b,d?be:t.CellView),ne(i,r),t.useSortedRowIds(r,...g,s,i),g,f,w)}))},exports.SortedTablePaginator=ge,exports.StoreInspector=e=>null,exports.TableInHtmlTable=e=>{var l=e,{tableId:r,store:o,editable:a,customCells:n}=l,s=Z(l,["tableId","store","editable","customCells"]);return h(ue,Y(X({},s),{params:ae(de(t.useTableCellIds(r,o),n,a?be:t.CellView),ne(o,r),t.useRowIds(r,o))}))},exports.ValuesInHtmlTable=({store:e,editable:l=!1,valueComponent:r=(l?pe:t.ValueView),getValueComponentProps:o,className:a,headerRow:s,idColumn:i})=>h("table",{className:a},!1===s?null:h("thead",null,h("tr",null,!1===i?null:h("th",null,"Id"),h("th",null,n))),h("tbody",null,v(t.useValueIds(e),(t=>h("tr",{key:t},!1===i?null:h("th",null,t),h("td",null,h(r,Y(X({},w(o,t)),{valueId:t,store:e}))))))));
|
|
1
|
+
"use strict";var e=require("react"),t=require("./ui-react");const l=e=>typeof e,r=l(""),o=l(!0),a=l(0),n="Value",s="currentTarget",i="value",d=isFinite,u=e=>null==e,{PureComponent:c,Fragment:m,createElement:h,useCallback:b,useLayoutEffect:p,useRef:g,useState:f}=e,w=(e,...t)=>u(e)?{}:e(...t),v=(e,t)=>e.map(t),I=Object,C=(e=[])=>I.fromEntries(e),y=(e,t)=>v(I.entries(e),(([e,l])=>t(l,e))),x="M20 80l5-15l40-40l10 10l-40 40l-15 5m5-15l10 10",k='content:url("',O=k+"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' stroke-width='4' stroke='white' fill='none'>",R='</svg>")',S=k+"data:image/svg+xml,%3csvg viewBox='0 0 680 680' xmlns='http://www.w3.org/2000/svg' style='width:680px%3bheight:680px'%3e %3cpath stroke='white' stroke-width='80' fill='none' d='M340 617a84 241 90 11.01 0zM131 475a94 254 70 10428-124 114 286 70 01-428 124zm0-140a94 254 70 10428-124 114 286 70 01-428 124zm-12-127a94 254 70 00306 38 90 260 90 01-306-38zm221 3a74 241 90 11.01 0z' /%3e %3cpath fill='%23d81b60' d='M131 475a94 254 70 10428-124 114 286 70 01-428 124zm0-140a94 254 70 10428-124 114 286 70 01-428 124z' /%3e %3cpath d='M249 619a94 240 90 00308-128 114 289 70 01-308 128zM119 208a94 254 70 00306 38 90 260 90 01-306-38zm221 3a74 241 90 11.01 0z' /%3e%3c/svg%3e\")",T=v([[20,20,20,60],[20,20,60,20],[20,60,60,20],[60,20,20,60],[30,30,40,40]],(([e,t,l,r])=>O+`<rect x='20' y='20' width='60' height='60' fill='grey'/><rect x='${e}' y='${t}' width='${l}' height='${r}' fill='white'/>`+R)),N=O+"<path d='M20 20l60 60M20 80l60-60' />"+R,V=O+`<path d='${x}' />`+R,P=O+`<path d='${x}M20 20l60 60' />`+R;var j=Object.defineProperty,z=Object.defineProperties,q=Object.getOwnPropertyDescriptors,M=Object.getOwnPropertySymbols,$=Object.prototype.hasOwnProperty,E=Object.prototype.propertyIsEnumerable,F=(e,t,l)=>t in e?j(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,H=(e,t)=>{for(var l in t||(t={}))$.call(t,l)&&F(e,l,t[l]);if(M)for(var l of M(t))E.call(t,l)&&F(e,l,t[l]);return e},B=(e,t)=>z(e,q(t));const D="*::-webkit-scrollbar";((e,t="")=>{e.join(t)})(y(B(H(B(H(B(H({"*":"all:revert","*::before":"all:revert","*::after":"all:revert",[D]:"width:0.5rem;height:0.5rem;",[D+"-track"]:"background:#111",[D+"-thumb"]:"background:#999;border:1px solid #111",[D+"-thumb:hover"]:"background:#fff",[D+"-corner"]:"background:#111",img:"width:1rem;height:1rem;background:#111;border:0;vertical-align:text-bottom",">img":"padding:0.25rem;bottom:0;right:0;position:fixed;"+S},C(v(["bottom:0;left:0","top:0;right:0"],((e,t)=>[`>img[data-position='${t}']`,e])))),{main:"display:flex;flex-direction:column;background:#111d;color:#fff;position:fixed;"}),C(v(["bottom:0;left:0;width:35vw;height:100vh","top:0;right:0;width:100vw;height:30vh","bottom:0;left:0;width:100vw;height:30vh","top:0;right:0;width:35vw;height:100vh","top:0;right:0;width:100vw;height:100vh"],((e,t)=>[`main[data-position='${t}']`,e])))),{header:"display:flex;padding:0.25rem;background:#000;align-items:center","header>img:nth-of-type(1)":S,"header>img:nth-of-type(6)":N}),C(v(T,((e,t)=>[`header>img[data-id='${t}']`,e])))),{"header>span":"flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-left:0.25rem",article:"padding:0.25rem 0.25rem 0.25rem 0.5rem;overflow:auto;flex:1",details:"margin-left:0.75rem;width:fit-content;","details img":"display:none","details[open]>summary img":"display:unset;background:none;margin-left:0.25rem","details[open]>summary img.edit":V,"details[open]>summary img.done":P,summary:"margin-left:-0.75rem;line-height:1.25rem;user-select:none;width:fit-content",table:"border-collapse:collapse;table-layout:fixed;margin-bottom:0.5rem","table input":"background:#111;color:unset;padding:0 0.25rem;border:0;font-size:unset;vertical-align:top;margin:0",'table input[type="number"]':"width:4rem","table tbody button":"font-size:0;background:#fff;border-radius:50%;margin:0 0.125rem 0 0;width:0.85rem;color:#111","table button:first-letter":"font-size:0.75rem",thead:"background:#222","th:nth-of-type(1)":"min-width:2rem;","th.sorted":"background:#000","table caption":"text-align:left;white-space:nowrap;line-height:1.25rem",button:"width:1.5rem;border:none;background:none;color:#fff;padding:0","button[disabled]":"color:#777","button.next":"margin-right:0.5rem","th,td":"overflow:hidden;text-overflow:ellipsis;padding:0.25rem 0.5rem;max-width:12rem;white-space:nowrap;border-width:1px 0;border-style:solid;border-color:#777;text-align:left","span.warn":"margin:0.25rem;color:#d81b60"}),((e,t)=>e?`& ${t}{${e}}`:"")));const A=(e,t,l,o)=>e==r?t:e==a?l:o;var L=Object.defineProperty,G=Object.defineProperties,J=Object.getOwnPropertyDescriptors,K=Object.getOwnPropertySymbols,Q=Object.prototype.hasOwnProperty,U=Object.prototype.propertyIsEnumerable,W=(e,t,l)=>t in e?L(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,X=(e,t)=>{for(var l in t||(t={}))Q.call(t,l)&&W(e,l,t[l]);if(K)for(var l of K(t))U.call(t,l)&&W(e,l,t[l]);return e},Y=(e,t)=>G(e,J(t)),Z=(e,t)=>{var l={};for(var r in e)Q.call(e,r)&&t.indexOf(r)<0&&(l[r]=e[r]);if(null!=e&&K)for(var r of K(e))t.indexOf(r)<0&&U.call(e,r)&&(l[r]=e[r]);return l};const{useCallback:_,useMemo:ee,useState:te}=e,le="editable",re=(e,l)=>v(t.useTableCellIds(e,l),(t=>e+"."+t)),oe=(e,t,l)=>{const r=_(e,t);return l?r:void 0},ae=(...e)=>ee((()=>e),e),ne=(e,t)=>ee((()=>({store:e,tableId:t})),[e,t]),se=(e,t)=>ee((()=>({queries:e,queryId:t})),[e,t]),ie=(e,t=!1,l,r=0,o,a,n,s)=>{const[[i,d,u],c]=te([e,t,r]),m=_((e=>{c(e),null==s||s(e)}),[s]),b=oe((e=>m([e,e==i&&!d,u])),[m,i,d,u],l),p=_((e=>m([i,d,e])),[m,i,d]),g=!0===n?ge:n;return[[i,d,u],b,ee((()=>!1===n?null:h(g,{offset:u,limit:o,total:a,onChange:p})),[n,g,u,o,a,p])]},de=(e,t,o)=>ee((()=>{const a=null!=t?t:e;return C(y(Array.isArray(a)?C(v(a,(e=>[e,e]))):a,((e,t)=>{return[t,X(X({},{label:t,component:o}),(a=e,l(a)==r?{label:e}:e))];var a})))}),[t,o,e]),ue=({className:e,headerRow:t,idColumn:l,params:[r,o,a,n,s,i]})=>h("table",{className:e},i?h("caption",null,i):null,!1===t?null:h("thead",null,h("tr",null,!1===l?null:h(ce,{sort:null!=n?n:[],label:"Id",onClick:s}),y(r,(({label:e},t)=>h(ce,{key:t,cellId:t,label:e,sort:null!=n?n:[],onClick:s}))))),h("tbody",null,v(a,(e=>h("tr",{key:e},!1===l?null:h("th",null,e),y(r,(({component:t,getComponentProps:l},r)=>h("td",{key:r},h(t,Y(X(X({},w(l,e,r)),o),{rowId:e,cellId:r})))))))))),ce=({cellId:e,sort:[t,l],label:r=(null!=e?e:""),onClick:o})=>h("th",{onClick:oe((()=>null==o?void 0:o(e)),[o,e],o),className:u(l)||t!=e?void 0:`sorted ${l?"de":"a"}scending`},u(l)||t!=e?null:(l?"↓":"↑")+" ",r),me=({localRowId:l,params:[r,o,a,n,s,i,d]})=>{const c=t.useRemoteRowId(s,l,i);return h("tr",null,!1===r?null:h(e.Fragment,null,h("th",null,l),h("th",null,c)),y(o,(({component:e,getComponentProps:t},r)=>{const[o,s]=r.split(".",2),i=o===a?l:o===n?c:null;return u(i)?null:h("td",{key:r},h(e,Y(X({},w(t,i,s)),{store:d,tableId:o,rowId:i,cellId:s})))})))},he=({thing:e,onThingChange:t,className:n,hasSchema:u})=>{const[c,m]=te(),[b,p]=te(),[g,f]=te(),[w,v]=te(),[I,C]=te();b!==e&&(m((e=>{const t=l(e);return(e=>e==r||e==o)(t)||t==a&&d(e)?t:void 0})(e)),p(e),f(e+""),v(Number(e)||0),C(!!e));const y=_(((e,l)=>{l(e),p(e),t(e)}),[t]);return h("div",{className:n},h("button",{className:c,onClick:_((()=>{if(!(null==u?void 0:u())){const e=A(c,a,o,r),l=A(e,g,w,I);m(e),p(l),t(l)}}),[u,t,g,w,I,c])},c),A(c,h("input",{key:c,value:g,onChange:_((e=>y(e[s][i]+"",f)),[y])}),h("input",{key:c,type:"number",value:w,onChange:_((e=>y(Number(e[s][i]||0),v)),[y])}),h("input",{key:c,type:"checkbox",checked:I,onChange:_((e=>y(!!e[s].checked,C)),[y])})))},be=({tableId:e,rowId:l,cellId:r,store:o,className:a})=>{var n;return h(he,{thing:t.useCell(e,l,r,o),onThingChange:t.useSetCellCallback(e,l,r,(e=>e),[],o),className:null!=a?a:le+"Cell",hasSchema:null==(n=t.useStoreOrStoreById(o))?void 0:n.hasTablesSchema})},pe=({valueId:e,store:l,className:r})=>{var o;return h(he,{thing:t.useValue(e,l),onThingChange:t.useSetValueCallback(e,(e=>e),[],l),className:null!=r?r:le+n,hasSchema:null==(o=t.useStoreOrStoreById(l))?void 0:o.hasValuesSchema})},ge=({onChange:t,total:l,offset:r=0,limit:o=l,singular:a="row",plural:n=a+"s"})=>{(r>l||r<0)&&(r=0,t(0));const s=oe((()=>t(r-o)),[t,r,o],r>0),i=oe((()=>t(r+o)),[t,r,o],r+o<l);return h(e.Fragment,null,l>o&&h(e.Fragment,null,h("button",{className:"previous",disabled:0==r,onClick:s},"←"),h("button",{className:"next",disabled:r+o>=l,onClick:i},"→"),r+1," to ",Math.min(l,r+o)," of "),l," ",1!=l?n:a)};(class extends c{constructor(e){super(e),this.componentDidCatch=(e,t)=>console.error(e,t.componentStack),this.state={e:0}}render(){return this.state.e?h("span",{className:"warn"},"Inspector error: please see console for details."):this.props.children}}).getDerivedStateFromError=()=>({e:1});const fe=e=>new Map(e);fe(),fe(),exports.EditableCellView=be,exports.EditableValueView=pe,exports.RelationshipInHtmlTable=({relationshipId:l,relationships:r,editable:o,customCells:a,className:n,headerRow:s,idColumn:i=!0})=>{const[d,u,c,m]=((e,t)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getLocalTableId(t),null==e?void 0:e.getRemoteTableId(t)])(t.useRelationshipsOrRelationshipsById(r),l),b=de([...re(c,u),...re(m,u)],a,o?be:t.CellView),p=ae(i,b,c,m,l,d,u);return h("table",{className:n},!1===s?null:h("thead",null,h("tr",null,!1===i?null:h(e.Fragment,null,h("th",null,c,".Id"),h("th",null,m,".Id")),y(b,(({label:e},t)=>h("th",{key:t},e))))),h("tbody",null,v(t.useRowIds(c,u),(e=>h(me,{key:e,localRowId:e,params:p})))))},exports.ResultSortedTableInHtmlTable=e=>{var l=e,{queryId:r,cellId:o,descending:a,offset:n,limit:s,queries:i,sortOnClick:d,paginator:u=!1,customCells:c,onChange:m}=l,b=Z(l,["queryId","cellId","descending","offset","limit","queries","sortOnClick","paginator","customCells","onChange"]);const[p,g,f]=ie(o,a,d,n,s,t.useResultRowCount(r,i),u,m);return h(ue,Y(X({},b),{params:ae(de(t.useResultTableCellIds(r,i),c,t.ResultCellView),se(i,r),t.useResultSortedRowIds(r,...p,s,i),p,g,f)}))},exports.ResultTableInHtmlTable=e=>{var l=e,{queryId:r,queries:o,customCells:a}=l,n=Z(l,["queryId","queries","customCells"]);return h(ue,Y(X({},n),{params:ae(de(t.useResultTableCellIds(r,o),a,t.ResultCellView),se(o,r),t.useResultRowIds(r,o))}))},exports.SliceInHtmlTable=e=>{var l=e,{indexId:r,sliceId:o,indexes:a,editable:n,customCells:s}=l,i=Z(l,["indexId","sliceId","indexes","editable","customCells"]);const[d,u,c]=((e,t)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getTableId(t)])(t.useIndexesOrIndexesById(a),r);return h(ue,Y(X({},i),{params:ae(de(t.useTableCellIds(c,u),s,n?be:t.CellView),ne(u,c),t.useSliceRowIds(r,o,d))}))},exports.SortedTableInHtmlTable=e=>{var l=e,{tableId:r,cellId:o,descending:a,offset:n,limit:s,store:i,editable:d,sortOnClick:u,paginator:c=!1,onChange:m,customCells:b}=l,p=Z(l,["tableId","cellId","descending","offset","limit","store","editable","sortOnClick","paginator","onChange","customCells"]);const[g,f,w]=ie(o,a,u,n,s,t.useRowCount(r,i),c,m);return h(ue,Y(X({},p),{params:ae(de(t.useTableCellIds(r,i),b,d?be:t.CellView),ne(i,r),t.useSortedRowIds(r,...g,s,i),g,f,w)}))},exports.SortedTablePaginator=ge,exports.StoreInspector=e=>null,exports.TableInHtmlTable=e=>{var l=e,{tableId:r,store:o,editable:a,customCells:n}=l,s=Z(l,["tableId","store","editable","customCells"]);return h(ue,Y(X({},s),{params:ae(de(t.useTableCellIds(r,o),n,a?be:t.CellView),ne(o,r),t.useRowIds(r,o))}))},exports.ValuesInHtmlTable=({store:e,editable:l=!1,valueComponent:r=(l?pe:t.ValueView),getValueComponentProps:o,className:a,headerRow:s,idColumn:i})=>h("table",{className:a},!1===s?null:h("thead",null,h("tr",null,!1===i?null:h("th",null,"Id"),h("th",null,n))),h("tbody",null,v(t.useValueIds(e),(t=>h("tr",{key:t},!1===i?null:h("th",null,t),h("td",null,h(r,Y(X({},w(o,t)),{valueId:t,store:e}))))))));
|
|
Binary file
|
package/lib/cjs-es6/ui-react.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("react");const s=e=>typeof e,t="",o=s(t),r="Result",l="Ids",u="Table",n=u+"s",d=u+l,i="Row",p=i+"Count",a=i+l,c="Sorted"+i+l,I="Cell",x=I+l,C="Value",b=C+"s",w=C+l,R=e=>null==e,k=(e,s,t)=>R(e)?null==t?void 0:t():s(e),v=e=>s(e)==o,g=()=>{},m=(e,s)=>e.map(s),y=Object.keys,{createContext:h,useContext:L}=e,V=h([]),S=(e,s)=>{var t;const o=L(V);return R(e)?o[s]:v(e)?((e,s)=>k(e,(e=>e[s])))(null!=(t=o[s+1])?t:{},e):e},f=(e,s)=>{const t=S(e,s);return R(e)||v(e)?t:e},T=e=>{var s;return y(null!=(s=L(V)[e])?s:{})},P=e=>f(e,0),O=e=>f(e,2),q=e=>f(e,4),B=e=>f(e,6),M=e=>f(e,8),j=e=>f(e,10),{useCallback:D,useEffect:Q,useMemo:E,useRef:F,useState:A}=e,G=(e,s,t=[])=>{const o=E((()=>s(e)),[e,...t]);return Q((()=>()=>o.destroy()),[o]),o},U=(e,s,t,o=[],r)=>{const[,l]=A(),u=D((()=>{var r,l;return null!=(l=null==(r=null==s?void 0:s["get"+e])?void 0:r.call(s,...o))?l:t}),[s,...o]),[n]=A(u),d=F(n);return E((()=>d.current=u()),[u]),z(e,s,((...e)=>{d.current=R(r)?u():e[r],l([])}),[],o),d.current},z=(e,s,t,o=[],r=[],...l)=>Q((()=>{var o;const u=null==(o=null==s?void 0:s["add"+e+"Listener"])?void 0:o.call(s,...r,t,...l);return()=>null==s?void 0:s.delListener(u)}),[s,...r,...o,...l]),H=(e,s,t,o=[],r=g,l=[],...u)=>{const n=P(e);return D((e=>k(n,(o=>k(t(e,o),(e=>r(o["set"+s](...u,e),e)))))),[n,s,...o,...l,...u])},J=(e,s,t=g,o=[],...r)=>{const l=P(e);return D((()=>t(null==l?void 0:l["del"+s](...r))),[l,s,...o,...r])},K=(e,s,t)=>{const o=j(e);return D((()=>null==o?void 0:o[s](t)),[o,s,t])},N=e=>U(d,P(e),[],[]),W=(e,s)=>U(a,P(s),[],[e]),X=(e,s,t,o=0,r,l)=>U(c,P(l),[],[e,s,t,o,r],6),Y=(e,s,t)=>U(x,P(t),[],[e,s]),Z=(e,s,t,o)=>U(I,P(o),void 0,[e,s,t],4),$=e=>U(w,P(e),[],[]),_=(e,s)=>U(C,P(s),void 0,[e]),ee=(e,s)=>U("Metric",O(s),void 0,[e]),se=(e,s)=>U("SliceIds",q(s),[],[e]),te=(e,s,t)=>U("Slice"+a,q(t),[],[e,s]),oe=(e,s,t)=>U("RemoteRowId",B(t),void 0,[e,s]),re=(e,s,t)=>U("Local"+a,B(t),[],[e,s]),le=(e,s,t)=>U("Linked"+a,B(t),[],[e,s]),ue=(e,s)=>U(r+a,M(s),[],[e]),ne=(e,s,t,o=0,l,u)=>U(r+c,M(u),[],[e,s,t,o,l],6),de=(e,s,t)=>U(r+x,M(t),[],[e,s]),ie=(e,s,t,o)=>U(r+I,M(o),void 0,[e,s,t]),pe=e=>U("CheckpointIds",j(e),[[],void 0,[]]),ae=(e,s)=>U("Checkpoint",j(s),void 0,[e]),ce=e=>K(e,"goBackward"),Ie=e=>K(e,"goForward"),{PureComponent:xe,Fragment:Ce,createElement:be,useCallback:we,useLayoutEffect:Re,useRef:ke,useState:ve}=e,ge=(e,...s)=>R(e)?{}:e(...s),me=(e,s)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getLocalTableId(s),null==e?void 0:e.getRemoteTableId(s)];var ye=Object.defineProperty,he=Object.defineProperties,Le=Object.getOwnPropertyDescriptors,Ve=Object.getOwnPropertySymbols,Se=Object.prototype.hasOwnProperty,fe=Object.prototype.propertyIsEnumerable,Te=(e,s,t)=>s in e?ye(e,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[s]=t,Pe=(e,s)=>{for(var t in s||(s={}))Se.call(s,t)&&Te(e,t,s[t]);if(Ve)for(var t of Ve(s))fe.call(s,t)&&Te(e,t,s[t]);return e},Oe=(e,s)=>he(e,Le(s)),qe=(e,s)=>{var t={};for(var o in e)Se.call(e,o)&&s.indexOf(o)<0&&(t[o]=e[o]);if(null!=e&&Ve)for(var o of Ve(e))s.indexOf(o)<0&&fe.call(e,o)&&(t[o]=e[o]);return t};const{useMemo:Be}=e,Me=({tableId:e,store:s,rowComponent:t=Ae,getRowComponentProps:o,customCellIds:r,separator:l,debugIds:u},n)=>Ee(m(n,(l=>be(t,Oe(Pe({},ge(o,l)),{key:l,tableId:e,rowId:l,customCellIds:r,store:s,debugIds:u})))),l,u,e),je=({queryId:e,queries:s,resultRowComponent:t=Je,getResultRowComponentProps:o,separator:r,debugIds:l},u)=>Ee(m(u,(r=>be(t,Oe(Pe({},ge(o,r)),{key:r,queryId:e,rowId:r,queries:s,debugIds:l})))),r,l,e),De=({relationshipId:e,relationships:s,rowComponent:t=Ae,getRowComponentProps:o,separator:r,debugIds:l},u,n)=>{const[d,i,p]=me(B(s),e),a=u(e,n,d);return Ee(m(a,(e=>be(t,Oe(Pe({},ge(o,e)),{key:e,tableId:p,rowId:e,store:i,debugIds:l})))),r,l,n)},Qe=e=>({checkpoints:s,checkpointComponent:t=Ke,getCheckpointComponentProps:o,separator:r,debugIds:l})=>{const u=j(s);return Ee(m(e(pe(u)),(e=>be(t,Oe(Pe({},ge(o,e)),{key:e,checkpoints:u,checkpointId:e,debugIds:l})))),r)},Ee=(e,s,t,o)=>{const r=R(s)||!Array.isArray(e)?e:m(e,((e,t)=>t>0?[s,e]:e));return t?[o,":{",r,"}"]:r},Fe=({tableId:e,rowId:s,cellId:o,store:r,debugIds:l})=>{var u;return Ee(t+(null!=(u=Z(e,s,o,r))?u:t),void 0,l,o)},Ae=({tableId:e,rowId:s,store:t,cellComponent:o=Fe,getCellComponentProps:r,customCellIds:l,separator:u,debugIds:n})=>Ee(m(((e,s,t,o)=>{const r=Y(s,t,o);return null!=e?e:r})(l,e,s,t),(l=>be(o,Oe(Pe({},ge(r,l)),{key:l,tableId:e,rowId:s,cellId:l,store:t,debugIds:n})))),u,n,s),Ge=e=>Me(e,W(e.tableId,e.store)),Ue=({valueId:e,store:s,debugIds:o})=>{var r;return Ee(t+(null!=(r=_(e,s))?r:t),void 0,o,e)},ze=({indexId:e,sliceId:s,indexes:t,rowComponent:o=Ae,getRowComponentProps:r,separator:l,debugIds:u})=>{const[n,d,i]=((e,s)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getTableId(s)])(q(t),e),p=te(e,s,n);return Ee(m(p,(e=>be(o,Oe(Pe({},ge(r,e)),{key:e,tableId:i,rowId:e,store:d,debugIds:u})))),l,u,s)},He=({queryId:e,rowId:s,cellId:o,queries:r,debugIds:l})=>{var u;return Ee(t+(null!=(u=ie(e,s,o,r))?u:t),void 0,l,o)},Je=({queryId:e,rowId:s,queries:t,resultCellComponent:o=He,getResultCellComponentProps:r,separator:l,debugIds:u})=>Ee(m(de(e,s,t),(l=>be(o,Oe(Pe({},ge(r,l)),{key:l,queryId:e,rowId:s,cellId:l,queries:t,debugIds:u})))),l,u,s),Ke=({checkpoints:e,checkpointId:s,debugIds:o})=>{var r;return Ee(null!=(r=ae(s,e))?r:t,void 0,o,s)},Ne=Qe((e=>e[0])),We=Qe((e=>R(e[1])?[]:[e[1]])),Xe=Qe((e=>e[2]));exports.BackwardCheckpointsView=Ne,exports.CellView=Fe,exports.CheckpointView=Ke,exports.CurrentCheckpointView=We,exports.ForwardCheckpointsView=Xe,exports.IndexView=({indexId:e,indexes:s,sliceComponent:t=ze,getSliceComponentProps:o,separator:r,debugIds:l})=>Ee(m(se(e,s),(r=>be(t,Oe(Pe({},ge(o,r)),{key:r,indexId:e,sliceId:r,indexes:s,debugIds:l})))),r,l,e),exports.LinkedRowsView=e=>De(e,le,e.firstRowId),exports.LocalRowsView=e=>De(e,re,e.remoteRowId),exports.MetricView=({metricId:e,metrics:s,debugIds:o})=>{var r;return Ee(null!=(r=ee(e,s))?r:t,void 0,o,e)},exports.Provider=({store:s,storesById:t,metrics:o,metricsById:r,indexes:l,indexesById:u,relationships:n,relationshipsById:d,queries:i,queriesById:p,checkpoints:a,checkpointsById:c,children:I})=>{const x=e.useContext(V);return be(V.Provider,{value:Be((()=>[null!=s?s:x[0],Pe(Pe({},x[1]),t),null!=o?o:x[2],Pe(Pe({},x[3]),r),null!=l?l:x[4],Pe(Pe({},x[5]),u),null!=n?n:x[6],Pe(Pe({},x[7]),d),null!=i?i:x[8],Pe(Pe({},x[9]),p),null!=a?a:x[10],Pe(Pe({},x[11]),c)]),[s,t,o,r,l,u,n,d,i,p,a,c,x])},I)},exports.RemoteRowView=({relationshipId:e,localRowId:s,relationships:t,rowComponent:o=Ae,getRowComponentProps:r,debugIds:l})=>{const[u,n,,d]=me(B(t),e),i=oe(e,s,u);return Ee(R(d)||R(i)?null:be(o,Oe(Pe({},ge(r,i)),{key:i,tableId:d,rowId:i,store:n,debugIds:l})),void 0,l,s)},exports.ResultCellView=He,exports.ResultRowView=Je,exports.ResultSortedTableView=e=>{var s=e,{cellId:t,descending:o,offset:r,limit:l}=s,u=qe(s,["cellId","descending","offset","limit"]);return je(u,ne(u.queryId,t,o,r,l,u.queries))},exports.ResultTableView=e=>je(e,ue(e.queryId,e.queries)),exports.RowView=Ae,exports.SliceView=ze,exports.SortedTableView=e=>{var s=e,{cellId:t,descending:o,offset:r,limit:l}=s,u=qe(s,["cellId","descending","offset","limit"]);return Me(u,X(u.tableId,t,o,r,l,u.store))},exports.TableView=Ge,exports.TablesView=({store:e,tableComponent:s=Ge,getTableComponentProps:t,separator:o,debugIds:r})=>Ee(m(N(e),(o=>be(s,Oe(Pe({},ge(t,o)),{key:o,tableId:o,store:e,debugIds:r})))),o),exports.ValueView=Ue,exports.ValuesView=({store:e,valueComponent:s=Ue,getValueComponentProps:t,separator:o,debugIds:r})=>Ee(m($(e),(o=>be(s,Oe(Pe({},ge(t,o)),{key:o,valueId:o,store:e,debugIds:r})))),o),exports.useAddRowCallback=(e,s,t=[],o,r=g,l=[],u=!0)=>{const n=P(o);return D((t=>k(n,(o=>k(s(t,o),(s=>r(o.addRow(e,s,u),o,s)))))),[n,e,...t,...l,u])},exports.useCell=Z,exports.useCellIds=Y,exports.useCellIdsListener=(e,s,t,o,r,l)=>z(x,P(l),t,o,[e,s],r),exports.useCellListener=(e,s,t,o,r,l,u)=>z(I,P(u),o,r,[e,s,t],l),exports.useCheckpoint=ae,exports.useCheckpointIds=pe,exports.useCheckpointIdsListener=(e,s,t)=>z("CheckpointIds",j(t),e,s),exports.useCheckpointListener=(e,s,t,o)=>z("Checkpoint",j(o),s,t,[e]),exports.useCheckpoints=e=>S(e,10),exports.useCheckpointsIds=()=>T(11),exports.useCheckpointsOrCheckpointsById=j,exports.useCreateCheckpoints=(e,s,t)=>G(e,s,t),exports.useCreateIndexes=(e,s,t)=>G(e,s,t),exports.useCreateMetrics=(e,s,t)=>G(e,s,t),exports.useCreatePersister=(e,s,t=[],o,r=[])=>{const[,l]=A(),u=E((()=>s(e)),[e,...t]);return Q((()=>{var e;return e=function*(){yield null==o?void 0:o(u),l(1)},new Promise(((s,t)=>{var o=s=>{try{l(e.next(s))}catch(e){t(e)}},r=s=>{try{l(e.throw(s))}catch(e){t(e)}},l=e=>e.done?s(e.value):Promise.resolve(e.value).then(o,r);l((e=e.apply(void 0,null)).next())})),()=>{u.destroy()}}),[u,...r]),u},exports.useCreateQueries=(e,s,t)=>G(e,s,t),exports.useCreateRelationships=(e,s,t)=>G(e,s,t),exports.useCreateStore=(e,s=[])=>E(e,s),exports.useDelCellCallback=(e,s,t,o,r,l,u)=>J(r,I,l,u,e,s,t,o),exports.useDelRowCallback=(e,s,t,o,r)=>J(t,i,o,r,e,s),exports.useDelTableCallback=(e,s,t,o)=>J(s,u,t,o,e),exports.useDelTablesCallback=(e,s,t)=>J(e,n,s,t),exports.useDelValueCallback=(e,s,t,o)=>J(s,C,t,o,e),exports.useDelValuesCallback=(e,s,t)=>J(e,b,s,t),exports.useGoBackwardCallback=ce,exports.useGoForwardCallback=Ie,exports.useGoToCallback=(e,s=[],t,o=g,r=[])=>{const l=j(t);return D((s=>k(l,(t=>k(e(s),(e=>o(t.goTo(e),e)))))),[l,...s,...r])},exports.useIndexIds=e=>U("IndexIds",q(e),[]),exports.useIndexes=e=>S(e,4),exports.useIndexesIds=()=>T(5),exports.useIndexesOrIndexesById=q,exports.useLinkedRowIds=le,exports.useLinkedRowIdsListener=(e,s,t,o,r)=>z("Linked"+a,B(r),t,o,[e,s]),exports.useLocalRowIds=re,exports.useLocalRowIdsListener=(e,s,t,o,r)=>z("Local"+a,B(r),t,o,[e,s]),exports.useMetric=ee,exports.useMetricIds=e=>U("MetricIds",O(e),[]),exports.useMetricListener=(e,s,t,o)=>z("Metric",O(o),s,t,[e]),exports.useMetrics=e=>S(e,2),exports.useMetricsIds=()=>T(3),exports.useMetricsOrMetricsById=O,exports.useQueries=e=>S(e,8),exports.useQueriesIds=()=>T(9),exports.useQueriesOrQueriesById=M,exports.useQueryIds=e=>U("QueryIds",M(e),[]),exports.useRedoInformation=e=>{var s;const o=j(e),[,,[r]]=pe(o);return[!R(r),Ie(o),r,null!=(s=k(r,(e=>null==o?void 0:o.getCheckpoint(e))))?s:t]},exports.useRelationshipIds=e=>U("RelationshipIds",B(e),[]),exports.useRelationships=e=>S(e,6),exports.useRelationshipsIds=()=>T(7),exports.useRelationshipsOrRelationshipsById=B,exports.useRemoteRowId=oe,exports.useRemoteRowIdListener=(e,s,t,o,r)=>z("RemoteRowId",B(r),t,o,[e,s]),exports.useResultCell=ie,exports.useResultCellIds=de,exports.useResultCellIdsListener=(e,s,t,o,l)=>z(r+x,M(l),t,o,[e,s]),exports.useResultCellListener=(e,s,t,o,l,u)=>z(r+I,M(u),o,l,[e,s,t]),exports.useResultRow=(e,s,t)=>U(r+i,M(t),{},[e,s]),exports.useResultRowCount=(e,s)=>U(r+p,M(s),[],[e]),exports.useResultRowCountListener=(e,s,t,o)=>z(r+p,M(o),s,t,[e]),exports.useResultRowIds=ue,exports.useResultRowIdsListener=(e,s,t,o)=>z(r+a,M(o),s,t,[e]),exports.useResultRowListener=(e,s,t,o,l)=>z(r+i,M(l),t,o,[e,s]),exports.useResultSortedRowIds=ne,exports.useResultSortedRowIdsListener=(e,s,t,o,l,u,n,d)=>z(r+c,M(d),u,n,[e,s,t,o,l]),exports.useResultTable=(e,s)=>U(r+u,M(s),{},[e]),exports.useResultTableCellIds=(e,s)=>U(r+u+x,M(s),[],[e]),exports.useResultTableCellIdsListener=(e,s,t,o)=>z(r+u+x,M(o),s,t,[e]),exports.useResultTableListener=(e,s,t,o)=>z(r+u,M(o),s,t,[e]),exports.useRow=(e,s,t)=>U(i,P(t),{},[e,s]),exports.useRowCount=(e,s)=>U(p,P(s),[],[e]),exports.useRowCountListener=(e,s,t,o,r)=>z(p,P(r),s,t,[e],o),exports.useRowIds=W,exports.useRowIdsListener=(e,s,t,o,r)=>z(a,P(r),s,t,[e],o),exports.useRowListener=(e,s,t,o,r,l)=>z(i,P(l),t,o,[e,s],r),exports.useSetCellCallback=(e,s,t,o,r,l,u,n)=>H(l,I,o,r,u,n,e,s,t),exports.useSetCheckpointCallback=(e=g,s=[],t,o=g,r=[])=>{const l=j(t);return D((s=>k(l,(t=>{const r=e(s);o(t.addCheckpoint(r),t,r)}))),[l,...s,...r])},exports.useSetPartialRowCallback=(e,s,t,o,r,l,u)=>H(r,"PartialRow",t,o,l,u,e,s),exports.useSetPartialValuesCallback=(e,s,t,o,r)=>H(t,"PartialValues",e,s,o,r),exports.useSetRowCallback=(e,s,t,o,r,l,u)=>H(r,i,t,o,l,u,e,s),exports.useSetTableCallback=(e,s,t,o,r,l)=>H(o,u,s,t,r,l,e),exports.useSetTablesCallback=(e,s,t,o,r)=>H(t,n,e,s,o,r),exports.useSetValueCallback=(e,s,t,o,r,l)=>H(o,C,s,t,r,l,e),exports.useSetValuesCallback=(e,s,t,o,r)=>H(t,b,e,s,o,r),exports.useSliceIds=se,exports.useSliceIdsListener=(e,s,t,o)=>z("SliceIds",q(o),s,t,[e]),exports.useSliceRowIds=te,exports.useSliceRowIdsListener=(e,s,t,o,r)=>z("Slice"+a,q(r),t,o,[e,s]),exports.useSortedRowIds=X,exports.useSortedRowIdsListener=(e,s,t,o,r,l,u,n,d)=>z(c,P(d),l,u,[e,s,t,o,r],n),exports.useStore=e=>S(e,0),exports.useStoreIds=()=>T(1),exports.useStoreOrStoreById=P,exports.useTable=(e,s)=>U(u,P(s),{},[e]),exports.useTableCellIds=(e,s)=>U(u+x,P(s),[],[e]),exports.useTableCellIdsListener=(e,s,t,o,r)=>z(u+x,P(r),s,t,[e],o),exports.useTableIds=N,exports.useTableIdsListener=(e,s,t,o)=>z(d,P(o),e,s,[],t),exports.useTableListener=(e,s,t,o,r)=>z(u,P(r),s,t,[e],o),exports.useTables=e=>U(n,P(e),{}),exports.useTablesListener=(e,s,t,o)=>z(n,P(o),e,s,[],t),exports.useUndoInformation=e=>{var s;const o=j(e),[r,l]=pe(o);return[(u=r,!(0==(e=>e.length)(u))),ce(o),l,null!=(s=k(l,(e=>null==o?void 0:o.getCheckpoint(e))))?s:t];var u},exports.useValue=_,exports.useValueIds=$,exports.useValueIdsListener=(e,s,t,o)=>z(w,P(o),e,s,[],t),exports.useValueListener=(e,s,t,o,r)=>z(C,P(r),s,t,[e],o),exports.useValues=e=>U(b,P(e),{}),exports.useValuesListener=(e,s,t,o)=>z(b,P(o),e,s,[],t);
|
|
1
|
+
"use strict";var e=require("react");const s=e=>typeof e,t="",o=s(t),r="Listener",l="Result",u="Ids",n="Table",d=n+"s",i=n+u,p="Row",a=p+"Count",c=p+u,I="Sorted"+p+u,x="Cell",C=x+u,b="Value",w=b+"s",R=b+u,k=e=>null==e,v=(e,s,t)=>k(e)?null==t?void 0:t():s(e),g=e=>s(e)==o,h=()=>{},m=(e,s)=>e.map(s),y=Object.keys,{createContext:L,useContext:S}=e,V=L([]),f=(e,s)=>{var t;const o=S(V);return k(e)?o[s]:g(e)?((e,s)=>v(e,(e=>e[s])))(null!=(t=o[s+1])?t:{},e):e},T=(e,s)=>{const t=f(e,s);return k(e)||g(e)?t:e},P=e=>{var s;return y(null!=(s=S(V)[e])?s:{})},O=e=>T(e,0),q=e=>T(e,2),B=e=>T(e,4),M=e=>T(e,6),D=e=>T(e,8),F=e=>T(e,10),j=e=>e.toLowerCase();j(r);const Q="Transaction";j(Q);const{useCallback:E,useEffect:A,useMemo:G,useRef:W,useState:U}=e,z=(e,s,t=[])=>{const o=G((()=>s(e)),[e,...t]);return A((()=>()=>o.destroy()),[o]),o},H=(e,s,t,o=[],r)=>{const[,l]=U(),u=E((()=>{var r,l;return null!=(l=null==(r=null==s?void 0:s["get"+e])?void 0:r.call(s,...o))?l:t}),[s,...o]),[n]=U(u),d=W(n);return G((()=>d.current=u()),[u]),J(e,s,((...e)=>{d.current=k(r)?u():e[r],l([])}),[],o),d.current},J=(e,s,t,o=[],l=[],...u)=>A((()=>{var o;const n=null==(o=null==s?void 0:s["add"+e+r])?void 0:o.call(s,...l,t,...u);return()=>null==s?void 0:s.delListener(n)}),[s,...l,...o,...u]),K=(e,s,t,o=[],r=h,l=[],...u)=>{const n=O(e);return E((e=>v(n,(o=>v(t(e,o),(e=>r(o["set"+s](...u,e),e)))))),[n,s,...o,...l,...u])},N=(e,s,t=h,o=[],...r)=>{const l=O(e);return E((()=>t(null==l?void 0:l["del"+s](...r))),[l,s,...o,...r])},X=(e,s,t)=>{const o=F(e);return E((()=>null==o?void 0:o[s](t)),[o,s,t])},Y=e=>H(i,O(e),[],[]),Z=(e,s)=>H(c,O(s),[],[e]),$=(e,s,t,o=0,r,l)=>H(I,O(l),[],[e,s,t,o,r],6),_=(e,s,t)=>H(C,O(t),[],[e,s]),ee=(e,s,t,o)=>H(x,O(o),void 0,[e,s,t],4),se=e=>H(R,O(e),[],[]),te=(e,s)=>H(b,O(s),void 0,[e]),oe=(e,s)=>H("Metric",q(s),void 0,[e]),re=(e,s)=>H("SliceIds",B(s),[],[e]),le=(e,s,t)=>H("Slice"+c,B(t),[],[e,s]),ue=(e,s,t)=>H("RemoteRowId",M(t),void 0,[e,s]),ne=(e,s,t)=>H("Local"+c,M(t),[],[e,s]),de=(e,s,t)=>H("Linked"+c,M(t),[],[e,s]),ie=(e,s)=>H(l+c,D(s),[],[e]),pe=(e,s,t,o=0,r,u)=>H(l+I,D(u),[],[e,s,t,o,r],6),ae=(e,s,t)=>H(l+C,D(t),[],[e,s]),ce=(e,s,t,o)=>H(l+x,D(o),void 0,[e,s,t]),Ie=e=>H("CheckpointIds",F(e),[[],void 0,[]]),xe=(e,s)=>H("Checkpoint",F(s),void 0,[e]),Ce=e=>X(e,"goBackward"),be=e=>X(e,"goForward"),{PureComponent:we,Fragment:Re,createElement:ke,useCallback:ve,useLayoutEffect:ge,useRef:he,useState:me}=e,ye=(e,...s)=>k(e)?{}:e(...s),Le=(e,s)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getLocalTableId(s),null==e?void 0:e.getRemoteTableId(s)];var Se=Object.defineProperty,Ve=Object.defineProperties,fe=Object.getOwnPropertyDescriptors,Te=Object.getOwnPropertySymbols,Pe=Object.prototype.hasOwnProperty,Oe=Object.prototype.propertyIsEnumerable,qe=(e,s,t)=>s in e?Se(e,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[s]=t,Be=(e,s)=>{for(var t in s||(s={}))Pe.call(s,t)&&qe(e,t,s[t]);if(Te)for(var t of Te(s))Oe.call(s,t)&&qe(e,t,s[t]);return e},Me=(e,s)=>Ve(e,fe(s)),De=(e,s)=>{var t={};for(var o in e)Pe.call(e,o)&&s.indexOf(o)<0&&(t[o]=e[o]);if(null!=e&&Te)for(var o of Te(e))s.indexOf(o)<0&&Oe.call(e,o)&&(t[o]=e[o]);return t};const{useMemo:Fe}=e,je=({tableId:e,store:s,rowComponent:t=Ue,getRowComponentProps:o,customCellIds:r,separator:l,debugIds:u},n)=>Ge(m(n,(l=>ke(t,Me(Be({},ye(o,l)),{key:l,tableId:e,rowId:l,customCellIds:r,store:s,debugIds:u})))),l,u,e),Qe=({queryId:e,queries:s,resultRowComponent:t=Ne,getResultRowComponentProps:o,separator:r,debugIds:l},u)=>Ge(m(u,(r=>ke(t,Me(Be({},ye(o,r)),{key:r,queryId:e,rowId:r,queries:s,debugIds:l})))),r,l,e),Ee=({relationshipId:e,relationships:s,rowComponent:t=Ue,getRowComponentProps:o,separator:r,debugIds:l},u,n)=>{const[d,i,p]=Le(M(s),e),a=u(e,n,d);return Ge(m(a,(e=>ke(t,Me(Be({},ye(o,e)),{key:e,tableId:p,rowId:e,store:i,debugIds:l})))),r,l,n)},Ae=e=>({checkpoints:s,checkpointComponent:t=Xe,getCheckpointComponentProps:o,separator:r,debugIds:l})=>{const u=F(s);return Ge(m(e(Ie(u)),(e=>ke(t,Me(Be({},ye(o,e)),{key:e,checkpoints:u,checkpointId:e,debugIds:l})))),r)},Ge=(e,s,t,o)=>{const r=k(s)||!Array.isArray(e)?e:m(e,((e,t)=>t>0?[s,e]:e));return t?[o,":{",r,"}"]:r},We=({tableId:e,rowId:s,cellId:o,store:r,debugIds:l})=>{var u;return Ge(t+(null!=(u=ee(e,s,o,r))?u:t),void 0,l,o)},Ue=({tableId:e,rowId:s,store:t,cellComponent:o=We,getCellComponentProps:r,customCellIds:l,separator:u,debugIds:n})=>Ge(m(((e,s,t,o)=>{const r=_(s,t,o);return null!=e?e:r})(l,e,s,t),(l=>ke(o,Me(Be({},ye(r,l)),{key:l,tableId:e,rowId:s,cellId:l,store:t,debugIds:n})))),u,n,s),ze=e=>je(e,Z(e.tableId,e.store)),He=({valueId:e,store:s,debugIds:o})=>{var r;return Ge(t+(null!=(r=te(e,s))?r:t),void 0,o,e)},Je=({indexId:e,sliceId:s,indexes:t,rowComponent:o=Ue,getRowComponentProps:r,separator:l,debugIds:u})=>{const[n,d,i]=((e,s)=>[e,null==e?void 0:e.getStore(),null==e?void 0:e.getTableId(s)])(B(t),e),p=le(e,s,n);return Ge(m(p,(e=>ke(o,Me(Be({},ye(r,e)),{key:e,tableId:i,rowId:e,store:d,debugIds:u})))),l,u,s)},Ke=({queryId:e,rowId:s,cellId:o,queries:r,debugIds:l})=>{var u;return Ge(t+(null!=(u=ce(e,s,o,r))?u:t),void 0,l,o)},Ne=({queryId:e,rowId:s,queries:t,resultCellComponent:o=Ke,getResultCellComponentProps:r,separator:l,debugIds:u})=>Ge(m(ae(e,s,t),(l=>ke(o,Me(Be({},ye(r,l)),{key:l,queryId:e,rowId:s,cellId:l,queries:t,debugIds:u})))),l,u,s),Xe=({checkpoints:e,checkpointId:s,debugIds:o})=>{var r;return Ge(null!=(r=xe(s,e))?r:t,void 0,o,s)},Ye=Ae((e=>e[0])),Ze=Ae((e=>k(e[1])?[]:[e[1]])),$e=Ae((e=>e[2]));exports.BackwardCheckpointsView=Ye,exports.CellView=We,exports.CheckpointView=Xe,exports.CurrentCheckpointView=Ze,exports.ForwardCheckpointsView=$e,exports.IndexView=({indexId:e,indexes:s,sliceComponent:t=Je,getSliceComponentProps:o,separator:r,debugIds:l})=>Ge(m(re(e,s),(r=>ke(t,Me(Be({},ye(o,r)),{key:r,indexId:e,sliceId:r,indexes:s,debugIds:l})))),r,l,e),exports.LinkedRowsView=e=>Ee(e,de,e.firstRowId),exports.LocalRowsView=e=>Ee(e,ne,e.remoteRowId),exports.MetricView=({metricId:e,metrics:s,debugIds:o})=>{var r;return Ge(null!=(r=oe(e,s))?r:t,void 0,o,e)},exports.Provider=({store:s,storesById:t,metrics:o,metricsById:r,indexes:l,indexesById:u,relationships:n,relationshipsById:d,queries:i,queriesById:p,checkpoints:a,checkpointsById:c,children:I})=>{const x=e.useContext(V);return ke(V.Provider,{value:Fe((()=>[null!=s?s:x[0],Be(Be({},x[1]),t),null!=o?o:x[2],Be(Be({},x[3]),r),null!=l?l:x[4],Be(Be({},x[5]),u),null!=n?n:x[6],Be(Be({},x[7]),d),null!=i?i:x[8],Be(Be({},x[9]),p),null!=a?a:x[10],Be(Be({},x[11]),c)]),[s,t,o,r,l,u,n,d,i,p,a,c,x])},I)},exports.RemoteRowView=({relationshipId:e,localRowId:s,relationships:t,rowComponent:o=Ue,getRowComponentProps:r,debugIds:l})=>{const[u,n,,d]=Le(M(t),e),i=ue(e,s,u);return Ge(k(d)||k(i)?null:ke(o,Me(Be({},ye(r,i)),{key:i,tableId:d,rowId:i,store:n,debugIds:l})),void 0,l,s)},exports.ResultCellView=Ke,exports.ResultRowView=Ne,exports.ResultSortedTableView=e=>{var s=e,{cellId:t,descending:o,offset:r,limit:l}=s,u=De(s,["cellId","descending","offset","limit"]);return Qe(u,pe(u.queryId,t,o,r,l,u.queries))},exports.ResultTableView=e=>Qe(e,ie(e.queryId,e.queries)),exports.RowView=Ue,exports.SliceView=Je,exports.SortedTableView=e=>{var s=e,{cellId:t,descending:o,offset:r,limit:l}=s,u=De(s,["cellId","descending","offset","limit"]);return je(u,$(u.tableId,t,o,r,l,u.store))},exports.TableView=ze,exports.TablesView=({store:e,tableComponent:s=ze,getTableComponentProps:t,separator:o,debugIds:r})=>Ge(m(Y(e),(o=>ke(s,Me(Be({},ye(t,o)),{key:o,tableId:o,store:e,debugIds:r})))),o),exports.ValueView=He,exports.ValuesView=({store:e,valueComponent:s=He,getValueComponentProps:t,separator:o,debugIds:r})=>Ge(m(se(e),(o=>ke(s,Me(Be({},ye(t,o)),{key:o,valueId:o,store:e,debugIds:r})))),o),exports.useAddRowCallback=(e,s,t=[],o,r=h,l=[],u=!0)=>{const n=O(o);return E((t=>v(n,(o=>v(s(t,o),(s=>r(o.addRow(e,s,u),o,s)))))),[n,e,...t,...l,u])},exports.useCell=ee,exports.useCellIds=_,exports.useCellIdsListener=(e,s,t,o,r,l)=>J(C,O(l),t,o,[e,s],r),exports.useCellListener=(e,s,t,o,r,l,u)=>J(x,O(u),o,r,[e,s,t],l),exports.useCheckpoint=xe,exports.useCheckpointIds=Ie,exports.useCheckpointIdsListener=(e,s,t)=>J("CheckpointIds",F(t),e,s),exports.useCheckpointListener=(e,s,t,o)=>J("Checkpoint",F(o),s,t,[e]),exports.useCheckpoints=e=>f(e,10),exports.useCheckpointsIds=()=>P(11),exports.useCheckpointsOrCheckpointsById=F,exports.useCreateCheckpoints=(e,s,t)=>z(e,s,t),exports.useCreateIndexes=(e,s,t)=>z(e,s,t),exports.useCreateMetrics=(e,s,t)=>z(e,s,t),exports.useCreatePersister=(e,s,t=[],o,r=[])=>{const[,l]=U(),u=G((()=>s(e)),[e,...t]);return A((()=>{var e;return e=function*(){yield null==o?void 0:o(u),l(1)},new Promise(((s,t)=>{var o=s=>{try{l(e.next(s))}catch(e){t(e)}},r=s=>{try{l(e.throw(s))}catch(e){t(e)}},l=e=>e.done?s(e.value):Promise.resolve(e.value).then(o,r);l((e=e.apply(void 0,null)).next())})),()=>{null==u||u.destroy()}}),[u,...r]),u},exports.useCreateQueries=(e,s,t)=>z(e,s,t),exports.useCreateRelationships=(e,s,t)=>z(e,s,t),exports.useCreateStore=(e,s=[])=>G(e,s),exports.useDelCellCallback=(e,s,t,o,r,l,u)=>N(r,x,l,u,e,s,t,o),exports.useDelRowCallback=(e,s,t,o,r)=>N(t,p,o,r,e,s),exports.useDelTableCallback=(e,s,t,o)=>N(s,n,t,o,e),exports.useDelTablesCallback=(e,s,t)=>N(e,d,s,t),exports.useDelValueCallback=(e,s,t,o)=>N(s,b,t,o,e),exports.useDelValuesCallback=(e,s,t)=>N(e,w,s,t),exports.useDidFinishTransactionListener=(e,s,t)=>J("DidFinish"+Q,O(t),e,s),exports.useGoBackwardCallback=Ce,exports.useGoForwardCallback=be,exports.useGoToCallback=(e,s=[],t,o=h,r=[])=>{const l=F(t);return E((s=>v(l,(t=>v(e(s),(e=>o(t.goTo(e),e)))))),[l,...s,...r])},exports.useIndexIds=e=>H("IndexIds",B(e),[]),exports.useIndexes=e=>f(e,4),exports.useIndexesIds=()=>P(5),exports.useIndexesOrIndexesById=B,exports.useLinkedRowIds=de,exports.useLinkedRowIdsListener=(e,s,t,o,r)=>J("Linked"+c,M(r),t,o,[e,s]),exports.useLocalRowIds=ne,exports.useLocalRowIdsListener=(e,s,t,o,r)=>J("Local"+c,M(r),t,o,[e,s]),exports.useMetric=oe,exports.useMetricIds=e=>H("MetricIds",q(e),[]),exports.useMetricListener=(e,s,t,o)=>J("Metric",q(o),s,t,[e]),exports.useMetrics=e=>f(e,2),exports.useMetricsIds=()=>P(3),exports.useMetricsOrMetricsById=q,exports.useQueries=e=>f(e,8),exports.useQueriesIds=()=>P(9),exports.useQueriesOrQueriesById=D,exports.useQueryIds=e=>H("QueryIds",D(e),[]),exports.useRedoInformation=e=>{var s;const o=F(e),[,,[r]]=Ie(o);return[!k(r),be(o),r,null!=(s=v(r,(e=>null==o?void 0:o.getCheckpoint(e))))?s:t]},exports.useRelationshipIds=e=>H("RelationshipIds",M(e),[]),exports.useRelationships=e=>f(e,6),exports.useRelationshipsIds=()=>P(7),exports.useRelationshipsOrRelationshipsById=M,exports.useRemoteRowId=ue,exports.useRemoteRowIdListener=(e,s,t,o,r)=>J("RemoteRowId",M(r),t,o,[e,s]),exports.useResultCell=ce,exports.useResultCellIds=ae,exports.useResultCellIdsListener=(e,s,t,o,r)=>J(l+C,D(r),t,o,[e,s]),exports.useResultCellListener=(e,s,t,o,r,u)=>J(l+x,D(u),o,r,[e,s,t]),exports.useResultRow=(e,s,t)=>H(l+p,D(t),{},[e,s]),exports.useResultRowCount=(e,s)=>H(l+a,D(s),[],[e]),exports.useResultRowCountListener=(e,s,t,o)=>J(l+a,D(o),s,t,[e]),exports.useResultRowIds=ie,exports.useResultRowIdsListener=(e,s,t,o)=>J(l+c,D(o),s,t,[e]),exports.useResultRowListener=(e,s,t,o,r)=>J(l+p,D(r),t,o,[e,s]),exports.useResultSortedRowIds=pe,exports.useResultSortedRowIdsListener=(e,s,t,o,r,u,n,d)=>J(l+I,D(d),u,n,[e,s,t,o,r]),exports.useResultTable=(e,s)=>H(l+n,D(s),{},[e]),exports.useResultTableCellIds=(e,s)=>H(l+n+C,D(s),[],[e]),exports.useResultTableCellIdsListener=(e,s,t,o)=>J(l+n+C,D(o),s,t,[e]),exports.useResultTableListener=(e,s,t,o)=>J(l+n,D(o),s,t,[e]),exports.useRow=(e,s,t)=>H(p,O(t),{},[e,s]),exports.useRowCount=(e,s)=>H(a,O(s),[],[e]),exports.useRowCountListener=(e,s,t,o,r)=>J(a,O(r),s,t,[e],o),exports.useRowIds=Z,exports.useRowIdsListener=(e,s,t,o,r)=>J(c,O(r),s,t,[e],o),exports.useRowListener=(e,s,t,o,r,l)=>J(p,O(l),t,o,[e,s],r),exports.useSetCellCallback=(e,s,t,o,r,l,u,n)=>K(l,x,o,r,u,n,e,s,t),exports.useSetCheckpointCallback=(e=h,s=[],t,o=h,r=[])=>{const l=F(t);return E((s=>v(l,(t=>{const r=e(s);o(t.addCheckpoint(r),t,r)}))),[l,...s,...r])},exports.useSetPartialRowCallback=(e,s,t,o,r,l,u)=>K(r,"PartialRow",t,o,l,u,e,s),exports.useSetPartialValuesCallback=(e,s,t,o,r)=>K(t,"PartialValues",e,s,o,r),exports.useSetRowCallback=(e,s,t,o,r,l,u)=>K(r,p,t,o,l,u,e,s),exports.useSetTableCallback=(e,s,t,o,r,l)=>K(o,n,s,t,r,l,e),exports.useSetTablesCallback=(e,s,t,o,r)=>K(t,d,e,s,o,r),exports.useSetValueCallback=(e,s,t,o,r,l)=>K(o,b,s,t,r,l,e),exports.useSetValuesCallback=(e,s,t,o,r)=>K(t,w,e,s,o,r),exports.useSliceIds=re,exports.useSliceIdsListener=(e,s,t,o)=>J("SliceIds",B(o),s,t,[e]),exports.useSliceRowIds=le,exports.useSliceRowIdsListener=(e,s,t,o,r)=>J("Slice"+c,B(r),t,o,[e,s]),exports.useSortedRowIds=$,exports.useSortedRowIdsListener=(e,s,t,o,r,l,u,n,d)=>J(I,O(d),l,u,[e,s,t,o,r],n),exports.useStartTransactionListener=(e,s,t)=>J("Start"+Q,O(t),e,s),exports.useStore=e=>f(e,0),exports.useStoreIds=()=>P(1),exports.useStoreOrStoreById=O,exports.useTable=(e,s)=>H(n,O(s),{},[e]),exports.useTableCellIds=(e,s)=>H(n+C,O(s),[],[e]),exports.useTableCellIdsListener=(e,s,t,o,r)=>J(n+C,O(r),s,t,[e],o),exports.useTableIds=Y,exports.useTableIdsListener=(e,s,t,o)=>J(i,O(o),e,s,[],t),exports.useTableListener=(e,s,t,o,r)=>J(n,O(r),s,t,[e],o),exports.useTables=e=>H(d,O(e),{}),exports.useTablesListener=(e,s,t,o)=>J(d,O(o),e,s,[],t),exports.useUndoInformation=e=>{var s;const o=F(e),[r,l]=Ie(o);return[(u=r,!(0==(e=>e.length)(u))),Ce(o),l,null!=(s=v(l,(e=>null==o?void 0:o.getCheckpoint(e))))?s:t];var u},exports.useValue=te,exports.useValueIds=se,exports.useValueIdsListener=(e,s,t,o)=>J(R,O(o),e,s,[],t),exports.useValueListener=(e,s,t,o,r)=>J(b,O(r),s,t,[e],o),exports.useValues=e=>H(w,O(e),{}),exports.useValuesListener=(e,s,t,o)=>J(w,O(o),e,s,[],t),exports.useWillFinishTransactionListener=(e,s,t)=>J("WillFinish"+Q,O(t),e,s);
|
|
Binary file
|
|
@@ -14,6 +14,7 @@ const ifNotUndefined = (value, then, otherwise) =>
|
|
|
14
14
|
isUndefined(value) ? otherwise?.() : then(value);
|
|
15
15
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
16
16
|
const isArray = (thing) => Array.isArray(thing);
|
|
17
|
+
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
17
18
|
const promiseAll = async (promises) => promise.all(promises);
|
|
18
19
|
|
|
19
20
|
const arrayJoin = (array, sep = EMPTY_STRING) => array.join(sep);
|
|
@@ -21,7 +22,6 @@ const arrayMap = (array, cb) => array.map(cb);
|
|
|
21
22
|
const arrayLength = (array) => array.length;
|
|
22
23
|
const arrayIsEmpty = (array) => arrayLength(array) == 0;
|
|
23
24
|
const arrayFilter = (array, cb) => array.filter(cb);
|
|
24
|
-
const arraySlice = (array, start, end) => array.slice(start, end);
|
|
25
25
|
const arrayPush = (array, ...values) => array.push(...values);
|
|
26
26
|
const arrayShift = (array) => array.shift();
|
|
27
27
|
|
|
@@ -315,10 +315,13 @@ const upsert = async (
|
|
|
315
315
|
),
|
|
316
316
|
) +
|
|
317
317
|
')VALUES' +
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
318
|
+
slice(
|
|
319
|
+
strRepeat(
|
|
320
|
+
`,(?${strRepeat(',?', arrayLength(changingColumnNames))})`,
|
|
321
|
+
arrayLength(args) / (arrayLength(changingColumnNames) + 1),
|
|
322
|
+
),
|
|
323
|
+
1,
|
|
324
|
+
) +
|
|
322
325
|
'ON CONFLICT(' +
|
|
323
326
|
escapeId(rowIdColumnName) +
|
|
324
327
|
')DO UPDATE SET' +
|
|
@@ -666,7 +669,7 @@ const getDefaultedTabularConfigMap = (
|
|
|
666
669
|
) => {
|
|
667
670
|
const configMap = mapNew();
|
|
668
671
|
objMap(configsObj, (configObj, id) => {
|
|
669
|
-
const defaultedConfig =
|
|
672
|
+
const defaultedConfig = slice(
|
|
670
673
|
objValues(
|
|
671
674
|
objMerge(
|
|
672
675
|
defaultObj,
|
|
@@ -695,7 +698,7 @@ const getConfigStructures = (configOrStoreTableName) => {
|
|
|
695
698
|
];
|
|
696
699
|
}
|
|
697
700
|
const {tables: {load = {}, save = {}} = {}, values = {}} = config;
|
|
698
|
-
const valuesConfig =
|
|
701
|
+
const valuesConfig = slice(
|
|
699
702
|
objValues(objMerge(DEFAULT_TABULAR_VALUES_CONFIG, values)),
|
|
700
703
|
0,
|
|
701
704
|
objSize(DEFAULT_TABULAR_VALUES_CONFIG),
|
|
@@ -14,6 +14,7 @@ const ifNotUndefined = (value, then, otherwise) =>
|
|
|
14
14
|
isUndefined(value) ? otherwise?.() : then(value);
|
|
15
15
|
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
16
16
|
const isArray = (thing) => Array.isArray(thing);
|
|
17
|
+
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
17
18
|
const promiseAll = async (promises) => promise.all(promises);
|
|
18
19
|
|
|
19
20
|
const arrayJoin = (array, sep = EMPTY_STRING) => array.join(sep);
|
|
@@ -21,7 +22,6 @@ const arrayMap = (array, cb) => array.map(cb);
|
|
|
21
22
|
const arrayLength = (array) => array.length;
|
|
22
23
|
const arrayIsEmpty = (array) => arrayLength(array) == 0;
|
|
23
24
|
const arrayFilter = (array, cb) => array.filter(cb);
|
|
24
|
-
const arraySlice = (array, start, end) => array.slice(start, end);
|
|
25
25
|
const arrayPush = (array, ...values) => array.push(...values);
|
|
26
26
|
const arrayShift = (array) => array.shift();
|
|
27
27
|
|
|
@@ -315,10 +315,13 @@ const upsert = async (
|
|
|
315
315
|
),
|
|
316
316
|
) +
|
|
317
317
|
')VALUES' +
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
318
|
+
slice(
|
|
319
|
+
strRepeat(
|
|
320
|
+
`,(?${strRepeat(',?', arrayLength(changingColumnNames))})`,
|
|
321
|
+
arrayLength(args) / (arrayLength(changingColumnNames) + 1),
|
|
322
|
+
),
|
|
323
|
+
1,
|
|
324
|
+
) +
|
|
322
325
|
'ON CONFLICT(' +
|
|
323
326
|
escapeId(rowIdColumnName) +
|
|
324
327
|
')DO UPDATE SET' +
|
|
@@ -666,7 +669,7 @@ const getDefaultedTabularConfigMap = (
|
|
|
666
669
|
) => {
|
|
667
670
|
const configMap = mapNew();
|
|
668
671
|
objMap(configsObj, (configObj, id) => {
|
|
669
|
-
const defaultedConfig =
|
|
672
|
+
const defaultedConfig = slice(
|
|
670
673
|
objValues(
|
|
671
674
|
objMerge(
|
|
672
675
|
defaultObj,
|
|
@@ -695,7 +698,7 @@ const getConfigStructures = (configOrStoreTableName) => {
|
|
|
695
698
|
];
|
|
696
699
|
}
|
|
697
700
|
const {tables: {load = {}, save = {}} = {}, values = {}} = config;
|
|
698
|
-
const valuesConfig =
|
|
701
|
+
const valuesConfig = slice(
|
|
699
702
|
objValues(objMerge(DEFAULT_TABULAR_VALUES_CONFIG, values)),
|
|
700
703
|
0,
|
|
701
704
|
objSize(DEFAULT_TABULAR_VALUES_CONFIG),
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
const getTypeOf = (thing) => typeof thing;
|
|
2
|
+
const EMPTY_STRING = '';
|
|
3
|
+
const STRING = getTypeOf(EMPTY_STRING);
|
|
4
|
+
|
|
5
|
+
const isInstanceOf = (thing, cls) => thing instanceof cls;
|
|
6
|
+
const isUndefined = (thing) => thing == void 0;
|
|
7
|
+
const ifNotUndefined = (value, then, otherwise) =>
|
|
8
|
+
isUndefined(value) ? otherwise?.() : then(value);
|
|
9
|
+
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
10
|
+
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
11
|
+
|
|
12
|
+
const arrayLength = (array) => array.length;
|
|
13
|
+
const arrayPush = (array, ...values) => array.push(...values);
|
|
14
|
+
const arrayShift = (array) => array.shift();
|
|
15
|
+
|
|
16
|
+
const object = Object;
|
|
17
|
+
const objIds = object.keys;
|
|
18
|
+
const objFreeze = object.freeze;
|
|
19
|
+
const isObject = (obj) =>
|
|
20
|
+
isInstanceOf(obj, object) && obj.constructor == object;
|
|
21
|
+
const objSize = (obj) => arrayLength(objIds(obj));
|
|
22
|
+
const objIsEmpty = (obj) => isObject(obj) && objSize(obj) == 0;
|
|
23
|
+
|
|
24
|
+
const jsonString = (obj) =>
|
|
25
|
+
JSON.stringify(obj, (_key, value) =>
|
|
26
|
+
isInstanceOf(value, Map) ? object.fromEntries([...value]) : value,
|
|
27
|
+
);
|
|
28
|
+
const jsonParse = JSON.parse;
|
|
29
|
+
|
|
30
|
+
const SET_CHANGES = 's';
|
|
31
|
+
const STORE_PATH = '/store';
|
|
32
|
+
const PUT = 'PUT';
|
|
33
|
+
const constructMessage = (type, payload) =>
|
|
34
|
+
type + (isString(payload) ? payload : jsonString(payload));
|
|
35
|
+
const deconstructMessage = (message, stringified) => [
|
|
36
|
+
message[0],
|
|
37
|
+
stringified ? jsonParse(slice(message, 1)) : slice(message, 1),
|
|
38
|
+
];
|
|
39
|
+
|
|
40
|
+
const collHas = (coll, keyOrValue) => coll?.has(keyOrValue) ?? false;
|
|
41
|
+
const collDel = (coll, keyOrValue) => coll?.delete(keyOrValue);
|
|
42
|
+
|
|
43
|
+
const mapNew = (entries) => new Map(entries);
|
|
44
|
+
const mapGet = (map, key) => map?.get(key);
|
|
45
|
+
const mapSet = (map, key, value) =>
|
|
46
|
+
isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
|
|
47
|
+
const mapEnsure = (map, key, getDefaultValue) => {
|
|
48
|
+
if (!collHas(map, key)) {
|
|
49
|
+
mapSet(map, key, getDefaultValue());
|
|
50
|
+
}
|
|
51
|
+
return mapGet(map, key);
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const scheduleRunning = mapNew();
|
|
55
|
+
const scheduleActions = mapNew();
|
|
56
|
+
const createCustomPersister = (
|
|
57
|
+
store,
|
|
58
|
+
getPersisted,
|
|
59
|
+
setPersisted,
|
|
60
|
+
addPersisterListener,
|
|
61
|
+
delPersisterListener,
|
|
62
|
+
onIgnoredError,
|
|
63
|
+
scheduleId = [],
|
|
64
|
+
) => {
|
|
65
|
+
let listenerId;
|
|
66
|
+
let loadSave = 0;
|
|
67
|
+
let loads = 0;
|
|
68
|
+
let saves = 0;
|
|
69
|
+
let listening = 0;
|
|
70
|
+
let action;
|
|
71
|
+
let listeningHandle;
|
|
72
|
+
mapEnsure(scheduleRunning, scheduleId, () => 0);
|
|
73
|
+
mapEnsure(scheduleActions, scheduleId, () => []);
|
|
74
|
+
const run = async () => {
|
|
75
|
+
/* istanbul ignore else */
|
|
76
|
+
if (!mapGet(scheduleRunning, scheduleId)) {
|
|
77
|
+
mapSet(scheduleRunning, scheduleId, 1);
|
|
78
|
+
while (
|
|
79
|
+
!isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
|
|
80
|
+
) {
|
|
81
|
+
try {
|
|
82
|
+
await action();
|
|
83
|
+
} catch (error) {
|
|
84
|
+
/* istanbul ignore next */
|
|
85
|
+
onIgnoredError?.(error);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
mapSet(scheduleRunning, scheduleId, 0);
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
const loadLock = async (actions) => {
|
|
92
|
+
/* istanbul ignore else */
|
|
93
|
+
if (loadSave != 2) {
|
|
94
|
+
loadSave = 1;
|
|
95
|
+
{
|
|
96
|
+
loads++;
|
|
97
|
+
}
|
|
98
|
+
await persister.schedule(async () => {
|
|
99
|
+
await actions();
|
|
100
|
+
loadSave = 0;
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
return persister;
|
|
104
|
+
};
|
|
105
|
+
const persister = {
|
|
106
|
+
load: async (initialTables, initialValues) =>
|
|
107
|
+
await loadLock(async () => {
|
|
108
|
+
try {
|
|
109
|
+
store.setContent(await getPersisted());
|
|
110
|
+
} catch {
|
|
111
|
+
store.setContent([initialTables, initialValues]);
|
|
112
|
+
}
|
|
113
|
+
}),
|
|
114
|
+
startAutoLoad: async (initialTables = {}, initialValues = {}) => {
|
|
115
|
+
persister.stopAutoLoad();
|
|
116
|
+
await persister.load(initialTables, initialValues);
|
|
117
|
+
listening = 1;
|
|
118
|
+
listeningHandle = addPersisterListener(
|
|
119
|
+
async (getContent, getTransactionChanges) => {
|
|
120
|
+
if (getTransactionChanges) {
|
|
121
|
+
const transactionChanges = getTransactionChanges();
|
|
122
|
+
await loadLock(async () =>
|
|
123
|
+
store.setTransactionChanges(transactionChanges),
|
|
124
|
+
);
|
|
125
|
+
} else {
|
|
126
|
+
await loadLock(async () => {
|
|
127
|
+
try {
|
|
128
|
+
store.setContent(getContent?.() ?? (await getPersisted()));
|
|
129
|
+
} catch (error) {
|
|
130
|
+
onIgnoredError?.(error);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
);
|
|
136
|
+
return persister;
|
|
137
|
+
},
|
|
138
|
+
stopAutoLoad: () => {
|
|
139
|
+
if (listening) {
|
|
140
|
+
delPersisterListener(listeningHandle);
|
|
141
|
+
listeningHandle = void 0;
|
|
142
|
+
listening = 0;
|
|
143
|
+
}
|
|
144
|
+
return persister;
|
|
145
|
+
},
|
|
146
|
+
save: async (getTransactionChanges) => {
|
|
147
|
+
/* istanbul ignore else */
|
|
148
|
+
if (loadSave != 1) {
|
|
149
|
+
loadSave = 2;
|
|
150
|
+
{
|
|
151
|
+
saves++;
|
|
152
|
+
}
|
|
153
|
+
await persister.schedule(async () => {
|
|
154
|
+
try {
|
|
155
|
+
await setPersisted(store.getContent, getTransactionChanges);
|
|
156
|
+
} catch (error) {
|
|
157
|
+
/* istanbul ignore next */
|
|
158
|
+
onIgnoredError?.(error);
|
|
159
|
+
}
|
|
160
|
+
loadSave = 0;
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
return persister;
|
|
164
|
+
},
|
|
165
|
+
startAutoSave: async () => {
|
|
166
|
+
await persister.stopAutoSave().save();
|
|
167
|
+
listenerId = store.addDidFinishTransactionListener(
|
|
168
|
+
(_store, getTransactionChanges) => {
|
|
169
|
+
const [tableChanges, valueChanges] = getTransactionChanges();
|
|
170
|
+
if (!objIsEmpty(tableChanges) || !objIsEmpty(valueChanges)) {
|
|
171
|
+
persister.save(() => [tableChanges, valueChanges]);
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
);
|
|
175
|
+
return persister;
|
|
176
|
+
},
|
|
177
|
+
stopAutoSave: () => {
|
|
178
|
+
ifNotUndefined(listenerId, store.delListener);
|
|
179
|
+
return persister;
|
|
180
|
+
},
|
|
181
|
+
schedule: async (...actions) => {
|
|
182
|
+
arrayPush(mapGet(scheduleActions, scheduleId), ...actions);
|
|
183
|
+
await run();
|
|
184
|
+
return persister;
|
|
185
|
+
},
|
|
186
|
+
getStore: () => store,
|
|
187
|
+
destroy: () => persister.stopAutoLoad().stopAutoSave(),
|
|
188
|
+
getStats: () => ({loads, saves}),
|
|
189
|
+
};
|
|
190
|
+
return objFreeze(persister);
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
const MESSAGE = 'message';
|
|
194
|
+
const createPartyKitPersister = (
|
|
195
|
+
store,
|
|
196
|
+
connection,
|
|
197
|
+
storeUrlProtocol = 'https',
|
|
198
|
+
onIgnoredError,
|
|
199
|
+
) => {
|
|
200
|
+
const {host, room} = connection.partySocketOptions;
|
|
201
|
+
const storeUrl =
|
|
202
|
+
storeUrlProtocol +
|
|
203
|
+
'://' +
|
|
204
|
+
host +
|
|
205
|
+
'/parties/' +
|
|
206
|
+
(connection.name ?? 'main') +
|
|
207
|
+
'/' +
|
|
208
|
+
room +
|
|
209
|
+
STORE_PATH;
|
|
210
|
+
const getOrSetStore = async (content) =>
|
|
211
|
+
await (
|
|
212
|
+
await fetch(storeUrl, {
|
|
213
|
+
...(content ? {method: PUT, body: jsonString(content)} : {}),
|
|
214
|
+
mode: 'cors',
|
|
215
|
+
cache: 'no-store',
|
|
216
|
+
})
|
|
217
|
+
).json();
|
|
218
|
+
const getPersisted = async () => await getOrSetStore();
|
|
219
|
+
const setPersisted = async (getContent, getTransactionChanges) => {
|
|
220
|
+
if (getTransactionChanges) {
|
|
221
|
+
connection.send(constructMessage(SET_CHANGES, getTransactionChanges()));
|
|
222
|
+
} else {
|
|
223
|
+
await getOrSetStore(getContent());
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
const addPersisterListener = (listener) => {
|
|
227
|
+
const messageListener = (event) => {
|
|
228
|
+
const [type, payload] = deconstructMessage(event.data, 1);
|
|
229
|
+
if (type == SET_CHANGES) {
|
|
230
|
+
listener(void 0, () => payload);
|
|
231
|
+
}
|
|
232
|
+
};
|
|
233
|
+
connection.addEventListener(MESSAGE, messageListener);
|
|
234
|
+
return messageListener;
|
|
235
|
+
};
|
|
236
|
+
const delPersisterListener = (messageListener) => {
|
|
237
|
+
connection.removeEventListener(MESSAGE, messageListener);
|
|
238
|
+
};
|
|
239
|
+
return createCustomPersister(
|
|
240
|
+
store,
|
|
241
|
+
getPersisted,
|
|
242
|
+
setPersisted,
|
|
243
|
+
addPersisterListener,
|
|
244
|
+
delPersisterListener,
|
|
245
|
+
onIgnoredError,
|
|
246
|
+
);
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
export {createPartyKitPersister};
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
const getTypeOf = (thing) => typeof thing;
|
|
2
|
+
const EMPTY_STRING = '';
|
|
3
|
+
const STRING = getTypeOf(EMPTY_STRING);
|
|
4
|
+
const T = 't';
|
|
5
|
+
const V = 'v';
|
|
6
|
+
|
|
7
|
+
const promise = Promise;
|
|
8
|
+
const isInstanceOf = (thing, cls) => thing instanceof cls;
|
|
9
|
+
const isUndefined = (thing) => thing == void 0;
|
|
10
|
+
const ifNotUndefined = (value, then, otherwise) =>
|
|
11
|
+
isUndefined(value) ? otherwise?.() : then(value);
|
|
12
|
+
const isString = (thing) => getTypeOf(thing) == STRING;
|
|
13
|
+
const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
14
|
+
const promiseAll = async (promises) => promise.all(promises);
|
|
15
|
+
|
|
16
|
+
const arrayEvery = (array, cb) => array.every(cb);
|
|
17
|
+
const arrayMap = (array, cb) => array.map(cb);
|
|
18
|
+
const arrayLength = (array) => array.length;
|
|
19
|
+
const arrayIsEmpty = (array) => arrayLength(array) == 0;
|
|
20
|
+
const arrayPush = (array, ...values) => array.push(...values);
|
|
21
|
+
const arrayUnshift = (array, ...values) => array.unshift(...values);
|
|
22
|
+
|
|
23
|
+
const object = Object;
|
|
24
|
+
const objNew = (entries = []) => object.fromEntries(entries);
|
|
25
|
+
const objGet = (obj, id) => ifNotUndefined(obj, (obj2) => obj2[id]);
|
|
26
|
+
const objHas = (obj, id) => !isUndefined(objGet(obj, id));
|
|
27
|
+
const objMap = (obj, cb) =>
|
|
28
|
+
arrayMap(object.entries(obj), ([id, value]) => cb(value, id));
|
|
29
|
+
const objEnsure = (obj, id, getDefaultValue) => {
|
|
30
|
+
if (!objHas(obj, id)) {
|
|
31
|
+
obj[id] = getDefaultValue();
|
|
32
|
+
}
|
|
33
|
+
return obj[id];
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const jsonString = (obj) =>
|
|
37
|
+
JSON.stringify(obj, (_key, value) =>
|
|
38
|
+
isInstanceOf(value, Map) ? object.fromEntries([...value]) : value,
|
|
39
|
+
);
|
|
40
|
+
const jsonParse = JSON.parse;
|
|
41
|
+
|
|
42
|
+
const SET_CHANGES = 's';
|
|
43
|
+
const STORE_PATH = '/store';
|
|
44
|
+
const PUT = 'PUT';
|
|
45
|
+
const constructMessage = (type, payload) =>
|
|
46
|
+
type + (isString(payload) ? payload : jsonString(payload));
|
|
47
|
+
const deconstructMessage = (message, stringified) => [
|
|
48
|
+
message[0],
|
|
49
|
+
stringified ? jsonParse(slice(message, 1)) : slice(message, 1),
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const collForEach = (coll, cb) => coll?.forEach(cb);
|
|
53
|
+
|
|
54
|
+
const mapForEach = (map, cb) =>
|
|
55
|
+
collForEach(map, (value, key) => cb(key, value));
|
|
56
|
+
|
|
57
|
+
const HAS_STORE = 'hasStore';
|
|
58
|
+
const CORS_HEADERS = objNew(
|
|
59
|
+
arrayMap(['Origin', 'Methods', 'Headers'], (suffix) => [
|
|
60
|
+
'Access-Control-Allow-' + suffix,
|
|
61
|
+
'*',
|
|
62
|
+
]),
|
|
63
|
+
);
|
|
64
|
+
const hasStoreInStorage = async (storage) => await storage.get(HAS_STORE);
|
|
65
|
+
const loadStoreFromStorage = async (storage) => {
|
|
66
|
+
const tables = {};
|
|
67
|
+
const values = {};
|
|
68
|
+
mapForEach(await storage.list(), (key, cellOrValue) => {
|
|
69
|
+
const [type, ids] = deconstructMessage(key);
|
|
70
|
+
if (type == T) {
|
|
71
|
+
const [tableId, rowId, cellId] = jsonParse('[' + ids + ']');
|
|
72
|
+
objEnsure(objEnsure(tables, tableId, objNew), rowId, objNew)[cellId] =
|
|
73
|
+
cellOrValue;
|
|
74
|
+
} else if (type == V) {
|
|
75
|
+
values[ids] = cellOrValue;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
return [tables, values];
|
|
79
|
+
};
|
|
80
|
+
const saveStoreToStorage = async (storage, transactionChanges) => {
|
|
81
|
+
const promises = [storage.put(HAS_STORE, 1)];
|
|
82
|
+
const keyPrefixesToDelete = [];
|
|
83
|
+
objMap(transactionChanges[0], (table, tableId) =>
|
|
84
|
+
isUndefined(table)
|
|
85
|
+
? arrayUnshift(keyPrefixesToDelete, getStoreStorageKey(T, tableId))
|
|
86
|
+
: objMap(table, (row, rowId) =>
|
|
87
|
+
isUndefined(row)
|
|
88
|
+
? arrayPush(
|
|
89
|
+
keyPrefixesToDelete,
|
|
90
|
+
getStoreStorageKey(T, tableId, rowId),
|
|
91
|
+
)
|
|
92
|
+
: objMap(row, (cell, cellId) =>
|
|
93
|
+
promiseToSetOrDelStorage(
|
|
94
|
+
promises,
|
|
95
|
+
storage,
|
|
96
|
+
getStoreStorageKey(T, tableId, rowId, cellId),
|
|
97
|
+
cell,
|
|
98
|
+
),
|
|
99
|
+
),
|
|
100
|
+
),
|
|
101
|
+
);
|
|
102
|
+
objMap(transactionChanges[1], (value, valueId) =>
|
|
103
|
+
promiseToSetOrDelStorage(promises, storage, V + valueId, value),
|
|
104
|
+
);
|
|
105
|
+
if (!arrayIsEmpty(keyPrefixesToDelete)) {
|
|
106
|
+
mapForEach(await storage.list(), (key) =>
|
|
107
|
+
arrayEvery(
|
|
108
|
+
keyPrefixesToDelete,
|
|
109
|
+
(keyPrefixToDelete) =>
|
|
110
|
+
!key.startsWith(keyPrefixToDelete) ||
|
|
111
|
+
(promiseToSetOrDelStorage(promises, storage, key) && false),
|
|
112
|
+
),
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
await promiseAll(promises);
|
|
116
|
+
};
|
|
117
|
+
const getStoreStorageKey = (type, ...ids) =>
|
|
118
|
+
type + slice(jsonString(ids), 1, -1);
|
|
119
|
+
const promiseToSetOrDelStorage = (promises, storage, key, value) =>
|
|
120
|
+
arrayPush(
|
|
121
|
+
promises,
|
|
122
|
+
isUndefined(value) ? storage.delete(key) : storage.put(key, value),
|
|
123
|
+
);
|
|
124
|
+
const getResponse = (status, body = null) =>
|
|
125
|
+
new Response(body, {status, headers: CORS_HEADERS});
|
|
126
|
+
class TinyBasePartyKitServer {
|
|
127
|
+
constructor(party) {
|
|
128
|
+
this.party = party;
|
|
129
|
+
}
|
|
130
|
+
async onRequest(request) {
|
|
131
|
+
const storage = this.party.storage;
|
|
132
|
+
if (request.url.endsWith(STORE_PATH)) {
|
|
133
|
+
const hasStore = await hasStoreInStorage(storage);
|
|
134
|
+
const text = await request.text();
|
|
135
|
+
if (request.method == PUT) {
|
|
136
|
+
if (hasStore) {
|
|
137
|
+
return getResponse(205);
|
|
138
|
+
}
|
|
139
|
+
await saveStoreToStorage(this.party.storage, jsonParse(text));
|
|
140
|
+
return getResponse(201);
|
|
141
|
+
}
|
|
142
|
+
return getResponse(
|
|
143
|
+
200,
|
|
144
|
+
hasStore
|
|
145
|
+
? jsonString(await loadStoreFromStorage(storage))
|
|
146
|
+
: EMPTY_STRING,
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
return getResponse(404);
|
|
150
|
+
}
|
|
151
|
+
async onMessage(message, client) {
|
|
152
|
+
const storage = this.party.storage;
|
|
153
|
+
const [type, payload] = deconstructMessage(message, 1);
|
|
154
|
+
if (type == SET_CHANGES && (await hasStoreInStorage(storage))) {
|
|
155
|
+
await saveStoreToStorage(storage, payload);
|
|
156
|
+
this.party.broadcast(constructMessage(SET_CHANGES, payload), [client.id]);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export {TinyBasePartyKitServer};
|