| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- import{i as t}from"./vue-demi-71ba0ef2.js";import{ao as e,h as n,an as s,p as o,i as a,X as c,x as r,aw as i,ab as u,ax as f,g as p,f as l,n as h,ad as d,m as y}from"./@vue-37836d09.js";
- /*!
- * pinia v2.3.1
- * (c) 2025 Eduardo San Martin Morote
- * @license MIT
- */
- /**
- * setActivePinia must be called to handle SSR at the top of functions like
- * `fetch`, `setup`, `serverPrefetch` and others
- */let b;
- /**
- * Sets or unsets the active pinia. Used in SSR and internally when calling
- * actions and getters
- *
- * @param pinia - Pinia instance
- */
- // @ts-expect-error: cannot constrain the type of the return
- const v=t=>b=t,_=/* istanbul ignore next */Symbol();function m(
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- t){return t&&"object"==typeof t&&"[object Object]"===Object.prototype.toString.call(t)&&"function"!=typeof t.toJSON}
- // type DeepReadonly<T> = { readonly [P in keyof T]: DeepReadonly<T[P]> }
- // TODO: can we change these to numbers?
- /**
- * Possible types for SubscriptionCallback
- */var j;
- /**
- * Creates a Pinia instance to be used by the application
- */
- function O(){const o=e(!0),a=o.run((()=>n({})));
- // NOTE: here we could check the window object for a state and directly set it
- // if there is anything like it with Vue 3 SSR
- let c=[],r=[];
- // plugins added before calling app.use(pinia)
- const i=s({install(t){
- // this allows calling useStore() outside of a component setup after
- // installing pinia's plugin
- v(i),i._a=t,t.provide(_,i),t.config.globalProperties.$pinia=i,r.forEach((t=>c.push(t))),r=[]},use(e){return this._a||t?c.push(e):r.push(e),this},_p:c,
- // it's actually undefined here
- // @ts-expect-error
- _a:null,_e:o,_s:new Map,state:a});return i}!function(t){
- /**
- * Direct mutation of the state:
- *
- * - `store.name = 'new name'`
- * - `store.$state.name = 'new name'`
- * - `store.list.push('new item')`
- */
- t.direct="direct",
- /**
- * Mutated the state with `$patch` and an object
- *
- * - `store.$patch({ name: 'newName' })`
- */
- t.patchObject="patch object",
- /**
- * Mutated the state with `$patch` and a function
- *
- * - `store.$patch(state => state.name = 'newName')`
- */
- t.patchFunction="patch function"}(j||(j={}));const $=()=>{};function g(t,e,n,s=$){t.push(e);const o=()=>{const n=t.indexOf(e);n>-1&&(t.splice(n,1),s())};return!n&&p()&&l(o),o}function S(t,...e){t.slice().forEach((t=>{t(...e)}))}const P=t=>t()
- /**
- * Marks a function as an action for `$onAction`
- * @internal
- */,w=Symbol(),E=Symbol();function x(t,e){
- // Handle Map instances
- t instanceof Map&&e instanceof Map?e.forEach(((e,n)=>t.set(n,e))):t instanceof Set&&e instanceof Set&&
- // Handle Set instances
- e.forEach(t.add,t);
- // no need to go through symbols because they cannot be serialized anyway
- for(const n in e){if(!e.hasOwnProperty(n))continue;const s=e[n],o=t[n];m(o)&&m(s)&&t.hasOwnProperty(n)&&!r(s)&&!i(s)?
- // NOTE: here I wanted to warn about inconsistent types but it's not possible because in setup stores one might
- // start the value of a property as a certain type e.g. a Map, and then for some reason, during SSR, change that
- // to `undefined`. When trying to hydrate, we want to override the Map with `undefined`.
- t[n]=x(o,s):
- // @ts-expect-error: subPatch is a valid value
- t[n]=s}return t}const I=/* istanbul ignore next */Symbol();
- /**
- * Returns whether a value should be hydrated
- *
- * @param obj - target variable
- * @returns true if `obj` should be hydrated
- */const{assign:M}=Object;function A(t,s,o={},f,p,l){let d;const y=M({actions:{}},o),b={deep:!0};
- // watcher options for $subscribe
- // internal state
- let _,O,A,F=[],k=[];// set to true at the end
- const z=f.state.value[t];
- // avoid setting the state for option stores if it is set
- // by the setup
- // avoid triggering too many listeners
- // https://github.com/vuejs/pinia/issues/1129
- let C;function J(e){let n;_=O=!1,"function"==typeof e?(e(f.state.value[t]),n={type:j.patchFunction,storeId:t,events:A}):(x(f.state.value[t],e),n={type:j.patchObject,payload:e,storeId:t,events:A});const s=C=Symbol();h().then((()=>{C===s&&(_=!0)})),O=!0,
- // because we paused the watcher, we need to manually call the subscriptions
- S(F,n,f.state.value[t])}l||z||(f.state.value[t]={}),n({});const N=l?function(){const{state:t}=o,e=t?t():{};
- // we use a patch to group all changes into one single subscription
- this.$patch((t=>{
- // @ts-expect-error: FIXME: shouldn't error?
- M(t,e)}))}:/* istanbul ignore next */
- $;
- /**
- * Helper that wraps function so it can be tracked with $onAction
- * @param fn - action to wrap
- * @param name - name of the action
- */
- const W=(e,n="")=>{if(w in e)return e[E]=n,e;const s=function(){v(f);const n=Array.from(arguments),o=[],a=[];let c;
- // @ts-expect-error
- S(k,{args:n,name:s[E],store:q,after:function(t){o.push(t)},onError:function(t){a.push(t)}});try{c=e.apply(this&&this.$id===t?this:q,n);
- // handle sync errors
- }catch(r){throw S(a,r),r}return c instanceof Promise?c.then((t=>(S(o,t),t))).catch((t=>(S(a,t),Promise.reject(t)))):(
- // trigger after callbacks
- S(o,c),c)};// will be set later
- // @ts-expect-error: we are intentionally limiting the returned type to just Fn
- // because all the added properties are internals that are exposed through `$onAction()` only
- return s[w]=!0,s[E]=n,s},X={_p:f,
- // _s: scope,
- $id:t,$onAction:g.bind(null,k),$patch:J,$reset:N,$subscribe(e,n={}){const s=g(F,e,n.detached,(()=>o())),o=d.run((()=>a((()=>f.state.value[t]),(s=>{("sync"===n.flush?O:_)&&e({storeId:t,type:j.direct,events:A},s)}),M({},b,n))));return s},$dispose:function(){d.stop(),F=[],k=[],f._s.delete(t)}},q=c(X);
- // store the partial store now so the setup of stores can instantiate each other before they are finished without
- // creating infinite loops.
- f._s.set(t,q);const B=(f._a&&f._a.runWithContext||P)((()=>f._e.run((()=>(d=e()).run((()=>s({action:W})))))));
- // TODO: idea create skipSerialize that marks properties as non serializable and they are skipped
- // overwrite existing actions to support $onAction
- for(const e in B){const n=B[e];if(r(n)&&(!r(G=n)||!G.effect)||i(n))
- // mark it as a piece of state to be serialized
- l||(
- // in setup stores we must hydrate the state and sync pinia state tree with the refs the user just created
- !z||m(D=n)&&D.hasOwnProperty(I)||(r(n)?n.value=z[e]:
- // probably a reactive object, lets recursively assign
- // @ts-expect-error: prop is unknown
- x(n,z[e])),f.state.value[t][e]=n);
- // action
- else if("function"==typeof n){const t=W(n,e);
- // this a hot module replacement store because the hotUpdate method needs
- // to do it with the right context
- /* istanbul ignore if */
- // @ts-expect-error
- B[e]=t,
- // list actions so they can be used in plugins
- // @ts-expect-error
- y.actions[e]=n}}
- // add the state, getters, and action properties
- /* istanbul ignore if */var D,G;return M(q,B),
- // allows retrieving reactive objects with `storeToRefs()`. Must be called after assigning to the reactive object.
- // Make `storeToRefs()` work with `reactive()` #799
- M(u(q),B),
- // use this instead of a computed with setter to be able to create it anywhere
- // without linking the computed lifespan to wherever the store is first
- // created.
- Object.defineProperty(q,"$state",{get:()=>f.state.value[t],set:t=>{J((e=>{
- // @ts-expect-error: FIXME: shouldn't error?
- M(e,t)}))}}),
- // apply all plugins
- f._p.forEach((t=>{M(q,d.run((()=>t({store:q,app:f._a,pinia:f,options:y}))))})),
- // only apply hydrate to option stores with an initial state in pinia
- z&&l&&o.hydrate&&o.hydrate(q.$state,z),_=!0,O=!0,q}
- // allows unused stores to be tree shaken
- /*! #__NO_SIDE_EFFECTS__ */function F(
- // TODO: add proper types from above
- t,e,n){let a,c;const r="function"==typeof e;function i(t,n){const i=f();(t=
- // in test mode, ignore the argument provided as we can always retrieve a
- // pinia instance with getActivePinia()
- t||(i?o(_,null):null))&&v(t),(t=b)._s.has(a)||(
- // creating the store registers it in `pinia._s`
- r?A(a,e,c,t):function(t,e,n){const{state:o,actions:a,getters:c}=e,r=n.state.value[t];let i;i=A(t,(function(){r||(n.state.value[t]=o?o():{});
- // avoid creating a state in pinia.state.value
- const e=d(n.state.value[t]);return M(e,a,Object.keys(c||{}).reduce(((e,o)=>(e[o]=s(y((()=>{v(n);
- // it was created just before
- const e=n._s.get(t);
- // @ts-expect-error
- // return getters![name].call(context, context)
- // TODO: avoid reading the getter while assigning with a global variable
- return c[o].call(e,e)}))),e)),{}))}),e,n,0,!0)}(a,c,t));
- // StoreGeneric cannot be casted towards Store
- return t._s.get(a)}return"string"==typeof t?(a=t,
- // the option store setup will contain the actual options in this case
- c=r?n:e):(c=t,a=t.id),i.$id=a,i}export{O as c,F as d};
- //# sourceMappingURL=pinia-0c8641d4.js.map
|