{"version":3,"file":"middleware.mjs","sources":["../../../../node_modules/zustand/esm/middleware.mjs"],"sourcesContent":["const reduxImpl = (reducer, initial) => (set, _get, api) => {\n  api.dispatch = (action) => {\n    set((state) => reducer(state, action), false, action);\n    return action;\n  };\n  api.dispatchFromDevtools = true;\n  return { dispatch: (...args) => api.dispatch(...args), ...initial };\n};\nconst redux = reduxImpl;\n\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n  const api = trackedConnections.get(name);\n  if (!api) return {};\n  return Object.fromEntries(\n    Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n  );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n  if (store === void 0) {\n    return {\n      type: \"untracked\",\n      connection: extensionConnector.connect(options)\n    };\n  }\n  const existingConnection = trackedConnections.get(options.name);\n  if (existingConnection) {\n    return { type: \"tracked\", store, ...existingConnection };\n  }\n  const newConnection = {\n    connection: extensionConnector.connect(options),\n    stores: {}\n  };\n  trackedConnections.set(options.name, newConnection);\n  return { type: \"tracked\", store, ...newConnection };\n};\nconst removeStoreFromTrackedConnections = (name, store) => {\n  if (store === void 0) return;\n  const connectionInfo = trackedConnections.get(name);\n  if (!connectionInfo) return;\n  delete connectionInfo.stores[store];\n  if (Object.keys(connectionInfo.stores).length === 0) {\n    trackedConnections.delete(name);\n  }\n};\nconst findCallerName = (stack) => {\n  var _a, _b;\n  if (!stack) return void 0;\n  const traceLines = stack.split(\"\\n\");\n  const apiSetStateLineIndex = traceLines.findIndex(\n    (traceLine) => traceLine.includes(\"api.setState\")\n  );\n  if (apiSetStateLineIndex < 0) return void 0;\n  const callerLine = ((_a = traceLines[apiSetStateLineIndex + 1]) == null ? void 0 : _a.trim()) || \"\";\n  return (_b = /.+ (.+) .+/.exec(callerLine)) == null ? void 0 : _b[1];\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n  const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n  let extensionConnector;\n  try {\n    extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n  } catch (e) {\n  }\n  if (!extensionConnector) {\n    return fn(set, get, api);\n  }\n  const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n  let isRecording = true;\n  api.setState = ((state, replace, nameOrAction) => {\n    const r = set(state, replace);\n    if (!isRecording) return r;\n    const action = nameOrAction === void 0 ? {\n      type: anonymousActionType || findCallerName(new Error().stack) || \"anonymous\"\n    } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n    if (store === void 0) {\n      connection == null ? void 0 : connection.send(action, get());\n      return r;\n    }\n    connection == null ? void 0 : connection.send(\n      {\n        ...action,\n        type: `${store}/${action.type}`\n      },\n      {\n        ...getTrackedConnectionState(options.name),\n        [store]: api.getState()\n      }\n    );\n    return r;\n  });\n  api.devtools = {\n    cleanup: () => {\n      if (connection && typeof connection.unsubscribe === \"function\") {\n        connection.unsubscribe();\n      }\n      removeStoreFromTrackedConnections(options.name, store);\n    }\n  };\n  const setStateFromDevtools = (...a) => {\n    const originalIsRecording = isRecording;\n    isRecording = false;\n    set(...a);\n    isRecording = originalIsRecording;\n  };\n  const initialState = fn(api.setState, get, api);\n  if (connectionInformation.type === \"untracked\") {\n    connection == null ? void 0 : connection.init(initialState);\n  } else {\n    connectionInformation.stores[connectionInformation.store] = api;\n    connection == null ? void 0 : connection.init(\n      Object.fromEntries(\n        Object.entries(connectionInformation.stores).map(([key, store2]) => [\n          key,\n          key === connectionInformation.store ? initialState : store2.getState()\n        ])\n      )\n    );\n  }\n  if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n    let didWarnAboutReservedActionType = false;\n    const originalDispatch = api.dispatch;\n    api.dispatch = (...args) => {\n      if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && args[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n        console.warn(\n          '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n        );\n        didWarnAboutReservedActionType = true;\n      }\n      originalDispatch(...args);\n    };\n  }\n  connection.subscribe((message) => {\n    var _a;\n    switch (message.type) {\n      case \"ACTION\":\n        if (typeof message.payload !== \"string\") {\n          console.error(\n            \"[zustand devtools middleware] Unsupported action format\"\n          );\n          return;\n        }\n        return parseJsonThen(\n          message.payload,\n          (action) => {\n            if (action.type === \"__setState\") {\n              if (store === void 0) {\n                setStateFromDevtools(action.state);\n                return;\n              }\n              if (Object.keys(action.state).length !== 1) {\n                console.error(\n                  `\n                    [zustand devtools middleware] Unsupported __setState action format.\n                    When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n                    and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n                    `\n                );\n              }\n              const stateFromDevtools = action.state[store];\n              if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n                return;\n              }\n              if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n                setStateFromDevtools(stateFromDevtools);\n              }\n              return;\n            }\n            if (!api.dispatchFromDevtools) return;\n            if (typeof api.dispatch !== \"function\") return;\n            api.dispatch(action);\n          }\n        );\n      case \"DISPATCH\":\n        switch (message.payload.type) {\n          case \"RESET\":\n            setStateFromDevtools(initialState);\n            if (store === void 0) {\n              return connection == null ? void 0 : connection.init(api.getState());\n            }\n            return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n          case \"COMMIT\":\n            if (store === void 0) {\n              connection == null ? void 0 : connection.init(api.getState());\n              return;\n            }\n            return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n          case \"ROLLBACK\":\n            return parseJsonThen(message.state, (state) => {\n              if (store === void 0) {\n                setStateFromDevtools(state);\n                connection == null ? void 0 : connection.init(api.getState());\n                return;\n              }\n              setStateFromDevtools(state[store]);\n              connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n            });\n          case \"JUMP_TO_STATE\":\n          case \"JUMP_TO_ACTION\":\n            return parseJsonThen(message.state, (state) => {\n              if (store === void 0) {\n                setStateFromDevtools(state);\n                return;\n              }\n              if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n                setStateFromDevtools(state[store]);\n              }\n            });\n          case \"IMPORT_STATE\": {\n            const { nextLiftedState } = message.payload;\n            const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n            if (!lastComputedState) return;\n            if (store === void 0) {\n              setStateFromDevtools(lastComputedState);\n            } else {\n              setStateFromDevtools(lastComputedState[store]);\n            }\n            connection == null ? void 0 : connection.send(\n              null,\n              // FIXME no-any\n              nextLiftedState\n            );\n            return;\n          }\n          case \"PAUSE_RECORDING\":\n            return isRecording = !isRecording;\n        }\n        return;\n    }\n  });\n  return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, fn) => {\n  let parsed;\n  try {\n    parsed = JSON.parse(stringified);\n  } catch (e) {\n    console.error(\n      \"[zustand devtools middleware] Could not parse the received json\",\n      e\n    );\n  }\n  if (parsed !== void 0) fn(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n  const origSubscribe = api.subscribe;\n  api.subscribe = ((selector, optListener, options) => {\n    let listener = selector;\n    if (optListener) {\n      const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n      let currentSlice = selector(api.getState());\n      listener = (state) => {\n        const nextSlice = selector(state);\n        if (!equalityFn(currentSlice, nextSlice)) {\n          const previousSlice = currentSlice;\n          optListener(currentSlice = nextSlice, previousSlice);\n        }\n      };\n      if (options == null ? void 0 : options.fireImmediately) {\n        optListener(currentSlice, currentSlice);\n      }\n    }\n    return origSubscribe(listener);\n  });\n  const initialState = fn(set, get, api);\n  return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nfunction combine(initialState, create) {\n  return (...args) => Object.assign({}, initialState, create(...args));\n}\n\nfunction createJSONStorage(getStorage, options) {\n  let storage;\n  try {\n    storage = getStorage();\n  } catch (e) {\n    return;\n  }\n  const persistStorage = {\n    getItem: (name) => {\n      var _a;\n      const parse = (str2) => {\n        if (str2 === null) {\n          return null;\n        }\n        return JSON.parse(str2, options == null ? void 0 : options.reviver);\n      };\n      const str = (_a = storage.getItem(name)) != null ? _a : null;\n      if (str instanceof Promise) {\n        return str.then(parse);\n      }\n      return parse(str);\n    },\n    setItem: (name, newValue) => storage.setItem(name, JSON.stringify(newValue, options == null ? void 0 : options.replacer)),\n    removeItem: (name) => storage.removeItem(name)\n  };\n  return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n  try {\n    const result = fn(input);\n    if (result instanceof Promise) {\n      return result;\n    }\n    return {\n      then(onFulfilled) {\n        return toThenable(onFulfilled)(result);\n      },\n      catch(_onRejected) {\n        return this;\n      }\n    };\n  } catch (e) {\n    return {\n      then(_onFulfilled) {\n        return this;\n      },\n      catch(onRejected) {\n        return toThenable(onRejected)(e);\n      }\n    };\n  }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n  let options = {\n    storage: createJSONStorage(() => localStorage),\n    partialize: (state) => state,\n    version: 0,\n    merge: (persistedState, currentState) => ({\n      ...currentState,\n      ...persistedState\n    }),\n    ...baseOptions\n  };\n  let hasHydrated = false;\n  const hydrationListeners = /* @__PURE__ */ new Set();\n  const finishHydrationListeners = /* @__PURE__ */ new Set();\n  let storage = options.storage;\n  if (!storage) {\n    return config(\n      (...args) => {\n        console.warn(\n          `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n        );\n        set(...args);\n      },\n      get,\n      api\n    );\n  }\n  const setItem = () => {\n    const state = options.partialize({ ...get() });\n    return storage.setItem(options.name, {\n      state,\n      version: options.version\n    });\n  };\n  const savedSetState = api.setState;\n  api.setState = (state, replace) => {\n    savedSetState(state, replace);\n    return setItem();\n  };\n  const configResult = config(\n    (...args) => {\n      set(...args);\n      return setItem();\n    },\n    get,\n    api\n  );\n  api.getInitialState = () => configResult;\n  let stateFromStorage;\n  const hydrate = () => {\n    var _a, _b;\n    if (!storage) return;\n    hasHydrated = false;\n    hydrationListeners.forEach((cb) => {\n      var _a2;\n      return cb((_a2 = get()) != null ? _a2 : configResult);\n    });\n    const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n    return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n      if (deserializedStorageValue) {\n        if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n          if (options.migrate) {\n            const migration = options.migrate(\n              deserializedStorageValue.state,\n              deserializedStorageValue.version\n            );\n            if (migration instanceof Promise) {\n              return migration.then((result) => [true, result]);\n            }\n            return [true, migration];\n          }\n          console.error(\n            `State loaded from storage couldn't be migrated since no migrate function was provided`\n          );\n        } else {\n          return [false, deserializedStorageValue.state];\n        }\n      }\n      return [false, void 0];\n    }).then((migrationResult) => {\n      var _a2;\n      const [migrated, migratedState] = migrationResult;\n      stateFromStorage = options.merge(\n        migratedState,\n        (_a2 = get()) != null ? _a2 : configResult\n      );\n      set(stateFromStorage, true);\n      if (migrated) {\n        return setItem();\n      }\n    }).then(() => {\n      postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n      stateFromStorage = get();\n      hasHydrated = true;\n      finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n    }).catch((e) => {\n      postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n    });\n  };\n  api.persist = {\n    setOptions: (newOptions) => {\n      options = {\n        ...options,\n        ...newOptions\n      };\n      if (newOptions.storage) {\n        storage = newOptions.storage;\n      }\n    },\n    clearStorage: () => {\n      storage == null ? void 0 : storage.removeItem(options.name);\n    },\n    getOptions: () => options,\n    rehydrate: () => hydrate(),\n    hasHydrated: () => hasHydrated,\n    onHydrate: (cb) => {\n      hydrationListeners.add(cb);\n      return () => {\n        hydrationListeners.delete(cb);\n      };\n    },\n    onFinishHydration: (cb) => {\n      finishHydrationListeners.add(cb);\n      return () => {\n        finishHydrationListeners.delete(cb);\n      };\n    }\n  };\n  if (!options.skipHydration) {\n    hydrate();\n  }\n  return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nfunction ssrSafe(config, isSSR = typeof window === \"undefined\") {\n  return (set, get, api) => {\n    if (!isSSR) {\n      return config(set, get, api);\n    }\n    const ssrSet = () => {\n      throw new Error(\"Cannot set state of Zustand store in SSR\");\n    };\n    api.setState = ssrSet;\n    return config(ssrSet, get, api);\n  };\n}\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector, ssrSafe as unstable_ssrSafe };\n"],"names":["trackedConnections","getTrackedConnectionState","name","api","key","api2","extractConnectionInformation","store","extensionConnector","options","existingConnection","newConnection","removeStoreFromTrackedConnections","connectionInfo","findCallerName","stack","_a","_b","traceLines","apiSetStateLineIndex","traceLine","callerLine","devtoolsImpl","fn","devtoolsOptions","set","get","enabled","anonymousActionType","__vite_import_meta_env__","connection","connectionInformation","isRecording","state","replace","nameOrAction","r","action","setStateFromDevtools","a","originalIsRecording","initialState","store2","didWarnAboutReservedActionType","originalDispatch","args","message","parseJsonThen","stateFromDevtools","nextLiftedState","lastComputedState","devtools","stringified","parsed","e","subscribeWithSelectorImpl","origSubscribe","selector","optListener","listener","equalityFn","currentSlice","nextSlice","previousSlice","subscribeWithSelector","createJSONStorage","getStorage","storage","parse","str2","str","newValue","toThenable","input","result","onFulfilled","_onRejected","_onFulfilled","onRejected","persistImpl","config","baseOptions","persistedState","currentState","hasHydrated","hydrationListeners","finishHydrationListeners","setItem","savedSetState","configResult","stateFromStorage","hydrate","cb","_a2","postRehydrationCallback","deserializedStorageValue","migration","migrationResult","migrated","migratedState","newOptions","persist"],"mappings":"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","x_google_ignoreList":[0]}