{"version":3,"file":"index-vfFgwzOr.js","sources":["../../meteoapi/client/core/ApiError.ts","../../meteoapi/client/core/CancelablePromise.ts","../../meteoapi/client/core/request.ts","../../node_modules/.pnpm/lodash.debounce@4.0.8/node_modules/lodash.debounce/index.js","../../node_modules/.pnpm/usehooks-ts@3.1.1_react@19.0.0/node_modules/usehooks-ts/dist/index.js"],"sourcesContent":["/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ApiRequestOptions } from './ApiRequestOptions';\nimport type { ApiResult } from './ApiResult';\n\nexport class ApiError extends Error {\n public readonly url: string;\n public readonly status: number;\n public readonly statusText: string;\n public readonly body: any;\n public readonly request: ApiRequestOptions;\n\n constructor(request: ApiRequestOptions, response: ApiResult, message: string) {\n super(message);\n\n this.name = 'ApiError';\n this.url = response.url;\n this.status = response.status;\n this.statusText = response.statusText;\n this.body = response.body;\n this.request = request;\n }\n}\n","/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport class CancelError extends Error {\n\n constructor(message: string) {\n super(message);\n this.name = 'CancelError';\n }\n\n public get isCancelled(): boolean {\n return true;\n }\n}\n\nexport interface OnCancel {\n readonly isResolved: boolean;\n readonly isRejected: boolean;\n readonly isCancelled: boolean;\n\n (cancelHandler: () => void): void;\n}\n\nexport class CancelablePromise implements Promise {\n #isResolved: boolean;\n #isRejected: boolean;\n #isCancelled: boolean;\n readonly #cancelHandlers: (() => void)[];\n readonly #promise: Promise;\n #resolve?: (value: T | PromiseLike) => void;\n #reject?: (reason?: any) => void;\n\n constructor(\n executor: (\n resolve: (value: T | PromiseLike) => void,\n reject: (reason?: any) => void,\n onCancel: OnCancel\n ) => void\n ) {\n this.#isResolved = false;\n this.#isRejected = false;\n this.#isCancelled = false;\n this.#cancelHandlers = [];\n this.#promise = new Promise((resolve, reject) => {\n this.#resolve = resolve;\n this.#reject = reject;\n\n const onResolve = (value: T | PromiseLike): void => {\n if (this.#isResolved || this.#isRejected || this.#isCancelled) {\n return;\n }\n this.#isResolved = true;\n if (this.#resolve) this.#resolve(value);\n };\n\n const onReject = (reason?: any): void => {\n if (this.#isResolved || this.#isRejected || this.#isCancelled) {\n return;\n }\n this.#isRejected = true;\n if (this.#reject) this.#reject(reason);\n };\n\n const onCancel = (cancelHandler: () => void): void => {\n if (this.#isResolved || this.#isRejected || this.#isCancelled) {\n return;\n }\n this.#cancelHandlers.push(cancelHandler);\n };\n\n Object.defineProperty(onCancel, 'isResolved', {\n get: (): boolean => this.#isResolved,\n });\n\n Object.defineProperty(onCancel, 'isRejected', {\n get: (): boolean => this.#isRejected,\n });\n\n Object.defineProperty(onCancel, 'isCancelled', {\n get: (): boolean => this.#isCancelled,\n });\n\n return executor(onResolve, onReject, onCancel as OnCancel);\n });\n }\n\n get [Symbol.toStringTag]() {\n return \"Cancellable Promise\";\n }\n\n public then(\n onFulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\n onRejected?: ((reason: any) => TResult2 | PromiseLike) | null\n ): Promise {\n return this.#promise.then(onFulfilled, onRejected);\n }\n\n public catch(\n onRejected?: ((reason: any) => TResult | PromiseLike) | null\n ): Promise {\n return this.#promise.catch(onRejected);\n }\n\n public finally(onFinally?: (() => void) | null): Promise {\n return this.#promise.finally(onFinally);\n }\n\n public cancel(): void {\n if (this.#isResolved || this.#isRejected || this.#isCancelled) {\n return;\n }\n this.#isCancelled = true;\n if (this.#cancelHandlers.length) {\n try {\n for (const cancelHandler of this.#cancelHandlers) {\n cancelHandler();\n }\n } catch (error) {\n console.warn('Cancellation threw an error', error);\n return;\n }\n }\n this.#cancelHandlers.length = 0;\n if (this.#reject) this.#reject(new CancelError('Request aborted'));\n }\n\n public get isCancelled(): boolean {\n return this.#isCancelled;\n }\n}\n","/* generated using openapi-typescript-codegen -- do not edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport { ApiError } from './ApiError';\nimport type { ApiRequestOptions } from './ApiRequestOptions';\nimport type { ApiResult } from './ApiResult';\nimport { CancelablePromise } from './CancelablePromise';\nimport type { OnCancel } from './CancelablePromise';\nimport type { OpenAPIConfig } from './OpenAPI';\n\nexport const isDefined = (value: T | null | undefined): value is Exclude => {\n return value !== undefined && value !== null;\n};\n\nexport const isString = (value: any): value is string => {\n return typeof value === 'string';\n};\n\nexport const isStringWithValue = (value: any): value is string => {\n return isString(value) && value !== '';\n};\n\nexport const isBlob = (value: any): value is Blob => {\n return (\n typeof value === 'object' &&\n typeof value.type === 'string' &&\n typeof value.stream === 'function' &&\n typeof value.arrayBuffer === 'function' &&\n typeof value.constructor === 'function' &&\n typeof value.constructor.name === 'string' &&\n /^(Blob|File)$/.test(value.constructor.name) &&\n /^(Blob|File)$/.test(value[Symbol.toStringTag])\n );\n};\n\nexport const isFormData = (value: any): value is FormData => {\n return value instanceof FormData;\n};\n\nexport const base64 = (str: string): string => {\n try {\n return btoa(str);\n } catch (err) {\n // @ts-ignore\n return Buffer.from(str).toString('base64');\n }\n};\n\nexport const getQueryString = (params: Record): string => {\n const qs: string[] = [];\n\n const append = (key: string, value: any) => {\n qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);\n };\n\n const process = (key: string, value: any) => {\n if (isDefined(value)) {\n if (Array.isArray(value)) {\n value.forEach(v => {\n process(key, v);\n });\n } else if (typeof value === 'object') {\n Object.entries(value).forEach(([k, v]) => {\n process(`${key}[${k}]`, v);\n });\n } else {\n append(key, value);\n }\n }\n };\n\n Object.entries(params).forEach(([key, value]) => {\n process(key, value);\n });\n\n if (qs.length > 0) {\n return `?${qs.join('&')}`;\n }\n\n return '';\n};\n\nconst getUrl = (config: OpenAPIConfig, options: ApiRequestOptions): string => {\n const encoder = config.ENCODE_PATH || encodeURI;\n\n const path = options.url\n .replace('{api-version}', config.VERSION)\n .replace(/{(.*?)}/g, (substring: string, group: string) => {\n if (options.path?.hasOwnProperty(group)) {\n return encoder(String(options.path[group]));\n }\n return substring;\n });\n\n const url = `${config.BASE}${path}`;\n if (options.query) {\n return `${url}${getQueryString(options.query)}`;\n }\n return url;\n};\n\nexport const getFormData = (options: ApiRequestOptions): FormData | undefined => {\n if (options.formData) {\n const formData = new FormData();\n\n const process = (key: string, value: any) => {\n if (isString(value) || isBlob(value)) {\n formData.append(key, value);\n } else {\n formData.append(key, JSON.stringify(value));\n }\n };\n\n Object.entries(options.formData)\n .filter(([_, value]) => isDefined(value))\n .forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value.forEach(v => process(key, v));\n } else {\n process(key, value);\n }\n });\n\n return formData;\n }\n return undefined;\n};\n\ntype Resolver = (options: ApiRequestOptions) => Promise;\n\nexport const resolve = async (options: ApiRequestOptions, resolver?: T | Resolver): Promise => {\n if (typeof resolver === 'function') {\n return (resolver as Resolver)(options);\n }\n return resolver;\n};\n\nexport const getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions): Promise => {\n const [token, username, password, additionalHeaders] = await Promise.all([\n resolve(options, config.TOKEN),\n resolve(options, config.USERNAME),\n resolve(options, config.PASSWORD),\n resolve(options, config.HEADERS),\n ]);\n\n const headers = Object.entries({\n Accept: 'application/json',\n ...additionalHeaders,\n ...options.headers,\n })\n .filter(([_, value]) => isDefined(value))\n .reduce((headers, [key, value]) => ({\n ...headers,\n [key]: String(value),\n }), {} as Record);\n\n if (isStringWithValue(token)) {\n headers['Authorization'] = `Bearer ${token}`;\n }\n\n if (isStringWithValue(username) && isStringWithValue(password)) {\n const credentials = base64(`${username}:${password}`);\n headers['Authorization'] = `Basic ${credentials}`;\n }\n\n if (options.body !== undefined) {\n if (options.mediaType) {\n headers['Content-Type'] = options.mediaType;\n } else if (isBlob(options.body)) {\n headers['Content-Type'] = options.body.type || 'application/octet-stream';\n } else if (isString(options.body)) {\n headers['Content-Type'] = 'text/plain';\n } else if (!isFormData(options.body)) {\n headers['Content-Type'] = 'application/json';\n }\n }\n\n return new Headers(headers);\n};\n\nexport const getRequestBody = (options: ApiRequestOptions): any => {\n if (options.body !== undefined) {\n if (options.mediaType?.includes('/json')) {\n return JSON.stringify(options.body)\n } else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) {\n return options.body;\n } else {\n return JSON.stringify(options.body);\n }\n }\n return undefined;\n};\n\nexport const sendRequest = async (\n config: OpenAPIConfig,\n options: ApiRequestOptions,\n url: string,\n body: any,\n formData: FormData | undefined,\n headers: Headers,\n onCancel: OnCancel\n): Promise => {\n const controller = new AbortController();\n\n const request: RequestInit = {\n headers,\n body: body ?? formData,\n method: options.method,\n signal: controller.signal,\n };\n\n if (config.WITH_CREDENTIALS) {\n request.credentials = config.CREDENTIALS;\n }\n\n onCancel(() => controller.abort());\n\n return await fetch(url, request);\n};\n\nexport const getResponseHeader = (response: Response, responseHeader?: string): string | undefined => {\n if (responseHeader) {\n const content = response.headers.get(responseHeader);\n if (isString(content)) {\n return content;\n }\n }\n return undefined;\n};\n\nexport const getResponseBody = async (response: Response): Promise => {\n if (response.status !== 204) {\n try {\n const contentType = response.headers.get('Content-Type');\n if (contentType) {\n const jsonTypes = ['application/json', 'application/problem+json']\n const isJSON = jsonTypes.some(type => contentType.toLowerCase().startsWith(type));\n if (isJSON) {\n return await response.json();\n } else {\n return await response.text();\n }\n }\n } catch (error) {\n console.error(error);\n }\n }\n return undefined;\n};\n\nexport const catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): void => {\n const errors: Record = {\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 403: 'Forbidden',\n 404: 'Not Found',\n 500: 'Internal Server Error',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n ...options.errors,\n }\n\n const error = errors[result.status];\n if (error) {\n throw new ApiError(options, result, error);\n }\n\n if (!result.ok) {\n const errorStatus = result.status ?? 'unknown';\n const errorStatusText = result.statusText ?? 'unknown';\n const errorBody = (() => {\n try {\n return JSON.stringify(result.body, null, 2);\n } catch (e) {\n return undefined;\n }\n })();\n\n throw new ApiError(options, result,\n `Generic Error: status: ${errorStatus}; status text: ${errorStatusText}; body: ${errorBody}`\n );\n }\n};\n\n/**\n * Request method\n * @param config The OpenAPI configuration object\n * @param options The request options from the service\n * @returns CancelablePromise\n * @throws ApiError\n */\nexport const request = (config: OpenAPIConfig, options: ApiRequestOptions): CancelablePromise => {\n return new CancelablePromise(async (resolve, reject, onCancel) => {\n try {\n const url = getUrl(config, options);\n const formData = getFormData(options);\n const body = getRequestBody(options);\n const headers = await getHeaders(config, options);\n\n if (!onCancel.isCancelled) {\n const response = await sendRequest(config, options, url, body, formData, headers, onCancel);\n const responseBody = await getResponseBody(response);\n const responseHeader = getResponseHeader(response, options.responseHeader);\n\n const result: ApiResult = {\n url,\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n body: responseHeader ?? responseBody,\n };\n\n catchErrorCodes(options, result);\n\n resolve(result.body);\n }\n } catch (error) {\n reject(error);\n }\n });\n};\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","import { useState, useCallback, useLayoutEffect, useEffect, useRef, useMemo } from 'react';\nimport debounce from 'lodash.debounce';\n\n// src/useBoolean/useBoolean.ts\nfunction useBoolean(defaultValue = false) {\n if (typeof defaultValue !== \"boolean\") {\n throw new Error(\"defaultValue must be `true` or `false`\");\n }\n const [value, setValue] = useState(defaultValue);\n const setTrue = useCallback(() => {\n setValue(true);\n }, []);\n const setFalse = useCallback(() => {\n setValue(false);\n }, []);\n const toggle = useCallback(() => {\n setValue((x) => !x);\n }, []);\n return { value, setValue, setTrue, setFalse, toggle };\n}\nvar useIsomorphicLayoutEffect = typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\n// src/useEventListener/useEventListener.ts\nfunction useEventListener(eventName, handler, element, options) {\n const savedHandler = useRef(handler);\n useIsomorphicLayoutEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n useEffect(() => {\n const targetElement = (element == null ? void 0 : element.current) ?? window;\n if (!(targetElement && targetElement.addEventListener))\n return;\n const listener = (event) => {\n savedHandler.current(event);\n };\n targetElement.addEventListener(eventName, listener, options);\n return () => {\n targetElement.removeEventListener(eventName, listener, options);\n };\n }, [eventName, element, options]);\n}\n\n// src/useClickAnyWhere/useClickAnyWhere.ts\nfunction useClickAnyWhere(handler) {\n useEventListener(\"click\", (event) => {\n handler(event);\n });\n}\nfunction useCopyToClipboard() {\n const [copiedText, setCopiedText] = useState(null);\n const copy = useCallback(async (text) => {\n if (!(navigator == null ? void 0 : navigator.clipboard)) {\n console.warn(\"Clipboard not supported\");\n return false;\n }\n try {\n await navigator.clipboard.writeText(text);\n setCopiedText(text);\n return true;\n } catch (error) {\n console.warn(\"Copy failed\", error);\n setCopiedText(null);\n return false;\n }\n }, []);\n return [copiedText, copy];\n}\nfunction useCounter(initialValue) {\n const [count, setCount] = useState(initialValue ?? 0);\n const increment = useCallback(() => {\n setCount((x) => x + 1);\n }, []);\n const decrement = useCallback(() => {\n setCount((x) => x - 1);\n }, []);\n const reset = useCallback(() => {\n setCount(initialValue ?? 0);\n }, [initialValue]);\n return {\n count,\n increment,\n decrement,\n reset,\n setCount\n };\n}\nfunction useInterval(callback, delay) {\n const savedCallback = useRef(callback);\n useIsomorphicLayoutEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n useEffect(() => {\n if (delay === null) {\n return;\n }\n const id = setInterval(() => {\n savedCallback.current();\n }, delay);\n return () => {\n clearInterval(id);\n };\n }, [delay]);\n}\n\n// src/useCountdown/useCountdown.ts\nfunction useCountdown({\n countStart,\n countStop = 0,\n intervalMs = 1e3,\n isIncrement = false\n}) {\n const {\n count,\n increment,\n decrement,\n reset: resetCounter\n } = useCounter(countStart);\n const {\n value: isCountdownRunning,\n setTrue: startCountdown,\n setFalse: stopCountdown\n } = useBoolean(false);\n const resetCountdown = useCallback(() => {\n stopCountdown();\n resetCounter();\n }, [stopCountdown, resetCounter]);\n const countdownCallback = useCallback(() => {\n if (count === countStop) {\n stopCountdown();\n return;\n }\n if (isIncrement) {\n increment();\n } else {\n decrement();\n }\n }, [count, countStop, decrement, increment, isIncrement, stopCountdown]);\n useInterval(countdownCallback, isCountdownRunning ? intervalMs : null);\n return [count, { startCountdown, stopCountdown, resetCountdown }];\n}\nfunction useEventCallback(fn) {\n const ref = useRef(() => {\n throw new Error(\"Cannot call an event handler while rendering.\");\n });\n useIsomorphicLayoutEffect(() => {\n ref.current = fn;\n }, [fn]);\n return useCallback((...args) => {\n var _a;\n return (_a = ref.current) == null ? void 0 : _a.call(ref, ...args);\n }, [ref]);\n}\n\n// src/useLocalStorage/useLocalStorage.ts\nvar IS_SERVER = typeof window === \"undefined\";\nfunction useLocalStorage(key, initialValue, options = {}) {\n const { initializeWithValue = true } = options;\n const serializer = useCallback(\n (value) => {\n if (options.serializer) {\n return options.serializer(value);\n }\n return JSON.stringify(value);\n },\n [options]\n );\n const deserializer = useCallback(\n (value) => {\n if (options.deserializer) {\n return options.deserializer(value);\n }\n if (value === \"undefined\") {\n return void 0;\n }\n const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;\n let parsed;\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n console.error(\"Error parsing JSON:\", error);\n return defaultValue;\n }\n return parsed;\n },\n [options, initialValue]\n );\n const readValue = useCallback(() => {\n const initialValueToUse = initialValue instanceof Function ? initialValue() : initialValue;\n if (IS_SERVER) {\n return initialValueToUse;\n }\n try {\n const raw = window.localStorage.getItem(key);\n return raw ? deserializer(raw) : initialValueToUse;\n } catch (error) {\n console.warn(`Error reading localStorage key \\u201C${key}\\u201D:`, error);\n return initialValueToUse;\n }\n }, [initialValue, key, deserializer]);\n const [storedValue, setStoredValue] = useState(() => {\n if (initializeWithValue) {\n return readValue();\n }\n return initialValue instanceof Function ? initialValue() : initialValue;\n });\n const setValue = useEventCallback((value) => {\n if (IS_SERVER) {\n console.warn(\n `Tried setting localStorage key \\u201C${key}\\u201D even though environment is not a client`\n );\n }\n try {\n const newValue = value instanceof Function ? value(readValue()) : value;\n window.localStorage.setItem(key, serializer(newValue));\n setStoredValue(newValue);\n window.dispatchEvent(new StorageEvent(\"local-storage\", { key }));\n } catch (error) {\n console.warn(`Error setting localStorage key \\u201C${key}\\u201D:`, error);\n }\n });\n const removeValue = useEventCallback(() => {\n if (IS_SERVER) {\n console.warn(\n `Tried removing localStorage key \\u201C${key}\\u201D even though environment is not a client`\n );\n }\n const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;\n window.localStorage.removeItem(key);\n setStoredValue(defaultValue);\n window.dispatchEvent(new StorageEvent(\"local-storage\", { key }));\n });\n useEffect(() => {\n setStoredValue(readValue());\n }, [key]);\n const handleStorageChange = useCallback(\n (event) => {\n if (event.key && event.key !== key) {\n return;\n }\n setStoredValue(readValue());\n },\n [key, readValue]\n );\n useEventListener(\"storage\", handleStorageChange);\n useEventListener(\"local-storage\", handleStorageChange);\n return [storedValue, setValue, removeValue];\n}\nvar IS_SERVER2 = typeof window === \"undefined\";\nfunction useMediaQuery(query, {\n defaultValue = false,\n initializeWithValue = true\n} = {}) {\n const getMatches = (query2) => {\n if (IS_SERVER2) {\n return defaultValue;\n }\n return window.matchMedia(query2).matches;\n };\n const [matches, setMatches] = useState(() => {\n if (initializeWithValue) {\n return getMatches(query);\n }\n return defaultValue;\n });\n function handleChange() {\n setMatches(getMatches(query));\n }\n useIsomorphicLayoutEffect(() => {\n const matchMedia = window.matchMedia(query);\n handleChange();\n if (matchMedia.addListener) {\n matchMedia.addListener(handleChange);\n } else {\n matchMedia.addEventListener(\"change\", handleChange);\n }\n return () => {\n if (matchMedia.removeListener) {\n matchMedia.removeListener(handleChange);\n } else {\n matchMedia.removeEventListener(\"change\", handleChange);\n }\n };\n }, [query]);\n return matches;\n}\n\n// src/useDarkMode/useDarkMode.ts\nvar COLOR_SCHEME_QUERY = \"(prefers-color-scheme: dark)\";\nvar LOCAL_STORAGE_KEY = \"usehooks-ts-dark-mode\";\nfunction useDarkMode(options = {}) {\n const {\n defaultValue,\n localStorageKey = LOCAL_STORAGE_KEY,\n initializeWithValue = true\n } = options;\n const isDarkOS = useMediaQuery(COLOR_SCHEME_QUERY, {\n initializeWithValue,\n defaultValue\n });\n const [isDarkMode, setDarkMode] = useLocalStorage(\n localStorageKey,\n defaultValue ?? isDarkOS ?? false,\n { initializeWithValue }\n );\n useIsomorphicLayoutEffect(() => {\n if (isDarkOS !== isDarkMode) {\n setDarkMode(isDarkOS);\n }\n }, [isDarkOS]);\n return {\n isDarkMode,\n toggle: () => {\n setDarkMode((prev) => !prev);\n },\n enable: () => {\n setDarkMode(true);\n },\n disable: () => {\n setDarkMode(false);\n },\n set: (value) => {\n setDarkMode(value);\n }\n };\n}\nfunction useUnmount(func) {\n const funcRef = useRef(func);\n funcRef.current = func;\n useEffect(\n () => () => {\n funcRef.current();\n },\n []\n );\n}\n\n// src/useDebounceCallback/useDebounceCallback.ts\nfunction useDebounceCallback(func, delay = 500, options) {\n const debouncedFunc = useRef();\n useUnmount(() => {\n if (debouncedFunc.current) {\n debouncedFunc.current.cancel();\n }\n });\n const debounced = useMemo(() => {\n const debouncedFuncInstance = debounce(func, delay, options);\n const wrappedFunc = (...args) => {\n return debouncedFuncInstance(...args);\n };\n wrappedFunc.cancel = () => {\n debouncedFuncInstance.cancel();\n };\n wrappedFunc.isPending = () => {\n return !!debouncedFunc.current;\n };\n wrappedFunc.flush = () => {\n return debouncedFuncInstance.flush();\n };\n return wrappedFunc;\n }, [func, delay, options]);\n useEffect(() => {\n debouncedFunc.current = debounce(func, delay, options);\n }, [func, delay, options]);\n return debounced;\n}\nfunction useDebounceValue(initialValue, delay, options) {\n const eq = (options == null ? void 0 : options.equalityFn) ?? ((left, right) => left === right);\n const unwrappedInitialValue = initialValue instanceof Function ? initialValue() : initialValue;\n const [debouncedValue, setDebouncedValue] = useState(unwrappedInitialValue);\n const previousValueRef = useRef(unwrappedInitialValue);\n const updateDebouncedValue = useDebounceCallback(\n setDebouncedValue,\n delay,\n options\n );\n if (!eq(previousValueRef.current, unwrappedInitialValue)) {\n updateDebouncedValue(unwrappedInitialValue);\n previousValueRef.current = unwrappedInitialValue;\n }\n return [debouncedValue, updateDebouncedValue];\n}\nfunction useDocumentTitle(title, options = {}) {\n const { preserveTitleOnUnmount = true } = options;\n const defaultTitle = useRef(null);\n useIsomorphicLayoutEffect(() => {\n defaultTitle.current = window.document.title;\n }, []);\n useIsomorphicLayoutEffect(() => {\n window.document.title = title;\n }, [title]);\n useUnmount(() => {\n if (!preserveTitleOnUnmount && defaultTitle.current) {\n window.document.title = defaultTitle.current;\n }\n });\n}\nfunction useHover(elementRef) {\n const [value, setValue] = useState(false);\n const handleMouseEnter = () => {\n setValue(true);\n };\n const handleMouseLeave = () => {\n setValue(false);\n };\n useEventListener(\"mouseenter\", handleMouseEnter, elementRef);\n useEventListener(\"mouseleave\", handleMouseLeave, elementRef);\n return value;\n}\nfunction useIntersectionObserver({\n threshold = 0,\n root = null,\n rootMargin = \"0%\",\n freezeOnceVisible = false,\n initialIsIntersecting = false,\n onChange\n} = {}) {\n var _a;\n const [ref, setRef] = useState(null);\n const [state, setState] = useState(() => ({\n isIntersecting: initialIsIntersecting,\n entry: void 0\n }));\n const callbackRef = useRef();\n callbackRef.current = onChange;\n const frozen = ((_a = state.entry) == null ? void 0 : _a.isIntersecting) && freezeOnceVisible;\n useEffect(() => {\n if (!ref)\n return;\n if (!(\"IntersectionObserver\" in window))\n return;\n if (frozen)\n return;\n let unobserve;\n const observer = new IntersectionObserver(\n (entries) => {\n const thresholds = Array.isArray(observer.thresholds) ? observer.thresholds : [observer.thresholds];\n entries.forEach((entry) => {\n const isIntersecting = entry.isIntersecting && thresholds.some((threshold2) => entry.intersectionRatio >= threshold2);\n setState({ isIntersecting, entry });\n if (callbackRef.current) {\n callbackRef.current(isIntersecting, entry);\n }\n if (isIntersecting && freezeOnceVisible && unobserve) {\n unobserve();\n unobserve = void 0;\n }\n });\n },\n { threshold, root, rootMargin }\n );\n observer.observe(ref);\n return () => {\n observer.disconnect();\n };\n }, [\n ref,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(threshold),\n root,\n rootMargin,\n frozen,\n freezeOnceVisible\n ]);\n const prevRef = useRef(null);\n useEffect(() => {\n var _a2;\n if (!ref && ((_a2 = state.entry) == null ? void 0 : _a2.target) && !freezeOnceVisible && !frozen && prevRef.current !== state.entry.target) {\n prevRef.current = state.entry.target;\n setState({ isIntersecting: initialIsIntersecting, entry: void 0 });\n }\n }, [ref, state.entry, freezeOnceVisible, frozen, initialIsIntersecting]);\n const result = [\n setRef,\n !!state.isIntersecting,\n state.entry\n ];\n result.ref = result[0];\n result.isIntersecting = result[1];\n result.entry = result[2];\n return result;\n}\nfunction useIsClient() {\n const [isClient, setClient] = useState(false);\n useEffect(() => {\n setClient(true);\n }, []);\n return isClient;\n}\nfunction useIsMounted() {\n const isMounted = useRef(false);\n useEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n return useCallback(() => isMounted.current, []);\n}\nfunction useMap(initialState = /* @__PURE__ */ new Map()) {\n const [map, setMap] = useState(new Map(initialState));\n const actions = {\n set: useCallback((key, value) => {\n setMap((prev) => {\n const copy = new Map(prev);\n copy.set(key, value);\n return copy;\n });\n }, []),\n setAll: useCallback((entries) => {\n setMap(() => new Map(entries));\n }, []),\n remove: useCallback((key) => {\n setMap((prev) => {\n const copy = new Map(prev);\n copy.delete(key);\n return copy;\n });\n }, []),\n reset: useCallback(() => {\n setMap(() => /* @__PURE__ */ new Map());\n }, [])\n };\n return [map, actions];\n}\n\n// src/useOnClickOutside/useOnClickOutside.ts\nfunction useOnClickOutside(ref, handler, eventType = \"mousedown\", eventListenerOptions = {}) {\n useEventListener(\n eventType,\n (event) => {\n const target = event.target;\n if (!target || !target.isConnected) {\n return;\n }\n const isOutside = Array.isArray(ref) ? ref.filter((r) => Boolean(r.current)).every((r) => r.current && !r.current.contains(target)) : ref.current && !ref.current.contains(target);\n if (isOutside) {\n handler(event);\n }\n },\n void 0,\n eventListenerOptions\n );\n}\nvar IS_SERVER3 = typeof window === \"undefined\";\nfunction useReadLocalStorage(key, options = {}) {\n let { initializeWithValue = true } = options;\n if (IS_SERVER3) {\n initializeWithValue = false;\n }\n const deserializer = useCallback(\n (value) => {\n if (options.deserializer) {\n return options.deserializer(value);\n }\n if (value === \"undefined\") {\n return void 0;\n }\n let parsed;\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n console.error(\"Error parsing JSON:\", error);\n return null;\n }\n return parsed;\n },\n [options]\n );\n const readValue = useCallback(() => {\n if (IS_SERVER3) {\n return null;\n }\n try {\n const raw = window.localStorage.getItem(key);\n return raw ? deserializer(raw) : null;\n } catch (error) {\n console.warn(`Error reading localStorage key \\u201C${key}\\u201D:`, error);\n return null;\n }\n }, [key, deserializer]);\n const [storedValue, setStoredValue] = useState(() => {\n if (initializeWithValue) {\n return readValue();\n }\n return void 0;\n });\n useEffect(() => {\n setStoredValue(readValue());\n }, [key]);\n const handleStorageChange = useCallback(\n (event) => {\n if (event.key && event.key !== key) {\n return;\n }\n setStoredValue(readValue());\n },\n [key, readValue]\n );\n useEventListener(\"storage\", handleStorageChange);\n useEventListener(\"local-storage\", handleStorageChange);\n return storedValue;\n}\nvar initialSize = {\n width: void 0,\n height: void 0\n};\nfunction useResizeObserver(options) {\n const { ref, box = \"content-box\" } = options;\n const [{ width, height }, setSize] = useState(initialSize);\n const isMounted = useIsMounted();\n const previousSize = useRef({ ...initialSize });\n const onResize = useRef(void 0);\n onResize.current = options.onResize;\n useEffect(() => {\n if (!ref.current)\n return;\n if (typeof window === \"undefined\" || !(\"ResizeObserver\" in window))\n return;\n const observer = new ResizeObserver(([entry]) => {\n const boxProp = box === \"border-box\" ? \"borderBoxSize\" : box === \"device-pixel-content-box\" ? \"devicePixelContentBoxSize\" : \"contentBoxSize\";\n const newWidth = extractSize(entry, boxProp, \"inlineSize\");\n const newHeight = extractSize(entry, boxProp, \"blockSize\");\n const hasChanged = previousSize.current.width !== newWidth || previousSize.current.height !== newHeight;\n if (hasChanged) {\n const newSize = { width: newWidth, height: newHeight };\n previousSize.current.width = newWidth;\n previousSize.current.height = newHeight;\n if (onResize.current) {\n onResize.current(newSize);\n } else {\n if (isMounted()) {\n setSize(newSize);\n }\n }\n }\n });\n observer.observe(ref.current, { box });\n return () => {\n observer.disconnect();\n };\n }, [box, ref, isMounted]);\n return { width, height };\n}\nfunction extractSize(entry, box, sizeType) {\n if (!entry[box]) {\n if (box === \"contentBoxSize\") {\n return entry.contentRect[sizeType === \"inlineSize\" ? \"width\" : \"height\"];\n }\n return void 0;\n }\n return Array.isArray(entry[box]) ? entry[box][0][sizeType] : (\n // @ts-ignore Support Firefox's non-standard behavior\n entry[box][sizeType]\n );\n}\nvar IS_SERVER4 = typeof window === \"undefined\";\nfunction useScreen(options = {}) {\n let { initializeWithValue = true } = options;\n if (IS_SERVER4) {\n initializeWithValue = false;\n }\n const readScreen = () => {\n if (IS_SERVER4) {\n return void 0;\n }\n return window.screen;\n };\n const [screen, setScreen] = useState(() => {\n if (initializeWithValue) {\n return readScreen();\n }\n return void 0;\n });\n const debouncedSetScreen = useDebounceCallback(\n setScreen,\n options.debounceDelay\n );\n function handleSize() {\n const newScreen = readScreen();\n const setSize = options.debounceDelay ? debouncedSetScreen : setScreen;\n if (newScreen) {\n const {\n width,\n height,\n availHeight,\n availWidth,\n colorDepth,\n orientation,\n pixelDepth\n } = newScreen;\n setSize({\n width,\n height,\n availHeight,\n availWidth,\n colorDepth,\n orientation,\n pixelDepth\n });\n }\n }\n useEventListener(\"resize\", handleSize);\n useIsomorphicLayoutEffect(() => {\n handleSize();\n }, []);\n return screen;\n}\nvar cachedScriptStatuses = /* @__PURE__ */ new Map();\nfunction getScriptNode(src) {\n const node = document.querySelector(\n `script[src=\"${src}\"]`\n );\n const status = node == null ? void 0 : node.getAttribute(\"data-status\");\n return {\n node,\n status\n };\n}\nfunction useScript(src, options) {\n const [status, setStatus] = useState(() => {\n if (!src || (options == null ? void 0 : options.shouldPreventLoad)) {\n return \"idle\";\n }\n if (typeof window === \"undefined\") {\n return \"loading\";\n }\n return cachedScriptStatuses.get(src) ?? \"loading\";\n });\n useEffect(() => {\n if (!src || (options == null ? void 0 : options.shouldPreventLoad)) {\n return;\n }\n const cachedScriptStatus = cachedScriptStatuses.get(src);\n if (cachedScriptStatus === \"ready\" || cachedScriptStatus === \"error\") {\n setStatus(cachedScriptStatus);\n return;\n }\n const script = getScriptNode(src);\n let scriptNode = script.node;\n if (!scriptNode) {\n scriptNode = document.createElement(\"script\");\n scriptNode.src = src;\n scriptNode.async = true;\n if (options == null ? void 0 : options.id) {\n scriptNode.id = options.id;\n }\n scriptNode.setAttribute(\"data-status\", \"loading\");\n document.body.appendChild(scriptNode);\n const setAttributeFromEvent = (event) => {\n const scriptStatus = event.type === \"load\" ? \"ready\" : \"error\";\n scriptNode == null ? void 0 : scriptNode.setAttribute(\"data-status\", scriptStatus);\n };\n scriptNode.addEventListener(\"load\", setAttributeFromEvent);\n scriptNode.addEventListener(\"error\", setAttributeFromEvent);\n } else {\n setStatus(script.status ?? cachedScriptStatus ?? \"loading\");\n }\n const setStateFromEvent = (event) => {\n const newStatus = event.type === \"load\" ? \"ready\" : \"error\";\n setStatus(newStatus);\n cachedScriptStatuses.set(src, newStatus);\n };\n scriptNode.addEventListener(\"load\", setStateFromEvent);\n scriptNode.addEventListener(\"error\", setStateFromEvent);\n return () => {\n if (scriptNode) {\n scriptNode.removeEventListener(\"load\", setStateFromEvent);\n scriptNode.removeEventListener(\"error\", setStateFromEvent);\n }\n if (scriptNode && (options == null ? void 0 : options.removeOnUnmount)) {\n scriptNode.remove();\n cachedScriptStatuses.delete(src);\n }\n };\n }, [src, options == null ? void 0 : options.shouldPreventLoad, options == null ? void 0 : options.removeOnUnmount, options == null ? void 0 : options.id]);\n return status;\n}\nvar IS_SERVER5 = typeof window === \"undefined\";\nfunction useScrollLock(options = {}) {\n const { autoLock = true, lockTarget, widthReflow = true } = options;\n const [isLocked, setIsLocked] = useState(false);\n const target = useRef(null);\n const originalStyle = useRef(null);\n const lock = () => {\n if (target.current) {\n const { overflow, paddingRight } = target.current.style;\n originalStyle.current = { overflow, paddingRight };\n if (widthReflow) {\n const offsetWidth = target.current === document.body ? window.innerWidth : target.current.offsetWidth;\n const currentPaddingRight = parseInt(window.getComputedStyle(target.current).paddingRight, 10) || 0;\n const scrollbarWidth = offsetWidth - target.current.scrollWidth;\n target.current.style.paddingRight = `${scrollbarWidth + currentPaddingRight}px`;\n }\n target.current.style.overflow = \"hidden\";\n setIsLocked(true);\n }\n };\n const unlock = () => {\n if (target.current && originalStyle.current) {\n target.current.style.overflow = originalStyle.current.overflow;\n if (widthReflow) {\n target.current.style.paddingRight = originalStyle.current.paddingRight;\n }\n }\n setIsLocked(false);\n };\n useIsomorphicLayoutEffect(() => {\n if (IS_SERVER5)\n return;\n if (lockTarget) {\n target.current = typeof lockTarget === \"string\" ? document.querySelector(lockTarget) : lockTarget;\n }\n if (!target.current) {\n target.current = document.body;\n }\n if (autoLock) {\n lock();\n }\n return () => {\n unlock();\n };\n }, [autoLock, lockTarget, widthReflow]);\n return { isLocked, lock, unlock };\n}\nvar IS_SERVER6 = typeof window === \"undefined\";\nfunction useSessionStorage(key, initialValue, options = {}) {\n const { initializeWithValue = true } = options;\n const serializer = useCallback(\n (value) => {\n if (options.serializer) {\n return options.serializer(value);\n }\n return JSON.stringify(value);\n },\n [options]\n );\n const deserializer = useCallback(\n (value) => {\n if (options.deserializer) {\n return options.deserializer(value);\n }\n if (value === \"undefined\") {\n return void 0;\n }\n const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;\n let parsed;\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n console.error(\"Error parsing JSON:\", error);\n return defaultValue;\n }\n return parsed;\n },\n [options, initialValue]\n );\n const readValue = useCallback(() => {\n const initialValueToUse = initialValue instanceof Function ? initialValue() : initialValue;\n if (IS_SERVER6) {\n return initialValueToUse;\n }\n try {\n const raw = window.sessionStorage.getItem(key);\n return raw ? deserializer(raw) : initialValueToUse;\n } catch (error) {\n console.warn(`Error reading sessionStorage key \\u201C${key}\\u201D:`, error);\n return initialValueToUse;\n }\n }, [initialValue, key, deserializer]);\n const [storedValue, setStoredValue] = useState(() => {\n if (initializeWithValue) {\n return readValue();\n }\n return initialValue instanceof Function ? initialValue() : initialValue;\n });\n const setValue = useEventCallback((value) => {\n if (IS_SERVER6) {\n console.warn(\n `Tried setting sessionStorage key \\u201C${key}\\u201D even though environment is not a client`\n );\n }\n try {\n const newValue = value instanceof Function ? value(readValue()) : value;\n window.sessionStorage.setItem(key, serializer(newValue));\n setStoredValue(newValue);\n window.dispatchEvent(new StorageEvent(\"session-storage\", { key }));\n } catch (error) {\n console.warn(`Error setting sessionStorage key \\u201C${key}\\u201D:`, error);\n }\n });\n const removeValue = useEventCallback(() => {\n if (IS_SERVER6) {\n console.warn(\n `Tried removing sessionStorage key \\u201C${key}\\u201D even though environment is not a client`\n );\n }\n const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;\n window.sessionStorage.removeItem(key);\n setStoredValue(defaultValue);\n window.dispatchEvent(new StorageEvent(\"session-storage\", { key }));\n });\n useEffect(() => {\n setStoredValue(readValue());\n }, [key]);\n const handleStorageChange = useCallback(\n (event) => {\n if (event.key && event.key !== key) {\n return;\n }\n setStoredValue(readValue());\n },\n [key, readValue]\n );\n useEventListener(\"storage\", handleStorageChange);\n useEventListener(\"session-storage\", handleStorageChange);\n return [storedValue, setValue, removeValue];\n}\nfunction useStep(maxStep) {\n const [currentStep, setCurrentStep] = useState(1);\n const canGoToNextStep = currentStep + 1 <= maxStep;\n const canGoToPrevStep = currentStep - 1 > 0;\n const setStep = useCallback(\n (step) => {\n const newStep = step instanceof Function ? step(currentStep) : step;\n if (newStep >= 1 && newStep <= maxStep) {\n setCurrentStep(newStep);\n return;\n }\n throw new Error(\"Step not valid\");\n },\n [maxStep, currentStep]\n );\n const goToNextStep = useCallback(() => {\n if (canGoToNextStep) {\n setCurrentStep((step) => step + 1);\n }\n }, [canGoToNextStep]);\n const goToPrevStep = useCallback(() => {\n if (canGoToPrevStep) {\n setCurrentStep((step) => step - 1);\n }\n }, [canGoToPrevStep]);\n const reset = useCallback(() => {\n setCurrentStep(1);\n }, []);\n return [\n currentStep,\n {\n goToNextStep,\n goToPrevStep,\n canGoToNextStep,\n canGoToPrevStep,\n setStep,\n reset\n }\n ];\n}\n\n// src/useTernaryDarkMode/useTernaryDarkMode.ts\nvar COLOR_SCHEME_QUERY2 = \"(prefers-color-scheme: dark)\";\nvar LOCAL_STORAGE_KEY2 = \"usehooks-ts-ternary-dark-mode\";\nfunction useTernaryDarkMode({\n defaultValue = \"system\",\n localStorageKey = LOCAL_STORAGE_KEY2,\n initializeWithValue = true\n} = {}) {\n const isDarkOS = useMediaQuery(COLOR_SCHEME_QUERY2, { initializeWithValue });\n const [mode, setMode] = useLocalStorage(localStorageKey, defaultValue, {\n initializeWithValue\n });\n const isDarkMode = mode === \"dark\" || mode === \"system\" && isDarkOS;\n const toggleTernaryDarkMode = () => {\n const modes = [\"light\", \"system\", \"dark\"];\n setMode((prevMode) => {\n const nextIndex = (modes.indexOf(prevMode) + 1) % modes.length;\n return modes[nextIndex];\n });\n };\n return {\n isDarkMode,\n ternaryDarkMode: mode,\n setTernaryDarkMode: setMode,\n toggleTernaryDarkMode\n };\n}\nfunction useTimeout(callback, delay) {\n const savedCallback = useRef(callback);\n useIsomorphicLayoutEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n useEffect(() => {\n if (!delay && delay !== 0) {\n return;\n }\n const id = setTimeout(() => {\n savedCallback.current();\n }, delay);\n return () => {\n clearTimeout(id);\n };\n }, [delay]);\n}\nfunction useToggle(defaultValue) {\n const [value, setValue] = useState(!!defaultValue);\n const toggle = useCallback(() => {\n setValue((x) => !x);\n }, []);\n return [value, toggle, setValue];\n}\nvar IS_SERVER7 = typeof window === \"undefined\";\nfunction useWindowSize(options = {}) {\n let { initializeWithValue = true } = options;\n if (IS_SERVER7) {\n initializeWithValue = false;\n }\n const [windowSize, setWindowSize] = useState(() => {\n if (initializeWithValue) {\n return {\n width: window.innerWidth,\n height: window.innerHeight\n };\n }\n return {\n width: void 0,\n height: void 0\n };\n });\n const debouncedSetWindowSize = useDebounceCallback(\n setWindowSize,\n options.debounceDelay\n );\n function handleSize() {\n const setSize = options.debounceDelay ? debouncedSetWindowSize : setWindowSize;\n setSize({\n width: window.innerWidth,\n height: window.innerHeight\n });\n }\n useEventListener(\"resize\", handleSize);\n useIsomorphicLayoutEffect(() => {\n handleSize();\n }, []);\n return windowSize;\n}\n\nexport { useBoolean, useClickAnyWhere, useCopyToClipboard, useCountdown, useCounter, useDarkMode, useDebounceCallback, useDebounceValue, useDocumentTitle, useEventCallback, useEventListener, useHover, useIntersectionObserver, useInterval, useIsClient, useIsMounted, useIsomorphicLayoutEffect, useLocalStorage, useMap, useMediaQuery, useOnClickOutside, useReadLocalStorage, useResizeObserver, useScreen, useScript, useScrollLock, useSessionStorage, useStep, useTernaryDarkMode, useTimeout, useToggle, useUnmount, useWindowSize };\n"],"names":["ApiError","request","response","message","__publicField","CancelError","CancelablePromise","executor","__privateAdd","_isResolved","_isRejected","_isCancelled","_cancelHandlers","_promise","_resolve","_reject","__privateSet","resolve","reject","onResolve","value","__privateGet","onReject","reason","onCancel","cancelHandler","onFulfilled","onRejected","onFinally","error","isDefined","isString","isStringWithValue","isBlob","isFormData","base64","str","getQueryString","params","qs","append","key","process","v","k","getUrl","config","options","encoder","path","substring","group","_a","url","getFormData","formData","_","resolver","getHeaders","token","username","password","additionalHeaders","headers","credentials","getRequestBody","sendRequest","body","controller","getResponseHeader","responseHeader","content","getResponseBody","contentType","type","catchErrorCodes","result","errorStatus","errorStatusText","errorBody","responseBody","FUNC_ERROR_TEXT","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","global","freeSelf","root","objectProto","objectToString","nativeMax","nativeMin","now","debounce","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","toNumber","isObject","invokeFunc","time","args","thisArg","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","isObjectLike","isSymbol","other","isBinary","lodash_debounce","useIsomorphicLayoutEffect","useLayoutEffect","useEffect","useEventListener","eventName","handler","element","savedHandler","useRef","targetElement","listener","event","useEventCallback","fn","ref","useCallback","IS_SERVER","useLocalStorage","initialValue","initializeWithValue","serializer","deserializer","defaultValue","parsed","readValue","initialValueToUse","raw","storedValue","setStoredValue","useState","setValue","newValue","removeValue","handleStorageChange","IS_SERVER2","useMediaQuery","query","getMatches","query2","matches","setMatches","handleChange","matchMedia","COLOR_SCHEME_QUERY","LOCAL_STORAGE_KEY","useDarkMode","localStorageKey","isDarkOS","isDarkMode","setDarkMode","prev","useUnmount","funcRef","useDebounceCallback","delay","debouncedFunc","useMemo","debouncedFuncInstance","wrappedFunc","useDebounceValue","eq","left","right","unwrappedInitialValue","debouncedValue","setDebouncedValue","previousValueRef","updateDebouncedValue","useIntersectionObserver","threshold","rootMargin","freezeOnceVisible","initialIsIntersecting","onChange","setRef","state","setState","callbackRef","frozen","observer","entries","thresholds","entry","isIntersecting","threshold2","prevRef","_a2","useIsMounted","isMounted","useOnClickOutside","eventType","eventListenerOptions","target","r","initialSize","useResizeObserver","box","width","height","setSize","previousSize","onResize","boxProp","newWidth","extractSize","newHeight","newSize","sizeType"],"mappings":"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","x_google_ignoreList":[3,4]}