{"version":3,"sources":["jsdelivr-header.js","/npm/pinia@2.0.33/dist/pinia.iife.js"],"names":[],"mappings":"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","file":"/npm/pinia@2.0.33/dist/pinia.iife.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/pinia@2.0.33/dist/pinia.iife.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*!\n  * pinia v2.0.33\n  * (c) 2023 Eduardo San Martin Morote\n  * @license MIT\n  */\nvar Pinia = (function (exports, vueDemi) {\n  'use strict';\n\n  /**\r\n   * setActivePinia must be called to handle SSR at the top of functions like\r\n   * `fetch`, `setup`, `serverPrefetch` and others\r\n   */\r\n  let activePinia;\r\n  /**\r\n   * Sets or unsets the active pinia. Used in SSR and internally when calling\r\n   * actions and getters\r\n   *\r\n   * @param pinia - Pinia instance\r\n   */\r\n  const setActivePinia = (pinia) => (activePinia = pinia);\r\n  /**\r\n   * Get the currently active pinia if there is any.\r\n   */\r\n  const getActivePinia = () => (vueDemi.getCurrentInstance() && vueDemi.inject(piniaSymbol)) || activePinia;\r\n  const piniaSymbol = (Symbol('pinia') );\n\n  function getDevtoolsGlobalHook() {\n      return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;\n  }\n  function getTarget() {\n      // @ts-ignore\n      return (typeof navigator !== 'undefined' && typeof window !== 'undefined')\n          ? window\n          : typeof global !== 'undefined'\n              ? global\n              : {};\n  }\n  const isProxyAvailable = typeof Proxy === 'function';\n\n  const HOOK_SETUP = 'devtools-plugin:setup';\n  const HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set';\n\n  let supported;\n  let perf;\n  function isPerformanceSupported() {\n      var _a;\n      if (supported !== undefined) {\n          return supported;\n      }\n      if (typeof window !== 'undefined' && window.performance) {\n          supported = true;\n          perf = window.performance;\n      }\n      else if (typeof global !== 'undefined' && ((_a = global.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {\n          supported = true;\n          perf = global.perf_hooks.performance;\n      }\n      else {\n          supported = false;\n      }\n      return supported;\n  }\n  function now() {\n      return isPerformanceSupported() ? perf.now() : Date.now();\n  }\n\n  class ApiProxy {\n      constructor(plugin, hook) {\n          this.target = null;\n          this.targetQueue = [];\n          this.onQueue = [];\n          this.plugin = plugin;\n          this.hook = hook;\n          const defaultSettings = {};\n          if (plugin.settings) {\n              for (const id in plugin.settings) {\n                  const item = plugin.settings[id];\n                  defaultSettings[id] = item.defaultValue;\n              }\n          }\n          const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;\n          let currentSettings = Object.assign({}, defaultSettings);\n          try {\n              const raw = localStorage.getItem(localSettingsSaveId);\n              const data = JSON.parse(raw);\n              Object.assign(currentSettings, data);\n          }\n          catch (e) {\n              // noop\n          }\n          this.fallbacks = {\n              getSettings() {\n                  return currentSettings;\n              },\n              setSettings(value) {\n                  try {\n                      localStorage.setItem(localSettingsSaveId, JSON.stringify(value));\n                  }\n                  catch (e) {\n                      // noop\n                  }\n                  currentSettings = value;\n              },\n              now() {\n                  return now();\n              },\n          };\n          if (hook) {\n              hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {\n                  if (pluginId === this.plugin.id) {\n                      this.fallbacks.setSettings(value);\n                  }\n              });\n          }\n          this.proxiedOn = new Proxy({}, {\n              get: (_target, prop) => {\n                  if (this.target) {\n                      return this.target.on[prop];\n                  }\n                  else {\n                      return (...args) => {\n                          this.onQueue.push({\n                              method: prop,\n                              args,\n                          });\n                      };\n                  }\n              },\n          });\n          this.proxiedTarget = new Proxy({}, {\n              get: (_target, prop) => {\n                  if (this.target) {\n                      return this.target[prop];\n                  }\n                  else if (prop === 'on') {\n                      return this.proxiedOn;\n                  }\n                  else if (Object.keys(this.fallbacks).includes(prop)) {\n                      return (...args) => {\n                          this.targetQueue.push({\n                              method: prop,\n                              args,\n                              resolve: () => { },\n                          });\n                          return this.fallbacks[prop](...args);\n                      };\n                  }\n                  else {\n                      return (...args) => {\n                          return new Promise(resolve => {\n                              this.targetQueue.push({\n                                  method: prop,\n                                  args,\n                                  resolve,\n                              });\n                          });\n                      };\n                  }\n              },\n          });\n      }\n      async setRealTarget(target) {\n          this.target = target;\n          for (const item of this.onQueue) {\n              this.target.on[item.method](...item.args);\n          }\n          for (const item of this.targetQueue) {\n              item.resolve(await this.target[item.method](...item.args));\n          }\n      }\n  }\n\n  function setupDevtoolsPlugin(pluginDescriptor, setupFn) {\n      const descriptor = pluginDescriptor;\n      const target = getTarget();\n      const hook = getDevtoolsGlobalHook();\n      const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy;\n      if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {\n          hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);\n      }\n      else {\n          const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null;\n          const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];\n          list.push({\n              pluginDescriptor: descriptor,\n              setupFn,\n              proxy,\n          });\n          if (proxy)\n              setupFn(proxy.proxiedTarget);\n      }\n  }\n\n  function isPlainObject(\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  o) {\r\n      return (o &&\r\n          typeof o === 'object' &&\r\n          Object.prototype.toString.call(o) === '[object Object]' &&\r\n          typeof o.toJSON !== 'function');\r\n  }\r\n  // type DeepReadonly<T> = { readonly [P in keyof T]: DeepReadonly<T[P]> }\r\n  // TODO: can we change these to numbers?\r\n  /**\r\n   * Possible types for SubscriptionCallback\r\n   */\r\n  exports.MutationType = void 0;\r\n  (function (MutationType) {\r\n      /**\r\n       * Direct mutation of the state:\r\n       *\r\n       * - `store.name = 'new name'`\r\n       * - `store.$state.name = 'new name'`\r\n       * - `store.list.push('new item')`\r\n       */\r\n      MutationType[\"direct\"] = \"direct\";\r\n      /**\r\n       * Mutated the state with `$patch` and an object\r\n       *\r\n       * - `store.$patch({ name: 'newName' })`\r\n       */\r\n      MutationType[\"patchObject\"] = \"patch object\";\r\n      /**\r\n       * Mutated the state with `$patch` and a function\r\n       *\r\n       * - `store.$patch(state => state.name = 'newName')`\r\n       */\r\n      MutationType[\"patchFunction\"] = \"patch function\";\r\n      // maybe reset? for $state = {} and $reset\r\n  })(exports.MutationType || (exports.MutationType = {}));\n\n  const IS_CLIENT = typeof window !== 'undefined';\r\n  /**\r\n   * Should we add the devtools plugins.\r\n   * - only if dev mode or forced through the prod devtools flag\r\n   * - not in test\r\n   * - only if window exists (could change in the future)\r\n   */\r\n  const USE_DEVTOOLS = IS_CLIENT;\n\n  /*\r\n   * FileSaver.js A saveAs() FileSaver implementation.\r\n   *\r\n   * Originally by Eli Grey, adapted as an ESM module by Eduardo San Martin\r\n   * Morote.\r\n   *\r\n   * License : MIT\r\n   */\r\n  // The one and only way of getting global scope in all environments\r\n  // https://stackoverflow.com/q/3277182/1008999\r\n  const _global = /*#__PURE__*/ (() => typeof window === 'object' && window.window === window\r\n      ? window\r\n      : typeof self === 'object' && self.self === self\r\n          ? self\r\n          : typeof global === 'object' && global.global === global\r\n              ? global\r\n              : typeof globalThis === 'object'\r\n                  ? globalThis\r\n                  : { HTMLElement: null })();\r\n  function bom(blob, { autoBom = false } = {}) {\r\n      // prepend BOM for UTF-8 XML and text/* types (including HTML)\r\n      // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\r\n      if (autoBom &&\r\n          /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\r\n          return new Blob([String.fromCharCode(0xfeff), blob], { type: blob.type });\r\n      }\r\n      return blob;\r\n  }\r\n  function download(url, name, opts) {\r\n      const xhr = new XMLHttpRequest();\r\n      xhr.open('GET', url);\r\n      xhr.responseType = 'blob';\r\n      xhr.onload = function () {\r\n          saveAs(xhr.response, name, opts);\r\n      };\r\n      xhr.onerror = function () {\r\n          console.error('could not download file');\r\n      };\r\n      xhr.send();\r\n  }\r\n  function corsEnabled(url) {\r\n      const xhr = new XMLHttpRequest();\r\n      // use sync to avoid popup blocker\r\n      xhr.open('HEAD', url, false);\r\n      try {\r\n          xhr.send();\r\n      }\r\n      catch (e) { }\r\n      return xhr.status >= 200 && xhr.status <= 299;\r\n  }\r\n  // `a.click()` doesn't work for all browsers (#465)\r\n  function click(node) {\r\n      try {\r\n          node.dispatchEvent(new MouseEvent('click'));\r\n      }\r\n      catch (e) {\r\n          const evt = document.createEvent('MouseEvents');\r\n          evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null);\r\n          node.dispatchEvent(evt);\r\n      }\r\n  }\r\n  const _navigator = \r\n   typeof navigator === 'object' ? navigator : { userAgent: '' };\r\n  // Detect WebView inside a native macOS app by ruling out all browsers\r\n  // We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\r\n  // https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\r\n  const isMacOSWebView = /*#__PURE__*/ (() => /Macintosh/.test(_navigator.userAgent) &&\r\n      /AppleWebKit/.test(_navigator.userAgent) &&\r\n      !/Safari/.test(_navigator.userAgent))();\r\n  const saveAs = !IS_CLIENT\r\n      ? () => { } // noop\r\n      : // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView or mini program\r\n          typeof HTMLAnchorElement !== 'undefined' &&\r\n              'download' in HTMLAnchorElement.prototype &&\r\n              !isMacOSWebView\r\n              ? downloadSaveAs\r\n              : // Use msSaveOrOpenBlob as a second approach\r\n                  'msSaveOrOpenBlob' in _navigator\r\n                      ? msSaveAs\r\n                      : // Fallback to using FileReader and a popup\r\n                          fileSaverSaveAs;\r\n  function downloadSaveAs(blob, name = 'download', opts) {\r\n      const a = document.createElement('a');\r\n      a.download = name;\r\n      a.rel = 'noopener'; // tabnabbing\r\n      // TODO: detect chrome extensions & packaged apps\r\n      // a.target = '_blank'\r\n      if (typeof blob === 'string') {\r\n          // Support regular links\r\n          a.href = blob;\r\n          if (a.origin !== location.origin) {\r\n              if (corsEnabled(a.href)) {\r\n                  download(blob, name, opts);\r\n              }\r\n              else {\r\n                  a.target = '_blank';\r\n                  click(a);\r\n              }\r\n          }\r\n          else {\r\n              click(a);\r\n          }\r\n      }\r\n      else {\r\n          // Support blobs\r\n          a.href = URL.createObjectURL(blob);\r\n          setTimeout(function () {\r\n              URL.revokeObjectURL(a.href);\r\n          }, 4e4); // 40s\r\n          setTimeout(function () {\r\n              click(a);\r\n          }, 0);\r\n      }\r\n  }\r\n  function msSaveAs(blob, name = 'download', opts) {\r\n      if (typeof blob === 'string') {\r\n          if (corsEnabled(blob)) {\r\n              download(blob, name, opts);\r\n          }\r\n          else {\r\n              const a = document.createElement('a');\r\n              a.href = blob;\r\n              a.target = '_blank';\r\n              setTimeout(function () {\r\n                  click(a);\r\n              });\r\n          }\r\n      }\r\n      else {\r\n          // @ts-ignore: works on windows\r\n          navigator.msSaveOrOpenBlob(bom(blob, opts), name);\r\n      }\r\n  }\r\n  function fileSaverSaveAs(blob, name, opts, popup) {\r\n      // Open a popup immediately do go around popup blocker\r\n      // Mostly only available on user interaction and the fileReader is async so...\r\n      popup = popup || open('', '_blank');\r\n      if (popup) {\r\n          popup.document.title = popup.document.body.innerText = 'downloading...';\r\n      }\r\n      if (typeof blob === 'string')\r\n          return download(blob, name, opts);\r\n      const force = blob.type === 'application/octet-stream';\r\n      const isSafari = /constructor/i.test(String(_global.HTMLElement)) || 'safari' in _global;\r\n      const isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent);\r\n      if ((isChromeIOS || (force && isSafari) || isMacOSWebView) &&\r\n          typeof FileReader !== 'undefined') {\r\n          // Safari doesn't allow downloading of blob URLs\r\n          const reader = new FileReader();\r\n          reader.onloadend = function () {\r\n              let url = reader.result;\r\n              if (typeof url !== 'string') {\r\n                  popup = null;\r\n                  throw new Error('Wrong reader.result type');\r\n              }\r\n              url = isChromeIOS\r\n                  ? url\r\n                  : url.replace(/^data:[^;]*;/, 'data:attachment/file;');\r\n              if (popup) {\r\n                  popup.location.href = url;\r\n              }\r\n              else {\r\n                  location.assign(url);\r\n              }\r\n              popup = null; // reverse-tabnabbing #460\r\n          };\r\n          reader.readAsDataURL(blob);\r\n      }\r\n      else {\r\n          const url = URL.createObjectURL(blob);\r\n          if (popup)\r\n              popup.location.assign(url);\r\n          else\r\n              location.href = url;\r\n          popup = null; // reverse-tabnabbing #460\r\n          setTimeout(function () {\r\n              URL.revokeObjectURL(url);\r\n          }, 4e4); // 40s\r\n      }\r\n  }\n\n  /**\r\n   * Shows a toast or console.log\r\n   *\r\n   * @param message - message to log\r\n   * @param type - different color of the tooltip\r\n   */\r\n  function toastMessage(message, type) {\r\n      const piniaMessage = '🍍 ' + message;\r\n      if (typeof __VUE_DEVTOOLS_TOAST__ === 'function') {\r\n          __VUE_DEVTOOLS_TOAST__(piniaMessage, type);\r\n      }\r\n      else if (type === 'error') {\r\n          console.error(piniaMessage);\r\n      }\r\n      else if (type === 'warn') {\r\n          console.warn(piniaMessage);\r\n      }\r\n      else {\r\n          console.log(piniaMessage);\r\n      }\r\n  }\r\n  function isPinia(o) {\r\n      return '_a' in o && 'install' in o;\r\n  }\n\n  function checkClipboardAccess() {\r\n      if (!('clipboard' in navigator)) {\r\n          toastMessage(`Your browser doesn't support the Clipboard API`, 'error');\r\n          return true;\r\n      }\r\n  }\r\n  function checkNotFocusedError(error) {\r\n      if (error instanceof Error &&\r\n          error.message.toLowerCase().includes('document is not focused')) {\r\n          toastMessage('You need to activate the \"Emulate a focused page\" setting in the \"Rendering\" panel of devtools.', 'warn');\r\n          return true;\r\n      }\r\n      return false;\r\n  }\r\n  async function actionGlobalCopyState(pinia) {\r\n      if (checkClipboardAccess())\r\n          return;\r\n      try {\r\n          await navigator.clipboard.writeText(JSON.stringify(pinia.state.value));\r\n          toastMessage('Global state copied to clipboard.');\r\n      }\r\n      catch (error) {\r\n          if (checkNotFocusedError(error))\r\n              return;\r\n          toastMessage(`Failed to serialize the state. Check the console for more details.`, 'error');\r\n          console.error(error);\r\n      }\r\n  }\r\n  async function actionGlobalPasteState(pinia) {\r\n      if (checkClipboardAccess())\r\n          return;\r\n      try {\r\n          pinia.state.value = JSON.parse(await navigator.clipboard.readText());\r\n          toastMessage('Global state pasted from clipboard.');\r\n      }\r\n      catch (error) {\r\n          if (checkNotFocusedError(error))\r\n              return;\r\n          toastMessage(`Failed to deserialize the state from clipboard. Check the console for more details.`, 'error');\r\n          console.error(error);\r\n      }\r\n  }\r\n  async function actionGlobalSaveState(pinia) {\r\n      try {\r\n          saveAs(new Blob([JSON.stringify(pinia.state.value)], {\r\n              type: 'text/plain;charset=utf-8',\r\n          }), 'pinia-state.json');\r\n      }\r\n      catch (error) {\r\n          toastMessage(`Failed to export the state as JSON. Check the console for more details.`, 'error');\r\n          console.error(error);\r\n      }\r\n  }\r\n  let fileInput;\r\n  function getFileOpener() {\r\n      if (!fileInput) {\r\n          fileInput = document.createElement('input');\r\n          fileInput.type = 'file';\r\n          fileInput.accept = '.json';\r\n      }\r\n      function openFile() {\r\n          return new Promise((resolve, reject) => {\r\n              fileInput.onchange = async () => {\r\n                  const files = fileInput.files;\r\n                  if (!files)\r\n                      return resolve(null);\r\n                  const file = files.item(0);\r\n                  if (!file)\r\n                      return resolve(null);\r\n                  return resolve({ text: await file.text(), file });\r\n              };\r\n              // @ts-ignore: TODO: changed from 4.3 to 4.4\r\n              fileInput.oncancel = () => resolve(null);\r\n              fileInput.onerror = reject;\r\n              fileInput.click();\r\n          });\r\n      }\r\n      return openFile;\r\n  }\r\n  async function actionGlobalOpenStateFile(pinia) {\r\n      try {\r\n          const open = await getFileOpener();\r\n          const result = await open();\r\n          if (!result)\r\n              return;\r\n          const { text, file } = result;\r\n          pinia.state.value = JSON.parse(text);\r\n          toastMessage(`Global state imported from \"${file.name}\".`);\r\n      }\r\n      catch (error) {\r\n          toastMessage(`Failed to export the state as JSON. Check the console for more details.`, 'error');\r\n          console.error(error);\r\n      }\r\n  }\n\n  function formatDisplay(display) {\r\n      return {\r\n          _custom: {\r\n              display,\r\n          },\r\n      };\r\n  }\r\n  const PINIA_ROOT_LABEL = '🍍 Pinia (root)';\r\n  const PINIA_ROOT_ID = '_root';\r\n  function formatStoreForInspectorTree(store) {\r\n      return isPinia(store)\r\n          ? {\r\n              id: PINIA_ROOT_ID,\r\n              label: PINIA_ROOT_LABEL,\r\n          }\r\n          : {\r\n              id: store.$id,\r\n              label: store.$id,\r\n          };\r\n  }\r\n  function formatStoreForInspectorState(store) {\r\n      if (isPinia(store)) {\r\n          const storeNames = Array.from(store._s.keys());\r\n          const storeMap = store._s;\r\n          const state = {\r\n              state: storeNames.map((storeId) => ({\r\n                  editable: true,\r\n                  key: storeId,\r\n                  value: store.state.value[storeId],\r\n              })),\r\n              getters: storeNames\r\n                  .filter((id) => storeMap.get(id)._getters)\r\n                  .map((id) => {\r\n                  const store = storeMap.get(id);\r\n                  return {\r\n                      editable: false,\r\n                      key: id,\r\n                      value: store._getters.reduce((getters, key) => {\r\n                          getters[key] = store[key];\r\n                          return getters;\r\n                      }, {}),\r\n                  };\r\n              }),\r\n          };\r\n          return state;\r\n      }\r\n      const state = {\r\n          state: Object.keys(store.$state).map((key) => ({\r\n              editable: true,\r\n              key,\r\n              value: store.$state[key],\r\n          })),\r\n      };\r\n      // avoid adding empty getters\r\n      if (store._getters && store._getters.length) {\r\n          state.getters = store._getters.map((getterName) => ({\r\n              editable: false,\r\n              key: getterName,\r\n              value: store[getterName],\r\n          }));\r\n      }\r\n      if (store._customProperties.size) {\r\n          state.customProperties = Array.from(store._customProperties).map((key) => ({\r\n              editable: true,\r\n              key,\r\n              value: store[key],\r\n          }));\r\n      }\r\n      return state;\r\n  }\r\n  function formatEventData(events) {\r\n      if (!events)\r\n          return {};\r\n      if (Array.isArray(events)) {\r\n          // TODO: handle add and delete for arrays and objects\r\n          return events.reduce((data, event) => {\r\n              data.keys.push(event.key);\r\n              data.operations.push(event.type);\r\n              data.oldValue[event.key] = event.oldValue;\r\n              data.newValue[event.key] = event.newValue;\r\n              return data;\r\n          }, {\r\n              oldValue: {},\r\n              keys: [],\r\n              operations: [],\r\n              newValue: {},\r\n          });\r\n      }\r\n      else {\r\n          return {\r\n              operation: formatDisplay(events.type),\r\n              key: formatDisplay(events.key),\r\n              oldValue: events.oldValue,\r\n              newValue: events.newValue,\r\n          };\r\n      }\r\n  }\r\n  function formatMutationType(type) {\r\n      switch (type) {\r\n          case exports.MutationType.direct:\r\n              return 'mutation';\r\n          case exports.MutationType.patchFunction:\r\n              return '$patch';\r\n          case exports.MutationType.patchObject:\r\n              return '$patch';\r\n          default:\r\n              return 'unknown';\r\n      }\r\n  }\n\n  // timeline can be paused when directly changing the state\r\n  let isTimelineActive = true;\r\n  const componentStateTypes = [];\r\n  const MUTATIONS_LAYER_ID = 'pinia:mutations';\r\n  const INSPECTOR_ID = 'pinia';\r\n  const { assign: assign$1 } = Object;\r\n  /**\r\n   * Gets the displayed name of a store in devtools\r\n   *\r\n   * @param id - id of the store\r\n   * @returns a formatted string\r\n   */\r\n  const getStoreType = (id) => '🍍 ' + id;\r\n  /**\r\n   * Add the pinia plugin without any store. Allows displaying a Pinia plugin tab\r\n   * as soon as it is added to the application.\r\n   *\r\n   * @param app - Vue application\r\n   * @param pinia - pinia instance\r\n   */\r\n  function registerPiniaDevtools(app, pinia) {\r\n      setupDevtoolsPlugin({\r\n          id: 'dev.esm.pinia',\r\n          label: 'Pinia 🍍',\r\n          logo: 'https://pinia.vuejs.org/logo.svg',\r\n          packageName: 'pinia',\r\n          homepage: 'https://pinia.vuejs.org',\r\n          componentStateTypes,\r\n          app,\r\n      }, (api) => {\r\n          if (typeof api.now !== 'function') {\r\n              toastMessage('You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.');\r\n          }\r\n          api.addTimelineLayer({\r\n              id: MUTATIONS_LAYER_ID,\r\n              label: `Pinia 🍍`,\r\n              color: 0xe5df88,\r\n          });\r\n          api.addInspector({\r\n              id: INSPECTOR_ID,\r\n              label: 'Pinia 🍍',\r\n              icon: 'storage',\r\n              treeFilterPlaceholder: 'Search stores',\r\n              actions: [\r\n                  {\r\n                      icon: 'content_copy',\r\n                      action: () => {\r\n                          actionGlobalCopyState(pinia);\r\n                      },\r\n                      tooltip: 'Serialize and copy the state',\r\n                  },\r\n                  {\r\n                      icon: 'content_paste',\r\n                      action: async () => {\r\n                          await actionGlobalPasteState(pinia);\r\n                          api.sendInspectorTree(INSPECTOR_ID);\r\n                          api.sendInspectorState(INSPECTOR_ID);\r\n                      },\r\n                      tooltip: 'Replace the state with the content of your clipboard',\r\n                  },\r\n                  {\r\n                      icon: 'save',\r\n                      action: () => {\r\n                          actionGlobalSaveState(pinia);\r\n                      },\r\n                      tooltip: 'Save the state as a JSON file',\r\n                  },\r\n                  {\r\n                      icon: 'folder_open',\r\n                      action: async () => {\r\n                          await actionGlobalOpenStateFile(pinia);\r\n                          api.sendInspectorTree(INSPECTOR_ID);\r\n                          api.sendInspectorState(INSPECTOR_ID);\r\n                      },\r\n                      tooltip: 'Import the state from a JSON file',\r\n                  },\r\n              ],\r\n              nodeActions: [\r\n                  {\r\n                      icon: 'restore',\r\n                      tooltip: 'Reset the state (option store only)',\r\n                      action: (nodeId) => {\r\n                          const store = pinia._s.get(nodeId);\r\n                          if (!store) {\r\n                              toastMessage(`Cannot reset \"${nodeId}\" store because it wasn't found.`, 'warn');\r\n                          }\r\n                          else if (!store._isOptionsAPI) {\r\n                              toastMessage(`Cannot reset \"${nodeId}\" store because it's a setup store.`, 'warn');\r\n                          }\r\n                          else {\r\n                              store.$reset();\r\n                              toastMessage(`Store \"${nodeId}\" reset.`);\r\n                          }\r\n                      },\r\n                  },\r\n              ],\r\n          });\r\n          api.on.inspectComponent((payload, ctx) => {\r\n              const proxy = (payload.componentInstance &&\r\n                  payload.componentInstance.proxy);\r\n              if (proxy && proxy._pStores) {\r\n                  const piniaStores = payload.componentInstance.proxy._pStores;\r\n                  Object.values(piniaStores).forEach((store) => {\r\n                      payload.instanceData.state.push({\r\n                          type: getStoreType(store.$id),\r\n                          key: 'state',\r\n                          editable: true,\r\n                          value: store._isOptionsAPI\r\n                              ? {\r\n                                  _custom: {\r\n                                      value: vueDemi.toRaw(store.$state),\r\n                                      actions: [\r\n                                          {\r\n                                              icon: 'restore',\r\n                                              tooltip: 'Reset the state of this store',\r\n                                              action: () => store.$reset(),\r\n                                          },\r\n                                      ],\r\n                                  },\r\n                              }\r\n                              : // NOTE: workaround to unwrap transferred refs\r\n                                  Object.keys(store.$state).reduce((state, key) => {\r\n                                      state[key] = store.$state[key];\r\n                                      return state;\r\n                                  }, {}),\r\n                      });\r\n                      if (store._getters && store._getters.length) {\r\n                          payload.instanceData.state.push({\r\n                              type: getStoreType(store.$id),\r\n                              key: 'getters',\r\n                              editable: false,\r\n                              value: store._getters.reduce((getters, key) => {\r\n                                  try {\r\n                                      getters[key] = store[key];\r\n                                  }\r\n                                  catch (error) {\r\n                                      // @ts-expect-error: we just want to show it in devtools\r\n                                      getters[key] = error;\r\n                                  }\r\n                                  return getters;\r\n                              }, {}),\r\n                          });\r\n                      }\r\n                  });\r\n              }\r\n          });\r\n          api.on.getInspectorTree((payload) => {\r\n              if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\r\n                  let stores = [pinia];\r\n                  stores = stores.concat(Array.from(pinia._s.values()));\r\n                  payload.rootNodes = (payload.filter\r\n                      ? stores.filter((store) => '$id' in store\r\n                          ? store.$id\r\n                              .toLowerCase()\r\n                              .includes(payload.filter.toLowerCase())\r\n                          : PINIA_ROOT_LABEL.toLowerCase().includes(payload.filter.toLowerCase()))\r\n                      : stores).map(formatStoreForInspectorTree);\r\n              }\r\n          });\r\n          api.on.getInspectorState((payload) => {\r\n              if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\r\n                  const inspectedStore = payload.nodeId === PINIA_ROOT_ID\r\n                      ? pinia\r\n                      : pinia._s.get(payload.nodeId);\r\n                  if (!inspectedStore) {\r\n                      // this could be the selected store restored for a different project\r\n                      // so it's better not to say anything here\r\n                      return;\r\n                  }\r\n                  if (inspectedStore) {\r\n                      payload.state = formatStoreForInspectorState(inspectedStore);\r\n                  }\r\n              }\r\n          });\r\n          api.on.editInspectorState((payload, ctx) => {\r\n              if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\r\n                  const inspectedStore = payload.nodeId === PINIA_ROOT_ID\r\n                      ? pinia\r\n                      : pinia._s.get(payload.nodeId);\r\n                  if (!inspectedStore) {\r\n                      return toastMessage(`store \"${payload.nodeId}\" not found`, 'error');\r\n                  }\r\n                  const { path } = payload;\r\n                  if (!isPinia(inspectedStore)) {\r\n                      // access only the state\r\n                      if (path.length !== 1 ||\r\n                          !inspectedStore._customProperties.has(path[0]) ||\r\n                          path[0] in inspectedStore.$state) {\r\n                          path.unshift('$state');\r\n                      }\r\n                  }\r\n                  else {\r\n                      // Root access, we can omit the `.value` because the devtools API does it for us\r\n                      path.unshift('state');\r\n                  }\r\n                  isTimelineActive = false;\r\n                  payload.set(inspectedStore, path, payload.state.value);\r\n                  isTimelineActive = true;\r\n              }\r\n          });\r\n          api.on.editComponentState((payload) => {\r\n              if (payload.type.startsWith('🍍')) {\r\n                  const storeId = payload.type.replace(/^🍍\\s*/, '');\r\n                  const store = pinia._s.get(storeId);\r\n                  if (!store) {\r\n                      return toastMessage(`store \"${storeId}\" not found`, 'error');\r\n                  }\r\n                  const { path } = payload;\r\n                  if (path[0] !== 'state') {\r\n                      return toastMessage(`Invalid path for store \"${storeId}\":\\n${path}\\nOnly state can be modified.`);\r\n                  }\r\n                  // rewrite the first entry to be able to directly set the state as\r\n                  // well as any other path\r\n                  path[0] = '$state';\r\n                  isTimelineActive = false;\r\n                  payload.set(store, path, payload.state.value);\r\n                  isTimelineActive = true;\r\n              }\r\n          });\r\n      });\r\n  }\r\n  function addStoreToDevtools(app, store) {\r\n      if (!componentStateTypes.includes(getStoreType(store.$id))) {\r\n          componentStateTypes.push(getStoreType(store.$id));\r\n      }\r\n      setupDevtoolsPlugin({\r\n          id: 'dev.esm.pinia',\r\n          label: 'Pinia 🍍',\r\n          logo: 'https://pinia.vuejs.org/logo.svg',\r\n          packageName: 'pinia',\r\n          homepage: 'https://pinia.vuejs.org',\r\n          componentStateTypes,\r\n          app,\r\n          settings: {\r\n              logStoreChanges: {\r\n                  label: 'Notify about new/deleted stores',\r\n                  type: 'boolean',\r\n                  defaultValue: true,\r\n              },\r\n              // useEmojis: {\r\n              //   label: 'Use emojis in messages ⚡️',\r\n              //   type: 'boolean',\r\n              //   defaultValue: true,\r\n              // },\r\n          },\r\n      }, (api) => {\r\n          // gracefully handle errors\r\n          const now = typeof api.now === 'function' ? api.now.bind(api) : Date.now;\r\n          store.$onAction(({ after, onError, name, args }) => {\r\n              const groupId = runningActionId++;\r\n              api.addTimelineEvent({\r\n                  layerId: MUTATIONS_LAYER_ID,\r\n                  event: {\r\n                      time: now(),\r\n                      title: '🛫 ' + name,\r\n                      subtitle: 'start',\r\n                      data: {\r\n                          store: formatDisplay(store.$id),\r\n                          action: formatDisplay(name),\r\n                          args,\r\n                      },\r\n                      groupId,\r\n                  },\r\n              });\r\n              after((result) => {\r\n                  activeAction = undefined;\r\n                  api.addTimelineEvent({\r\n                      layerId: MUTATIONS_LAYER_ID,\r\n                      event: {\r\n                          time: now(),\r\n                          title: '🛬 ' + name,\r\n                          subtitle: 'end',\r\n                          data: {\r\n                              store: formatDisplay(store.$id),\r\n                              action: formatDisplay(name),\r\n                              args,\r\n                              result,\r\n                          },\r\n                          groupId,\r\n                      },\r\n                  });\r\n              });\r\n              onError((error) => {\r\n                  activeAction = undefined;\r\n                  api.addTimelineEvent({\r\n                      layerId: MUTATIONS_LAYER_ID,\r\n                      event: {\r\n                          time: now(),\r\n                          logType: 'error',\r\n                          title: '💥 ' + name,\r\n                          subtitle: 'end',\r\n                          data: {\r\n                              store: formatDisplay(store.$id),\r\n                              action: formatDisplay(name),\r\n                              args,\r\n                              error,\r\n                          },\r\n                          groupId,\r\n                      },\r\n                  });\r\n              });\r\n          }, true);\r\n          store._customProperties.forEach((name) => {\r\n              vueDemi.watch(() => vueDemi.unref(store[name]), (newValue, oldValue) => {\r\n                  api.notifyComponentUpdate();\r\n                  api.sendInspectorState(INSPECTOR_ID);\r\n                  if (isTimelineActive) {\r\n                      api.addTimelineEvent({\r\n                          layerId: MUTATIONS_LAYER_ID,\r\n                          event: {\r\n                              time: now(),\r\n                              title: 'Change',\r\n                              subtitle: name,\r\n                              data: {\r\n                                  newValue,\r\n                                  oldValue,\r\n                              },\r\n                              groupId: activeAction,\r\n                          },\r\n                      });\r\n                  }\r\n              }, { deep: true });\r\n          });\r\n          store.$subscribe(({ events, type }, state) => {\r\n              api.notifyComponentUpdate();\r\n              api.sendInspectorState(INSPECTOR_ID);\r\n              if (!isTimelineActive)\r\n                  return;\r\n              // rootStore.state[store.id] = state\r\n              const eventData = {\r\n                  time: now(),\r\n                  title: formatMutationType(type),\r\n                  data: assign$1({ store: formatDisplay(store.$id) }, formatEventData(events)),\r\n                  groupId: activeAction,\r\n              };\r\n              // reset for the next mutation\r\n              activeAction = undefined;\r\n              if (type === exports.MutationType.patchFunction) {\r\n                  eventData.subtitle = '⤵️';\r\n              }\r\n              else if (type === exports.MutationType.patchObject) {\r\n                  eventData.subtitle = '🧩';\r\n              }\r\n              else if (events && !Array.isArray(events)) {\r\n                  eventData.subtitle = events.type;\r\n              }\r\n              if (events) {\r\n                  eventData.data['rawEvent(s)'] = {\r\n                      _custom: {\r\n                          display: 'DebuggerEvent',\r\n                          type: 'object',\r\n                          tooltip: 'raw DebuggerEvent[]',\r\n                          value: events,\r\n                      },\r\n                  };\r\n              }\r\n              api.addTimelineEvent({\r\n                  layerId: MUTATIONS_LAYER_ID,\r\n                  event: eventData,\r\n              });\r\n          }, { detached: true, flush: 'sync' });\r\n          const hotUpdate = store._hotUpdate;\r\n          store._hotUpdate = vueDemi.markRaw((newStore) => {\r\n              hotUpdate(newStore);\r\n              api.addTimelineEvent({\r\n                  layerId: MUTATIONS_LAYER_ID,\r\n                  event: {\r\n                      time: now(),\r\n                      title: '🔥 ' + store.$id,\r\n                      subtitle: 'HMR update',\r\n                      data: {\r\n                          store: formatDisplay(store.$id),\r\n                          info: formatDisplay(`HMR update`),\r\n                      },\r\n                  },\r\n              });\r\n              // update the devtools too\r\n              api.notifyComponentUpdate();\r\n              api.sendInspectorTree(INSPECTOR_ID);\r\n              api.sendInspectorState(INSPECTOR_ID);\r\n          });\r\n          const { $dispose } = store;\r\n          store.$dispose = () => {\r\n              $dispose();\r\n              api.notifyComponentUpdate();\r\n              api.sendInspectorTree(INSPECTOR_ID);\r\n              api.sendInspectorState(INSPECTOR_ID);\r\n              api.getSettings().logStoreChanges &&\r\n                  toastMessage(`Disposed \"${store.$id}\" store 🗑`);\r\n          };\r\n          // trigger an update so it can display new registered stores\r\n          api.notifyComponentUpdate();\r\n          api.sendInspectorTree(INSPECTOR_ID);\r\n          api.sendInspectorState(INSPECTOR_ID);\r\n          api.getSettings().logStoreChanges &&\r\n              toastMessage(`\"${store.$id}\" store installed 🆕`);\r\n      });\r\n  }\r\n  let runningActionId = 0;\r\n  let activeAction;\r\n  /**\r\n   * Patches a store to enable action grouping in devtools by wrapping the store with a Proxy that is passed as the\r\n   * context of all actions, allowing us to set `runningAction` on each access and effectively associating any state\r\n   * mutation to the action.\r\n   *\r\n   * @param store - store to patch\r\n   * @param actionNames - list of actionst to patch\r\n   */\r\n  function patchActionForGrouping(store, actionNames) {\r\n      // original actions of the store as they are given by pinia. We are going to override them\r\n      const actions = actionNames.reduce((storeActions, actionName) => {\r\n          // use toRaw to avoid tracking #541\r\n          storeActions[actionName] = vueDemi.toRaw(store)[actionName];\r\n          return storeActions;\r\n      }, {});\r\n      for (const actionName in actions) {\r\n          store[actionName] = function () {\r\n              // setActivePinia(store._p)\r\n              // the running action id is incremented in a before action hook\r\n              const _actionId = runningActionId;\r\n              const trackedStore = new Proxy(store, {\r\n                  get(...args) {\r\n                      activeAction = _actionId;\r\n                      return Reflect.get(...args);\r\n                  },\r\n                  set(...args) {\r\n                      activeAction = _actionId;\r\n                      return Reflect.set(...args);\r\n                  },\r\n              });\r\n              return actions[actionName].apply(trackedStore, arguments);\r\n          };\r\n      }\r\n  }\r\n  /**\r\n   * pinia.use(devtoolsPlugin)\r\n   */\r\n  function devtoolsPlugin({ app, store, options }) {\r\n      // HMR module\r\n      if (store.$id.startsWith('__hot:')) {\r\n          return;\r\n      }\r\n      // detect option api vs setup api\r\n      if (options.state) {\r\n          store._isOptionsAPI = true;\r\n      }\r\n      // only wrap actions in option-defined stores as this technique relies on\r\n      // wrapping the context of the action with a proxy\r\n      if (typeof options.state === 'function') {\r\n          patchActionForGrouping(\r\n          // @ts-expect-error: can cast the store...\r\n          store, Object.keys(options.actions));\r\n          const originalHotUpdate = store._hotUpdate;\r\n          // Upgrade the HMR to also update the new actions\r\n          vueDemi.toRaw(store)._hotUpdate = function (newStore) {\r\n              originalHotUpdate.apply(this, arguments);\r\n              patchActionForGrouping(store, Object.keys(newStore._hmrPayload.actions));\r\n          };\r\n      }\r\n      addStoreToDevtools(app, \r\n      // FIXME: is there a way to allow the assignment from Store<Id, S, G, A> to StoreGeneric?\r\n      store);\r\n  }\n\n  /**\r\n   * Creates a Pinia instance to be used by the application\r\n   */\r\n  function createPinia() {\r\n      const scope = vueDemi.effectScope(true);\r\n      // NOTE: here we could check the window object for a state and directly set it\r\n      // if there is anything like it with Vue 3 SSR\r\n      const state = scope.run(() => vueDemi.ref({}));\r\n      let _p = [];\r\n      // plugins added before calling app.use(pinia)\r\n      let toBeInstalled = [];\r\n      const pinia = vueDemi.markRaw({\r\n          install(app) {\r\n              // this allows calling useStore() outside of a component setup after\r\n              // installing pinia's plugin\r\n              setActivePinia(pinia);\r\n              if (!vueDemi.isVue2) {\r\n                  pinia._a = app;\r\n                  app.provide(piniaSymbol, pinia);\r\n                  app.config.globalProperties.$pinia = pinia;\r\n                  /* istanbul ignore else */\r\n                  if (USE_DEVTOOLS) {\r\n                      registerPiniaDevtools(app, pinia);\r\n                  }\r\n                  toBeInstalled.forEach((plugin) => _p.push(plugin));\r\n                  toBeInstalled = [];\r\n              }\r\n          },\r\n          use(plugin) {\r\n              if (!this._a && !vueDemi.isVue2) {\r\n                  toBeInstalled.push(plugin);\r\n              }\r\n              else {\r\n                  _p.push(plugin);\r\n              }\r\n              return this;\r\n          },\r\n          _p,\r\n          // it's actually undefined here\r\n          // @ts-expect-error\r\n          _a: null,\r\n          _e: scope,\r\n          _s: new Map(),\r\n          state,\r\n      });\r\n      // pinia devtools rely on dev only features so they cannot be forced unless\r\n      // the dev build of Vue is used. Avoid old browsers like IE11.\r\n      if (USE_DEVTOOLS && typeof Proxy !== 'undefined') {\r\n          pinia.use(devtoolsPlugin);\r\n      }\r\n      return pinia;\r\n  }\n\n  /**\r\n   * Checks if a function is a `StoreDefinition`.\r\n   *\r\n   * @param fn - object to test\r\n   * @returns true if `fn` is a StoreDefinition\r\n   */\r\n  const isUseStore = (fn) => {\r\n      return typeof fn === 'function' && typeof fn.$id === 'string';\r\n  };\r\n  /**\r\n   * Mutates in place `newState` with `oldState` to _hot update_ it. It will\r\n   * remove any key not existing in `newState` and recursively merge plain\r\n   * objects.\r\n   *\r\n   * @param newState - new state object to be patched\r\n   * @param oldState - old state that should be used to patch newState\r\n   * @returns - newState\r\n   */\r\n  function patchObject(newState, oldState) {\r\n      // no need to go through symbols because they cannot be serialized anyway\r\n      for (const key in oldState) {\r\n          const subPatch = oldState[key];\r\n          // skip the whole sub tree\r\n          if (!(key in newState)) {\r\n              continue;\r\n          }\r\n          const targetValue = newState[key];\r\n          if (isPlainObject(targetValue) &&\r\n              isPlainObject(subPatch) &&\r\n              !vueDemi.isRef(subPatch) &&\r\n              !vueDemi.isReactive(subPatch)) {\r\n              newState[key] = patchObject(targetValue, subPatch);\r\n          }\r\n          else {\r\n              // objects are either a bit more complex (e.g. refs) or primitives, so we\r\n              // just set the whole thing\r\n              if (vueDemi.isVue2) {\r\n                  vueDemi.set(newState, key, subPatch);\r\n              }\r\n              else {\r\n                  newState[key] = subPatch;\r\n              }\r\n          }\r\n      }\r\n      return newState;\r\n  }\r\n  /**\r\n   * Creates an _accept_ function to pass to `import.meta.hot` in Vite applications.\r\n   *\r\n   * @example\r\n   * ```js\r\n   * const useUser = defineStore(...)\r\n   * if (import.meta.hot) {\r\n   *   import.meta.hot.accept(acceptHMRUpdate(useUser, import.meta.hot))\r\n   * }\r\n   * ```\r\n   *\r\n   * @param initialUseStore - return of the defineStore to hot update\r\n   * @param hot - `import.meta.hot`\r\n   */\r\n  function acceptHMRUpdate(initialUseStore, hot) {\r\n      return (newModule) => {\r\n          const pinia = hot.data.pinia || initialUseStore._pinia;\r\n          if (!pinia) {\r\n              // this store is still not used\r\n              return;\r\n          }\r\n          // preserve the pinia instance across loads\r\n          hot.data.pinia = pinia;\r\n          // console.log('got data', newStore)\r\n          for (const exportName in newModule) {\r\n              const useStore = newModule[exportName];\r\n              // console.log('checking for', exportName)\r\n              if (isUseStore(useStore) && pinia._s.has(useStore.$id)) {\r\n                  // console.log('Accepting update for', useStore.$id)\r\n                  const id = useStore.$id;\r\n                  if (id !== initialUseStore.$id) {\r\n                      console.warn(`The id of the store changed from \"${initialUseStore.$id}\" to \"${id}\". Reloading.`);\r\n                      // return import.meta.hot.invalidate()\r\n                      return hot.invalidate();\r\n                  }\r\n                  const existingStore = pinia._s.get(id);\r\n                  if (!existingStore) {\r\n                      console.log(`[Pinia]: skipping hmr because store doesn't exist yet`);\r\n                      return;\r\n                  }\r\n                  useStore(pinia, existingStore);\r\n              }\r\n          }\r\n      };\r\n  }\n\n  const noop = () => { };\r\n  function addSubscription(subscriptions, callback, detached, onCleanup = noop) {\r\n      subscriptions.push(callback);\r\n      const removeSubscription = () => {\r\n          const idx = subscriptions.indexOf(callback);\r\n          if (idx > -1) {\r\n              subscriptions.splice(idx, 1);\r\n              onCleanup();\r\n          }\r\n      };\r\n      if (!detached && vueDemi.getCurrentScope()) {\r\n          vueDemi.onScopeDispose(removeSubscription);\r\n      }\r\n      return removeSubscription;\r\n  }\r\n  function triggerSubscriptions(subscriptions, ...args) {\r\n      subscriptions.slice().forEach((callback) => {\r\n          callback(...args);\r\n      });\r\n  }\n\n  function mergeReactiveObjects(target, patchToApply) {\r\n      // Handle Map instances\r\n      if (target instanceof Map && patchToApply instanceof Map) {\r\n          patchToApply.forEach((value, key) => target.set(key, value));\r\n      }\r\n      // Handle Set instances\r\n      if (target instanceof Set && patchToApply instanceof Set) {\r\n          patchToApply.forEach(target.add, target);\r\n      }\r\n      // no need to go through symbols because they cannot be serialized anyway\r\n      for (const key in patchToApply) {\r\n          if (!patchToApply.hasOwnProperty(key))\r\n              continue;\r\n          const subPatch = patchToApply[key];\r\n          const targetValue = target[key];\r\n          if (isPlainObject(targetValue) &&\r\n              isPlainObject(subPatch) &&\r\n              target.hasOwnProperty(key) &&\r\n              !vueDemi.isRef(subPatch) &&\r\n              !vueDemi.isReactive(subPatch)) {\r\n              // NOTE: here I wanted to warn about inconsistent types but it's not possible because in setup stores one might\r\n              // start the value of a property as a certain type e.g. a Map, and then for some reason, during SSR, change that\r\n              // to `undefined`. When trying to hydrate, we want to override the Map with `undefined`.\r\n              target[key] = mergeReactiveObjects(targetValue, subPatch);\r\n          }\r\n          else {\r\n              // @ts-expect-error: subPatch is a valid value\r\n              target[key] = subPatch;\r\n          }\r\n      }\r\n      return target;\r\n  }\r\n  const skipHydrateSymbol = Symbol('pinia:skipHydration')\r\n      ;\r\n  const skipHydrateMap = /*#__PURE__*/ new WeakMap();\r\n  /**\r\n   * Tells Pinia to skip the hydration process of a given object. This is useful in setup stores (only) when you return a\r\n   * stateful object in the store but it isn't really state. e.g. returning a router instance in a setup store.\r\n   *\r\n   * @param obj - target object\r\n   * @returns obj\r\n   */\r\n  function skipHydrate(obj) {\r\n      return vueDemi.isVue2\r\n          ? // in @vue/composition-api, the refs are sealed so defineProperty doesn't work...\r\n              /* istanbul ignore next */ skipHydrateMap.set(obj, 1) && obj\r\n          : Object.defineProperty(obj, skipHydrateSymbol, {});\r\n  }\r\n  /**\r\n   * Returns whether a value should be hydrated\r\n   *\r\n   * @param obj - target variable\r\n   * @returns true if `obj` should be hydrated\r\n   */\r\n  function shouldHydrate(obj) {\r\n      return vueDemi.isVue2\r\n          ? /* istanbul ignore next */ !skipHydrateMap.has(obj)\r\n          : !isPlainObject(obj) || !obj.hasOwnProperty(skipHydrateSymbol);\r\n  }\r\n  const { assign } = Object;\r\n  function isComputed(o) {\r\n      return !!(vueDemi.isRef(o) && o.effect);\r\n  }\r\n  function createOptionsStore(id, options, pinia, hot) {\r\n      const { state, actions, getters } = options;\r\n      const initialState = pinia.state.value[id];\r\n      let store;\r\n      function setup() {\r\n          if (!initialState && (!hot)) {\r\n              /* istanbul ignore if */\r\n              if (vueDemi.isVue2) {\r\n                  vueDemi.set(pinia.state.value, id, state ? state() : {});\r\n              }\r\n              else {\r\n                  pinia.state.value[id] = state ? state() : {};\r\n              }\r\n          }\r\n          // avoid creating a state in pinia.state.value\r\n          const localState = hot\r\n              ? // use ref() to unwrap refs inside state TODO: check if this is still necessary\r\n                  vueDemi.toRefs(vueDemi.ref(state ? state() : {}).value)\r\n              : vueDemi.toRefs(pinia.state.value[id]);\r\n          return assign(localState, actions, Object.keys(getters || {}).reduce((computedGetters, name) => {\r\n              if (name in localState) {\r\n                  console.warn(`[🍍]: A getter cannot have the same name as another state property. Rename one of them. Found with \"${name}\" in store \"${id}\".`);\r\n              }\r\n              computedGetters[name] = vueDemi.markRaw(vueDemi.computed(() => {\r\n                  setActivePinia(pinia);\r\n                  // it was created just before\r\n                  const store = pinia._s.get(id);\r\n                  // allow cross using stores\r\n                  /* istanbul ignore next */\r\n                  if (vueDemi.isVue2 && !store._r)\r\n                      return;\r\n                  // @ts-expect-error\r\n                  // return getters![name].call(context, context)\r\n                  // TODO: avoid reading the getter while assigning with a global variable\r\n                  return getters[name].call(store, store);\r\n              }));\r\n              return computedGetters;\r\n          }, {}));\r\n      }\r\n      store = createSetupStore(id, setup, options, pinia, hot, true);\r\n      return store;\r\n  }\r\n  function createSetupStore($id, setup, options = {}, pinia, hot, isOptionsStore) {\r\n      let scope;\r\n      const optionsForPlugin = assign({ actions: {} }, options);\r\n      /* istanbul ignore if */\r\n      if (!pinia._e.active) {\r\n          throw new Error('Pinia destroyed');\r\n      }\r\n      // watcher options for $subscribe\r\n      const $subscribeOptions = {\r\n          deep: true,\r\n          // flush: 'post',\r\n      };\r\n      /* istanbul ignore else */\r\n      if (!vueDemi.isVue2) {\r\n          $subscribeOptions.onTrigger = (event) => {\r\n              /* istanbul ignore else */\r\n              if (isListening) {\r\n                  debuggerEvents = event;\r\n                  // avoid triggering this while the store is being built and the state is being set in pinia\r\n              }\r\n              else if (isListening == false && !store._hotUpdating) {\r\n                  // let patch send all the events together later\r\n                  /* istanbul ignore else */\r\n                  if (Array.isArray(debuggerEvents)) {\r\n                      debuggerEvents.push(event);\r\n                  }\r\n                  else {\r\n                      console.error('🍍 debuggerEvents should be an array. This is most likely an internal Pinia bug.');\r\n                  }\r\n              }\r\n          };\r\n      }\r\n      // internal state\r\n      let isListening; // set to true at the end\r\n      let isSyncListening; // set to true at the end\r\n      let subscriptions = vueDemi.markRaw([]);\r\n      let actionSubscriptions = vueDemi.markRaw([]);\r\n      let debuggerEvents;\r\n      const initialState = pinia.state.value[$id];\r\n      // avoid setting the state for option stores if it is set\r\n      // by the setup\r\n      if (!isOptionsStore && !initialState && (!hot)) {\r\n          /* istanbul ignore if */\r\n          if (vueDemi.isVue2) {\r\n              vueDemi.set(pinia.state.value, $id, {});\r\n          }\r\n          else {\r\n              pinia.state.value[$id] = {};\r\n          }\r\n      }\r\n      const hotState = vueDemi.ref({});\r\n      // avoid triggering too many listeners\r\n      // https://github.com/vuejs/pinia/issues/1129\r\n      let activeListener;\r\n      function $patch(partialStateOrMutator) {\r\n          let subscriptionMutation;\r\n          isListening = isSyncListening = false;\r\n          // reset the debugger events since patches are sync\r\n          /* istanbul ignore else */\r\n          {\r\n              debuggerEvents = [];\r\n          }\r\n          if (typeof partialStateOrMutator === 'function') {\r\n              partialStateOrMutator(pinia.state.value[$id]);\r\n              subscriptionMutation = {\r\n                  type: exports.MutationType.patchFunction,\r\n                  storeId: $id,\r\n                  events: debuggerEvents,\r\n              };\r\n          }\r\n          else {\r\n              mergeReactiveObjects(pinia.state.value[$id], partialStateOrMutator);\r\n              subscriptionMutation = {\r\n                  type: exports.MutationType.patchObject,\r\n                  payload: partialStateOrMutator,\r\n                  storeId: $id,\r\n                  events: debuggerEvents,\r\n              };\r\n          }\r\n          const myListenerId = (activeListener = Symbol());\r\n          vueDemi.nextTick().then(() => {\r\n              if (activeListener === myListenerId) {\r\n                  isListening = true;\r\n              }\r\n          });\r\n          isSyncListening = true;\r\n          // because we paused the watcher, we need to manually call the subscriptions\r\n          triggerSubscriptions(subscriptions, subscriptionMutation, pinia.state.value[$id]);\r\n      }\r\n      const $reset = isOptionsStore\r\n          ? function $reset() {\r\n              const { state } = options;\r\n              const newState = state ? state() : {};\r\n              // we use a patch to group all changes into one single subscription\r\n              this.$patch(($state) => {\r\n                  assign($state, newState);\r\n              });\r\n          }\r\n          : /* istanbul ignore next */\r\n              () => {\r\n                      throw new Error(`🍍: Store \"${$id}\" is built using the setup syntax and does not implement $reset().`);\r\n                  }\r\n                  ;\r\n      function $dispose() {\r\n          scope.stop();\r\n          subscriptions = [];\r\n          actionSubscriptions = [];\r\n          pinia._s.delete($id);\r\n      }\r\n      /**\r\n       * Wraps an action to handle subscriptions.\r\n       *\r\n       * @param name - name of the action\r\n       * @param action - action to wrap\r\n       * @returns a wrapped action to handle subscriptions\r\n       */\r\n      function wrapAction(name, action) {\r\n          return function () {\r\n              setActivePinia(pinia);\r\n              const args = Array.from(arguments);\r\n              const afterCallbackList = [];\r\n              const onErrorCallbackList = [];\r\n              function after(callback) {\r\n                  afterCallbackList.push(callback);\r\n              }\r\n              function onError(callback) {\r\n                  onErrorCallbackList.push(callback);\r\n              }\r\n              // @ts-expect-error\r\n              triggerSubscriptions(actionSubscriptions, {\r\n                  args,\r\n                  name,\r\n                  store,\r\n                  after,\r\n                  onError,\r\n              });\r\n              let ret;\r\n              try {\r\n                  ret = action.apply(this && this.$id === $id ? this : store, args);\r\n                  // handle sync errors\r\n              }\r\n              catch (error) {\r\n                  triggerSubscriptions(onErrorCallbackList, error);\r\n                  throw error;\r\n              }\r\n              if (ret instanceof Promise) {\r\n                  return ret\r\n                      .then((value) => {\r\n                      triggerSubscriptions(afterCallbackList, value);\r\n                      return value;\r\n                  })\r\n                      .catch((error) => {\r\n                      triggerSubscriptions(onErrorCallbackList, error);\r\n                      return Promise.reject(error);\r\n                  });\r\n              }\r\n              // trigger after callbacks\r\n              triggerSubscriptions(afterCallbackList, ret);\r\n              return ret;\r\n          };\r\n      }\r\n      const _hmrPayload = /*#__PURE__*/ vueDemi.markRaw({\r\n          actions: {},\r\n          getters: {},\r\n          state: [],\r\n          hotState,\r\n      });\r\n      const partialStore = {\r\n          _p: pinia,\r\n          // _s: scope,\r\n          $id,\r\n          $onAction: addSubscription.bind(null, actionSubscriptions),\r\n          $patch,\r\n          $reset,\r\n          $subscribe(callback, options = {}) {\r\n              const removeSubscription = addSubscription(subscriptions, callback, options.detached, () => stopWatcher());\r\n              const stopWatcher = scope.run(() => vueDemi.watch(() => pinia.state.value[$id], (state) => {\r\n                  if (options.flush === 'sync' ? isSyncListening : isListening) {\r\n                      callback({\r\n                          storeId: $id,\r\n                          type: exports.MutationType.direct,\r\n                          events: debuggerEvents,\r\n                      }, state);\r\n                  }\r\n              }, assign({}, $subscribeOptions, options)));\r\n              return removeSubscription;\r\n          },\r\n          $dispose,\r\n      };\r\n      /* istanbul ignore if */\r\n      if (vueDemi.isVue2) {\r\n          // start as non ready\r\n          partialStore._r = false;\r\n      }\r\n      const store = vueDemi.reactive(assign({\r\n              _hmrPayload,\r\n              _customProperties: vueDemi.markRaw(new Set()), // devtools custom properties\r\n          }, partialStore\r\n          // must be added later\r\n          // setupStore\r\n          )\r\n          );\r\n      // store the partial store now so the setup of stores can instantiate each other before they are finished without\r\n      // creating infinite loops.\r\n      pinia._s.set($id, store);\r\n      // TODO: idea create skipSerialize that marks properties as non serializable and they are skipped\r\n      const setupStore = pinia._e.run(() => {\r\n          scope = vueDemi.effectScope();\r\n          return scope.run(() => setup());\r\n      });\r\n      // overwrite existing actions to support $onAction\r\n      for (const key in setupStore) {\r\n          const prop = setupStore[key];\r\n          if ((vueDemi.isRef(prop) && !isComputed(prop)) || vueDemi.isReactive(prop)) {\r\n              // mark it as a piece of state to be serialized\r\n              if (hot) {\r\n                  vueDemi.set(hotState.value, key, vueDemi.toRef(setupStore, key));\r\n                  // createOptionStore directly sets the state in pinia.state.value so we\r\n                  // can just skip that\r\n              }\r\n              else if (!isOptionsStore) {\r\n                  // in setup stores we must hydrate the state and sync pinia state tree with the refs the user just created\r\n                  if (initialState && shouldHydrate(prop)) {\r\n                      if (vueDemi.isRef(prop)) {\r\n                          prop.value = initialState[key];\r\n                      }\r\n                      else {\r\n                          // probably a reactive object, lets recursively assign\r\n                          // @ts-expect-error: prop is unknown\r\n                          mergeReactiveObjects(prop, initialState[key]);\r\n                      }\r\n                  }\r\n                  // transfer the ref to the pinia state to keep everything in sync\r\n                  /* istanbul ignore if */\r\n                  if (vueDemi.isVue2) {\r\n                      vueDemi.set(pinia.state.value[$id], key, prop);\r\n                  }\r\n                  else {\r\n                      pinia.state.value[$id][key] = prop;\r\n                  }\r\n              }\r\n              /* istanbul ignore else */\r\n              {\r\n                  _hmrPayload.state.push(key);\r\n              }\r\n              // action\r\n          }\r\n          else if (typeof prop === 'function') {\r\n              // @ts-expect-error: we are overriding the function we avoid wrapping if\r\n              const actionValue = hot ? prop : wrapAction(key, prop);\r\n              // this a hot module replacement store because the hotUpdate method needs\r\n              // to do it with the right context\r\n              /* istanbul ignore if */\r\n              if (vueDemi.isVue2) {\r\n                  vueDemi.set(setupStore, key, actionValue);\r\n              }\r\n              else {\r\n                  // @ts-expect-error\r\n                  setupStore[key] = actionValue;\r\n              }\r\n              /* istanbul ignore else */\r\n              {\r\n                  _hmrPayload.actions[key] = prop;\r\n              }\r\n              // list actions so they can be used in plugins\r\n              // @ts-expect-error\r\n              optionsForPlugin.actions[key] = prop;\r\n          }\r\n          else {\r\n              // add getters for devtools\r\n              if (isComputed(prop)) {\r\n                  _hmrPayload.getters[key] = isOptionsStore\r\n                      ? // @ts-expect-error\r\n                          options.getters[key]\r\n                      : prop;\r\n                  if (IS_CLIENT) {\r\n                      const getters = setupStore._getters ||\r\n                          // @ts-expect-error: same\r\n                          (setupStore._getters = vueDemi.markRaw([]));\r\n                      getters.push(key);\r\n                  }\r\n              }\r\n          }\r\n      }\r\n      // add the state, getters, and action properties\r\n      /* istanbul ignore if */\r\n      if (vueDemi.isVue2) {\r\n          Object.keys(setupStore).forEach((key) => {\r\n              vueDemi.set(store, key, setupStore[key]);\r\n          });\r\n      }\r\n      else {\r\n          assign(store, setupStore);\r\n          // allows retrieving reactive objects with `storeToRefs()`. Must be called after assigning to the reactive object.\r\n          // Make `storeToRefs()` work with `reactive()` #799\r\n          assign(vueDemi.toRaw(store), setupStore);\r\n      }\r\n      // use this instead of a computed with setter to be able to create it anywhere\r\n      // without linking the computed lifespan to wherever the store is first\r\n      // created.\r\n      Object.defineProperty(store, '$state', {\r\n          get: () => (hot ? hotState.value : pinia.state.value[$id]),\r\n          set: (state) => {\r\n              /* istanbul ignore if */\r\n              if (hot) {\r\n                  throw new Error('cannot set hotState');\r\n              }\r\n              $patch(($state) => {\r\n                  assign($state, state);\r\n              });\r\n          },\r\n      });\r\n      // add the hotUpdate before plugins to allow them to override it\r\n      /* istanbul ignore else */\r\n      {\r\n          store._hotUpdate = vueDemi.markRaw((newStore) => {\r\n              store._hotUpdating = true;\r\n              newStore._hmrPayload.state.forEach((stateKey) => {\r\n                  if (stateKey in store.$state) {\r\n                      const newStateTarget = newStore.$state[stateKey];\r\n                      const oldStateSource = store.$state[stateKey];\r\n                      if (typeof newStateTarget === 'object' &&\r\n                          isPlainObject(newStateTarget) &&\r\n                          isPlainObject(oldStateSource)) {\r\n                          patchObject(newStateTarget, oldStateSource);\r\n                      }\r\n                      else {\r\n                          // transfer the ref\r\n                          newStore.$state[stateKey] = oldStateSource;\r\n                      }\r\n                  }\r\n                  // patch direct access properties to allow store.stateProperty to work as\r\n                  // store.$state.stateProperty\r\n                  vueDemi.set(store, stateKey, vueDemi.toRef(newStore.$state, stateKey));\r\n              });\r\n              // remove deleted state properties\r\n              Object.keys(store.$state).forEach((stateKey) => {\r\n                  if (!(stateKey in newStore.$state)) {\r\n                      vueDemi.del(store, stateKey);\r\n                  }\r\n              });\r\n              // avoid devtools logging this as a mutation\r\n              isListening = false;\r\n              isSyncListening = false;\r\n              pinia.state.value[$id] = vueDemi.toRef(newStore._hmrPayload, 'hotState');\r\n              isSyncListening = true;\r\n              vueDemi.nextTick().then(() => {\r\n                  isListening = true;\r\n              });\r\n              for (const actionName in newStore._hmrPayload.actions) {\r\n                  const action = newStore[actionName];\r\n                  vueDemi.set(store, actionName, wrapAction(actionName, action));\r\n              }\r\n              // TODO: does this work in both setup and option store?\r\n              for (const getterName in newStore._hmrPayload.getters) {\r\n                  const getter = newStore._hmrPayload.getters[getterName];\r\n                  const getterValue = isOptionsStore\r\n                      ? // special handling of options api\r\n                          vueDemi.computed(() => {\r\n                              setActivePinia(pinia);\r\n                              return getter.call(store, store);\r\n                          })\r\n                      : getter;\r\n                  vueDemi.set(store, getterName, getterValue);\r\n              }\r\n              // remove deleted getters\r\n              Object.keys(store._hmrPayload.getters).forEach((key) => {\r\n                  if (!(key in newStore._hmrPayload.getters)) {\r\n                      vueDemi.del(store, key);\r\n                  }\r\n              });\r\n              // remove old actions\r\n              Object.keys(store._hmrPayload.actions).forEach((key) => {\r\n                  if (!(key in newStore._hmrPayload.actions)) {\r\n                      vueDemi.del(store, key);\r\n                  }\r\n              });\r\n              // update the values used in devtools and to allow deleting new properties later on\r\n              store._hmrPayload = newStore._hmrPayload;\r\n              store._getters = newStore._getters;\r\n              store._hotUpdating = false;\r\n          });\r\n      }\r\n      if (USE_DEVTOOLS) {\r\n          const nonEnumerable = {\r\n              writable: true,\r\n              configurable: true,\r\n              // avoid warning on devtools trying to display this property\r\n              enumerable: false,\r\n          };\r\n          ['_p', '_hmrPayload', '_getters', '_customProperties'].forEach((p) => {\r\n              Object.defineProperty(store, p, assign({ value: store[p] }, nonEnumerable));\r\n          });\r\n      }\r\n      /* istanbul ignore if */\r\n      if (vueDemi.isVue2) {\r\n          // mark the store as ready before plugins\r\n          store._r = true;\r\n      }\r\n      // apply all plugins\r\n      pinia._p.forEach((extender) => {\r\n          /* istanbul ignore else */\r\n          if (USE_DEVTOOLS) {\r\n              const extensions = scope.run(() => extender({\r\n                  store,\r\n                  app: pinia._a,\r\n                  pinia,\r\n                  options: optionsForPlugin,\r\n              }));\r\n              Object.keys(extensions || {}).forEach((key) => store._customProperties.add(key));\r\n              assign(store, extensions);\r\n          }\r\n          else {\r\n              assign(store, scope.run(() => extender({\r\n                  store,\r\n                  app: pinia._a,\r\n                  pinia,\r\n                  options: optionsForPlugin,\r\n              })));\r\n          }\r\n      });\r\n      if (store.$state &&\r\n          typeof store.$state === 'object' &&\r\n          typeof store.$state.constructor === 'function' &&\r\n          !store.$state.constructor.toString().includes('[native code]')) {\r\n          console.warn(`[🍍]: The \"state\" must be a plain object. It cannot be\\n` +\r\n              `\\tstate: () => new MyClass()\\n` +\r\n              `Found in store \"${store.$id}\".`);\r\n      }\r\n      // only apply hydrate to option stores with an initial state in pinia\r\n      if (initialState &&\r\n          isOptionsStore &&\r\n          options.hydrate) {\r\n          options.hydrate(store.$state, initialState);\r\n      }\r\n      isListening = true;\r\n      isSyncListening = true;\r\n      return store;\r\n  }\r\n  function defineStore(\r\n  // TODO: add proper types from above\r\n  idOrOptions, setup, setupOptions) {\r\n      let id;\r\n      let options;\r\n      const isSetupStore = typeof setup === 'function';\r\n      if (typeof idOrOptions === 'string') {\r\n          id = idOrOptions;\r\n          // the option store setup will contain the actual options in this case\r\n          options = isSetupStore ? setupOptions : setup;\r\n      }\r\n      else {\r\n          options = idOrOptions;\r\n          id = idOrOptions.id;\r\n      }\r\n      function useStore(pinia, hot) {\r\n          const currentInstance = vueDemi.getCurrentInstance();\r\n          pinia =\r\n              // in test mode, ignore the argument provided as we can always retrieve a\r\n              // pinia instance with getActivePinia()\r\n              (pinia) ||\r\n                  (currentInstance && vueDemi.inject(piniaSymbol, null));\r\n          if (pinia)\r\n              setActivePinia(pinia);\r\n          if (!activePinia) {\r\n              throw new Error(`[🍍]: getActivePinia was called with no active Pinia. Did you forget to install pinia?\\n` +\r\n                  `\\tconst pinia = createPinia()\\n` +\r\n                  `\\tapp.use(pinia)\\n` +\r\n                  `This will fail in production.`);\r\n          }\r\n          pinia = activePinia;\r\n          if (!pinia._s.has(id)) {\r\n              // creating the store registers it in `pinia._s`\r\n              if (isSetupStore) {\r\n                  createSetupStore(id, setup, options, pinia);\r\n              }\r\n              else {\r\n                  createOptionsStore(id, options, pinia);\r\n              }\r\n              /* istanbul ignore else */\r\n              {\r\n                  // @ts-expect-error: not the right inferred type\r\n                  useStore._pinia = pinia;\r\n              }\r\n          }\r\n          const store = pinia._s.get(id);\r\n          if (hot) {\r\n              const hotId = '__hot:' + id;\r\n              const newStore = isSetupStore\r\n                  ? createSetupStore(hotId, setup, options, pinia, true)\r\n                  : createOptionsStore(hotId, assign({}, options), pinia, true);\r\n              hot._hotUpdate(newStore);\r\n              // cleanup the state properties and the store from the cache\r\n              delete pinia.state.value[hotId];\r\n              pinia._s.delete(hotId);\r\n          }\r\n          // save stores in instances to access them devtools\r\n          if (IS_CLIENT &&\r\n              currentInstance &&\r\n              currentInstance.proxy &&\r\n              // avoid adding stores that are just built for hot module replacement\r\n              !hot) {\r\n              const vm = currentInstance.proxy;\r\n              const cache = '_pStores' in vm ? vm._pStores : (vm._pStores = {});\r\n              cache[id] = store;\r\n          }\r\n          // StoreGeneric cannot be casted towards Store\r\n          return store;\r\n      }\r\n      useStore.$id = id;\r\n      return useStore;\r\n  }\n\n  let mapStoreSuffix = 'Store';\r\n  /**\r\n   * Changes the suffix added by `mapStores()`. Can be set to an empty string.\r\n   * Defaults to `\"Store\"`. Make sure to extend the MapStoresCustomization\r\n   * interface if you are using TypeScript.\r\n   *\r\n   * @param suffix - new suffix\r\n   */\r\n  function setMapStoreSuffix(suffix // could be 'Store' but that would be annoying for JS\r\n  ) {\r\n      mapStoreSuffix = suffix;\r\n  }\r\n  /**\r\n   * Allows using stores without the composition API (`setup()`) by generating an\r\n   * object to be spread in the `computed` field of a component. It accepts a list\r\n   * of store definitions.\r\n   *\r\n   * @example\r\n   * ```js\r\n   * export default {\r\n   *   computed: {\r\n   *     // other computed properties\r\n   *     ...mapStores(useUserStore, useCartStore)\r\n   *   },\r\n   *\r\n   *   created() {\r\n   *     this.userStore // store with id \"user\"\r\n   *     this.cartStore // store with id \"cart\"\r\n   *   }\r\n   * }\r\n   * ```\r\n   *\r\n   * @param stores - list of stores to map to an object\r\n   */\r\n  function mapStores(...stores) {\r\n      if (Array.isArray(stores[0])) {\r\n          console.warn(`[🍍]: Directly pass all stores to \"mapStores()\" without putting them in an array:\\n` +\r\n              `Replace\\n` +\r\n              `\\tmapStores([useAuthStore, useCartStore])\\n` +\r\n              `with\\n` +\r\n              `\\tmapStores(useAuthStore, useCartStore)\\n` +\r\n              `This will fail in production if not fixed.`);\r\n          stores = stores[0];\r\n      }\r\n      return stores.reduce((reduced, useStore) => {\r\n          // @ts-expect-error: $id is added by defineStore\r\n          reduced[useStore.$id + mapStoreSuffix] = function () {\r\n              return useStore(this.$pinia);\r\n          };\r\n          return reduced;\r\n      }, {});\r\n  }\r\n  /**\r\n   * Allows using state and getters from one store without using the composition\r\n   * API (`setup()`) by generating an object to be spread in the `computed` field\r\n   * of a component.\r\n   *\r\n   * @param useStore - store to map from\r\n   * @param keysOrMapper - array or object\r\n   */\r\n  function mapState(useStore, keysOrMapper) {\r\n      return Array.isArray(keysOrMapper)\r\n          ? keysOrMapper.reduce((reduced, key) => {\r\n              reduced[key] = function () {\r\n                  return useStore(this.$pinia)[key];\r\n              };\r\n              return reduced;\r\n          }, {})\r\n          : Object.keys(keysOrMapper).reduce((reduced, key) => {\r\n              // @ts-expect-error\r\n              reduced[key] = function () {\r\n                  const store = useStore(this.$pinia);\r\n                  const storeKey = keysOrMapper[key];\r\n                  // for some reason TS is unable to infer the type of storeKey to be a\r\n                  // function\r\n                  return typeof storeKey === 'function'\r\n                      ? storeKey.call(this, store)\r\n                      : store[storeKey];\r\n              };\r\n              return reduced;\r\n          }, {});\r\n  }\r\n  /**\r\n   * Alias for `mapState()`. You should use `mapState()` instead.\r\n   * @deprecated use `mapState()` instead.\r\n   */\r\n  const mapGetters = mapState;\r\n  /**\r\n   * Allows directly using actions from your store without using the composition\r\n   * API (`setup()`) by generating an object to be spread in the `methods` field\r\n   * of a component.\r\n   *\r\n   * @param useStore - store to map from\r\n   * @param keysOrMapper - array or object\r\n   */\r\n  function mapActions(useStore, keysOrMapper) {\r\n      return Array.isArray(keysOrMapper)\r\n          ? keysOrMapper.reduce((reduced, key) => {\r\n              // @ts-expect-error\r\n              reduced[key] = function (...args) {\r\n                  return useStore(this.$pinia)[key](...args);\r\n              };\r\n              return reduced;\r\n          }, {})\r\n          : Object.keys(keysOrMapper).reduce((reduced, key) => {\r\n              // @ts-expect-error\r\n              reduced[key] = function (...args) {\r\n                  return useStore(this.$pinia)[keysOrMapper[key]](...args);\r\n              };\r\n              return reduced;\r\n          }, {});\r\n  }\r\n  /**\r\n   * Allows using state and getters from one store without using the composition\r\n   * API (`setup()`) by generating an object to be spread in the `computed` field\r\n   * of a component.\r\n   *\r\n   * @param useStore - store to map from\r\n   * @param keysOrMapper - array or object\r\n   */\r\n  function mapWritableState(useStore, keysOrMapper) {\r\n      return Array.isArray(keysOrMapper)\r\n          ? keysOrMapper.reduce((reduced, key) => {\r\n              // @ts-ignore\r\n              reduced[key] = {\r\n                  get() {\r\n                      return useStore(this.$pinia)[key];\r\n                  },\r\n                  set(value) {\r\n                      // it's easier to type it here as any\r\n                      return (useStore(this.$pinia)[key] = value);\r\n                  },\r\n              };\r\n              return reduced;\r\n          }, {})\r\n          : Object.keys(keysOrMapper).reduce((reduced, key) => {\r\n              // @ts-ignore\r\n              reduced[key] = {\r\n                  get() {\r\n                      return useStore(this.$pinia)[keysOrMapper[key]];\r\n                  },\r\n                  set(value) {\r\n                      // it's easier to type it here as any\r\n                      return (useStore(this.$pinia)[keysOrMapper[key]] = value);\r\n                  },\r\n              };\r\n              return reduced;\r\n          }, {});\r\n  }\n\n  /**\r\n   * Creates an object of references with all the state, getters, and plugin-added\r\n   * state properties of the store. Similar to `toRefs()` but specifically\r\n   * designed for Pinia stores so methods and non reactive properties are\r\n   * completely ignored.\r\n   *\r\n   * @param store - store to extract the refs from\r\n   */\r\n  function storeToRefs(store) {\r\n      // See https://github.com/vuejs/pinia/issues/852\r\n      // It's easier to just use toRefs() even if it includes more stuff\r\n      if (vueDemi.isVue2) {\r\n          // @ts-expect-error: toRefs include methods and others\r\n          return vueDemi.toRefs(store);\r\n      }\r\n      else {\r\n          store = vueDemi.toRaw(store);\r\n          const refs = {};\r\n          for (const key in store) {\r\n              const value = store[key];\r\n              if (vueDemi.isRef(value) || vueDemi.isReactive(value)) {\r\n                  // @ts-expect-error: the key is state or getter\r\n                  refs[key] =\r\n                      // ---\r\n                      vueDemi.toRef(store, key);\r\n              }\r\n          }\r\n          return refs;\r\n      }\r\n  }\n\n  /**\r\n   * Vue 2 Plugin that must be installed for pinia to work. Note **you don't need\r\n   * this plugin if you are using Nuxt.js**. Use the `buildModule` instead:\r\n   * https://pinia.vuejs.org/ssr/nuxt.html.\r\n   *\r\n   * @example\r\n   * ```js\r\n   * import Vue from 'vue'\r\n   * import { PiniaVuePlugin, createPinia } from 'pinia'\r\n   *\r\n   * Vue.use(PiniaVuePlugin)\r\n   * const pinia = createPinia()\r\n   *\r\n   * new Vue({\r\n   *   el: '#app',\r\n   *   // ...\r\n   *   pinia,\r\n   * })\r\n   * ```\r\n   *\r\n   * @param _Vue - `Vue` imported from 'vue'.\r\n   */\r\n  const PiniaVuePlugin = function (_Vue) {\r\n      // Equivalent of\r\n      // app.config.globalProperties.$pinia = pinia\r\n      _Vue.mixin({\r\n          beforeCreate() {\r\n              const options = this.$options;\r\n              if (options.pinia) {\r\n                  const pinia = options.pinia;\r\n                  // HACK: taken from provide(): https://github.com/vuejs/composition-api/blob/main/src/apis/inject.ts#L31\r\n                  /* istanbul ignore else */\r\n                  if (!this._provided) {\r\n                      const provideCache = {};\r\n                      Object.defineProperty(this, '_provided', {\r\n                          get: () => provideCache,\r\n                          set: (v) => Object.assign(provideCache, v),\r\n                      });\r\n                  }\r\n                  this._provided[piniaSymbol] = pinia;\r\n                  // propagate the pinia instance in an SSR friendly way\r\n                  // avoid adding it to nuxt twice\r\n                  /* istanbul ignore else */\r\n                  if (!this.$pinia) {\r\n                      this.$pinia = pinia;\r\n                  }\r\n                  pinia._a = this;\r\n                  if (IS_CLIENT) {\r\n                      // this allows calling useStore() outside of a component setup after\r\n                      // installing pinia's plugin\r\n                      setActivePinia(pinia);\r\n                  }\r\n                  if (USE_DEVTOOLS) {\r\n                      registerPiniaDevtools(pinia._a, pinia);\r\n                  }\r\n              }\r\n              else if (!this.$pinia && options.parent && options.parent.$pinia) {\r\n                  this.$pinia = options.parent.$pinia;\r\n              }\r\n          },\r\n          destroyed() {\r\n              delete this._pStores;\r\n          },\r\n      });\r\n  };\n\n  exports.PiniaVuePlugin = PiniaVuePlugin;\n  exports.acceptHMRUpdate = acceptHMRUpdate;\n  exports.createPinia = createPinia;\n  exports.defineStore = defineStore;\n  exports.getActivePinia = getActivePinia;\n  exports.mapActions = mapActions;\n  exports.mapGetters = mapGetters;\n  exports.mapState = mapState;\n  exports.mapStores = mapStores;\n  exports.mapWritableState = mapWritableState;\n  exports.setActivePinia = setActivePinia;\n  exports.setMapStoreSuffix = setMapStoreSuffix;\n  exports.skipHydrate = skipHydrate;\n  exports.storeToRefs = storeToRefs;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n  return exports;\n\n})({}, VueDemi);\n"]}