@xcpcio/board-app 0.43.0 → 0.44.1

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.
Files changed (38) hide show
  1. package/dist/404.html +1 -1
  2. package/dist/assets/Board-4569fc6c.js +3 -0
  3. package/dist/assets/{Board-78c68c35.css → Board-916a327e.css} +1 -1
  4. package/dist/assets/DataSourceInput.vue_vue_type_script_setup_true_lang-86e39d12.js +1 -0
  5. package/dist/assets/{TheInput.vue_vue_type_script_setup_true_lang-9cd306c7.js → TheInput.vue_vue_type_script_setup_true_lang-6e8ca92c.js} +1 -1
  6. package/dist/assets/_...all_-de087eb0.js +1 -0
  7. package/dist/assets/_name_-06edfd14.js +1 -0
  8. package/dist/assets/{about-8408eddf.js → about-c21c664b.js} +1 -1
  9. package/dist/assets/board-472d3cb3.js +1 -0
  10. package/dist/assets/{board-layout-db1006f7.js → board-layout-d77cb1f2.js} +1 -1
  11. package/dist/assets/{headless-4685ba2c.js → headless-fb293940.js} +1 -1
  12. package/dist/assets/{home-649aa1f3.js → home-20deb86b.js} +1 -1
  13. package/dist/assets/index-125c12c1.js +1 -0
  14. package/dist/assets/index-3dc9c47f.js +1 -0
  15. package/dist/assets/{index-a4eda403.js → index-40d709ed.js} +71 -71
  16. package/dist/assets/{index-layout-f67288b7.js → index-layout-d4fc4afd.js} +1 -1
  17. package/dist/assets/query-7b63ef07.js +1 -0
  18. package/dist/assets/{test-838ba8f2.js → test-d415daee.js} +1 -1
  19. package/dist/assets/{user-f204821f.js → user-1cebd436.js} +1 -1
  20. package/dist/assets/{virtual_pwa-register-53ed75bd.js → virtual_pwa-register-11341dab.js} +1 -1
  21. package/dist/index.html +1 -1
  22. package/dist/sw.js +1 -1
  23. package/package.json +3 -3
  24. package/src/auto-imports.d.ts +3 -0
  25. package/src/components/battle-of-giants/GiantsOptions.vue +1 -1
  26. package/src/components/board/Board.vue +10 -0
  27. package/src/components/board/OptionsModal.vue +24 -3
  28. package/src/composables/query.ts +8 -0
  29. package/src/composables/useQueryBoardData.ts +3 -2
  30. package/src/pages/index.vue +4 -1
  31. package/dist/assets/Board-5ab7c967.js +0 -3
  32. package/dist/assets/DataSourceInput.vue_vue_type_script_setup_true_lang-ae8a0f7c.js +0 -1
  33. package/dist/assets/_...all_-b536c4f8.js +0 -1
  34. package/dist/assets/_name_-73ea91e2.js +0 -1
  35. package/dist/assets/board-d5243ade.js +0 -1
  36. package/dist/assets/index-41b501c0.js +0 -1
  37. package/dist/assets/index-4339f7e3.js +0 -1
  38. package/dist/assets/useQueryBoardData-93b68e58.js +0 -1
@@ -1 +1 @@
1
- import{a as s,r as a,o as c,c as r,b as e,d as _,F as m,e as p,f as l}from"./index-a4eda403.js";const i={},d={class:"lg:mt-[-52px]","py-2":"","text-gray-700":"","dark:text-gray-200":""};function u(x,f){const o=p,t=a("RouterView"),n=l;return c(),r(m,null,[e(o,{width:"sm:w-[1024px] lg:w-screen"}),_("main",d,[e(t),e(n,{class:"sm:w-[1024px] lg:w-screen"})])],64)}const w=s(i,[["render",u]]);export{w as default};
1
+ import{a as s,r as a,o as c,c as r,b as e,d as _,F as m,e as p,f as l}from"./index-40d709ed.js";const i={},d={class:"lg:mt-[-52px]","py-2":"","text-gray-700":"","dark:text-gray-200":""};function u(x,f){const o=p,t=a("RouterView"),n=l;return c(),r(m,null,[e(o,{width:"sm:w-[1024px] lg:w-screen"}),_("main",d,[e(t),e(n,{class:"sm:w-[1024px] lg:w-screen"})])],64)}const w=s(i,[["render",u]]);export{w as default};
@@ -0,0 +1 @@
1
+ import{at as K,au as S,av as B,aw as U,ax as D,ay as W,az as N,aA as V,aB as A,aC as z,aD as H,aE as $,aF as G,aG as J,s as P,aH as Y,w as b,aI as x,aJ as _,aK as X,aL as Z,aM as ee,l as C,aN as te,aO as se,ai as j}from"./index-40d709ed.js";class re extends K{constructor(e,t){super(),this.client=e,this.options=t,this.trackedProps=new Set,this.selectError=null,this.bindMethods(),this.setOptions(t)}bindMethods(){this.remove=this.remove.bind(this),this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.currentQuery.addObserver(this),M(this.currentQuery,this.options)&&this.executeFetch(),this.updateTimers())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return E(this.currentQuery,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return E(this.currentQuery,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.clearStaleTimeout(),this.clearRefetchInterval(),this.currentQuery.removeObserver(this)}setOptions(e,t){const s=this.options,i=this.currentQuery;if(this.options=this.client.defaultQueryOptions(e),S(s,this.options)||this.client.getQueryCache().notify({type:"observerOptionsUpdated",query:this.currentQuery,observer:this}),typeof this.options.enabled<"u"&&typeof this.options.enabled!="boolean")throw new Error("Expected enabled to be a boolean");this.options.queryKey||(this.options.queryKey=s.queryKey),this.updateQuery();const n=this.hasListeners();n&&k(this.currentQuery,i,this.options,s)&&this.executeFetch(),this.updateResult(t),n&&(this.currentQuery!==i||this.options.enabled!==s.enabled||this.options.staleTime!==s.staleTime)&&this.updateStaleTimeout();const u=this.computeRefetchInterval();n&&(this.currentQuery!==i||this.options.enabled!==s.enabled||u!==this.currentRefetchInterval)&&this.updateRefetchInterval(u)}getOptimisticResult(e){const t=this.client.getQueryCache().build(this.client,e),s=this.createResult(t,e);return ie(this,s,e)&&(this.currentResult=s,this.currentResultOptions=this.options,this.currentResultState=this.currentQuery.state),s}getCurrentResult(){return this.currentResult}trackResult(e){const t={};return Object.keys(e).forEach(s=>{Object.defineProperty(t,s,{configurable:!1,enumerable:!0,get:()=>(this.trackedProps.add(s),e[s])})}),t}getCurrentQuery(){return this.currentQuery}remove(){this.client.getQueryCache().remove(this.currentQuery)}refetch({refetchPage:e,...t}={}){return this.fetch({...t,meta:{refetchPage:e}})}fetchOptimistic(e){const t=this.client.defaultQueryOptions(e),s=this.client.getQueryCache().build(this.client,t);return s.isFetchingOptimistic=!0,s.fetch().then(()=>this.createResult(s,t))}fetch(e){var t;return this.executeFetch({...e,cancelRefetch:(t=e.cancelRefetch)!=null?t:!0}).then(()=>(this.updateResult(),this.currentResult))}executeFetch(e){this.updateQuery();let t=this.currentQuery.fetch(this.options,e);return e!=null&&e.throwOnError||(t=t.catch(B)),t}updateStaleTimeout(){if(this.clearStaleTimeout(),U||this.currentResult.isStale||!D(this.options.staleTime))return;const t=W(this.currentResult.dataUpdatedAt,this.options.staleTime)+1;this.staleTimeoutId=setTimeout(()=>{this.currentResult.isStale||this.updateResult()},t)}computeRefetchInterval(){var e;return typeof this.options.refetchInterval=="function"?this.options.refetchInterval(this.currentResult.data,this.currentQuery):(e=this.options.refetchInterval)!=null?e:!1}updateRefetchInterval(e){this.clearRefetchInterval(),this.currentRefetchInterval=e,!(U||this.options.enabled===!1||!D(this.currentRefetchInterval)||this.currentRefetchInterval===0)&&(this.refetchIntervalId=setInterval(()=>{(this.options.refetchIntervalInBackground||N.isFocused())&&this.executeFetch()},this.currentRefetchInterval))}updateTimers(){this.updateStaleTimeout(),this.updateRefetchInterval(this.computeRefetchInterval())}clearStaleTimeout(){this.staleTimeoutId&&(clearTimeout(this.staleTimeoutId),this.staleTimeoutId=void 0)}clearRefetchInterval(){this.refetchIntervalId&&(clearInterval(this.refetchIntervalId),this.refetchIntervalId=void 0)}createResult(e,t){const s=this.currentQuery,i=this.options,n=this.currentResult,u=this.currentResultState,a=this.currentResultOptions,l=e!==s,h=l?e.state:this.currentQueryInitialState,c=l?this.currentResult:this.previousQueryResult,{state:o}=e;let{dataUpdatedAt:d,error:R,errorUpdatedAt:m,fetchStatus:v,status:f}=o,w=!1,F=!1,y;if(t._optimisticResults){const p=this.hasListeners(),O=!p&&M(e,t),q=p&&k(e,s,t,i);(O||q)&&(v=V(e.options.networkMode)?"fetching":"paused",d||(f="loading")),t._optimisticResults==="isRestoring"&&(v="idle")}if(t.keepPreviousData&&!o.dataUpdatedAt&&c!=null&&c.isSuccess&&f!=="error")y=c.data,d=c.dataUpdatedAt,f=c.status,w=!0;else if(t.select&&typeof o.data<"u")if(n&&o.data===(u==null?void 0:u.data)&&t.select===this.selectFn)y=this.selectResult;else try{this.selectFn=t.select,y=t.select(o.data),y=A(n==null?void 0:n.data,y,t),this.selectResult=y,this.selectError=null}catch(p){this.selectError=p}else y=o.data;if(typeof t.placeholderData<"u"&&typeof y>"u"&&f==="loading"){let p;if(n!=null&&n.isPlaceholderData&&t.placeholderData===(a==null?void 0:a.placeholderData))p=n.data;else if(p=typeof t.placeholderData=="function"?t.placeholderData():t.placeholderData,t.select&&typeof p<"u")try{p=t.select(p),this.selectError=null}catch(O){this.selectError=O}typeof p<"u"&&(f="success",y=A(n==null?void 0:n.data,p,t),F=!0)}this.selectError&&(R=this.selectError,y=this.selectResult,m=Date.now(),f="error");const Q=v==="fetching",g=f==="loading",I=f==="error";return{status:f,fetchStatus:v,isLoading:g,isSuccess:f==="success",isError:I,isInitialLoading:g&&Q,data:y,dataUpdatedAt:d,error:R,errorUpdatedAt:m,failureCount:o.fetchFailureCount,failureReason:o.fetchFailureReason,errorUpdateCount:o.errorUpdateCount,isFetched:o.dataUpdateCount>0||o.errorUpdateCount>0,isFetchedAfterMount:o.dataUpdateCount>h.dataUpdateCount||o.errorUpdateCount>h.errorUpdateCount,isFetching:Q,isRefetching:Q&&!g,isLoadingError:I&&o.dataUpdatedAt===0,isPaused:v==="paused",isPlaceholderData:F,isPreviousData:w,isRefetchError:I&&o.dataUpdatedAt!==0,isStale:T(e,t),refetch:this.refetch,remove:this.remove}}updateResult(e){const t=this.currentResult,s=this.createResult(this.currentQuery,this.options);if(this.currentResultState=this.currentQuery.state,this.currentResultOptions=this.options,S(s,t))return;this.currentResult=s;const i={cache:!0},n=()=>{if(!t)return!0;const{notifyOnChangeProps:u}=this.options,a=typeof u=="function"?u():u;if(a==="all"||!a&&!this.trackedProps.size)return!0;const l=new Set(a??this.trackedProps);return this.options.useErrorBoundary&&l.add("error"),Object.keys(this.currentResult).some(h=>{const c=h;return this.currentResult[c]!==t[c]&&l.has(c)})};(e==null?void 0:e.listeners)!==!1&&n()&&(i.listeners=!0),this.notify({...i,...e})}updateQuery(){const e=this.client.getQueryCache().build(this.client,this.options);if(e===this.currentQuery)return;const t=this.currentQuery;this.currentQuery=e,this.currentQueryInitialState=e.state,this.previousQueryResult=this.currentResult,this.hasListeners()&&(t==null||t.removeObserver(this),e.addObserver(this))}onQueryUpdate(e){const t={};e.type==="success"?t.onSuccess=!e.manual:e.type==="error"&&!z(e.error)&&(t.onError=!0),this.updateResult(t),this.hasListeners()&&this.updateTimers()}notify(e){H.batch(()=>{if(e.onSuccess){var t,s,i,n;(t=(s=this.options).onSuccess)==null||t.call(s,this.currentResult.data),(i=(n=this.options).onSettled)==null||i.call(n,this.currentResult.data,null)}else if(e.onError){var u,a,l,h;(u=(a=this.options).onError)==null||u.call(a,this.currentResult.error),(l=(h=this.options).onSettled)==null||l.call(h,void 0,this.currentResult.error)}e.listeners&&this.listeners.forEach(({listener:c})=>{c(this.currentResult)}),e.cache&&this.client.getQueryCache().notify({query:this.currentQuery,type:"observerResultsUpdated"})})}}function ne(r,e){return e.enabled!==!1&&!r.state.dataUpdatedAt&&!(r.state.status==="error"&&e.retryOnMount===!1)}function M(r,e){return ne(r,e)||r.state.dataUpdatedAt>0&&E(r,e,e.refetchOnMount)}function E(r,e,t){if(e.enabled!==!1){const s=typeof t=="function"?t(r):t;return s==="always"||s!==!1&&T(r,e)}return!1}function k(r,e,t,s){return t.enabled!==!1&&(r!==e||s.enabled===!1)&&(!t.suspense||r.state.status!=="error")&&T(r,t)}function T(r,e){return r.isStaleByTime(e.staleTime)}function ie(r,e,t){return t.keepPreviousData?!1:t.placeholderData!==void 0?e.isPlaceholderData:!S(r.getCurrentResult(),e)}function ue(r=""){var e;if(!((e=$())==null?void 0:e.proxy))throw new Error("vue-query hooks can only be used inside setup() function.");const s=J(r),i=G(s);if(!i)throw new Error("No 'queryClient' found in Vue context, use 'VueQueryPlugin' to properly initialize the library.");return i}function ae(r,e,t={},s={}){var i;const n=P(()=>ce(e,t,s)),u=(i=n.value.queryClient)!=null?i:ue(n.value.queryClientKey),a=P(()=>{const d=u.defaultQueryOptions(n.value);return d._optimisticResults=u.isRestoring.value?"isRestoring":"optimistic",d}),l=new r(u,a.value),h=Y(l.getCurrentResult());let c=()=>{};b(u.isRestoring,d=>{d||(c(),c=l.subscribe(R=>{x(h,R)}))},{immediate:!0}),b(a,()=>{l.setOptions(a.value),x(h,l.getCurrentResult())}),_(()=>{c()});const o=()=>new Promise((d,R)=>{let m=()=>{};const v=()=>{if(a.value.enabled!==!1){const f=l.getOptimisticResult(a.value);f.isStale?(m(),l.fetchOptimistic(a.value).then(d,R)):(m(),d(f))}};v(),m=b(a,v,{deep:!0})});return b(()=>h.error,d=>{if(h.isError&&!h.isFetching&&X(a.value.useErrorBoundary,[d,l.getCurrentQuery()]))throw d}),{...Z(ee(h)),suspense:o}}function ce(r,e={},t={}){const s=C(r),i=C(e),n=C(t);let u=s;return te(s)?typeof i=="function"?u={...n,queryKey:s,queryFn:i}:u={...i,queryKey:s}:u=s,se(u)}function le(r,e,t){const s=ae(re,r,e,t);return{...s,refetch:s.refetch.value,remove:s.remove.value}}const oe=3,L=30*1e3;async function he(r,e){const t=r.startsWith("/")?r.slice(1):r;let s=`${window.DATA_HOST}${t}`;r.startsWith("http")&&(s=r),s.endsWith("/")&&(s=s.slice(0,-1));const i=await fetch(`${s}/config.json?t=${e??0}`),n=await fetch(`${s}/team.json?t=${e??0}`),u=await fetch(`${s}/run.json?t=${e??0}`),{status:a,statusText:l}=i;if(a>=300||a<200)throw new Error(`fetch data failed. [status=${a}] [statusText=${l}]`);return Promise.all([i.json(),n.json(),u.json()]).then(c=>({contest:c[0],teams:c[1],submissions:c[2]}))}function pe(r,e){const t=Math.floor(e.value.getTime()/1e3);return le({queryKey:[r,t],queryFn:()=>he(r,t),retry:oe,staleTime:L,refetchInterval:L})}function ye(){return j("data-source","",{transform:String})}function ve(){return j("battle-of-giants","",{transform:String})}export{ve as a,ye as g,pe as u};
@@ -1 +1 @@
1
- import{_ as m}from"./TheInput.vue_vue_type_script_setup_true_lang-9cd306c7.js";import{g as _,i as p,G as f,u as h,o as b,c as v,d as e,t as n,l as o,b as y,H as x,I as g,q as l}from"./index-a4eda403.js";import{u as w}from"./user-f204821f.js";const V={flex:"","flex-col":"","justify-center":"","items-center":""},k=e("div",{"text-4xl":""},[e("div",{"i-carbon-campsite":""})],-1),I=e("p",null,[e("a",{rel:"noreferrer",href:"https://github.com/antfu/vitesse",target:"_blank"}," Vitesse ")],-1),B={"text-sm":"","opacity-75":""},C=e("div",{"py-4":""},null,-1),K={"w-48":""},N={class:"hidden",for:"input"},R=["disabled"],U=_({name:"IndexPage",__name:"test",setup(S){const r=w(),t=p(r.savedName),c=f();function a(){t.value&&c.push(`/hi/${encodeURIComponent(t.value)}`)}const{t:s}=h();return($,i)=>{const u=m;return b(),v("div",V,[k,I,e("p",null,[e("em",B,n(o(s)("intro.desc")),1)]),C,e("div",K,[y(u,{modelValue:o(t),"onUpdate:modelValue":i[0]||(i[0]=d=>x(t)?t.value=d:null),placeholder:o(s)("intro.whats-your-name"),autocomplete:"false",onKeydown:g(a,["enter"])},null,8,["modelValue","placeholder","onKeydown"]),e("label",N,n(o(s)("intro.whats-your-name")),1)]),e("div",null,[e("button",{"m-3":"","text-sm":"",btn:"",disabled:!o(t),onClick:a},n(o(s)("button.go")),9,R)])])}}});typeof l=="function"&&l(U);export{U as default};
1
+ import{_ as m}from"./TheInput.vue_vue_type_script_setup_true_lang-6e8ca92c.js";import{g as _,i as p,G as f,u as h,o as b,c as v,d as e,t as n,l as o,b as y,H as x,I as g,q as l}from"./index-40d709ed.js";import{u as w}from"./user-1cebd436.js";const V={flex:"","flex-col":"","justify-center":"","items-center":""},k=e("div",{"text-4xl":""},[e("div",{"i-carbon-campsite":""})],-1),I=e("p",null,[e("a",{rel:"noreferrer",href:"https://github.com/antfu/vitesse",target:"_blank"}," Vitesse ")],-1),B={"text-sm":"","opacity-75":""},C=e("div",{"py-4":""},null,-1),K={"w-48":""},N={class:"hidden",for:"input"},R=["disabled"],U=_({name:"IndexPage",__name:"test",setup(S){const r=w(),t=p(r.savedName),c=f();function a(){t.value&&c.push(`/hi/${encodeURIComponent(t.value)}`)}const{t:s}=h();return($,i)=>{const u=m;return b(),v("div",V,[k,I,e("p",null,[e("em",B,n(o(s)("intro.desc")),1)]),C,e("div",K,[y(u,{modelValue:o(t),"onUpdate:modelValue":i[0]||(i[0]=d=>x(t)?t.value=d:null),placeholder:o(s)("intro.whats-your-name"),autocomplete:"false",onKeydown:g(a,["enter"])},null,8,["modelValue","placeholder","onKeydown"]),e("label",N,n(o(s)("intro.whats-your-name")),1)]),e("div",null,[e("button",{"m-3":"","text-sm":"",btn:"",disabled:!o(t),onClick:a},n(o(s)("button.go")),9,R)])])}}});typeof l=="function"&&l(U);export{U as default};
@@ -1 +1 @@
1
- import{aS as m,i as r,s as t}from"./index-a4eda403.js";const l=m("user",()=>{const e=r(""),s=r(new Set),o=t(()=>Array.from(s.value)),u=t(()=>o.value.filter(a=>a!==e.value));function n(a){e.value&&s.value.add(e.value),e.value=a}return{setNewName:n,otherNames:u,savedName:e}});export{l as u};
1
+ import{aS as m,i as r,s as t}from"./index-40d709ed.js";const l=m("user",()=>{const e=r(""),s=r(new Set),o=t(()=>Array.from(s.value)),u=t(()=>o.value.filter(a=>a!==e.value));function n(a){e.value&&s.value.add(e.value),e.value=a}return{setNewName:n,otherNames:u,savedName:e}});export{l as u};
@@ -1 +1 @@
1
- import{_ as u}from"./index-a4eda403.js";function p(d={}){const{immediate:l=!1,onNeedRefresh:v,onOfflineReady:t,onRegistered:r,onRegisteredSW:o,onRegisterError:s}=d;let i,n;const c=async(a=!0)=>{await n};async function f(){if("serviceWorker"in navigator){const{Workbox:a}=await u(()=>import("./workbox-window.prod.es5-a7b12eab.js"),[],import.meta.url);i=new a("/sw.js",{scope:"/",type:"classic"}),i.addEventListener("activated",e=>{(e.isUpdate||e.isExternal)&&window.location.reload()}),i.addEventListener("installed",e=>{e.isUpdate||t==null||t()}),i.register({immediate:l}).then(e=>{o?o("/sw.js",e):r==null||r(e)}).catch(e=>{s==null||s(e)})}}return n=f(),c}export{p as registerSW};
1
+ import{_ as u}from"./index-40d709ed.js";function p(d={}){const{immediate:l=!1,onNeedRefresh:v,onOfflineReady:t,onRegistered:r,onRegisteredSW:o,onRegisterError:s}=d;let i,n;const c=async(a=!0)=>{await n};async function f(){if("serviceWorker"in navigator){const{Workbox:a}=await u(()=>import("./workbox-window.prod.es5-a7b12eab.js"),[],import.meta.url);i=new a("/sw.js",{scope:"/",type:"classic"}),i.addEventListener("activated",e=>{(e.isUpdate||e.isExternal)&&window.location.reload()}),i.addEventListener("installed",e=>{e.isUpdate||t==null||t()}),i.register({immediate:l}).then(e=>{o?o("/sw.js",e):r==null||r(e)}).catch(e=>{s==null||s(e)})}}return n=f(),c}export{p as registerSW};
package/dist/index.html CHANGED
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><meta charset="UTF-8"><link rel="apple-touch-icon" href="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.43.0/dist/balloon-192x192.png"><link rel="mask-icon" href="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.43.0/dist/balloon-512x512.svg" color="#00aba9"><meta name="msapplication-TileColor" content="#00aba9"><script>function normalizePath(_){for(;_.endsWith("/");)_=_.slice(0,-1);return`${_}/`}{let _="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.43.0/dist";_=normalizePath(_),window.CDN_HOST=_}try{let _=__DATA_HOST__;_=normalizePath(_),window.DATA_HOST=_}catch(_){window.DATA_HOST="/data/"}try{let _=__DATA_REGION__;window.DATA_REGION=_}catch(_){window.DATA_REGION="CN"}try{let _=__DEFAULT_LANG__;window.DEFAULT_LANG=_}catch(_){window.DEFAULT_LANG="en"}</script><script>!function(){localStorage.getItem("vueuse-color-scheme")||localStorage.setItem("vueuse-color-scheme","light");const e=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches,o=localStorage.getItem("vueuse-color-scheme")||"auto";("dark"===o||e&&"light"!==o)&&document.documentElement.classList.toggle("dark",!0)}()</script><script type="module" crossorigin src="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.43.0/dist/assets/index-a4eda403.js"></script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.43.0/dist/assets/index-06792736.css"><link rel="manifest" href="/manifest.webmanifest"><style></style></head><body class="font-sans"><div id="app"></div><noscript>This website requires JavaScript to function properly. Please enable JavaScript to continue.</noscript><script>try{var umamiJSUrl=__UMAMI_JS_URL__,umamiWebsiteId=__UMAMI_WEBSITE_ID__;!function(){var e=document.createElement("script");e.src=umamiJSUrl,e.defer=!0,e.setAttribute("data-website-id",umamiWebsiteId);var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}()}catch(e){}try{var plausibleJSUrl=__PLAUSIBLE_JS_URL__,plausibleDataDomain=__PLAUSIBLE_DATA_DOMAIN__;!function(){var e=document.createElement("script");e.src=plausibleJSUrl,e.defer=!0,e.setAttribute("data-domain",plausibleDataDomain);var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}()}catch(e){}try{var baiduAnalyticsId=__BAIDU_ANALYTICS_ID__,_hmt=_hmt||[];!function(){var e=document.createElement("script");e.src=`https://hm.baidu.com/hm.js?${baiduAnalyticsId}`;var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}()}catch(e){}try{var googleAnalyticsId=__GOOGLE_ANALYTICS_ID__;!function(){var e,t,a,r,c,n;location.port||(e=window,t=document,a="script",r="ga",e.GoogleAnalyticsObject=r,e[r]=e[r]||function(){(e[r].q=e[r].q||[]).push(arguments)},e[r].l=1*new Date,c=t.createElement(a),n=t.getElementsByTagName(a)[0],c.async=1,c.src="//www.google-analytics.com/analytics.js",n.parentNode.insertBefore(c,n),ga("create",`${googleAnalyticsId}`,"auto"),ga("send","pageview"))}()}catch(e){}</script></body></html>
1
+ <!doctype html><html lang="en"><head><meta charset="UTF-8"><link rel="apple-touch-icon" href="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.44.1/dist/balloon-192x192.png"><link rel="mask-icon" href="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.44.1/dist/balloon-512x512.svg" color="#00aba9"><meta name="msapplication-TileColor" content="#00aba9"><script>function normalizePath(_){for(;_.endsWith("/");)_=_.slice(0,-1);return`${_}/`}{let _="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.44.1/dist";_=normalizePath(_),window.CDN_HOST=_}try{let _=__DATA_HOST__;_=normalizePath(_),window.DATA_HOST=_}catch(_){window.DATA_HOST="/data/"}try{let _=__DATA_REGION__;window.DATA_REGION=_}catch(_){window.DATA_REGION="CN"}try{let _=__DEFAULT_LANG__;window.DEFAULT_LANG=_}catch(_){window.DEFAULT_LANG="en"}</script><script>!function(){localStorage.getItem("vueuse-color-scheme")||localStorage.setItem("vueuse-color-scheme","light");const e=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches,o=localStorage.getItem("vueuse-color-scheme")||"auto";("dark"===o||e&&"light"!==o)&&document.documentElement.classList.toggle("dark",!0)}()</script><script type="module" crossorigin src="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.44.1/dist/assets/index-40d709ed.js"></script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@xcpcio/board-app@0.44.1/dist/assets/index-06792736.css"><link rel="manifest" href="/manifest.webmanifest"><style></style></head><body class="font-sans"><div id="app"></div><noscript>This website requires JavaScript to function properly. Please enable JavaScript to continue.</noscript><script>try{var umamiJSUrl=__UMAMI_JS_URL__,umamiWebsiteId=__UMAMI_WEBSITE_ID__;!function(){var e=document.createElement("script");e.src=umamiJSUrl,e.defer=!0,e.setAttribute("data-website-id",umamiWebsiteId);var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}()}catch(e){}try{var plausibleJSUrl=__PLAUSIBLE_JS_URL__,plausibleDataDomain=__PLAUSIBLE_DATA_DOMAIN__;!function(){var e=document.createElement("script");e.src=plausibleJSUrl,e.defer=!0,e.setAttribute("data-domain",plausibleDataDomain);var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}()}catch(e){}try{var baiduAnalyticsId=__BAIDU_ANALYTICS_ID__,_hmt=_hmt||[];!function(){var e=document.createElement("script");e.src=`https://hm.baidu.com/hm.js?${baiduAnalyticsId}`;var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}()}catch(e){}try{var googleAnalyticsId=__GOOGLE_ANALYTICS_ID__;!function(){var e,t,a,r,c,n;location.port||(e=window,t=document,a="script",r="ga",e.GoogleAnalyticsObject=r,e[r]=e[r]||function(){(e[r].q=e[r].q||[]).push(arguments)},e[r].l=1*new Date,c=t.createElement(a),n=t.getElementsByTagName(a)[0],c.async=1,c.src="//www.google-analytics.com/analytics.js",n.parentNode.insertBefore(c,n),ga("create",`${googleAnalyticsId}`,"auto"),ga("send","pageview"))}()}catch(e){}</script></body></html>
package/dist/sw.js CHANGED
@@ -1 +1 @@
1
- if(!self.define){let s,e={};const l=(l,n)=>(l=new URL(l+".js",n).href,e[l]||new Promise((e=>{if("document"in self){const s=document.createElement("script");s.src=l,s.onload=e,document.head.appendChild(s)}else s=l,importScripts(l),e()})).then((()=>{let s=e[l];if(!s)throw new Error(`Module ${l} didn’t register its module`);return s})));self.define=(n,r)=>{const i=s||("document"in self?document.currentScript.src:"")||location.href;if(e[i])return;let u={};const a=s=>l(s,i),t={module:{uri:i},exports:u,require:a};e[i]=Promise.all(n.map((s=>t[s]||a(s)))).then((s=>(r(...s),u)))}}define(["./workbox-b8d87ee1"],(function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"assets/_...all_-b536c4f8.js",revision:null},{url:"assets/_name_-73ea91e2.js",revision:null},{url:"assets/about-8408eddf.js",revision:null},{url:"assets/Board-5ab7c967.js",revision:null},{url:"assets/Board-78c68c35.css",revision:null},{url:"assets/board-d5243ade.js",revision:null},{url:"assets/board-layout-db1006f7.js",revision:null},{url:"assets/DataSourceInput.vue_vue_type_script_setup_true_lang-ae8a0f7c.js",revision:null},{url:"assets/en-c9a8dbb5.js",revision:null},{url:"assets/headless-4685ba2c.js",revision:null},{url:"assets/home-649aa1f3.js",revision:null},{url:"assets/index-06792736.css",revision:null},{url:"assets/index-39ee8a2c.css",revision:null},{url:"assets/index-41b501c0.js",revision:null},{url:"assets/index-4339f7e3.js",revision:null},{url:"assets/index-a4eda403.js",revision:null},{url:"assets/index-layout-f67288b7.js",revision:null},{url:"assets/test-838ba8f2.js",revision:null},{url:"assets/TheInput.vue_vue_type_script_setup_true_lang-9cd306c7.js",revision:null},{url:"assets/useQueryBoardData-93b68e58.js",revision:null},{url:"assets/user-f204821f.js",revision:null},{url:"assets/virtual_pwa-register-53ed75bd.js",revision:null},{url:"assets/workbox-window.prod.es5-a7b12eab.js",revision:null},{url:"assets/zh-CN-8e545f66.js",revision:null},{url:"index.html",revision:"e2f5ab4cc6aacde718af36917e7ea232"},{url:"favicon.svg",revision:"5a744f4ccbb122d4a0575be779ddcd43"},{url:"safari-pinned-tab.svg",revision:"5eaf74d1c43d30e0af743b68a3f48504"},{url:"balloon2-192x192.png",revision:"c857ae6d9dfae118ab4397d4358422bd"},{url:"balloon2-512x512.png",revision:"065594f4f743fe3884793c03d3fe7d9e"},{url:"manifest.webmanifest",revision:"3082e8d8ebc9619c6c1055ff243a02a8"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html")))}));
1
+ if(!self.define){let s,e={};const l=(l,n)=>(l=new URL(l+".js",n).href,e[l]||new Promise((e=>{if("document"in self){const s=document.createElement("script");s.src=l,s.onload=e,document.head.appendChild(s)}else s=l,importScripts(l),e()})).then((()=>{let s=e[l];if(!s)throw new Error(`Module ${l} didn’t register its module`);return s})));self.define=(n,i)=>{const r=s||("document"in self?document.currentScript.src:"")||location.href;if(e[r])return;let u={};const t=s=>l(s,r),o={module:{uri:r},exports:u,require:t};e[r]=Promise.all(n.map((s=>o[s]||t(s)))).then((s=>(i(...s),u)))}}define(["./workbox-b8d87ee1"],(function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"assets/_...all_-de087eb0.js",revision:null},{url:"assets/_name_-06edfd14.js",revision:null},{url:"assets/about-c21c664b.js",revision:null},{url:"assets/Board-4569fc6c.js",revision:null},{url:"assets/board-472d3cb3.js",revision:null},{url:"assets/Board-916a327e.css",revision:null},{url:"assets/board-layout-d77cb1f2.js",revision:null},{url:"assets/DataSourceInput.vue_vue_type_script_setup_true_lang-86e39d12.js",revision:null},{url:"assets/en-c9a8dbb5.js",revision:null},{url:"assets/headless-fb293940.js",revision:null},{url:"assets/home-20deb86b.js",revision:null},{url:"assets/index-06792736.css",revision:null},{url:"assets/index-125c12c1.js",revision:null},{url:"assets/index-39ee8a2c.css",revision:null},{url:"assets/index-3dc9c47f.js",revision:null},{url:"assets/index-40d709ed.js",revision:null},{url:"assets/index-layout-d4fc4afd.js",revision:null},{url:"assets/query-7b63ef07.js",revision:null},{url:"assets/test-d415daee.js",revision:null},{url:"assets/TheInput.vue_vue_type_script_setup_true_lang-6e8ca92c.js",revision:null},{url:"assets/user-1cebd436.js",revision:null},{url:"assets/virtual_pwa-register-11341dab.js",revision:null},{url:"assets/workbox-window.prod.es5-a7b12eab.js",revision:null},{url:"assets/zh-CN-8e545f66.js",revision:null},{url:"index.html",revision:"3e7020078bb4099612177c1b4a593ca4"},{url:"favicon.svg",revision:"5a744f4ccbb122d4a0575be779ddcd43"},{url:"safari-pinned-tab.svg",revision:"5eaf74d1c43d30e0af743b68a3f48504"},{url:"balloon2-192x192.png",revision:"c857ae6d9dfae118ab4397d4358422bd"},{url:"balloon2-512x512.png",revision:"065594f4f743fe3884793c03d3fe7d9e"},{url:"manifest.webmanifest",revision:"3082e8d8ebc9619c6c1055ff243a02a8"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html")))}));
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@xcpcio/board-app",
3
3
  "type": "module",
4
- "version": "0.43.0",
4
+ "version": "0.44.1",
5
5
  "description": "XCPCIO Board App",
6
6
  "author": "Dup4 <lyuzhi.pan@gmail.com>",
7
7
  "license": "MIT",
@@ -53,8 +53,8 @@
53
53
  "vue-router": "^4.2.4",
54
54
  "vue-search-select": "^3.1.2",
55
55
  "vue-toast-notification": "^3",
56
- "@xcpcio/core": "0.43.0",
57
- "@xcpcio/types": "0.43.0"
56
+ "@xcpcio/core": "0.44.1",
57
+ "@xcpcio/types": "0.44.1"
58
58
  },
59
59
  "devDependencies": {
60
60
  "@antfu/eslint-config": "^0.39.8",
@@ -249,6 +249,7 @@ declare global {
249
249
  const useRefHistory: typeof import('@vueuse/core')['useRefHistory']
250
250
  const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver']
251
251
  const useRoute: typeof import('vue-router')['useRoute']
252
+ const useRouteQueryForBattleOfGiants: typeof import('./composables/query')['useRouteQueryForBattleOfGiants']
252
253
  const useRouter: typeof import('vue-router')['useRouter']
253
254
  const useScreenOrientation: typeof import('@vueuse/core')['useScreenOrientation']
254
255
  const useScreenSafeArea: typeof import('@vueuse/core')['useScreenSafeArea']
@@ -562,6 +563,7 @@ declare module 'vue' {
562
563
  readonly useRefHistory: UnwrapRef<typeof import('@vueuse/core')['useRefHistory']>
563
564
  readonly useResizeObserver: UnwrapRef<typeof import('@vueuse/core')['useResizeObserver']>
564
565
  readonly useRoute: UnwrapRef<typeof import('vue-router')['useRoute']>
566
+ readonly useRouteQueryForBattleOfGiants: UnwrapRef<typeof import('./composables/query')['useRouteQueryForBattleOfGiants']>
565
567
  readonly useRouter: UnwrapRef<typeof import('vue-router')['useRouter']>
566
568
  readonly useScreenOrientation: UnwrapRef<typeof import('@vueuse/core')['useScreenOrientation']>
567
569
  readonly useScreenSafeArea: UnwrapRef<typeof import('@vueuse/core')['useScreenSafeArea']>
@@ -869,6 +871,7 @@ declare module '@vue/runtime-core' {
869
871
  readonly useRefHistory: UnwrapRef<typeof import('@vueuse/core')['useRefHistory']>
870
872
  readonly useResizeObserver: UnwrapRef<typeof import('@vueuse/core')['useResizeObserver']>
871
873
  readonly useRoute: UnwrapRef<typeof import('vue-router')['useRoute']>
874
+ readonly useRouteQueryForBattleOfGiants: UnwrapRef<typeof import('./composables/query')['useRouteQueryForBattleOfGiants']>
872
875
  readonly useRouter: UnwrapRef<typeof import('vue-router')['useRouter']>
873
876
  readonly useScreenOrientation: UnwrapRef<typeof import('@vueuse/core')['useScreenOrientation']>
874
877
  readonly useScreenSafeArea: UnwrapRef<typeof import('@vueuse/core')['useScreenSafeArea']>
@@ -81,7 +81,7 @@ const color = computed(() => {
81
81
  <div
82
82
  i-material-symbols-refresh
83
83
  cursor-pointer btn
84
- text-3xl
84
+ text-2xl
85
85
  ml-2
86
86
  @click="giants.refreshName()"
87
87
  />
@@ -41,6 +41,16 @@ const enableAutoScroll = ref(false);
41
41
  }
42
42
  })();
43
43
 
44
+ (() => {
45
+ const routeQueryForBattleOfGiants = useRouteQueryForBattleOfGiants();
46
+ if (
47
+ routeQueryForBattleOfGiants.value !== null
48
+ && routeQueryForBattleOfGiants.value !== undefined
49
+ ) {
50
+ rankOptions.value.battleOfGiants.FromBase64(routeQueryForBattleOfGiants.value);
51
+ }
52
+ })();
53
+
44
54
  const currentGroup = ref("all");
45
55
  function onChangeCurrentGroup(nextGroup: string) {
46
56
  if (nextGroup === rankOptions.value.group) {
@@ -93,8 +93,27 @@ function teamsOnSelect(selectedItems: Array<SelectOptionItem>, _lastSelectItem:
93
93
  rankOptions.value.setFilterTeams(selectedItems);
94
94
  }
95
95
 
96
- function onCancel() {
96
+ const routeQueryForBattleOfGiants = useRouteQueryForBattleOfGiants();
97
+ function persistBattleOfGiants() {
98
+ if (rankOptions.value.battleOfGiants.persist) {
99
+ routeQueryForBattleOfGiants.value = rankOptions.value.battleOfGiants.ToBase64();
100
+ } else {
101
+ routeQueryForBattleOfGiants.value = undefined as unknown as string;
102
+ }
103
+ }
104
+
105
+ watch(
106
+ () => rankOptions.value.battleOfGiants.persist,
107
+ () => {
108
+ persistBattleOfGiants();
109
+ },
110
+ );
111
+
112
+ async function onCancel() {
97
113
  rankOptions.value.setSelf(beforeRankOptions);
114
+ await nextTick();
115
+ persistBattleOfGiants();
116
+
98
117
  isHidden.value = true;
99
118
  }
100
119
 
@@ -106,6 +125,8 @@ function onConfirm() {
106
125
  localStorage.setItem(localStorageKeyForFilterOrganizations, JSON.stringify(orgSelectedItems.value));
107
126
  localStorage.setItem(localStorageKeyForFilterTeams, JSON.stringify(teamsSelectedItems.value));
108
127
 
128
+ persistBattleOfGiants();
129
+
109
130
  isHidden.value = true;
110
131
  }
111
132
  </script>
@@ -218,7 +239,7 @@ function onConfirm() {
218
239
  v-model="rankOptions.battleOfGiants.equalTeams"
219
240
  />
220
241
 
221
- <!-- <span
242
+ <span
222
243
  text-sm font-medium
223
244
  text-gray-900 dark:text-gray-300
224
245
  >
@@ -227,7 +248,7 @@ function onConfirm() {
227
248
 
228
249
  <TheCheckbox
229
250
  v-model="rankOptions.battleOfGiants.persist"
230
- /> -->
251
+ />
231
252
 
232
253
  <span
233
254
  text-sm font-medium
@@ -7,3 +7,11 @@ export function getDataSourceUrl() {
7
7
  { transform: String },
8
8
  );
9
9
  }
10
+
11
+ export function useRouteQueryForBattleOfGiants() {
12
+ return useRouteQuery(
13
+ "battle-of-giants",
14
+ "",
15
+ { transform: String },
16
+ );
17
+ }
@@ -46,9 +46,10 @@ async function fetcher(target: string, timestamp?: number): Promise<BoardData> {
46
46
  }
47
47
 
48
48
  export function useQueryBoardData(target: string, timestamp?: any) {
49
+ const timestampSeconds = Math.floor(timestamp.value.getTime() / 1000);
49
50
  return useQuery({
50
- queryKey: [target, timestamp.value.getTime()],
51
- queryFn: () => fetcher(target, timestamp.value.getTime()),
51
+ queryKey: [target, timestampSeconds],
52
+ queryFn: () => fetcher(target, timestampSeconds),
52
53
  retry: RETRY,
53
54
  staleTime: REFETCH_INTERVAL,
54
55
  refetchInterval: REFETCH_INTERVAL,
@@ -13,7 +13,10 @@ const { t } = useI18n();
13
13
  useTitle(TITLE_SUFFIX);
14
14
 
15
15
  const now = ref(new Date());
16
- const url = ref(`${window.DATA_HOST}index/contest_list.json?t=${now.value.getTime()}`);
16
+ const nowMinutes = computed(() => {
17
+ return Math.floor(now.value.getTime() / 1000 / 60);
18
+ });
19
+ const url = ref(`${window.DATA_HOST}index/contest_list.json?t=${nowMinutes.value}`);
17
20
  const refetch = ref(false);
18
21
 
19
22
  const s = useRouteQuery<string | null>("s", "", { transform: String });