123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446 |
- import {
- and,
- assert,
- biSyncRef,
- bypassFilter,
- clamp,
- containsProp,
- controlledComputed,
- controlledRef,
- createEventHook,
- createFilterWrapper,
- createGlobalState,
- createSharedComposable,
- createSingletonPromise,
- debounceFilter,
- debouncedWatch,
- eagerComputed,
- extendRef,
- get,
- identity,
- ignorableWatch,
- increaseWithUnit,
- invoke,
- isBoolean,
- isClient,
- isDef,
- isDefined,
- isFunction,
- isNumber,
- isObject,
- isString,
- isWindow,
- makeDestructurable,
- noop,
- not,
- now,
- objectPick,
- or,
- pausableFilter,
- pausableWatch,
- promiseTimeout,
- rand,
- reactify,
- reactifyObject,
- reactivePick,
- refDefault,
- set,
- syncRef,
- throttleFilter,
- throttledWatch,
- timestamp,
- toReactive,
- toRefs,
- tryOnBeforeUnmount,
- tryOnMounted,
- tryOnScopeDispose,
- tryOnUnmounted,
- until,
- useCounter,
- useDebounce,
- useDebounceFn,
- useInterval,
- useIntervalFn,
- useLastChanged,
- useThrottle,
- useThrottleFn,
- useTimeout,
- useTimeoutFn,
- useToggle,
- watchAtMost,
- watchOnce,
- watchWithFilter,
- whenever
- } from "./chunk-22ATY35G.js";
- import {
- __async,
- init_define_APP_INFO
- } from "./chunk-XY75H3MP.js";
- // dep:@vueuse_core
- init_define_APP_INFO();
- // node_modules/@vueuse/core/index.mjs
- init_define_APP_INFO();
- import { isRef, ref, watchEffect, computed, customRef, unref, inject, watch, getCurrentInstance, onMounted, onUpdated, shallowRef, markRaw, getCurrentScope, reactive, readonly, onBeforeUpdate, isVue2 } from "vue-demi";
- function asyncComputed(evaluationCallback, initialState, optionsOrRef) {
- let options;
- if (isRef(optionsOrRef)) {
- options = {
- evaluating: optionsOrRef
- };
- } else {
- options = optionsOrRef || {};
- }
- const {
- lazy = false,
- evaluating = void 0,
- onError = noop
- } = options;
- const started = ref(!lazy);
- const current = ref(initialState);
- let counter = 0;
- watchEffect((onInvalidate) => __async(this, null, function* () {
- if (!started.value)
- return;
- counter++;
- const counterAtBeginning = counter;
- let hasFinished = false;
- try {
- if (evaluating) {
- Promise.resolve().then(() => {
- evaluating.value = true;
- });
- }
- const result = yield evaluationCallback((cancelCallback) => {
- onInvalidate(() => {
- if (evaluating)
- evaluating.value = false;
- if (!hasFinished)
- cancelCallback();
- });
- });
- if (counterAtBeginning === counter)
- current.value = result;
- } catch (e) {
- onError(e);
- } finally {
- if (evaluating)
- evaluating.value = false;
- hasFinished = true;
- }
- }));
- if (lazy) {
- return computed(() => {
- started.value = true;
- return current.value;
- });
- } else {
- return current;
- }
- }
- function autoResetRef(defaultValue, afterMs = 1e4) {
- return customRef((track, trigger) => {
- let value = defaultValue;
- let timer;
- const resetAfter = () => setTimeout(() => {
- value = defaultValue;
- trigger();
- }, unref(afterMs));
- return {
- get() {
- track();
- return value;
- },
- set(newValue) {
- value = newValue;
- trigger();
- clearTimeout(timer);
- timer = resetAfter();
- }
- };
- });
- }
- function computedInject(key, options, defaultSource, treatDefaultAsFactory) {
- let source = inject(key);
- if (defaultSource)
- source = inject(key, defaultSource);
- if (treatDefaultAsFactory)
- source = inject(key, defaultSource, treatDefaultAsFactory);
- if (typeof options === "function") {
- return computed((ctx) => options(source, ctx));
- } else {
- return computed({
- get: (ctx) => options.get(source, ctx),
- set: options.set
- });
- }
- }
- var createUnrefFn = (fn) => {
- return function(...args) {
- return fn.apply(this, args.map((i) => unref(i)));
- };
- };
- function unrefElement(elRef) {
- var _a;
- const plain = unref(elRef);
- return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;
- }
- var defaultWindow = isClient ? window : void 0;
- var defaultDocument = isClient ? window.document : void 0;
- var defaultNavigator = isClient ? window.navigator : void 0;
- function useEventListener(...args) {
- let target;
- let event;
- let listener;
- let options;
- if (isString(args[0])) {
- [event, listener, options] = args;
- target = defaultWindow;
- } else {
- [target, event, listener, options] = args;
- }
- if (!target)
- return noop;
- let cleanup = noop;
- const stopWatch = watch(() => unref(target), (el) => {
- cleanup();
- if (!el)
- return;
- el.addEventListener(event, listener, options);
- cleanup = () => {
- el.removeEventListener(event, listener, options);
- cleanup = noop;
- };
- }, { immediate: true, flush: "post" });
- const stop = () => {
- stopWatch();
- cleanup();
- };
- tryOnScopeDispose(stop);
- return stop;
- }
- function onClickOutside(target, handler, options = {}) {
- const { window: window2 = defaultWindow, event = "pointerdown" } = options;
- if (!window2)
- return;
- const listener = (event2) => {
- const el = unrefElement(target);
- if (!el)
- return;
- if (el === event2.target || event2.composedPath().includes(el))
- return;
- handler(event2);
- };
- return useEventListener(window2, event, listener, { passive: true });
- }
- var __defProp$c = Object.defineProperty;
- var __defProps$6 = Object.defineProperties;
- var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors;
- var __getOwnPropSymbols$e = Object.getOwnPropertySymbols;
- var __hasOwnProp$e = Object.prototype.hasOwnProperty;
- var __propIsEnum$e = Object.prototype.propertyIsEnumerable;
- var __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
- var __spreadValues$c = (a, b) => {
- for (var prop in b || (b = {}))
- if (__hasOwnProp$e.call(b, prop))
- __defNormalProp$c(a, prop, b[prop]);
- if (__getOwnPropSymbols$e)
- for (var prop of __getOwnPropSymbols$e(b)) {
- if (__propIsEnum$e.call(b, prop))
- __defNormalProp$c(a, prop, b[prop]);
- }
- return a;
- };
- var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b));
- var createKeyPredicate = (keyFilter) => {
- if (typeof keyFilter === "function")
- return keyFilter;
- else if (typeof keyFilter === "string")
- return (event) => event.key === keyFilter;
- else if (Array.isArray(keyFilter))
- return (event) => keyFilter.includes(event.key);
- else if (keyFilter)
- return () => true;
- else
- return () => false;
- };
- function onKeyStroke(key, handler, options = {}) {
- const { target = defaultWindow, eventName = "keydown", passive = false } = options;
- const predicate = createKeyPredicate(key);
- const listener = (e) => {
- if (predicate(e))
- handler(e);
- };
- return useEventListener(target, eventName, listener, passive);
- }
- function onKeyDown(key, handler, options = {}) {
- return onKeyStroke(key, handler, __spreadProps$6(__spreadValues$c({}, options), { eventName: "keydown" }));
- }
- function onKeyPressed(key, handler, options = {}) {
- return onKeyStroke(key, handler, __spreadProps$6(__spreadValues$c({}, options), { eventName: "keypress" }));
- }
- function onKeyUp(key, handler, options = {}) {
- return onKeyStroke(key, handler, __spreadProps$6(__spreadValues$c({}, options), { eventName: "keyup" }));
- }
- var isFocusedElementEditable = () => {
- const { activeElement, body } = document;
- if (!activeElement)
- return false;
- if (activeElement === body)
- return false;
- switch (activeElement.tagName) {
- case "INPUT":
- case "TEXTAREA":
- return true;
- }
- return activeElement.hasAttribute("contenteditable");
- };
- var isTypedCharValid = ({
- keyCode,
- metaKey,
- ctrlKey,
- altKey
- }) => {
- if (metaKey || ctrlKey || altKey)
- return false;
- if (keyCode >= 48 && keyCode <= 57 || keyCode >= 96 && keyCode <= 105)
- return true;
- if (keyCode >= 65 && keyCode <= 90)
- return true;
- return false;
- };
- function onStartTyping(callback, options = {}) {
- const { document: document2 = defaultDocument } = options;
- const keydown = (event) => {
- !isFocusedElementEditable() && isTypedCharValid(event) && callback(event);
- };
- if (document2)
- useEventListener(document2, "keydown", keydown, { passive: true });
- }
- function templateRef(key, initialValue = null) {
- const instance = getCurrentInstance();
- let _trigger = () => {
- };
- const element = customRef((track, trigger) => {
- _trigger = trigger;
- return {
- get() {
- var _a, _b;
- track();
- return (_b = (_a = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a.$refs[key]) != null ? _b : initialValue;
- },
- set() {
- }
- };
- });
- onMounted(_trigger);
- onUpdated(_trigger);
- return element;
- }
- function useActiveElement(options = {}) {
- const { window: window2 = defaultWindow } = options;
- const counter = ref(0);
- if (window2) {
- useEventListener(window2, "blur", () => counter.value += 1, true);
- useEventListener(window2, "focus", () => counter.value += 1, true);
- }
- return computed(() => {
- counter.value;
- return window2 == null ? void 0 : window2.document.activeElement;
- });
- }
- function useAsyncState(promise, initialState, options = {}) {
- const {
- immediate = true,
- delay = 0,
- onError = noop,
- resetOnExecute = true
- } = options;
- const state = shallowRef(initialState);
- const isReady = ref(false);
- const error = ref(void 0);
- function execute(delay2 = 0, ...args) {
- return __async(this, null, function* () {
- if (resetOnExecute)
- state.value = initialState;
- error.value = void 0;
- isReady.value = false;
- if (delay2 > 0)
- yield promiseTimeout(delay2);
- const _promise = typeof promise === "function" ? promise(...args) : promise;
- try {
- const data = yield _promise;
- state.value = data;
- isReady.value = true;
- } catch (e) {
- error.value = e;
- onError(e);
- }
- return state.value;
- });
- }
- if (immediate)
- execute(delay);
- return {
- state,
- isReady,
- error,
- execute
- };
- }
- function useBase64(target, options) {
- const base64 = ref("");
- const promise = ref();
- function execute() {
- promise.value = new Promise((resolve, reject) => {
- try {
- const _target = unref(target);
- if (_target === void 0 || _target === null) {
- resolve("");
- } else if (typeof _target === "string") {
- resolve(blobToBase64(new Blob([_target], { type: "text/plain" })));
- } else if (_target instanceof Blob) {
- resolve(blobToBase64(_target));
- } else if (_target instanceof ArrayBuffer) {
- resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target))));
- } else if (_target instanceof HTMLCanvasElement) {
- resolve(_target.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));
- } else if (_target instanceof HTMLImageElement) {
- const img = _target.cloneNode(false);
- img.crossOrigin = "Anonymous";
- imgLoaded(img).then(() => {
- const canvas = document.createElement("canvas");
- const ctx = canvas.getContext("2d");
- canvas.width = img.width;
- canvas.height = img.height;
- ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
- resolve(canvas.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));
- }).catch(reject);
- } else {
- reject(new Error("target is unsupported types"));
- }
- } catch (error) {
- reject(error);
- }
- });
- promise.value.then((res) => base64.value = res);
- return promise.value;
- }
- watch(target, execute, { immediate: true });
- return {
- base64,
- promise,
- execute
- };
- }
- function imgLoaded(img) {
- return new Promise((resolve, reject) => {
- if (!img.complete) {
- img.onload = () => {
- resolve();
- };
- img.onerror = reject;
- } else {
- resolve();
- }
- });
- }
- function blobToBase64(blob) {
- return new Promise((resolve, reject) => {
- const fr = new FileReader();
- fr.onload = (e) => {
- resolve(e.target.result);
- };
- fr.onerror = reject;
- fr.readAsDataURL(blob);
- });
- }
- function useBattery({ navigator = defaultNavigator } = {}) {
- const events2 = ["chargingchange", "chargingtimechange", "dischargingtimechange", "levelchange"];
- const isSupported = navigator && "getBattery" in navigator;
- const charging = ref(false);
- const chargingTime = ref(0);
- const dischargingTime = ref(0);
- const level = ref(1);
- let battery;
- function updateBatteryInfo() {
- charging.value = this.charging;
- chargingTime.value = this.chargingTime || 0;
- dischargingTime.value = this.dischargingTime || 0;
- level.value = this.level;
- }
- if (isSupported) {
- navigator.getBattery().then((_battery) => {
- battery = _battery;
- updateBatteryInfo.call(battery);
- for (const event of events2)
- useEventListener(battery, event, updateBatteryInfo, { passive: true });
- });
- }
- return {
- isSupported,
- charging,
- chargingTime,
- dischargingTime,
- level
- };
- }
- function useMediaQuery(query, options = {}) {
- const { window: window2 = defaultWindow } = options;
- if (!window2)
- return ref(false);
- const mediaQuery = window2.matchMedia(query);
- const matches = ref(mediaQuery.matches);
- const handler = (event) => {
- matches.value = event.matches;
- };
- if ("addEventListener" in mediaQuery)
- mediaQuery.addEventListener("change", handler);
- else
- mediaQuery.addListener(handler);
- tryOnScopeDispose(() => {
- if ("removeEventListener" in mediaQuery)
- mediaQuery.removeEventListener("change", handler);
- else
- mediaQuery.removeListener(handler);
- });
- return matches;
- }
- var breakpointsTailwind = {
- "sm": 640,
- "md": 768,
- "lg": 1024,
- "xl": 1280,
- "2xl": 1536
- };
- var breakpointsBootstrapV5 = {
- sm: 576,
- md: 768,
- lg: 992,
- xl: 1200,
- xxl: 1400
- };
- var breakpointsVuetify = {
- xs: 600,
- sm: 960,
- md: 1264,
- lg: 1904
- };
- var breakpointsAntDesign = {
- xs: 480,
- sm: 576,
- md: 768,
- lg: 992,
- xl: 1200,
- xxl: 1600
- };
- var breakpointsQuasar = {
- xs: 600,
- sm: 1024,
- md: 1440,
- lg: 1920
- };
- var breakpointsSematic = {
- mobileS: 320,
- mobileM: 375,
- mobileL: 425,
- tablet: 768,
- laptop: 1024,
- laptopL: 1440,
- desktop4K: 2560
- };
- var __defProp$b = Object.defineProperty;
- var __getOwnPropSymbols$d = Object.getOwnPropertySymbols;
- var __hasOwnProp$d = Object.prototype.hasOwnProperty;
- var __propIsEnum$d = Object.prototype.propertyIsEnumerable;
- var __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
- var __spreadValues$b = (a, b) => {
- for (var prop in b || (b = {}))
- if (__hasOwnProp$d.call(b, prop))
- __defNormalProp$b(a, prop, b[prop]);
- if (__getOwnPropSymbols$d)
- for (var prop of __getOwnPropSymbols$d(b)) {
- if (__propIsEnum$d.call(b, prop))
- __defNormalProp$b(a, prop, b[prop]);
- }
- return a;
- };
- function useBreakpoints(breakpoints, options = {}) {
- function getValue(k, delta) {
- let v = breakpoints[k];
- if (delta != null)
- v = increaseWithUnit(v, delta);
- if (typeof v === "number")
- v = `${v}px`;
- return v;
- }
- const { window: window2 = defaultWindow } = options;
- function match(query) {
- if (!window2)
- return false;
- return window2.matchMedia(query).matches;
- }
- const greater = (k) => {
- return useMediaQuery(`(min-width: ${getValue(k)})`, options);
- };
- const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {
- Object.defineProperty(shortcuts, k, {
- get: () => greater(k),
- enumerable: true,
- configurable: true
- });
- return shortcuts;
- }, {});
- return __spreadValues$b({
- greater,
- smaller(k) {
- return useMediaQuery(`(max-width: ${getValue(k, -0.1)})`, options);
- },
- between(a, b) {
- return useMediaQuery(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`, options);
- },
- isGreater(k) {
- return match(`(min-width: ${getValue(k)})`);
- },
- isSmaller(k) {
- return match(`(max-width: ${getValue(k, -0.1)})`);
- },
- isInBetween(a, b) {
- return match(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`);
- }
- }, shortcutMethods);
- }
- function useBrowserLocation({ window: window2 = defaultWindow } = {}) {
- const buildState = (trigger) => {
- const { state: state2, length } = (window2 == null ? void 0 : window2.history) || {};
- const { hash, host, hostname, href, origin, pathname, port, protocol, search } = (window2 == null ? void 0 : window2.location) || {};
- return {
- trigger,
- state: state2,
- length,
- hash,
- host,
- hostname,
- href,
- origin,
- pathname,
- port,
- protocol,
- search
- };
- };
- const state = ref(buildState("load"));
- if (window2) {
- useEventListener(window2, "popstate", () => state.value = buildState("popstate"), { passive: true });
- useEventListener(window2, "hashchange", () => state.value = buildState("hashchange"), { passive: true });
- }
- return state;
- }
- function useClipboard(options = {}) {
- const {
- navigator = defaultNavigator,
- read = true,
- source,
- copiedDuring = 1500
- } = options;
- const events2 = ["copy", "cut"];
- const isSupported = Boolean(navigator && "clipboard" in navigator);
- const text = ref("");
- const copied = ref(false);
- const timeout = useTimeoutFn(() => copied.value = false, copiedDuring);
- function updateText() {
- navigator.clipboard.readText().then((value) => {
- text.value = value;
- });
- }
- if (isSupported && read) {
- for (const event of events2)
- useEventListener(event, updateText);
- }
- function copy() {
- return __async(this, arguments, function* (value = unref(source)) {
- if (isSupported && value != null) {
- yield navigator.clipboard.writeText(value);
- text.value = value;
- copied.value = true;
- timeout.start();
- }
- });
- }
- return {
- isSupported,
- text,
- copied,
- copy
- };
- }
- function useConfirmDialog(revealed = ref(false)) {
- const confirmHook = createEventHook();
- const cancelHook = createEventHook();
- const revealHook = createEventHook();
- let _resolve = noop;
- const reveal = (data) => {
- revealHook.trigger(data);
- revealed.value = true;
- return new Promise((resolve) => {
- _resolve = resolve;
- });
- };
- const confirm = (data) => {
- revealed.value = false;
- confirmHook.trigger(data);
- _resolve({ data, isCanceled: false });
- };
- const cancel = (data) => {
- revealed.value = false;
- cancelHook.trigger(data);
- _resolve({ data, isCanceled: true });
- };
- return {
- isRevealed: computed(() => revealed.value),
- reveal,
- confirm,
- cancel,
- onReveal: revealHook.on,
- onConfirm: confirmHook.on,
- onCancel: cancelHook.on
- };
- }
- function useCssVar(prop, target, { window: window2 = defaultWindow } = {}) {
- const variable = ref("");
- const elRef = computed(() => {
- var _a;
- return unrefElement(target) || ((_a = window2 == null ? void 0 : window2.document) == null ? void 0 : _a.documentElement);
- });
- watch(elRef, (el) => {
- if (el && window2)
- variable.value = window2.getComputedStyle(el).getPropertyValue(prop);
- }, { immediate: true });
- watch(variable, (val) => {
- var _a;
- if ((_a = elRef.value) == null ? void 0 : _a.style)
- elRef.value.style.setProperty(prop, val);
- });
- return variable;
- }
- var StorageSerializers = {
- boolean: {
- read: (v) => v === "true",
- write: (v) => String(v)
- },
- object: {
- read: (v) => JSON.parse(v),
- write: (v) => JSON.stringify(v)
- },
- number: {
- read: (v) => Number.parseFloat(v),
- write: (v) => String(v)
- },
- any: {
- read: (v) => v,
- write: (v) => String(v)
- },
- string: {
- read: (v) => v,
- write: (v) => String(v)
- },
- map: {
- read: (v) => new Map(JSON.parse(v)),
- write: (v) => JSON.stringify(Array.from(v.entries()))
- },
- set: {
- read: (v) => new Set(JSON.parse(v)),
- write: (v) => JSON.stringify(Array.from(v.entries()))
- }
- };
- function useStorage(key, initialValue, storage = ((_a) => (_a = defaultWindow) == null ? void 0 : _a.localStorage)(), options = {}) {
- var _a2;
- const {
- flush = "pre",
- deep = true,
- listenToStorageChanges = true,
- writeDefaults = true,
- shallow,
- window: window2 = defaultWindow,
- eventFilter,
- onError = (e) => {
- console.error(e);
- }
- } = options;
- const rawInit = unref(initialValue);
- const type = rawInit == null ? "any" : rawInit instanceof Set ? "set" : rawInit instanceof Map ? "map" : typeof rawInit === "boolean" ? "boolean" : typeof rawInit === "string" ? "string" : typeof rawInit === "object" ? "object" : Array.isArray(rawInit) ? "object" : !Number.isNaN(rawInit) ? "number" : "any";
- const data = (shallow ? shallowRef : ref)(initialValue);
- const serializer = (_a2 = options.serializer) != null ? _a2 : StorageSerializers[type];
- function read(event) {
- if (!storage || event && event.key !== key)
- return;
- try {
- const rawValue = event ? event.newValue : storage.getItem(key);
- if (rawValue == null) {
- data.value = rawInit;
- if (writeDefaults && rawInit !== null)
- storage.setItem(key, serializer.write(rawInit));
- } else {
- data.value = serializer.read(rawValue);
- }
- } catch (e) {
- onError(e);
- }
- }
- read();
- if (window2 && listenToStorageChanges)
- useEventListener(window2, "storage", (e) => setTimeout(() => read(e), 0));
- if (storage) {
- watchWithFilter(data, () => {
- try {
- if (data.value == null)
- storage.removeItem(key);
- else
- storage.setItem(key, serializer.write(data.value));
- } catch (e) {
- onError(e);
- }
- }, {
- flush,
- deep,
- eventFilter
- });
- }
- return data;
- }
- function usePreferredDark(options) {
- return useMediaQuery("(prefers-color-scheme: dark)", options);
- }
- function useDark(options = {}) {
- var _a;
- const {
- selector = "html",
- attribute = "class",
- valueDark = "dark",
- valueLight = "",
- window: window2 = defaultWindow,
- storage = (_a = defaultWindow) == null ? void 0 : _a.localStorage,
- storageKey = "vueuse-color-scheme",
- listenToStorageChanges = true
- } = options;
- const preferredDark = usePreferredDark({ window: window2 });
- const store = storageKey == null ? ref("auto") : useStorage(storageKey, "auto", storage, { window: window2, listenToStorageChanges });
- const isDark = computed({
- get() {
- return store.value === "auto" ? preferredDark.value : store.value === "dark";
- },
- set(v) {
- if (v === preferredDark.value)
- store.value = "auto";
- else
- store.value = v ? "dark" : "light";
- }
- });
- const onChanged = options.onChanged || ((v) => {
- const el = window2 == null ? void 0 : window2.document.querySelector(selector);
- if (attribute === "class") {
- el == null ? void 0 : el.classList.toggle(valueDark, v);
- if (valueLight)
- el == null ? void 0 : el.classList.toggle(valueLight, !v);
- } else {
- el == null ? void 0 : el.setAttribute(attribute, v ? valueDark : valueLight);
- }
- });
- watch(isDark, onChanged, { flush: "post" });
- tryOnMounted(() => onChanged(isDark.value));
- return isDark;
- }
- var fnClone = (v) => JSON.parse(JSON.stringify(v));
- var fnBypass = (v) => v;
- var fnSetSource = (source, value) => source.value = value;
- function defaultDump(clone) {
- return clone ? isFunction(clone) ? clone : fnClone : fnBypass;
- }
- function defaultParse(clone) {
- return clone ? isFunction(clone) ? clone : fnClone : fnBypass;
- }
- function useManualRefHistory(source, options = {}) {
- const {
- clone = false,
- dump = defaultDump(clone),
- parse = defaultParse(clone),
- setSource = fnSetSource
- } = options;
- function _createHistoryRecord() {
- return markRaw({
- snapshot: dump(source.value),
- timestamp: timestamp()
- });
- }
- const last = ref(_createHistoryRecord());
- const undoStack = ref([]);
- const redoStack = ref([]);
- const _setSource = (record) => {
- setSource(source, parse(record.snapshot));
- last.value = record;
- };
- const commit = () => {
- undoStack.value.unshift(last.value);
- last.value = _createHistoryRecord();
- if (options.capacity && undoStack.value.length > options.capacity)
- undoStack.value.splice(options.capacity, Infinity);
- if (redoStack.value.length)
- redoStack.value.splice(0, redoStack.value.length);
- };
- const clear = () => {
- undoStack.value.splice(0, undoStack.value.length);
- redoStack.value.splice(0, redoStack.value.length);
- };
- const undo = () => {
- const state = undoStack.value.shift();
- if (state) {
- redoStack.value.unshift(last.value);
- _setSource(state);
- }
- };
- const redo = () => {
- const state = redoStack.value.shift();
- if (state) {
- undoStack.value.unshift(last.value);
- _setSource(state);
- }
- };
- const reset = () => {
- _setSource(last.value);
- };
- const history = computed(() => [last.value, ...undoStack.value]);
- const canUndo = computed(() => undoStack.value.length > 0);
- const canRedo = computed(() => redoStack.value.length > 0);
- return {
- source,
- undoStack,
- redoStack,
- last,
- history,
- canUndo,
- canRedo,
- clear,
- commit,
- reset,
- undo,
- redo
- };
- }
- var __defProp$a = Object.defineProperty;
- var __defProps$5 = Object.defineProperties;
- var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors;
- var __getOwnPropSymbols$c = Object.getOwnPropertySymbols;
- var __hasOwnProp$c = Object.prototype.hasOwnProperty;
- var __propIsEnum$c = Object.prototype.propertyIsEnumerable;
- var __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
- var __spreadValues$a = (a, b) => {
- for (var prop in b || (b = {}))
- if (__hasOwnProp$c.call(b, prop))
- __defNormalProp$a(a, prop, b[prop]);
- if (__getOwnPropSymbols$c)
- for (var prop of __getOwnPropSymbols$c(b)) {
- if (__propIsEnum$c.call(b, prop))
- __defNormalProp$a(a, prop, b[prop]);
- }
- return a;
- };
- var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));
- function useRefHistory(source, options = {}) {
- const {
- deep = false,
- flush = "pre",
- eventFilter
- } = options;
- const {
- eventFilter: composedFilter,
- pause,
- resume: resumeTracking,
- isActive: isTracking
- } = pausableFilter(eventFilter);
- const {
- ignoreUpdates,
- ignorePrevAsyncUpdates,
- stop
- } = ignorableWatch(source, commit, { deep, flush, eventFilter: composedFilter });
- function setSource(source2, value) {
- ignorePrevAsyncUpdates();
- ignoreUpdates(() => {
- source2.value = value;
- });
- }
- const manualHistory = useManualRefHistory(source, __spreadProps$5(__spreadValues$a({}, options), { clone: options.clone || deep, setSource }));
- const { clear, commit: manualCommit } = manualHistory;
- function commit() {
- ignorePrevAsyncUpdates();
- manualCommit();
- }
- function resume(commitNow) {
- resumeTracking();
- if (commitNow)
- commit();
- }
- function batch(fn) {
- let canceled = false;
- const cancel = () => canceled = true;
- ignoreUpdates(() => {
- fn(cancel);
- });
- if (!canceled)
- commit();
- }
- function dispose() {
- stop();
- clear();
- }
- return __spreadProps$5(__spreadValues$a({}, manualHistory), {
- isTracking,
- pause,
- resume,
- commit,
- batch,
- dispose
- });
- }
- var __defProp$9 = Object.defineProperty;
- var __defProps$4 = Object.defineProperties;
- var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors;
- var __getOwnPropSymbols$b = Object.getOwnPropertySymbols;
- var __hasOwnProp$b = Object.prototype.hasOwnProperty;
- var __propIsEnum$b = Object.prototype.propertyIsEnumerable;
- var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
- var __spreadValues$9 = (a, b) => {
- for (var prop in b || (b = {}))
- if (__hasOwnProp$b.call(b, prop))
- __defNormalProp$9(a, prop, b[prop]);
- if (__getOwnPropSymbols$b)
- for (var prop of __getOwnPropSymbols$b(b)) {
- if (__propIsEnum$b.call(b, prop))
- __defNormalProp$9(a, prop, b[prop]);
- }
- return a;
- };
- var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b));
- function useDebouncedRefHistory(source, options = {}) {
- const filter = options.debounce ? debounceFilter(options.debounce) : void 0;
- const history = useRefHistory(source, __spreadProps$4(__spreadValues$9({}, options), { eventFilter: filter }));
- return __spreadValues$9({}, history);
- }
- function useDeviceMotion(options = {}) {
- const {
- window: window2 = defaultWindow,
- eventFilter = bypassFilter
- } = options;
- const acceleration = ref({ x: null, y: null, z: null });
- const rotationRate = ref({ alpha: null, beta: null, gamma: null });
- const interval = ref(0);
- const accelerationIncludingGravity = ref({
- x: null,
- y: null,
- z: null
- });
- if (window2) {
- const onDeviceMotion = createFilterWrapper(eventFilter, (event) => {
- acceleration.value = event.acceleration;
- accelerationIncludingGravity.value = event.accelerationIncludingGravity;
- rotationRate.value = event.rotationRate;
- interval.value = event.interval;
- });
- useEventListener(window2, "devicemotion", onDeviceMotion);
- }
- return {
- acceleration,
- accelerationIncludingGravity,
- rotationRate,
- interval
- };
- }
- function useDeviceOrientation(options = {}) {
- const { window: window2 = defaultWindow } = options;
- const isSupported = Boolean(window2 && "DeviceOrientationEvent" in window2);
- const isAbsolute = ref(false);
- const alpha = ref(null);
- const beta = ref(null);
- const gamma = ref(null);
- if (window2 && isSupported) {
- useEventListener(window2, "deviceorientation", (event) => {
- isAbsolute.value = event.absolute;
- alpha.value = event.alpha;
- beta.value = event.beta;
- gamma.value = event.gamma;
- });
- }
- return {
- isSupported,
- isAbsolute,
- alpha,
- beta,
- gamma
- };
- }
- var DEVICE_PIXEL_RATIO_SCALES = [
- 1,
- 1.325,
- 1.4,
- 1.5,
- 1.8,
- 2,
- 2.4,
- 2.5,
- 2.75,
- 3,
- 3.5,
- 4
- ];
- function useDevicePixelRatio({
- window: window2 = defaultWindow
- } = {}) {
- if (!window2) {
- return {
- pixelRatio: ref(1)
- };
- }
- const pixelRatio = ref(window2.devicePixelRatio);
- const handleDevicePixelRatio = () => {
- pixelRatio.value = window2.devicePixelRatio;
- };
- useEventListener(window2, "resize", handleDevicePixelRatio, { passive: true });
- DEVICE_PIXEL_RATIO_SCALES.forEach((dppx) => {
- const mqlMin = useMediaQuery(`screen and (min-resolution: ${dppx}dppx)`);
- const mqlMax = useMediaQuery(`screen and (max-resolution: ${dppx}dppx)`);
- watch([mqlMin, mqlMax], handleDevicePixelRatio);
- });
- return { pixelRatio };
- }
- function usePermission(permissionDesc, options = {}) {
- const {
- controls = false,
- navigator = defaultNavigator
- } = options;
- const isSupported = Boolean(navigator && "permissions" in navigator);
- let permissionStatus;
- const desc = typeof permissionDesc === "string" ? { name: permissionDesc } : permissionDesc;
- const state = ref();
- const onChange = () => {
- if (permissionStatus)
- state.value = permissionStatus.state;
- };
- const query = createSingletonPromise(() => __async(this, null, function* () {
- if (!isSupported)
- return;
- if (!permissionStatus) {
- try {
- permissionStatus = yield navigator.permissions.query(desc);
- useEventListener(permissionStatus, "change", onChange);
- onChange();
- } catch (e) {
- state.value = "prompt";
- }
- }
- return permissionStatus;
- }));
- query();
- if (controls) {
- return {
- state,
- isSupported,
- query
- };
- } else {
- return state;
- }
- }
- function useDevicesList(options = {}) {
- const {
- navigator = defaultNavigator,
- requestPermissions = false,
- onUpdated: onUpdated2
- } = options;
- const devices = ref([]);
- const videoInputs = computed(() => devices.value.filter((i) => i.kind === "videoinput"));
- const audioInputs = computed(() => devices.value.filter((i) => i.kind === "audioinput"));
- const audioOutputs = computed(() => devices.value.filter((i) => i.kind === "audiooutput"));
- let isSupported = false;
- const permissionGranted = ref(false);
- function update() {
- return __async(this, null, function* () {
- if (!isSupported)
- return;
- devices.value = yield navigator.mediaDevices.enumerateDevices();
- onUpdated2 == null ? void 0 : onUpdated2(devices.value);
- });
- }
- function ensurePermissions() {
- return __async(this, null, function* () {
- if (!isSupported)
- return false;
- if (permissionGranted.value)
- return true;
- const { state, query } = usePermission("camera", { controls: true });
- yield query();
- if (state.value !== "granted") {
- const stream = yield navigator.mediaDevices.getUserMedia({ audio: true, video: true });
- stream.getTracks().forEach((t) => t.stop());
- update();
- permissionGranted.value = true;
- } else {
- permissionGranted.value = true;
- }
- return permissionGranted.value;
- });
- }
- if (navigator) {
- isSupported = Boolean(navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);
- if (isSupported) {
- if (requestPermissions)
- ensurePermissions();
- useEventListener(navigator.mediaDevices, "devicechange", update);
- update();
- }
- }
- return {
- devices,
- ensurePermissions,
- permissionGranted,
- videoInputs,
- audioInputs,
- audioOutputs,
- isSupported
- };
- }
- function useDisplayMedia(options = {}) {
- var _a, _b;
- const enabled = ref((_a = options.enabled) != null ? _a : false);
- const video = options.video;
- const audio = options.audio;
- const { navigator = defaultNavigator } = options;
- const isSupported = Boolean((_b = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _b.getDisplayMedia);
- const constraint = { audio, video };
- const stream = shallowRef();
- function _start() {
- return __async(this, null, function* () {
- if (!isSupported || stream.value)
- return;
- stream.value = yield navigator.mediaDevices.getDisplayMedia(constraint);
- return stream.value;
- });
- }
- function _stop() {
- return __async(this, null, function* () {
- var _a2;
- (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());
- stream.value = void 0;
- });
- }
- function stop() {
- _stop();
- enabled.value = false;
- }
- function start() {
- return __async(this, null, function* () {
- yield _start();
- if (stream.value)
- enabled.value = true;
- return stream.value;
- });
- }
- watch(enabled, (v) => {
- if (v)
- _start();
- else
- _stop();
- }, { immediate: true });
- return {
- isSupported,
- stream,
- start,
- stop,
- enabled
- };
- }
- function useDocumentVisibility({ document: document2 = defaultDocument } = {}) {
- if (!document2)
- return ref("visible");
- const visibility = ref(document2.visibilityState);
- useEventListener(document2, "visibilitychange", () => {
- visibility.value = document2.visibilityState;
- });
- return visibility;
- }
- var __defProp$8 = Object.defineProperty;
- var __defProps$3 = Object.defineProperties;
- var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors;
- var __getOwnPropSymbols$a = Object.getOwnPropertySymbols;
- var __hasOwnProp$a = Object.prototype.hasOwnProperty;
- var __propIsEnum$a = Object.prototype.propertyIsEnumerable;
- var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
- var __spreadValues$8 = (a, b) => {
- for (var prop in b || (b = {}))
- if (__hasOwnProp$a.call(b, prop))
- __defNormalProp$8(a, prop, b[prop]);
- if (__getOwnPropSymbols$a)
- for (var prop of __getOwnPropSymbols$a(b)) {
- if (__propIsEnum$a.call(b, prop))
- __defNormalProp$8(a, prop, b[prop]);
- }
- return a;
- };
- var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b));
- function useDraggable(target, options = {}) {
- var _a, _b;
- const draggingElement = (_a = options.draggingElement) != null ? _a : defaultWindow;
- const position = ref((_b = options.initialValue) != null ? _b : { x: 0, y: 0 });
- const pressedDelta = ref();
- const filterEvent = (e) => {
- if (options.pointerTypes)
- return options.pointerTypes.includes(e.pointerType);
- return true;
- };
- const preventDefault = (e) => {
- if (unref(options.preventDefault))
- e.preventDefault();
- };
- const start = (e) => {
- var _a2;
- if (!filterEvent(e))
- return;
- if (unref(options.exact) && e.target !== unref(target))
- return;
- const rect = unref(target).getBoundingClientRect();
- const pos = {
- x: e.pageX - rect.left,
- y: e.pageY - rect.top
- };
- if (((_a2 = options.onStart) == null ? void 0 : _a2.call(options, pos, e)) === false)
- return;
- pressedDelta.value = pos;
- preventDefault(e);
- };
- const move = (e) => {
- var _a2;
- if (!filterEvent(e))
- return;
- if (!pressedDelta.value)
- return;
- position.value = {
- x: e.pageX - pressedDelta.value.x,
- y: e.pageY - pressedDelta.value.y
- };
- (_a2 = options.onMove) == null ? void 0 : _a2.call(options, position.value, e);
- preventDefault(e);
- };
- const end = (e) => {
- var _a2;
- if (!filterEvent(e))
- return;
- pressedDelta.value = void 0;
- (_a2 = options.onEnd) == null ? void 0 : _a2.call(options, position.value, e);
- preventDefault(e);
- };
- if (isClient) {
- useEventListener(target, "pointerdown", start, true);
- useEventListener(draggingElement, "pointermove", move, true);
- useEventListener(draggingElement, "pointerup", end, true);
- }
- return __spreadProps$3(__spreadValues$8({}, toRefs(position)), {
- position,
- isDragging: computed(() => !!pressedDelta.value),
- style: computed(() => `left:${position.value.x}px;top:${position.value.y}px;`)
- });
- }
- var __getOwnPropSymbols$9 = Object.getOwnPropertySymbols;
- var __hasOwnProp$9 = Object.prototype.hasOwnProperty;
- var __propIsEnum$9 = Object.prototype.propertyIsEnumerable;
- var __objRest$2 = (source, exclude) => {
- var target = {};
- for (var prop in source)
- if (__hasOwnProp$9.call(source, prop) && exclude.indexOf(prop) < 0)
- target[prop] = source[prop];
- if (source != null && __getOwnPropSymbols$9)
- for (var prop of __getOwnPropSymbols$9(source)) {
- if (exclude.indexOf(prop) < 0 && __propIsEnum$9.call(source, prop))
- target[prop] = source[prop];
- }
- return target;
- };
- function useResizeObserver(target, callback, options = {}) {
- const _a = options, { window: window2 = defaultWindow } = _a, observerOptions = __objRest$2(_a, ["window"]);
- let observer;
- const isSupported = window2 && "ResizeObserver" in window2;
- const cleanup = () => {
- if (observer) {
- observer.disconnect();
- observer = void 0;
- }
- };
- const stopWatch = watch(() => unrefElement(target), (el) => {
- cleanup();
- if (isSupported && window2 && el) {
- observer = new window2.ResizeObserver(callback);
- observer.observe(el, observerOptions);
- }
- }, { immediate: true, flush: "post" });
- const stop = () => {
- cleanup();
- stopWatch();
- };
- tryOnScopeDispose(stop);
- return {
- isSupported,
- stop
- };
- }
- function useElementBounding(target, options = {}) {
- const height = ref(0);
- const bottom = ref(0);
- const left = ref(0);
- const right = ref(0);
- const top = ref(0);
- const width = ref(0);
- const x = ref(0);
- const y = ref(0);
- useResizeObserver(target, ([entry]) => {
- height.value = entry.contentRect.height;
- bottom.value = entry.contentRect.bottom;
- left.value = entry.contentRect.left;
- right.value = entry.contentRect.right;
- top.value = entry.contentRect.top;
- width.value = entry.contentRect.width;
- x.value = entry.contentRect.x;
- y.value = entry.contentRect.y;
- }, options);
- return {
- x,
- y,
- top,
- right,
- bottom,
- left,
- width,
- height
- };
- }
- function useElementHover(el) {
- const isHovered = ref(false);
- useEventListener(el, "mouseenter", () => isHovered.value = true);
- useEventListener(el, "mouseleave", () => isHovered.value = false);
- return isHovered;
- }
- function useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {
- const width = ref(initialSize.width);
- const height = ref(initialSize.height);
- useResizeObserver(target, ([entry]) => {
- width.value = entry.contentRect.width;
- height.value = entry.contentRect.height;
- }, options);
- return {
- width,
- height
- };
- }
- function useElementVisibility(element, { window: window2 = defaultWindow, scrollTarget } = {}) {
- const elementIsVisible = ref(false);
- const testBounding = () => {
- if (!window2)
- return;
- const document2 = window2.document;
- if (!element.value) {
- elementIsVisible.value = false;
- } else {
- const rect = element.value.getBoundingClientRect();
- elementIsVisible.value = rect.top <= (window2.innerHeight || document2.documentElement.clientHeight) && rect.left <= (window2.innerWidth || document2.documentElement.clientWidth) && rect.bottom >= 0 && rect.right >= 0;
- }
- };
- tryOnMounted(testBounding);
- if (window2)
- tryOnMounted(() => useEventListener((scrollTarget == null ? void 0 : scrollTarget.value) || window2, "scroll", testBounding, { capture: false, passive: true }));
- return elementIsVisible;
- }
- var events = /* @__PURE__ */ new Map();
- function useEventBus(key) {
- const scope = getCurrentScope();
- function on(listener) {
- const listeners = events.get(key) || [];
- listeners.push(listener);
- events.set(key, listeners);
- const _off = () => off(listener);
- scope == null ? void 0 : scope.cleanups.push(_off);
- return _off;
- }
- function once(listener) {
- function _listener(...args) {
- off(_listener);
- listener(...args);
- }
- return on(_listener);
- }
- function off(listener) {
- const listeners = events.get(key);
- if (!listeners)
- return;
- const index = listeners.indexOf(listener);
- if (index > -1)
- listeners.splice(index, 1);
- if (!listeners.length)
- events.delete(key);
- }
- function reset() {
- events.delete(key);
- }
- function emit(event) {
- var _a;
- (_a = events.get(key)) == null ? void 0 : _a.forEach((v) => v(event));
- }
- return { on, once, off, emit, reset };
- }
- function useEventSource(url, events2 = [], options = {}) {
- const event = ref(null);
- const data = ref(null);
- const status = ref("CONNECTING");
- const eventSource = ref(null);
- const error = ref(null);
- const {
- withCredentials = false
- } = options;
- const close = () => {
- if (eventSource.value) {
- eventSource.value.close();
- eventSource.value = null;
- status.value = "CLOSED";
- }
- };
- const es = new EventSource(url, { withCredentials });
- eventSource.value = es;
- es.onopen = () => {
- status.value = "OPEN";
- error.value = null;
- };
- es.onerror = (e) => {
- status.value = "CLOSED";
- error.value = e;
- };
- es.onmessage = (e) => {
- event.value = null;
- data.value = e.data;
- };
- for (const event_name of events2) {
- useEventListener(es, event_name, (e) => {
- event.value = event_name;
- data.value = e.data || null;
- });
- }
- tryOnScopeDispose(() => {
- close();
- });
- return {
- eventSource,
- event,
- data,
- status,
- error,
- close
- };
- }
- function useEyeDropper() {
- const isSupported = Boolean(window && "EyeDropper" in window);
- const sRGBHex = ref("");
- function open() {
- return __async(this, null, function* () {
- const eyeDropper = new window.EyeDropper();
- const result = yield eyeDropper.open();
- sRGBHex.value = result.sRGBHex;
- return result;
- });
- }
- return { isSupported, sRGBHex, open };
- }
- function useFavicon(newIcon = null, options = {}) {
- const {
- baseUrl = "",
- rel = "icon",
- document: document2 = defaultDocument
- } = options;
- const favicon = isRef(newIcon) ? newIcon : ref(newIcon);
- const applyIcon = (icon) => {
- document2 == null ? void 0 : document2.head.querySelectorAll(`link[rel*="${rel}"]`).forEach((el) => el.href = `${baseUrl}${icon}`);
- };
- watch(favicon, (i, o) => {
- if (isString(i) && i !== o)
- applyIcon(i);
- }, { immediate: true });
- return favicon;
- }
- var __defProp$7 = Object.defineProperty;
- var __defProps$2 = Object.defineProperties;
- var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors;
- var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;
- var __hasOwnProp$8 = Object.prototype.hasOwnProperty;
- var __propIsEnum$8 = Object.prototype.propertyIsEnumerable;
- var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
- var __spreadValues$7 = (a, b) => {
- for (var prop in b || (b = {}))
- if (__hasOwnProp$8.call(b, prop))
- __defNormalProp$7(a, prop, b[prop]);
- if (__getOwnPropSymbols$8)
- for (var prop of __getOwnPropSymbols$8(b)) {
- if (__propIsEnum$8.call(b, prop))
- __defNormalProp$7(a, prop, b[prop]);
- }
- return a;
- };
- var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));
- var payloadMapping = {
- json: "application/json",
- text: "text/plain",
- formData: "multipart/form-data"
- };
- function isFetchOptions(obj) {
- return containsProp(obj, "immediate", "refetch", "initialData", "timeout", "beforeFetch", "afterFetch", "onFetchError");
- }
- function headersToObject(headers) {
- if (headers instanceof Headers)
- return Object.fromEntries([...headers.entries()]);
- return headers;
- }
- function createFetch(config = {}) {
- const _options = config.options || {};
- const _fetchOptions = config.fetchOptions || {};
- function useFactoryFetch(url, ...args) {
- const computedUrl = computed(() => config.baseUrl ? joinPaths(unref(config.baseUrl), unref(url)) : unref(url));
- let options = _options;
- let fetchOptions = _fetchOptions;
- if (args.length > 0) {
- if (isFetchOptions(args[0])) {
- options = __spreadValues$7(__spreadValues$7({}, options), args[0]);
- } else {
- fetchOptions = __spreadProps$2(__spreadValues$7(__spreadValues$7({}, fetchOptions), args[0]), {
- headers: __spreadValues$7(__spreadValues$7({}, headersToObject(fetchOptions.headers) || {}), headersToObject(args[0].headers) || {})
- });
- }
- }
- if (args.length > 1 && isFetchOptions(args[1]))
- options = __spreadValues$7(__spreadValues$7({}, options), args[1]);
- return useFetch(computedUrl, fetchOptions, options);
- }
- return useFactoryFetch;
- }
- function useFetch(url, ...args) {
- var _a;
- const supportsAbort = typeof AbortController === "function";
- let fetchOptions = {};
- let options = { immediate: true, refetch: false, timeout: 0 };
- const config = {
- method: "get",
- type: "text",
- payload: void 0
- };
- if (args.length > 0) {
- if (isFetchOptions(args[0]))
- options = __spreadValues$7(__spreadValues$7({}, options), args[0]);
- else
- fetchOptions = args[0];
- }
- if (args.length > 1) {
- if (isFetchOptions(args[1]))
- options = __spreadValues$7(__spreadValues$7({}, options), args[1]);
- }
- const {
- fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch,
- initialData,
- timeout
- } = options;
- const responseEvent = createEventHook();
- const errorEvent = createEventHook();
- const finallyEvent = createEventHook();
- const isFinished = ref(false);
- const isFetching = ref(false);
- const aborted = ref(false);
- const statusCode = ref(null);
- const response = shallowRef(null);
- const error = ref(null);
- const data = shallowRef(initialData);
- const canAbort = computed(() => supportsAbort && isFetching.value);
- let controller;
- let timer;
- const abort = () => {
- if (supportsAbort && controller)
- controller.abort();
- };
- const loading = (isLoading) => {
- isFetching.value = isLoading;
- isFinished.value = !isLoading;
- };
- if (timeout)
- timer = useTimeoutFn(abort, timeout, { immediate: false });
- const execute = (throwOnFailed = false) => __async(this, null, function* () {
- var _a2;
- loading(true);
- error.value = null;
- statusCode.value = null;
- aborted.value = false;
- controller = void 0;
- if (supportsAbort) {
- controller = new AbortController();
- controller.signal.onabort = () => aborted.value = true;
- fetchOptions = __spreadProps$2(__spreadValues$7({}, fetchOptions), {
- signal: controller.signal
- });
- }
- const defaultFetchOptions = {
- method: config.method,
- headers: {}
- };
- if (config.payload) {
- const headers = headersToObject(defaultFetchOptions.headers);
- if (config.payloadType)
- headers["Content-Type"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType;
- defaultFetchOptions.body = config.payloadType === "json" ? JSON.stringify(unref(config.payload)) : unref(config.payload);
- }
- let isCanceled = false;
- const context = { url: unref(url), options: fetchOptions, cancel: () => {
- isCanceled = true;
- } };
- if (options.beforeFetch)
- Object.assign(context, yield options.beforeFetch(context));
- if (isCanceled || !fetch) {
- loading(false);
- return Promise.resolve();
- }
- let responseData = null;
- if (timer)
- timer.start();
- return new Promise((resolve, reject) => {
- var _a3;
- fetch(context.url, __spreadProps$2(__spreadValues$7(__spreadValues$7({}, defaultFetchOptions), context.options), {
- headers: __spreadValues$7(__spreadValues$7({}, headersToObject(defaultFetchOptions.headers)), headersToObject((_a3 = context.options) == null ? void 0 : _a3.headers))
- })).then((fetchResponse) => __async(this, null, function* () {
- response.value = fetchResponse;
- statusCode.value = fetchResponse.status;
- responseData = yield fetchResponse[config.type]();
- if (options.afterFetch)
- ({ data: responseData } = yield options.afterFetch({ data: responseData, response: fetchResponse }));
- data.value = responseData;
- if (!fetchResponse.ok)
- throw new Error(fetchResponse.statusText);
- responseEvent.trigger(fetchResponse);
- resolve(fetchResponse);
- })).catch((fetchError) => __async(this, null, function* () {
- let errorData = fetchError.message || fetchError.name;
- if (options.onFetchError)
- ({ data: responseData, error: errorData } = yield options.onFetchError({ data: responseData, error: fetchError }));
- data.value = responseData;
- error.value = errorData;
- errorEvent.trigger(fetchError);
- if (throwOnFailed)
- reject(fetchError);
- else
- resolve(void 0);
- })).finally(() => {
- loading(false);
- if (timer)
- timer.stop();
- finallyEvent.trigger(null);
- });
- });
- });
- watch(() => [
- unref(url),
- unref(options.refetch)
- ], () => unref(options.refetch) && execute(), { deep: true });
- const shell = {
- isFinished,
- statusCode,
- response,
- error,
- data,
- isFetching,
- canAbort,
- aborted,
- abort,
- execute,
- onFetchResponse: responseEvent.on,
- onFetchError: errorEvent.on,
- onFetchFinally: finallyEvent.on,
- get: setMethod("get"),
- put: setMethod("put"),
- post: setMethod("post"),
- delete: setMethod("delete"),
- json: setType("json"),
- text: setType("text"),
- blob: setType("blob"),
- arrayBuffer: setType("arrayBuffer"),
- formData: setType("formData")
- };
- function setMethod(method) {
- return (payload, payloadType) => {
- if (!isFetching.value) {
- config.method = method;
- config.payload = payload;
- config.payloadType = payloadType;
- if (isRef(config.payload)) {
- watch(() => [
- unref(config.payload),
- unref(options.refetch)
- ], () => unref(options.refetch) && execute(), { deep: true });
- }
- if (!payloadType && unref(payload) && Object.getPrototypeOf(unref(payload)) === Object.prototype)
- config.payloadType = "json";
- return shell;
- }
- return void 0;
- };
- }
- function setType(type) {
- return () => {
- if (!isFetching.value) {
- config.type = type;
- return shell;
- }
- return void 0;
- };
- }
- if (options.immediate)
- setTimeout(execute, 0);
- return shell;
- }
- function joinPaths(start, end) {
- if (!start.endsWith("/") && !end.startsWith("/"))
- return `${start}/${end}`;
- return `${start}${end}`;
- }
- function useFocus(options = {}) {
- const {
- initialValue = false
- } = options;
- const activeElement = useActiveElement(options);
- const target = computed(() => unrefElement(options.target));
- const focused = computed({
- get() {
- return activeElement.value === target.value;
- },
- set(value) {
- var _a, _b;
- if (!value && focused.value)
- (_a = target.value) == null ? void 0 : _a.blur();
- if (value && !focused.value)
- (_b = target.value) == null ? void 0 : _b.focus();
- }
- });
- watch(target, () => {
- focused.value = initialValue;
- }, { immediate: true, flush: "post" });
- return { focused };
- }
- function useRafFn(fn, options = {}) {
- const {
- immediate = true,
- window: window2 = defaultWindow
- } = options;
- const isActive = ref(false);
- function loop() {
- if (!isActive.value)
- return;
- fn();
- if (window2)
- window2.requestAnimationFrame(loop);
- }
- function resume() {
- if (!isActive.value) {
- isActive.value = true;
- loop();
- }
- }
- function pause() {
- isActive.value = false;
- }
- if (immediate)
- resume();
- tryOnScopeDispose(pause);
- return {
- isActive,
- pause,
- resume
- };
- }
- function useFps(options) {
- var _a;
- const fps = ref(0);
- const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10;
- let last = performance.now();
- let ticks = 0;
- useRafFn(() => {
- ticks += 1;
- if (ticks >= every) {
- const now2 = performance.now();
- const diff = now2 - last;
- fps.value = Math.round(1e3 / (diff / ticks));
- last = now2;
- ticks = 0;
- }
- });
- return fps;
- }
- var functionsMap = [
- [
- "requestFullscreen",
- "exitFullscreen",
- "fullscreenElement",
- "fullscreenEnabled",
- "fullscreenchange",
- "fullscreenerror"
- ],
- [
- "webkitRequestFullscreen",
- "webkitExitFullscreen",
- "webkitFullscreenElement",
- "webkitFullscreenEnabled",
- "webkitfullscreenchange",
- "webkitfullscreenerror"
- ],
- [
- "webkitRequestFullScreen",
- "webkitCancelFullScreen",
- "webkitCurrentFullScreenElement",
- "webkitCancelFullScreen",
- "webkitfullscreenchange",
- "webkitfullscreenerror"
- ],
- [
- "mozRequestFullScreen",
- "mozCancelFullScreen",
- "mozFullScreenElement",
- "mozFullScreenEnabled",
- "mozfullscreenchange",
- "mozfullscreenerror"
- ],
- [
- "msRequestFullscreen",
- "msExitFullscreen",
- "msFullscreenElement",
- "msFullscreenEnabled",
- "MSFullscreenChange",
- "MSFullscreenError"
- ]
- ];
- function useFullscreen(target, options = {}) {
- const { document: document2 = defaultDocument } = options;
- const targetRef = target || (document2 == null ? void 0 : document2.querySelector("html"));
- const isFullscreen = ref(false);
- let isSupported = false;
- let map = functionsMap[0];
- if (!document2) {
- isSupported = false;
- } else {
- for (const m of functionsMap) {
- if (m[1] in document2) {
- map = m;
- isSupported = true;
- break;
- }
- }
- }
- const [REQUEST, EXIT, ELEMENT, , EVENT] = map;
- function exit() {
- return __async(this, null, function* () {
- if (!isSupported)
- return;
- if (document2 == null ? void 0 : document2[ELEMENT])
- yield document2[EXIT]();
- isFullscreen.value = false;
- });
- }
- function enter() {
- return __async(this, null, function* () {
- if (!isSupported)
- return;
- yield exit();
- const target2 = unrefElement(targetRef);
- if (target2) {
- yield target2[REQUEST]();
- isFullscreen.value = true;
- }
- });
- }
- function toggle() {
- return __async(this, null, function* () {
- if (isFullscreen.value)
- yield exit();
- else
- yield enter();
- });
- }
- if (document2) {
- useEventListener(document2, EVENT, () => {
- isFullscreen.value = !!(document2 == null ? void 0 : document2[ELEMENT]);
- }, false);
- }
- return {
- isSupported,
- isFullscreen,
- enter,
- exit,
- toggle
- };
- }
- function useGeolocation(options = {}) {
- const {
- enableHighAccuracy = true,
- maximumAge = 3e4,
- timeout = 27e3,
- navigator = defaultNavigator
- } = options;
- const isSupported = navigator && "geolocation" in navigator;
- const locatedAt = ref(null);
- const error = ref(null);
- const coords = ref({
- accuracy: 0,
- latitude: 0,
- longitude: 0,
- altitude: null,
- altitudeAccuracy: null,
- heading: null,
- speed: null
- });
- function updatePosition(position) {
- locatedAt.value = position.timestamp;
- coords.value = position.coords;
- error.value = null;
- }
- let watcher;
- if (isSupported) {
- watcher = navigator.geolocation.watchPosition(updatePosition, (err) => error.value = err, {
- enableHighAccuracy,
- maximumAge,
- timeout
- });
- }
- tryOnScopeDispose(() => {
- if (watcher && navigator)
- navigator.geolocation.clearWatch(watcher);
- });
- return {
- isSupported,
- coords,
- locatedAt,
- error
- };
- }
- var defaultEvents$1 = ["mousemove", "mousedown", "resize", "keydown", "touchstart", "wheel"];
- var oneMinute = 6e4;
- function useIdle(timeout = oneMinute, options = {}) {
- const {
- initialState = false,
- listenForVisibilityChange = true,
- events: events2 = defaultEvents$1,
- window: window2 = defaultWindow,
- eventFilter = throttleFilter(50)
- } = options;
- const idle = ref(initialState);
- const lastActive = ref(timestamp());
- let timer;
- const onEvent = createFilterWrapper(eventFilter, () => {
- idle.value = false;
- lastActive.value = timestamp();
- clearTimeout(timer);
- timer = setTimeout(() => idle.value = true, timeout);
- });
- if (window2) {
- const document2 = window2.document;
- for (const event of events2)
- useEventListener(window2, event, onEvent, { passive: true });
- if (listenForVisibilityChange) {
- useEventListener(document2, "visibilitychange", () => {
- if (!document2.hidden)
- onEvent();
- });
- }
- }
- timer = setTimeout(() => idle.value = true, timeout);
- return { idle, lastActive };
- }
- function useIntersectionObserver(target, callback, options = {}) {
- const {
- root,
- rootMargin = "0px",
- threshold = 0.1,
- window: window2 = defaultWindow
- } = options;
- const isSupported = window2 && "IntersectionObserver" in window2;
- let cleanup = noop;
- const stopWatch = isSupported ? watch(() => ({
- el: unrefElement(target),
- root: unrefElement(root)
- }), ({ el, root: root2 }) => {
- cleanup();
- if (!el)
- return;
- const observer = new window2.IntersectionObserver(callback, {
- root: root2,
- rootMargin,
- threshold
- });
- observer.observe(el);
- cleanup = () => {
- observer.disconnect();
- cleanup = noop;
- };
- }, { immediate: true, flush: "post" }) : noop;
- const stop = () => {
- cleanup();
- stopWatch();
- };
- tryOnScopeDispose(stop);
- return {
- isSupported,
- stop
- };
- }
- var defaultEvents = ["mousedown", "mouseup", "keydown", "keyup"];
- function useKeyModifier(modifier, options = {}) {
- const {
- events: events2 = defaultEvents,
- document: document2 = defaultDocument,
- initial = null
- } = options;
- const state = ref(initial);
- if (document2) {
- events2.forEach((listenerEvent) => {
- useEventListener(document2, listenerEvent, (evt) => {
- state.value = evt.getModifierState(modifier);
- });
- });
- }
- return state;
- }
- function useLocalStorage(key, initialValue, options = {}) {
- const { window: window2 = defaultWindow } = options;
- return useStorage(key, initialValue, window2 == null ? void 0 : window2.localStorage, options);
- }
- var DefaultMagicKeysAliasMap = {
- ctrl: "control",
- command: "meta",
- cmd: "meta",
- option: "alt",
- up: "arrowup",
- down: "arrowdown",
- left: "arrowleft",
- right: "arrowright"
- };
- function useMagicKeys(options = {}) {
- const {
- reactive: useReactive = false,
- target = defaultWindow,
- aliasMap = DefaultMagicKeysAliasMap,
- passive = true,
- onEventFired = noop
- } = options;
- const current = reactive(/* @__PURE__ */ new Set());
- const obj = { toJSON() {
- return {};
- }, current };
- const refs = useReactive ? reactive(obj) : obj;
- function updateRefs(e, value) {
- const key = e.key.toLowerCase();
- const code = e.code.toLowerCase();
- const values = [code, key];
- if (value)
- current.add(e.code);
- else
- current.delete(e.code);
- for (const key2 of values) {
- if (key2 in refs) {
- if (useReactive)
- refs[key2] = value;
- else
- refs[key2].value = value;
- }
- }
- }
- if (target) {
- useEventListener(target, "keydown", (e) => {
- updateRefs(e, true);
- return onEventFired(e);
- }, { passive });
- useEventListener(target, "keyup", (e) => {
- updateRefs(e, false);
- return onEventFired(e);
- }, { passive });
- }
- const proxy = new Proxy(refs, {
- get(target2, prop, rec) {
- if (typeof prop !== "string")
- return Reflect.get(target2, prop, rec);
- prop = prop.toLowerCase();
- if (prop in aliasMap)
- prop = aliasMap[prop];
- if (!(prop in refs)) {
- if (/[+_-]/.test(prop)) {
- const keys2 = prop.split(/[+_-]/g).map((i) => i.trim());
- refs[prop] = computed(() => keys2.every((key) => unref(proxy[key])));
- } else {
- refs[prop] = ref(false);
- }
- }
- const r = Reflect.get(target2, prop, rec);
- return useReactive ? unref(r) : r;
- }
- });
- return proxy;
- }
- var __defProp$6 = Object.defineProperty;
- var __getOwnPropSymbols$7 = Object.getOwnPropertySymbols;
- var __hasOwnProp$7 = Object.prototype.hasOwnProperty;
- var __propIsEnum$7 = Object.prototype.propertyIsEnumerable;
- var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
- var __spreadValues$6 = (a, b) => {
- for (var prop in b || (b = {}))
- if (__hasOwnProp$7.call(b, prop))
- __defNormalProp$6(a, prop, b[prop]);
- if (__getOwnPropSymbols$7)
- for (var prop of __getOwnPropSymbols$7(b)) {
- if (__propIsEnum$7.call(b, prop))
- __defNormalProp$6(a, prop, b[prop]);
- }
- return a;
- };
- function usingElRef(source, cb) {
- if (unref(source))
- cb(unref(source));
- }
- function timeRangeToArray(timeRanges) {
- let ranges = [];
- for (let i = 0; i < timeRanges.length; ++i)
- ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]];
- return ranges;
- }
- function tracksToArray(tracks) {
- return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ id, label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }));
- }
- var defaultOptions = {
- src: "",
- tracks: []
- };
- function useMediaControls(target, options = {}) {
- options = __spreadValues$6(__spreadValues$6({}, defaultOptions), options);
- const {
- document: document2 = defaultDocument
- } = options;
- const currentTime = ref(0);
- const duration = ref(0);
- const seeking = ref(false);
- const volume = ref(1);
- const waiting = ref(false);
- const ended = ref(false);
- const playing = ref(false);
- const rate = ref(1);
- const stalled = ref(false);
- const buffered = ref([]);
- const tracks = ref([]);
- const selectedTrack = ref(-1);
- const isPictureInPicture = ref(false);
- const muted = ref(false);
- const supportsPictureInPicture = document2 && "pictureInPictureEnabled" in document2;
- const sourceErrorEvent = createEventHook();
- const disableTrack = (track) => {
- usingElRef(target, (el) => {
- if (track) {
- const id = isNumber(track) ? track : track.id;
- el.textTracks[id].mode = "disabled";
- } else {
- for (let i = 0; i < el.textTracks.length; ++i)
- el.textTracks[i].mode = "disabled";
- }
- selectedTrack.value = -1;
- });
- };
- const enableTrack = (track, disableTracks = true) => {
- usingElRef(target, (el) => {
- const id = isNumber(track) ? track : track.id;
- if (disableTracks)
- disableTrack();
- el.textTracks[id].mode = "showing";
- selectedTrack.value = id;
- });
- };
- const togglePictureInPicture = () => {
- return new Promise((resolve, reject) => {
- usingElRef(target, (el) => __async(this, null, function* () {
- if (supportsPictureInPicture) {
- if (!isPictureInPicture.value) {
- el.requestPictureInPicture().then(resolve).catch(reject);
- } else {
- document2.exitPictureInPicture().then(resolve).catch(reject);
- }
- }
- }));
- });
- };
- watchEffect(() => {
- if (!document2)
- return;
- const el = unref(target);
- if (!el)
- return;
- const src = unref(options.src);
- let sources = [];
- if (!src)
- return;
- if (isString(src))
- sources = [{ src }];
- else if (Array.isArray(src))
- sources = src;
- else if (isObject(src))
- sources = [src];
- el.querySelectorAll("source").forEach((e) => {
- e.removeEventListener("error", sourceErrorEvent.trigger);
- e.remove();
- });
- sources.forEach(({ src: src2, type }) => {
- const source = document2.createElement("source");
- source.setAttribute("src", src2);
- source.setAttribute("type", type || "");
- source.addEventListener("error", sourceErrorEvent.trigger);
- el.appendChild(source);
- });
- el.load();
- });
- tryOnScopeDispose(() => {
- const el = unref(target);
- if (!el)
- return;
- el.querySelectorAll("source").forEach((e) => e.removeEventListener("error", sourceErrorEvent.trigger));
- });
- watch(volume, (vol) => {
- const el = unref(target);
- if (!el)
- return;
- el.volume = vol;
- });
- watch(muted, (mute) => {
- const el = unref(target);
- if (!el)
- return;
- el.muted = mute;
- });
- watchEffect(() => {
- if (!document2)
- return;
- const textTracks = unref(options.tracks);
- const el = unref(target);
- if (!textTracks || !textTracks.length || !el)
- return;
- el.querySelectorAll("track").forEach((e) => e.remove());
- textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => {
- const track = document2.createElement("track");
- track.default = isDefault || false;
- track.kind = kind;
- track.label = label;
- track.src = src;
- track.srclang = srcLang;
- if (track.default)
- selectedTrack.value = i;
- el.appendChild(track);
- });
- });
- const { ignoreUpdates: ignoreCurrentTimeUpdates } = ignorableWatch(currentTime, (time) => {
- const el = unref(target);
- if (!el)
- return;
- el.currentTime = time;
- });
- const { ignoreUpdates: ignorePlayingUpdates } = ignorableWatch(playing, (isPlaying) => {
- const el = unref(target);
- if (!el)
- return;
- isPlaying ? el.play() : el.pause();
- });
- useEventListener(target, "timeupdate", () => ignoreCurrentTimeUpdates(() => currentTime.value = unref(target).currentTime));
- useEventListener(target, "durationchange", () => duration.value = unref(target).duration);
- useEventListener(target, "progress", () => buffered.value = timeRangeToArray(unref(target).buffered));
- useEventListener(target, "seeking", () => seeking.value = true);
- useEventListener(target, "seeked", () => seeking.value = false);
- useEventListener(target, "waiting", () => waiting.value = true);
- useEventListener(target, "playing", () => waiting.value = false);
- useEventListener(target, "ratechange", () => rate.value = unref(target).playbackRate);
- useEventListener(target, "stalled", () => stalled.value = true);
- useEventListener(target, "ended", () => ended.value = true);
- useEventListener(target, "pause", () => ignorePlayingUpdates(() => playing.value = false));
- useEventListener(target, "play", () => ignorePlayingUpdates(() => playing.value = true));
- useEventListener(target, "enterpictureinpicture", () => isPictureInPicture.value = true);
- useEventListener(target, "leavepictureinpicture", () => isPictureInPicture.value = false);
- useEventListener(target, "volumechange", () => {
- const el = unref(target);
- if (!el)
- return;
- volume.value = el.volume;
- muted.value = el.muted;
- });
- const listeners = [];
- const stop = watch([target], () => {
- const el = unref(target);
- if (!el)
- return;
- stop();
- listeners[0] = useEventListener(el.textTracks, "addtrack", () => tracks.value = tracksToArray(el.textTracks));
- listeners[1] = useEventListener(el.textTracks, "removetrack", () => tracks.value = tracksToArray(el.textTracks));
- listeners[2] = useEventListener(el.textTracks, "change", () => tracks.value = tracksToArray(el.textTracks));
- });
- tryOnScopeDispose(() => listeners.forEach((listener) => listener()));
- return {
- currentTime,
- duration,
- waiting,
- seeking,
- ended,
- stalled,
- buffered,
- playing,
- volume,
- muted,
- tracks,
- selectedTrack,
- enableTrack,
- disableTrack,
- supportsPictureInPicture,
- togglePictureInPicture,
- isPictureInPicture,
- onSourceError: sourceErrorEvent.on
- };
- }
- function useMemory(options = {}) {
- const memory = ref();
- const isSupported = performance && "memory" in performance;
- if (isSupported) {
- const { interval = 1e3 } = options;
- useIntervalFn(() => {
- memory.value = performance.memory;
- }, interval, { immediate: options.immediate, immediateCallback: options.immediateCallback });
- }
- return { isSupported, memory };
- }
- function useMouse(options = {}) {
- const {
- touch = true,
- resetOnTouchEnds = false,
- initialValue = { x: 0, y: 0 },
- window: window2 = defaultWindow
- } = options;
- const x = ref(initialValue.x);
- const y = ref(initialValue.y);
- const sourceType = ref(null);
- const mouseHandler = (event) => {
- x.value = event.pageX;
- y.value = event.pageY;
- sourceType.value = "mouse";
- };
- const reset = () => {
- x.value = initialValue.x;
- y.value = initialValue.y;
- };
- const touchHandler = (event) => {
- if (event.touches.length > 0) {
- x.value = event.touches[0].clientX;
- y.value = event.touches[0].clientY;
- sourceType.value = "touch";
- }
- };
- if (window2) {
- useEventListener(window2, "mousemove", mouseHandler, { passive: true });
- useEventListener(window2, "dragover", mouseHandler, { passive: true });
- if (touch) {
- useEventListener(window2, "touchstart", touchHandler, { passive: true });
- useEventListener(window2, "touchmove", touchHandler, { passive: true });
- if (resetOnTouchEnds)
- useEventListener(window2, "touchend", reset, { passive: true });
- }
- }
- return {
- x,
- y,
- sourceType
- };
- }
- function useMouseInElement(target, options = {}) {
- const {
- handleOutside = true,
- window: window2 = defaultWindow
- } = options;
- const { x, y, sourceType } = useMouse(options);
- const targetRef = ref(target != null ? target : window2 == null ? void 0 : window2.document.body);
- const elementX = ref(0);
- const elementY = ref(0);
- const elementPositionX = ref(0);
- const elementPositionY = ref(0);
- const elementHeight = ref(0);
- const elementWidth = ref(0);
- const isOutside = ref(false);
- let stop = () => {
- };
- if (window2) {
- stop = watch([targetRef, x, y], () => {
- const el = unrefElement(targetRef);
- if (!el)
- return;
- const {
- left,
- top,
- width,
- height
- } = el.getBoundingClientRect();
- elementPositionX.value = left + window2.pageXOffset;
- elementPositionY.value = top + window2.pageYOffset;
- elementHeight.value = height;
- elementWidth.value = width;
- const elX = x.value - elementPositionX.value;
- const elY = y.value - elementPositionY.value;
- isOutside.value = elX < 0 || elY < 0 || elX > elementWidth.value || elY > elementHeight.value;
- if (handleOutside || !isOutside.value) {
- elementX.value = elX;
- elementY.value = elY;
- }
- }, { immediate: true });
- }
- return {
- x,
- y,
- sourceType,
- elementX,
- elementY,
- elementPositionX,
- elementPositionY,
- elementHeight,
- elementWidth,
- isOutside,
- stop
- };
- }
- function useMousePressed(options = {}) {
- const {
- touch = true,
- drag = true,
- initialValue = false,
- window: window2 = defaultWindow
- } = options;
- const pressed = ref(initialValue);
- const sourceType = ref(null);
- if (!window2) {
- return {
- pressed,
- sourceType
- };
- }
- const onPressed = (srcType) => () => {
- pressed.value = true;
- sourceType.value = srcType;
- };
- const onReleased = () => {
- pressed.value = false;
- sourceType.value = null;
- };
- const target = computed(() => unrefElement(options.target) || window2);
- useEventListener(target, "mousedown", onPressed("mouse"), { passive: true });
- useEventListener(window2, "mouseleave", onReleased, { passive: true });
- useEventListener(window2, "mouseup", onReleased, { passive: true });
- if (drag) {
- useEventListener(target, "dragstart", onPressed("mouse"), { passive: true });
- useEventListener(window2, "drop", onReleased, { passive: true });
- useEventListener(window2, "dragend", onReleased, { passive: true });
- }
- if (touch) {
- useEventListener(target, "touchstart", onPressed("touch"), { passive: true });
- useEventListener(window2, "touchend", onReleased, { passive: true });
- useEventListener(window2, "touchcancel", onReleased, { passive: true });
- }
- return {
- pressed,
- sourceType
- };
- }
- var __getOwnPropSymbols$6 = Object.getOwnPropertySymbols;
- var __hasOwnProp$6 = Object.prototype.hasOwnProperty;
- var __propIsEnum$6 = Object.prototype.propertyIsEnumerable;
- var __objRest$1 = (source, exclude) => {
- var target = {};
- for (var prop in source)
- if (__hasOwnProp$6.call(source, prop) && exclude.indexOf(prop) < 0)
- target[prop] = source[prop];
- if (source != null && __getOwnPropSymbols$6)
- for (var prop of __getOwnPropSymbols$6(source)) {
- if (exclude.indexOf(prop) < 0 && __propIsEnum$6.call(source, prop))
- target[prop] = source[prop];
- }
- return target;
- };
- function useMutationObserver(target, callback, options = {}) {
- const _a = options, { window: window2 = defaultWindow } = _a, mutationOptions = __objRest$1(_a, ["window"]);
- let observer;
- const isSupported = window2 && "IntersectionObserver" in window2;
- const cleanup = () => {
- if (observer) {
- observer.disconnect();
- observer = void 0;
- }
- };
- const stopWatch = watch(() => unrefElement(target), (el) => {
- cleanup();
- if (isSupported && window2 && el) {
- observer = new window2.MutationObserver(callback);
- observer.observe(el, mutationOptions);
- }
- }, { immediate: true });
- const stop = () => {
- cleanup();
- stopWatch();
- };
- tryOnScopeDispose(stop);
- return {
- isSupported,
- stop
- };
- }
- function useNetwork(options = {}) {
- const { window: window2 = defaultWindow } = options;
- const navigator = window2 == null ? void 0 : window2.navigator;
- const isSupported = Boolean(navigator && "connection" in navigator);
- const isOnline = ref(true);
- const saveData = ref(false);
- const offlineAt = ref(void 0);
- const downlink = ref(void 0);
- const downlinkMax = ref(void 0);
- const rtt = ref(void 0);
- const effectiveType = ref(void 0);
- const type = ref("unknown");
- const connection = isSupported && navigator.connection;
- function updateNetworkInformation() {
- if (!navigator)
- return;
- isOnline.value = navigator.onLine;
- offlineAt.value = isOnline.value ? void 0 : Date.now();
- if (connection) {
- downlink.value = connection.downlink;
- downlinkMax.value = connection.downlinkMax;
- effectiveType.value = connection.effectiveType;
- rtt.value = connection.rtt;
- saveData.value = connection.saveData;
- type.value = connection.type;
- }
- }
- if (window2) {
- useEventListener(window2, "offline", () => {
- isOnline.value = false;
- offlineAt.value = Date.now();
- });
- useEventListener(window2, "online", () => {
- isOnline.value = true;
- });
- }
- if (connection)
- useEventListener(connection, "change", updateNetworkInformation, false);
- updateNetworkInformation();
- return {
- isSupported,
- isOnline,
- saveData,
- offlineAt,
- downlink,
- downlinkMax,
- effectiveType,
- rtt,
- type
- };
- }
- var __defProp$5 = Object.defineProperty;
- var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols;
- var __hasOwnProp$5 = Object.prototype.hasOwnProperty;
- var __propIsEnum$5 = Object.prototype.propertyIsEnumerable;
- var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
- var __spreadValues$5 = (a, b) => {
- for (var prop in b || (b = {}))
- if (__hasOwnProp$5.call(b, prop))
- __defNormalProp$5(a, prop, b[prop]);
- if (__getOwnPropSymbols$5)
- for (var prop of __getOwnPropSymbols$5(b)) {
- if (__propIsEnum$5.call(b, prop))
- __defNormalProp$5(a, prop, b[prop]);
- }
- return a;
- };
- function useNow(options = {}) {
- const {
- controls: exposeControls = false,
- interval = "requestAnimationFrame"
- } = options;
- const now2 = ref(new Date());
- const update = () => now2.value = new Date();
- const controls = interval === "requestAnimationFrame" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true });
- if (exposeControls) {
- return __spreadValues$5({
- now: now2
- }, controls);
- } else {
- return now2;
- }
- }
- function useOnline(options = {}) {
- const { isOnline } = useNetwork(options);
- return isOnline;
- }
- function usePageLeave(options = {}) {
- const { window: window2 = defaultWindow } = options;
- const isLeft = ref(false);
- const handler = (event) => {
- if (!window2)
- return;
- event = event || window2.event;
- const from = event.relatedTarget || event.toElement;
- isLeft.value = !from;
- };
- if (window2) {
- useEventListener(window2, "mouseout", handler, { passive: true });
- useEventListener(window2.document, "mouseleave", handler, { passive: true });
- useEventListener(window2.document, "mouseenter", handler, { passive: true });
- }
- return isLeft;
- }
- function useParallax(target, options = {}) {
- const {
- deviceOrientationTiltAdjust = (i) => i,
- deviceOrientationRollAdjust = (i) => i,
- mouseTiltAdjust = (i) => i,
- mouseRollAdjust = (i) => i,
- window: window2 = defaultWindow
- } = options;
- const orientation = reactive(useDeviceOrientation({ window: window2 }));
- const {
- elementX: x,
- elementY: y,
- elementWidth: width,
- elementHeight: height
- } = useMouseInElement(target, { handleOutside: false, window: window2 });
- const source = computed(() => {
- if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0))
- return "deviceOrientation";
- return "mouse";
- });
- const roll = computed(() => {
- if (source.value === "deviceOrientation") {
- const value = -orientation.beta / 90;
- return deviceOrientationRollAdjust(value);
- } else {
- const value = -(y.value - height.value / 2) / height.value;
- return mouseRollAdjust(value);
- }
- });
- const tilt = computed(() => {
- if (source.value === "deviceOrientation") {
- const value = orientation.gamma / 90;
- return deviceOrientationTiltAdjust(value);
- } else {
- const value = (x.value - width.value / 2) / width.value;
- return mouseTiltAdjust(value);
- }
- });
- return { roll, tilt, source };
- }
- var __defProp$4 = Object.defineProperty;
- var __defProps$1 = Object.defineProperties;
- var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
- var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols;
- var __hasOwnProp$4 = Object.prototype.hasOwnProperty;
- var __propIsEnum$4 = Object.prototype.propertyIsEnumerable;
- var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
- var __spreadValues$4 = (a, b) => {
- for (var prop in b || (b = {}))
- if (__hasOwnProp$4.call(b, prop))
- __defNormalProp$4(a, prop, b[prop]);
- if (__getOwnPropSymbols$4)
- for (var prop of __getOwnPropSymbols$4(b)) {
- if (__propIsEnum$4.call(b, prop))
- __defNormalProp$4(a, prop, b[prop]);
- }
- return a;
- };
- var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
- var defaultState = {
- x: 0,
- y: 0,
- pointerId: 0,
- pressure: 0,
- tiltX: 0,
- tiltY: 0,
- width: 0,
- height: 0,
- twist: 0,
- pointerType: null
- };
- var keys = Object.keys(defaultState);
- function usePointer(options = {}) {
- const {
- target = defaultWindow
- } = options;
- const isInside = ref(false);
- const state = ref(options.initialValue || {});
- Object.assign(state.value, defaultState, state.value);
- const handler = (event) => {
- isInside.value = true;
- if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType))
- return;
- state.value = objectPick(event, keys, false);
- };
- if (target) {
- useEventListener(target, "pointerdown", handler, { passive: true });
- useEventListener(target, "pointermove", handler, { passive: true });
- useEventListener(target, "pointerleave", () => isInside.value = false, { passive: true });
- }
- return __spreadProps$1(__spreadValues$4({}, toRefs(state)), {
- isInside
- });
- }
- var SwipeDirection;
- (function(SwipeDirection2) {
- SwipeDirection2["UP"] = "UP";
- SwipeDirection2["RIGHT"] = "RIGHT";
- SwipeDirection2["DOWN"] = "DOWN";
- SwipeDirection2["LEFT"] = "LEFT";
- SwipeDirection2["NONE"] = "NONE";
- })(SwipeDirection || (SwipeDirection = {}));
- function useSwipe(target, options = {}) {
- const {
- threshold = 50,
- onSwipe,
- onSwipeEnd,
- onSwipeStart,
- passive = true,
- window: window2 = defaultWindow
- } = options;
- const coordsStart = reactive({ x: 0, y: 0 });
- const coordsEnd = reactive({ x: 0, y: 0 });
- const diffX = computed(() => coordsStart.x - coordsEnd.x);
- const diffY = computed(() => coordsStart.y - coordsEnd.y);
- const { max, abs } = Math;
- const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold);
- const isSwiping = ref(false);
- const direction = computed(() => {
- if (!isThresholdExceeded.value)
- return SwipeDirection.NONE;
- if (abs(diffX.value) > abs(diffY.value)) {
- return diffX.value > 0 ? SwipeDirection.LEFT : SwipeDirection.RIGHT;
- } else {
- return diffY.value > 0 ? SwipeDirection.UP : SwipeDirection.DOWN;
- }
- });
- const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY];
- const updateCoordsStart = (x, y) => {
- coordsStart.x = x;
- coordsStart.y = y;
- };
- const updateCoordsEnd = (x, y) => {
- coordsEnd.x = x;
- coordsEnd.y = y;
- };
- let listenerOptions;
- const isPassiveEventSupported = checkPassiveEventSupport(window2 == null ? void 0 : window2.document);
- if (!passive)
- listenerOptions = isPassiveEventSupported ? { passive: false, capture: true } : { capture: true };
- else
- listenerOptions = isPassiveEventSupported ? { passive: true } : { capture: false };
- const onTouchEnd = (e) => {
- if (isSwiping.value)
- onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);
- isSwiping.value = false;
- };
- const stops = [
- useEventListener(target, "touchstart", (e) => {
- if (listenerOptions.capture && !listenerOptions.passive)
- e.preventDefault();
- const [x, y] = getTouchEventCoords(e);
- updateCoordsStart(x, y);
- updateCoordsEnd(x, y);
- onSwipeStart == null ? void 0 : onSwipeStart(e);
- }, listenerOptions),
- useEventListener(target, "touchmove", (e) => {
- const [x, y] = getTouchEventCoords(e);
- updateCoordsEnd(x, y);
- if (!isSwiping.value && isThresholdExceeded.value)
- isSwiping.value = true;
- if (isSwiping.value)
- onSwipe == null ? void 0 : onSwipe(e);
- }, listenerOptions),
- useEventListener(target, "touchend", onTouchEnd, listenerOptions),
- useEventListener(target, "touchcancel", onTouchEnd, listenerOptions)
- ];
- const stop = () => stops.forEach((s) => s());
- return {
- isPassiveEventSupported,
- isSwiping,
- direction,
- coordsStart,
- coordsEnd,
- lengthX: diffX,
- lengthY: diffY,
- stop
- };
- }
- function checkPassiveEventSupport(document2) {
- if (!document2)
- return false;
- let supportsPassive = false;
- const optionsBlock = {
- get passive() {
- supportsPassive = true;
- return false;
- }
- };
- document2.addEventListener("x", noop, optionsBlock);
- document2.removeEventListener("x", noop);
- return supportsPassive;
- }
- function usePointerSwipe(target, options = {}) {
- const targetRef = ref(target);
- const {
- threshold = 50,
- onSwipe,
- onSwipeEnd,
- onSwipeStart
- } = options;
- const posStart = reactive({ x: 0, y: 0 });
- const updatePosStart = (x, y) => {
- posStart.x = x;
- posStart.y = y;
- };
- const posEnd = reactive({ x: 0, y: 0 });
- const updatePosEnd = (x, y) => {
- posEnd.x = x;
- posEnd.y = y;
- };
- const distanceX = computed(() => posStart.x - posEnd.x);
- const distanceY = computed(() => posStart.y - posEnd.y);
- const { max, abs } = Math;
- const isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold);
- const isSwiping = ref(false);
- const isPointerDown = ref(false);
- const direction = computed(() => {
- if (!isThresholdExceeded.value)
- return SwipeDirection.NONE;
- if (abs(distanceX.value) > abs(distanceY.value)) {
- return distanceX.value > 0 ? SwipeDirection.LEFT : SwipeDirection.RIGHT;
- } else {
- return distanceY.value > 0 ? SwipeDirection.UP : SwipeDirection.DOWN;
- }
- });
- const filterEvent = (e) => {
- if (options.pointerTypes)
- return options.pointerTypes.includes(e.pointerType);
- return true;
- };
- const stops = [
- useEventListener(target, "pointerdown", (e) => {
- var _a, _b;
- if (!filterEvent(e))
- return;
- isPointerDown.value = true;
- (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty("touch-action", "none");
- const eventTarget = e.target;
- eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId);
- const { clientX: x, clientY: y } = e;
- updatePosStart(x, y);
- updatePosEnd(x, y);
- onSwipeStart == null ? void 0 : onSwipeStart(e);
- }),
- useEventListener(target, "pointermove", (e) => {
- if (!filterEvent(e))
- return;
- if (!isPointerDown.value)
- return;
- const { clientX: x, clientY: y } = e;
- updatePosEnd(x, y);
- if (!isSwiping.value && isThresholdExceeded.value)
- isSwiping.value = true;
- if (isSwiping.value)
- onSwipe == null ? void 0 : onSwipe(e);
- }),
- useEventListener(target, "pointerup", (e) => {
- var _a, _b;
- if (!filterEvent(e))
- return;
- if (isSwiping.value)
- onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);
- isPointerDown.value = false;
- isSwiping.value = false;
- (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty("touch-action", "initial");
- })
- ];
- const stop = () => stops.forEach((s) => s());
- return {
- isSwiping: readonly(isSwiping),
- direction: readonly(direction),
- posStart: readonly(posStart),
- posEnd: readonly(posEnd),
- distanceX,
- distanceY,
- stop
- };
- }
- function usePreferredColorScheme(options) {
- const isLight = useMediaQuery("(prefers-color-scheme: light)", options);
- const isDark = useMediaQuery("(prefers-color-scheme: dark)", options);
- return computed(() => {
- if (isDark.value)
- return "dark";
- if (isLight.value)
- return "light";
- return "no-preference";
- });
- }
- function usePreferredLanguages(options = {}) {
- const { window: window2 = defaultWindow } = options;
- if (!window2)
- return ref(["en"]);
- const navigator = window2.navigator;
- const value = ref(navigator.languages);
- useEventListener(window2, "languagechange", () => {
- value.value = navigator.languages;
- });
- return value;
- }
- function useScriptTag(src, onLoaded = noop, options = {}) {
- const {
- immediate = true,
- manual = false,
- type = "text/javascript",
- async = true,
- crossOrigin,
- referrerPolicy,
- noModule,
- defer,
- document: document2 = defaultDocument
- } = options;
- const scriptTag = ref(null);
- let _promise = null;
- const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => {
- const resolveWithElement = (el2) => {
- scriptTag.value = el2;
- resolve(el2);
- return el2;
- };
- if (!document2) {
- resolve(false);
- return;
- }
- let shouldAppend = false;
- let el = document2.querySelector(`script[src="${src}"]`);
- if (!el) {
- el = document2.createElement("script");
- el.type = type;
- el.async = async;
- el.src = unref(src);
- if (defer)
- el.defer = defer;
- if (crossOrigin)
- el.crossOrigin = crossOrigin;
- if (noModule)
- el.noModule = noModule;
- if (referrerPolicy)
- el.referrerPolicy = referrerPolicy;
- shouldAppend = true;
- } else if (el.hasAttribute("data-loaded")) {
- resolveWithElement(el);
- }
- el.addEventListener("error", (event) => reject(event));
- el.addEventListener("abort", (event) => reject(event));
- el.addEventListener("load", () => {
- el.setAttribute("data-loaded", "true");
- onLoaded(el);
- resolveWithElement(el);
- });
- if (shouldAppend)
- el = document2.head.appendChild(el);
- if (!waitForScriptLoad)
- resolveWithElement(el);
- });
- const load = (waitForScriptLoad = true) => {
- if (!_promise)
- _promise = loadScript(waitForScriptLoad);
- return _promise;
- };
- const unload = () => {
- if (!document2)
- return;
- _promise = null;
- if (scriptTag.value) {
- document2.head.removeChild(scriptTag.value);
- scriptTag.value = null;
- }
- };
- if (immediate && !manual)
- tryOnMounted(load);
- if (!manual)
- tryOnUnmounted(unload);
- return { scriptTag, load, unload };
- }
- function useScroll(element, options = {}) {
- const {
- throttle = 0,
- idle = 200,
- onStop = noop,
- onScroll = noop,
- offset = {
- left: 0,
- right: 0,
- top: 0,
- bottom: 0
- },
- eventListenerOptions = {
- capture: false,
- passive: true
- }
- } = options;
- const x = ref(0);
- const y = ref(0);
- const isScrolling = ref(false);
- const arrivedState = reactive({
- left: true,
- right: false,
- top: true,
- bottom: false
- });
- if (element) {
- const onScrollEnd = useDebounceFn(() => {
- isScrolling.value = false;
- onStop();
- }, throttle + idle);
- const onScrollHandler = (e) => {
- const eventTarget = e.target === document ? e.target.documentElement : e.target;
- const scrollLeft = eventTarget.scrollLeft;
- arrivedState.left = scrollLeft <= 0 + (offset.left || 0);
- arrivedState.right = scrollLeft + eventTarget.clientWidth >= eventTarget.scrollWidth - (offset.right || 0);
- x.value = scrollLeft;
- const scrollTop = eventTarget.scrollTop;
- arrivedState.top = scrollTop <= 0 + (offset.top || 0);
- arrivedState.bottom = scrollTop + eventTarget.clientHeight >= eventTarget.scrollHeight - (offset.bottom || 0);
- y.value = scrollTop;
- isScrolling.value = true;
- onScrollEnd();
- onScroll();
- };
- useEventListener(element, "scroll", throttle ? useThrottleFn(onScrollHandler, throttle) : onScrollHandler, eventListenerOptions);
- }
- return {
- x,
- y,
- isScrolling,
- arrivedState
- };
- }
- function useSessionStorage(key, initialValue, options = {}) {
- const { window: window2 = defaultWindow } = options;
- return useStorage(key, initialValue, window2 == null ? void 0 : window2.sessionStorage, options);
- }
- var __defProp$3 = Object.defineProperty;
- var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols;
- var __hasOwnProp$3 = Object.prototype.hasOwnProperty;
- var __propIsEnum$3 = Object.prototype.propertyIsEnumerable;
- var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
- var __spreadValues$3 = (a, b) => {
- for (var prop in b || (b = {}))
- if (__hasOwnProp$3.call(b, prop))
- __defNormalProp$3(a, prop, b[prop]);
- if (__getOwnPropSymbols$3)
- for (var prop of __getOwnPropSymbols$3(b)) {
- if (__propIsEnum$3.call(b, prop))
- __defNormalProp$3(a, prop, b[prop]);
- }
- return a;
- };
- function useShare(shareOptions = {}, options = {}) {
- const { navigator = defaultNavigator } = options;
- const _navigator = navigator;
- const isSupported = _navigator && "canShare" in _navigator;
- const share = (..._0) => __async(this, [..._0], function* (overrideOptions = {}) {
- if (isSupported) {
- const data = __spreadValues$3(__spreadValues$3({}, unref(shareOptions)), unref(overrideOptions));
- let granted = true;
- if (data.files && _navigator.canShare)
- granted = _navigator.canShare({ files: data.files });
- if (granted)
- return _navigator.share(data);
- }
- });
- return {
- isSupported,
- share
- };
- }
- function useSpeechRecognition(options = {}) {
- const {
- interimResults = true,
- continuous = true,
- window: window2 = defaultWindow
- } = options;
- const lang = ref(options.lang || "en-US");
- const isListening = ref(false);
- const isFinal = ref(false);
- const result = ref("");
- const error = shallowRef(void 0);
- const toggle = (value = !isListening.value) => {
- isListening.value = value;
- };
- const start = () => {
- isListening.value = true;
- };
- const stop = () => {
- isListening.value = false;
- };
- const SpeechRecognition = window2 && (window2.SpeechRecognition || window2.webkitSpeechRecognition);
- const isSupported = Boolean(SpeechRecognition);
- let recognition;
- if (isSupported) {
- recognition = new SpeechRecognition();
- recognition.continuous = continuous;
- recognition.interimResults = interimResults;
- recognition.lang = unref(lang);
- recognition.onstart = () => {
- isFinal.value = false;
- };
- watch(lang, (lang2) => {
- if (recognition && !isListening.value)
- recognition.lang = lang2;
- });
- recognition.onresult = (event) => {
- const transcript = Array.from(event.results).map((result2) => {
- isFinal.value = result2.isFinal;
- return result2[0];
- }).map((result2) => result2.transcript).join("");
- result.value = transcript;
- error.value = void 0;
- };
- recognition.onerror = (event) => {
- error.value = event;
- };
- recognition.onend = () => {
- isListening.value = false;
- recognition.lang = unref(lang);
- };
- watch(isListening, () => {
- if (isListening.value)
- recognition.start();
- else
- recognition.stop();
- });
- }
- tryOnScopeDispose(() => {
- isListening.value = false;
- });
- return {
- isSupported,
- isListening,
- isFinal,
- recognition,
- result,
- error,
- toggle,
- start,
- stop
- };
- }
- function useSpeechSynthesis(text, options = {}) {
- var _a, _b;
- const {
- pitch = 1,
- rate = 1,
- volume = 1,
- window: window2 = defaultWindow
- } = options;
- const synth = window2 && window2.speechSynthesis;
- const isSupported = Boolean(synth);
- const isPlaying = ref(false);
- const status = ref("init");
- const voiceInfo = {
- lang: ((_a = options.voice) == null ? void 0 : _a.lang) || "default",
- name: ((_b = options.voice) == null ? void 0 : _b.name) || ""
- };
- const spokenText = ref(text || "");
- const lang = ref(options.lang || "en-US");
- const error = shallowRef(void 0);
- const toggle = (value = !isPlaying.value) => {
- isPlaying.value = value;
- };
- const bindEventsForUtterance = (utterance2) => {
- utterance2.lang = unref(lang);
- options.voice && (utterance2.voice = options.voice);
- utterance2.pitch = pitch;
- utterance2.rate = rate;
- utterance2.volume = volume;
- utterance2.onstart = () => {
- isPlaying.value = true;
- status.value = "play";
- };
- utterance2.onpause = () => {
- isPlaying.value = false;
- status.value = "pause";
- };
- utterance2.onresume = () => {
- isPlaying.value = true;
- status.value = "play";
- };
- utterance2.onend = () => {
- isPlaying.value = false;
- status.value = "end";
- };
- utterance2.onerror = (event) => {
- error.value = event;
- };
- utterance2.onend = () => {
- isPlaying.value = false;
- utterance2.lang = unref(lang);
- };
- };
- const utterance = computed(() => {
- isPlaying.value = false;
- status.value = "init";
- const newUtterance = new SpeechSynthesisUtterance(spokenText.value);
- bindEventsForUtterance(newUtterance);
- return newUtterance;
- });
- const speak = () => {
- synth.cancel();
- utterance && synth.speak(utterance.value);
- };
- if (isSupported) {
- bindEventsForUtterance(utterance.value);
- watch(lang, (lang2) => {
- if (utterance.value && !isPlaying.value)
- utterance.value.lang = lang2;
- });
- watch(isPlaying, () => {
- if (isPlaying.value)
- synth.resume();
- else
- synth.pause();
- });
- }
- tryOnScopeDispose(() => {
- isPlaying.value = false;
- });
- return {
- isSupported,
- isPlaying,
- status,
- voiceInfo,
- utterance,
- error,
- toggle,
- speak
- };
- }
- function useTemplateRefsList() {
- const refs = ref([]);
- refs.value.set = (el) => {
- if (el)
- refs.value.push(el);
- };
- onBeforeUpdate(() => {
- refs.value.length = 0;
- });
- return refs;
- }
- var __defProp$2 = Object.defineProperty;
- var __defProps = Object.defineProperties;
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
- var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;
- var __hasOwnProp$2 = Object.prototype.hasOwnProperty;
- var __propIsEnum$2 = Object.prototype.propertyIsEnumerable;
- var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
- var __spreadValues$2 = (a, b) => {
- for (var prop in b || (b = {}))
- if (__hasOwnProp$2.call(b, prop))
- __defNormalProp$2(a, prop, b[prop]);
- if (__getOwnPropSymbols$2)
- for (var prop of __getOwnPropSymbols$2(b)) {
- if (__propIsEnum$2.call(b, prop))
- __defNormalProp$2(a, prop, b[prop]);
- }
- return a;
- };
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
- function useThrottledRefHistory(source, options = {}) {
- const { throttle = 200, trailing = true } = options;
- const filter = throttleFilter(throttle, trailing);
- const history = useRefHistory(source, __spreadProps(__spreadValues$2({}, options), { eventFilter: filter }));
- return __spreadValues$2({}, history);
- }
- var __defProp$1 = Object.defineProperty;
- var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
- var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
- var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
- var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
- var __spreadValues$1 = (a, b) => {
- for (var prop in b || (b = {}))
- if (__hasOwnProp$1.call(b, prop))
- __defNormalProp$1(a, prop, b[prop]);
- if (__getOwnPropSymbols$1)
- for (var prop of __getOwnPropSymbols$1(b)) {
- if (__propIsEnum$1.call(b, prop))
- __defNormalProp$1(a, prop, b[prop]);
- }
- return a;
- };
- var __objRest = (source, exclude) => {
- var target = {};
- for (var prop in source)
- if (__hasOwnProp$1.call(source, prop) && exclude.indexOf(prop) < 0)
- target[prop] = source[prop];
- if (source != null && __getOwnPropSymbols$1)
- for (var prop of __getOwnPropSymbols$1(source)) {
- if (exclude.indexOf(prop) < 0 && __propIsEnum$1.call(source, prop))
- target[prop] = source[prop];
- }
- return target;
- };
- var UNITS = [
- { max: 6e4, value: 1e3, name: "second" },
- { max: 276e4, value: 6e4, name: "minute" },
- { max: 72e6, value: 36e5, name: "hour" },
- { max: 5184e5, value: 864e5, name: "day" },
- { max: 24192e5, value: 6048e5, name: "week" },
- { max: 28512e6, value: 2592e6, name: "month" },
- { max: Infinity, value: 31536e6, name: "year" }
- ];
- var DEFAULT_MESSAGES = {
- justNow: "just now",
- past: (n) => n.match(/\d/) ? `${n} ago` : n,
- future: (n) => n.match(/\d/) ? `in ${n}` : n,
- month: (n, past) => n === 1 ? past ? "last month" : "next month" : `${n} month${n > 1 ? "s" : ""}`,
- year: (n, past) => n === 1 ? past ? "last year" : "next year" : `${n} year${n > 1 ? "s" : ""}`,
- day: (n, past) => n === 1 ? past ? "yesterday" : "tomorrow" : `${n} day${n > 1 ? "s" : ""}`,
- week: (n, past) => n === 1 ? past ? "last week" : "next week" : `${n} week${n > 1 ? "s" : ""}`,
- hour: (n) => `${n} hour${n > 1 ? "s" : ""}`,
- minute: (n) => `${n} minute${n > 1 ? "s" : ""}`,
- second: (n) => `${n} second${n > 1 ? "s" : ""}`
- };
- var DEFAULT_FORMATTER = (date) => date.toISOString().slice(0, 10);
- function useTimeAgo(time, options = {}) {
- const {
- controls: exposeControls = false,
- max,
- updateInterval = 3e4,
- messages = DEFAULT_MESSAGES,
- fullDateFormatter = DEFAULT_FORMATTER
- } = options;
- const { abs, round } = Math;
- const _a = useNow({ interval: updateInterval, controls: true }), { now: now2 } = _a, controls = __objRest(_a, ["now"]);
- function getTimeago(from, now22) {
- var _a2;
- const diff = +now22 - +from;
- const absDiff = abs(diff);
- if (absDiff < 6e4)
- return messages.justNow;
- if (typeof max === "number" && absDiff > max)
- return fullDateFormatter(new Date(from));
- if (typeof max === "string") {
- const unitMax = (_a2 = UNITS.find((i) => i.name === max)) == null ? void 0 : _a2.max;
- if (unitMax && absDiff > unitMax)
- return fullDateFormatter(new Date(from));
- }
- for (const unit of UNITS) {
- if (absDiff < unit.max)
- return format(diff, unit);
- }
- }
- function applyFormat(name, val, isPast) {
- const formatter = messages[name];
- if (typeof formatter === "function")
- return formatter(val, isPast);
- return formatter.replace("{0}", val.toString());
- }
- function format(diff, unit) {
- const val = round(abs(diff) / unit.value);
- const past = diff > 0;
- const str = applyFormat(unit.name, val, past);
- return applyFormat(past ? "past" : "future", str, past);
- }
- const timeAgo = computed(() => getTimeago(new Date(unref(time)), unref(now2.value)));
- if (exposeControls) {
- return __spreadValues$1({
- timeAgo
- }, controls);
- } else {
- return timeAgo;
- }
- }
- var __defProp = Object.defineProperty;
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
- var __hasOwnProp = Object.prototype.hasOwnProperty;
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
- var __spreadValues = (a, b) => {
- for (var prop in b || (b = {}))
- if (__hasOwnProp.call(b, prop))
- __defNormalProp(a, prop, b[prop]);
- if (__getOwnPropSymbols)
- for (var prop of __getOwnPropSymbols(b)) {
- if (__propIsEnum.call(b, prop))
- __defNormalProp(a, prop, b[prop]);
- }
- return a;
- };
- function useTimestamp(options = {}) {
- const {
- controls: exposeControls = false,
- offset = 0,
- immediate = true,
- interval = "requestAnimationFrame"
- } = options;
- const ts = ref(timestamp() + offset);
- const update = () => ts.value = timestamp() + offset;
- const controls = interval === "requestAnimationFrame" ? useRafFn(update, { immediate }) : useIntervalFn(update, interval, { immediate });
- if (exposeControls) {
- return __spreadValues({
- timestamp: ts
- }, controls);
- } else {
- return ts;
- }
- }
- function useTitle(newTitle = null, options = {}) {
- var _a, _b;
- const {
- document: document2 = defaultDocument,
- observe = false
- } = options;
- const title = ref((_a = newTitle != null ? newTitle : document2 == null ? void 0 : document2.title) != null ? _a : null);
- watch(title, (t, o) => {
- if (isString(t) && t !== o && document2)
- document2.title = t;
- }, { immediate: true });
- if (observe && document2) {
- useMutationObserver((_b = document2.head) == null ? void 0 : _b.querySelector("title"), () => {
- if (document2 && document2.title !== title.value)
- title.value = document2.title;
- }, { childList: true });
- }
- return title;
- }
- var TransitionPresets = {
- linear: identity,
- easeInSine: [0.12, 0, 0.39, 0],
- easeOutSine: [0.61, 1, 0.88, 1],
- easeInOutSine: [0.37, 0, 0.63, 1],
- easeInQuad: [0.11, 0, 0.5, 0],
- easeOutQuad: [0.5, 1, 0.89, 1],
- easeInOutQuad: [0.45, 0, 0.55, 1],
- easeInCubic: [0.32, 0, 0.67, 0],
- easeOutCubic: [0.33, 1, 0.68, 1],
- easeInOutCubic: [0.65, 0, 0.35, 1],
- easeInQuart: [0.5, 0, 0.75, 0],
- easeOutQuart: [0.25, 1, 0.5, 1],
- easeInOutQuart: [0.76, 0, 0.24, 1],
- easeInQuint: [0.64, 0, 0.78, 0],
- easeOutQuint: [0.22, 1, 0.36, 1],
- easeInOutQuint: [0.83, 0, 0.17, 1],
- easeInExpo: [0.7, 0, 0.84, 0],
- easeOutExpo: [0.16, 1, 0.3, 1],
- easeInOutExpo: [0.87, 0, 0.13, 1],
- easeInCirc: [0.55, 0, 1, 0.45],
- easeOutCirc: [0, 0.55, 0.45, 1],
- easeInOutCirc: [0.85, 0, 0.15, 1],
- easeInBack: [0.36, 0, 0.66, -0.56],
- easeOutBack: [0.34, 1.56, 0.64, 1],
- easeInOutBack: [0.68, -0.6, 0.32, 1.6]
- };
- function createEasingFunction([p0, p1, p2, p3]) {
- const a = (a1, a2) => 1 - 3 * a2 + 3 * a1;
- const b = (a1, a2) => 3 * a2 - 6 * a1;
- const c = (a1) => 3 * a1;
- const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;
- const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1);
- const getTforX = (x) => {
- let aGuessT = x;
- for (let i = 0; i < 4; ++i) {
- const currentSlope = getSlope(aGuessT, p0, p2);
- if (currentSlope === 0)
- return aGuessT;
- const currentX = calcBezier(aGuessT, p0, p2) - x;
- aGuessT -= currentX / currentSlope;
- }
- return aGuessT;
- };
- return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3);
- }
- function useTransition(source, options = {}) {
- const {
- delay = 0,
- disabled = false,
- duration = 1e3,
- onFinished = noop,
- onStarted = noop,
- transition = identity
- } = options;
- const currentTransition = computed(() => {
- const t = unref(transition);
- return isFunction(t) ? t : createEasingFunction(t);
- });
- const sourceValue = computed(() => {
- const s = unref(source);
- return isNumber(s) ? s : s.map(unref);
- });
- const sourceVector = computed(() => isNumber(sourceValue.value) ? [sourceValue.value] : sourceValue.value);
- const outputVector = ref(sourceVector.value.slice(0));
- let currentDuration;
- let diffVector;
- let endAt;
- let startAt;
- let startVector;
- const { resume, pause } = useRafFn(() => {
- const now2 = Date.now();
- const progress = clamp(1 - (endAt - now2) / currentDuration, 0, 1);
- outputVector.value = startVector.map((val, i) => {
- var _a;
- return val + ((_a = diffVector[i]) != null ? _a : 0) * currentTransition.value(progress);
- });
- if (progress >= 1) {
- pause();
- onFinished();
- }
- }, { immediate: false });
- const start = () => {
- pause();
- currentDuration = unref(duration);
- diffVector = outputVector.value.map((n, i) => {
- var _a, _b;
- return ((_a = sourceVector.value[i]) != null ? _a : 0) - ((_b = outputVector.value[i]) != null ? _b : 0);
- });
- startVector = outputVector.value.slice(0);
- startAt = Date.now();
- endAt = startAt + currentDuration;
- resume();
- onStarted();
- };
- const timeout = useTimeoutFn(start, delay, { immediate: false });
- watch(sourceVector, () => {
- if (unref(disabled)) {
- outputVector.value = sourceVector.value.slice(0);
- } else {
- if (unref(delay) <= 0)
- start();
- else
- timeout.start();
- }
- }, { deep: true });
- return computed(() => {
- const targetVector = unref(disabled) ? sourceVector : outputVector;
- return isNumber(sourceValue.value) ? targetVector.value[0] : targetVector.value;
- });
- }
- function useUrlSearchParams(mode = "history", options = {}) {
- const {
- initialValue = {},
- removeNullishValues = true,
- removeFalsyValues = false,
- window: window2 = defaultWindow
- } = options;
- if (!window2)
- return reactive(initialValue);
- const state = reactive(initialValue);
- function getRawParams() {
- if (mode === "history") {
- return window2.location.search || "";
- } else if (mode === "hash") {
- const hash = window2.location.hash || "";
- const index = hash.indexOf("?");
- return index > 0 ? hash.slice(index) : "";
- } else {
- return (window2.location.hash || "").replace(/^#/, "");
- }
- }
- function constructQuery(params) {
- const stringified = params.toString();
- if (mode === "history")
- return `${stringified ? `?${stringified}` : ""}${location.hash || ""}`;
- if (mode === "hash-params")
- return `${location.search || ""}${stringified ? `#${stringified}` : ""}`;
- const hash = window2.location.hash || "#";
- const index = hash.indexOf("?");
- if (index > 0)
- return `${hash.slice(0, index)}${stringified ? `?${stringified}` : ""}`;
- return `${hash}${stringified ? `?${stringified}` : ""}`;
- }
- function read() {
- return new URLSearchParams(getRawParams());
- }
- function updateState(params) {
- const unusedKeys = new Set(Object.keys(state));
- for (const key of params.keys()) {
- const paramsForKey = params.getAll(key);
- state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || "";
- unusedKeys.delete(key);
- }
- Array.from(unusedKeys).forEach((key) => delete state[key]);
- }
- const { pause, resume } = pausableWatch(state, () => {
- const params = new URLSearchParams("");
- Object.keys(state).forEach((key) => {
- const mapEntry = state[key];
- if (Array.isArray(mapEntry))
- mapEntry.forEach((value) => params.append(key, value));
- else if (removeNullishValues && mapEntry == null)
- params.delete(key);
- else if (removeFalsyValues && !mapEntry)
- params.delete(key);
- else
- params.set(key, mapEntry);
- });
- write(params);
- }, { deep: true });
- function write(params, shouldUpdate) {
- pause();
- if (shouldUpdate)
- updateState(params);
- window2.history.replaceState({}, "", window2.location.pathname + constructQuery(params));
- resume();
- }
- function onChanged() {
- write(read(), true);
- }
- useEventListener(window2, "popstate", onChanged, false);
- if (mode !== "history")
- useEventListener(window2, "hashchange", onChanged, false);
- updateState(read());
- return state;
- }
- function useUserMedia(options = {}) {
- var _a, _b, _c;
- const enabled = ref((_a = options.enabled) != null ? _a : false);
- const autoSwitch = ref((_b = options.autoSwitch) != null ? _b : true);
- const videoDeviceId = ref(options.videoDeviceId);
- const audioDeviceId = ref(options.audioDeviceId);
- const { navigator = defaultNavigator } = options;
- const isSupported = Boolean((_c = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _c.getUserMedia);
- const stream = shallowRef();
- function getDeviceOptions(device) {
- if (device.value === "none" || device.value === false)
- return false;
- if (device.value == null)
- return true;
- return {
- deviceId: device.value
- };
- }
- function _start() {
- return __async(this, null, function* () {
- if (!isSupported || stream.value)
- return;
- stream.value = yield navigator.mediaDevices.getUserMedia({
- video: getDeviceOptions(videoDeviceId),
- audio: getDeviceOptions(audioDeviceId)
- });
- return stream.value;
- });
- }
- function _stop() {
- return __async(this, null, function* () {
- var _a2;
- (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());
- stream.value = void 0;
- });
- }
- function stop() {
- _stop();
- enabled.value = false;
- }
- function start() {
- return __async(this, null, function* () {
- yield _start();
- if (stream.value)
- enabled.value = true;
- return stream.value;
- });
- }
- function restart() {
- return __async(this, null, function* () {
- _stop();
- return yield start();
- });
- }
- watch(enabled, (v) => {
- if (v)
- _start();
- else
- _stop();
- }, { immediate: true });
- watch([videoDeviceId, audioDeviceId], () => {
- if (autoSwitch.value && stream.value)
- restart();
- }, { immediate: true });
- return {
- isSupported,
- stream,
- start,
- stop,
- restart,
- videoDeviceId,
- audioDeviceId,
- enabled,
- autoSwitch
- };
- }
- function useVModel(props, key, emit, options = {}) {
- var _a, _b, _c;
- const {
- passive = false,
- eventName,
- deep = false
- } = options;
- const vm = getCurrentInstance();
- const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm));
- let event = eventName;
- if (!key) {
- if (isVue2) {
- const modelOptions = (_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$options) == null ? void 0 : _c.model;
- key = (modelOptions == null ? void 0 : modelOptions.value) || "value";
- if (!eventName)
- event = (modelOptions == null ? void 0 : modelOptions.event) || "input";
- } else {
- key = "modelValue";
- }
- }
- event = eventName || event || `update:${key}`;
- if (passive) {
- const proxy = ref(props[key]);
- watch(() => props[key], (v) => proxy.value = v);
- watch(proxy, (v) => {
- if (v !== props[key] || deep)
- _emit(event, v);
- }, {
- deep
- });
- return proxy;
- } else {
- return computed({
- get() {
- return props[key];
- },
- set(value) {
- _emit(event, value);
- }
- });
- }
- }
- function useVModels(props, emit, options = {}) {
- const ret = {};
- for (const key in props)
- ret[key] = useVModel(props, key, emit, options);
- return ret;
- }
- function useVirtualList(list, options) {
- const containerRef = ref();
- const size = useElementSize(containerRef);
- const currentList = ref([]);
- const source = shallowRef(list);
- const state = ref({ start: 0, end: 10 });
- const { itemHeight, overscan = 5 } = options;
- const getViewCapacity = (containerHeight) => {
- if (typeof itemHeight === "number")
- return Math.ceil(containerHeight / itemHeight);
- const { start = 0 } = state.value;
- let sum = 0;
- let capacity = 0;
- for (let i = start; i < source.value.length; i++) {
- const height = itemHeight(i);
- sum += height;
- if (sum >= containerHeight) {
- capacity = i;
- break;
- }
- }
- return capacity - start;
- };
- const getOffset = (scrollTop) => {
- if (typeof itemHeight === "number")
- return Math.floor(scrollTop / itemHeight) + 1;
- let sum = 0;
- let offset = 0;
- for (let i = 0; i < source.value.length; i++) {
- const height = itemHeight(i);
- sum += height;
- if (sum >= scrollTop) {
- offset = i;
- break;
- }
- }
- return offset + 1;
- };
- const calculateRange = () => {
- const element = containerRef.value;
- if (element) {
- const offset = getOffset(element.scrollTop);
- const viewCapacity = getViewCapacity(element.clientHeight);
- const from = offset - overscan;
- const to = offset + viewCapacity + overscan;
- state.value = {
- start: from < 0 ? 0 : from,
- end: to > source.value.length ? source.value.length : to
- };
- currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({
- data: ele,
- index: index + state.value.start
- }));
- }
- };
- watch([size.width, size.height, list], () => {
- calculateRange();
- });
- const totalHeight = computed(() => {
- if (typeof itemHeight === "number")
- return source.value.length * itemHeight;
- return source.value.reduce((sum, _, index) => sum + itemHeight(index), 0);
- });
- const getDistanceTop = (index) => {
- if (typeof itemHeight === "number") {
- const height2 = index * itemHeight;
- return height2;
- }
- const height = source.value.slice(0, index).reduce((sum, _, i) => sum + itemHeight(i), 0);
- return height;
- };
- const scrollTo = (index) => {
- if (containerRef.value) {
- containerRef.value.scrollTop = getDistanceTop(index);
- calculateRange();
- }
- };
- const offsetTop = computed(() => getDistanceTop(state.value.start));
- const wrapperProps = computed(() => {
- return {
- style: {
- width: "100%",
- height: `${totalHeight.value - offsetTop.value}px`,
- marginTop: `${offsetTop.value}px`
- }
- };
- });
- const containerStyle = { overflowY: "auto" };
- return {
- list: currentList,
- scrollTo,
- containerProps: {
- ref: containerRef,
- onScroll: () => {
- calculateRange();
- },
- style: containerStyle
- },
- wrapperProps
- };
- }
- var useWakeLock = (options = {}) => {
- const { navigator = defaultNavigator, document: document2 = defaultDocument } = options;
- let wakeLock;
- const isSupported = navigator && "wakeLock" in navigator;
- const isActive = ref(false);
- function onVisibilityChange() {
- return __async(this, null, function* () {
- if (!isSupported || !wakeLock)
- return;
- if (document2 && document2.visibilityState === "visible")
- wakeLock = yield navigator.wakeLock.request("screen");
- isActive.value = !wakeLock.released;
- });
- }
- if (document2)
- useEventListener(document2, "visibilitychange", onVisibilityChange, { passive: true });
- function request(type) {
- return __async(this, null, function* () {
- if (!isSupported)
- return;
- wakeLock = yield navigator.wakeLock.request(type);
- isActive.value = !wakeLock.released;
- });
- }
- function release() {
- return __async(this, null, function* () {
- if (!isSupported || !wakeLock)
- return;
- yield wakeLock.release();
- isActive.value = !wakeLock.released;
- wakeLock = null;
- });
- }
- return {
- isSupported,
- isActive,
- request,
- release
- };
- };
- function resolveNestedOptions(options) {
- if (options === true)
- return {};
- return options;
- }
- function useWebSocket(url, options = {}) {
- const {
- onConnected,
- onDisconnected,
- onError,
- onMessage,
- immediate = true,
- autoClose = true,
- protocols = []
- } = options;
- const data = ref(null);
- const status = ref("CONNECTING");
- const wsRef = ref();
- let heartbeatPause;
- let heartbeatResume;
- let explicitlyClosed = false;
- let retried = 0;
- let bufferedData = [];
- const close = (code, reason) => {
- if (!wsRef.value)
- return;
- explicitlyClosed = true;
- heartbeatPause == null ? void 0 : heartbeatPause();
- wsRef.value.close(code, reason);
- };
- const _sendBuffer = () => {
- if (bufferedData.length && wsRef.value && status.value === "OPEN") {
- for (const buffer of bufferedData)
- wsRef.value.send(buffer);
- bufferedData = [];
- }
- };
- const send = (data2, useBuffer = true) => {
- if (!wsRef.value || status.value !== "OPEN") {
- if (useBuffer)
- bufferedData.push(data2);
- return false;
- }
- _sendBuffer();
- wsRef.value.send(data2);
- return true;
- };
- const _init = () => {
- const ws = new WebSocket(url, protocols);
- wsRef.value = ws;
- status.value = "CONNECTING";
- explicitlyClosed = false;
- ws.onopen = () => {
- status.value = "OPEN";
- onConnected == null ? void 0 : onConnected(ws);
- heartbeatResume == null ? void 0 : heartbeatResume();
- _sendBuffer();
- };
- ws.onclose = (ev) => {
- status.value = "CLOSED";
- wsRef.value = void 0;
- onDisconnected == null ? void 0 : onDisconnected(ws, ev);
- if (!explicitlyClosed && options.autoReconnect) {
- const {
- retries = -1,
- delay = 1e3,
- onFailed
- } = resolveNestedOptions(options.autoReconnect);
- retried += 1;
- if (retries < 0 || retried < retries)
- setTimeout(_init, delay);
- else
- onFailed == null ? void 0 : onFailed();
- }
- };
- ws.onerror = (e) => {
- onError == null ? void 0 : onError(ws, e);
- };
- ws.onmessage = (e) => {
- data.value = e.data;
- onMessage == null ? void 0 : onMessage(ws, e);
- };
- };
- if (options.heartbeat) {
- const {
- message = "ping",
- interval = 1e3
- } = resolveNestedOptions(options.heartbeat);
- const { pause, resume } = useIntervalFn(() => send(message, false), interval, { immediate: false });
- heartbeatPause = pause;
- heartbeatResume = resume;
- }
- if (immediate)
- _init();
- if (autoClose) {
- useEventListener(window, "beforeunload", close);
- tryOnScopeDispose(close);
- }
- const open = () => {
- close();
- retried = 0;
- _init();
- };
- return {
- data,
- status,
- close,
- send,
- open,
- ws: wsRef
- };
- }
- function useWebWorker(url, workerOptions, options = {}) {
- const {
- window: window2 = defaultWindow
- } = options;
- const data = ref(null);
- const worker = shallowRef();
- const post = function post2(val) {
- if (!worker.value)
- return;
- worker.value.postMessage(val);
- };
- const terminate = function terminate2() {
- if (!worker.value)
- return;
- worker.value.terminate();
- };
- if (window2) {
- worker.value = new window2.Worker(url, workerOptions);
- worker.value.onmessage = (e) => {
- data.value = e.data;
- };
- tryOnScopeDispose(() => {
- if (worker.value)
- worker.value.terminate();
- });
- }
- return {
- data,
- post,
- terminate,
- worker
- };
- }
- var jobRunner = (userFunc) => (e) => {
- const userFuncArgs = e.data[0];
- return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => {
- postMessage(["SUCCESS", result]);
- }).catch((error) => {
- postMessage(["ERROR", error]);
- });
- };
- var depsParser = (deps) => {
- if (deps.length === 0)
- return "";
- const depsString = deps.map((dep) => `${dep}`).toString();
- return `importScripts('${depsString}')`;
- };
- var createWorkerBlobUrl = (fn, deps) => {
- const blobCode = `${depsParser(deps)}; onmessage=(${jobRunner})(${fn})`;
- const blob = new Blob([blobCode], { type: "text/javascript" });
- const url = URL.createObjectURL(blob);
- return url;
- };
- var useWebWorkerFn = (fn, options = {}) => {
- const {
- dependencies = [],
- timeout,
- window: window2 = defaultWindow
- } = options;
- const worker = ref();
- const workerStatus = ref("PENDING");
- const promise = ref({});
- const timeoutId = ref();
- const workerTerminate = (status = "PENDING") => {
- if (worker.value && worker.value._url && window2) {
- worker.value.terminate();
- URL.revokeObjectURL(worker.value._url);
- promise.value = {};
- worker.value = void 0;
- window2.clearTimeout(timeoutId.value);
- workerStatus.value = status;
- }
- };
- workerTerminate();
- tryOnScopeDispose(workerTerminate);
- const generateWorker = () => {
- const blobUrl = createWorkerBlobUrl(fn, dependencies);
- const newWorker = new Worker(blobUrl);
- newWorker._url = blobUrl;
- newWorker.onmessage = (e) => {
- const { resolve = () => {
- }, reject = () => {
- } } = promise.value;
- const [status, result] = e.data;
- switch (status) {
- case "SUCCESS":
- resolve(result);
- workerTerminate(status);
- break;
- default:
- reject(result);
- workerTerminate("ERROR");
- break;
- }
- };
- newWorker.onerror = (e) => {
- const { reject = () => {
- } } = promise.value;
- reject(e);
- workerTerminate("ERROR");
- };
- if (timeout) {
- timeoutId.value = setTimeout(() => workerTerminate("TIMEOUT_EXPIRED"), timeout);
- }
- return newWorker;
- };
- const callWorker = (...fnArgs) => new Promise((resolve, reject) => {
- promise.value = {
- resolve,
- reject
- };
- worker.value && worker.value.postMessage([[...fnArgs]]);
- workerStatus.value = "RUNNING";
- });
- const workerFn = (...fnArgs) => {
- if (workerStatus.value === "RUNNING") {
- console.error("[useWebWorkerFn] You can only run one instance of the worker at a time.");
- return Promise.reject();
- }
- worker.value = generateWorker();
- return callWorker(...fnArgs);
- };
- return {
- workerFn,
- workerStatus,
- workerTerminate
- };
- };
- function useWindowFocus({ window: window2 = defaultWindow } = {}) {
- if (!window2)
- return ref(false);
- const focused = ref(window2.document.hasFocus());
- useEventListener(window2, "blur", () => {
- focused.value = false;
- });
- useEventListener(window2, "focus", () => {
- focused.value = true;
- });
- return focused;
- }
- function useWindowScroll({ window: window2 = defaultWindow } = {}) {
- if (!window2) {
- return {
- x: ref(0),
- y: ref(0)
- };
- }
- const x = ref(window2.pageXOffset);
- const y = ref(window2.pageYOffset);
- useEventListener("scroll", () => {
- x.value = window2.pageXOffset;
- y.value = window2.pageYOffset;
- }, {
- capture: false,
- passive: true
- });
- return { x, y };
- }
- function useWindowSize({ window: window2 = defaultWindow, initialWidth = Infinity, initialHeight = Infinity } = {}) {
- if (!window2) {
- return {
- width: ref(initialWidth),
- height: ref(initialHeight)
- };
- }
- const width = ref(window2.innerWidth);
- const height = ref(window2.innerHeight);
- useEventListener("resize", () => {
- width.value = window2.innerWidth;
- height.value = window2.innerHeight;
- }, { passive: true });
- return { width, height };
- }
- export {
- DefaultMagicKeysAliasMap,
- StorageSerializers,
- SwipeDirection,
- TransitionPresets,
- and,
- assert,
- asyncComputed,
- autoResetRef,
- biSyncRef,
- breakpointsAntDesign,
- breakpointsBootstrapV5,
- breakpointsQuasar,
- breakpointsSematic,
- breakpointsTailwind,
- breakpointsVuetify,
- bypassFilter,
- clamp,
- computedInject,
- containsProp,
- controlledComputed,
- controlledRef,
- createEventHook,
- createFetch,
- createFilterWrapper,
- createGlobalState,
- reactify as createReactiveFn,
- createSharedComposable,
- createSingletonPromise,
- createUnrefFn,
- debounceFilter,
- useDebounce as debouncedRef,
- debouncedWatch,
- eagerComputed,
- extendRef,
- get,
- identity,
- ignorableWatch,
- increaseWithUnit,
- invoke,
- isBoolean,
- isClient,
- isDef,
- isDefined,
- isFunction,
- isNumber,
- isObject,
- isString,
- isWindow,
- makeDestructurable,
- noop,
- not,
- now,
- objectPick,
- onClickOutside,
- onKeyDown,
- onKeyPressed,
- onKeyStroke,
- onKeyUp,
- onStartTyping,
- or,
- pausableFilter,
- pausableWatch,
- promiseTimeout,
- rand,
- reactify,
- reactifyObject,
- reactivePick,
- refDefault,
- set,
- syncRef,
- templateRef,
- throttleFilter,
- useThrottle as throttledRef,
- throttledWatch,
- timestamp,
- toReactive,
- toRefs,
- tryOnBeforeUnmount,
- tryOnMounted,
- tryOnScopeDispose,
- tryOnUnmounted,
- unrefElement,
- until,
- useActiveElement,
- useAsyncState,
- useBase64,
- useBattery,
- useBreakpoints,
- useBrowserLocation,
- useClipboard,
- useConfirmDialog,
- useCounter,
- useCssVar,
- useDark,
- useDebounce,
- useDebounceFn,
- useDebouncedRefHistory,
- useDeviceMotion,
- useDeviceOrientation,
- useDevicePixelRatio,
- useDevicesList,
- useDisplayMedia,
- useDocumentVisibility,
- useDraggable,
- useElementBounding,
- useElementHover,
- useElementSize,
- useElementVisibility,
- useEventBus,
- useEventListener,
- useEventSource,
- useEyeDropper,
- useFavicon,
- useFetch,
- useFocus,
- useFps,
- useFullscreen,
- useGeolocation,
- useIdle,
- useIntersectionObserver,
- useInterval,
- useIntervalFn,
- useKeyModifier,
- useLastChanged,
- useLocalStorage,
- useMagicKeys,
- useManualRefHistory,
- useMediaControls,
- useMediaQuery,
- useMemory,
- useMouse,
- useMouseInElement,
- useMousePressed,
- useMutationObserver,
- useNetwork,
- useNow,
- useOnline,
- usePageLeave,
- useParallax,
- usePermission,
- usePointer,
- usePointerSwipe,
- usePreferredColorScheme,
- usePreferredDark,
- usePreferredLanguages,
- useRafFn,
- useRefHistory,
- useResizeObserver,
- useScriptTag,
- useScroll,
- useSessionStorage,
- useShare,
- useSpeechRecognition,
- useSpeechSynthesis,
- useStorage,
- useSwipe,
- useTemplateRefsList,
- useThrottle,
- useThrottleFn,
- useThrottledRefHistory,
- useTimeAgo,
- useTimeout,
- useTimeoutFn,
- useTimestamp,
- useTitle,
- useToggle,
- useTransition,
- useUrlSearchParams,
- useUserMedia,
- useVModel,
- useVModels,
- useVirtualList,
- useWakeLock,
- useWebSocket,
- useWebWorker,
- useWebWorkerFn,
- useWindowFocus,
- useWindowScroll,
- useWindowSize,
- watchAtMost,
- watchOnce,
- watchWithFilter,
- whenever
- };
- //# sourceMappingURL=@vueuse_core.js.map
|