vue-composable
Advanced tools
Comparing version
@@ -418,6 +418,9 @@ var vueComposable = (function (exports, compositionApi) { | ||
function useEvent(el, name, listener, options) { | ||
const element = wrap(el); | ||
const remove = () => element.value.removeEventListener(name, listener); | ||
compositionApi.onMounted(() => element.value.addEventListener(name, listener, options)); | ||
compositionApi.onUnmounted(remove); | ||
let remove = NO_OP; | ||
if (el) { | ||
const element = wrap(el); | ||
remove = () => element.value.removeEventListener(name, listener); | ||
compositionApi.onMounted(() => element.value.addEventListener(name, listener, options)); | ||
compositionApi.onUnmounted(remove); | ||
} | ||
return remove; | ||
@@ -467,10 +470,23 @@ } | ||
function useOnScroll(el, options, wait) { | ||
const element = wrap(el); | ||
const scrollTop = compositionApi.ref(element.value && element.value.scrollTop); | ||
const scrollLeft = compositionApi.ref(element.value && element.value.scrollLeft); | ||
let handler = (ev) => { | ||
scrollTop.value = element.value.scrollTop; | ||
scrollLeft.value = element.value.scrollLeft; | ||
const isValidElement = (el) => isNumber(el) || isBoolean(el) || !(isElement(el) || compositionApi.isRef(el)) || !el | ||
? false | ||
: true; | ||
const element = isValidElement(el) | ||
? wrap(el) | ||
: compositionApi.ref((isClient && window) || undefined); | ||
const scrollableElement = isValidElement(el) | ||
? element | ||
: compositionApi.ref((isClient && window.document.scrollingElement) || undefined); | ||
const scrollTop = compositionApi.ref((scrollableElement.value && scrollableElement.value.scrollTop) || 0); | ||
const scrollLeft = compositionApi.ref((scrollableElement.value && scrollableElement.value.scrollLeft) || 0); | ||
let handler = () => { | ||
scrollTop.value = scrollableElement.value.scrollTop; | ||
scrollLeft.value = scrollableElement.value.scrollLeft; | ||
}; | ||
const [eventOptions, ms] = isNumber(options) ? [undefined, options] : [options, wait]; | ||
const scrollTo = (...args) => scrollableElement.value.scrollTo.apply(scrollableElement.value, args); | ||
const [eventOptions, ms] = isNumber(el) || !el | ||
? [PASSIVE_EV, el] | ||
: isNumber(options) | ||
? [PASSIVE_EV, options] | ||
: [options, wait]; | ||
if (ms) { | ||
@@ -483,2 +499,3 @@ handler = useDebounce(handler, wait); | ||
scrollLeft, | ||
scrollTo, | ||
remove | ||
@@ -488,20 +505,57 @@ }; | ||
function useFetch(options) { | ||
function useFetch(options, requestInit) { | ||
const json = compositionApi.ref(null); | ||
// TODO add text = ref<string> ?? | ||
const text = compositionApi.ref(''); | ||
const blob = compositionApi.ref(); | ||
const isOptions = options ? isBoolean(options.isJson) || isBoolean(options.isJson) : false; | ||
const jsonError = compositionApi.ref(null); | ||
const isJson = options ? options.isJson !== false : true; | ||
const parseImmediate = options ? options.parseImmediate !== false : true; | ||
const isJson = isOptions ? options.isJson !== false : true; | ||
const parseImmediate = isOptions ? options.parseImmediate !== false : true; | ||
const isCancelled = compositionApi.ref(false); | ||
const cancelledMessage = compositionApi.ref(); | ||
let abortController = undefined; | ||
const cancel = (message) => { | ||
if (!abortController) { | ||
/* istanbul ignore else */ | ||
{ | ||
return; | ||
} | ||
} | ||
abortController.abort(); | ||
isCancelled.value = true; | ||
cancelledMessage.value = message; | ||
}; | ||
const use = usePromise(async (request, init) => { | ||
const response = await fetch(request, init); | ||
if (isJson) { | ||
const pJson = response | ||
.json() | ||
.then(x => (json.value = x)) | ||
.catch(x => { | ||
json.value = null; | ||
jsonError.value = x; | ||
}); | ||
abortController = new AbortController(); | ||
const response = await fetch(request, { | ||
signal: abortController.signal, | ||
...requestInit, | ||
...init | ||
}); | ||
if (response) { | ||
const promises = [ | ||
// JSON | ||
isJson ? response | ||
.clone() | ||
.json() | ||
.then(x => (json.value = x)) | ||
.catch(x => { | ||
json.value = null; | ||
jsonError.value = x; | ||
}) : Promise.resolve(), | ||
// BLOB | ||
response.clone() | ||
.blob() | ||
.then(x => { | ||
blob.value = x; | ||
}), | ||
// TEXT | ||
response.clone() | ||
.text() | ||
.then(x => { | ||
text.value = x; | ||
}) | ||
]; | ||
if (parseImmediate) { | ||
await pJson; | ||
await Promise.all(promises); | ||
} | ||
@@ -513,4 +567,16 @@ } | ||
const statusText = compositionApi.computed(() => (use.result.value && use.result.value.statusText) || null); | ||
// if not options are provided in the config, execute it straight away | ||
// NOTE: `false` is passed to the `exec` to prevent the exception to be thrown | ||
if (options) { | ||
if (isString(options) || !isOptions) { | ||
use.exec(options, undefined, false); | ||
} | ||
} | ||
return { | ||
...use, | ||
cancel, | ||
isCancelled, | ||
cancelledMessage, | ||
text, | ||
blob, | ||
json, | ||
@@ -992,6 +1058,6 @@ jsonError, | ||
id: id, | ||
mind: mind.value, | ||
mind: mind.value | ||
}); | ||
}; | ||
addListener((e) => { | ||
addListener(e => { | ||
switch (e.data.type) { | ||
@@ -1011,3 +1077,3 @@ case 0 /* INIT */: { | ||
} | ||
// if master disconnects | ||
// if master disconnects | ||
if (masterId === e.data.id && targets.value.length > 0) { | ||
@@ -1030,3 +1096,4 @@ send({ | ||
mind.value = e.data.mind; | ||
masterId = e.data.mind === 1 /* MASTER */ && e.data.id || undefined; | ||
masterId = | ||
(e.data.mind === 1 /* MASTER */ && e.data.id) || undefined; | ||
master.value = masterId === id; | ||
@@ -1073,3 +1140,3 @@ if (master.value) { | ||
if (isClient) { | ||
window.addEventListener('unload', disconnect, PASSIVE_EV); | ||
window.addEventListener("unload", disconnect, PASSIVE_EV); | ||
} | ||
@@ -1090,3 +1157,3 @@ compositionApi.onUnmounted(() => { | ||
setMind, | ||
addListener | ||
addListener: addListener | ||
}; | ||
@@ -1093,0 +1160,0 @@ } |
@@ -1,1 +0,1 @@ | ||
var vueComposable=function(e,t){"use strict";function n(e){return t.isRef(e)?e.value:e}function r(e){return t.isRef(e)?e:t.ref(e)}const a=Array.isArray,o=e=>"function"==typeof e,u=e=>"string"==typeof e,l=e=>"boolean"==typeof e,s=e=>c(e)&&o(e.getTime),i=e=>"number"==typeof e,c=e=>null!==e&&"object"==typeof e,v=e=>c(e)&&!!e.tagName;function d(e){return c(e)&&o(e.then)&&o(e.catch)}const f=()=>{},m=()=>!1,g={passive:!0};function p(e){return new Promise(t=>{setTimeout(t,e)})}function y(e,t,n){return e<t?t:e>n?n:e}const h="undefined"!=typeof window;function w(e){const n=r(e.currentPage),a=r(e.pageSize),o=t.ref(0),u=r(e.total),l=t.computed({get:()=>o.value,set(e){i(e)&&(o.value=Math.min(e,u.value))}}),s=t.computed({get:()=>n.value,set(e){i(e)&&(n.value=y(e,1,v.value),l.value=(n.value-1)*c.value)}}),c=t.computed({get:()=>a.value,set(e){i(e)&&(a.value=e)}}),v=t.computed(()=>Math.ceil(u.value/c.value));s.value=n.value;return t.watch([u,c],()=>{s.value>v.value&&(s.value=v.value)},{lazy:!0}),{pageSize:c,total:u,currentPage:s,offset:l,lastPage:v,next:()=>++s.value,prev:()=>--s.value,first:()=>s.value=1,last:()=>s.value=v.value}}function E(e,n=!1){if(!e)throw new Error(`[usePromise] argument can't be '${e}'`);if("function"!=typeof e)throw new Error(`[usePromise] expects function, but received ${typeof e}`);const r=t.ref(!1),a=t.ref(null),o=t.ref(null),u=t.ref();return{exec:async(...t)=>{r.value=!0,a.value=null,o.value=null;let s=t&&e.length!==t.length&&t.length>0&&l(t[t.length-1])?t[t.length-1]:n;const i=u.value=e(...t);try{const e=await i;return u.value===i&&(o.value=e),e}catch(e){return u.value===i&&(a.value=e,o.value=null),s?i:void 0}finally{u.value===i&&(r.value=!1)}},result:o,promise:u,loading:r,error:a}}const b=Symbol(""),M=Symbol(""),S=async(e,t,n,r)=>{const a=t[b].value;let o=-1;const u=e.maxRetries||9001,l=e.retryDelay||I;t.retryErrors.value=[],t.isRetrying.value=!1,t.nextRetry.value=void 0;let c=void 0;do{let e=!1,v=null;try{if(++o,v=r?n(...r):n(),d(v)&&(v=await v),t[M].value)return null;e=!0}catch(e){v=null,t.retryErrors.value.push(e)}if(a!==t[b].value)return v;if(e)return t.isRetrying.value=!1,t.nextRetry.value=void 0,v;if(o>=u)return t.isRetrying.value=!1,t.nextRetry.value=void 0,Promise.reject(new Error(`[useRetry] max retries reached ${u}`));t.isRetrying.value=!0;const f=Date.now(),m=l(o),g=d(m)?await m:m;if(!d(m)||g){if(i(g))c=g;else{if(!s(g))throw new Error(`[useRetry] invalid value received from options.retryDelay '${typeof g}'`);c=g.getTime()}c<f?t.nextRetry.value=f+c:(t.nextRetry.value=c,c-=f),c>0&&await p(c)}if(t[M].value)return null;if(a!==t[b].value)return v}while(o<9e3);return null};const I=()=>0;function L(e,t,n){return R(e,t,n)}function R(e,t=50,n={isImmediate:!1}){let r;return function(...a){const o=this,u=n.isImmediate&&void 0===r;void 0!==r&&clearTimeout(r),r=setTimeout((function(){r=void 0,n.isImmediate||e.apply(o,a)}),t),u&&e.apply(o,a)}}function k(e){const n=e&&e.refreshMs||1e3,r=!e||!l(e.sync)||e.sync,a=e&&o(e.timeFn)&&e.timeFn||Date.now;let u=void 0,s=void 0;const i=t.ref(a()),c=()=>{clearInterval(u),clearTimeout(s)},v=h?()=>u=setInterval(()=>i.value=a(),n):f;if(r){const e=1e3-(i.value-1e3*Math.floor(i.value/1e3));s=setTimeout(v,e)}else v();return t.onUnmounted(c),{now:i,remove:c}}function $(e,n,a,o){const u=r(e),l=()=>u.value.removeEventListener(n,a);return t.onMounted(()=>u.value.addEventListener(n,a,o)),t.onUnmounted(l),l}let x=void 0;let P=void 0,O=void 0;let A=void 0,D=void 0;function T(e,n){const r=h&&"BroadcastChannel"in self,a=t.ref(null),o=t.ref(null),u=t.ref(null),l=t.ref(!1),s=t.ref(!1);let i=f,c=f,v=f;if(r){const r=new BroadcastChannel(e);r.addEventListener("messageerror",e=>{u.value=e,l.value=!0},g),r.addEventListener("message",e=>{o.value=e,a.value=e.data},g),i=e=>r.postMessage(e),c=()=>{r.close(),s.value=!0},v=(e,n)=>{r.addEventListener("message",e,n),t.onUnmounted(()=>r.removeEventListener("message",e))},t.onUnmounted(()=>{n&&n(),c()})}return{supported:r,data:a,messageEvent:o,errorEvent:u,errored:l,isClosed:s,send:i,close:c,addListener:v}}function C(e){const n=!!h&&"matchMedia"in window;let r=void 0,a=void 0,o=f;if(n){r=t.ref(matchMedia(e)),a=t.ref(r.value.matches);const n=e=>{a.value=e.matches};r.value.addEventListener("change",n,{passive:!0});const o=()=>r.value.removeEventListener("change",n);t.onUnmounted(o)}else r=t.ref({}),a=t.ref(!1);return{supported:n,mediaQueryList:r,matches:a,remove:o}}function z(e,n){const{addListener:r,send:a,close:o,supported:u}=T(e,()=>w()),l=Date.now(),s=t.ref(!1),i=t.ref(0),v=t.computed(()=>1!==i.value||s.value),d=t.ref([]),f=t.ref(n);let m=!1,p=void 0;a({type:0});const y=()=>a({type:5,id:l}),w=()=>{0!==d.value.length&&(s.value&&a({type:3,mind:1,id:Math.min(...d.value)}),a({type:4,id:l}))};return r(e=>{switch(e.data.type){case 0:a({type:2,value:f.value,mind:i.value});break;case 4:{const t=d.value.indexOf(e.data.id);t>=0&&d.value.splice(t,1),p===e.data.id&&d.value.length>0&&a({type:3,mind:1,id:Math.min(l,...d.value)});break}case 2:m=!0,f.value=e.data.value,i.value=e.data.mind;break;case 3:i.value=e.data.mind,p=1===e.data.mind&&e.data.id||void 0,s.value=p===l,s.value&&(d.value=[],y());break;case 5:d.value=[e.data.id],a({type:6,id:l});break;case 6:d.value.push(e.data.id)}},g),y(),t.watch(f,(e,t)=>{if(m)m=!1;else{if(1===i.value&&!1===s.value)return m=!0,void(f.value=t);a({type:2,mind:i.value,value:c(e)?{...e}:e}),m=!1}},{deep:!0,lazy:!0}),h&&window.addEventListener("unload",w,g),t.onUnmounted(()=>{w(),o()}),{supported:u,id:l,data:f,master:s,mind:i,editable:v,targets:d,ping:y,setMind:e=>{switch(e){case 1:s.value=!0;break;case 0:s.value=!1}i.value=e,a({type:3,id:l,mind:i.value})},addListener:r}}function H(e,t){return e instanceof DOMException&&(22===e.code||1014===e.code||"QuotaExceededError"===e.name||"NS_ERROR_DOM_QUOTA_REACHED"===e.name)&&(t&&0!==t.length||!1)}function U(e){try{if(!e)return!1;const t=":$";return e.setItem(t,t),e.removeItem(t),!0}catch(t){return H(t,e)}}function N(e,t){try{return e.parse(t)}catch{return t}}let j=void 0;function W(e,n=JSON,a=10){const o=h?window[e]:void 0,l=U(o);j||(j=new Map,h&&window.addEventListener("storage",e=>{if(e.newValue===e.oldValue)return;let t=j.get("localStorage");t=e.storageArea===window.localStorage?j.get("localStorage"):j.get("sessionStorage"),t&&Object.keys(t.$syncKeys).length>0&&(null===e.key?t.clear():t.$syncKeys[e.key]&&(null===e.newValue?t.removeItem(e.key):t.updateItem(e.key,e.newValue)))}));let s,i=j.get(e);return l&&o?i?s=i.$quotaError:(s=t.ref(!1),i={$refMap:new Map,$watchHandlers:new Map,$syncKeys:{},$quotaError:s,key:o.key,length:o.length,setSync(e,t){t?this.$syncKeys[e]=!0:delete this.$syncKeys[e]},clear(){this.$refMap.forEach((e,t)=>this.removeItem(t))},removeItem(e){const t=this.$refMap.get(e);t&&(t.value=void 0);const n=this.$watchHandlers.get(e);n&&n(),delete this.$syncKeys[e],this.$refMap.delete(e),o.removeItem(e)},getItem(e){let t=this.$refMap.get(e);if(t)return t;const r=o.getItem(e);return r?this.setItem(e,N(n,r)):null},setItem(e,l){const i=r(l);this.$refMap.set(e,i);const c=(e,t)=>{try{const r=u(t)?t:n.stringify(t);o.setItem(e,r)}catch(e){s.value=H(e,o)}};c(e,l);const v=t.watch(i,R(t=>{c(e,t)},a),{lazy:!0,deep:!0});return this.$watchHandlers.set(e,v),i},updateItem(e,t){let r=this.$refMap.get(e);r&&(r.value=N(n,t))}},j.set(e,i)):(s=t.ref(!1),i={}),{supported:l,quotaError:s,store:i,remove:()=>j.delete(e)}}function F(e,n){const{supported:r,store:a}=W("localStorage");let o=f,u=f,l=f,s=void 0;return r&&a?(l=t=>a.setSync(e,t),o=()=>a.removeItem(e),u=()=>a.clear(),s=a.getItem(e),s||(s=a.setItem(e,n))):s=t.ref(n),{supported:r,storage:s,clear:u,remove:o,setSync:l}}function V(e,n){const{supported:r,store:a}=W("sessionStorage");let o=f,u=f,l=m,s=void 0;return r&&a?(o=()=>a.removeItem(e),u=()=>a.clear(),s=a.getItem(e),s||(s=a.setItem(e,n))):s=t.ref(n),{supported:r,storage:s,clear:u,remove:o,setSync:l}}let _=void 0;return e.FALSE_OP=m,e.NO_OP=f,e.PASSIVE_EV=g,e.debounce=R,e.exponentialDelay=e=>{const t=100*Math.pow(2,e);return t+.2*t*Math.random()},e.isArray=a,e.isBoolean=l,e.isClient=h,e.isDate=s,e.isElement=v,e.isFunction=o,e.isNumber=i,e.isObject=c,e.isPromise=d,e.isString=u,e.isSymbol=e=>"symbol"==typeof e,e.minMax=y,e.noDelay=I,e.promisedTimeout=p,e.refShared=function(e,n){const r=t.getCurrentInstance(),a=n||r.$vnode.tag,{data:o,supported:u}=z(a,e);return o},e.storageAvailable=U,e.unwrap=n,e.useArrayPagination=function(e,n){const a=r(e),o=w({currentPage:1,pageSize:10,...n,total:t.computed(()=>a.value.length)}),u=t.computed(()=>{const e=a.value;return Array.isArray(e)?e.slice(o.offset.value,o.offset.value+o.pageSize.value):[]});return{...o,result:u}},e.useBreakpoint=function(e){const n={},r=new Map,a=t.ref();let o=[];const u=[];for(const a in e){const l=e[a];if(i(l)){const e=t.ref(!1);n[a]=e,r.set(l,{name:a,valid:e}),o.push(l)}else{const{matches:e,remove:t}=C(l);n[a]=e,u.push(t)}}o=o.sort((e,t)=>t-e);const l=h?()=>{const e=window.innerWidth;let t=void 0;for(let n=0;n<o.length;n++){const a=o[n],u=r.get(a);u.valid.value=e>=a,e>=a&&void 0===t&&(t=u.name)}a.value=t}:f,s=L(l,10),c=h?()=>window.removeEventListener("resize",s):f;return t.onMounted(()=>{l(),window.addEventListener("resize",s,{passive:!0})}),t.onUnmounted(()=>{c(),u.forEach(e=>e())}),{...n,remove:c,current:a}},e.useBroadcastChannel=T,e.useCancellablePromise=function(e,n=!1){const r=t.ref(!1);let a=void 0;return{...E((...t)=>{return n=e(...t),new Promise((e,t)=>{a=e=>{r.value=!0,t(e)},n.then(e).catch(t)});var n},n),cancel:e=>a(e),cancelled:r}},e.useDateNow=function(e){return k({refreshMs:e&&e.refreshMs||1e3,sync:!e||!l(e.sync)||e.sync,timeFn:Date.now})},e.useDebounce=L,e.useEvent=$,e.useFetch=function(e){const n=t.ref(null),r=t.ref(null),a=!e||!1!==e.isJson,o=!e||!1!==e.parseImmediate,u=E(async(e,t)=>{const u=await fetch(e,t);if(a){const e=u.json().then(e=>n.value=e).catch(e=>{n.value=null,r.value=e});o&&await e}return u}),l=t.computed(()=>u.result.value&&u.result.value.status||null),s=t.computed(()=>u.result.value&&u.result.value.statusText||null);return{...u,json:n,jsonError:r,status:l,statusText:s}},e.useGeolocation=function(e){const n=h&&!!navigator.geolocation,r=t.ref(e?!1===e.immediate:void 0),a=t.ref(null),o=t.ref(null),u=t.ref(null),s=t.ref(e&&e.enableHighAccuracy||null);let i=f;if(n){const n=e=>{o.value=e.timestamp,u.value=e.coords,a.value=null},c=e=>{o.value=Date.now(),u.value=null,a.value=e},v=()=>!0!==r.value&&f&&navigator.geolocation.clearWatch(f);let d=()=>navigator.geolocation.getCurrentPosition(n,c,e);i=r.value?()=>{r.value?r.value=!1:d()}:d;let f=0;t.onMounted(()=>t.watch([s,r],t=>{v();const r=l(t[0])?t[0]:e?e.enableHighAccuracy:void 0;f=navigator.geolocation.watchPosition(n,c,e?{...e,enableHighAccuracy:r}:{enableHighAccuracy:r})},{lazy:r.value})),t.onUnmounted(v)}return{supported:n,refresh:i,error:a,timestamp:o,coords:u,highAccuracy:s}},e.useIntersectionObserver=function(e,a){const o=h&&"IntersectionObserver"in window,u=e?r(e):void 0,l=!u||!v(u.value)&&u.value?void 0:u,s=t.computed(()=>a?n(a):l?void 0:n(e)),i=t.ref(l&&l.value?[l.value]:[]),c=t.computed(()=>i.value.length>0&&i.value.every(e=>e.isIntersecting)),d=e=>{i.value=e};let m=t.ref();o&&t.watch(s,e=>{m.value&&m.value.disconnect();const t=e&&e&&{root:n(e.root),rootMargin:n(e.rootMargin),threshold:n(e.threshold)}||void 0;m.value=new IntersectionObserver(d,t),i.value.map(e=>e.target).forEach(m.value.observe)},{deep:!0});const g=o?e=>{const t=n(e);m.value.observe(t)}:f,p=o?e=>{const t=n(e);m.value.unobserve(t)}:f,y=()=>m.value.disconnect();return l&&(l.value||t.onMounted(()=>{l.value&&g(l)}),t.onUnmounted(()=>{y()})),{supported:o,elements:i,observe:g,unobserve:p,disconnect:y,isIntersecting:c}},e.useLanguage=function(){if(A||(A=h?t.ref(navigator.language):t.ref("")),!D)if(h){D=t.ref(navigator.languages);const e=()=>{A.value=navigator.language,D.value=navigator.languages};window.addEventListener("languagechange",e,{passive:!0})}else D=t.ref([]);return{language:A,languages:D}},e.useLocalStorage=F,e.useMatchMedia=C,e.useNetworkInformation=function(){const e=!!h&&(navigator.connection||navigator.mozConnection||navigator.webkitConnection),n=!!e,r=t.ref(0),a=t.ref(0),o=t.ref("unknown"),u=t.ref(0),l=t.ref(!1),s=t.ref("none");let i=f,c=f;return e&&(i=()=>{r.value=e.downlink,a.value=e.downlinkMax,o.value=e.effectiveType,u.value=e.rtt,l.value=e.saveData,s.value=e.type},c=$(e,"change",i,{passive:!0}),i()),{supported:n,downlink:r,downlinkMax:a,effectiveType:o,rtt:u,saveData:l,type:s,remove:c}},e.useNow=k,e.useOnMouseMove=function(e,n,r){const a=t.ref(0),o=t.ref(0);let u=e=>{a.value=e.x,o.value=e.y};const[l,s]=i(n)?[void 0,n]:[n,r];s&&(u=L(u,r));const c=$(e,"mousemove",u,l);return{mouseX:a,mouseY:o,remove:c}},e.useOnResize=function(e,n,a){const o=r(e),u=t.ref(o.value&&o.value.clientHeight),l=t.ref(o.value&&o.value.clientWidth);let s=()=>{u.value=o.value.clientHeight,l.value=o.value.clientWidth};const[c,v]=i(n)?[void 0,n]:[n,a];v&&(s=L(s,a));const d=h?$(window,"resize",s,c||{passive:!0}):f;return{height:u,width:l,remove:d}},e.useOnScroll=function(e,n,a){const o=r(e),u=t.ref(o.value&&o.value.scrollTop),l=t.ref(o.value&&o.value.scrollLeft);let s=e=>{u.value=o.value.scrollTop,l.value=o.value.scrollLeft};const[c,v]=i(n)?[void 0,n]:[n,a];v&&(s=L(s,a));const d=$(o,"scroll",s,c);return{scrollTop:u,scrollLeft:l,remove:d}},e.useOnline=function(){const e=h&&"onLine"in navigator;return e||(x=t.ref(!1)),x||(x=t.ref(navigator.onLine),window.addEventListener("offline",()=>x.value=!1,{passive:!0}),window.addEventListener("online",()=>x.value=!0,{passive:!0})),{supported:e,online:x}},e.usePageVisibility=function(){return O||(O=t.ref(h&&document.hidden)),P||(h?(P=t.ref(document.visibilityState),document.addEventListener("visibilitychange",()=>{P.value=document.visibilityState,O.value=document.hidden},{passive:!0})):P=t.ref(!1)),{visibility:P,hidden:O}},e.usePagination=w,e.usePerformanceNow=function(e){return k({refreshMs:e&&e.refreshMs||1e3,sync:!e||!l(e.sync)||e.sync,timeFn:()=>performance.now()})},e.usePromise=E,e.useRetry=function(e,n){const r=!e||o(e)?{}:e,a=o(e)?e:n;if(!o(e)&&!c(e))throw new Error("[useRetry] options needs to be 'object'");if(a&&!o(a))throw new Error("[useRetry] factory needs to be 'function'");const u=t.ref(!1),l=t.ref(),s=t.ref([]),i={value:!1},v={isRetrying:u,retryCount:t.computed(()=>s.value.length),nextRetry:l,retryErrors:s,[b]:{value:0},[M]:i},d=a?(...e)=>(++v[b].value,S(r,v,a,e)):e=>(++v[b].value,S(r,v,e,void 0));return{...v,cancel:()=>{v.isRetrying.value=!1,v.retryErrors.value.push(new Error("[useRetry] cancelled")),v.nextRetry.value=void 0,i.value=!0},exec:d}},e.useSessionStorage=V,e.useSharedRef=z,e.useStorage=function(e,t){return void 0===_&&(_=W("localStorage").supported),_?F(e,t):V(e,t)},e.useWebSocket=function(e,n){const r=h&&"WebSocket"in window;let a=null;const o=t.ref(null),u=t.ref(),l=t.ref(null),s=t.ref(!1),i=t.ref(!1),c=t.ref(!1);let v=f,d=f;return r&&(a=new WebSocket(e,n),a.addEventListener("message",e=>{o.value=e,l.value=e.data}),a.addEventListener("error",e=>{u.value=e,c.value=!0}),a.addEventListener("close",()=>{s.value=!1,i.value=!0}),a.addEventListener("open",()=>{s.value=!0,i.value=!1}),v=e=>a.send(e),d=(e,t)=>{a.close(e,t)}),{supported:r,ws:a,send:v,close:d,messageEvent:o,errorEvent:u,data:l,isOpen:s,isClosed:i,errored:c}},e.useWebStorage=W,e.wrap=r,e}({},vueCompositionApi); | ||
var vueComposable=function(e,t){"use strict";function n(e){return t.isRef(e)?e.value:e}function r(e){return t.isRef(e)?e:t.ref(e)}const a=Array.isArray,o=e=>"function"==typeof e,l=e=>"string"==typeof e,u=e=>"boolean"==typeof e,s=e=>c(e)&&o(e.getTime),i=e=>"number"==typeof e,c=e=>null!==e&&"object"==typeof e,v=e=>c(e)&&!!e.tagName;function d(e){return c(e)&&o(e.then)&&o(e.catch)}const f=()=>{},m=()=>!1,g={passive:!0};function p(e){return new Promise(t=>{setTimeout(t,e)})}function y(e,t,n){return e<t?t:e>n?n:e}const h="undefined"!=typeof window;function w(e){const n=r(e.currentPage),a=r(e.pageSize),o=t.ref(0),l=r(e.total),u=t.computed({get:()=>o.value,set(e){i(e)&&(o.value=Math.min(e,l.value))}}),s=t.computed({get:()=>n.value,set(e){i(e)&&(n.value=y(e,1,v.value),u.value=(n.value-1)*c.value)}}),c=t.computed({get:()=>a.value,set(e){i(e)&&(a.value=e)}}),v=t.computed(()=>Math.ceil(l.value/c.value));s.value=n.value;return t.watch([l,c],()=>{s.value>v.value&&(s.value=v.value)},{lazy:!0}),{pageSize:c,total:l,currentPage:s,offset:u,lastPage:v,next:()=>++s.value,prev:()=>--s.value,first:()=>s.value=1,last:()=>s.value=v.value}}function b(e,n=!1){if(!e)throw new Error(`[usePromise] argument can't be '${e}'`);if("function"!=typeof e)throw new Error(`[usePromise] expects function, but received ${typeof e}`);const r=t.ref(!1),a=t.ref(null),o=t.ref(null),l=t.ref();return{exec:async(...t)=>{r.value=!0,a.value=null,o.value=null;let s=t&&e.length!==t.length&&t.length>0&&u(t[t.length-1])?t[t.length-1]:n;const i=l.value=e(...t);try{const e=await i;return l.value===i&&(o.value=e),e}catch(e){return l.value===i&&(a.value=e,o.value=null),s?i:void 0}finally{l.value===i&&(r.value=!1)}},result:o,promise:l,loading:r,error:a}}const E=Symbol(""),M=Symbol(""),S=async(e,t,n,r)=>{const a=t[E].value;let o=-1;const l=e.maxRetries||9001,u=e.retryDelay||I;t.retryErrors.value=[],t.isRetrying.value=!1,t.nextRetry.value=void 0;let c=void 0;do{let e=!1,v=null;try{if(++o,v=r?n(...r):n(),d(v)&&(v=await v),t[M].value)return null;e=!0}catch(e){v=null,t.retryErrors.value.push(e)}if(a!==t[E].value)return v;if(e)return t.isRetrying.value=!1,t.nextRetry.value=void 0,v;if(o>=l)return t.isRetrying.value=!1,t.nextRetry.value=void 0,Promise.reject(new Error(`[useRetry] max retries reached ${l}`));t.isRetrying.value=!0;const f=Date.now(),m=u(o),g=d(m)?await m:m;if(!d(m)||g){if(i(g))c=g;else{if(!s(g))throw new Error(`[useRetry] invalid value received from options.retryDelay '${typeof g}'`);c=g.getTime()}c<f?t.nextRetry.value=f+c:(t.nextRetry.value=c,c-=f),c>0&&await p(c)}if(t[M].value)return null;if(a!==t[E].value)return v}while(o<9e3);return null};const I=()=>0;function L(e,t,n){return R(e,t,n)}function R(e,t=50,n={isImmediate:!1}){let r;return function(...a){const o=this,l=n.isImmediate&&void 0===r;void 0!==r&&clearTimeout(r),r=setTimeout((function(){r=void 0,n.isImmediate||e.apply(o,a)}),t),l&&e.apply(o,a)}}function x(e){const n=e&&e.refreshMs||1e3,r=!e||!u(e.sync)||e.sync,a=e&&o(e.timeFn)&&e.timeFn||Date.now;let l=void 0,s=void 0;const i=t.ref(a()),c=()=>{clearInterval(l),clearTimeout(s)},v=h?()=>l=setInterval(()=>i.value=a(),n):f;if(r){const e=1e3-(i.value-1e3*Math.floor(i.value/1e3));s=setTimeout(v,e)}else v();return t.onUnmounted(c),{now:i,remove:c}}function k(e,n,a,o){let l=f;if(e){const u=r(e);l=()=>u.value.removeEventListener(n,a),t.onMounted(()=>u.value.addEventListener(n,a,o)),t.onUnmounted(l)}return l}let $=void 0;let P=void 0,A=void 0;let O=void 0,T=void 0;function C(e,n){const r=h&&"BroadcastChannel"in self,a=t.ref(null),o=t.ref(null),l=t.ref(null),u=t.ref(!1),s=t.ref(!1);let i=f,c=f,v=f;if(r){const r=new BroadcastChannel(e);r.addEventListener("messageerror",e=>{l.value=e,u.value=!0},g),r.addEventListener("message",e=>{o.value=e,a.value=e.data},g),i=e=>r.postMessage(e),c=()=>{r.close(),s.value=!0},v=(e,n)=>{r.addEventListener("message",e,n),t.onUnmounted(()=>r.removeEventListener("message",e))},t.onUnmounted(()=>{n&&n(),c()})}return{supported:r,data:a,messageEvent:o,errorEvent:l,errored:u,isClosed:s,send:i,close:c,addListener:v}}function D(e){const n=!!h&&"matchMedia"in window;let r=void 0,a=void 0,o=f;if(n){r=t.ref(matchMedia(e)),a=t.ref(r.value.matches);const n=e=>{a.value=e.matches};r.value.addEventListener("change",n,{passive:!0});const o=()=>r.value.removeEventListener("change",n);t.onUnmounted(o)}else r=t.ref({}),a=t.ref(!1);return{supported:n,mediaQueryList:r,matches:a,remove:o}}function z(e,n){const{addListener:r,send:a,close:o,supported:l}=C(e,()=>w()),u=Date.now(),s=t.ref(!1),i=t.ref(0),v=t.computed(()=>1!==i.value||s.value),d=t.ref([]),f=t.ref(n);let m=!1,p=void 0;a({type:0});const y=()=>a({type:5,id:u}),w=()=>{0!==d.value.length&&(s.value&&a({type:3,mind:1,id:Math.min(...d.value)}),a({type:4,id:u}))};return r(e=>{switch(e.data.type){case 0:a({type:2,value:f.value,mind:i.value});break;case 4:{const t=d.value.indexOf(e.data.id);t>=0&&d.value.splice(t,1),p===e.data.id&&d.value.length>0&&a({type:3,mind:1,id:Math.min(u,...d.value)});break}case 2:m=!0,f.value=e.data.value,i.value=e.data.mind;break;case 3:i.value=e.data.mind,p=1===e.data.mind&&e.data.id||void 0,s.value=p===u,s.value&&(d.value=[],y());break;case 5:d.value=[e.data.id],a({type:6,id:u});break;case 6:d.value.push(e.data.id)}},g),y(),t.watch(f,(e,t)=>{if(m)m=!1;else{if(1===i.value&&!1===s.value)return m=!0,void(f.value=t);a({type:2,mind:i.value,value:c(e)?{...e}:e}),m=!1}},{deep:!0,lazy:!0}),h&&window.addEventListener("unload",w,g),t.onUnmounted(()=>{w(),o()}),{supported:l,id:u,data:f,master:s,mind:i,editable:v,targets:d,ping:y,setMind:e=>{switch(e){case 1:s.value=!0;break;case 0:s.value=!1}i.value=e,a({type:3,id:u,mind:i.value})},addListener:r}}function H(e,t){return e instanceof DOMException&&(22===e.code||1014===e.code||"QuotaExceededError"===e.name||"NS_ERROR_DOM_QUOTA_REACHED"===e.name)&&(t&&0!==t.length||!1)}function U(e){try{if(!e)return!1;const t=":$";return e.setItem(t,t),e.removeItem(t),!0}catch(t){return H(t,e)}}function N(e,t){try{return e.parse(t)}catch{return t}}let j=void 0;function W(e,n=JSON,a=10){const o=h?window[e]:void 0,u=U(o);j||(j=new Map,h&&window.addEventListener("storage",e=>{if(e.newValue===e.oldValue)return;let t=j.get("localStorage");t=e.storageArea===window.localStorage?j.get("localStorage"):j.get("sessionStorage"),t&&Object.keys(t.$syncKeys).length>0&&(null===e.key?t.clear():t.$syncKeys[e.key]&&(null===e.newValue?t.removeItem(e.key):t.updateItem(e.key,e.newValue)))}));let s,i=j.get(e);return u&&o?i?s=i.$quotaError:(s=t.ref(!1),i={$refMap:new Map,$watchHandlers:new Map,$syncKeys:{},$quotaError:s,key:o.key,length:o.length,setSync(e,t){t?this.$syncKeys[e]=!0:delete this.$syncKeys[e]},clear(){this.$refMap.forEach((e,t)=>this.removeItem(t))},removeItem(e){const t=this.$refMap.get(e);t&&(t.value=void 0);const n=this.$watchHandlers.get(e);n&&n(),delete this.$syncKeys[e],this.$refMap.delete(e),o.removeItem(e)},getItem(e){let t=this.$refMap.get(e);if(t)return t;const r=o.getItem(e);return r?this.setItem(e,N(n,r)):null},setItem(e,u){const i=r(u);this.$refMap.set(e,i);const c=(e,t)=>{try{const r=l(t)?t:n.stringify(t);o.setItem(e,r)}catch(e){s.value=H(e,o)}};c(e,u);const v=t.watch(i,R(t=>{c(e,t)},a),{lazy:!0,deep:!0});return this.$watchHandlers.set(e,v),i},updateItem(e,t){let r=this.$refMap.get(e);r&&(r.value=N(n,t))}},j.set(e,i)):(s=t.ref(!1),i={}),{supported:u,quotaError:s,store:i,remove:()=>j.delete(e)}}function F(e,n){const{supported:r,store:a}=W("localStorage");let o=f,l=f,u=f,s=void 0;return r&&a?(u=t=>a.setSync(e,t),o=()=>a.removeItem(e),l=()=>a.clear(),s=a.getItem(e),s||(s=a.setItem(e,n))):s=t.ref(n),{supported:r,storage:s,clear:l,remove:o,setSync:u}}function V(e,n){const{supported:r,store:a}=W("sessionStorage");let o=f,l=f,u=m,s=void 0;return r&&a?(o=()=>a.removeItem(e),l=()=>a.clear(),s=a.getItem(e),s||(s=a.setItem(e,n))):s=t.ref(n),{supported:r,storage:s,clear:l,remove:o,setSync:u}}let _=void 0;return e.FALSE_OP=m,e.NO_OP=f,e.PASSIVE_EV=g,e.debounce=R,e.exponentialDelay=e=>{const t=100*Math.pow(2,e);return t+.2*t*Math.random()},e.isArray=a,e.isBoolean=u,e.isClient=h,e.isDate=s,e.isElement=v,e.isFunction=o,e.isNumber=i,e.isObject=c,e.isPromise=d,e.isString=l,e.isSymbol=e=>"symbol"==typeof e,e.minMax=y,e.noDelay=I,e.promisedTimeout=p,e.refShared=function(e,n){const r=t.getCurrentInstance(),a=n||r.$vnode.tag,{data:o,supported:l}=z(a,e);return o},e.storageAvailable=U,e.unwrap=n,e.useArrayPagination=function(e,n){const a=r(e),o=w({currentPage:1,pageSize:10,...n,total:t.computed(()=>a.value.length)}),l=t.computed(()=>{const e=a.value;return Array.isArray(e)?e.slice(o.offset.value,o.offset.value+o.pageSize.value):[]});return{...o,result:l}},e.useBreakpoint=function(e){const n={},r=new Map,a=t.ref();let o=[];const l=[];for(const a in e){const u=e[a];if(i(u)){const e=t.ref(!1);n[a]=e,r.set(u,{name:a,valid:e}),o.push(u)}else{const{matches:e,remove:t}=D(u);n[a]=e,l.push(t)}}o=o.sort((e,t)=>t-e);const u=h?()=>{const e=window.innerWidth;let t=void 0;for(let n=0;n<o.length;n++){const a=o[n],l=r.get(a);l.valid.value=e>=a,e>=a&&void 0===t&&(t=l.name)}a.value=t}:f,s=L(u,10),c=h?()=>window.removeEventListener("resize",s):f;return t.onMounted(()=>{u(),window.addEventListener("resize",s,{passive:!0})}),t.onUnmounted(()=>{c(),l.forEach(e=>e())}),{...n,remove:c,current:a}},e.useBroadcastChannel=C,e.useCancellablePromise=function(e,n=!1){const r=t.ref(!1);let a=void 0;return{...b((...t)=>{return n=e(...t),new Promise((e,t)=>{a=e=>{r.value=!0,t(e)},n.then(e).catch(t)});var n},n),cancel:e=>a(e),cancelled:r}},e.useDateNow=function(e){return x({refreshMs:e&&e.refreshMs||1e3,sync:!e||!u(e.sync)||e.sync,timeFn:Date.now})},e.useDebounce=L,e.useEvent=k,e.useFetch=function(e,n){const r=t.ref(null),a=t.ref(""),o=t.ref(),s=!!e&&(u(e.isJson)||u(e.isJson)),i=t.ref(null),c=!s||!1!==e.isJson,v=!s||!1!==e.parseImmediate,d=t.ref(!1),f=t.ref();let m=void 0;const g=b(async(e,t)=>{m=new AbortController;const l=await fetch(e,{signal:m.signal,...n,...t});if(l){const e=[c?l.clone().json().then(e=>r.value=e).catch(e=>{r.value=null,i.value=e}):Promise.resolve(),l.clone().blob().then(e=>{o.value=e}),l.clone().text().then(e=>{a.value=e})];v&&await Promise.all(e)}return l}),p=t.computed(()=>g.result.value&&g.result.value.status||null),y=t.computed(()=>g.result.value&&g.result.value.statusText||null);return e&&(!l(e)&&s||g.exec(e,void 0,!1)),{...g,cancel:e=>{m&&(m.abort(),d.value=!0,f.value=e)},isCancelled:d,cancelledMessage:f,text:a,blob:o,json:r,jsonError:i,status:p,statusText:y}},e.useGeolocation=function(e){const n=h&&!!navigator.geolocation,r=t.ref(e?!1===e.immediate:void 0),a=t.ref(null),o=t.ref(null),l=t.ref(null),s=t.ref(e&&e.enableHighAccuracy||null);let i=f;if(n){const n=e=>{o.value=e.timestamp,l.value=e.coords,a.value=null},c=e=>{o.value=Date.now(),l.value=null,a.value=e},v=()=>!0!==r.value&&f&&navigator.geolocation.clearWatch(f);let d=()=>navigator.geolocation.getCurrentPosition(n,c,e);i=r.value?()=>{r.value?r.value=!1:d()}:d;let f=0;t.onMounted(()=>t.watch([s,r],t=>{v();const r=u(t[0])?t[0]:e?e.enableHighAccuracy:void 0;f=navigator.geolocation.watchPosition(n,c,e?{...e,enableHighAccuracy:r}:{enableHighAccuracy:r})},{lazy:r.value})),t.onUnmounted(v)}return{supported:n,refresh:i,error:a,timestamp:o,coords:l,highAccuracy:s}},e.useIntersectionObserver=function(e,a){const o=h&&"IntersectionObserver"in window,l=e?r(e):void 0,u=!l||!v(l.value)&&l.value?void 0:l,s=t.computed(()=>a?n(a):u?void 0:n(e)),i=t.ref(u&&u.value?[u.value]:[]),c=t.computed(()=>i.value.length>0&&i.value.every(e=>e.isIntersecting)),d=e=>{i.value=e};let m=t.ref();o&&t.watch(s,e=>{m.value&&m.value.disconnect();const t=e&&e&&{root:n(e.root),rootMargin:n(e.rootMargin),threshold:n(e.threshold)}||void 0;m.value=new IntersectionObserver(d,t),i.value.map(e=>e.target).forEach(m.value.observe)},{deep:!0});const g=o?e=>{const t=n(e);m.value.observe(t)}:f,p=o?e=>{const t=n(e);m.value.unobserve(t)}:f,y=()=>m.value.disconnect();return u&&(u.value||t.onMounted(()=>{u.value&&g(u)}),t.onUnmounted(()=>{y()})),{supported:o,elements:i,observe:g,unobserve:p,disconnect:y,isIntersecting:c}},e.useLanguage=function(){if(O||(O=h?t.ref(navigator.language):t.ref("")),!T)if(h){T=t.ref(navigator.languages);const e=()=>{O.value=navigator.language,T.value=navigator.languages};window.addEventListener("languagechange",e,{passive:!0})}else T=t.ref([]);return{language:O,languages:T}},e.useLocalStorage=F,e.useMatchMedia=D,e.useNetworkInformation=function(){const e=!!h&&(navigator.connection||navigator.mozConnection||navigator.webkitConnection),n=!!e,r=t.ref(0),a=t.ref(0),o=t.ref("unknown"),l=t.ref(0),u=t.ref(!1),s=t.ref("none");let i=f,c=f;return e&&(i=()=>{r.value=e.downlink,a.value=e.downlinkMax,o.value=e.effectiveType,l.value=e.rtt,u.value=e.saveData,s.value=e.type},c=k(e,"change",i,{passive:!0}),i()),{supported:n,downlink:r,downlinkMax:a,effectiveType:o,rtt:l,saveData:u,type:s,remove:c}},e.useNow=x,e.useOnMouseMove=function(e,n,r){const a=t.ref(0),o=t.ref(0);let l=e=>{a.value=e.x,o.value=e.y};const[u,s]=i(n)?[void 0,n]:[n,r];s&&(l=L(l,r));const c=k(e,"mousemove",l,u);return{mouseX:a,mouseY:o,remove:c}},e.useOnResize=function(e,n,a){const o=r(e),l=t.ref(o.value&&o.value.clientHeight),u=t.ref(o.value&&o.value.clientWidth);let s=()=>{l.value=o.value.clientHeight,u.value=o.value.clientWidth};const[c,v]=i(n)?[void 0,n]:[n,a];v&&(s=L(s,a));const d=h?k(window,"resize",s,c||{passive:!0}):f;return{height:l,width:u,remove:d}},e.useOnScroll=function(e,n,a){const o=e=>!(i(e)||u(e)||!v(e)&&!t.isRef(e)||!e),l=o(e)?r(e):t.ref(h&&window||void 0),s=o(e)?l:t.ref(h&&window.document.scrollingElement||void 0),c=t.ref(s.value&&s.value.scrollTop||0),d=t.ref(s.value&&s.value.scrollLeft||0);let f=()=>{c.value=s.value.scrollTop,d.value=s.value.scrollLeft};const[m,p]=i(e)||!e?[g,e]:i(n)?[g,n]:[n,a];p&&(f=L(f,a));const y=k(l,"scroll",f,m);return{scrollTop:c,scrollLeft:d,scrollTo:(...e)=>s.value.scrollTo.apply(s.value,e),remove:y}},e.useOnline=function(){const e=h&&"onLine"in navigator;return e||($=t.ref(!1)),$||($=t.ref(navigator.onLine),window.addEventListener("offline",()=>$.value=!1,{passive:!0}),window.addEventListener("online",()=>$.value=!0,{passive:!0})),{supported:e,online:$}},e.usePageVisibility=function(){return A||(A=t.ref(h&&document.hidden)),P||(h?(P=t.ref(document.visibilityState),document.addEventListener("visibilitychange",()=>{P.value=document.visibilityState,A.value=document.hidden},{passive:!0})):P=t.ref(!1)),{visibility:P,hidden:A}},e.usePagination=w,e.usePerformanceNow=function(e){return x({refreshMs:e&&e.refreshMs||1e3,sync:!e||!u(e.sync)||e.sync,timeFn:()=>performance.now()})},e.usePromise=b,e.useRetry=function(e,n){const r=!e||o(e)?{}:e,a=o(e)?e:n;if(!o(e)&&!c(e))throw new Error("[useRetry] options needs to be 'object'");if(a&&!o(a))throw new Error("[useRetry] factory needs to be 'function'");const l=t.ref(!1),u=t.ref(),s=t.ref([]),i={value:!1},v={isRetrying:l,retryCount:t.computed(()=>s.value.length),nextRetry:u,retryErrors:s,[E]:{value:0},[M]:i},d=a?(...e)=>(++v[E].value,S(r,v,a,e)):e=>(++v[E].value,S(r,v,e,void 0));return{...v,cancel:()=>{v.isRetrying.value=!1,v.retryErrors.value.push(new Error("[useRetry] cancelled")),v.nextRetry.value=void 0,i.value=!0},exec:d}},e.useSessionStorage=V,e.useSharedRef=z,e.useStorage=function(e,t){return void 0===_&&(_=W("localStorage").supported),_?F(e,t):V(e,t)},e.useWebSocket=function(e,n){const r=h&&"WebSocket"in window;let a=null;const o=t.ref(null),l=t.ref(),u=t.ref(null),s=t.ref(!1),i=t.ref(!1),c=t.ref(!1);let v=f,d=f;return r&&(a=new WebSocket(e,n),a.addEventListener("message",e=>{o.value=e,u.value=e.data}),a.addEventListener("error",e=>{l.value=e,c.value=!0}),a.addEventListener("close",()=>{s.value=!1,i.value=!0}),a.addEventListener("open",()=>{s.value=!0,i.value=!1}),v=e=>a.send(e),d=(e,t)=>{a.close(e,t)}),{supported:r,ws:a,send:v,close:d,messageEvent:o,errorEvent:l,data:u,isOpen:s,isClosed:i,errored:c}},e.useWebStorage=W,e.wrap=r,e}({},vueCompositionApi); |
{ | ||
"name": "vue-composable", | ||
"version": "1.0.0-dev.8", | ||
"version": "1.0.0-dev.9", | ||
"description": "vue-composable", | ||
@@ -45,5 +45,5 @@ "main": "index.js", | ||
"dependencies": { | ||
"@vue-composable/core": "1.0.0-dev.8", | ||
"@vue-composable/web": "1.0.0-dev.8" | ||
"@vue-composable/core": "1.0.0-dev.9", | ||
"@vue-composable/web": "1.0.0-dev.9" | ||
} | ||
} |
@@ -6,2 +6,3 @@ # vue-composable | ||
[](https://badge.fury.io/js/vue-composable) | ||
[](https://bundlephobia.com/result?p=vue-composable) | ||
@@ -18,3 +19,3 @@ # vue-next | ||
This library aim is to be one stop shop for many real-world composable functions, with aggressive tree-shaking to keep it light on your end code ([12kb gzip](https://app.circleci.com/jobs/github/pikax/vue-composable/318/parallel-runs/0/steps/0-105)). | ||
This library aim is to be one stop shop for many real-world composable functions, with aggressive tree-shaking to keep it light on your end code. | ||
@@ -21,0 +22,0 @@ [vue-composable](https://www.npmjs.com/package/vue-composable) is composed by two package [@vue-composable/core](./packages/core) and [@vue-composable/web](./packages/web). |
78789
4.43%1506
4.87%174
0.58%+ Added
+ Added
- Removed
- Removed