snap-records 1.1.0 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"snap-records.es.js","sources":["../src/SnapTypes.ts","../node_modules/lru-cache/dist/esm/index.js","../src/SnapApi.ts","../src/SnapOptions.ts","../src/utils.ts","../src/UrlManager.ts","../src/SnapRenderer.ts","../src/CacheManager.ts","../node_modules/immer/dist/immer.mjs","../src/StateManager.ts","../src/EventManager.ts","../node_modules/dexie/dist/dexie.min.js","../node_modules/dexie/import-wrapper-prod.mjs","../src/SnapRecordsDB.ts","../src/Configuration.ts","../src/Translations.ts","../src/SnapRecords.ts"],"sourcesContent":["import type { Draft } from 'immer';\nimport type { UrlManager } from './UrlManager.js';\nimport type { SnapRecords } from './SnapRecords.js';\nimport type { StateManager } from './StateManager.js';\nimport type { CacheManager } from './CacheManager.js';\n\n/*========================================================================================================\n\n SNAP TYPES FILES\n\n This file defines all core TypeScript types, interfaces, enums, and utility classes\n used by the SnapRecords data table library. It provides type safety and structure for\n configuration, state management, rendering, event handling, error reporting, and\n extensibility of the SnapRecords component. The types in this file are intended to be\n imported and used throughout the SnapRecords codebase to ensure consistent and robust\n API design.\n\n==========================================================================================================*/\n\n// Enum defining log levels for debugging and error reporting\nexport enum LogLevel {\n // General logging for detailed tracing\n LOG = 'log',\n // Informational messages about normal operations\n INFO = 'info',\n // Warnings for non-critical issues\n WARN = 'warn',\n // Errors for critical failures\n ERROR = 'error',\n}\n\n// Enum specifying supported rendering modes for data display\nexport enum RenderType {\n // Displays data in a tabular format\n TABLE = 'table',\n // Displays data as a list of items\n LIST = 'list',\n // Displays data as cards optimized for mobile devices\n MOBILE_CARDS = 'mobile_cards',\n}\n\n// Enum defining sort order directions\nexport enum OrderDirection {\n // Ascending order (e.g., A-Z, 1-10)\n ASC = 'ASC',\n // Descending order (e.g., Z-A, 10-1)\n DESC = 'DESC',\n}\n\n// Enum listing supported rows per page options for pagination\nexport enum RowsPerPage {\n // Default number of rows per page\n DEFAULT = 10,\n // 20 rows per page\n TWENTY = 20,\n // 50 rows per page\n FIFTY = 50,\n // 100 rows per page\n HUNDRED = 100,\n // 250 rows per page\n TWO_HUNDRED_FIFTY = 250,\n // 500 rows per page\n FIVE_HUNDRED = 500,\n // 1000 rows per page\n THOUSAND = 1000,\n}\n\n// Interface requiring an ID property for data records\nexport interface Identifiable {\n // Unique identifier for each data record\n id: string | number;\n}\n\nexport interface PersistedState {\n columns: string[];\n columnWidths: [string, number][];\n sortConditions: SortCondition[];\n filters: Record<string, string>;\n currentPage: number;\n rowsPerPage: RowsPerPage;\n headerCellClasses: string[];\n}\n\n// Interface defining the structure of translation objects\nexport interface Translation {\n // Error messages for various failure scenarios\n errors: {\n // Generic error message for unexpected issues\n generic: string;\n // Error for invalid configuration\n invalidConfig: string;\n // Error when the container element is not found\n containerNotFound: string;\n // Error for data loading failures\n dataLoadingFailed: string;\n // Error for rendering failures\n renderFailed: string;\n };\n // Message displayed during data loading\n loading: string;\n // Label for total records count\n totalRecords: string;\n // Label for filtered records count\n filteredRecords: string;\n // Title for error messages\n errorTitle: string;\n // Generic error message content\n errorMessage: string;\n // Message when no data is available\n noDataAvailable: string;\n // Label for the previous page button\n previous: string;\n // Label for the next page button\n next: string;\n // Label for the retry button\n retry: string;\n // Pagination-related translations\n pagination: {\n // Template for showing record range (e.g., \"Showing 1-10 of 50\")\n showingRecords: string;\n };\n // Label for the current page\n currentPage: string;\n // Label for jumping to a specific page\n jumpToPage: string;\n // Accessibility label for page navigation\n pageNavigation: string;\n // Label for sorting in ascending order\n sortAscending: string;\n // Label for sorting in descending order\n sortDescending: string;\n // Label for removing sort\n removeSort: string;\n // Announcement when a row is selected\n rowSelected: string;\n // Announcement when a row is deselected\n rowDeselected: string;\n // Label for column resize handle\n columnResizeHandle: string;\n // Label for draggable columns\n dragColumn: string;\n // Label for loading more data\n loadMore: string;\n}\n\n// Interface for the event manager, handling user interactions\nexport interface ISnapEventManager {\n // Sets up all event handlers for user interactions\n setupAllHandlers(): void;\n // Removes all event listeners and cleans up\n destroy(): void;\n}\n\n// Type defining button types for pagination\nexport type ButtonType = 'prev' | 'next' | 'number';\n\n// Custom error class for configuration-related issues\nexport class SnapRecordsConfigError extends Error {\n constructor(message: string) {\n super(message);\n // Set the error name for identification\n this.name = 'SnapRecordsConfigError';\n }\n}\n\n// Custom error class for data-related issues\nexport class SnapRecordsDataError extends Error {\n constructor(message: string) {\n super(message);\n // Set the error name for identification\n this.name = 'SnapRecordsDataError';\n }\n}\n\n// Interface defining the configuration for pagination buttons\nexport interface ButtonConfig {\n // CSS class names for styling\n classNames: {\n // Base class for the button\n base: string;\n // Class applied when the button is disabled\n disabled: string;\n };\n // Flag indicating if the button content is HTML\n isHtml: boolean;\n // Optional template function for custom button content\n template?: (page: number | string) => string;\n}\n\n// Type defining a sort condition as a tuple of column name and direction\nexport type SortCondition = [string, OrderDirection];\n\n// Interface for server request parameters\nexport interface ServerRequestParams {\n // Current page number\n page: number;\n // Number of records per page\n perPage: number;\n // Offset for pagination\n offset: number;\n // Optional filters for data\n filtering?: Record<string, string>;\n // Optional sorting conditions\n sorting?: Record<string, 'ASC' | 'DESC'>;\n}\n\n// Type defining callbacks for the event manager\nexport type EventManagerCallbacks = {\n // Callback for reordering columns\n reorderColumns: (sourceColId: string, targetColId: string) => void;\n // Callback to request a data reload\n requestDataLoad: () => void;\n};\n\n// Type for state update functions using Immer drafts\nexport type StateUpdater<T extends Identifiable & Record<string, unknown>> = (\n draft: Draft<SnapRecordsState<T>>\n) => void;\n\n// Interface for cached data structure\nexport interface CacheData<T extends Identifiable & Record<string, unknown>> {\n // URL of the cached request\n url: string;\n // Cached data array\n data: T[];\n // Total number of records\n totalRecords: number;\n // Timestamp of when the data was cached\n timestamp: number;\n}\n\n// Interface for lifecycle hooks to customize behavior\nexport interface LifecycleHooks<T extends Identifiable & Record<string, unknown>> {\n // Called before data is loaded\n preDataLoad?: (params: ServerRequestParams) => void;\n // Called after data is loaded\n postDataLoad?: (data: ReadonlyArray<T>) => void;\n // Called before rendering\n preRender?: () => void;\n // Called after rendering\n postRender?: () => void;\n // Called when row selection changes\n selectionChanged?: (selectedRows: T[]) => void;\n}\n\n// Interface for the renderer, handling UI rendering\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport interface ISnapRenderer<T extends Identifiable & Record<string, unknown>> {\n // Table body element\n readonly tableBody: HTMLTableSectionElement | null;\n // List container element\n readonly listContainer: HTMLUListElement | null;\n // Mobile cards container element\n readonly cardsContainer: HTMLElement | null;\n // Table header element\n readonly tableHeader: HTMLTableSectionElement | null;\n // Renders the UI based on the current state\n render(): void;\n // Cleans up the renderer\n destroy(): void;\n // Creates necessary DOM containers\n createContainers(): void;\n // Applies the current theme\n applyThemeClass(): void;\n // Shows a loading indicator\n showLoading(): void;\n // Hides the loading indicator\n hideLoading(): void;\n // Displays an error message\n showError(message: string): void;\n // Announces updates for screen readers\n announceScreenReaderUpdate(message: string): void;\n // Highlights selected rows\n highlightSelectedRows(): void;\n // Highlights the current row for keyboard navigation\n highlightCurrentRow(): void;\n // Navigates to the next row\n navigateToNextRow(): void;\n // Navigates to the previous row\n navigateToPrevRow(): void;\n // Applies column widths\n applyColumnWidths(): void;\n}\n\n// Interface defining the state of a SnapRecords instance\nexport interface SnapRecordsState<T extends Identifiable & Record<string, unknown>> {\n // Current page number\n readonly currentPage: number;\n // Number of rows per page\n readonly rowsPerPage: number;\n // Applied filters\n readonly filters: Readonly<Record<string, string>>;\n // Applied sort conditions\n readonly sortConditions: ReadonlyArray<SortCondition>;\n // List of column names\n readonly columns: ReadonlyArray<string>;\n // List of column titles\n readonly columnTitles: ReadonlyArray<string>;\n // Map of column widths\n readonly columnWidths: ReadonlyMap<string, number>;\n // Current data array\n readonly data: ReadonlyArray<T>;\n // Total number of records\n readonly totalRecords: number;\n // Current rendering mode\n readonly format: RenderType;\n // Current language code\n readonly language: string;\n // Current translations\n readonly translations: Translation | null;\n // Current theme (light, dark, or default)\n readonly theme: 'light' | 'dark' | 'default';\n // CSS classes for header cells\n readonly headerCellClasses: ReadonlyArray<string>;\n}\n\n// Interface for SnapRecords configuration options\nexport interface SnapRecordsOptions<T extends Identifiable & Record<string, unknown>> {\n // API URL for data fetching\n url: string;\n // List of column names\n columns: string[];\n // Optional list of column titles\n columnTitles?: string[];\n // Rendering mode\n format?: RenderType;\n // Number of rows per page\n rowsPerPage?: RowsPerPage;\n // Flag to enable caching\n useCache?: boolean;\n // Flag to enable URL state persistence\n usePushState?: boolean;\n // Language code for translations\n language?: string;\n // Path to the language files directory\n langPath?: string;\n // CSS classes for header cells\n headerCellClasses?: string[];\n // Cache expiration time\n cacheExpiry?: number;\n // Flag to enable row selection\n selectable?: boolean;\n // Lifecycle hooks for customization\n lifecycleHooks?: LifecycleHooks<T>;\n // Theme (light, dark, or default)\n theme?: 'light' | 'dark' | 'default';\n // Flag to enable draggable columns\n draggableColumns?: boolean;\n // Configuration for the previous page button\n prevButton?: {\n // Button text\n text?: string;\n // Flag indicating if text is HTML\n isHtml?: boolean;\n // Template function for button content\n template?: (page: number | string) => string;\n };\n // Configuration for the next page button\n nextButton?: {\n // Button text\n text?: string;\n // Flag indicating if text is HTML\n isHtml?: boolean;\n // Template function for button content\n template?: (page: number | string) => string;\n };\n // Number of retry attempts for failed fetches\n retryAttempts?: number;\n // Flag to enable preloading of the next page\n preloadNextPage?: boolean;\n // Flag to enable state persistence\n persistState?: boolean;\n // Flag to destroy the instance on window unload\n destroyOnUnload?: boolean;\n // Flag to enable debug logging\n debug?: boolean;\n // Flag to enable lazy loading of media\n lazyLoadMedia?: boolean;\n // Size of the format cache\n formatCacheSize?: number;\n // Optional custom event manager\n eventManager?: (\n parent: SnapRecords<T>,\n renderer: ISnapRenderer<T>,\n callbacks: EventManagerCallbacks\n ) => ISnapEventManager;\n // Optional custom state manager\n stateManager?: (parent: SnapRecords<T>) => StateManager<T>;\n // Optional custom URL manager\n urlManager?: (parent: SnapRecords<T>) => UrlManager<T>;\n // Optional formatters for custom cell rendering\n columnFormatters?: { [columnKey: string]: (value: unknown, row: T) => string };\n // Optional custom renderer\n renderer?: (parent: SnapRecords<T>, container: HTMLElement) => ISnapRenderer<T>;\n // Optional custom cache manager\n cacheManager?: (parent: SnapRecords<T>, urlManager: UrlManager<T>) => CacheManager<T>;\n}\n\n// Interface for the public API of SnapRecords\nexport interface ISnapApi<T extends Identifiable & Record<string, unknown>> {\n // Resets the instance to its initial state\n reset(): void;\n // Destroys the instance\n destroy(): void;\n // Refreshes the data\n refresh(): void;\n // Clears all row selections\n clearSelection(): void;\n // Returns the selected rows\n getSelectedRows(): T[];\n // Returns the current data array\n getData(): ReadonlyArray<T>;\n // Navigates to a specific page\n gotoPage(page: number): void;\n // Returns the total number of records\n getTotals(): { totalRecords: number };\n // Sets the rendering mode\n setRenderMode(mode: RenderType): void;\n // Sets the theme\n setTheme(theme: 'light' | 'dark' | 'default'): void;\n // Sets the language\n setLanguage(newLanguage: string): Promise<void>;\n // Sets the number of rows per page\n setRowsPerPage(newRowsPerPage: RowsPerPage): void;\n // Performs a search with filters\n search(filters: Record<string, string>, merge?: boolean): void;\n // Updates state parameters\n updateParams(\n params: Partial<\n Pick<SnapRecordsState<T>, 'currentPage' | 'rowsPerPage' | 'filters' | 'sortConditions'>\n >\n ): void;\n}\n\n/*========================================================================================================\n SNAP TYPES FILES ENDS HERE\n==========================================================================================================*/\n","/**\n * @module LRUCache\n */\nconst perf = typeof performance === 'object' &&\n performance &&\n typeof performance.now === 'function'\n ? performance\n : Date;\nconst warned = new Set();\n/* c8 ignore start */\nconst PROCESS = (typeof process === 'object' && !!process ? process : {});\n/* c8 ignore start */\nconst emitWarning = (msg, type, code, fn) => {\n typeof PROCESS.emitWarning === 'function'\n ? PROCESS.emitWarning(msg, type, code, fn)\n : console.error(`[${code}] ${type}: ${msg}`);\n};\nlet AC = globalThis.AbortController;\nlet AS = globalThis.AbortSignal;\n/* c8 ignore start */\nif (typeof AC === 'undefined') {\n //@ts-ignore\n AS = class AbortSignal {\n onabort;\n _onabort = [];\n reason;\n aborted = false;\n addEventListener(_, fn) {\n this._onabort.push(fn);\n }\n };\n //@ts-ignore\n AC = class AbortController {\n constructor() {\n warnACPolyfill();\n }\n signal = new AS();\n abort(reason) {\n if (this.signal.aborted)\n return;\n //@ts-ignore\n this.signal.reason = reason;\n //@ts-ignore\n this.signal.aborted = true;\n //@ts-ignore\n for (const fn of this.signal._onabort) {\n fn(reason);\n }\n this.signal.onabort?.(reason);\n }\n };\n let printACPolyfillWarning = PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1';\n const warnACPolyfill = () => {\n if (!printACPolyfillWarning)\n return;\n printACPolyfillWarning = false;\n emitWarning('AbortController is not defined. If using lru-cache in ' +\n 'node 14, load an AbortController polyfill from the ' +\n '`node-abort-controller` package. A minimal polyfill is ' +\n 'provided for use by LRUCache.fetch(), but it should not be ' +\n 'relied upon in other contexts (eg, passing it to other APIs that ' +\n 'use AbortController/AbortSignal might have undesirable effects). ' +\n 'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.', 'NO_ABORT_CONTROLLER', 'ENOTSUP', warnACPolyfill);\n };\n}\n/* c8 ignore stop */\nconst shouldWarn = (code) => !warned.has(code);\nconst TYPE = Symbol('type');\nconst isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n);\n/* c8 ignore start */\n// This is a little bit ridiculous, tbh.\n// The maximum array length is 2^32-1 or thereabouts on most JS impls.\n// And well before that point, you're caching the entire world, I mean,\n// that's ~32GB of just integers for the next/prev links, plus whatever\n// else to hold that many keys and values. Just filling the memory with\n// zeroes at init time is brutal when you get that big.\n// But why not be complete?\n// Maybe in the future, these limits will have expanded.\nconst getUintArray = (max) => !isPosInt(max)\n ? null\n : max <= Math.pow(2, 8)\n ? Uint8Array\n : max <= Math.pow(2, 16)\n ? Uint16Array\n : max <= Math.pow(2, 32)\n ? Uint32Array\n : max <= Number.MAX_SAFE_INTEGER\n ? ZeroArray\n : null;\n/* c8 ignore stop */\nclass ZeroArray extends Array {\n constructor(size) {\n super(size);\n this.fill(0);\n }\n}\nclass Stack {\n heap;\n length;\n // private constructor\n static #constructing = false;\n static create(max) {\n const HeapCls = getUintArray(max);\n if (!HeapCls)\n return [];\n Stack.#constructing = true;\n const s = new Stack(max, HeapCls);\n Stack.#constructing = false;\n return s;\n }\n constructor(max, HeapCls) {\n /* c8 ignore start */\n if (!Stack.#constructing) {\n throw new TypeError('instantiate Stack using Stack.create(n)');\n }\n /* c8 ignore stop */\n this.heap = new HeapCls(max);\n this.length = 0;\n }\n push(n) {\n this.heap[this.length++] = n;\n }\n pop() {\n return this.heap[--this.length];\n }\n}\n/**\n * Default export, the thing you're using this module to get.\n *\n * The `K` and `V` types define the key and value types, respectively. The\n * optional `FC` type defines the type of the `context` object passed to\n * `cache.fetch()` and `cache.memo()`.\n *\n * Keys and values **must not** be `null` or `undefined`.\n *\n * All properties from the options object (with the exception of `max`,\n * `maxSize`, `fetchMethod`, `memoMethod`, `dispose` and `disposeAfter`) are\n * added as normal public members. (The listed options are read-only getters.)\n *\n * Changing any of these will alter the defaults for subsequent method calls.\n */\nexport class LRUCache {\n // options that cannot be changed without disaster\n #max;\n #maxSize;\n #dispose;\n #onInsert;\n #disposeAfter;\n #fetchMethod;\n #memoMethod;\n /**\n * {@link LRUCache.OptionsBase.ttl}\n */\n ttl;\n /**\n * {@link LRUCache.OptionsBase.ttlResolution}\n */\n ttlResolution;\n /**\n * {@link LRUCache.OptionsBase.ttlAutopurge}\n */\n ttlAutopurge;\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnGet}\n */\n updateAgeOnGet;\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnHas}\n */\n updateAgeOnHas;\n /**\n * {@link LRUCache.OptionsBase.allowStale}\n */\n allowStale;\n /**\n * {@link LRUCache.OptionsBase.noDisposeOnSet}\n */\n noDisposeOnSet;\n /**\n * {@link LRUCache.OptionsBase.noUpdateTTL}\n */\n noUpdateTTL;\n /**\n * {@link LRUCache.OptionsBase.maxEntrySize}\n */\n maxEntrySize;\n /**\n * {@link LRUCache.OptionsBase.sizeCalculation}\n */\n sizeCalculation;\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}\n */\n noDeleteOnFetchRejection;\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}\n */\n noDeleteOnStaleGet;\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}\n */\n allowStaleOnFetchAbort;\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}\n */\n allowStaleOnFetchRejection;\n /**\n * {@link LRUCache.OptionsBase.ignoreFetchAbort}\n */\n ignoreFetchAbort;\n // computed properties\n #size;\n #calculatedSize;\n #keyMap;\n #keyList;\n #valList;\n #next;\n #prev;\n #head;\n #tail;\n #free;\n #disposed;\n #sizes;\n #starts;\n #ttls;\n #hasDispose;\n #hasFetchMethod;\n #hasDisposeAfter;\n #hasOnInsert;\n /**\n * Do not call this method unless you need to inspect the\n * inner workings of the cache. If anything returned by this\n * object is modified in any way, strange breakage may occur.\n *\n * These fields are private for a reason!\n *\n * @internal\n */\n static unsafeExposeInternals(c) {\n return {\n // properties\n starts: c.#starts,\n ttls: c.#ttls,\n sizes: c.#sizes,\n keyMap: c.#keyMap,\n keyList: c.#keyList,\n valList: c.#valList,\n next: c.#next,\n prev: c.#prev,\n get head() {\n return c.#head;\n },\n get tail() {\n return c.#tail;\n },\n free: c.#free,\n // methods\n isBackgroundFetch: (p) => c.#isBackgroundFetch(p),\n backgroundFetch: (k, index, options, context) => c.#backgroundFetch(k, index, options, context),\n moveToTail: (index) => c.#moveToTail(index),\n indexes: (options) => c.#indexes(options),\n rindexes: (options) => c.#rindexes(options),\n isStale: (index) => c.#isStale(index),\n };\n }\n // Protected read-only members\n /**\n * {@link LRUCache.OptionsBase.max} (read-only)\n */\n get max() {\n return this.#max;\n }\n /**\n * {@link LRUCache.OptionsBase.maxSize} (read-only)\n */\n get maxSize() {\n return this.#maxSize;\n }\n /**\n * The total computed size of items in the cache (read-only)\n */\n get calculatedSize() {\n return this.#calculatedSize;\n }\n /**\n * The number of items stored in the cache (read-only)\n */\n get size() {\n return this.#size;\n }\n /**\n * {@link LRUCache.OptionsBase.fetchMethod} (read-only)\n */\n get fetchMethod() {\n return this.#fetchMethod;\n }\n get memoMethod() {\n return this.#memoMethod;\n }\n /**\n * {@link LRUCache.OptionsBase.dispose} (read-only)\n */\n get dispose() {\n return this.#dispose;\n }\n /**\n * {@link LRUCache.OptionsBase.onInsert} (read-only)\n */\n get onInsert() {\n return this.#onInsert;\n }\n /**\n * {@link LRUCache.OptionsBase.disposeAfter} (read-only)\n */\n get disposeAfter() {\n return this.#disposeAfter;\n }\n constructor(options) {\n const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, onInsert, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, memoMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort, } = options;\n if (max !== 0 && !isPosInt(max)) {\n throw new TypeError('max option must be a nonnegative integer');\n }\n const UintArray = max ? getUintArray(max) : Array;\n if (!UintArray) {\n throw new Error('invalid max value: ' + max);\n }\n this.#max = max;\n this.#maxSize = maxSize;\n this.maxEntrySize = maxEntrySize || this.#maxSize;\n this.sizeCalculation = sizeCalculation;\n if (this.sizeCalculation) {\n if (!this.#maxSize && !this.maxEntrySize) {\n throw new TypeError('cannot set sizeCalculation without setting maxSize or maxEntrySize');\n }\n if (typeof this.sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation set to non-function');\n }\n }\n if (memoMethod !== undefined &&\n typeof memoMethod !== 'function') {\n throw new TypeError('memoMethod must be a function if defined');\n }\n this.#memoMethod = memoMethod;\n if (fetchMethod !== undefined &&\n typeof fetchMethod !== 'function') {\n throw new TypeError('fetchMethod must be a function if specified');\n }\n this.#fetchMethod = fetchMethod;\n this.#hasFetchMethod = !!fetchMethod;\n this.#keyMap = new Map();\n this.#keyList = new Array(max).fill(undefined);\n this.#valList = new Array(max).fill(undefined);\n this.#next = new UintArray(max);\n this.#prev = new UintArray(max);\n this.#head = 0;\n this.#tail = 0;\n this.#free = Stack.create(max);\n this.#size = 0;\n this.#calculatedSize = 0;\n if (typeof dispose === 'function') {\n this.#dispose = dispose;\n }\n if (typeof onInsert === 'function') {\n this.#onInsert = onInsert;\n }\n if (typeof disposeAfter === 'function') {\n this.#disposeAfter = disposeAfter;\n this.#disposed = [];\n }\n else {\n this.#disposeAfter = undefined;\n this.#disposed = undefined;\n }\n this.#hasDispose = !!this.#dispose;\n this.#hasOnInsert = !!this.#onInsert;\n this.#hasDisposeAfter = !!this.#disposeAfter;\n this.noDisposeOnSet = !!noDisposeOnSet;\n this.noUpdateTTL = !!noUpdateTTL;\n this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection;\n this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection;\n this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort;\n this.ignoreFetchAbort = !!ignoreFetchAbort;\n // NB: maxEntrySize is set to maxSize if it's set\n if (this.maxEntrySize !== 0) {\n if (this.#maxSize !== 0) {\n if (!isPosInt(this.#maxSize)) {\n throw new TypeError('maxSize must be a positive integer if specified');\n }\n }\n if (!isPosInt(this.maxEntrySize)) {\n throw new TypeError('maxEntrySize must be a positive integer if specified');\n }\n this.#initializeSizeTracking();\n }\n this.allowStale = !!allowStale;\n this.noDeleteOnStaleGet = !!noDeleteOnStaleGet;\n this.updateAgeOnGet = !!updateAgeOnGet;\n this.updateAgeOnHas = !!updateAgeOnHas;\n this.ttlResolution =\n isPosInt(ttlResolution) || ttlResolution === 0\n ? ttlResolution\n : 1;\n this.ttlAutopurge = !!ttlAutopurge;\n this.ttl = ttl || 0;\n if (this.ttl) {\n if (!isPosInt(this.ttl)) {\n throw new TypeError('ttl must be a positive integer if specified');\n }\n this.#initializeTTLTracking();\n }\n // do not allow completely unbounded caches\n if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) {\n throw new TypeError('At least one of max, maxSize, or ttl is required');\n }\n if (!this.ttlAutopurge && !this.#max && !this.#maxSize) {\n const code = 'LRU_CACHE_UNBOUNDED';\n if (shouldWarn(code)) {\n warned.add(code);\n const msg = 'TTL caching without ttlAutopurge, max, or maxSize can ' +\n 'result in unbounded memory consumption.';\n emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache);\n }\n }\n }\n /**\n * Return the number of ms left in the item's TTL. If item is not in cache,\n * returns `0`. Returns `Infinity` if item is in cache without a defined TTL.\n */\n getRemainingTTL(key) {\n return this.#keyMap.has(key) ? Infinity : 0;\n }\n #initializeTTLTracking() {\n const ttls = new ZeroArray(this.#max);\n const starts = new ZeroArray(this.#max);\n this.#ttls = ttls;\n this.#starts = starts;\n this.#setItemTTL = (index, ttl, start = perf.now()) => {\n starts[index] = ttl !== 0 ? start : 0;\n ttls[index] = ttl;\n if (ttl !== 0 && this.ttlAutopurge) {\n const t = setTimeout(() => {\n if (this.#isStale(index)) {\n this.#delete(this.#keyList[index], 'expire');\n }\n }, ttl + 1);\n // unref() not supported on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref();\n }\n /* c8 ignore stop */\n }\n };\n this.#updateItemAge = index => {\n starts[index] = ttls[index] !== 0 ? perf.now() : 0;\n };\n this.#statusTTL = (status, index) => {\n if (ttls[index]) {\n const ttl = ttls[index];\n const start = starts[index];\n /* c8 ignore next */\n if (!ttl || !start)\n return;\n status.ttl = ttl;\n status.start = start;\n status.now = cachedNow || getNow();\n const age = status.now - start;\n status.remainingTTL = ttl - age;\n }\n };\n // debounce calls to perf.now() to 1s so we're not hitting\n // that costly call repeatedly.\n let cachedNow = 0;\n const getNow = () => {\n const n = perf.now();\n if (this.ttlResolution > 0) {\n cachedNow = n;\n const t = setTimeout(() => (cachedNow = 0), this.ttlResolution);\n // not available on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref();\n }\n /* c8 ignore stop */\n }\n return n;\n };\n this.getRemainingTTL = key => {\n const index = this.#keyMap.get(key);\n if (index === undefined) {\n return 0;\n }\n const ttl = ttls[index];\n const start = starts[index];\n if (!ttl || !start) {\n return Infinity;\n }\n const age = (cachedNow || getNow()) - start;\n return ttl - age;\n };\n this.#isStale = index => {\n const s = starts[index];\n const t = ttls[index];\n return !!t && !!s && (cachedNow || getNow()) - s > t;\n };\n }\n // conditionally set private methods related to TTL\n #updateItemAge = () => { };\n #statusTTL = () => { };\n #setItemTTL = () => { };\n /* c8 ignore stop */\n #isStale = () => false;\n #initializeSizeTracking() {\n const sizes = new ZeroArray(this.#max);\n this.#calculatedSize = 0;\n this.#sizes = sizes;\n this.#removeItemSize = index => {\n this.#calculatedSize -= sizes[index];\n sizes[index] = 0;\n };\n this.#requireSize = (k, v, size, sizeCalculation) => {\n // provisionally accept background fetches.\n // actual value size will be checked when they return.\n if (this.#isBackgroundFetch(v)) {\n return 0;\n }\n if (!isPosInt(size)) {\n if (sizeCalculation) {\n if (typeof sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation must be a function');\n }\n size = sizeCalculation(v, k);\n if (!isPosInt(size)) {\n throw new TypeError('sizeCalculation return invalid (expect positive integer)');\n }\n }\n else {\n throw new TypeError('invalid size value (must be positive integer). ' +\n 'When maxSize or maxEntrySize is used, sizeCalculation ' +\n 'or size must be set.');\n }\n }\n return size;\n };\n this.#addItemSize = (index, size, status) => {\n sizes[index] = size;\n if (this.#maxSize) {\n const maxSize = this.#maxSize - sizes[index];\n while (this.#calculatedSize > maxSize) {\n this.#evict(true);\n }\n }\n this.#calculatedSize += sizes[index];\n if (status) {\n status.entrySize = size;\n status.totalCalculatedSize = this.#calculatedSize;\n }\n };\n }\n #removeItemSize = _i => { };\n #addItemSize = (_i, _s, _st) => { };\n #requireSize = (_k, _v, size, sizeCalculation) => {\n if (size || sizeCalculation) {\n throw new TypeError('cannot set size without setting maxSize or maxEntrySize on cache');\n }\n return 0;\n };\n *#indexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#tail; true;) {\n if (!this.#isValidIndex(i)) {\n break;\n }\n if (allowStale || !this.#isStale(i)) {\n yield i;\n }\n if (i === this.#head) {\n break;\n }\n else {\n i = this.#prev[i];\n }\n }\n }\n }\n *#rindexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#head; true;) {\n if (!this.#isValidIndex(i)) {\n break;\n }\n if (allowStale || !this.#isStale(i)) {\n yield i;\n }\n if (i === this.#tail) {\n break;\n }\n else {\n i = this.#next[i];\n }\n }\n }\n }\n #isValidIndex(index) {\n return (index !== undefined &&\n this.#keyMap.get(this.#keyList[index]) === index);\n }\n /**\n * Return a generator yielding `[key, value]` pairs,\n * in order from most recently used to least recently used.\n */\n *entries() {\n for (const i of this.#indexes()) {\n if (this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield [this.#keyList[i], this.#valList[i]];\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.entries}\n *\n * Return a generator yielding `[key, value]` pairs,\n * in order from least recently used to most recently used.\n */\n *rentries() {\n for (const i of this.#rindexes()) {\n if (this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield [this.#keyList[i], this.#valList[i]];\n }\n }\n }\n /**\n * Return a generator yielding the keys in the cache,\n * in order from most recently used to least recently used.\n */\n *keys() {\n for (const i of this.#indexes()) {\n const k = this.#keyList[i];\n if (k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield k;\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.keys}\n *\n * Return a generator yielding the keys in the cache,\n * in order from least recently used to most recently used.\n */\n *rkeys() {\n for (const i of this.#rindexes()) {\n const k = this.#keyList[i];\n if (k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield k;\n }\n }\n }\n /**\n * Return a generator yielding the values in the cache,\n * in order from most recently used to least recently used.\n */\n *values() {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n if (v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield this.#valList[i];\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.values}\n *\n * Return a generator yielding the values in the cache,\n * in order from least recently used to most recently used.\n */\n *rvalues() {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i];\n if (v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield this.#valList[i];\n }\n }\n }\n /**\n * Iterating over the cache itself yields the same results as\n * {@link LRUCache.entries}\n */\n [Symbol.iterator]() {\n return this.entries();\n }\n /**\n * A String value that is used in the creation of the default string\n * description of an object. Called by the built-in method\n * `Object.prototype.toString`.\n */\n [Symbol.toStringTag] = 'LRUCache';\n /**\n * Find a value for which the supplied fn method returns a truthy value,\n * similar to `Array.find()`. fn is called as `fn(value, key, cache)`.\n */\n find(fn, getOptions = {}) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n if (fn(value, this.#keyList[i], this)) {\n return this.get(this.#keyList[i], getOptions);\n }\n }\n }\n /**\n * Call the supplied function on each item in the cache, in order from most\n * recently used to least recently used.\n *\n * `fn` is called as `fn(value, key, cache)`.\n *\n * If `thisp` is provided, function will be called in the `this`-context of\n * the provided object, or the cache if no `thisp` object is provided.\n *\n * Does not update age or recenty of use, or iterate over stale values.\n */\n forEach(fn, thisp = this) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n fn.call(thisp, value, this.#keyList[i], this);\n }\n }\n /**\n * The same as {@link LRUCache.forEach} but items are iterated over in\n * reverse order. (ie, less recently used items are iterated over first.)\n */\n rforEach(fn, thisp = this) {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n fn.call(thisp, value, this.#keyList[i], this);\n }\n }\n /**\n * Delete any stale entries. Returns true if anything was removed,\n * false otherwise.\n */\n purgeStale() {\n let deleted = false;\n for (const i of this.#rindexes({ allowStale: true })) {\n if (this.#isStale(i)) {\n this.#delete(this.#keyList[i], 'expire');\n deleted = true;\n }\n }\n return deleted;\n }\n /**\n * Get the extended info about a given entry, to get its value, size, and\n * TTL info simultaneously. Returns `undefined` if the key is not present.\n *\n * Unlike {@link LRUCache#dump}, which is designed to be portable and survive\n * serialization, the `start` value is always the current timestamp, and the\n * `ttl` is a calculated remaining time to live (negative if expired).\n *\n * Always returns stale values, if their info is found in the cache, so be\n * sure to check for expirations (ie, a negative {@link LRUCache.Entry#ttl})\n * if relevant.\n */\n info(key) {\n const i = this.#keyMap.get(key);\n if (i === undefined)\n return undefined;\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n return undefined;\n const entry = { value };\n if (this.#ttls && this.#starts) {\n const ttl = this.#ttls[i];\n const start = this.#starts[i];\n if (ttl && start) {\n const remain = ttl - (perf.now() - start);\n entry.ttl = remain;\n entry.start = Date.now();\n }\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i];\n }\n return entry;\n }\n /**\n * Return an array of [key, {@link LRUCache.Entry}] tuples which can be\n * passed to {@link LRUCache#load}.\n *\n * The `start` fields are calculated relative to a portable `Date.now()`\n * timestamp, even if `performance.now()` is available.\n *\n * Stale entries are always included in the `dump`, even if\n * {@link LRUCache.OptionsBase.allowStale} is false.\n *\n * Note: this returns an actual array, not a generator, so it can be more\n * easily passed around.\n */\n dump() {\n const arr = [];\n for (const i of this.#indexes({ allowStale: true })) {\n const key = this.#keyList[i];\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined || key === undefined)\n continue;\n const entry = { value };\n if (this.#ttls && this.#starts) {\n entry.ttl = this.#ttls[i];\n // always dump the start relative to a portable timestamp\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = perf.now() - this.#starts[i];\n entry.start = Math.floor(Date.now() - age);\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i];\n }\n arr.unshift([key, entry]);\n }\n return arr;\n }\n /**\n * Reset the cache and load in the items in entries in the order listed.\n *\n * The shape of the resulting cache may be different if the same options are\n * not used in both caches.\n *\n * The `start` fields are assumed to be calculated relative to a portable\n * `Date.now()` timestamp, even if `performance.now()` is available.\n */\n load(arr) {\n this.clear();\n for (const [key, entry] of arr) {\n if (entry.start) {\n // entry.start is a portable timestamp, but we may be using\n // node's performance.now(), so calculate the offset, so that\n // we get the intended remaining TTL, no matter how long it's\n // been on ice.\n //\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = Date.now() - entry.start;\n entry.start = perf.now() - age;\n }\n this.set(key, entry.value, entry);\n }\n }\n /**\n * Add a value to the cache.\n *\n * Note: if `undefined` is specified as a value, this is an alias for\n * {@link LRUCache#delete}\n *\n * Fields on the {@link LRUCache.SetOptions} options param will override\n * their corresponding values in the constructor options for the scope\n * of this single `set()` operation.\n *\n * If `start` is provided, then that will set the effective start\n * time for the TTL calculation. Note that this must be a previous\n * value of `performance.now()` if supported, or a previous value of\n * `Date.now()` if not.\n *\n * Options object may also include `size`, which will prevent\n * calling the `sizeCalculation` function and just use the specified\n * number if it is a positive integer, and `noDisposeOnSet` which\n * will prevent calling a `dispose` function in the case of\n * overwrites.\n *\n * If the `size` (or return value of `sizeCalculation`) for a given\n * entry is greater than `maxEntrySize`, then the item will not be\n * added to the cache.\n *\n * Will update the recency of the entry.\n *\n * If the value is `undefined`, then this is an alias for\n * `cache.delete(key)`. `undefined` is never stored in the cache.\n */\n set(k, v, setOptions = {}) {\n if (v === undefined) {\n this.delete(k);\n return this;\n }\n const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status, } = setOptions;\n let { noUpdateTTL = this.noUpdateTTL } = setOptions;\n const size = this.#requireSize(k, v, setOptions.size || 0, sizeCalculation);\n // if the item doesn't fit, don't do anything\n // NB: maxEntrySize set to maxSize by default\n if (this.maxEntrySize && size > this.maxEntrySize) {\n if (status) {\n status.set = 'miss';\n status.maxEntrySizeExceeded = true;\n }\n // have to delete, in case something is there already.\n this.#delete(k, 'set');\n return this;\n }\n let index = this.#size === 0 ? undefined : this.#keyMap.get(k);\n if (index === undefined) {\n // addition\n index = (this.#size === 0\n ? this.#tail\n : this.#free.length !== 0\n ? this.#free.pop()\n : this.#size === this.#max\n ? this.#evict(false)\n : this.#size);\n this.#keyList[index] = k;\n this.#valList[index] = v;\n this.#keyMap.set(k, index);\n this.#next[this.#tail] = index;\n this.#prev[index] = this.#tail;\n this.#tail = index;\n this.#size++;\n this.#addItemSize(index, size, status);\n if (status)\n status.set = 'add';\n noUpdateTTL = false;\n if (this.#hasOnInsert) {\n this.#onInsert?.(v, k, 'add');\n }\n }\n else {\n // update\n this.#moveToTail(index);\n const oldVal = this.#valList[index];\n if (v !== oldVal) {\n if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) {\n oldVal.__abortController.abort(new Error('replaced'));\n const { __staleWhileFetching: s } = oldVal;\n if (s !== undefined && !noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(s, k, 'set');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([s, k, 'set']);\n }\n }\n }\n else if (!noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(oldVal, k, 'set');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([oldVal, k, 'set']);\n }\n }\n this.#removeItemSize(index);\n this.#addItemSize(index, size, status);\n this.#valList[index] = v;\n if (status) {\n status.set = 'replace';\n const oldValue = oldVal && this.#isBackgroundFetch(oldVal)\n ? oldVal.__staleWhileFetching\n : oldVal;\n if (oldValue !== undefined)\n status.oldValue = oldValue;\n }\n }\n else if (status) {\n status.set = 'update';\n }\n if (this.#hasOnInsert) {\n this.onInsert?.(v, k, v === oldVal ? 'update' : 'replace');\n }\n }\n if (ttl !== 0 && !this.#ttls) {\n this.#initializeTTLTracking();\n }\n if (this.#ttls) {\n if (!noUpdateTTL) {\n this.#setItemTTL(index, ttl, start);\n }\n if (status)\n this.#statusTTL(status, index);\n }\n if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n return this;\n }\n /**\n * Evict the least recently used item, returning its value or\n * `undefined` if cache is empty.\n */\n pop() {\n try {\n while (this.#size) {\n const val = this.#valList[this.#head];\n this.#evict(true);\n if (this.#isBackgroundFetch(val)) {\n if (val.__staleWhileFetching) {\n return val.__staleWhileFetching;\n }\n }\n else if (val !== undefined) {\n return val;\n }\n }\n }\n finally {\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n }\n }\n #evict(free) {\n const head = this.#head;\n const k = this.#keyList[head];\n const v = this.#valList[head];\n if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('evicted'));\n }\n else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, 'evict');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, 'evict']);\n }\n }\n this.#removeItemSize(head);\n // if we aren't about to use the index, then null these out\n if (free) {\n this.#keyList[head] = undefined;\n this.#valList[head] = undefined;\n this.#free.push(head);\n }\n if (this.#size === 1) {\n this.#head = this.#tail = 0;\n this.#free.length = 0;\n }\n else {\n this.#head = this.#next[head];\n }\n this.#keyMap.delete(k);\n this.#size--;\n return head;\n }\n /**\n * Check if a key is in the cache, without updating the recency of use.\n * Will return false if the item is stale, even though it is technically\n * in the cache.\n *\n * Check if a key is in the cache, without updating the recency of\n * use. Age is updated if {@link LRUCache.OptionsBase.updateAgeOnHas} is set\n * to `true` in either the options or the constructor.\n *\n * Will return `false` if the item is stale, even though it is technically in\n * the cache. The difference can be determined (if it matters) by using a\n * `status` argument, and inspecting the `has` field.\n *\n * Will not update item age unless\n * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.\n */\n has(k, hasOptions = {}) {\n const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions;\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v) &&\n v.__staleWhileFetching === undefined) {\n return false;\n }\n if (!this.#isStale(index)) {\n if (updateAgeOnHas) {\n this.#updateItemAge(index);\n }\n if (status) {\n status.has = 'hit';\n this.#statusTTL(status, index);\n }\n return true;\n }\n else if (status) {\n status.has = 'stale';\n this.#statusTTL(status, index);\n }\n }\n else if (status) {\n status.has = 'miss';\n }\n return false;\n }\n /**\n * Like {@link LRUCache#get} but doesn't update recency or delete stale\n * items.\n *\n * Returns `undefined` if the item is stale, unless\n * {@link LRUCache.OptionsBase.allowStale} is set.\n */\n peek(k, peekOptions = {}) {\n const { allowStale = this.allowStale } = peekOptions;\n const index = this.#keyMap.get(k);\n if (index === undefined ||\n (!allowStale && this.#isStale(index))) {\n return;\n }\n const v = this.#valList[index];\n // either stale and allowed, or forcing a refresh of non-stale value\n return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v;\n }\n #backgroundFetch(k, index, options, context) {\n const v = index === undefined ? undefined : this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n return v;\n }\n const ac = new AC();\n const { signal } = options;\n // when/if our AC signals, then stop listening to theirs.\n signal?.addEventListener('abort', () => ac.abort(signal.reason), {\n signal: ac.signal,\n });\n const fetchOpts = {\n signal: ac.signal,\n options,\n context,\n };\n const cb = (v, updateCache = false) => {\n const { aborted } = ac.signal;\n const ignoreAbort = options.ignoreFetchAbort && v !== undefined;\n if (options.status) {\n if (aborted && !updateCache) {\n options.status.fetchAborted = true;\n options.status.fetchError = ac.signal.reason;\n if (ignoreAbort)\n options.status.fetchAbortIgnored = true;\n }\n else {\n options.status.fetchResolved = true;\n }\n }\n if (aborted && !ignoreAbort && !updateCache) {\n return fetchFail(ac.signal.reason);\n }\n // either we didn't abort, and are still here, or we did, and ignored\n const bf = p;\n if (this.#valList[index] === p) {\n if (v === undefined) {\n if (bf.__staleWhileFetching) {\n this.#valList[index] = bf.__staleWhileFetching;\n }\n else {\n this.#delete(k, 'fetch');\n }\n }\n else {\n if (options.status)\n options.status.fetchUpdated = true;\n this.set(k, v, fetchOpts.options);\n }\n }\n return v;\n };\n const eb = (er) => {\n if (options.status) {\n options.status.fetchRejected = true;\n options.status.fetchError = er;\n }\n return fetchFail(er);\n };\n const fetchFail = (er) => {\n const { aborted } = ac.signal;\n const allowStaleAborted = aborted && options.allowStaleOnFetchAbort;\n const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection;\n const noDelete = allowStale || options.noDeleteOnFetchRejection;\n const bf = p;\n if (this.#valList[index] === p) {\n // if we allow stale on fetch rejections, then we need to ensure that\n // the stale value is not removed from the cache when the fetch fails.\n const del = !noDelete || bf.__staleWhileFetching === undefined;\n if (del) {\n this.#delete(k, 'fetch');\n }\n else if (!allowStaleAborted) {\n // still replace the *promise* with the stale value,\n // since we are done with the promise at this point.\n // leave it untouched if we're still waiting for an\n // aborted background fetch that hasn't yet returned.\n this.#valList[index] = bf.__staleWhileFetching;\n }\n }\n if (allowStale) {\n if (options.status && bf.__staleWhileFetching !== undefined) {\n options.status.returnedStale = true;\n }\n return bf.__staleWhileFetching;\n }\n else if (bf.__returned === bf) {\n throw er;\n }\n };\n const pcall = (res, rej) => {\n const fmp = this.#fetchMethod?.(k, v, fetchOpts);\n if (fmp && fmp instanceof Promise) {\n fmp.then(v => res(v === undefined ? undefined : v), rej);\n }\n // ignored, we go until we finish, regardless.\n // defer check until we are actually aborting,\n // so fetchMethod can override.\n ac.signal.addEventListener('abort', () => {\n if (!options.ignoreFetchAbort ||\n options.allowStaleOnFetchAbort) {\n res(undefined);\n // when it eventually resolves, update the cache.\n if (options.allowStaleOnFetchAbort) {\n res = v => cb(v, true);\n }\n }\n });\n };\n if (options.status)\n options.status.fetchDispatched = true;\n const p = new Promise(pcall).then(cb, eb);\n const bf = Object.assign(p, {\n __abortController: ac,\n __staleWhileFetching: v,\n __returned: undefined,\n });\n if (index === undefined) {\n // internal, don't expose status.\n this.set(k, bf, { ...fetchOpts.options, status: undefined });\n index = this.#keyMap.get(k);\n }\n else {\n this.#valList[index] = bf;\n }\n return bf;\n }\n #isBackgroundFetch(p) {\n if (!this.#hasFetchMethod)\n return false;\n const b = p;\n return (!!b &&\n b instanceof Promise &&\n b.hasOwnProperty('__staleWhileFetching') &&\n b.__abortController instanceof AC);\n }\n async fetch(k, fetchOptions = {}) {\n const { \n // get options\n allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, \n // set options\n ttl = this.ttl, noDisposeOnSet = this.noDisposeOnSet, size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, \n // fetch exclusive options\n noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, ignoreFetchAbort = this.ignoreFetchAbort, allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, context, forceRefresh = false, status, signal, } = fetchOptions;\n if (!this.#hasFetchMethod) {\n if (status)\n status.fetch = 'get';\n return this.get(k, {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n status,\n });\n }\n const options = {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n ttl,\n noDisposeOnSet,\n size,\n sizeCalculation,\n noUpdateTTL,\n noDeleteOnFetchRejection,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n status,\n signal,\n };\n let index = this.#keyMap.get(k);\n if (index === undefined) {\n if (status)\n status.fetch = 'miss';\n const p = this.#backgroundFetch(k, index, options, context);\n return (p.__returned = p);\n }\n else {\n // in cache, maybe already fetching\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n const stale = allowStale && v.__staleWhileFetching !== undefined;\n if (status) {\n status.fetch = 'inflight';\n if (stale)\n status.returnedStale = true;\n }\n return stale ? v.__staleWhileFetching : (v.__returned = v);\n }\n // if we force a refresh, that means do NOT serve the cached value,\n // unless we are already in the process of refreshing the cache.\n const isStale = this.#isStale(index);\n if (!forceRefresh && !isStale) {\n if (status)\n status.fetch = 'hit';\n this.#moveToTail(index);\n if (updateAgeOnGet) {\n this.#updateItemAge(index);\n }\n if (status)\n this.#statusTTL(status, index);\n return v;\n }\n // ok, it is stale or a forced refresh, and not already fetching.\n // refresh the cache.\n const p = this.#backgroundFetch(k, index, options, context);\n const hasStale = p.__staleWhileFetching !== undefined;\n const staleVal = hasStale && allowStale;\n if (status) {\n status.fetch = isStale ? 'stale' : 'refresh';\n if (staleVal && isStale)\n status.returnedStale = true;\n }\n return staleVal ? p.__staleWhileFetching : (p.__returned = p);\n }\n }\n async forceFetch(k, fetchOptions = {}) {\n const v = await this.fetch(k, fetchOptions);\n if (v === undefined)\n throw new Error('fetch() returned undefined');\n return v;\n }\n memo(k, memoOptions = {}) {\n const memoMethod = this.#memoMethod;\n if (!memoMethod) {\n throw new Error('no memoMethod provided to constructor');\n }\n const { context, forceRefresh, ...options } = memoOptions;\n const v = this.get(k, options);\n if (!forceRefresh && v !== undefined)\n return v;\n const vv = memoMethod(k, v, {\n options,\n context,\n });\n this.set(k, vv, options);\n return vv;\n }\n /**\n * Return a value from the cache. Will update the recency of the cache\n * entry found.\n *\n * If the key is not found, get() will return `undefined`.\n */\n get(k, getOptions = {}) {\n const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status, } = getOptions;\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n const value = this.#valList[index];\n const fetching = this.#isBackgroundFetch(value);\n if (status)\n this.#statusTTL(status, index);\n if (this.#isStale(index)) {\n if (status)\n status.get = 'stale';\n // delete only if not an in-flight background fetch\n if (!fetching) {\n if (!noDeleteOnStaleGet) {\n this.#delete(k, 'expire');\n }\n if (status && allowStale)\n status.returnedStale = true;\n return allowStale ? value : undefined;\n }\n else {\n if (status &&\n allowStale &&\n value.__staleWhileFetching !== undefined) {\n status.returnedStale = true;\n }\n return allowStale ? value.__staleWhileFetching : undefined;\n }\n }\n else {\n if (status)\n status.get = 'hit';\n // if we're currently fetching it, we don't actually have it yet\n // it's not stale, which means this isn't a staleWhileRefetching.\n // If it's not stale, and fetching, AND has a __staleWhileFetching\n // value, then that means the user fetched with {forceRefresh:true},\n // so it's safe to return that value.\n if (fetching) {\n return value.__staleWhileFetching;\n }\n this.#moveToTail(index);\n if (updateAgeOnGet) {\n this.#updateItemAge(index);\n }\n return value;\n }\n }\n else if (status) {\n status.get = 'miss';\n }\n }\n #connect(p, n) {\n this.#prev[n] = p;\n this.#next[p] = n;\n }\n #moveToTail(index) {\n // if tail already, nothing to do\n // if head, move head to next[index]\n // else\n // move next[prev[index]] to next[index] (head has no prev)\n // move prev[next[index]] to prev[index]\n // prev[index] = tail\n // next[tail] = index\n // tail = index\n if (index !== this.#tail) {\n if (index === this.#head) {\n this.#head = this.#next[index];\n }\n else {\n this.#connect(this.#prev[index], this.#next[index]);\n }\n this.#connect(this.#tail, index);\n this.#tail = index;\n }\n }\n /**\n * Deletes a key out of the cache.\n *\n * Returns true if the key was deleted, false otherwise.\n */\n delete(k) {\n return this.#delete(k, 'delete');\n }\n #delete(k, reason) {\n let deleted = false;\n if (this.#size !== 0) {\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n deleted = true;\n if (this.#size === 1) {\n this.#clear(reason);\n }\n else {\n this.#removeItemSize(index);\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'));\n }\n else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, reason);\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, reason]);\n }\n }\n this.#keyMap.delete(k);\n this.#keyList[index] = undefined;\n this.#valList[index] = undefined;\n if (index === this.#tail) {\n this.#tail = this.#prev[index];\n }\n else if (index === this.#head) {\n this.#head = this.#next[index];\n }\n else {\n const pi = this.#prev[index];\n this.#next[pi] = this.#next[index];\n const ni = this.#next[index];\n this.#prev[ni] = this.#prev[index];\n }\n this.#size--;\n this.#free.push(index);\n }\n }\n }\n if (this.#hasDisposeAfter && this.#disposed?.length) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n return deleted;\n }\n /**\n * Clear the cache entirely, throwing away all values.\n */\n clear() {\n return this.#clear('delete');\n }\n #clear(reason) {\n for (const index of this.#rindexes({ allowStale: true })) {\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'));\n }\n else {\n const k = this.#keyList[index];\n if (this.#hasDispose) {\n this.#dispose?.(v, k, reason);\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, reason]);\n }\n }\n }\n this.#keyMap.clear();\n this.#valList.fill(undefined);\n this.#keyList.fill(undefined);\n if (this.#ttls && this.#starts) {\n this.#ttls.fill(0);\n this.#starts.fill(0);\n }\n if (this.#sizes) {\n this.#sizes.fill(0);\n }\n this.#head = 0;\n this.#tail = 0;\n this.#free.length = 0;\n this.#calculatedSize = 0;\n this.#size = 0;\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n }\n}\n//# sourceMappingURL=index.js.map","import type { SnapRecords } from './SnapRecords.js';\nimport { ISnapApi, RenderType, RowsPerPage, Identifiable, SnapRecordsState } from './SnapTypes.js';\n\n/*========================================================================================================\n\n SNAPAPI CLASS\n\n Class providing a public API for interacting with a SnapRecords instance\n\n Provides a public API for interacting with a {@link SnapRecords} instance.\n The `SnapApi` class exposes methods for controlling and querying a SnapRecords data table,\n including operations such as resetting, refreshing, navigation, selection management,\n theme and render mode configuration, language switching, searching, and updating state parameters.\n This class is intended to be used as the main interface for consumers who need to manipulate\n or retrieve information from a SnapRecords instance in a type-safe and encapsulated manner.\n\n @typeParam T - The type of records managed by the SnapRecords instance, which must extend\n {@link Identifiable} and be a record of string keys to unknown values.\n\n==========================================================================================================*/\n\nexport class SnapApi<T extends Identifiable & Record<string, unknown>> implements ISnapApi<T> {\n // Reference to the SnapRecords instance\n readonly #instance: SnapRecords<T>;\n\n // Constructor initializes the API with the parent instance\n constructor(instance: SnapRecords<T>) {\n this.#instance = instance;\n }\n\n // Resets the SnapRecords instance to its initial state\n public reset(): void {\n this.#instance.reset();\n }\n\n // Refreshes the data by triggering a reload\n public refresh(): void {\n this.#instance.refresh();\n }\n\n // Destroys the SnapRecords instance, cleaning up resources\n public destroy(): void {\n this.#instance.destroy();\n }\n\n // Clears all row selections\n public clearSelection(): void {\n this.#instance.clearSelection();\n }\n\n // Navigates to the specified page\n public gotoPage(page: number): void {\n this.#instance.gotoPage(page);\n }\n\n // Returns the current data array\n public getData(): ReadonlyArray<T> {\n return this.#instance.getData();\n }\n\n // Returns the currently selected rows\n public getSelectedRows(): T[] {\n return this.#instance.getSelectedRows();\n }\n\n // Returns the total number of records\n public getTotals(): { totalRecords: number } {\n return this.#instance.getTotals();\n }\n\n // Sets the theme (light or dark)\n public setTheme(theme: 'light' | 'dark'): void {\n this.#instance.setTheme(theme);\n }\n\n // Sets the rendering mode (table, list, or mobile cards)\n public setRenderMode(mode: RenderType): void {\n this.#instance.setRenderMode(mode);\n }\n\n // Sets the number of rows per page\n public setRowsPerPage(newRowsPerPage: RowsPerPage): void {\n this.#instance.setRowsPerPage(newRowsPerPage);\n }\n\n // Sets the language and reloads translations\n public async setLanguage(newLanguage: string): Promise<void> {\n await this.#instance.setLanguage(newLanguage);\n }\n\n // Performs a search with the provided filters\n public search(filters: Record<string, string>, merge = false): void {\n this.#instance.search(filters, merge);\n }\n\n // Updates state parameters (page, rows per page, filters, sort conditions)\n public updateParams(\n params: Partial<\n Pick<SnapRecordsState<T>, 'currentPage' | 'rowsPerPage' | 'filters' | 'sortConditions'>\n >\n ): void {\n this.#instance.updateParams(params);\n }\n}\n\n/*========================================================================================================\n SNAPAPI OBJECT ENDS HERE\n==========================================================================================================*/\n","/**\n\n */\nimport { RowsPerPage, RenderType } from './SnapTypes.js';\n\n/*========================================================================================================\n\n SNAP RECORDS DEFAULT OPTIONS\n\n @file SnapOptions.ts\n @description\n\n Provides the default configuration options and UI-related constants for the SnapRecords component.\n This includes API endpoints, UI themes, pagination settings, class names, and other customizable\n options that control the behavior and appearance of SnapRecords tables and lists.\n\n==========================================================================================================*/\n\n// Default configuration options for SnapRecords\nexport const defaultOptions = {\n // API URL for data fetching\n url: '',\n // List of column names to display\n columns: [],\n // Flag to enable debug logging\n debug: false,\n // Theme for the UI (default, light or dark)\n theme: 'default',\n // Flag to enable data caching\n useCache: false,\n // Number of retry attempts for failed fetches\n retryAttempts: 3,\n // List of column titles\n columnTitles: [],\n // Language code for translations\n language: 'en_US',\n // Path to the language files directory\n langPath: '/lang',\n // Flag to enable row selection\n selectable: false,\n // Flag to enable URL state persistence\n usePushState: false,\n // Flag to enable state persistence in localStorage\n persistState: false,\n // Size of the format cache\n formatCacheSize: 500,\n // Flag to enable lazy loading of media\n lazyLoadMedia: false,\n // Flag to destroy the instance on window unload\n destroyOnUnload: true,\n // Flag to enable preloading of the next page\n preloadNextPage: false,\n // Flag to enable draggable columns\n draggableColumns: false,\n // Default rendering mode\n format: RenderType.TABLE,\n // Default number of rows per page\n rowsPerPage: RowsPerPage.DEFAULT,\n};\n\n// Configuration object containing constants and class names\nexport const config = {\n // Constants for various settings\n constants: {\n // Default debounce delay for data loading (in milliseconds)\n defaultDebounceDelay: 250,\n // Default cache expiration time (in milliseconds)\n defaultCacheExpiry: 28800000,\n // Delay for screen reader announcements (in milliseconds)\n screenReaderAnnouncementDelay: 1000,\n // Number of pages to show around the current page in pagination\n paginationPageRange: 2,\n // Maximum page distance before showing ellipsis\n paginationMaxPageDistance: 3,\n // Distance before showing ellipsis in pagination\n paginationEllipsisDistance: 4,\n // Buffer for showing the last page in pagination\n paginationLastPageBuffer: 2,\n // Buffer for showing ellipsis before the last page\n paginationEllipsisLastPageBuffer: 3,\n },\n // Pagination configuration\n pagination: {\n // Previous button configuration\n prevButton: {\n // HTML content for the previous button\n text: '<span aria-hidden=\"true\">«</span>',\n // Flag indicating if text is HTML\n isHtml: true,\n // Class names for styling\n classNames: {\n // Base class for the button\n base: 'snap-prev',\n // Class for disabled state\n disabled: 'snap-disabled',\n },\n },\n // Next button configuration\n nextButton: {\n // HTML content for the next button\n text: '<span aria-hidden=\"true\">»</span>',\n // Flag indicating if text is HTML\n isHtml: true,\n // Class names for styling\n classNames: {\n // Base class for the button\n base: 'snap-next',\n // Class for disabled state\n disabled: 'snap-disabled',\n },\n },\n // Page number button configuration\n numberButton: {\n // Class names for styling\n classNames: {\n // Base class for the button\n base: 'snap-page-number',\n // Class for active (current) page\n disabled: 'snap-active',\n },\n },\n // Ellipsis configuration\n ellipsis: {\n // Class names for styling\n classNames: {\n // Base class for the ellipsis\n base: 'snap-pagination-ellipsis',\n },\n },\n },\n // CSS class names for various UI elements\n classes: {\n // Class for the main table container\n tableContainer: 'snap-records-container',\n // Class for the content container\n contentContainer: 'snap-records-content',\n // Class for the error container\n errorContainer: 'snap-records-error',\n // Class for responsive table wrapper\n tableResponsive: 'table-responsive',\n // Table-specific classes\n table: {\n // Class for the table container\n containerClass: 'snap-records snap-table',\n // Class for the table header\n headerClass: 'snap-records-header',\n // Class for the table body\n bodyClass: 'snap-records-body',\n // Class for the table footer\n footerClass: 'snap-records-footer',\n },\n // List-specific classes\n list: {\n // Class for the list container\n containerClass: 'snap-list',\n // Class for list items\n itemClass: 'snap-list-item',\n },\n // Class for mobile cards container\n mobileCardsContainer: 'snap-mobile-cards-container',\n // Class for individual mobile cards\n mobileCard: 'snap-mobile-card',\n // Class for rows within mobile cards\n cardRow: 'snap-card-row',\n // Class for labels in mobile cards\n cardLabel: 'snap-card-label',\n // Class for values in mobile cards\n cardValue: 'snap-card-value',\n // Class for the footer container\n footerContainer: 'snap-records-footer-container',\n // Class for the footer\n footer: 'snap-footer',\n // Class for the totals display\n totals: 'snap-totals',\n // Class for the pagination container\n paginationContainer: 'snap-pagination-container',\n // Class for pagination elements\n pagination: 'snap-pagination',\n // Class for pagination cells\n paginationCell: 'snap-pagination-cell',\n // Class for the loading overlay\n loadingOverlay: 'snap-loading-overlay',\n // Class for table overlay\n tableOverlay: 'snap-table-overlay',\n // Class for list overlay\n listOverlay: 'snap-list-overlay',\n // Class for cards overlay\n cardsOverlay: 'snap-cards-overlay',\n // Class for no-data message\n noData: 'snap-no-data',\n // Class for selected rows\n selected: 'snap-selected',\n // Class for the current row\n currentRow: 'snap-current-row',\n // Class for column resize handle\n columnResizeHandle: 'snap-column-resize-handle',\n // Class for ascending sort order\n sortAscOrder: 'snap-asc-order',\n // Class for descending sort order\n sortDescOrder: 'snap-desc-order',\n // Class for no sort order\n sortNoOrder: 'snap-no-order',\n // Class for start record display\n recordStart: 'snap-record-start',\n // Class for end record display\n recordEnd: 'snap-record-end',\n // Class for total records display\n recordsTotal: 'snap-records-total',\n // Class for draggable columns\n draggableColumn: 'snap-draggable-column',\n // Class for column being dragged\n dragging: 'snap-dragging',\n // Class for drag-over target\n dragOver: 'snap-drag-over',\n },\n};\n\n/*========================================================================================================\n SNAP RECORDS DEFAULT OPTIONS ENDS HERE\n==========================================================================================================*/\n","import { LogLevel } from './SnapTypes';\n\n/*========================================================================================================\n\n UTILS FILE\n\n Utility function to sanitize HTML strings and prevent basic XSS attacks.\n This function creates a temporary DOM element, parses the input HTML string,\n removes all <script> and <style> elements, and strips out any attributes\n that start with 'on' (such as onclick, onmouseover, etc.) from all elements.\n It returns the sanitized HTML as a string.\n\n==========================================================================================================*/\n\n// Utility function to sanitize HTML strings and prevent basic XSS attacks\nexport function sanitizeHTML(str: string): string {\n // Create a temporary div to parse the HTML\n const temp = document.createElement('div');\n temp.innerHTML = str;\n\n // Remove script and style elements\n temp.querySelectorAll('script, style').forEach((el) => el.remove());\n\n // Remove all 'on*' event attributes from elements\n temp.querySelectorAll('*').forEach((el) => {\n for (const attr of Array.from(el.attributes)) {\n if (attr.name.toLowerCase().startsWith('on')) {\n el.removeAttribute(attr.name);\n }\n }\n });\n\n // Return the sanitized HTML\n return temp.innerHTML;\n}\n\n// Utility function for logging messages based on debug flag and log level\n/* eslint-disable no-console */\nexport function log(debug: boolean, level: LogLevel, ...args: unknown[]): void {\n // Skip logging if debug is disabled\n if (!debug) return;\n\n // Prefix for all log messages\n const prefix = 'SnapRecords:';\n\n // Log message with the specified level\n console[level](prefix, ...args);\n}\n/* eslint-enable no-console */\n\n/*========================================================================================================\n UTILS FILE ENDS HERE\n==========================================================================================================*/\n","import { sanitizeHTML } from './utils.js';\nimport { SnapRecords } from './SnapRecords.js';\nimport { Identifiable, ServerRequestParams } from './SnapTypes.js';\n\n/*========================================================================================================\n\n URL MANAGER CLASS\n\n Class responsible for constructing URLs and server request parameters for data fetching\n\n Manages the construction of API URLs and server request parameters for data fetching\n in the context of a SnapRecords instance. This class centralizes logic for building\n query strings with pagination, filtering, and sorting, ensuring consistent and correct\n API requests based on the current state of the parent SnapRecords.\n\n @typeParam T - The type of records managed, extending Identifiable and a generic object.\n\n==========================================================================================================*/\n\nexport class UrlManager<T extends Identifiable & Record<string, unknown>> {\n // Reference to the parent SnapRecords instance\n #parent: SnapRecords<T>;\n\n // Constructor initializes the URL manager with the parent instance\n constructor(parent: SnapRecords<T>) {\n this.#parent = parent;\n }\n\n // Builds a URL with query parameters for an API request\n public buildUrl(params: ServerRequestParams): string {\n // Create URLSearchParams to hold query parameters\n const urlParams = new URLSearchParams();\n // Add pagination parameters\n urlParams.append('page', params.page.toString());\n urlParams.append('perPage', params.perPage.toString());\n urlParams.append('offset', params.offset.toString());\n\n // Add filtering parameters if present (sanitize values)\n if (params.filtering) {\n Object.entries(params.filtering).forEach(([key, value]) => {\n // Sanitize the value to prevent XSS\n const sanitizedValue = sanitizeHTML(String(value));\n urlParams.append(`filtering[${key}]`, sanitizedValue);\n });\n }\n // Add sorting parameters if present\n if (params.sorting) {\n Object.entries(params.sorting).forEach(([key, value]) => {\n // Sorting values are controlled (ASC/DESC) so no need to sanitize\n urlParams.append(`sorting[${key}]`, value);\n });\n }\n // Construct and return the full URL\n return `${this.#parent.baseUrl}?${urlParams.toString()}`;\n }\n\n // Generates server request parameters based on the current state\n public getServerParams(page: number = this.#parent.state.currentPage): ServerRequestParams {\n // Initialize parameters with pagination details\n const params: ServerRequestParams = {\n page,\n perPage: this.#parent.state.rowsPerPage,\n offset: (page - 1) * this.#parent.state.rowsPerPage,\n };\n // Include filters if any exist\n if (Object.keys(this.#parent.state.filters).length > 0) {\n // Sanitize filter values\n const sanitizedFilters: Record<string, string> = {};\n Object.entries(this.#parent.state.filters).forEach(([key, value]) => {\n sanitizedFilters[key] = sanitizeHTML(String(value));\n });\n params.filtering = sanitizedFilters;\n }\n // Include sorting conditions if any exist\n if (this.#parent.state.sortConditions.length > 0) {\n params.sorting = Object.fromEntries(this.#parent.state.sortConditions) as Record<\n string,\n 'ASC' | 'DESC'\n >;\n }\n return params;\n }\n}\n\n/*========================================================================================================\n URL MANAGER OBJECT ENDS HERE\n==========================================================================================================*/\n","import {\n LogLevel,\n RenderType,\n ButtonType,\n Identifiable,\n ISnapRenderer,\n OrderDirection,\n} from './SnapTypes.js';\nimport { log } from './utils.js';\nimport { config } from './SnapOptions.js';\nimport type { SnapRecords } from './SnapRecords.js';\nimport defaultTranslations from './lang/en_US.json';\n\n/*========================================================================================================\n\n SNAP RENDERER CLASS\n\n Class responsible for rendering the UI of the SnapRecords plugin in various formats\n (table, list, mobile cards)\n\n The SnapRenderer class is responsible for rendering the user interface of the SnapRecords plugin\n in different formats, such as table, list, and mobile cards. It manages the creation and updating\n of DOM elements, applies themes, handles loading and error states, and provides accessibility\n features.\n\n The class ensures efficient updates and supports features like pagination, sorting, and keyboard\n navigation for a responsive and accessible data display.\n\n==========================================================================================================*/\n\nexport class SnapRenderer<T extends Identifiable & Record<string, unknown>>\n implements ISnapRenderer<T> {\n // Container for mobile cards display\n public cardsContainer: HTMLElement | null = null;\n // Main table element for table rendering\n public tableElement: HTMLTableElement | null = null;\n // Container for list rendering\n public listContainer: HTMLUListElement | null = null;\n // Table body element\n public tableBody: HTMLTableSectionElement | null = null;\n // Table header element\n public tableHeader: HTMLTableSectionElement | null = null;\n\n // Reference to the parent SnapRecords instance\n private parent: SnapRecords<T>;\n // Container for the content (table, list, or cards)\n private contentContainer: HTMLElement;\n // Footer element for pagination and totals\n private footerElement: HTMLElement | null = null;\n // Element displaying record totals\n private totalsElement: HTMLElement | null = null;\n // Element containing pagination controls\n private paginationElement: HTMLElement | null = null;\n\n // Constructor initializes the renderer with the parent instance and content container\n constructor(parent: SnapRecords<T>, contentContainer: HTMLElement) {\n this.parent = parent;\n this.contentContainer = contentContainer;\n }\n\n // Navigates to the next row for keyboard navigation\n public navigateToNextRow(): void {\n if (this.parent.state.data.length === 0) return;\n // Increment the current row index, capped at the last row\n this.parent.currentRowIndex = Math.min(\n this.parent.currentRowIndex + 1,\n this.parent.state.data.length - 1\n );\n this.highlightCurrentRow();\n }\n\n // Navigates to the previous row for keyboard navigation\n public navigateToPrevRow(): void {\n if (this.parent.state.data.length === 0) return;\n // Decrement the current row index, floored at 0\n this.parent.currentRowIndex = Math.max(0, this.parent.currentRowIndex - 1);\n this.highlightCurrentRow();\n }\n\n // Creates the necessary DOM containers for rendering\n public createContainers(): void {\n log(this.parent.debug, LogLevel.INFO, 'Creating DOM containers for rendering.'); \n // Clear the container's content\n this.parent.container.innerHTML = '';\n // Add table container class\n this.parent.container.classList.add(config.classes.tableContainer);\n // Add content container class\n this.contentContainer.classList.add(config.classes.contentContainer);\n // Append content container to the main container\n this.parent.container.appendChild(this.contentContainer);\n // Create and append error container\n this.parent.errorContainer = document.createElement('div');\n this.parent.errorContainer.classList.add(config.classes.errorContainer);\n this.parent.errorContainer.style.display = 'none';\n this.parent.container.appendChild(this.parent.errorContainer);\n // Ensure the container has a non-static position for overlays\n if (getComputedStyle(this.parent.container).position === 'static') {\n this.parent.container.style.position = 'relative';\n }\n }\n\n // Shows a loading indicator during data fetching\n public showLoading(): void {\n if (this.parent.isLoading) return;\n this.parent.isLoading = true;\n log(this.parent.debug, LogLevel.INFO, 'Showing loading indicator.'); \n\n // Get translations, falling back to default\n const translations = this.parent.state.translations ?? defaultTranslations;\n // Create loading overlay element\n const overlay = document.createElement('div');\n overlay.className = config.classes.loadingOverlay;\n overlay.setAttribute('role', 'status');\n overlay.setAttribute('aria-live', 'polite');\n overlay.textContent = translations.loading;\n\n // Determine the target container based on render mode\n let targetContainer: HTMLElement | null = null;\n switch (this.parent.state.format) {\n case RenderType.TABLE:\n targetContainer = this.tableBody;\n if (targetContainer) targetContainer.style.position = 'relative';\n break;\n case RenderType.LIST:\n targetContainer = this.listContainer;\n break;\n case RenderType.MOBILE_CARDS:\n targetContainer = this.cardsContainer;\n break;\n }\n\n // Append the overlay to the appropriate container\n if (targetContainer) {\n targetContainer.appendChild(overlay);\n } else {\n this.parent.contentContainer.appendChild(overlay);\n }\n }\n\n // Applies the current theme class to the container\n public applyThemeClass(): void {\n log(this.parent.debug, LogLevel.INFO, `Applying theme: ${this.parent.state.theme}`); \n // ### CORRECTION HERE ###\n // Remove all possible existing theme classes before adding the new one.\n this.parent.container.classList.remove('theme-light', 'theme-dark', 'theme-default');\n // Add the current theme class\n this.parent.container.classList.add(`theme-${this.parent.state.theme}`);\n }\n\n // Hides the loading indicator\n public hideLoading(): void {\n if (!this.parent.isLoading) return;\n log(this.parent.debug, LogLevel.INFO, 'Hiding loading indicator.');\n // Remove the loading overlay\n this.parent.container.querySelector(`.${config.classes.loadingOverlay}`)?.remove();\n this.parent.isLoading = false;\n }\n\n // Displays an error message in the error container\n public showError(message: string): void {\n log(this.parent.debug, LogLevel.ERROR, 'Displaying error message to user:', message);\n if (this.parent.errorContainer && this.parent.state.translations) {\n const translations = this.parent.state.translations;\n this.parent.errorContainer.innerHTML = '';\n // Create error title\n const title = document.createElement('strong');\n title.textContent = translations.errorTitle;\n // Create error message\n const text = document.createElement('p');\n text.textContent = message;\n // Create retry button\n const retryButton = document.createElement('button');\n retryButton.className = 'snap-retry-button';\n retryButton.textContent = translations.retry;\n retryButton.addEventListener('click', () => this.parent.refresh());\n // Append elements to error container\n this.parent.errorContainer.append(title, text, retryButton);\n this.parent.errorContainer.style.display = 'block';\n this.contentContainer.style.display = 'none';\n }\n }\n\n // Applies column widths to table headers\n public applyColumnWidths(): void {\n // Use requestAnimationFrame for smooth rendering\n requestAnimationFrame(() => {\n this.parent.state.columns.forEach((col, index) => {\n const width = this.parent.state.columnWidths.get(col as string);\n if (width) {\n const header = this.tableHeader?.querySelector<HTMLElement>(\n `th:nth-child(${index + 1})`\n );\n if (header) header.style.width = `${width}px`;\n }\n });\n });\n }\n\n // Highlights selected rows in the UI\n public highlightSelectedRows(): void {\n const selector = 'tr[data-index], li[data-index], .snap-mobile-card[data-index]';\n this.contentContainer.querySelectorAll(selector).forEach((el: Element) => {\n const element = el as HTMLElement;\n const index = parseInt(element.dataset.index!, 10);\n const isSelected = this.parent.selectedRows.has(index);\n // Toggle the selected class\n element.classList.toggle(config.classes.selected, isSelected);\n // Update ARIA attribute\n element.setAttribute('aria-selected', String(isSelected));\n });\n }\n\n // Highlights the current row for keyboard navigation\n public highlightCurrentRow(): void {\n const selector = 'tr[data-index], li[data-index], .snap-mobile-card[data-index]';\n this.contentContainer.querySelectorAll(selector).forEach((el: Element) => {\n const element = el as HTMLElement;\n const index = parseInt(element.dataset.index!, 10);\n const isCurrent = index === this.parent.currentRowIndex;\n // Toggle the current row class\n element.classList.toggle(config.classes.currentRow, isCurrent);\n if (isCurrent) {\n // Scroll to and focus the current row\n element.scrollIntoView({ block: 'nearest' });\n element.focus();\n }\n });\n }\n\n // Main rendering method based on the current state\n public render(): void {\n if (!this.parent.state.translations) return;\n log(this.parent.debug, LogLevel.INFO, 'Starting render process...'); \n // Call pre-render hook if defined\n if (this.parent.lifecycleHooks.preRender) this.parent.lifecycleHooks.preRender();\n\n // Ensure the correct container is set up\n this.#ensureCorrectContainer(this.parent.state.format);\n\n // Render content based on format\n if (this.parent.state.format === RenderType.TABLE) {\n this.#renderTableHeaderContents();\n this.#refreshTableBody();\n } else if (this.parent.state.format === RenderType.LIST) {\n this.#refreshListBody();\n } else if (this.parent.state.format === RenderType.MOBILE_CARDS) {\n this.#refreshMobileCards();\n }\n\n // Update footer with pagination and totals\n this.#updateFooter();\n\n // Call post-render hook if defined\n if (this.parent.lifecycleHooks.postRender) this.parent.lifecycleHooks.postRender();\n log(this.parent.debug, LogLevel.INFO, 'Render process finished.');\n }\n\n // Announces updates for screen readers\n public announceScreenReaderUpdate(message: string): void {\n // Create a live region for accessibility\n const liveRegion = document.createElement('div');\n liveRegion.setAttribute('aria-live', 'polite');\n liveRegion.style.cssText =\n 'position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0);';\n liveRegion.textContent = message;\n document.body.appendChild(liveRegion);\n // Remove the live region after a delay\n setTimeout(() => liveRegion.remove(), 1000);\n }\n\n // Cleans up the renderer by clearing the container\n public destroy(): void {\n log(this.parent.debug, LogLevel.INFO, 'Destroying renderer and clearing container HTML.');\n this.parent.container.innerHTML = '';\n }\n\n // Creates a footer for non-table rendering modes\n #renderNonTableFooter(): void {\n this.footerElement = document.createElement('div');\n this.footerElement.classList.add(config.classes.footer);\n this.contentContainer.appendChild(this.footerElement);\n }\n\n // Refreshes the table body with current data\n #refreshTableBody(): void {\n if (!this.tableBody) return;\n this.#reconcileItems(\n this.tableBody,\n this.parent.state.data,\n (row, index) => this.parent.createTableRow(row, index, row.id),\n (el, row, index) => this.parent.updateRow(el, row, index)\n );\n }\n\n // Refreshes the list body with current data\n #refreshListBody(): void {\n if (!this.listContainer) return;\n this.#reconcileItems(\n this.listContainer,\n this.parent.state.data,\n (row, index) => this.parent.createListItem(row, index),\n (el, row, index) => this.parent.updateListItem(el, row, index)\n );\n }\n\n // Refreshes mobile cards with current data\n #refreshMobileCards(): void {\n if (!this.cardsContainer) return;\n this.#reconcileItems(\n this.cardsContainer,\n this.parent.state.data,\n (row, index) => this.parent.createMobileCard(row, index),\n (el, row, index) => this.parent.updateMobileCard(el, row, index)\n );\n }\n\n // Creates a pagination button\n #createPaginationButton(\n content: string,\n disabled: boolean,\n type: ButtonType\n ): HTMLButtonElement {\n const button = document.createElement('button');\n button.type = 'button';\n button.disabled = disabled;\n\n // Apply appropriate classes based on button type\n let typeConfig: { classNames: { base: string; disabled: string } };\n switch (type) {\n case 'prev':\n typeConfig = config.pagination.prevButton;\n button.classList.add(typeConfig.classNames.base);\n break;\n case 'next':\n typeConfig = config.pagination.nextButton;\n button.classList.add(typeConfig.classNames.base);\n break;\n case 'number':\n typeConfig = config.pagination.numberButton;\n button.classList.add(typeConfig.classNames.base);\n break;\n }\n\n if (disabled) {\n button.classList.add(typeConfig.classNames.disabled);\n }\n\n button.innerHTML = content;\n return button;\n }\n\n // Reconciles DOM elements with data, optimizing updates\n #reconcileItems<K extends HTMLElement>(\n container: HTMLElement,\n data: ReadonlyArray<T>,\n renderer: (item: T, index: number) => K,\n updateFn: (el: K, item: T, index: number) => void\n ): void {\n // Map existing elements by their data-key\n const domMap = new Map<string, K>();\n container.querySelectorAll<K>('[data-key]').forEach((el) => {\n domMap.set(el.dataset.key!, el);\n });\n\n // Create a document fragment for efficient DOM updates\n const fragment = document.createDocumentFragment();\n data.forEach((item, index) => {\n const key = item.id.toString();\n const existingEl = domMap.get(key);\n let elToAppend: K;\n\n if (existingEl) {\n // Update existing element\n updateFn(existingEl, item, index);\n elToAppend = existingEl;\n domMap.delete(key);\n } else {\n // Create new element\n elToAppend = renderer(item, index);\n }\n fragment.appendChild(elToAppend);\n });\n\n // Clear container and append updated elements\n container.innerHTML = '';\n container.appendChild(fragment);\n\n // Display no-data message if data is empty\n if (data.length === 0 && this.parent.state.translations) {\n this.#renderNoDataMessage(\n container,\n container.tagName === 'TBODY' ? this.parent.state.columns.length : 1\n );\n }\n }\n\n // Renders a \"no data available\" message\n #renderNoDataMessage(container: HTMLElement, colSpan: number): void {\n log(this.parent.debug, LogLevel.INFO, 'Rendering \"no data available\" message.');\n const isTable = container.tagName === 'TBODY';\n // Create appropriate element (tr for table, li for list)\n const noDataEl = document.createElement(isTable ? 'tr' : 'li');\n const contentEl = document.createElement(isTable ? 'td' : 'div');\n if (isTable) (contentEl as HTMLTableCellElement).colSpan = colSpan;\n contentEl.classList.add(config.classes.noData);\n contentEl.textContent = this.parent.state.translations!.noDataAvailable;\n noDataEl.appendChild(contentEl);\n container.appendChild(noDataEl);\n }\n\n // Updates the footer with totals and pagination\n #updateFooter(): void {\n const footerTarget =\n this.tableElement?.querySelector(`.${config.classes.footerContainer}`) ??\n this.footerElement;\n if (!footerTarget || !this.parent.state.translations) return;\n\n footerTarget.innerHTML = '';\n this.totalsElement = this.#createTotalsElement();\n this.paginationElement = this.#createPaginationElement();\n footerTarget.appendChild(this.totalsElement);\n footerTarget.appendChild(this.paginationElement);\n }\n\n // Creates the table structure for table rendering mode\n #renderTableStructure(): void {\n log(this.parent.debug, LogLevel.LOG, 'Rendering main table structure.');\n // Create responsive wrapper\n const responsiveWrapper = document.createElement('div');\n responsiveWrapper.classList.add(config.classes.tableResponsive);\n // Create table element\n this.tableElement = document.createElement('table');\n this.tableElement.classList.add(...config.classes.table.containerClass.split(' '));\n this.tableElement.setAttribute('role', 'grid');\n responsiveWrapper.appendChild(this.tableElement);\n this.contentContainer.appendChild(responsiveWrapper);\n\n // Create table header\n this.tableHeader = this.tableElement.createTHead();\n this.tableHeader.classList.add(...config.classes.table.headerClass.split(' '));\n\n // Create table body\n this.tableBody = this.tableElement.createTBody();\n this.tableBody.classList.add(...config.classes.table.bodyClass.split(' '));\n\n // Create table footer\n const tfoot = this.tableElement.createTFoot();\n tfoot.classList.add(...config.classes.table.footerClass.split(' '));\n const footerRow = tfoot.insertRow();\n const footerCell = footerRow.insertCell();\n footerCell.colSpan = this.parent.state.columns.length;\n const footerDiv = document.createElement('div');\n footerDiv.classList.add(config.classes.footerContainer);\n footerCell.appendChild(footerDiv);\n }\n\n // Creates the cards structure for mobile cards rendering mode\n #renderCardsStructure(): void {\n log(this.parent.debug, LogLevel.LOG, 'Rendering main cards structure.');\n this.cardsContainer = document.createElement('div');\n this.cardsContainer.classList.add(config.classes.mobileCardsContainer);\n this.contentContainer.appendChild(this.cardsContainer);\n this.#renderNonTableFooter();\n }\n\n\n // Creates the list structure for list rendering mode\n #renderListStructure(): void {\n log(this.parent.debug, LogLevel.LOG, 'Rendering main list structure.');\n this.listContainer = document.createElement('ul');\n this.listContainer.classList.add(...config.classes.list.containerClass.split(' '));\n this.contentContainer.appendChild(this.listContainer);\n this.#renderNonTableFooter();\n }\n\n // Renders the table header contents\n #renderTableHeaderContents(): void {\n if (!this.tableHeader || !this.parent.state.translations) return;\n this.tableHeader.innerHTML = '';\n const headerRow = this.tableHeader.insertRow();\n headerRow.setAttribute('role', 'row');\n this.parent.state.columns.forEach((col: string, idx: number) => {\n const th = document.createElement('th');\n th.setAttribute('role', 'columnheader');\n th.setAttribute('data-col-id', col);\n // Apply saved column width\n const width = this.parent.state.columnWidths.get(col);\n if (width) th.style.width = `${width}px`;\n // Apply custom header classes\n if (this.parent.headerCellClasses[idx])\n th.className = this.parent.headerCellClasses[idx];\n\n // Check if the column is sortable\n const isSortable = !this.parent.headerCellClasses[idx]?.includes('no-sorting');\n if (isSortable) {\n const link = document.createElement('a');\n link.href = '#';\n link.innerHTML = this.parent.state.columnTitles[idx] as string;\n link.setAttribute('role', 'button');\n\n // Apply sorting indicators\n const sortItem = this.parent.state.sortConditions.find((item) => item[0] === col);\n if (sortItem) {\n const sortClass =\n sortItem[1] === OrderDirection.ASC\n ? config.classes.sortAscOrder\n : config.classes.sortDescOrder;\n link.classList.add(sortClass);\n link.setAttribute(\n 'aria-sort',\n sortItem[1] === 'ASC' ? 'ascending' : 'descending'\n );\n } else {\n link.classList.add(config.classes.sortNoOrder);\n link.setAttribute('aria-sort', 'none');\n }\n th.appendChild(link);\n } else {\n th.textContent = this.parent.state.columnTitles[idx] as string;\n }\n\n // Enable dragging if configured\n if (this.parent.draggableColumns) {\n th.setAttribute('draggable', 'true');\n th.classList.add(config.classes.draggableColumn);\n }\n\n // Add resize handle\n const resizeHandle = document.createElement('div');\n resizeHandle.className = config.classes.columnResizeHandle;\n th.appendChild(resizeHandle);\n headerRow.appendChild(th);\n });\n }\n\n // Creates the pagination element\n #createPaginationElement(): HTMLElement {\n const parentState = this.parent.state;\n // Calculate total pages\n const totalPages = Math.max(\n 1,\n Math.ceil(parentState.totalRecords / parentState.rowsPerPage)\n );\n const paginationContainer = document.createElement('nav');\n paginationContainer.classList.add(config.classes.paginationContainer);\n paginationContainer.setAttribute('aria-label', parentState.translations!.pageNavigation);\n\n // Add previous button\n paginationContainer.appendChild(\n this.#createPaginationButton(\n this.parent.prevButtonConfig.text || parentState.translations!.previous,\n parentState.currentPage === 1,\n 'prev'\n )\n );\n\n // Add first page button if needed\n if (parentState.currentPage > config.constants.paginationMaxPageDistance) {\n paginationContainer.appendChild(this.#createPaginationButton('1', false, 'number'));\n if (parentState.currentPage > config.constants.paginationEllipsisDistance) {\n // Add ellipsis\n const ellipsis = document.createElement('span');\n ellipsis.textContent = '...';\n ellipsis.setAttribute('aria-hidden', 'true');\n ellipsis.classList.add(config.pagination.ellipsis.classNames.base);\n paginationContainer.appendChild(ellipsis);\n }\n }\n\n // Add page number buttons\n const startPage = Math.max(\n 1,\n parentState.currentPage - config.constants.paginationPageRange\n );\n const endPage = Math.min(\n totalPages,\n parentState.currentPage + config.constants.paginationPageRange\n );\n for (let i = startPage; i <= endPage; i++) {\n paginationContainer.appendChild(\n this.#createPaginationButton(i.toString(), i === parentState.currentPage, 'number')\n );\n }\n\n // Add last page button and ellipsis if needed\n if (endPage < totalPages - config.constants.paginationLastPageBuffer) {\n if (endPage < totalPages - config.constants.paginationEllipsisLastPageBuffer) {\n const ellipsis = document.createElement('span');\n ellipsis.textContent = '...';\n ellipsis.setAttribute('aria-hidden', 'true');\n ellipsis.classList.add(config.pagination.ellipsis.classNames.base);\n paginationContainer.appendChild(ellipsis);\n }\n paginationContainer.appendChild(\n this.#createPaginationButton(totalPages.toString(), false, 'number')\n );\n }\n\n // Add next button\n paginationContainer.appendChild(\n this.#createPaginationButton(\n this.parent.nextButtonConfig.text || parentState.translations!.next,\n parentState.currentPage === totalPages,\n 'next'\n )\n );\n\n return paginationContainer;\n }\n\n // Creates the totals element showing record range\n #createTotalsElement(): HTMLElement {\n const parentState = this.parent.state;\n const totalsDiv = document.createElement('div');\n totalsDiv.classList.add(config.classes.totals);\n if (parentState.totalRecords === 0) {\n totalsDiv.textContent = parentState.translations!.noDataAvailable;\n return totalsDiv;\n }\n // Calculate record range\n const startRecord = (parentState.currentPage - 1) * parentState.rowsPerPage + 1;\n const endRecord = Math.min(\n parentState.currentPage * parentState.rowsPerPage,\n parentState.totalRecords\n );\n // Format the totals text\n const translationKey = parentState\n .translations!.pagination.showingRecords.replace(\n '{start}',\n `<span class=\"${config.classes.recordStart}\">${startRecord}</span>`\n )\n .replace('{end}', `<span class=\"${config.classes.recordEnd}\">${endRecord}</span>`)\n .replace(\n '{total}',\n `<span class=\"${config.classes.recordsTotal}\">${parentState.totalRecords}</span>`\n );\n totalsDiv.innerHTML = translationKey;\n return totalsDiv;\n }\n\n // Ensures the correct container is used for the current rendering mode\n #ensureCorrectContainer(format: RenderType): void {\n log(this.parent.debug, LogLevel.LOG, `Ensuring correct container for format: ${format}`);\n const tableVisible = format === RenderType.TABLE;\n const listVisible = format === RenderType.LIST;\n const cardsVisible = format === RenderType.MOBILE_CARDS;\n\n // Initialize containers if not already created\n if (tableVisible && !this.tableElement) this.#renderTableStructure();\n if (listVisible && !this.listContainer) this.#renderListStructure();\n if (cardsVisible && !this.cardsContainer) this.#renderCardsStructure();\n\n // Toggle visibility of containers\n const tableWrapper = this.tableElement?.parentElement;\n if (tableWrapper) tableWrapper.style.display = tableVisible ? '' : 'none';\n if (this.listContainer) this.listContainer.style.display = listVisible ? '' : 'none';\n if (this.cardsContainer) this.cardsContainer.style.display = cardsVisible ? '' : 'none';\n\n // Toggle footer visibility\n const footerElement =\n this.tableElement?.querySelector(`.${config.classes.footerContainer}`)?.parentElement ??\n this.footerElement;\n if (footerElement)\n footerElement.style.display = listVisible || cardsVisible || tableVisible ? '' : 'none';\n }\n}\n\n/*========================================================================================================\n SNAP RENDERER CLASS ENDS HERE\n==========================================================================================================*/","import { log } from './utils.js';\nimport { UrlManager } from './UrlManager.js';\nimport { SnapRecords } from './SnapRecords.js';\nimport { CacheData, Identifiable, LogLevel } from './SnapTypes.js';\n\n/*========================================================================================================\n\n CACHE MANAGER\n\n Class responsible for managing data caching using IndexedDB\n\n Manages client-side data caching for SnapRecords using IndexedDB.\n Handles cache invalidation, retrieval, storage, and preloading of paginated data,\n optimizing network usage and improving performance by reducing redundant API requests.\n\n @typeParam T - The data type managed by the cache, extending Identifiable and a generic record.\n\n==========================================================================================================*/\n\nexport class CacheManager<T extends Identifiable & Record<string, unknown>> {\n // Reference to the parent SnapRecords instance\n #parent: SnapRecords<T>;\n // URL manager for constructing API request URLs\n #urlManager: UrlManager<T>;\n // Add timeout for cache operations\n readonly #CACHE_TIMEOUT_MS = 5000;\n\n // Constructor initializes the cache manager with parent and URL manager\n constructor(parent: SnapRecords<T>, urlManager: UrlManager<T>) {\n this.#parent = parent;\n this.#urlManager = urlManager;\n }\n\n #isValidCache(data: CacheData<T>): boolean {\n return (\n typeof data.timestamp === 'number' &&\n Array.isArray(data.data) &&\n typeof data.totalRecords === 'number' &&\n data.timestamp > Date.now() - this.#parent.cacheExpiry\n );\n }\n\n // Invalidates the cache if filters have changed\n public invalidateCache(): void {\n // Skip if caching is disabled\n if (!this.#parent.useCache) return;\n // Hash current filters for comparison\n const filterHash = JSON.stringify(this.#parent.state.filters);\n if (filterHash !== this.#parent.lastFilterHash) {\n // Clear cache if filters have changed\n this.#parent.db.cache.clear();\n this.#parent.lastFilterHash = filterHash;\n log(this.#parent.debug, LogLevel.LOG, 'Cache invalidated due to filter change'); \n }\n }\n\n // Preloads data for the next page if enabled\n public async preloadNextPage(): Promise<void> {\n // Skip if preloading is disabled\n if (!this.#parent.preloadNextPageEnabled) return;\n\n // Check network conditions to avoid preloading on slow connections\n const conn = (navigator as { \n connection?: { saveData?: boolean; effectiveType?: string } \n })\n .connection;\n if (\n conn &&\n (conn.saveData || conn.effectiveType === 'slow-2g' || conn.effectiveType === '2g')\n ) {\n log(\n this.#parent.debug,\n LogLevel.INFO, 'Preloading skipped due to slow connection or data saver mode.' \n );\n return;\n }\n\n // Calculate next page number\n const nextPage = this.#parent.state.currentPage + 1;\n const totalPages = Math.ceil(\n this.#parent.state.totalRecords / this.#parent.state.rowsPerPage\n );\n // Skip if next page exceeds total pages\n if (nextPage > totalPages) return;\n\n // Build URL for next page\n const params = this.#urlManager.getServerParams(nextPage);\n const url = this.#urlManager.buildUrl(params);\n\n // Check cache if enabled\n if (this.#parent.useCache) {\n const cached = await this.getCachedData(url);\n if (cached && Date.now() - cached.timestamp < this.#parent.cacheExpiry) {\n log(\n this.#parent.debug,\n LogLevel.INFO,\n 'Preload not needed, next page is already cached and valid.' \n );\n return;\n }\n }\n\n try {\n // Fetch data for the next page\n log(this.#parent.debug, LogLevel.INFO, 'Preloading data for next page:', url); \n const response = await fetch(url);\n if (response.ok) {\n const data: { data: T[]; totalRecords: number } = await response.json();\n if (this.#parent.useCache) {\n // Cache the fetched data\n await this.cacheData(url, {\n url,\n data: data.data || [],\n totalRecords: data.totalRecords || 0,\n timestamp: Date.now(),\n });\n }\n }\n } catch (error: unknown) {\n // Log preload failure\n log(this.#parent.debug, LogLevel.LOG, 'Preload failed:', { error, url }); \n }\n }\n\n\n // Caches data for a given URL\n public async cacheData(url: string, data: CacheData<T>): Promise<void> {\n // Skip if caching is disabled\n if (!this.#parent.useCache) return;\n try {\n // Store data in IndexedDB\n await this.#parent.db.cache.put(data);\n log(this.#parent.debug, LogLevel.INFO, 'Data cached successfully for URL:', url); \n } catch (error: unknown) {\n // Log error if caching fails\n log(this.#parent.debug, LogLevel.ERROR, 'Error caching data:', { error, url }); \n }\n }\n\n // Retrieves cached data for a given URL\n public async getCachedData(url: string): Promise<CacheData<T> | undefined> {\n // Skip if caching is disabled\n if (!this.#parent.useCache) return undefined;\n try {\n // Attempt to retrieve cached data from IndexedDB\n const cached = (await Promise.race([\n this.#parent.db.cache.get(url),\n new Promise((_, reject) =>\n setTimeout(() => reject(new Error('Cache timeout')), this.#CACHE_TIMEOUT_MS)\n ),\n ])) as CacheData<T> | undefined;\n\n if (cached && this.#isValidCache(cached)) {\n return cached;\n }\n return undefined;\n } catch (error: unknown) {\n // Log error and return undefined\n log(this.#parent.debug, LogLevel.ERROR, 'Error retrieving cache:', { error, url }); \n return undefined;\n }\n }\n}\n\n/*========================================================================================================\n CACHE MANAGER OBJECT ENDS HERE\n==========================================================================================================*/","// src/utils/env.ts\nvar NOTHING = Symbol.for(\"immer-nothing\");\nvar DRAFTABLE = Symbol.for(\"immer-draftable\");\nvar DRAFT_STATE = Symbol.for(\"immer-state\");\n\n// src/utils/errors.ts\nvar errors = process.env.NODE_ENV !== \"production\" ? [\n // All error codes, starting by 0:\n function(plugin) {\n return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`;\n },\n function(thing) {\n return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`;\n },\n \"This object has been frozen and should not be mutated\",\n function(data) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + data;\n },\n \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n \"Immer forbids circular references\",\n \"The first or second argument to `produce` must be a function\",\n \"The third argument to `produce` must be a function or undefined\",\n \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n function(thing) {\n return `'current' expects a draft, got: ${thing}`;\n },\n \"Object.defineProperty() cannot be used on an Immer draft\",\n \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n \"Immer only supports deleting array indices\",\n \"Immer only supports setting array indices and the 'length' property\",\n function(thing) {\n return `'original' expects a draft, got: ${thing}`;\n }\n // Note: if more errors are added, the errorOffset in Patches.ts should be increased\n // See Patches.ts for additional errors\n] : [];\nfunction die(error, ...args) {\n if (process.env.NODE_ENV !== \"production\") {\n const e = errors[error];\n const msg = typeof e === \"function\" ? e.apply(null, args) : e;\n throw new Error(`[Immer] ${msg}`);\n }\n throw new Error(\n `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n );\n}\n\n// src/utils/common.ts\nvar getPrototypeOf = Object.getPrototypeOf;\nfunction isDraft(value) {\n return !!value && !!value[DRAFT_STATE];\n}\nfunction isDraftable(value) {\n if (!value)\n return false;\n return isPlainObject(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!value.constructor?.[DRAFTABLE] || isMap(value) || isSet(value);\n}\nvar objectCtorString = Object.prototype.constructor.toString();\nfunction isPlainObject(value) {\n if (!value || typeof value !== \"object\")\n return false;\n const proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n const Ctor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n if (Ctor === Object)\n return true;\n return typeof Ctor == \"function\" && Function.toString.call(Ctor) === objectCtorString;\n}\nfunction original(value) {\n if (!isDraft(value))\n die(15, value);\n return value[DRAFT_STATE].base_;\n}\nfunction each(obj, iter) {\n if (getArchtype(obj) === 0 /* Object */) {\n Reflect.ownKeys(obj).forEach((key) => {\n iter(key, obj[key], obj);\n });\n } else {\n obj.forEach((entry, index) => iter(index, entry, obj));\n }\n}\nfunction getArchtype(thing) {\n const state = thing[DRAFT_STATE];\n return state ? state.type_ : Array.isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */;\n}\nfunction has(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop);\n}\nfunction get(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.get(prop) : thing[prop];\n}\nfunction set(thing, propOrOldValue, value) {\n const t = getArchtype(thing);\n if (t === 2 /* Map */)\n thing.set(propOrOldValue, value);\n else if (t === 3 /* Set */) {\n thing.add(value);\n } else\n thing[propOrOldValue] = value;\n}\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\nfunction isMap(target) {\n return target instanceof Map;\n}\nfunction isSet(target) {\n return target instanceof Set;\n}\nfunction latest(state) {\n return state.copy_ || state.base_;\n}\nfunction shallowCopy(base, strict) {\n if (isMap(base)) {\n return new Map(base);\n }\n if (isSet(base)) {\n return new Set(base);\n }\n if (Array.isArray(base))\n return Array.prototype.slice.call(base);\n const isPlain = isPlainObject(base);\n if (strict === true || strict === \"class_only\" && !isPlain) {\n const descriptors = Object.getOwnPropertyDescriptors(base);\n delete descriptors[DRAFT_STATE];\n let keys = Reflect.ownKeys(descriptors);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const desc = descriptors[key];\n if (desc.writable === false) {\n desc.writable = true;\n desc.configurable = true;\n }\n if (desc.get || desc.set)\n descriptors[key] = {\n configurable: true,\n writable: true,\n // could live with !!desc.set as well here...\n enumerable: desc.enumerable,\n value: base[key]\n };\n }\n return Object.create(getPrototypeOf(base), descriptors);\n } else {\n const proto = getPrototypeOf(base);\n if (proto !== null && isPlain) {\n return { ...base };\n }\n const obj = Object.create(proto);\n return Object.assign(obj, base);\n }\n}\nfunction freeze(obj, deep = false) {\n if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj))\n return obj;\n if (getArchtype(obj) > 1) {\n obj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections;\n }\n Object.freeze(obj);\n if (deep)\n Object.entries(obj).forEach(([key, value]) => freeze(value, true));\n return obj;\n}\nfunction dontMutateFrozenCollections() {\n die(2);\n}\nfunction isFrozen(obj) {\n return Object.isFrozen(obj);\n}\n\n// src/utils/plugins.ts\nvar plugins = {};\nfunction getPlugin(pluginKey) {\n const plugin = plugins[pluginKey];\n if (!plugin) {\n die(0, pluginKey);\n }\n return plugin;\n}\nfunction loadPlugin(pluginKey, implementation) {\n if (!plugins[pluginKey])\n plugins[pluginKey] = implementation;\n}\n\n// src/core/scope.ts\nvar currentScope;\nfunction getCurrentScope() {\n return currentScope;\n}\nfunction createScope(parent_, immer_) {\n return {\n drafts_: [],\n parent_,\n immer_,\n // Whenever the modified draft contains a draft from another scope, we\n // need to prevent auto-freezing so the unowned draft can be finalized.\n canAutoFreeze_: true,\n unfinalizedDrafts_: 0\n };\n}\nfunction usePatchesInScope(scope, patchListener) {\n if (patchListener) {\n getPlugin(\"Patches\");\n scope.patches_ = [];\n scope.inversePatches_ = [];\n scope.patchListener_ = patchListener;\n }\n}\nfunction revokeScope(scope) {\n leaveScope(scope);\n scope.drafts_.forEach(revokeDraft);\n scope.drafts_ = null;\n}\nfunction leaveScope(scope) {\n if (scope === currentScope) {\n currentScope = scope.parent_;\n }\n}\nfunction enterScope(immer2) {\n return currentScope = createScope(currentScope, immer2);\n}\nfunction revokeDraft(draft) {\n const state = draft[DRAFT_STATE];\n if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */)\n state.revoke_();\n else\n state.revoked_ = true;\n}\n\n// src/core/finalize.ts\nfunction processResult(result, scope) {\n scope.unfinalizedDrafts_ = scope.drafts_.length;\n const baseDraft = scope.drafts_[0];\n const isReplaced = result !== void 0 && result !== baseDraft;\n if (isReplaced) {\n if (baseDraft[DRAFT_STATE].modified_) {\n revokeScope(scope);\n die(4);\n }\n if (isDraftable(result)) {\n result = finalize(scope, result);\n if (!scope.parent_)\n maybeFreeze(scope, result);\n }\n if (scope.patches_) {\n getPlugin(\"Patches\").generateReplacementPatches_(\n baseDraft[DRAFT_STATE].base_,\n result,\n scope.patches_,\n scope.inversePatches_\n );\n }\n } else {\n result = finalize(scope, baseDraft, []);\n }\n revokeScope(scope);\n if (scope.patches_) {\n scope.patchListener_(scope.patches_, scope.inversePatches_);\n }\n return result !== NOTHING ? result : void 0;\n}\nfunction finalize(rootScope, value, path) {\n if (isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n if (!state) {\n each(\n value,\n (key, childValue) => finalizeProperty(rootScope, state, value, key, childValue, path)\n );\n return value;\n }\n if (state.scope_ !== rootScope)\n return value;\n if (!state.modified_) {\n maybeFreeze(rootScope, state.base_, true);\n return state.base_;\n }\n if (!state.finalized_) {\n state.finalized_ = true;\n state.scope_.unfinalizedDrafts_--;\n const result = state.copy_;\n let resultEach = result;\n let isSet2 = false;\n if (state.type_ === 3 /* Set */) {\n resultEach = new Set(result);\n result.clear();\n isSet2 = true;\n }\n each(\n resultEach,\n (key, childValue) => finalizeProperty(rootScope, state, result, key, childValue, path, isSet2)\n );\n maybeFreeze(rootScope, result, false);\n if (path && rootScope.patches_) {\n getPlugin(\"Patches\").generatePatches_(\n state,\n path,\n rootScope.patches_,\n rootScope.inversePatches_\n );\n }\n }\n return state.copy_;\n}\nfunction finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath, targetIsSet) {\n if (process.env.NODE_ENV !== \"production\" && childValue === targetObject)\n die(5);\n if (isDraft(childValue)) {\n const path = rootPath && parentState && parentState.type_ !== 3 /* Set */ && // Set objects are atomic since they have no keys.\n !has(parentState.assigned_, prop) ? rootPath.concat(prop) : void 0;\n const res = finalize(rootScope, childValue, path);\n set(targetObject, prop, res);\n if (isDraft(res)) {\n rootScope.canAutoFreeze_ = false;\n } else\n return;\n } else if (targetIsSet) {\n targetObject.add(childValue);\n }\n if (isDraftable(childValue) && !isFrozen(childValue)) {\n if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n return;\n }\n finalize(rootScope, childValue);\n if ((!parentState || !parentState.scope_.parent_) && typeof prop !== \"symbol\" && Object.prototype.propertyIsEnumerable.call(targetObject, prop))\n maybeFreeze(rootScope, childValue);\n }\n}\nfunction maybeFreeze(scope, value, deep = false) {\n if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n freeze(value, deep);\n }\n}\n\n// src/core/proxy.ts\nfunction createProxyProxy(base, parent) {\n const isArray = Array.isArray(base);\n const state = {\n type_: isArray ? 1 /* Array */ : 0 /* Object */,\n // Track which produce call this is associated with.\n scope_: parent ? parent.scope_ : getCurrentScope(),\n // True for both shallow and deep changes.\n modified_: false,\n // Used during finalization.\n finalized_: false,\n // Track which properties have been assigned (true) or deleted (false).\n assigned_: {},\n // The parent draft state.\n parent_: parent,\n // The base state.\n base_: base,\n // The base proxy.\n draft_: null,\n // set below\n // The base copy with any updated values.\n copy_: null,\n // Called by the `produce` function.\n revoke_: null,\n isManual_: false\n };\n let target = state;\n let traps = objectTraps;\n if (isArray) {\n target = [state];\n traps = arrayTraps;\n }\n const { revoke, proxy } = Proxy.revocable(target, traps);\n state.draft_ = proxy;\n state.revoke_ = revoke;\n return proxy;\n}\nvar objectTraps = {\n get(state, prop) {\n if (prop === DRAFT_STATE)\n return state;\n const source = latest(state);\n if (!has(source, prop)) {\n return readPropFromProto(state, source, prop);\n }\n const value = source[prop];\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value === peek(state.base_, prop)) {\n prepareCopy(state);\n return state.copy_[prop] = createProxy(value, state);\n }\n return value;\n },\n has(state, prop) {\n return prop in latest(state);\n },\n ownKeys(state) {\n return Reflect.ownKeys(latest(state));\n },\n set(state, prop, value) {\n const desc = getDescriptorFromProto(latest(state), prop);\n if (desc?.set) {\n desc.set.call(state.draft_, value);\n return true;\n }\n if (!state.modified_) {\n const current2 = peek(latest(state), prop);\n const currentState = current2?.[DRAFT_STATE];\n if (currentState && currentState.base_ === value) {\n state.copy_[prop] = value;\n state.assigned_[prop] = false;\n return true;\n }\n if (is(value, current2) && (value !== void 0 || has(state.base_, prop)))\n return true;\n prepareCopy(state);\n markChanged(state);\n }\n if (state.copy_[prop] === value && // special case: handle new props with value 'undefined'\n (value !== void 0 || prop in state.copy_) || // special case: NaN\n Number.isNaN(value) && Number.isNaN(state.copy_[prop]))\n return true;\n state.copy_[prop] = value;\n state.assigned_[prop] = true;\n return true;\n },\n deleteProperty(state, prop) {\n if (peek(state.base_, prop) !== void 0 || prop in state.base_) {\n state.assigned_[prop] = false;\n prepareCopy(state);\n markChanged(state);\n } else {\n delete state.assigned_[prop];\n }\n if (state.copy_) {\n delete state.copy_[prop];\n }\n return true;\n },\n // Note: We never coerce `desc.value` into an Immer draft, because we can't make\n // the same guarantee in ES5 mode.\n getOwnPropertyDescriptor(state, prop) {\n const owner = latest(state);\n const desc = Reflect.getOwnPropertyDescriptor(owner, prop);\n if (!desc)\n return desc;\n return {\n writable: true,\n configurable: state.type_ !== 1 /* Array */ || prop !== \"length\",\n enumerable: desc.enumerable,\n value: owner[prop]\n };\n },\n defineProperty() {\n die(11);\n },\n getPrototypeOf(state) {\n return getPrototypeOf(state.base_);\n },\n setPrototypeOf() {\n die(12);\n }\n};\nvar arrayTraps = {};\neach(objectTraps, (key, fn) => {\n arrayTraps[key] = function() {\n arguments[0] = arguments[0][0];\n return fn.apply(this, arguments);\n };\n});\narrayTraps.deleteProperty = function(state, prop) {\n if (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop)))\n die(13);\n return arrayTraps.set.call(this, state, prop, void 0);\n};\narrayTraps.set = function(state, prop, value) {\n if (process.env.NODE_ENV !== \"production\" && prop !== \"length\" && isNaN(parseInt(prop)))\n die(14);\n return objectTraps.set.call(this, state[0], prop, value, state[0]);\n};\nfunction peek(draft, prop) {\n const state = draft[DRAFT_STATE];\n const source = state ? latest(state) : draft;\n return source[prop];\n}\nfunction readPropFromProto(state, source, prop) {\n const desc = getDescriptorFromProto(source, prop);\n return desc ? `value` in desc ? desc.value : (\n // This is a very special case, if the prop is a getter defined by the\n // prototype, we should invoke it with the draft as context!\n desc.get?.call(state.draft_)\n ) : void 0;\n}\nfunction getDescriptorFromProto(source, prop) {\n if (!(prop in source))\n return void 0;\n let proto = getPrototypeOf(source);\n while (proto) {\n const desc = Object.getOwnPropertyDescriptor(proto, prop);\n if (desc)\n return desc;\n proto = getPrototypeOf(proto);\n }\n return void 0;\n}\nfunction markChanged(state) {\n if (!state.modified_) {\n state.modified_ = true;\n if (state.parent_) {\n markChanged(state.parent_);\n }\n }\n}\nfunction prepareCopy(state) {\n if (!state.copy_) {\n state.copy_ = shallowCopy(\n state.base_,\n state.scope_.immer_.useStrictShallowCopy_\n );\n }\n}\n\n// src/core/immerClass.ts\nvar Immer2 = class {\n constructor(config) {\n this.autoFreeze_ = true;\n this.useStrictShallowCopy_ = false;\n /**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\n this.produce = (base, recipe, patchListener) => {\n if (typeof base === \"function\" && typeof recipe !== \"function\") {\n const defaultBase = recipe;\n recipe = base;\n const self = this;\n return function curriedProduce(base2 = defaultBase, ...args) {\n return self.produce(base2, (draft) => recipe.call(this, draft, ...args));\n };\n }\n if (typeof recipe !== \"function\")\n die(6);\n if (patchListener !== void 0 && typeof patchListener !== \"function\")\n die(7);\n let result;\n if (isDraftable(base)) {\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n let hasError = true;\n try {\n result = recipe(proxy);\n hasError = false;\n } finally {\n if (hasError)\n revokeScope(scope);\n else\n leaveScope(scope);\n }\n usePatchesInScope(scope, patchListener);\n return processResult(result, scope);\n } else if (!base || typeof base !== \"object\") {\n result = recipe(base);\n if (result === void 0)\n result = base;\n if (result === NOTHING)\n result = void 0;\n if (this.autoFreeze_)\n freeze(result, true);\n if (patchListener) {\n const p = [];\n const ip = [];\n getPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip);\n patchListener(p, ip);\n }\n return result;\n } else\n die(1, base);\n };\n this.produceWithPatches = (base, recipe) => {\n if (typeof base === \"function\") {\n return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args));\n }\n let patches, inversePatches;\n const result = this.produce(base, recipe, (p, ip) => {\n patches = p;\n inversePatches = ip;\n });\n return [result, patches, inversePatches];\n };\n if (typeof config?.autoFreeze === \"boolean\")\n this.setAutoFreeze(config.autoFreeze);\n if (typeof config?.useStrictShallowCopy === \"boolean\")\n this.setUseStrictShallowCopy(config.useStrictShallowCopy);\n }\n createDraft(base) {\n if (!isDraftable(base))\n die(8);\n if (isDraft(base))\n base = current(base);\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n proxy[DRAFT_STATE].isManual_ = true;\n leaveScope(scope);\n return proxy;\n }\n finishDraft(draft, patchListener) {\n const state = draft && draft[DRAFT_STATE];\n if (!state || !state.isManual_)\n die(9);\n const { scope_: scope } = state;\n usePatchesInScope(scope, patchListener);\n return processResult(void 0, scope);\n }\n /**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * By default, auto-freezing is enabled.\n */\n setAutoFreeze(value) {\n this.autoFreeze_ = value;\n }\n /**\n * Pass true to enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\n setUseStrictShallowCopy(value) {\n this.useStrictShallowCopy_ = value;\n }\n applyPatches(base, patches) {\n let i;\n for (i = patches.length - 1; i >= 0; i--) {\n const patch = patches[i];\n if (patch.path.length === 0 && patch.op === \"replace\") {\n base = patch.value;\n break;\n }\n }\n if (i > -1) {\n patches = patches.slice(i + 1);\n }\n const applyPatchesImpl = getPlugin(\"Patches\").applyPatches_;\n if (isDraft(base)) {\n return applyPatchesImpl(base, patches);\n }\n return this.produce(\n base,\n (draft) => applyPatchesImpl(draft, patches)\n );\n }\n};\nfunction createProxy(value, parent) {\n const draft = isMap(value) ? getPlugin(\"MapSet\").proxyMap_(value, parent) : isSet(value) ? getPlugin(\"MapSet\").proxySet_(value, parent) : createProxyProxy(value, parent);\n const scope = parent ? parent.scope_ : getCurrentScope();\n scope.drafts_.push(draft);\n return draft;\n}\n\n// src/core/current.ts\nfunction current(value) {\n if (!isDraft(value))\n die(10, value);\n return currentImpl(value);\n}\nfunction currentImpl(value) {\n if (!isDraftable(value) || isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n let copy;\n if (state) {\n if (!state.modified_)\n return state.base_;\n state.finalized_ = true;\n copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_);\n } else {\n copy = shallowCopy(value, true);\n }\n each(copy, (key, childValue) => {\n set(copy, key, currentImpl(childValue));\n });\n if (state) {\n state.finalized_ = false;\n }\n return copy;\n}\n\n// src/plugins/patches.ts\nfunction enablePatches() {\n const errorOffset = 16;\n if (process.env.NODE_ENV !== \"production\") {\n errors.push(\n 'Sets cannot have \"replace\" patches.',\n function(op) {\n return \"Unsupported patch operation: \" + op;\n },\n function(path) {\n return \"Cannot apply patch, path doesn't resolve: \" + path;\n },\n \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n );\n }\n const REPLACE = \"replace\";\n const ADD = \"add\";\n const REMOVE = \"remove\";\n function generatePatches_(state, basePath, patches, inversePatches) {\n switch (state.type_) {\n case 0 /* Object */:\n case 2 /* Map */:\n return generatePatchesFromAssigned(\n state,\n basePath,\n patches,\n inversePatches\n );\n case 1 /* Array */:\n return generateArrayPatches(state, basePath, patches, inversePatches);\n case 3 /* Set */:\n return generateSetPatches(\n state,\n basePath,\n patches,\n inversePatches\n );\n }\n }\n function generateArrayPatches(state, basePath, patches, inversePatches) {\n let { base_, assigned_ } = state;\n let copy_ = state.copy_;\n if (copy_.length < base_.length) {\n ;\n [base_, copy_] = [copy_, base_];\n [patches, inversePatches] = [inversePatches, patches];\n }\n for (let i = 0; i < base_.length; i++) {\n if (assigned_[i] && copy_[i] !== base_[i]) {\n const path = basePath.concat([i]);\n patches.push({\n op: REPLACE,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n inversePatches.push({\n op: REPLACE,\n path,\n value: clonePatchValueIfNeeded(base_[i])\n });\n }\n }\n for (let i = base_.length; i < copy_.length; i++) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n }\n for (let i = copy_.length - 1; base_.length <= i; --i) {\n const path = basePath.concat([i]);\n inversePatches.push({\n op: REMOVE,\n path\n });\n }\n }\n function generatePatchesFromAssigned(state, basePath, patches, inversePatches) {\n const { base_, copy_ } = state;\n each(state.assigned_, (key, assignedValue) => {\n const origValue = get(base_, key);\n const value = get(copy_, key);\n const op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD;\n if (origValue === value && op === REPLACE)\n return;\n const path = basePath.concat(key);\n patches.push(op === REMOVE ? { op, path } : { op, path, value });\n inversePatches.push(\n op === ADD ? { op: REMOVE, path } : op === REMOVE ? { op: ADD, path, value: clonePatchValueIfNeeded(origValue) } : { op: REPLACE, path, value: clonePatchValueIfNeeded(origValue) }\n );\n });\n }\n function generateSetPatches(state, basePath, patches, inversePatches) {\n let { base_, copy_ } = state;\n let i = 0;\n base_.forEach((value) => {\n if (!copy_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: REMOVE,\n path,\n value\n });\n inversePatches.unshift({\n op: ADD,\n path,\n value\n });\n }\n i++;\n });\n i = 0;\n copy_.forEach((value) => {\n if (!base_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n value\n });\n inversePatches.unshift({\n op: REMOVE,\n path,\n value\n });\n }\n i++;\n });\n }\n function generateReplacementPatches_(baseValue, replacement, patches, inversePatches) {\n patches.push({\n op: REPLACE,\n path: [],\n value: replacement === NOTHING ? void 0 : replacement\n });\n inversePatches.push({\n op: REPLACE,\n path: [],\n value: baseValue\n });\n }\n function applyPatches_(draft, patches) {\n patches.forEach((patch) => {\n const { path, op } = patch;\n let base = draft;\n for (let i = 0; i < path.length - 1; i++) {\n const parentType = getArchtype(base);\n let p = path[i];\n if (typeof p !== \"string\" && typeof p !== \"number\") {\n p = \"\" + p;\n }\n if ((parentType === 0 /* Object */ || parentType === 1 /* Array */) && (p === \"__proto__\" || p === \"constructor\"))\n die(errorOffset + 3);\n if (typeof base === \"function\" && p === \"prototype\")\n die(errorOffset + 3);\n base = get(base, p);\n if (typeof base !== \"object\")\n die(errorOffset + 2, path.join(\"/\"));\n }\n const type = getArchtype(base);\n const value = deepClonePatchValue(patch.value);\n const key = path[path.length - 1];\n switch (op) {\n case REPLACE:\n switch (type) {\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n die(errorOffset);\n default:\n return base[key] = value;\n }\n case ADD:\n switch (type) {\n case 1 /* Array */:\n return key === \"-\" ? base.push(value) : base.splice(key, 0, value);\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n return base.add(value);\n default:\n return base[key] = value;\n }\n case REMOVE:\n switch (type) {\n case 1 /* Array */:\n return base.splice(key, 1);\n case 2 /* Map */:\n return base.delete(key);\n case 3 /* Set */:\n return base.delete(patch.value);\n default:\n return delete base[key];\n }\n default:\n die(errorOffset + 1, op);\n }\n });\n return draft;\n }\n function deepClonePatchValue(obj) {\n if (!isDraftable(obj))\n return obj;\n if (Array.isArray(obj))\n return obj.map(deepClonePatchValue);\n if (isMap(obj))\n return new Map(\n Array.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n );\n if (isSet(obj))\n return new Set(Array.from(obj).map(deepClonePatchValue));\n const cloned = Object.create(getPrototypeOf(obj));\n for (const key in obj)\n cloned[key] = deepClonePatchValue(obj[key]);\n if (has(obj, DRAFTABLE))\n cloned[DRAFTABLE] = obj[DRAFTABLE];\n return cloned;\n }\n function clonePatchValueIfNeeded(obj) {\n if (isDraft(obj)) {\n return deepClonePatchValue(obj);\n } else\n return obj;\n }\n loadPlugin(\"Patches\", {\n applyPatches_,\n generatePatches_,\n generateReplacementPatches_\n });\n}\n\n// src/plugins/mapset.ts\nfunction enableMapSet() {\n class DraftMap extends Map {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 2 /* Map */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n assigned_: void 0,\n base_: target,\n draft_: this,\n isManual_: false,\n revoked_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(key) {\n return latest(this[DRAFT_STATE]).has(key);\n }\n set(key, value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!latest(state).has(key) || latest(state).get(key) !== value) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_.set(key, true);\n state.copy_.set(key, value);\n state.assigned_.set(key, true);\n }\n return this;\n }\n delete(key) {\n if (!this.has(key)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareMapCopy(state);\n markChanged(state);\n if (state.base_.has(key)) {\n state.assigned_.set(key, false);\n } else {\n state.assigned_.delete(key);\n }\n state.copy_.delete(key);\n return true;\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_ = /* @__PURE__ */ new Map();\n each(state.base_, (key) => {\n state.assigned_.set(key, false);\n });\n state.copy_.clear();\n }\n }\n forEach(cb, thisArg) {\n const state = this[DRAFT_STATE];\n latest(state).forEach((_value, key, _map) => {\n cb.call(thisArg, this.get(key), key, this);\n });\n }\n get(key) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n const value = latest(state).get(key);\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value !== state.base_.get(key)) {\n return value;\n }\n const draft = createProxy(value, state);\n prepareMapCopy(state);\n state.copy_.set(key, draft);\n return draft;\n }\n keys() {\n return latest(this[DRAFT_STATE]).keys();\n }\n values() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.values(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value\n };\n }\n };\n }\n entries() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.entries(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value: [r.value, value]\n };\n }\n };\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.entries();\n }\n }\n function proxyMap_(target, parent) {\n return new DraftMap(target, parent);\n }\n function prepareMapCopy(state) {\n if (!state.copy_) {\n state.assigned_ = /* @__PURE__ */ new Map();\n state.copy_ = new Map(state.base_);\n }\n }\n class DraftSet extends Set {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 3 /* Set */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n base_: target,\n draft_: this,\n drafts_: /* @__PURE__ */ new Map(),\n revoked_: false,\n isManual_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!state.copy_) {\n return state.base_.has(value);\n }\n if (state.copy_.has(value))\n return true;\n if (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value)))\n return true;\n return false;\n }\n add(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!this.has(value)) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.add(value);\n }\n return this;\n }\n delete(value) {\n if (!this.has(value)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n markChanged(state);\n return state.copy_.delete(value) || (state.drafts_.has(value) ? state.copy_.delete(state.drafts_.get(value)) : (\n /* istanbul ignore next */\n false\n ));\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.clear();\n }\n }\n values() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.values();\n }\n entries() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.entries();\n }\n keys() {\n return this.values();\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.values();\n }\n forEach(cb, thisArg) {\n const iterator = this.values();\n let result = iterator.next();\n while (!result.done) {\n cb.call(thisArg, result.value, result.value, this);\n result = iterator.next();\n }\n }\n }\n function proxySet_(target, parent) {\n return new DraftSet(target, parent);\n }\n function prepareSetCopy(state) {\n if (!state.copy_) {\n state.copy_ = /* @__PURE__ */ new Set();\n state.base_.forEach((value) => {\n if (isDraftable(value)) {\n const draft = createProxy(value, state);\n state.drafts_.set(value, draft);\n state.copy_.add(draft);\n } else {\n state.copy_.add(value);\n }\n });\n }\n }\n function assertUnrevoked(state) {\n if (state.revoked_)\n die(3, JSON.stringify(latest(state)));\n }\n loadPlugin(\"MapSet\", { proxyMap_, proxySet_ });\n}\n\n// src/immer.ts\nvar immer = new Immer2();\nvar produce = immer.produce;\nvar produceWithPatches = immer.produceWithPatches.bind(\n immer\n);\nvar setAutoFreeze = immer.setAutoFreeze.bind(immer);\nvar setUseStrictShallowCopy = immer.setUseStrictShallowCopy.bind(immer);\nvar applyPatches = immer.applyPatches.bind(immer);\nvar createDraft = immer.createDraft.bind(immer);\nvar finishDraft = immer.finishDraft.bind(immer);\nfunction castDraft(value) {\n return value;\n}\nfunction castImmutable(value) {\n return value;\n}\nexport {\n Immer2 as Immer,\n applyPatches,\n castDraft,\n castImmutable,\n createDraft,\n current,\n enableMapSet,\n enablePatches,\n finishDraft,\n freeze,\n DRAFTABLE as immerable,\n isDraft,\n isDraftable,\n NOTHING as nothing,\n original,\n produce,\n produceWithPatches,\n setAutoFreeze,\n setUseStrictShallowCopy\n};\n//# sourceMappingURL=immer.mjs.map","import {\n LogLevel,\n RowsPerPage,\n StateUpdater,\n Identifiable,\n SortCondition,\n OrderDirection,\n PersistedState,\n SnapRecordsState,\n} from './SnapTypes.js';\nimport { log } from './utils.js';\nimport { produce, Draft } from 'immer';\nimport { SnapRecords } from './SnapRecords.js';\n\n/*========================================================================================================\n\n STATE MANAGER CLASS\n\n Class responsible for managing and persisting the state of a SnapRecords instance\n\n The StateManager class is responsible for managing, updating, and persisting the state of a\n SnapRecords instance.\n It provides methods to update the state immutably, save and load state from localStorage,\n and synchronize state with the browser URL.\n This ensures that user preferences such as column order, filters, sorting, and pagination\n are preserved across sessions and can be shared via URLs.\n\n==========================================================================================================*/\n\nexport class StateManager<T extends Identifiable & Record<string, unknown>> {\n // Reference to the parent SnapRecords instance\n #parent: SnapRecords<T>;\n // Add timeout for debounce operations\n readonly #DEBOUNCE_TIMEOUT_MS = 500;\n // Add debounce for save operations\n #saveDebounceTimer: NodeJS.Timeout | null = null;\n\n // Constructor initializes the state manager with the parent instance\n constructor(parent: SnapRecords<T>) {\n this.#parent = parent;\n }\n\n // Updates the state using an Immer draft\n public setState(updater: StateUpdater<T>): void {\n // Create a new state using Immer's produce for immutability\n const nextState = produce(this.#parent.state, updater);\n // Only update if the state has changed\n if (nextState !== this.#parent.state) {\n this.#parent.state = nextState as SnapRecordsState<T>;\n log(this.#parent.debug, LogLevel.INFO, 'State updated.', this.#parent.state); \n // Persist state to storage and update URL\n this.saveStateToStorage();\n this.updateURLState();\n }\n }\n\n // Updates the URL with current state parameters if usePushState is enabled\n public updateURLState(): void {\n // Skip if URL state persistence is disabled\n if (!this.#parent.usePushState) return;\n log(this.#parent.debug, LogLevel.INFO, 'Updating URL with current state.'); \n // Create URLSearchParams to hold query parameters\n const params = new URLSearchParams();\n params.set('page', this.#parent.state.currentPage.toString());\n params.set('perPage', this.#parent.state.rowsPerPage.toString());\n // Add filter parameters\n Object.entries(this.#parent.state.filters).forEach(([key, value]) => {\n if (value) params.set(`filtering[${key}]`, String(value));\n });\n // Add sort conditions\n this.#parent.state.sortConditions.forEach(([column, direction]) => {\n params.append(`sorting[${column}]`, direction);\n });\n // Update the URL without reloading\n const newUrl = `${window.location.pathname}?${params.toString()}`;\n window.history.pushState({ path: newUrl }, '', newUrl);\n }\n\n // Loads state from URL parameters if usePushState is enabled\n public loadFromURL(): void {\n // Skip if URL state persistence is disabled\n if (!this.#parent.usePushState) return;\n log(this.#parent.debug, LogLevel.INFO, 'Loading state from URL parameters...'); \n // Parse URL query parameters\n const params = new URLSearchParams(window.location.search);\n if (params.toString() === '') {\n log(this.#parent.debug, LogLevel.INFO, 'No URL parameters to load.'); \n return;\n }\n\n // Update state with URL parameters\n this.setState((draft) => {\n // Load page number with validation\n const pageParam = params.get('page');\n if (pageParam) {\n const page = parseInt(pageParam, 10);\n draft.currentPage = isNaN(page) ? 1 : Math.max(1, page);\n }\n\n // Load rows per page with validation\n const perPageParam = params.get('perPage');\n if (perPageParam) {\n const perPage = parseInt(perPageParam, 10);\n // Validate against allowed values\n const allowedValues = [\n RowsPerPage.DEFAULT,\n RowsPerPage.TWENTY,\n RowsPerPage.FIFTY,\n RowsPerPage.HUNDRED,\n RowsPerPage.TWO_HUNDRED_FIFTY,\n RowsPerPage.FIVE_HUNDRED,\n RowsPerPage.THOUSAND,\n ];\n draft.rowsPerPage =\n isNaN(perPage) || !allowedValues.includes(perPage)\n ? RowsPerPage.DEFAULT\n : (perPage as RowsPerPage);\n }\n\n // Load filters\n const newFilters: Record<string, string> = {};\n params.forEach((value, key) => {\n if (key.startsWith('filtering[')) {\n const filterKey = key.substring(10, key.length - 1);\n newFilters[filterKey] = value;\n }\n });\n (draft.filters as Record<string, string>) = newFilters;\n\n // Load sort conditions\n const newSorts: Array<SortCondition> = [];\n params.forEach((value, key) => {\n if (key.startsWith('sorting[')) {\n const column = key.substring(key.indexOf('[') + 1, key.indexOf(']'));\n if (\n Object.values(OrderDirection).includes(\n value.toUpperCase() as OrderDirection\n )\n ) {\n newSorts.push([column, value.toUpperCase() as OrderDirection]);\n }\n }\n });\n draft.sortConditions = newSorts;\n });\n }\n\n // Saves the current state to localStorage if persistState is enabled\n public saveStateToStorage(): void {\n // Skip if state persistence is disabled\n if (!this.#parent.persistState) return;\n\n // Debounce to prevent excessive writings\n if (this.#saveDebounceTimer) {\n clearTimeout(this.#saveDebounceTimer);\n }\n\n log(this.#parent.debug, LogLevel.INFO, 'Saving state to localStorage...'); \n\n // Extract relevant state properties\n const {\n columns,\n columnWidths,\n sortConditions,\n filters,\n currentPage,\n rowsPerPage,\n headerCellClasses,\n } = this.#parent.state;\n // Create state object for storage\n const stateToSave: PersistedState = {\n columns: [...columns],\n columnWidths: Array.from(columnWidths.entries()),\n sortConditions: [...sortConditions],\n filters: { ...filters },\n currentPage,\n rowsPerPage,\n headerCellClasses: [...headerCellClasses],\n };\n\n this.#saveDebounceTimer = setTimeout(() => {\n try {\n // Save state to localStorage\n localStorage.setItem(this.#parent.storageKey, JSON.stringify(stateToSave));\n log(this.#parent.debug, LogLevel.INFO, 'State saved successfully.'); \n } catch (error) {\n // Log error and continue\n log(this.#parent.debug, LogLevel.ERROR, 'Could not save state to localStorage.', error); \n }\n }, this.#DEBOUNCE_TIMEOUT_MS);\n }\n\n // Loads state from localStorage if persistState is enabled\n public loadStateFromStorage(): void {\n // Skip if state persistence is disabled\n if (!this.#parent.persistState) return;\n log(this.#parent.debug, LogLevel.INFO, 'Attempting to load state from localStorage...'); \n try {\n // Retrieve saved state\n const savedStateJSON = localStorage.getItem(this.#parent.storageKey);\n if (!savedStateJSON) {\n log(this.#parent.debug, LogLevel.INFO, 'No saved state found in localStorage.'); \n return;\n }\n // Parse saved state\n const savedState = JSON.parse(savedStateJSON) as Partial<PersistedState>;\n log(this.#parent.debug, LogLevel.INFO, 'Saved state found, applying...', savedState); \n\n // Apply saved state with type validation\n this.setState((draft) => {\n if (savedState.columns && Array.isArray(savedState.columns)) {\n // Apply saved column order\n this.#applyStoredColumnOrder(draft, savedState.columns);\n }\n\n // Validate and apply column widths\n if (savedState.columnWidths && Array.isArray(savedState.columnWidths)) {\n const validWidths = savedState.columnWidths.filter(\n (entry) =>\n Array.isArray(entry) &&\n entry.length === 2 &&\n typeof entry[0] === 'string' &&\n typeof entry[1] === 'number'\n );\n (draft.columnWidths as Map<string, number>) = new Map(validWidths);\n }\n\n // Validate and apply sort conditions\n if (savedState.sortConditions) {\n const validSorts = savedState.sortConditions.filter(\n (condition) =>\n Array.isArray(condition) &&\n condition.length === 2 &&\n typeof condition[0] === 'string' &&\n Object.values(OrderDirection).includes(condition[1])\n );\n draft.sortConditions = validSorts;\n }\n\n // Validate and apply filters\n if (savedState.filters && typeof savedState.filters === 'object') {\n const validFilters: Record<string, string> = {};\n for (const [key, value] of Object.entries(savedState.filters)) {\n if (typeof value === 'string') {\n validFilters[key] = value;\n }\n }\n draft.filters = validFilters;\n }\n\n // Validate and apply current page\n if (typeof savedState.currentPage === 'number') {\n draft.currentPage = Math.max(1, savedState.currentPage);\n }\n\n // Validate and apply rows per page\n if (typeof savedState.rowsPerPage === 'number') {\n const allowedValues = [\n RowsPerPage.DEFAULT,\n RowsPerPage.TWENTY,\n RowsPerPage.FIFTY,\n RowsPerPage.HUNDRED,\n RowsPerPage.TWO_HUNDRED_FIFTY,\n RowsPerPage.FIVE_HUNDRED,\n RowsPerPage.THOUSAND,\n ];\n if (allowedValues.includes(savedState.rowsPerPage)) {\n draft.rowsPerPage = savedState.rowsPerPage;\n }\n }\n });\n } catch (error) {\n // Log error and clear invalid state\n log(this.#parent.debug, LogLevel.ERROR, 'Could not load state from localStorage.', error); \n localStorage.removeItem(this.#parent.storageKey);\n }\n }\n\n // Applies stored column order to maintain consistency\n #applyStoredColumnOrder(state: Draft<SnapRecordsState<T>>, savedColumns: string[]): void {\n const originalColumnsConfig = [...state.columns];\n const originalTitlesConfig = [...state.columnTitles];\n const originalClassesConfig = [...state.headerCellClasses];\n\n // Filter valid saved columns\n const validSavedColumns = savedColumns.filter((col) => originalColumnsConfig.includes(col));\n // Include any new columns not in saved state\n const newConfiguredColumns = originalColumnsConfig.filter(\n (col) => !validSavedColumns.includes(col)\n );\n\n // Combine saved and new columns\n const newColumnsOrder = [...validSavedColumns, ...newConfiguredColumns];\n const newTitles: string[] = [];\n const newClasses: string[] = [];\n\n // Reorder titles and classes to match column order\n newColumnsOrder.forEach((colName: string) => {\n const originalIndex = originalColumnsConfig.indexOf(colName);\n if (originalIndex !== -1) {\n newTitles.push(originalTitlesConfig[originalIndex]);\n if (originalClassesConfig.length > originalIndex) {\n newClasses.push(originalClassesConfig[originalIndex]);\n }\n }\n });\n\n log(this.#parent.debug, LogLevel.LOG, 'Applying stored column order:', newColumnsOrder); \n state.columns = newColumnsOrder;\n state.columnTitles = newTitles;\n state.headerCellClasses = newClasses;\n }\n}\n\n/*========================================================================================================\n STATE MANAGER CLASS ENDS HERE\n==========================================================================================================*/","import {\n LogLevel,\n Identifiable,\n SortCondition,\n ISnapRenderer,\n OrderDirection,\n ISnapEventManager,\n EventManagerCallbacks,\n} from './SnapTypes.js';\nimport { log } from './utils.js';\nimport { config } from './SnapOptions.js';\nimport type { SnapRecords } from './SnapRecords.js';\nimport defaultTranslations from './lang/en_US.json';\n\n/*========================================================================================================\n\n EVENT MANAGER\n\n Class responsible for managing user interaction events such as clicks, key presses, and drag-and-drop\n\n @template T - The type of data record, extending Identifiable and a generic object.\n\n The `EventManager` class centralizes all event handling logic for the SnapRecords table UI, including:\n - Delegated click handling for sorting, pagination, and row selection.\n - Keyboard navigation and accessibility support.\n - Column resizing and drag-and-drop reordering.\n - State synchronization and UI updates in response to user actions.\n\n It interacts with the parent SnapRecords instance, the renderer, and callback hooks to ensure\n a responsive and accessible user experience.\n\n==========================================================================================================*/\n\nexport class EventManager<T extends Identifiable & Record<string, unknown>>\n implements ISnapEventManager {\n // Reference to the parent SnapRecords instance\n #parent: SnapRecords<T>;\n // Renderer instance for updating the UI\n #renderer: ISnapRenderer<T>;\n // Callbacks for handling column reordering and data loading\n #callbacks: EventManagerCallbacks;\n // ID of the column being resized, or null if none\n #resizingColumnId: string | null = null;\n // Starting X position for column resizing\n #startX: number = 0;\n // Starting width of the column being resized\n #startWidth: number = 0;\n\n // Constructor initializes the event manager with parent, renderer, and callbacks\n constructor(\n parent: SnapRecords<T>,\n renderer: ISnapRenderer<T>,\n callbacks: EventManagerCallbacks\n ) {\n this.#parent = parent;\n this.#renderer = renderer;\n this.#callbacks = callbacks;\n }\n\n // Sets up all event handlers for user interactions\n public setupAllHandlers(): void {\n this.#setupDelegatedClickHandler();\n this.#setupColumnResizing();\n this.#setupColumnDragging();\n this.#setupKeyboardNavigation();\n }\n\n // Removes all event listeners and cleans up\n public destroy(): void {\n log(\n this.#parent.debug, \n LogLevel.INFO, \n 'Destroying EventManager and removing all listeners.'\n ); \n // Remove click handler\n this.#parent.container.removeEventListener('click', this.#handleDelegatedClick);\n // Remove keyboard handler\n this.#parent.container.removeEventListener('keydown', this.#handleKeyDown);\n // Remove resize handlers\n this.#parent.container.removeEventListener('mousedown', this.#startResize as EventListener);\n // Remove drag-and-drop handlers\n this.#parent.container.removeEventListener('dragstart', this.#handleDragStart);\n this.#parent.container.removeEventListener('dragover', this.#handleDragOver);\n this.#parent.container.removeEventListener('drop', this.#handleDrop);\n this.#parent.container.removeEventListener('dragend', this.#handleDragEnd);\n // Remove document-level resize handlers\n document.removeEventListener('mouseup', this.#stopResize);\n document.removeEventListener('mousemove', this.#handleResize);\n }\n\n // Sets up a delegated click handler for the container\n #setupDelegatedClickHandler(): void {\n // Remove existing click handler to prevent duplicates\n this.#parent.container.removeEventListener('click', this.#handleDelegatedClick);\n // Add new click handler\n this.#parent.container.addEventListener('click', this.#handleDelegatedClick);\n }\n\n // Handles sort requests when a column header is clicked\n #handleSortClick = (col: string): void => {\n log(this.#parent.debug, LogLevel.INFO, `Sort requested for column: ${col}`); \n this.#parent.stateManager.setState((draft) => {\n const sortConditions = draft.sortConditions as SortCondition[];\n const sortIndex = sortConditions.findIndex((item: SortCondition) => item[0] === col);\n\n // Toggle sort order: none -> ASC -> DESC -> none\n if (sortIndex === -1) {\n sortConditions.push([col, OrderDirection.ASC]);\n } else if (sortConditions[sortIndex][1] === OrderDirection.ASC) {\n sortConditions[sortIndex][1] = OrderDirection.DESC;\n } else {\n sortConditions.splice(sortIndex, 1);\n }\n });\n // Trigger data reload with new sort conditions\n this.#callbacks.requestDataLoad();\n };\n\n // Toggles row selection for the given index\n #toggleRowSelection(index: number): void {\n const isSelected = this.#parent.selectedRows.has(index);\n log(\n this.#parent.debug,\n LogLevel.INFO,\n `Toggling row selection for index ${index}. New state: ${!isSelected}` \n );\n // Toggle selection state\n if (isSelected) {\n this.#parent.selectedRows.delete(index);\n } else {\n this.#parent.selectedRows.add(index);\n }\n // Call selection changed hook if defined\n if (this.#parent.lifecycleHooks.selectionChanged) {\n this.#parent.lifecycleHooks.selectionChanged(this.#parent.getSelectedRows());\n }\n // Update UI to reflect selection\n this.#renderer.highlightSelectedRows();\n // Announce selection change for accessibility\n const translations = this.#parent.state.translations ?? defaultTranslations;\n const message = this.#parent.selectedRows.has(index)\n ? translations.rowSelected\n : translations.rowDeselected;\n this.#renderer.announceScreenReaderUpdate(message);\n }\n\n // Sets up event listeners for column resizing\n #setupColumnResizing(): void {\n this.#parent.container.addEventListener('mousedown', (e: MouseEvent) => {\n const target = e.target as HTMLElement;\n // Check if the target is a resize handle\n if (target.classList.contains(config.classes.columnResizeHandle)) {\n const header = target.closest('th');\n if (header?.dataset.colId) {\n this.#startResize(e, header.dataset.colId);\n }\n }\n });\n }\n\n // Handles drag-over events for column dragging\n #handleDragOver = (event: DragEvent): void => {\n event.preventDefault();\n const target = (event.target as HTMLElement).closest('th');\n if (target?.dataset.colId) {\n // Clear drag-over class from all headers\n this.#renderer.tableHeader?.querySelectorAll('th').forEach((th) => {\n th.classList.remove(config.classes.dragOver);\n });\n // Add drag-over class to target\n target.classList.add(config.classes.dragOver);\n }\n };\n\n // Sets up event listeners for column dragging if enabled\n #setupColumnDragging(): void {\n if (!this.#parent.draggableColumns) return;\n this.#parent.container.addEventListener('dragstart', this.#handleDragStart);\n this.#parent.container.addEventListener('dragover', this.#handleDragOver);\n this.#parent.container.addEventListener('drop', this.#handleDrop);\n this.#parent.container.addEventListener('dragend', this.#handleDragEnd);\n }\n\n // Sets up keyboard navigation event listeners\n #setupKeyboardNavigation(): void {\n // Remove existing keydown handler to prevent duplicates\n this.#parent.container.removeEventListener('keydown', this.#handleKeyDown);\n // Add new keydown handler\n this.#parent.container.addEventListener('keydown', this.#handleKeyDown);\n // Make container focusable\n this.#parent.container.setAttribute('tabindex', '0');\n }\n\n // Starts column resizing\n #startResize = (event: MouseEvent, columnId: string): void => {\n event.preventDefault();\n this.#resizingColumnId = columnId;\n const header = this.#renderer.tableHeader!.querySelector<HTMLElement>(\n `th[data-col-id=\"${columnId}\"]`\n );\n if (!header) return;\n // Store initial position and width\n this.#startX = event.clientX;\n this.#startWidth = header.offsetWidth;\n log(this.#parent.debug, LogLevel.INFO, `Starting column resize for: ${columnId}`); \n // Add document-level handlers for resizing\n document.addEventListener('mousemove', this.#handleResize);\n document.addEventListener('mouseup', this.#stopResize);\n };\n\n // Handles keyboard navigation events\n #handleKeyDown = (event: KeyboardEvent): void => {\n // Define page navigation actions\n const pageActions: { [key: string]: () => void } = {\n PageUp: () => {\n if (this.#parent.state.currentPage > 1)\n this.#parent.gotoPage(this.#parent.state.currentPage - 1);\n },\n PageDown: () => {\n const totalPages = Math.ceil(\n this.#parent.state.totalRecords / this.#parent.state.rowsPerPage\n );\n if (this.#parent.state.currentPage < totalPages)\n this.#parent.gotoPage(this.#parent.state.currentPage + 1);\n },\n };\n const pageAction = pageActions[event.key];\n if (pageAction) {\n log(this.#parent.debug, LogLevel.INFO, `Keyboard navigation action detected: ${event.key}`); \n event.preventDefault();\n pageAction();\n return;\n }\n if (!this.#parent.selectable) return;\n // Define row selection and navigation actions\n const selectionActions: { [key: string]: () => void } = {\n ArrowDown: () => this.#renderer.navigateToNextRow(),\n ArrowUp: () => this.#renderer.navigateToPrevRow(),\n Home: () => this.#parent.reset(),\n End: () => {\n this.#parent.currentRowIndex = this.#parent.state.data.length - 1;\n this.#renderer.highlightCurrentRow();\n },\n Enter: () => {\n if (this.#parent.currentRowIndex >= 0)\n this.#toggleRowSelection(this.#parent.currentRowIndex);\n },\n ' ': () => {\n if (this.#parent.currentRowIndex >= 0)\n this.#toggleRowSelection(this.#parent.currentRowIndex);\n },\n };\n const selectionAction = selectionActions[event.key];\n if (selectionAction) {\n log(this.#parent.debug, LogLevel.INFO, `Keyboard selection action detected: ${event.key}`); \n event.preventDefault();\n selectionAction();\n }\n };\n\n // Handles column resizing during mouse movement\n #handleResize = (event: MouseEvent): void => {\n if (this.#resizingColumnId === null) return;\n // Calculate new width based on mouse movement\n const width = this.#startWidth + (event.clientX - this.#startX);\n log(this.#parent.debug, LogLevel.LOG, `Column resizing: ${this.#resizingColumnId} to ${width}px.`); \n this.#parent.stateManager.setState((draft) => {\n (draft.columnWidths as Map<string, number>).set(this.#resizingColumnId!, width);\n });\n // Apply updated widths\n this.#renderer.applyColumnWidths();\n };\n\n // Stops column resizing\n #stopResize = (): void => {\n if (this.#resizingColumnId === null) return;\n log(this.#parent.debug, LogLevel.INFO, `Finished column resize for: ${this.#resizingColumnId}`); \n this.#resizingColumnId = null;\n // Remove document-level resize handlers\n document.removeEventListener('mousemove', this.#handleResize);\n document.removeEventListener('mouseup', this.#stopResize);\n // Save updated state\n this.#parent.stateManager.saveStateToStorage();\n };\n\n // Handles the start of a column drag\n #handleDragStart = (event: DragEvent): void => {\n const target = (event.target as HTMLElement).closest('th');\n if (!target?.dataset.colId || !target.draggable) {\n event.preventDefault();\n return;\n }\n log(this.#parent.debug, LogLevel.INFO, `Drag started for column: ${target.dataset.colId}`); \n if (event.dataTransfer) {\n // Set drag data\n event.dataTransfer.setData('text/plain', target.dataset.colId);\n event.dataTransfer.effectAllowed = 'move';\n }\n // Add dragging class\n target.classList.add(config.classes.dragging);\n };\n\n // Handles the end of a column drag\n #handleDragEnd = (event: DragEvent): void => {\n const target = (event.target as HTMLElement).closest('th');\n log(this.#parent.debug, LogLevel.INFO, `Drag ended for column: ${target?.dataset.colId}`); \n // Remove dragging and drag-over classes\n this.#renderer.tableHeader?.querySelectorAll('th').forEach((th) => {\n th.classList.remove(config.classes.dragging);\n th.classList.remove(config.classes.dragOver);\n });\n };\n\n // Handles delegated click events\n #handleDelegatedClick = (event: MouseEvent): void => {\n const target = event.target as HTMLElement;\n\n // Handle sort link clicks\n const sortLink = target.closest<HTMLAnchorElement>('th a[role=\"button\"]');\n if (sortLink) {\n event.preventDefault();\n const th = sortLink.closest('th');\n if (th?.dataset.colId) {\n this.#handleSortClick(th.dataset.colId);\n }\n return;\n }\n\n // Handle pagination button clicks\n const pageButton = target.closest<HTMLButtonElement>('.snap-pagination-container button');\n if (pageButton) {\n event.preventDefault();\n if (pageButton.disabled) return;\n\n const pageNumText = pageButton.textContent?.trim();\n const pageNum = pageNumText ? parseInt(pageNumText, 10) : NaN;\n\n log(this.#parent.debug, LogLevel.INFO, 'Pagination button clicked.', { text: pageNumText }); \n\n if (pageButton.classList.contains(config.pagination.prevButton.classNames.base)) {\n this.#parent.gotoPage(this.#parent.state.currentPage - 1);\n } else if (\n pageButton.classList.contains(config.pagination.nextButton.classNames.base)\n ) {\n this.#parent.gotoPage(this.#parent.state.currentPage + 1);\n } else if (!isNaN(pageNum)) {\n this.#parent.gotoPage(pageNum);\n }\n return;\n }\n\n // Handle row selection clicks\n const selectableRow = target.closest<HTMLElement>('[data-index]');\n if (this.#parent.selectable && selectableRow?.dataset.index) {\n const index = parseInt(selectableRow.dataset.index, 10);\n if (!isNaN(index)) {\n this.#toggleRowSelection(index);\n selectableRow.focus();\n }\n return;\n }\n };\n\n // Handles column drop events\n #handleDrop = (event: DragEvent): void => {\n event.preventDefault();\n const target = (event.target as HTMLElement).closest('th');\n const sourceColId = event.dataTransfer?.getData('text/plain');\n const targetColId = target?.dataset.colId;\n if (sourceColId && targetColId && sourceColId !== targetColId) {\n log(this.#parent.debug, LogLevel.INFO, `Column drop: \"${sourceColId}\" onto \"${targetColId}\"`); \n // Reorder columns\n this.#callbacks.reorderColumns(sourceColId, targetColId);\n }\n // Remove drag-over class\n target?.classList.remove(config.classes.dragOver);\n };\n}\n\n/*========================================================================================================\n EVENT MANAGER OBJECT ENDS HERE\n==========================================================================================================*/","(function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).Dexie=t()})(this,function(){\"use strict\";var s=function(e,t){return(s=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)};var _=function(){return(_=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)};function i(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||((r=r||Array.prototype.slice.call(t,0,i))[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))}var f=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:global,x=Object.keys,k=Array.isArray;function a(t,n){return\"object\"!=typeof n||x(n).forEach(function(e){t[e]=n[e]}),t}\"undefined\"==typeof Promise||f.Promise||(f.Promise=Promise);var c=Object.getPrototypeOf,n={}.hasOwnProperty;function m(e,t){return n.call(e,t)}function r(t,n){\"function\"==typeof n&&(n=n(c(t))),(\"undefined\"==typeof Reflect?x:Reflect.ownKeys)(n).forEach(function(e){l(t,e,n[e])})}var u=Object.defineProperty;function l(e,t,n,r){u(e,t,a(n&&m(n,\"get\")&&\"function\"==typeof n.get?{get:n.get,set:n.set,configurable:!0}:{value:n,configurable:!0,writable:!0},r))}function o(t){return{from:function(e){return t.prototype=Object.create(e.prototype),l(t.prototype,\"constructor\",t),{extend:r.bind(null,t.prototype)}}}}var h=Object.getOwnPropertyDescriptor;var d=[].slice;function b(e,t,n){return d.call(e,t,n)}function p(e,t){return t(e)}function y(e){if(!e)throw new Error(\"Assertion Failed\")}function v(e){f.setImmediate?setImmediate(e):setTimeout(e,0)}function O(e,t){if(\"string\"==typeof t&&m(e,t))return e[t];if(!t)return e;if(\"string\"!=typeof t){for(var n=[],r=0,i=t.length;r<i;++r){var o=O(e,t[r]);n.push(o)}return n}var a=t.indexOf(\".\");if(-1!==a){var u=e[t.substr(0,a)];return null==u?void 0:O(u,t.substr(a+1))}}function P(e,t,n){if(e&&void 0!==t&&!(\"isFrozen\"in Object&&Object.isFrozen(e)))if(\"string\"!=typeof t&&\"length\"in t){y(\"string\"!=typeof n&&\"length\"in n);for(var r=0,i=t.length;r<i;++r)P(e,t[r],n[r])}else{var o,a,u=t.indexOf(\".\");-1!==u?(o=t.substr(0,u),\"\"===(a=t.substr(u+1))?void 0===n?k(e)&&!isNaN(parseInt(o))?e.splice(o,1):delete e[o]:e[o]=n:P(u=!(u=e[o])||!m(e,o)?e[o]={}:u,a,n)):void 0===n?k(e)&&!isNaN(parseInt(t))?e.splice(t,1):delete e[t]:e[t]=n}}function g(e){var t,n={};for(t in e)m(e,t)&&(n[t]=e[t]);return n}var t=[].concat;function w(e){return t.apply([],e)}var e=\"BigUint64Array,BigInt64Array,Array,Boolean,String,Date,RegExp,Blob,File,FileList,FileSystemFileHandle,FileSystemDirectoryHandle,ArrayBuffer,DataView,Uint8ClampedArray,ImageBitmap,ImageData,Map,Set,CryptoKey\".split(\",\").concat(w([8,16,32,64].map(function(t){return[\"Int\",\"Uint\",\"Float\"].map(function(e){return e+t+\"Array\"})}))).filter(function(e){return f[e]}),K=new Set(e.map(function(e){return f[e]}));var E=null;function S(e){E=new WeakMap;e=function e(t){if(!t||\"object\"!=typeof t)return t;var n=E.get(t);if(n)return n;if(k(t)){n=[],E.set(t,n);for(var r=0,i=t.length;r<i;++r)n.push(e(t[r]))}else if(K.has(t.constructor))n=t;else{var o,a=c(t);for(o in n=a===Object.prototype?{}:Object.create(a),E.set(t,n),t)m(t,o)&&(n[o]=e(t[o]))}return n}(e);return E=null,e}var j={}.toString;function A(e){return j.call(e).slice(8,-1)}var C=\"undefined\"!=typeof Symbol?Symbol.iterator:\"@@iterator\",T=\"symbol\"==typeof C?function(e){var t;return null!=e&&(t=e[C])&&t.apply(e)}:function(){return null};function q(e,t){t=e.indexOf(t);return 0<=t&&e.splice(t,1),0<=t}var D={};function I(e){var t,n,r,i;if(1===arguments.length){if(k(e))return e.slice();if(this===D&&\"string\"==typeof e)return[e];if(i=T(e)){for(n=[];!(r=i.next()).done;)n.push(r.value);return n}if(null==e)return[e];if(\"number\"!=typeof(t=e.length))return[e];for(n=new Array(t);t--;)n[t]=e[t];return n}for(t=arguments.length,n=new Array(t);t--;)n[t]=arguments[t];return n}var B=\"undefined\"!=typeof Symbol?function(e){return\"AsyncFunction\"===e[Symbol.toStringTag]}:function(){return!1},R=[\"Unknown\",\"Constraint\",\"Data\",\"TransactionInactive\",\"ReadOnly\",\"Version\",\"NotFound\",\"InvalidState\",\"InvalidAccess\",\"Abort\",\"Timeout\",\"QuotaExceeded\",\"Syntax\",\"DataClone\"],F=[\"Modify\",\"Bulk\",\"OpenFailed\",\"VersionChange\",\"Schema\",\"Upgrade\",\"InvalidTable\",\"MissingAPI\",\"NoSuchDatabase\",\"InvalidArgument\",\"SubTransaction\",\"Unsupported\",\"Internal\",\"DatabaseClosed\",\"PrematureCommit\",\"ForeignAwait\"].concat(R),M={VersionChanged:\"Database version changed by other database connection\",DatabaseClosed:\"Database has been closed\",Abort:\"Transaction aborted\",TransactionInactive:\"Transaction has already completed or failed\",MissingAPI:\"IndexedDB API missing. Please visit https://tinyurl.com/y2uuvskb\"};function N(e,t){this.name=e,this.message=t}function L(e,t){return e+\". Errors: \"+Object.keys(t).map(function(e){return t[e].toString()}).filter(function(e,t,n){return n.indexOf(e)===t}).join(\"\\n\")}function U(e,t,n,r){this.failures=t,this.failedKeys=r,this.successCount=n,this.message=L(e,t)}function V(e,t){this.name=\"BulkError\",this.failures=Object.keys(t).map(function(e){return t[e]}),this.failuresByPos=t,this.message=L(e,this.failures)}o(N).from(Error).extend({toString:function(){return this.name+\": \"+this.message}}),o(U).from(N),o(V).from(N);var z=F.reduce(function(e,t){return e[t]=t+\"Error\",e},{}),W=N,Y=F.reduce(function(e,n){var r=n+\"Error\";function t(e,t){this.name=r,e?\"string\"==typeof e?(this.message=\"\".concat(e).concat(t?\"\\n \"+t:\"\"),this.inner=t||null):\"object\"==typeof e&&(this.message=\"\".concat(e.name,\" \").concat(e.message),this.inner=e):(this.message=M[n]||r,this.inner=null)}return o(t).from(W),e[n]=t,e},{});Y.Syntax=SyntaxError,Y.Type=TypeError,Y.Range=RangeError;var $=R.reduce(function(e,t){return e[t+\"Error\"]=Y[t],e},{});var Q=F.reduce(function(e,t){return-1===[\"Syntax\",\"Type\",\"Range\"].indexOf(t)&&(e[t+\"Error\"]=Y[t]),e},{});function G(){}function X(e){return e}function H(t,n){return null==t||t===X?n:function(e){return n(t(e))}}function J(e,t){return function(){e.apply(this,arguments),t.apply(this,arguments)}}function Z(i,o){return i===G?o:function(){var e=i.apply(this,arguments);void 0!==e&&(arguments[0]=e);var t=this.onsuccess,n=this.onerror;this.onsuccess=null,this.onerror=null;var r=o.apply(this,arguments);return t&&(this.onsuccess=this.onsuccess?J(t,this.onsuccess):t),n&&(this.onerror=this.onerror?J(n,this.onerror):n),void 0!==r?r:e}}function ee(n,r){return n===G?r:function(){n.apply(this,arguments);var e=this.onsuccess,t=this.onerror;this.onsuccess=this.onerror=null,r.apply(this,arguments),e&&(this.onsuccess=this.onsuccess?J(e,this.onsuccess):e),t&&(this.onerror=this.onerror?J(t,this.onerror):t)}}function te(i,o){return i===G?o:function(e){var t=i.apply(this,arguments);a(e,t);var n=this.onsuccess,r=this.onerror;this.onsuccess=null,this.onerror=null;e=o.apply(this,arguments);return n&&(this.onsuccess=this.onsuccess?J(n,this.onsuccess):n),r&&(this.onerror=this.onerror?J(r,this.onerror):r),void 0===t?void 0===e?void 0:e:a(t,e)}}function ne(e,t){return e===G?t:function(){return!1!==t.apply(this,arguments)&&e.apply(this,arguments)}}function re(i,o){return i===G?o:function(){var e=i.apply(this,arguments);if(e&&\"function\"==typeof e.then){for(var t=this,n=arguments.length,r=new Array(n);n--;)r[n]=arguments[n];return e.then(function(){return o.apply(t,r)})}return o.apply(this,arguments)}}Q.ModifyError=U,Q.DexieError=N,Q.BulkError=V;var ie=\"undefined\"!=typeof location&&/^(http|https):\\/\\/(localhost|127\\.0\\.0\\.1)/.test(location.href);function oe(e){ie=e}var ae={},ue=100,e=\"undefined\"==typeof Promise?[]:function(){var e=Promise.resolve();if(\"undefined\"==typeof crypto||!crypto.subtle)return[e,c(e),e];var t=crypto.subtle.digest(\"SHA-512\",new Uint8Array([0]));return[t,c(t),e]}(),R=e[0],F=e[1],e=e[2],F=F&&F.then,se=R&&R.constructor,ce=!!e;var le=function(e,t){be.push([e,t]),he&&(queueMicrotask(Se),he=!1)},fe=!0,he=!0,de=[],pe=[],ye=X,ve={id:\"global\",global:!0,ref:0,unhandleds:[],onunhandled:G,pgp:!1,env:{},finalize:G},me=ve,be=[],ge=0,we=[];function _e(e){if(\"object\"!=typeof this)throw new TypeError(\"Promises must be constructed via new\");this._listeners=[],this._lib=!1;var t=this._PSD=me;if(\"function\"!=typeof e){if(e!==ae)throw new TypeError(\"Not a function\");return this._state=arguments[1],this._value=arguments[2],void(!1===this._state&&Oe(this,this._value))}this._state=null,this._value=null,++t.ref,function t(r,e){try{e(function(n){if(null===r._state){if(n===r)throw new TypeError(\"A promise cannot be resolved with itself.\");var e=r._lib&&je();n&&\"function\"==typeof n.then?t(r,function(e,t){n instanceof _e?n._then(e,t):n.then(e,t)}):(r._state=!0,r._value=n,Pe(r)),e&&Ae()}},Oe.bind(null,r))}catch(e){Oe(r,e)}}(this,e)}var xe={get:function(){var u=me,t=Fe;function e(n,r){var i=this,o=!u.global&&(u!==me||t!==Fe),a=o&&!Ue(),e=new _e(function(e,t){Ke(i,new ke(Qe(n,u,o,a),Qe(r,u,o,a),e,t,u))});return this._consoleTask&&(e._consoleTask=this._consoleTask),e}return e.prototype=ae,e},set:function(e){l(this,\"then\",e&&e.prototype===ae?xe:{get:function(){return e},set:xe.set})}};function ke(e,t,n,r,i){this.onFulfilled=\"function\"==typeof e?e:null,this.onRejected=\"function\"==typeof t?t:null,this.resolve=n,this.reject=r,this.psd=i}function Oe(e,t){var n,r;pe.push(t),null===e._state&&(n=e._lib&&je(),t=ye(t),e._state=!1,e._value=t,r=e,de.some(function(e){return e._value===r._value})||de.push(r),Pe(e),n&&Ae())}function Pe(e){var t=e._listeners;e._listeners=[];for(var n=0,r=t.length;n<r;++n)Ke(e,t[n]);var i=e._PSD;--i.ref||i.finalize(),0===ge&&(++ge,le(function(){0==--ge&&Ce()},[]))}function Ke(e,t){if(null!==e._state){var n=e._state?t.onFulfilled:t.onRejected;if(null===n)return(e._state?t.resolve:t.reject)(e._value);++t.psd.ref,++ge,le(Ee,[n,e,t])}else e._listeners.push(t)}function Ee(e,t,n){try{var r,i=t._value;!t._state&&pe.length&&(pe=[]),r=ie&&t._consoleTask?t._consoleTask.run(function(){return e(i)}):e(i),t._state||-1!==pe.indexOf(i)||function(e){var t=de.length;for(;t;)if(de[--t]._value===e._value)return de.splice(t,1)}(t),n.resolve(r)}catch(e){n.reject(e)}finally{0==--ge&&Ce(),--n.psd.ref||n.psd.finalize()}}function Se(){$e(ve,function(){je()&&Ae()})}function je(){var e=fe;return he=fe=!1,e}function Ae(){var e,t,n;do{for(;0<be.length;)for(e=be,be=[],n=e.length,t=0;t<n;++t){var r=e[t];r[0].apply(null,r[1])}}while(0<be.length);he=fe=!0}function Ce(){var e=de;de=[],e.forEach(function(e){e._PSD.onunhandled.call(null,e._value,e)});for(var t=we.slice(0),n=t.length;n;)t[--n]()}function Te(e){return new _e(ae,!1,e)}function qe(n,r){var i=me;return function(){var e=je(),t=me;try{return We(i,!0),n.apply(this,arguments)}catch(e){r&&r(e)}finally{We(t,!1),e&&Ae()}}}r(_e.prototype,{then:xe,_then:function(e,t){Ke(this,new ke(null,null,e,t,me))},catch:function(e){if(1===arguments.length)return this.then(null,e);var t=e,n=arguments[1];return\"function\"==typeof t?this.then(null,function(e){return(e instanceof t?n:Te)(e)}):this.then(null,function(e){return(e&&e.name===t?n:Te)(e)})},finally:function(t){return this.then(function(e){return _e.resolve(t()).then(function(){return e})},function(e){return _e.resolve(t()).then(function(){return Te(e)})})},timeout:function(r,i){var o=this;return r<1/0?new _e(function(e,t){var n=setTimeout(function(){return t(new Y.Timeout(i))},r);o.then(e,t).finally(clearTimeout.bind(null,n))}):this}}),\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&l(_e.prototype,Symbol.toStringTag,\"Dexie.Promise\"),ve.env=Ye(),r(_e,{all:function(){var o=I.apply(null,arguments).map(Ve);return new _e(function(n,r){0===o.length&&n([]);var i=o.length;o.forEach(function(e,t){return _e.resolve(e).then(function(e){o[t]=e,--i||n(o)},r)})})},resolve:function(n){return n instanceof _e?n:n&&\"function\"==typeof n.then?new _e(function(e,t){n.then(e,t)}):new _e(ae,!0,n)},reject:Te,race:function(){var e=I.apply(null,arguments).map(Ve);return new _e(function(t,n){e.map(function(e){return _e.resolve(e).then(t,n)})})},PSD:{get:function(){return me},set:function(e){return me=e}},totalEchoes:{get:function(){return Fe}},newPSD:Ne,usePSD:$e,scheduler:{get:function(){return le},set:function(e){le=e}},rejectionMapper:{get:function(){return ye},set:function(e){ye=e}},follow:function(i,n){return new _e(function(e,t){return Ne(function(n,r){var e=me;e.unhandleds=[],e.onunhandled=r,e.finalize=J(function(){var t,e=this;t=function(){0===e.unhandleds.length?n():r(e.unhandleds[0])},we.push(function e(){t(),we.splice(we.indexOf(e),1)}),++ge,le(function(){0==--ge&&Ce()},[])},e.finalize),i()},n,e,t)})}}),se&&(se.allSettled&&l(_e,\"allSettled\",function(){var e=I.apply(null,arguments).map(Ve);return new _e(function(n){0===e.length&&n([]);var r=e.length,i=new Array(r);e.forEach(function(e,t){return _e.resolve(e).then(function(e){return i[t]={status:\"fulfilled\",value:e}},function(e){return i[t]={status:\"rejected\",reason:e}}).then(function(){return--r||n(i)})})})}),se.any&&\"undefined\"!=typeof AggregateError&&l(_e,\"any\",function(){var e=I.apply(null,arguments).map(Ve);return new _e(function(n,r){0===e.length&&r(new AggregateError([]));var i=e.length,o=new Array(i);e.forEach(function(e,t){return _e.resolve(e).then(function(e){return n(e)},function(e){o[t]=e,--i||r(new AggregateError(o))})})})}),se.withResolvers&&(_e.withResolvers=se.withResolvers));var De={awaits:0,echoes:0,id:0},Ie=0,Be=[],Re=0,Fe=0,Me=0;function Ne(e,t,n,r){var i=me,o=Object.create(i);o.parent=i,o.ref=0,o.global=!1,o.id=++Me,ve.env,o.env=ce?{Promise:_e,PromiseProp:{value:_e,configurable:!0,writable:!0},all:_e.all,race:_e.race,allSettled:_e.allSettled,any:_e.any,resolve:_e.resolve,reject:_e.reject}:{},t&&a(o,t),++i.ref,o.finalize=function(){--this.parent.ref||this.parent.finalize()};r=$e(o,e,n,r);return 0===o.ref&&o.finalize(),r}function Le(){return De.id||(De.id=++Ie),++De.awaits,De.echoes+=ue,De.id}function Ue(){return!!De.awaits&&(0==--De.awaits&&(De.id=0),De.echoes=De.awaits*ue,!0)}function Ve(e){return De.echoes&&e&&e.constructor===se?(Le(),e.then(function(e){return Ue(),e},function(e){return Ue(),Xe(e)})):e}function ze(){var e=Be[Be.length-1];Be.pop(),We(e,!1)}function We(e,t){var n,r=me;(t?!De.echoes||Re++&&e===me:!Re||--Re&&e===me)||queueMicrotask(t?function(e){++Fe,De.echoes&&0!=--De.echoes||(De.echoes=De.awaits=De.id=0),Be.push(me),We(e,!0)}.bind(null,e):ze),e!==me&&(me=e,r===ve&&(ve.env=Ye()),ce&&(n=ve.env.Promise,t=e.env,(r.global||e.global)&&(Object.defineProperty(f,\"Promise\",t.PromiseProp),n.all=t.all,n.race=t.race,n.resolve=t.resolve,n.reject=t.reject,t.allSettled&&(n.allSettled=t.allSettled),t.any&&(n.any=t.any))))}function Ye(){var e=f.Promise;return ce?{Promise:e,PromiseProp:Object.getOwnPropertyDescriptor(f,\"Promise\"),all:e.all,race:e.race,allSettled:e.allSettled,any:e.any,resolve:e.resolve,reject:e.reject}:{}}function $e(e,t,n,r,i){var o=me;try{return We(e,!0),t(n,r,i)}finally{We(o,!1)}}function Qe(t,n,r,i){return\"function\"!=typeof t?t:function(){var e=me;r&&Le(),We(n,!0);try{return t.apply(this,arguments)}finally{We(e,!1),i&&queueMicrotask(Ue)}}}function Ge(e){Promise===se&&0===De.echoes?0===Re?e():enqueueNativeMicroTask(e):setTimeout(e,0)}-1===(\"\"+F).indexOf(\"[native code]\")&&(Le=Ue=G);var Xe=_e.reject;var He=String.fromCharCode(65535),Je=\"Invalid key provided. Keys must be of type string, number, Date or Array<string | number | Date>.\",Ze=\"String expected.\",et=[],tt=\"__dbnames\",nt=\"readonly\",rt=\"readwrite\";function it(e,t){return e?t?function(){return e.apply(this,arguments)&&t.apply(this,arguments)}:e:t}var ot={type:3,lower:-1/0,lowerOpen:!1,upper:[[]],upperOpen:!1};function at(t){return\"string\"!=typeof t||/\\./.test(t)?function(e){return e}:function(e){return void 0===e[t]&&t in e&&delete(e=S(e))[t],e}}function ut(){throw Y.Type()}function st(e,t){try{var n=ct(e),r=ct(t);if(n!==r)return\"Array\"===n?1:\"Array\"===r?-1:\"binary\"===n?1:\"binary\"===r?-1:\"string\"===n?1:\"string\"===r?-1:\"Date\"===n?1:\"Date\"!==r?NaN:-1;switch(n){case\"number\":case\"Date\":case\"string\":return t<e?1:e<t?-1:0;case\"binary\":return function(e,t){for(var n=e.length,r=t.length,i=n<r?n:r,o=0;o<i;++o)if(e[o]!==t[o])return e[o]<t[o]?-1:1;return n===r?0:n<r?-1:1}(lt(e),lt(t));case\"Array\":return function(e,t){for(var n=e.length,r=t.length,i=n<r?n:r,o=0;o<i;++o){var a=st(e[o],t[o]);if(0!==a)return a}return n===r?0:n<r?-1:1}(e,t)}}catch(e){}return NaN}function ct(e){var t=typeof e;if(\"object\"!=t)return t;if(ArrayBuffer.isView(e))return\"binary\";e=A(e);return\"ArrayBuffer\"===e?\"binary\":e}function lt(e){return e instanceof Uint8Array?e:ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e)}var ft=(ht.prototype._trans=function(e,r,t){var n=this._tx||me.trans,i=this.name,o=ie&&\"undefined\"!=typeof console&&console.createTask&&console.createTask(\"Dexie: \".concat(\"readonly\"===e?\"read\":\"write\",\" \").concat(this.name));function a(e,t,n){if(!n.schema[i])throw new Y.NotFound(\"Table \"+i+\" not part of transaction\");return r(n.idbtrans,n)}var u=je();try{var s=n&&n.db._novip===this.db._novip?n===me.trans?n._promise(e,a,t):Ne(function(){return n._promise(e,a,t)},{trans:n,transless:me.transless||me}):function t(n,r,i,o){if(n.idbdb&&(n._state.openComplete||me.letThrough||n._vip)){var a=n._createTransaction(r,i,n._dbSchema);try{a.create(),n._state.PR1398_maxLoop=3}catch(e){return e.name===z.InvalidState&&n.isOpen()&&0<--n._state.PR1398_maxLoop?(console.warn(\"Dexie: Need to reopen db\"),n.close({disableAutoOpen:!1}),n.open().then(function(){return t(n,r,i,o)})):Xe(e)}return a._promise(r,function(e,t){return Ne(function(){return me.trans=a,o(e,t,a)})}).then(function(e){if(\"readwrite\"===r)try{a.idbtrans.commit()}catch(e){}return\"readonly\"===r?e:a._completion.then(function(){return e})})}if(n._state.openComplete)return Xe(new Y.DatabaseClosed(n._state.dbOpenError));if(!n._state.isBeingOpened){if(!n._state.autoOpen)return Xe(new Y.DatabaseClosed);n.open().catch(G)}return n._state.dbReadyPromise.then(function(){return t(n,r,i,o)})}(this.db,e,[this.name],a);return o&&(s._consoleTask=o,s=s.catch(function(e){return console.trace(e),Xe(e)})),s}finally{u&&Ae()}},ht.prototype.get=function(t,e){var n=this;return t&&t.constructor===Object?this.where(t).first(e):null==t?Xe(new Y.Type(\"Invalid argument to Table.get()\")):this._trans(\"readonly\",function(e){return n.core.get({trans:e,key:t}).then(function(e){return n.hook.reading.fire(e)})}).then(e)},ht.prototype.where=function(o){if(\"string\"==typeof o)return new this.db.WhereClause(this,o);if(k(o))return new this.db.WhereClause(this,\"[\".concat(o.join(\"+\"),\"]\"));var n=x(o);if(1===n.length)return this.where(n[0]).equals(o[n[0]]);var e=this.schema.indexes.concat(this.schema.primKey).filter(function(t){if(t.compound&&n.every(function(e){return 0<=t.keyPath.indexOf(e)})){for(var e=0;e<n.length;++e)if(-1===n.indexOf(t.keyPath[e]))return!1;return!0}return!1}).sort(function(e,t){return e.keyPath.length-t.keyPath.length})[0];if(e&&this.db._maxKey!==He){var t=e.keyPath.slice(0,n.length);return this.where(t).equals(t.map(function(e){return o[e]}))}!e&&ie&&console.warn(\"The query \".concat(JSON.stringify(o),\" on \").concat(this.name,\" would benefit from a \")+\"compound index [\".concat(n.join(\"+\"),\"]\"));var a=this.schema.idxByName;function u(e,t){return 0===st(e,t)}var r=n.reduce(function(e,t){var n=e[0],r=e[1],e=a[t],i=o[t];return[n||e,n||!e?it(r,e&&e.multi?function(e){e=O(e,t);return k(e)&&e.some(function(e){return u(i,e)})}:function(e){return u(i,O(e,t))}):r]},[null,null]),t=r[0],r=r[1];return t?this.where(t.name).equals(o[t.keyPath]).filter(r):e?this.filter(r):this.where(n).equals(\"\")},ht.prototype.filter=function(e){return this.toCollection().and(e)},ht.prototype.count=function(e){return this.toCollection().count(e)},ht.prototype.offset=function(e){return this.toCollection().offset(e)},ht.prototype.limit=function(e){return this.toCollection().limit(e)},ht.prototype.each=function(e){return this.toCollection().each(e)},ht.prototype.toArray=function(e){return this.toCollection().toArray(e)},ht.prototype.toCollection=function(){return new this.db.Collection(new this.db.WhereClause(this))},ht.prototype.orderBy=function(e){return new this.db.Collection(new this.db.WhereClause(this,k(e)?\"[\".concat(e.join(\"+\"),\"]\"):e))},ht.prototype.reverse=function(){return this.toCollection().reverse()},ht.prototype.mapToClass=function(r){var e,t=this.db,n=this.name;function i(){return null!==e&&e.apply(this,arguments)||this}(this.schema.mappedClass=r).prototype instanceof ut&&(function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");function n(){this.constructor=e}s(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}(i,e=r),Object.defineProperty(i.prototype,\"db\",{get:function(){return t},enumerable:!1,configurable:!0}),i.prototype.table=function(){return n},r=i);for(var o=new Set,a=r.prototype;a;a=c(a))Object.getOwnPropertyNames(a).forEach(function(e){return o.add(e)});function u(e){if(!e)return e;var t,n=Object.create(r.prototype);for(t in e)if(!o.has(t))try{n[t]=e[t]}catch(e){}return n}return this.schema.readHook&&this.hook.reading.unsubscribe(this.schema.readHook),this.schema.readHook=u,this.hook(\"reading\",u),r},ht.prototype.defineClass=function(){return this.mapToClass(function(e){a(this,e)})},ht.prototype.add=function(t,n){var r=this,e=this.schema.primKey,i=e.auto,o=e.keyPath,a=t;return o&&i&&(a=at(o)(t)),this._trans(\"readwrite\",function(e){return r.core.mutate({trans:e,type:\"add\",keys:null!=n?[n]:null,values:[a]})}).then(function(e){return e.numFailures?_e.reject(e.failures[0]):e.lastResult}).then(function(e){if(o)try{P(t,o,e)}catch(e){}return e})},ht.prototype.update=function(e,t){if(\"object\"!=typeof e||k(e))return this.where(\":id\").equals(e).modify(t);e=O(e,this.schema.primKey.keyPath);return void 0===e?Xe(new Y.InvalidArgument(\"Given object does not contain its primary key\")):this.where(\":id\").equals(e).modify(t)},ht.prototype.put=function(t,n){var r=this,e=this.schema.primKey,i=e.auto,o=e.keyPath,a=t;return o&&i&&(a=at(o)(t)),this._trans(\"readwrite\",function(e){return r.core.mutate({trans:e,type:\"put\",values:[a],keys:null!=n?[n]:null})}).then(function(e){return e.numFailures?_e.reject(e.failures[0]):e.lastResult}).then(function(e){if(o)try{P(t,o,e)}catch(e){}return e})},ht.prototype.delete=function(t){var n=this;return this._trans(\"readwrite\",function(e){return n.core.mutate({trans:e,type:\"delete\",keys:[t]})}).then(function(e){return e.numFailures?_e.reject(e.failures[0]):void 0})},ht.prototype.clear=function(){var t=this;return this._trans(\"readwrite\",function(e){return t.core.mutate({trans:e,type:\"deleteRange\",range:ot})}).then(function(e){return e.numFailures?_e.reject(e.failures[0]):void 0})},ht.prototype.bulkGet=function(t){var n=this;return this._trans(\"readonly\",function(e){return n.core.getMany({keys:t,trans:e}).then(function(e){return e.map(function(e){return n.hook.reading.fire(e)})})})},ht.prototype.bulkAdd=function(r,e,t){var o=this,a=Array.isArray(e)?e:void 0,u=(t=t||(a?void 0:e))?t.allKeys:void 0;return this._trans(\"readwrite\",function(e){var t=o.schema.primKey,n=t.auto,t=t.keyPath;if(t&&a)throw new Y.InvalidArgument(\"bulkAdd(): keys argument invalid on tables with inbound keys\");if(a&&a.length!==r.length)throw new Y.InvalidArgument(\"Arguments objects and keys must have the same length\");var i=r.length,t=t&&n?r.map(at(t)):r;return o.core.mutate({trans:e,type:\"add\",keys:a,values:t,wantResults:u}).then(function(e){var t=e.numFailures,n=e.results,r=e.lastResult,e=e.failures;if(0===t)return u?n:r;throw new V(\"\".concat(o.name,\".bulkAdd(): \").concat(t,\" of \").concat(i,\" operations failed\"),e)})})},ht.prototype.bulkPut=function(r,e,t){var o=this,a=Array.isArray(e)?e:void 0,u=(t=t||(a?void 0:e))?t.allKeys:void 0;return this._trans(\"readwrite\",function(e){var t=o.schema.primKey,n=t.auto,t=t.keyPath;if(t&&a)throw new Y.InvalidArgument(\"bulkPut(): keys argument invalid on tables with inbound keys\");if(a&&a.length!==r.length)throw new Y.InvalidArgument(\"Arguments objects and keys must have the same length\");var i=r.length,t=t&&n?r.map(at(t)):r;return o.core.mutate({trans:e,type:\"put\",keys:a,values:t,wantResults:u}).then(function(e){var t=e.numFailures,n=e.results,r=e.lastResult,e=e.failures;if(0===t)return u?n:r;throw new V(\"\".concat(o.name,\".bulkPut(): \").concat(t,\" of \").concat(i,\" operations failed\"),e)})})},ht.prototype.bulkUpdate=function(t){var h=this,n=this.core,r=t.map(function(e){return e.key}),i=t.map(function(e){return e.changes}),d=[];return this._trans(\"readwrite\",function(e){return n.getMany({trans:e,keys:r,cache:\"clone\"}).then(function(c){var l=[],f=[];t.forEach(function(e,t){var n=e.key,r=e.changes,i=c[t];if(i){for(var o=0,a=Object.keys(r);o<a.length;o++){var u=a[o],s=r[u];if(u===h.schema.primKey.keyPath){if(0!==st(s,n))throw new Y.Constraint(\"Cannot update primary key in bulkUpdate()\")}else P(i,u,s)}d.push(t),l.push(n),f.push(i)}});var s=l.length;return n.mutate({trans:e,type:\"put\",keys:l,values:f,updates:{keys:r,changeSpecs:i}}).then(function(e){var t=e.numFailures,n=e.failures;if(0===t)return s;for(var r=0,i=Object.keys(n);r<i.length;r++){var o,a=i[r],u=d[Number(a)];null!=u&&(o=n[a],delete n[a],n[u]=o)}throw new V(\"\".concat(h.name,\".bulkUpdate(): \").concat(t,\" of \").concat(s,\" operations failed\"),n)})})})},ht.prototype.bulkDelete=function(t){var r=this,i=t.length;return this._trans(\"readwrite\",function(e){return r.core.mutate({trans:e,type:\"delete\",keys:t})}).then(function(e){var t=e.numFailures,n=e.lastResult,e=e.failures;if(0===t)return n;throw new V(\"\".concat(r.name,\".bulkDelete(): \").concat(t,\" of \").concat(i,\" operations failed\"),e)})},ht);function ht(){}function dt(i){function t(e,t){if(t){for(var n=arguments.length,r=new Array(n-1);--n;)r[n-1]=arguments[n];return a[e].subscribe.apply(null,r),i}if(\"string\"==typeof e)return a[e]}var a={};t.addEventType=u;for(var e=1,n=arguments.length;e<n;++e)u(arguments[e]);return t;function u(e,n,r){if(\"object\"!=typeof e){var i;n=n||ne;var o={subscribers:[],fire:r=r||G,subscribe:function(e){-1===o.subscribers.indexOf(e)&&(o.subscribers.push(e),o.fire=n(o.fire,e))},unsubscribe:function(t){o.subscribers=o.subscribers.filter(function(e){return e!==t}),o.fire=o.subscribers.reduce(n,r)}};return a[e]=t[e]=o}x(i=e).forEach(function(e){var t=i[e];if(k(t))u(e,i[e][0],i[e][1]);else{if(\"asap\"!==t)throw new Y.InvalidArgument(\"Invalid event config\");var n=u(e,X,function(){for(var e=arguments.length,t=new Array(e);e--;)t[e]=arguments[e];n.subscribers.forEach(function(e){v(function(){e.apply(null,t)})})})}})}}function pt(e,t){return o(t).from({prototype:e}),t}function yt(e,t){return!(e.filter||e.algorithm||e.or)&&(t?e.justLimit:!e.replayFilter)}function vt(e,t){e.filter=it(e.filter,t)}function mt(e,t,n){var r=e.replayFilter;e.replayFilter=r?function(){return it(r(),t())}:t,e.justLimit=n&&!r}function bt(e,t){if(e.isPrimKey)return t.primaryKey;var n=t.getIndexByKeyPath(e.index);if(!n)throw new Y.Schema(\"KeyPath \"+e.index+\" on object store \"+t.name+\" is not indexed\");return n}function gt(e,t,n){var r=bt(e,t.schema);return t.openCursor({trans:n,values:!e.keysOnly,reverse:\"prev\"===e.dir,unique:!!e.unique,query:{index:r,range:e.range}})}function wt(e,o,t,n){var a=e.replayFilter?it(e.filter,e.replayFilter()):e.filter;if(e.or){var u={},r=function(e,t,n){var r,i;a&&!a(t,n,function(e){return t.stop(e)},function(e){return t.fail(e)})||(\"[object ArrayBuffer]\"===(i=\"\"+(r=t.primaryKey))&&(i=\"\"+new Uint8Array(r)),m(u,i)||(u[i]=!0,o(e,t,n)))};return Promise.all([e.or._iterate(r,t),_t(gt(e,n,t),e.algorithm,r,!e.keysOnly&&e.valueMapper)])}return _t(gt(e,n,t),it(e.algorithm,a),o,!e.keysOnly&&e.valueMapper)}function _t(e,r,i,o){var a=qe(o?function(e,t,n){return i(o(e),t,n)}:i);return e.then(function(n){if(n)return n.start(function(){var t=function(){return n.continue()};r&&!r(n,function(e){return t=e},function(e){n.stop(e),t=G},function(e){n.fail(e),t=G})||a(n.value,n,function(e){return t=e}),t()})})}var xt=(kt.prototype.execute=function(e){var t=this[\"@@propmod\"];if(void 0!==t.add){var n=t.add;if(k(n))return i(i([],k(e)?e:[],!0),n,!0).sort();if(\"number\"==typeof n)return(Number(e)||0)+n;if(\"bigint\"==typeof n)try{return BigInt(e)+n}catch(e){return BigInt(0)+n}throw new TypeError(\"Invalid term \".concat(n))}if(void 0!==t.remove){var r=t.remove;if(k(r))return k(e)?e.filter(function(e){return!r.includes(e)}).sort():[];if(\"number\"==typeof r)return Number(e)-r;if(\"bigint\"==typeof r)try{return BigInt(e)-r}catch(e){return BigInt(0)-r}throw new TypeError(\"Invalid subtrahend \".concat(r))}n=null===(n=t.replacePrefix)||void 0===n?void 0:n[0];return n&&\"string\"==typeof e&&e.startsWith(n)?t.replacePrefix[1]+e.substring(n.length):e},kt);function kt(e){this[\"@@propmod\"]=e}var Ot=(Pt.prototype._read=function(e,t){var n=this._ctx;return n.error?n.table._trans(null,Xe.bind(null,n.error)):n.table._trans(\"readonly\",e).then(t)},Pt.prototype._write=function(e){var t=this._ctx;return t.error?t.table._trans(null,Xe.bind(null,t.error)):t.table._trans(\"readwrite\",e,\"locked\")},Pt.prototype._addAlgorithm=function(e){var t=this._ctx;t.algorithm=it(t.algorithm,e)},Pt.prototype._iterate=function(e,t){return wt(this._ctx,e,t,this._ctx.table.core)},Pt.prototype.clone=function(e){var t=Object.create(this.constructor.prototype),n=Object.create(this._ctx);return e&&a(n,e),t._ctx=n,t},Pt.prototype.raw=function(){return this._ctx.valueMapper=null,this},Pt.prototype.each=function(t){var n=this._ctx;return this._read(function(e){return wt(n,t,e,n.table.core)})},Pt.prototype.count=function(e){var i=this;return this._read(function(e){var t=i._ctx,n=t.table.core;if(yt(t,!0))return n.count({trans:e,query:{index:bt(t,n.schema),range:t.range}}).then(function(e){return Math.min(e,t.limit)});var r=0;return wt(t,function(){return++r,!1},e,n).then(function(){return r})}).then(e)},Pt.prototype.sortBy=function(e,t){var n=e.split(\".\").reverse(),r=n[0],i=n.length-1;function o(e,t){return t?o(e[n[t]],t-1):e[r]}var a=\"next\"===this._ctx.dir?1:-1;function u(e,t){return st(o(e,i),o(t,i))*a}return this.toArray(function(e){return e.sort(u)}).then(t)},Pt.prototype.toArray=function(e){var o=this;return this._read(function(e){var t=o._ctx;if(\"next\"===t.dir&&yt(t,!0)&&0<t.limit){var n=t.valueMapper,r=bt(t,t.table.core.schema);return t.table.core.query({trans:e,limit:t.limit,values:!0,query:{index:r,range:t.range}}).then(function(e){e=e.result;return n?e.map(n):e})}var i=[];return wt(t,function(e){return i.push(e)},e,t.table.core).then(function(){return i})},e)},Pt.prototype.offset=function(t){var e=this._ctx;return t<=0||(e.offset+=t,yt(e)?mt(e,function(){var n=t;return function(e,t){return 0===n||(1===n?--n:t(function(){e.advance(n),n=0}),!1)}}):mt(e,function(){var e=t;return function(){return--e<0}})),this},Pt.prototype.limit=function(e){return this._ctx.limit=Math.min(this._ctx.limit,e),mt(this._ctx,function(){var r=e;return function(e,t,n){return--r<=0&&t(n),0<=r}},!0),this},Pt.prototype.until=function(r,i){return vt(this._ctx,function(e,t,n){return!r(e.value)||(t(n),i)}),this},Pt.prototype.first=function(e){return this.limit(1).toArray(function(e){return e[0]}).then(e)},Pt.prototype.last=function(e){return this.reverse().first(e)},Pt.prototype.filter=function(t){var e;return vt(this._ctx,function(e){return t(e.value)}),(e=this._ctx).isMatch=it(e.isMatch,t),this},Pt.prototype.and=function(e){return this.filter(e)},Pt.prototype.or=function(e){return new this.db.WhereClause(this._ctx.table,e,this)},Pt.prototype.reverse=function(){return this._ctx.dir=\"prev\"===this._ctx.dir?\"next\":\"prev\",this._ondirectionchange&&this._ondirectionchange(this._ctx.dir),this},Pt.prototype.desc=function(){return this.reverse()},Pt.prototype.eachKey=function(n){var e=this._ctx;return e.keysOnly=!e.isMatch,this.each(function(e,t){n(t.key,t)})},Pt.prototype.eachUniqueKey=function(e){return this._ctx.unique=\"unique\",this.eachKey(e)},Pt.prototype.eachPrimaryKey=function(n){var e=this._ctx;return e.keysOnly=!e.isMatch,this.each(function(e,t){n(t.primaryKey,t)})},Pt.prototype.keys=function(e){var t=this._ctx;t.keysOnly=!t.isMatch;var n=[];return this.each(function(e,t){n.push(t.key)}).then(function(){return n}).then(e)},Pt.prototype.primaryKeys=function(e){var n=this._ctx;if(\"next\"===n.dir&&yt(n,!0)&&0<n.limit)return this._read(function(e){var t=bt(n,n.table.core.schema);return n.table.core.query({trans:e,values:!1,limit:n.limit,query:{index:t,range:n.range}})}).then(function(e){return e.result}).then(e);n.keysOnly=!n.isMatch;var r=[];return this.each(function(e,t){r.push(t.primaryKey)}).then(function(){return r}).then(e)},Pt.prototype.uniqueKeys=function(e){return this._ctx.unique=\"unique\",this.keys(e)},Pt.prototype.firstKey=function(e){return this.limit(1).keys(function(e){return e[0]}).then(e)},Pt.prototype.lastKey=function(e){return this.reverse().firstKey(e)},Pt.prototype.distinct=function(){var e=this._ctx,e=e.index&&e.table.schema.idxByName[e.index];if(!e||!e.multi)return this;var n={};return vt(this._ctx,function(e){var t=e.primaryKey.toString(),e=m(n,t);return n[t]=!0,!e}),this},Pt.prototype.modify=function(w){var n=this,r=this._ctx;return this._write(function(d){var a,u,p;p=\"function\"==typeof w?w:(a=x(w),u=a.length,function(e){for(var t=!1,n=0;n<u;++n){var r=a[n],i=w[r],o=O(e,r);i instanceof xt?(P(e,r,i.execute(o)),t=!0):o!==i&&(P(e,r,i),t=!0)}return t});var y=r.table.core,e=y.schema.primaryKey,v=e.outbound,m=e.extractKey,b=200,e=n.db._options.modifyChunkSize;e&&(b=\"object\"==typeof e?e[y.name]||e[\"*\"]||200:e);function g(e,t){var n=t.failures,t=t.numFailures;c+=e-t;for(var r=0,i=x(n);r<i.length;r++){var o=i[r];s.push(n[o])}}var s=[],c=0,t=[];return n.clone().primaryKeys().then(function(l){function f(s){var c=Math.min(b,l.length-s);return y.getMany({trans:d,keys:l.slice(s,s+c),cache:\"immutable\"}).then(function(e){for(var n=[],t=[],r=v?[]:null,i=[],o=0;o<c;++o){var a=e[o],u={value:S(a),primKey:l[s+o]};!1!==p.call(u,u.value,u)&&(null==u.value?i.push(l[s+o]):v||0===st(m(a),m(u.value))?(t.push(u.value),v&&r.push(l[s+o])):(i.push(l[s+o]),n.push(u.value)))}return Promise.resolve(0<n.length&&y.mutate({trans:d,type:\"add\",values:n}).then(function(e){for(var t in e.failures)i.splice(parseInt(t),1);g(n.length,e)})).then(function(){return(0<t.length||h&&\"object\"==typeof w)&&y.mutate({trans:d,type:\"put\",keys:r,values:t,criteria:h,changeSpec:\"function\"!=typeof w&&w,isAdditionalChunk:0<s}).then(function(e){return g(t.length,e)})}).then(function(){return(0<i.length||h&&w===Kt)&&y.mutate({trans:d,type:\"delete\",keys:i,criteria:h,isAdditionalChunk:0<s}).then(function(e){return g(i.length,e)})}).then(function(){return l.length>s+c&&f(s+b)})})}var h=yt(r)&&r.limit===1/0&&(\"function\"!=typeof w||w===Kt)&&{index:r.index,range:r.range};return f(0).then(function(){if(0<s.length)throw new U(\"Error modifying one or more objects\",s,c,t);return l.length})})})},Pt.prototype.delete=function(){var i=this._ctx,n=i.range;return yt(i)&&(i.isPrimKey||3===n.type)?this._write(function(e){var t=i.table.core.schema.primaryKey,r=n;return i.table.core.count({trans:e,query:{index:t,range:r}}).then(function(n){return i.table.core.mutate({trans:e,type:\"deleteRange\",range:r}).then(function(e){var t=e.failures;e.lastResult,e.results;e=e.numFailures;if(e)throw new U(\"Could not delete some values\",Object.keys(t).map(function(e){return t[e]}),n-e);return n-e})})}):this.modify(Kt)},Pt);function Pt(){}var Kt=function(e,t){return t.value=null};function Et(e,t){return e<t?-1:e===t?0:1}function St(e,t){return t<e?-1:e===t?0:1}function jt(e,t,n){e=e instanceof Dt?new e.Collection(e):e;return e._ctx.error=new(n||TypeError)(t),e}function At(e){return new e.Collection(e,function(){return qt(\"\")}).limit(0)}function Ct(e,s,n,r){var i,c,l,f,h,d,p,y=n.length;if(!n.every(function(e){return\"string\"==typeof e}))return jt(e,Ze);function t(e){i=\"next\"===e?function(e){return e.toUpperCase()}:function(e){return e.toLowerCase()},c=\"next\"===e?function(e){return e.toLowerCase()}:function(e){return e.toUpperCase()},l=\"next\"===e?Et:St;var t=n.map(function(e){return{lower:c(e),upper:i(e)}}).sort(function(e,t){return l(e.lower,t.lower)});f=t.map(function(e){return e.upper}),h=t.map(function(e){return e.lower}),p=\"next\"===(d=e)?\"\":r}t(\"next\");e=new e.Collection(e,function(){return Tt(f[0],h[y-1]+r)});e._ondirectionchange=function(e){t(e)};var v=0;return e._addAlgorithm(function(e,t,n){var r=e.key;if(\"string\"!=typeof r)return!1;var i=c(r);if(s(i,h,v))return!0;for(var o=null,a=v;a<y;++a){var u=function(e,t,n,r,i,o){for(var a=Math.min(e.length,r.length),u=-1,s=0;s<a;++s){var c=t[s];if(c!==r[s])return i(e[s],n[s])<0?e.substr(0,s)+n[s]+n.substr(s+1):i(e[s],r[s])<0?e.substr(0,s)+r[s]+n.substr(s+1):0<=u?e.substr(0,u)+t[u]+n.substr(u+1):null;i(e[s],c)<0&&(u=s)}return a<r.length&&\"next\"===o?e+n.substr(e.length):a<e.length&&\"prev\"===o?e.substr(0,n.length):u<0?null:e.substr(0,u)+r[u]+n.substr(u+1)}(r,i,f[a],h[a],l,d);null===u&&null===o?v=a+1:(null===o||0<l(o,u))&&(o=u)}return t(null!==o?function(){e.continue(o+p)}:n),!1}),e}function Tt(e,t,n,r){return{type:2,lower:e,upper:t,lowerOpen:n,upperOpen:r}}function qt(e){return{type:1,lower:e,upper:e}}var Dt=(Object.defineProperty(It.prototype,\"Collection\",{get:function(){return this._ctx.table.db.Collection},enumerable:!1,configurable:!0}),It.prototype.between=function(e,t,n,r){n=!1!==n,r=!0===r;try{return 0<this._cmp(e,t)||0===this._cmp(e,t)&&(n||r)&&(!n||!r)?At(this):new this.Collection(this,function(){return Tt(e,t,!n,!r)})}catch(e){return jt(this,Je)}},It.prototype.equals=function(e){return null==e?jt(this,Je):new this.Collection(this,function(){return qt(e)})},It.prototype.above=function(e){return null==e?jt(this,Je):new this.Collection(this,function(){return Tt(e,void 0,!0)})},It.prototype.aboveOrEqual=function(e){return null==e?jt(this,Je):new this.Collection(this,function(){return Tt(e,void 0,!1)})},It.prototype.below=function(e){return null==e?jt(this,Je):new this.Collection(this,function(){return Tt(void 0,e,!1,!0)})},It.prototype.belowOrEqual=function(e){return null==e?jt(this,Je):new this.Collection(this,function(){return Tt(void 0,e)})},It.prototype.startsWith=function(e){return\"string\"!=typeof e?jt(this,Ze):this.between(e,e+He,!0,!0)},It.prototype.startsWithIgnoreCase=function(e){return\"\"===e?this.startsWith(e):Ct(this,function(e,t){return 0===e.indexOf(t[0])},[e],He)},It.prototype.equalsIgnoreCase=function(e){return Ct(this,function(e,t){return e===t[0]},[e],\"\")},It.prototype.anyOfIgnoreCase=function(){var e=I.apply(D,arguments);return 0===e.length?At(this):Ct(this,function(e,t){return-1!==t.indexOf(e)},e,\"\")},It.prototype.startsWithAnyOfIgnoreCase=function(){var e=I.apply(D,arguments);return 0===e.length?At(this):Ct(this,function(t,e){return e.some(function(e){return 0===t.indexOf(e)})},e,He)},It.prototype.anyOf=function(){var t=this,i=I.apply(D,arguments),o=this._cmp;try{i.sort(o)}catch(e){return jt(this,Je)}if(0===i.length)return At(this);var e=new this.Collection(this,function(){return Tt(i[0],i[i.length-1])});e._ondirectionchange=function(e){o=\"next\"===e?t._ascending:t._descending,i.sort(o)};var a=0;return e._addAlgorithm(function(e,t,n){for(var r=e.key;0<o(r,i[a]);)if(++a===i.length)return t(n),!1;return 0===o(r,i[a])||(t(function(){e.continue(i[a])}),!1)}),e},It.prototype.notEqual=function(e){return this.inAnyRange([[-1/0,e],[e,this.db._maxKey]],{includeLowers:!1,includeUppers:!1})},It.prototype.noneOf=function(){var e=I.apply(D,arguments);if(0===e.length)return new this.Collection(this);try{e.sort(this._ascending)}catch(e){return jt(this,Je)}var t=e.reduce(function(e,t){return e?e.concat([[e[e.length-1][1],t]]):[[-1/0,t]]},null);return t.push([e[e.length-1],this.db._maxKey]),this.inAnyRange(t,{includeLowers:!1,includeUppers:!1})},It.prototype.inAnyRange=function(e,t){var o=this,a=this._cmp,u=this._ascending,n=this._descending,s=this._min,c=this._max;if(0===e.length)return At(this);if(!e.every(function(e){return void 0!==e[0]&&void 0!==e[1]&&u(e[0],e[1])<=0}))return jt(this,\"First argument to inAnyRange() must be an Array of two-value Arrays [lower,upper] where upper must not be lower than lower\",Y.InvalidArgument);var r=!t||!1!==t.includeLowers,i=t&&!0===t.includeUppers;var l,f=u;function h(e,t){return f(e[0],t[0])}try{(l=e.reduce(function(e,t){for(var n=0,r=e.length;n<r;++n){var i=e[n];if(a(t[0],i[1])<0&&0<a(t[1],i[0])){i[0]=s(i[0],t[0]),i[1]=c(i[1],t[1]);break}}return n===r&&e.push(t),e},[])).sort(h)}catch(e){return jt(this,Je)}var d=0,p=i?function(e){return 0<u(e,l[d][1])}:function(e){return 0<=u(e,l[d][1])},y=r?function(e){return 0<n(e,l[d][0])}:function(e){return 0<=n(e,l[d][0])};var v=p,e=new this.Collection(this,function(){return Tt(l[0][0],l[l.length-1][1],!r,!i)});return e._ondirectionchange=function(e){f=\"next\"===e?(v=p,u):(v=y,n),l.sort(h)},e._addAlgorithm(function(e,t,n){for(var r,i=e.key;v(i);)if(++d===l.length)return t(n),!1;return!p(r=i)&&!y(r)||(0===o._cmp(i,l[d][1])||0===o._cmp(i,l[d][0])||t(function(){f===u?e.continue(l[d][0]):e.continue(l[d][1])}),!1)}),e},It.prototype.startsWithAnyOf=function(){var e=I.apply(D,arguments);return e.every(function(e){return\"string\"==typeof e})?0===e.length?At(this):this.inAnyRange(e.map(function(e){return[e,e+He]})):jt(this,\"startsWithAnyOf() only works with strings\")},It);function It(){}function Bt(t){return qe(function(e){return Rt(e),t(e.target.error),!1})}function Rt(e){e.stopPropagation&&e.stopPropagation(),e.preventDefault&&e.preventDefault()}var Ft=\"storagemutated\",Mt=\"x-storagemutated-1\",Nt=dt(null,Ft),Lt=(Ut.prototype._lock=function(){return y(!me.global),++this._reculock,1!==this._reculock||me.global||(me.lockOwnerFor=this),this},Ut.prototype._unlock=function(){if(y(!me.global),0==--this._reculock)for(me.global||(me.lockOwnerFor=null);0<this._blockedFuncs.length&&!this._locked();){var e=this._blockedFuncs.shift();try{$e(e[1],e[0])}catch(e){}}return this},Ut.prototype._locked=function(){return this._reculock&&me.lockOwnerFor!==this},Ut.prototype.create=function(t){var n=this;if(!this.mode)return this;var e=this.db.idbdb,r=this.db._state.dbOpenError;if(y(!this.idbtrans),!t&&!e)switch(r&&r.name){case\"DatabaseClosedError\":throw new Y.DatabaseClosed(r);case\"MissingAPIError\":throw new Y.MissingAPI(r.message,r);default:throw new Y.OpenFailed(r)}if(!this.active)throw new Y.TransactionInactive;return y(null===this._completion._state),(t=this.idbtrans=t||(this.db.core||e).transaction(this.storeNames,this.mode,{durability:this.chromeTransactionDurability})).onerror=qe(function(e){Rt(e),n._reject(t.error)}),t.onabort=qe(function(e){Rt(e),n.active&&n._reject(new Y.Abort(t.error)),n.active=!1,n.on(\"abort\").fire(e)}),t.oncomplete=qe(function(){n.active=!1,n._resolve(),\"mutatedParts\"in t&&Nt.storagemutated.fire(t.mutatedParts)}),this},Ut.prototype._promise=function(n,r,i){var o=this;if(\"readwrite\"===n&&\"readwrite\"!==this.mode)return Xe(new Y.ReadOnly(\"Transaction is readonly\"));if(!this.active)return Xe(new Y.TransactionInactive);if(this._locked())return new _e(function(e,t){o._blockedFuncs.push([function(){o._promise(n,r,i).then(e,t)},me])});if(i)return Ne(function(){var e=new _e(function(e,t){o._lock();var n=r(e,t,o);n&&n.then&&n.then(e,t)});return e.finally(function(){return o._unlock()}),e._lib=!0,e});var e=new _e(function(e,t){var n=r(e,t,o);n&&n.then&&n.then(e,t)});return e._lib=!0,e},Ut.prototype._root=function(){return this.parent?this.parent._root():this},Ut.prototype.waitFor=function(e){var t,r=this._root(),i=_e.resolve(e);r._waitingFor?r._waitingFor=r._waitingFor.then(function(){return i}):(r._waitingFor=i,r._waitingQueue=[],t=r.idbtrans.objectStore(r.storeNames[0]),function e(){for(++r._spinCount;r._waitingQueue.length;)r._waitingQueue.shift()();r._waitingFor&&(t.get(-1/0).onsuccess=e)}());var o=r._waitingFor;return new _e(function(t,n){i.then(function(e){return r._waitingQueue.push(qe(t.bind(null,e)))},function(e){return r._waitingQueue.push(qe(n.bind(null,e)))}).finally(function(){r._waitingFor===o&&(r._waitingFor=null)})})},Ut.prototype.abort=function(){this.active&&(this.active=!1,this.idbtrans&&this.idbtrans.abort(),this._reject(new Y.Abort))},Ut.prototype.table=function(e){var t=this._memoizedTables||(this._memoizedTables={});if(m(t,e))return t[e];var n=this.schema[e];if(!n)throw new Y.NotFound(\"Table \"+e+\" not part of transaction\");n=new this.db.Table(e,n,this);return n.core=this.db.core.table(e),t[e]=n},Ut);function Ut(){}function Vt(e,t,n,r,i,o,a){return{name:e,keyPath:t,unique:n,multi:r,auto:i,compound:o,src:(n&&!a?\"&\":\"\")+(r?\"*\":\"\")+(i?\"++\":\"\")+zt(t)}}function zt(e){return\"string\"==typeof e?e:e?\"[\"+[].join.call(e,\"+\")+\"]\":\"\"}function Wt(e,t,n){return{name:e,primKey:t,indexes:n,mappedClass:null,idxByName:(r=function(e){return[e.name,e]},n.reduce(function(e,t,n){n=r(t,n);return n&&(e[n[0]]=n[1]),e},{}))};var r}var Yt=function(e){try{return e.only([[]]),Yt=function(){return[[]]},[[]]}catch(e){return Yt=function(){return He},He}};function $t(t){return null==t?function(){}:\"string\"==typeof t?1===(n=t).split(\".\").length?function(e){return e[n]}:function(e){return O(e,n)}:function(e){return O(e,t)};var n}function Qt(e){return[].slice.call(e)}var Gt=0;function Xt(e){return null==e?\":id\":\"string\"==typeof e?e:\"[\".concat(e.join(\"+\"),\"]\")}function Ht(e,i,t){function _(e){if(3===e.type)return null;if(4===e.type)throw new Error(\"Cannot convert never type to IDBKeyRange\");var t=e.lower,n=e.upper,r=e.lowerOpen,e=e.upperOpen;return void 0===t?void 0===n?null:i.upperBound(n,!!e):void 0===n?i.lowerBound(t,!!r):i.bound(t,n,!!r,!!e)}function n(e){var h,w=e.name;return{name:w,schema:e,mutate:function(e){var y=e.trans,v=e.type,m=e.keys,b=e.values,g=e.range;return new Promise(function(t,e){t=qe(t);var n=y.objectStore(w),r=null==n.keyPath,i=\"put\"===v||\"add\"===v;if(!i&&\"delete\"!==v&&\"deleteRange\"!==v)throw new Error(\"Invalid operation type: \"+v);var o,a=(m||b||{length:1}).length;if(m&&b&&m.length!==b.length)throw new Error(\"Given keys array must have same length as given values array.\");if(0===a)return t({numFailures:0,failures:{},results:[],lastResult:void 0});function u(e){++l,Rt(e)}var s=[],c=[],l=0;if(\"deleteRange\"===v){if(4===g.type)return t({numFailures:l,failures:c,results:[],lastResult:void 0});3===g.type?s.push(o=n.clear()):s.push(o=n.delete(_(g)))}else{var r=i?r?[b,m]:[b,null]:[m,null],f=r[0],h=r[1];if(i)for(var d=0;d<a;++d)s.push(o=h&&void 0!==h[d]?n[v](f[d],h[d]):n[v](f[d])),o.onerror=u;else for(d=0;d<a;++d)s.push(o=n[v](f[d])),o.onerror=u}function p(e){e=e.target.result,s.forEach(function(e,t){return null!=e.error&&(c[t]=e.error)}),t({numFailures:l,failures:c,results:\"delete\"===v?m:s.map(function(e){return e.result}),lastResult:e})}o.onerror=function(e){u(e),p(e)},o.onsuccess=p})},getMany:function(e){var f=e.trans,h=e.keys;return new Promise(function(t,e){t=qe(t);for(var n,r=f.objectStore(w),i=h.length,o=new Array(i),a=0,u=0,s=function(e){e=e.target;o[e._pos]=e.result,++u===a&&t(o)},c=Bt(e),l=0;l<i;++l)null!=h[l]&&((n=r.get(h[l]))._pos=l,n.onsuccess=s,n.onerror=c,++a);0===a&&t(o)})},get:function(e){var r=e.trans,i=e.key;return new Promise(function(t,e){t=qe(t);var n=r.objectStore(w).get(i);n.onsuccess=function(e){return t(e.target.result)},n.onerror=Bt(e)})},query:(h=s,function(f){return new Promise(function(n,e){n=qe(n);var r,i,o,t=f.trans,a=f.values,u=f.limit,s=f.query,c=u===1/0?void 0:u,l=s.index,s=s.range,t=t.objectStore(w),l=l.isPrimaryKey?t:t.index(l.name),s=_(s);if(0===u)return n({result:[]});h?((c=a?l.getAll(s,c):l.getAllKeys(s,c)).onsuccess=function(e){return n({result:e.target.result})},c.onerror=Bt(e)):(r=0,i=!a&&\"openKeyCursor\"in l?l.openKeyCursor(s):l.openCursor(s),o=[],i.onsuccess=function(e){var t=i.result;return t?(o.push(a?t.value:t.primaryKey),++r===u?n({result:o}):void t.continue()):n({result:o})},i.onerror=Bt(e))})}),openCursor:function(e){var c=e.trans,o=e.values,a=e.query,u=e.reverse,l=e.unique;return new Promise(function(t,n){t=qe(t);var e=a.index,r=a.range,i=c.objectStore(w),i=e.isPrimaryKey?i:i.index(e.name),e=u?l?\"prevunique\":\"prev\":l?\"nextunique\":\"next\",s=!o&&\"openKeyCursor\"in i?i.openKeyCursor(_(r),e):i.openCursor(_(r),e);s.onerror=Bt(n),s.onsuccess=qe(function(e){var r,i,o,a,u=s.result;u?(u.___id=++Gt,u.done=!1,r=u.continue.bind(u),i=(i=u.continuePrimaryKey)&&i.bind(u),o=u.advance.bind(u),a=function(){throw new Error(\"Cursor not stopped\")},u.trans=c,u.stop=u.continue=u.continuePrimaryKey=u.advance=function(){throw new Error(\"Cursor not started\")},u.fail=qe(n),u.next=function(){var e=this,t=1;return this.start(function(){return t--?e.continue():e.stop()}).then(function(){return e})},u.start=function(e){function t(){if(s.result)try{e()}catch(e){u.fail(e)}else u.done=!0,u.start=function(){throw new Error(\"Cursor behind last entry\")},u.stop()}var n=new Promise(function(t,e){t=qe(t),s.onerror=Bt(e),u.fail=e,u.stop=function(e){u.stop=u.continue=u.continuePrimaryKey=u.advance=a,t(e)}});return s.onsuccess=qe(function(e){s.onsuccess=t,t()}),u.continue=r,u.continuePrimaryKey=i,u.advance=o,t(),n},t(u)):t(null)},n)})},count:function(e){var t=e.query,i=e.trans,o=t.index,a=t.range;return new Promise(function(t,e){var n=i.objectStore(w),r=o.isPrimaryKey?n:n.index(o.name),n=_(a),r=n?r.count(n):r.count();r.onsuccess=qe(function(e){return t(e.target.result)}),r.onerror=Bt(e)})}}}var r,o,a,u=(o=t,a=Qt((r=e).objectStoreNames),{schema:{name:r.name,tables:a.map(function(e){return o.objectStore(e)}).map(function(t){var e=t.keyPath,n=t.autoIncrement,r=k(e),i={},n={name:t.name,primaryKey:{name:null,isPrimaryKey:!0,outbound:null==e,compound:r,keyPath:e,autoIncrement:n,unique:!0,extractKey:$t(e)},indexes:Qt(t.indexNames).map(function(e){return t.index(e)}).map(function(e){var t=e.name,n=e.unique,r=e.multiEntry,e=e.keyPath,r={name:t,compound:k(e),keyPath:e,unique:n,multiEntry:r,extractKey:$t(e)};return i[Xt(e)]=r}),getIndexByKeyPath:function(e){return i[Xt(e)]}};return i[\":id\"]=n.primaryKey,null!=e&&(i[Xt(e)]=n.primaryKey),n})},hasGetAll:0<a.length&&\"getAll\"in o.objectStore(a[0])&&!(\"undefined\"!=typeof navigator&&/Safari/.test(navigator.userAgent)&&!/(Chrome\\/|Edge\\/)/.test(navigator.userAgent)&&[].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1]<604)}),t=u.schema,s=u.hasGetAll,u=t.tables.map(n),c={};return u.forEach(function(e){return c[e.name]=e}),{stack:\"dbcore\",transaction:e.transaction.bind(e),table:function(e){if(!c[e])throw new Error(\"Table '\".concat(e,\"' not found\"));return c[e]},MIN_KEY:-1/0,MAX_KEY:Yt(i),schema:t}}function Jt(e,t,n,r){var i=n.IDBKeyRange;return n.indexedDB,{dbcore:(r=Ht(t,i,r),e.dbcore.reduce(function(e,t){t=t.create;return _(_({},e),t(e))},r))}}function Zt(n,e){var t=e.db,e=Jt(n._middlewares,t,n._deps,e);n.core=e.dbcore,n.tables.forEach(function(e){var t=e.name;n.core.schema.tables.some(function(e){return e.name===t})&&(e.core=n.core.table(t),n[t]instanceof n.Table&&(n[t].core=e.core))})}function en(i,e,t,o){t.forEach(function(n){var r=o[n];e.forEach(function(e){var t=function e(t,n){return h(t,n)||(t=c(t))&&e(t,n)}(e,n);(!t||\"value\"in t&&void 0===t.value)&&(e===i.Transaction.prototype||e instanceof i.Transaction?l(e,n,{get:function(){return this.table(n)},set:function(e){u(this,n,{value:e,writable:!0,configurable:!0,enumerable:!0})}}):e[n]=new i.Table(n,r))})})}function tn(n,e){e.forEach(function(e){for(var t in e)e[t]instanceof n.Table&&delete e[t]})}function nn(e,t){return e._cfg.version-t._cfg.version}function rn(n,r,i,e){var o=n._dbSchema;i.objectStoreNames.contains(\"$meta\")&&!o.$meta&&(o.$meta=Wt(\"$meta\",hn(\"\")[0],[]),n._storeNames.push(\"$meta\"));var a=n._createTransaction(\"readwrite\",n._storeNames,o);a.create(i),a._completion.catch(e);var u=a._reject.bind(a),s=me.transless||me;Ne(function(){return me.trans=a,me.transless=s,0!==r?(Zt(n,i),t=r,((e=a).storeNames.includes(\"$meta\")?e.table(\"$meta\").get(\"version\").then(function(e){return null!=e?e:t}):_e.resolve(t)).then(function(e){return c=e,l=a,f=i,t=[],e=(s=n)._versions,h=s._dbSchema=ln(0,s.idbdb,f),0!==(e=e.filter(function(e){return e._cfg.version>=c})).length?(e.forEach(function(u){t.push(function(){var t=h,e=u._cfg.dbschema;fn(s,t,f),fn(s,e,f),h=s._dbSchema=e;var n=an(t,e);n.add.forEach(function(e){un(f,e[0],e[1].primKey,e[1].indexes)}),n.change.forEach(function(e){if(e.recreate)throw new Y.Upgrade(\"Not yet support for changing primary key\");var t=f.objectStore(e.name);e.add.forEach(function(e){return cn(t,e)}),e.change.forEach(function(e){t.deleteIndex(e.name),cn(t,e)}),e.del.forEach(function(e){return t.deleteIndex(e)})});var r=u._cfg.contentUpgrade;if(r&&u._cfg.version>c){Zt(s,f),l._memoizedTables={};var i=g(e);n.del.forEach(function(e){i[e]=t[e]}),tn(s,[s.Transaction.prototype]),en(s,[s.Transaction.prototype],x(i),i),l.schema=i;var o,a=B(r);a&&Le();n=_e.follow(function(){var e;(o=r(l))&&a&&(e=Ue.bind(null,null),o.then(e,e))});return o&&\"function\"==typeof o.then?_e.resolve(o):n.then(function(){return o})}}),t.push(function(e){var t,n,r=u._cfg.dbschema;t=r,n=e,[].slice.call(n.db.objectStoreNames).forEach(function(e){return null==t[e]&&n.db.deleteObjectStore(e)}),tn(s,[s.Transaction.prototype]),en(s,[s.Transaction.prototype],s._storeNames,s._dbSchema),l.schema=s._dbSchema}),t.push(function(e){s.idbdb.objectStoreNames.contains(\"$meta\")&&(Math.ceil(s.idbdb.version/10)===u._cfg.version?(s.idbdb.deleteObjectStore(\"$meta\"),delete s._dbSchema.$meta,s._storeNames=s._storeNames.filter(function(e){return\"$meta\"!==e})):e.objectStore(\"$meta\").put(u._cfg.version,\"version\"))})}),function e(){return t.length?_e.resolve(t.shift()(l.idbtrans)).then(e):_e.resolve()}().then(function(){sn(h,f)})):_e.resolve();var s,c,l,f,t,h}).catch(u)):(x(o).forEach(function(e){un(i,e,o[e].primKey,o[e].indexes)}),Zt(n,i),void _e.follow(function(){return n.on.populate.fire(a)}).catch(u));var e,t})}function on(e,r){sn(e._dbSchema,r),r.db.version%10!=0||r.objectStoreNames.contains(\"$meta\")||r.db.createObjectStore(\"$meta\").add(Math.ceil(r.db.version/10-1),\"version\");var t=ln(0,e.idbdb,r);fn(e,e._dbSchema,r);for(var n=0,i=an(t,e._dbSchema).change;n<i.length;n++){var o=function(t){if(t.change.length||t.recreate)return console.warn(\"Unable to patch indexes of table \".concat(t.name,\" because it has changes on the type of index or primary key.\")),{value:void 0};var n=r.objectStore(t.name);t.add.forEach(function(e){ie&&console.debug(\"Dexie upgrade patch: Creating missing index \".concat(t.name,\".\").concat(e.src)),cn(n,e)})}(i[n]);if(\"object\"==typeof o)return o.value}}function an(e,t){var n,r={del:[],add:[],change:[]};for(n in e)t[n]||r.del.push(n);for(n in t){var i=e[n],o=t[n];if(i){var a={name:n,def:o,recreate:!1,del:[],add:[],change:[]};if(\"\"+(i.primKey.keyPath||\"\")!=\"\"+(o.primKey.keyPath||\"\")||i.primKey.auto!==o.primKey.auto)a.recreate=!0,r.change.push(a);else{var u=i.idxByName,s=o.idxByName,c=void 0;for(c in u)s[c]||a.del.push(c);for(c in s){var l=u[c],f=s[c];l?l.src!==f.src&&a.change.push(f):a.add.push(f)}(0<a.del.length||0<a.add.length||0<a.change.length)&&r.change.push(a)}}else r.add.push([n,o])}return r}function un(e,t,n,r){var i=e.db.createObjectStore(t,n.keyPath?{keyPath:n.keyPath,autoIncrement:n.auto}:{autoIncrement:n.auto});return r.forEach(function(e){return cn(i,e)}),i}function sn(t,n){x(t).forEach(function(e){n.db.objectStoreNames.contains(e)||(ie&&console.debug(\"Dexie: Creating missing table\",e),un(n,e,t[e].primKey,t[e].indexes))})}function cn(e,t){e.createIndex(t.name,t.keyPath,{unique:t.unique,multiEntry:t.multi})}function ln(e,t,u){var s={};return b(t.objectStoreNames,0).forEach(function(e){for(var t=u.objectStore(e),n=Vt(zt(a=t.keyPath),a||\"\",!0,!1,!!t.autoIncrement,a&&\"string\"!=typeof a,!0),r=[],i=0;i<t.indexNames.length;++i){var o=t.index(t.indexNames[i]),a=o.keyPath,o=Vt(o.name,a,!!o.unique,!!o.multiEntry,!1,a&&\"string\"!=typeof a,!1);r.push(o)}s[e]=Wt(e,n,r)}),s}function fn(e,t,n){for(var r=n.db.objectStoreNames,i=0;i<r.length;++i){var o=r[i],a=n.objectStore(o);e._hasGetAll=\"getAll\"in a;for(var u=0;u<a.indexNames.length;++u){var s=a.indexNames[u],c=a.index(s).keyPath,l=\"string\"==typeof c?c:\"[\"+b(c).join(\"+\")+\"]\";!t[o]||(c=t[o].idxByName[l])&&(c.name=s,delete t[o].idxByName[l],t[o].idxByName[s]=c)}}\"undefined\"!=typeof navigator&&/Safari/.test(navigator.userAgent)&&!/(Chrome\\/|Edge\\/)/.test(navigator.userAgent)&&f.WorkerGlobalScope&&f instanceof f.WorkerGlobalScope&&[].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1]<604&&(e._hasGetAll=!1)}function hn(e){return e.split(\",\").map(function(e,t){var n=(e=e.trim()).replace(/([&*]|\\+\\+)/g,\"\"),r=/^\\[/.test(n)?n.match(/^\\[(.*)\\]$/)[1].split(\"+\"):n;return Vt(n,r||null,/\\&/.test(e),/\\*/.test(e),/\\+\\+/.test(e),k(r),0===t)})}var dn=(pn.prototype._parseStoresSpec=function(r,i){x(r).forEach(function(e){if(null!==r[e]){var t=hn(r[e]),n=t.shift();if(n.unique=!0,n.multi)throw new Y.Schema(\"Primary key cannot be multi-valued\");t.forEach(function(e){if(e.auto)throw new Y.Schema(\"Only primary key can be marked as autoIncrement (++)\");if(!e.keyPath)throw new Y.Schema(\"Index must have a name and cannot be an empty string\")}),i[e]=Wt(e,n,t)}})},pn.prototype.stores=function(e){var t=this.db;this._cfg.storesSource=this._cfg.storesSource?a(this._cfg.storesSource,e):e;var e=t._versions,n={},r={};return e.forEach(function(e){a(n,e._cfg.storesSource),r=e._cfg.dbschema={},e._parseStoresSpec(n,r)}),t._dbSchema=r,tn(t,[t._allTables,t,t.Transaction.prototype]),en(t,[t._allTables,t,t.Transaction.prototype,this._cfg.tables],x(r),r),t._storeNames=x(r),this},pn.prototype.upgrade=function(e){return this._cfg.contentUpgrade=re(this._cfg.contentUpgrade||G,e),this},pn);function pn(){}function yn(e,t){var n=e._dbNamesDB;return n||(n=e._dbNamesDB=new er(tt,{addons:[],indexedDB:e,IDBKeyRange:t})).version(1).stores({dbnames:\"name\"}),n.table(\"dbnames\")}function vn(e){return e&&\"function\"==typeof e.databases}function mn(e){return Ne(function(){return me.letThrough=!0,e()})}function bn(e){return!(\"from\"in e)}var gn=function(e,t){if(!this){var n=new gn;return e&&\"d\"in e&&a(n,e),n}a(this,arguments.length?{d:1,from:e,to:1<arguments.length?t:e}:{d:0})};function wn(e,t,n){var r=st(t,n);if(!isNaN(r)){if(0<r)throw RangeError();if(bn(e))return a(e,{from:t,to:n,d:1});var i=e.l,r=e.r;if(st(n,e.from)<0)return i?wn(i,t,n):e.l={from:t,to:n,d:1,l:null,r:null},On(e);if(0<st(t,e.to))return r?wn(r,t,n):e.r={from:t,to:n,d:1,l:null,r:null},On(e);st(t,e.from)<0&&(e.from=t,e.l=null,e.d=r?r.d+1:1),0<st(n,e.to)&&(e.to=n,e.r=null,e.d=e.l?e.l.d+1:1);n=!e.r;i&&!e.l&&_n(e,i),r&&n&&_n(e,r)}}function _n(e,t){bn(t)||function e(t,n){var r=n.from,i=n.to,o=n.l,n=n.r;wn(t,r,i),o&&e(t,o),n&&e(t,n)}(e,t)}function xn(e,t){var n=kn(t),r=n.next();if(r.done)return!1;for(var i=r.value,o=kn(e),a=o.next(i.from),u=a.value;!r.done&&!a.done;){if(st(u.from,i.to)<=0&&0<=st(u.to,i.from))return!0;st(i.from,u.from)<0?i=(r=n.next(u.from)).value:u=(a=o.next(i.from)).value}return!1}function kn(e){var n=bn(e)?null:{s:0,n:e};return{next:function(e){for(var t=0<arguments.length;n;)switch(n.s){case 0:if(n.s=1,t)for(;n.n.l&&st(e,n.n.from)<0;)n={up:n,n:n.n.l,s:1};else for(;n.n.l;)n={up:n,n:n.n.l,s:1};case 1:if(n.s=2,!t||st(e,n.n.to)<=0)return{value:n.n,done:!1};case 2:if(n.n.r){n.s=3,n={up:n,n:n.n.r,s:0};continue}case 3:n=n.up}return{done:!0}}}}function On(e){var t,n,r=((null===(t=e.r)||void 0===t?void 0:t.d)||0)-((null===(n=e.l)||void 0===n?void 0:n.d)||0),i=1<r?\"r\":r<-1?\"l\":\"\";i&&(t=\"r\"==i?\"l\":\"r\",n=_({},e),r=e[i],e.from=r.from,e.to=r.to,e[i]=r[i],n[i]=r[t],(e[t]=n).d=Pn(n)),e.d=Pn(e)}function Pn(e){var t=e.r,e=e.l;return(t?e?Math.max(t.d,e.d):t.d:e?e.d:0)+1}function Kn(t,n){return x(n).forEach(function(e){t[e]?_n(t[e],n[e]):t[e]=function e(t){var n,r,i={};for(n in t)m(t,n)&&(r=t[n],i[n]=!r||\"object\"!=typeof r||K.has(r.constructor)?r:e(r));return i}(n[e])}),t}function En(t,n){return t.all||n.all||Object.keys(t).some(function(e){return n[e]&&xn(n[e],t[e])})}r(gn.prototype,((F={add:function(e){return _n(this,e),this},addKey:function(e){return wn(this,e,e),this},addKeys:function(e){var t=this;return e.forEach(function(e){return wn(t,e,e)}),this},hasKey:function(e){var t=kn(this).next(e).value;return t&&st(t.from,e)<=0&&0<=st(t.to,e)}})[C]=function(){return kn(this)},F));var Sn={},jn={},An=!1;function Cn(e){Kn(jn,e),An||(An=!0,setTimeout(function(){An=!1,Tn(jn,!(jn={}))},0))}function Tn(e,t){void 0===t&&(t=!1);var n=new Set;if(e.all)for(var r=0,i=Object.values(Sn);r<i.length;r++)qn(a=i[r],e,n,t);else for(var o in e){var a,u=/^idb\\:\\/\\/(.*)\\/(.*)\\//.exec(o);u&&(o=u[1],u=u[2],(a=Sn[\"idb://\".concat(o,\"/\").concat(u)])&&qn(a,e,n,t))}n.forEach(function(e){return e()})}function qn(e,t,n,r){for(var i=[],o=0,a=Object.entries(e.queries.query);o<a.length;o++){for(var u=a[o],s=u[0],c=[],l=0,f=u[1];l<f.length;l++){var h=f[l];En(t,h.obsSet)?h.subscribers.forEach(function(e){return n.add(e)}):r&&c.push(h)}r&&i.push([s,c])}if(r)for(var d=0,p=i;d<p.length;d++){var y=p[d],s=y[0],c=y[1];e.queries.query[s]=c}}function Dn(f){var h=f._state,r=f._deps.indexedDB;if(h.isBeingOpened||f.idbdb)return h.dbReadyPromise.then(function(){return h.dbOpenError?Xe(h.dbOpenError):f});h.isBeingOpened=!0,h.dbOpenError=null,h.openComplete=!1;var t=h.openCanceller,d=Math.round(10*f.verno),p=!1;function e(){if(h.openCanceller!==t)throw new Y.DatabaseClosed(\"db.open() was cancelled\")}function y(){return new _e(function(s,n){if(e(),!r)throw new Y.MissingAPI;var c=f.name,l=h.autoSchema||!d?r.open(c):r.open(c,d);if(!l)throw new Y.MissingAPI;l.onerror=Bt(n),l.onblocked=qe(f._fireOnBlocked),l.onupgradeneeded=qe(function(e){var t;v=l.transaction,h.autoSchema&&!f._options.allowEmptyDB?(l.onerror=Rt,v.abort(),l.result.close(),(t=r.deleteDatabase(c)).onsuccess=t.onerror=qe(function(){n(new Y.NoSuchDatabase(\"Database \".concat(c,\" doesnt exist\")))})):(v.onerror=Bt(n),e=e.oldVersion>Math.pow(2,62)?0:e.oldVersion,m=e<1,f.idbdb=l.result,p&&on(f,v),rn(f,e/10,v,n))},n),l.onsuccess=qe(function(){v=null;var e,t,n,r,i,o=f.idbdb=l.result,a=b(o.objectStoreNames);if(0<a.length)try{var u=o.transaction(1===(r=a).length?r[0]:r,\"readonly\");if(h.autoSchema)t=o,n=u,(e=f).verno=t.version/10,n=e._dbSchema=ln(0,t,n),e._storeNames=b(t.objectStoreNames,0),en(e,[e._allTables],x(n),n);else if(fn(f,f._dbSchema,u),((i=an(ln(0,(i=f).idbdb,u),i._dbSchema)).add.length||i.change.some(function(e){return e.add.length||e.change.length}))&&!p)return console.warn(\"Dexie SchemaDiff: Schema was extended without increasing the number passed to db.version(). Dexie will add missing parts and increment native version number to workaround this.\"),o.close(),d=o.version+1,p=!0,s(y());Zt(f,u)}catch(e){}et.push(f),o.onversionchange=qe(function(e){h.vcFired=!0,f.on(\"versionchange\").fire(e)}),o.onclose=qe(function(e){f.on(\"close\").fire(e)}),m&&(i=f._deps,u=c,o=i.indexedDB,i=i.IDBKeyRange,vn(o)||u===tt||yn(o,i).put({name:u}).catch(G)),s()},n)}).catch(function(e){switch(null==e?void 0:e.name){case\"UnknownError\":if(0<h.PR1398_maxLoop)return h.PR1398_maxLoop--,console.warn(\"Dexie: Workaround for Chrome UnknownError on open()\"),y();break;case\"VersionError\":if(0<d)return d=0,y()}return _e.reject(e)})}var n,i=h.dbReadyResolve,v=null,m=!1;return _e.race([t,(\"undefined\"==typeof navigator?_e.resolve():!navigator.userAgentData&&/Safari\\//.test(navigator.userAgent)&&!/Chrom(e|ium)\\//.test(navigator.userAgent)&&indexedDB.databases?new Promise(function(e){function t(){return indexedDB.databases().finally(e)}n=setInterval(t,100),t()}).finally(function(){return clearInterval(n)}):Promise.resolve()).then(y)]).then(function(){return e(),h.onReadyBeingFired=[],_e.resolve(mn(function(){return f.on.ready.fire(f.vip)})).then(function e(){if(0<h.onReadyBeingFired.length){var t=h.onReadyBeingFired.reduce(re,G);return h.onReadyBeingFired=[],_e.resolve(mn(function(){return t(f.vip)})).then(e)}})}).finally(function(){h.openCanceller===t&&(h.onReadyBeingFired=null,h.isBeingOpened=!1)}).catch(function(e){h.dbOpenError=e;try{v&&v.abort()}catch(e){}return t===h.openCanceller&&f._close(),Xe(e)}).finally(function(){h.openComplete=!0,i()}).then(function(){var n;return m&&(n={},f.tables.forEach(function(t){t.schema.indexes.forEach(function(e){e.name&&(n[\"idb://\".concat(f.name,\"/\").concat(t.name,\"/\").concat(e.name)]=new gn(-1/0,[[[]]]))}),n[\"idb://\".concat(f.name,\"/\").concat(t.name,\"/\")]=n[\"idb://\".concat(f.name,\"/\").concat(t.name,\"/:dels\")]=new gn(-1/0,[[[]]])}),Nt(Ft).fire(n),Tn(n,!0)),f})}function In(t){function e(e){return t.next(e)}var r=n(e),i=n(function(e){return t.throw(e)});function n(n){return function(e){var t=n(e),e=t.value;return t.done?e:e&&\"function\"==typeof e.then?e.then(r,i):k(e)?Promise.all(e).then(r,i):r(e)}}return n(e)()}function Bn(e,t,n){for(var r=k(e)?e.slice():[e],i=0;i<n;++i)r.push(t);return r}var Rn={stack:\"dbcore\",name:\"VirtualIndexMiddleware\",level:1,create:function(f){return _(_({},f),{table:function(e){var a=f.table(e),t=a.schema,u={},s=[];function c(e,t,n){var r=Xt(e),i=u[r]=u[r]||[],o=null==e?0:\"string\"==typeof e?1:e.length,a=0<t,a=_(_({},n),{name:a?\"\".concat(r,\"(virtual-from:\").concat(n.name,\")\"):n.name,lowLevelIndex:n,isVirtual:a,keyTail:t,keyLength:o,extractKey:$t(e),unique:!a&&n.unique});return i.push(a),a.isPrimaryKey||s.push(a),1<o&&c(2===o?e[0]:e.slice(0,o-1),t+1,n),i.sort(function(e,t){return e.keyTail-t.keyTail}),a}e=c(t.primaryKey.keyPath,0,t.primaryKey);u[\":id\"]=[e];for(var n=0,r=t.indexes;n<r.length;n++){var i=r[n];c(i.keyPath,0,i)}function l(e){var t,n=e.query.index;return n.isVirtual?_(_({},e),{query:{index:n.lowLevelIndex,range:(t=e.query.range,n=n.keyTail,{type:1===t.type?2:t.type,lower:Bn(t.lower,t.lowerOpen?f.MAX_KEY:f.MIN_KEY,n),lowerOpen:!0,upper:Bn(t.upper,t.upperOpen?f.MIN_KEY:f.MAX_KEY,n),upperOpen:!0})}}):e}return _(_({},a),{schema:_(_({},t),{primaryKey:e,indexes:s,getIndexByKeyPath:function(e){return(e=u[Xt(e)])&&e[0]}}),count:function(e){return a.count(l(e))},query:function(e){return a.query(l(e))},openCursor:function(t){var e=t.query.index,r=e.keyTail,n=e.isVirtual,i=e.keyLength;return n?a.openCursor(l(t)).then(function(e){return e&&o(e)}):a.openCursor(t);function o(n){return Object.create(n,{continue:{value:function(e){null!=e?n.continue(Bn(e,t.reverse?f.MAX_KEY:f.MIN_KEY,r)):t.unique?n.continue(n.key.slice(0,i).concat(t.reverse?f.MIN_KEY:f.MAX_KEY,r)):n.continue()}},continuePrimaryKey:{value:function(e,t){n.continuePrimaryKey(Bn(e,f.MAX_KEY,r),t)}},primaryKey:{get:function(){return n.primaryKey}},key:{get:function(){var e=n.key;return 1===i?e[0]:e.slice(0,i)}},value:{get:function(){return n.value}}})}}})}})}};function Fn(i,o,a,u){return a=a||{},u=u||\"\",x(i).forEach(function(e){var t,n,r;m(o,e)?(t=i[e],n=o[e],\"object\"==typeof t&&\"object\"==typeof n&&t&&n?(r=A(t))!==A(n)?a[u+e]=o[e]:\"Object\"===r?Fn(t,n,a,u+e+\".\"):t!==n&&(a[u+e]=o[e]):t!==n&&(a[u+e]=o[e])):a[u+e]=void 0}),x(o).forEach(function(e){m(i,e)||(a[u+e]=o[e])}),a}function Mn(e,t){return\"delete\"===t.type?t.keys:t.keys||t.values.map(e.extractKey)}var Nn={stack:\"dbcore\",name:\"HooksMiddleware\",level:2,create:function(e){return _(_({},e),{table:function(r){var y=e.table(r),v=y.schema.primaryKey;return _(_({},y),{mutate:function(e){var t=me.trans,n=t.table(r).hook,h=n.deleting,d=n.creating,p=n.updating;switch(e.type){case\"add\":if(d.fire===G)break;return t._promise(\"readwrite\",function(){return a(e)},!0);case\"put\":if(d.fire===G&&p.fire===G)break;return t._promise(\"readwrite\",function(){return a(e)},!0);case\"delete\":if(h.fire===G)break;return t._promise(\"readwrite\",function(){return a(e)},!0);case\"deleteRange\":if(h.fire===G)break;return t._promise(\"readwrite\",function(){return function n(r,i,o){return y.query({trans:r,values:!1,query:{index:v,range:i},limit:o}).then(function(e){var t=e.result;return a({type:\"delete\",keys:t,trans:r}).then(function(e){return 0<e.numFailures?Promise.reject(e.failures[0]):t.length<o?{failures:[],numFailures:0,lastResult:void 0}:n(r,_(_({},i),{lower:t[t.length-1],lowerOpen:!0}),o)})})}(e.trans,e.range,1e4)},!0)}return y.mutate(e);function a(c){var e,t,n,l=me.trans,f=c.keys||Mn(v,c);if(!f)throw new Error(\"Keys missing\");return\"delete\"!==(c=\"add\"===c.type||\"put\"===c.type?_(_({},c),{keys:f}):_({},c)).type&&(c.values=i([],c.values,!0)),c.keys&&(c.keys=i([],c.keys,!0)),e=y,n=f,(\"add\"===(t=c).type?Promise.resolve([]):e.getMany({trans:t.trans,keys:n,cache:\"immutable\"})).then(function(u){var s=f.map(function(e,t){var n,r,i,o=u[t],a={onerror:null,onsuccess:null};return\"delete\"===c.type?h.fire.call(a,e,o,l):\"add\"===c.type||void 0===o?(n=d.fire.call(a,e,c.values[t],l),null==e&&null!=n&&(c.keys[t]=e=n,v.outbound||P(c.values[t],v.keyPath,e))):(n=Fn(o,c.values[t]),(r=p.fire.call(a,n,e,o,l))&&(i=c.values[t],Object.keys(r).forEach(function(e){m(i,e)?i[e]=r[e]:P(i,e,r[e])}))),a});return y.mutate(c).then(function(e){for(var t=e.failures,n=e.results,r=e.numFailures,e=e.lastResult,i=0;i<f.length;++i){var o=(n||f)[i],a=s[i];null==o?a.onerror&&a.onerror(t[i]):a.onsuccess&&a.onsuccess(\"put\"===c.type&&u[i]?c.values[i]:o)}return{failures:t,results:n,numFailures:r,lastResult:e}}).catch(function(t){return s.forEach(function(e){return e.onerror&&e.onerror(t)}),Promise.reject(t)})})}}})}})}};function Ln(e,t,n){try{if(!t)return null;if(t.keys.length<e.length)return null;for(var r=[],i=0,o=0;i<t.keys.length&&o<e.length;++i)0===st(t.keys[i],e[o])&&(r.push(n?S(t.values[i]):t.values[i]),++o);return r.length===e.length?r:null}catch(e){return null}}var Un={stack:\"dbcore\",level:-1,create:function(t){return{table:function(e){var n=t.table(e);return _(_({},n),{getMany:function(t){if(!t.cache)return n.getMany(t);var e=Ln(t.keys,t.trans._cache,\"clone\"===t.cache);return e?_e.resolve(e):n.getMany(t).then(function(e){return t.trans._cache={keys:t.keys,values:\"clone\"===t.cache?S(e):e},e})},mutate:function(e){return\"add\"!==e.type&&(e.trans._cache=null),n.mutate(e)}})}}}};function Vn(e,t){return\"readonly\"===e.trans.mode&&!!e.subscr&&!e.trans.explicit&&\"disabled\"!==e.trans.db._options.cache&&!t.schema.primaryKey.outbound}function zn(e,t){switch(e){case\"query\":return t.values&&!t.unique;case\"get\":case\"getMany\":case\"count\":case\"openCursor\":return!1}}var Wn={stack:\"dbcore\",level:0,name:\"Observability\",create:function(b){var g=b.schema.name,w=new gn(b.MIN_KEY,b.MAX_KEY);return _(_({},b),{transaction:function(e,t,n){if(me.subscr&&\"readonly\"!==t)throw new Y.ReadOnly(\"Readwrite transaction in liveQuery context. Querier source: \".concat(me.querier));return b.transaction(e,t,n)},table:function(d){var p=b.table(d),y=p.schema,v=y.primaryKey,e=y.indexes,c=v.extractKey,l=v.outbound,m=v.autoIncrement&&e.filter(function(e){return e.compound&&e.keyPath.includes(v.keyPath)}),t=_(_({},p),{mutate:function(a){function u(e){return e=\"idb://\".concat(g,\"/\").concat(d,\"/\").concat(e),n[e]||(n[e]=new gn)}var e,o,s,t=a.trans,n=a.mutatedParts||(a.mutatedParts={}),r=u(\"\"),i=u(\":dels\"),c=a.type,l=\"deleteRange\"===a.type?[a.range]:\"delete\"===a.type?[a.keys]:a.values.length<50?[Mn(v,a).filter(function(e){return e}),a.values]:[],f=l[0],h=l[1],l=a.trans._cache;return k(f)?(r.addKeys(f),(l=\"delete\"===c||f.length===h.length?Ln(f,l):null)||i.addKeys(f),(l||h)&&(e=u,o=l,s=h,y.indexes.forEach(function(t){var n=e(t.name||\"\");function r(e){return null!=e?t.extractKey(e):null}function i(e){return t.multiEntry&&k(e)?e.forEach(function(e){return n.addKey(e)}):n.addKey(e)}(o||s).forEach(function(e,t){var n=o&&r(o[t]),t=s&&r(s[t]);0!==st(n,t)&&(null!=n&&i(n),null!=t&&i(t))})}))):f?(h={from:null!==(h=f.lower)&&void 0!==h?h:b.MIN_KEY,to:null!==(h=f.upper)&&void 0!==h?h:b.MAX_KEY},i.add(h),r.add(h)):(r.add(w),i.add(w),y.indexes.forEach(function(e){return u(e.name).add(w)})),p.mutate(a).then(function(o){return!f||\"add\"!==a.type&&\"put\"!==a.type||(r.addKeys(o.results),m&&m.forEach(function(t){for(var e=a.values.map(function(e){return t.extractKey(e)}),n=t.keyPath.findIndex(function(e){return e===v.keyPath}),r=0,i=o.results.length;r<i;++r)e[r][n]=o.results[r];u(t.name).addKeys(e)})),t.mutatedParts=Kn(t.mutatedParts||{},n),o})}}),e=function(e){var t=e.query,e=t.index,t=t.range;return[e,new gn(null!==(e=t.lower)&&void 0!==e?e:b.MIN_KEY,null!==(t=t.upper)&&void 0!==t?t:b.MAX_KEY)]},f={get:function(e){return[v,new gn(e.key)]},getMany:function(e){return[v,(new gn).addKeys(e.keys)]},count:e,query:e,openCursor:e};return x(f).forEach(function(s){t[s]=function(i){var e=me.subscr,t=!!e,n=Vn(me,p)&&zn(s,i)?i.obsSet={}:e;if(t){var r=function(e){e=\"idb://\".concat(g,\"/\").concat(d,\"/\").concat(e);return n[e]||(n[e]=new gn)},o=r(\"\"),a=r(\":dels\"),e=f[s](i),t=e[0],e=e[1];if((\"query\"===s&&t.isPrimaryKey&&!i.values?a:r(t.name||\"\")).add(e),!t.isPrimaryKey){if(\"count\"!==s){var u=\"query\"===s&&l&&i.values&&p.query(_(_({},i),{values:!1}));return p[s].apply(this,arguments).then(function(t){if(\"query\"===s){if(l&&i.values)return u.then(function(e){e=e.result;return o.addKeys(e),t});var e=i.values?t.result.map(c):t.result;(i.values?o:a).addKeys(e)}else if(\"openCursor\"===s){var n=t,r=i.values;return n&&Object.create(n,{key:{get:function(){return a.addKey(n.primaryKey),n.key}},primaryKey:{get:function(){var e=n.primaryKey;return a.addKey(e),e}},value:{get:function(){return r&&o.addKey(n.primaryKey),n.value}}})}return t})}a.add(w)}}return p[s].apply(this,arguments)}}),t}})}};function Yn(e,t,n){if(0===n.numFailures)return t;if(\"deleteRange\"===t.type)return null;var r=t.keys?t.keys.length:\"values\"in t&&t.values?t.values.length:1;if(n.numFailures===r)return null;t=_({},t);return k(t.keys)&&(t.keys=t.keys.filter(function(e,t){return!(t in n.failures)})),\"values\"in t&&k(t.values)&&(t.values=t.values.filter(function(e,t){return!(t in n.failures)})),t}function $n(e,t){return n=e,(void 0===(r=t).lower||(r.lowerOpen?0<st(n,r.lower):0<=st(n,r.lower)))&&(e=e,void 0===(t=t).upper||(t.upperOpen?st(e,t.upper)<0:st(e,t.upper)<=0));var n,r}function Qn(e,d,t,n,r,i){if(!t||0===t.length)return e;var o=d.query.index,p=o.multiEntry,y=d.query.range,v=n.schema.primaryKey.extractKey,m=o.extractKey,a=(o.lowLevelIndex||o).extractKey,t=t.reduce(function(e,t){var n=e,r=[];if(\"add\"===t.type||\"put\"===t.type)for(var i=new gn,o=t.values.length-1;0<=o;--o){var a,u=t.values[o],s=v(u);i.hasKey(s)||(a=m(u),(p&&k(a)?a.some(function(e){return $n(e,y)}):$n(a,y))&&(i.addKey(s),r.push(u)))}switch(t.type){case\"add\":var c=(new gn).addKeys(d.values?e.map(function(e){return v(e)}):e),n=e.concat(d.values?r.filter(function(e){e=v(e);return!c.hasKey(e)&&(c.addKey(e),!0)}):r.map(function(e){return v(e)}).filter(function(e){return!c.hasKey(e)&&(c.addKey(e),!0)}));break;case\"put\":var l=(new gn).addKeys(t.values.map(function(e){return v(e)}));n=e.filter(function(e){return!l.hasKey(d.values?v(e):e)}).concat(d.values?r:r.map(function(e){return v(e)}));break;case\"delete\":var f=(new gn).addKeys(t.keys);n=e.filter(function(e){return!f.hasKey(d.values?v(e):e)});break;case\"deleteRange\":var h=t.range;n=e.filter(function(e){return!$n(v(e),h)})}return n},e);return t===e?e:(t.sort(function(e,t){return st(a(e),a(t))||st(v(e),v(t))}),d.limit&&d.limit<1/0&&(t.length>d.limit?t.length=d.limit:e.length===d.limit&&t.length<d.limit&&(r.dirty=!0)),i?Object.freeze(t):t)}function Gn(e,t){return 0===st(e.lower,t.lower)&&0===st(e.upper,t.upper)&&!!e.lowerOpen==!!t.lowerOpen&&!!e.upperOpen==!!t.upperOpen}function Xn(e,t){return function(e,t,n,r){if(void 0===e)return void 0!==t?-1:0;if(void 0===t)return 1;if(0===(t=st(e,t))){if(n&&r)return 0;if(n)return 1;if(r)return-1}return t}(e.lower,t.lower,e.lowerOpen,t.lowerOpen)<=0&&0<=function(e,t,n,r){if(void 0===e)return void 0!==t?1:0;if(void 0===t)return-1;if(0===(t=st(e,t))){if(n&&r)return 0;if(n)return-1;if(r)return 1}return t}(e.upper,t.upper,e.upperOpen,t.upperOpen)}function Hn(n,r,i,e){n.subscribers.add(i),e.addEventListener(\"abort\",function(){var e,t;n.subscribers.delete(i),0===n.subscribers.size&&(e=n,t=r,setTimeout(function(){0===e.subscribers.size&&q(t,e)},3e3))})}var Jn={stack:\"dbcore\",level:0,name:\"Cache\",create:function(k){var O=k.schema.name;return _(_({},k),{transaction:function(g,w,e){var _,t,x=k.transaction(g,w,e);return\"readwrite\"===w&&(t=(_=new AbortController).signal,e=function(b){return function(){if(_.abort(),\"readwrite\"===w){for(var t=new Set,e=0,n=g;e<n.length;e++){var r=n[e],i=Sn[\"idb://\".concat(O,\"/\").concat(r)];if(i){var o=k.table(r),a=i.optimisticOps.filter(function(e){return e.trans===x});if(x._explicit&&b&&x.mutatedParts)for(var u=0,s=Object.values(i.queries.query);u<s.length;u++)for(var c=0,l=(d=s[u]).slice();c<l.length;c++)En((p=l[c]).obsSet,x.mutatedParts)&&(q(d,p),p.subscribers.forEach(function(e){return t.add(e)}));else if(0<a.length){i.optimisticOps=i.optimisticOps.filter(function(e){return e.trans!==x});for(var f=0,h=Object.values(i.queries.query);f<h.length;f++)for(var d,p,y,v=0,m=(d=h[f]).slice();v<m.length;v++)null!=(p=m[v]).res&&x.mutatedParts&&(b&&!p.dirty?(y=Object.isFrozen(p.res),y=Qn(p.res,p.req,a,o,p,y),p.dirty?(q(d,p),p.subscribers.forEach(function(e){return t.add(e)})):y!==p.res&&(p.res=y,p.promise=_e.resolve({result:y}))):(p.dirty&&q(d,p),p.subscribers.forEach(function(e){return t.add(e)})))}}}t.forEach(function(e){return e()})}}},x.addEventListener(\"abort\",e(!1),{signal:t}),x.addEventListener(\"error\",e(!1),{signal:t}),x.addEventListener(\"complete\",e(!0),{signal:t})),x},table:function(c){var l=k.table(c),i=l.schema.primaryKey;return _(_({},l),{mutate:function(t){var e=me.trans;if(i.outbound||\"disabled\"===e.db._options.cache||e.explicit||\"readwrite\"!==e.idbtrans.mode)return l.mutate(t);var n=Sn[\"idb://\".concat(O,\"/\").concat(c)];if(!n)return l.mutate(t);e=l.mutate(t);return\"add\"!==t.type&&\"put\"!==t.type||!(50<=t.values.length||Mn(i,t).some(function(e){return null==e}))?(n.optimisticOps.push(t),t.mutatedParts&&Cn(t.mutatedParts),e.then(function(e){0<e.numFailures&&(q(n.optimisticOps,t),(e=Yn(0,t,e))&&n.optimisticOps.push(e),t.mutatedParts&&Cn(t.mutatedParts))}),e.catch(function(){q(n.optimisticOps,t),t.mutatedParts&&Cn(t.mutatedParts)})):e.then(function(r){var e=Yn(0,_(_({},t),{values:t.values.map(function(e,t){var n;if(r.failures[t])return e;e=null!==(n=i.keyPath)&&void 0!==n&&n.includes(\".\")?S(e):_({},e);return P(e,i.keyPath,r.results[t]),e})}),r);n.optimisticOps.push(e),queueMicrotask(function(){return t.mutatedParts&&Cn(t.mutatedParts)})}),e},query:function(t){if(!Vn(me,l)||!zn(\"query\",t))return l.query(t);var i=\"immutable\"===(null===(o=me.trans)||void 0===o?void 0:o.db._options.cache),e=me,n=e.requery,r=e.signal,o=function(e,t,n,r){var i=Sn[\"idb://\".concat(e,\"/\").concat(t)];if(!i)return[];if(!(t=i.queries[n]))return[null,!1,i,null];var o=t[(r.query?r.query.index.name:null)||\"\"];if(!o)return[null,!1,i,null];switch(n){case\"query\":var a=o.find(function(e){return e.req.limit===r.limit&&e.req.values===r.values&&Gn(e.req.query.range,r.query.range)});return a?[a,!0,i,o]:[o.find(function(e){return(\"limit\"in e.req?e.req.limit:1/0)>=r.limit&&(!r.values||e.req.values)&&Xn(e.req.query.range,r.query.range)}),!1,i,o];case\"count\":a=o.find(function(e){return Gn(e.req.query.range,r.query.range)});return[a,!!a,i,o]}}(O,c,\"query\",t),a=o[0],e=o[1],u=o[2],s=o[3];return a&&e?a.obsSet=t.obsSet:(e=l.query(t).then(function(e){var t=e.result;if(a&&(a.res=t),i){for(var n=0,r=t.length;n<r;++n)Object.freeze(t[n]);Object.freeze(t)}else e.result=S(t);return e}).catch(function(e){return s&&a&&q(s,a),Promise.reject(e)}),a={obsSet:t.obsSet,promise:e,subscribers:new Set,type:\"query\",req:t,dirty:!1},s?s.push(a):(s=[a],(u=u||(Sn[\"idb://\".concat(O,\"/\").concat(c)]={queries:{query:{},count:{}},objs:new Map,optimisticOps:[],unsignaledParts:{}})).queries.query[t.query.index.name||\"\"]=s)),Hn(a,s,n,r),a.promise.then(function(e){return{result:Qn(e.result,t,null==u?void 0:u.optimisticOps,l,a,i)}})}})}})}};function Zn(e,r){return new Proxy(e,{get:function(e,t,n){return\"db\"===t?r:Reflect.get(e,t,n)}})}var er=(tr.prototype.version=function(t){if(isNaN(t)||t<.1)throw new Y.Type(\"Given version is not a positive number\");if(t=Math.round(10*t)/10,this.idbdb||this._state.isBeingOpened)throw new Y.Schema(\"Cannot add version when database is open\");this.verno=Math.max(this.verno,t);var e=this._versions,n=e.filter(function(e){return e._cfg.version===t})[0];return n||(n=new this.Version(t),e.push(n),e.sort(nn),n.stores({}),this._state.autoSchema=!1,n)},tr.prototype._whenReady=function(e){var n=this;return this.idbdb&&(this._state.openComplete||me.letThrough||this._vip)?e():new _e(function(e,t){if(n._state.openComplete)return t(new Y.DatabaseClosed(n._state.dbOpenError));if(!n._state.isBeingOpened){if(!n._state.autoOpen)return void t(new Y.DatabaseClosed);n.open().catch(G)}n._state.dbReadyPromise.then(e,t)}).then(e)},tr.prototype.use=function(e){var t=e.stack,n=e.create,r=e.level,i=e.name;i&&this.unuse({stack:t,name:i});e=this._middlewares[t]||(this._middlewares[t]=[]);return e.push({stack:t,create:n,level:null==r?10:r,name:i}),e.sort(function(e,t){return e.level-t.level}),this},tr.prototype.unuse=function(e){var t=e.stack,n=e.name,r=e.create;return t&&this._middlewares[t]&&(this._middlewares[t]=this._middlewares[t].filter(function(e){return r?e.create!==r:!!n&&e.name!==n})),this},tr.prototype.open=function(){var e=this;return $e(ve,function(){return Dn(e)})},tr.prototype._close=function(){var n=this._state,e=et.indexOf(this);if(0<=e&&et.splice(e,1),this.idbdb){try{this.idbdb.close()}catch(e){}this.idbdb=null}n.isBeingOpened||(n.dbReadyPromise=new _e(function(e){n.dbReadyResolve=e}),n.openCanceller=new _e(function(e,t){n.cancelOpen=t}))},tr.prototype.close=function(e){var t=(void 0===e?{disableAutoOpen:!0}:e).disableAutoOpen,e=this._state;t?(e.isBeingOpened&&e.cancelOpen(new Y.DatabaseClosed),this._close(),e.autoOpen=!1,e.dbOpenError=new Y.DatabaseClosed):(this._close(),e.autoOpen=this._options.autoOpen||e.isBeingOpened,e.openComplete=!1,e.dbOpenError=null)},tr.prototype.delete=function(n){var i=this;void 0===n&&(n={disableAutoOpen:!0});var o=0<arguments.length&&\"object\"!=typeof arguments[0],a=this._state;return new _e(function(r,t){function e(){i.close(n);var e=i._deps.indexedDB.deleteDatabase(i.name);e.onsuccess=qe(function(){var e,t,n;e=i._deps,t=i.name,n=e.indexedDB,e=e.IDBKeyRange,vn(n)||t===tt||yn(n,e).delete(t).catch(G),r()}),e.onerror=Bt(t),e.onblocked=i._fireOnBlocked}if(o)throw new Y.InvalidArgument(\"Invalid closeOptions argument to db.delete()\");a.isBeingOpened?a.dbReadyPromise.then(e):e()})},tr.prototype.backendDB=function(){return this.idbdb},tr.prototype.isOpen=function(){return null!==this.idbdb},tr.prototype.hasBeenClosed=function(){var e=this._state.dbOpenError;return e&&\"DatabaseClosed\"===e.name},tr.prototype.hasFailed=function(){return null!==this._state.dbOpenError},tr.prototype.dynamicallyOpened=function(){return this._state.autoSchema},Object.defineProperty(tr.prototype,\"tables\",{get:function(){var t=this;return x(this._allTables).map(function(e){return t._allTables[e]})},enumerable:!1,configurable:!0}),tr.prototype.transaction=function(){var e=function(e,t,n){var r=arguments.length;if(r<2)throw new Y.InvalidArgument(\"Too few arguments\");for(var i=new Array(r-1);--r;)i[r-1]=arguments[r];return n=i.pop(),[e,w(i),n]}.apply(this,arguments);return this._transaction.apply(this,e)},tr.prototype._transaction=function(e,t,n){var r=this,i=me.trans;i&&i.db===this&&-1===e.indexOf(\"!\")||(i=null);var o,a,u=-1!==e.indexOf(\"?\");e=e.replace(\"!\",\"\").replace(\"?\",\"\");try{if(a=t.map(function(e){e=e instanceof r.Table?e.name:e;if(\"string\"!=typeof e)throw new TypeError(\"Invalid table argument to Dexie.transaction(). Only Table or String are allowed\");return e}),\"r\"==e||e===nt)o=nt;else{if(\"rw\"!=e&&e!=rt)throw new Y.InvalidArgument(\"Invalid transaction mode: \"+e);o=rt}if(i){if(i.mode===nt&&o===rt){if(!u)throw new Y.SubTransaction(\"Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY\");i=null}i&&a.forEach(function(e){if(i&&-1===i.storeNames.indexOf(e)){if(!u)throw new Y.SubTransaction(\"Table \"+e+\" not included in parent transaction.\");i=null}}),u&&i&&!i.active&&(i=null)}}catch(n){return i?i._promise(null,function(e,t){t(n)}):Xe(n)}var s=function i(o,a,u,s,c){return _e.resolve().then(function(){var e=me.transless||me,t=o._createTransaction(a,u,o._dbSchema,s);if(t.explicit=!0,e={trans:t,transless:e},s)t.idbtrans=s.idbtrans;else try{t.create(),t.idbtrans._explicit=!0,o._state.PR1398_maxLoop=3}catch(e){return e.name===z.InvalidState&&o.isOpen()&&0<--o._state.PR1398_maxLoop?(console.warn(\"Dexie: Need to reopen db\"),o.close({disableAutoOpen:!1}),o.open().then(function(){return i(o,a,u,null,c)})):Xe(e)}var n,r=B(c);return r&&Le(),e=_e.follow(function(){var e;(n=c.call(t,t))&&(r?(e=Ue.bind(null,null),n.then(e,e)):\"function\"==typeof n.next&&\"function\"==typeof n.throw&&(n=In(n)))},e),(n&&\"function\"==typeof n.then?_e.resolve(n).then(function(e){return t.active?e:Xe(new Y.PrematureCommit(\"Transaction committed too early. See http://bit.ly/2kdckMn\"))}):e.then(function(){return n})).then(function(e){return s&&t._resolve(),t._completion.then(function(){return e})}).catch(function(e){return t._reject(e),Xe(e)})})}.bind(null,this,o,a,i,n);return i?i._promise(o,s,\"lock\"):me.trans?$e(me.transless,function(){return r._whenReady(s)}):this._whenReady(s)},tr.prototype.table=function(e){if(!m(this._allTables,e))throw new Y.InvalidTable(\"Table \".concat(e,\" does not exist\"));return this._allTables[e]},tr);function tr(e,t){var o=this;this._middlewares={},this.verno=0;var n=tr.dependencies;this._options=t=_({addons:tr.addons,autoOpen:!0,indexedDB:n.indexedDB,IDBKeyRange:n.IDBKeyRange,cache:\"cloned\"},t),this._deps={indexedDB:t.indexedDB,IDBKeyRange:t.IDBKeyRange};n=t.addons;this._dbSchema={},this._versions=[],this._storeNames=[],this._allTables={},this.idbdb=null,this._novip=this;var a,r,u,i,s,c={dbOpenError:null,isBeingOpened:!1,onReadyBeingFired:null,openComplete:!1,dbReadyResolve:G,dbReadyPromise:null,cancelOpen:G,openCanceller:null,autoSchema:!0,PR1398_maxLoop:3,autoOpen:t.autoOpen};c.dbReadyPromise=new _e(function(e){c.dbReadyResolve=e}),c.openCanceller=new _e(function(e,t){c.cancelOpen=t}),this._state=c,this.name=e,this.on=dt(this,\"populate\",\"blocked\",\"versionchange\",\"close\",{ready:[re,G]}),this.on.ready.subscribe=p(this.on.ready.subscribe,function(i){return function(n,r){tr.vip(function(){var t,e=o._state;e.openComplete?(e.dbOpenError||_e.resolve().then(n),r&&i(n)):e.onReadyBeingFired?(e.onReadyBeingFired.push(n),r&&i(n)):(i(n),t=o,r||i(function e(){t.on.ready.unsubscribe(n),t.on.ready.unsubscribe(e)}))})}}),this.Collection=(a=this,pt(Ot.prototype,function(e,t){this.db=a;var n=ot,r=null;if(t)try{n=t()}catch(e){r=e}var i=e._ctx,t=i.table,e=t.hook.reading.fire;this._ctx={table:t,index:i.index,isPrimKey:!i.index||t.schema.primKey.keyPath&&i.index===t.schema.primKey.name,range:n,keysOnly:!1,dir:\"next\",unique:\"\",algorithm:null,filter:null,replayFilter:null,justLimit:!0,isMatch:null,offset:0,limit:1/0,error:r,or:i.or,valueMapper:e!==X?e:null}})),this.Table=(r=this,pt(ft.prototype,function(e,t,n){this.db=r,this._tx=n,this.name=e,this.schema=t,this.hook=r._allTables[e]?r._allTables[e].hook:dt(null,{creating:[Z,G],reading:[H,X],updating:[te,G],deleting:[ee,G]})})),this.Transaction=(u=this,pt(Lt.prototype,function(e,t,n,r,i){var o=this;this.db=u,this.mode=e,this.storeNames=t,this.schema=n,this.chromeTransactionDurability=r,this.idbtrans=null,this.on=dt(this,\"complete\",\"error\",\"abort\"),this.parent=i||null,this.active=!0,this._reculock=0,this._blockedFuncs=[],this._resolve=null,this._reject=null,this._waitingFor=null,this._waitingQueue=null,this._spinCount=0,this._completion=new _e(function(e,t){o._resolve=e,o._reject=t}),this._completion.then(function(){o.active=!1,o.on.complete.fire()},function(e){var t=o.active;return o.active=!1,o.on.error.fire(e),o.parent?o.parent._reject(e):t&&o.idbtrans&&o.idbtrans.abort(),Xe(e)})})),this.Version=(i=this,pt(dn.prototype,function(e){this.db=i,this._cfg={version:e,storesSource:null,dbschema:{},tables:{},contentUpgrade:null}})),this.WhereClause=(s=this,pt(Dt.prototype,function(e,t,n){if(this.db=s,this._ctx={table:e,index:\":id\"===t?null:t,or:n},this._cmp=this._ascending=st,this._descending=function(e,t){return st(t,e)},this._max=function(e,t){return 0<st(e,t)?e:t},this._min=function(e,t){return st(e,t)<0?e:t},this._IDBKeyRange=s._deps.IDBKeyRange,!this._IDBKeyRange)throw new Y.MissingAPI})),this.on(\"versionchange\",function(e){0<e.newVersion?console.warn(\"Another connection wants to upgrade database '\".concat(o.name,\"'. Closing db now to resume the upgrade.\")):console.warn(\"Another connection wants to delete database '\".concat(o.name,\"'. Closing db now to resume the delete request.\")),o.close({disableAutoOpen:!1})}),this.on(\"blocked\",function(e){!e.newVersion||e.newVersion<e.oldVersion?console.warn(\"Dexie.delete('\".concat(o.name,\"') was blocked\")):console.warn(\"Upgrade '\".concat(o.name,\"' blocked by other connection holding version \").concat(e.oldVersion/10))}),this._maxKey=Yt(t.IDBKeyRange),this._createTransaction=function(e,t,n,r){return new o.Transaction(e,t,n,o._options.chromeTransactionDurability,r)},this._fireOnBlocked=function(t){o.on(\"blocked\").fire(t),et.filter(function(e){return e.name===o.name&&e!==o&&!e._state.vcFired}).map(function(e){return e.on(\"versionchange\").fire(t)})},this.use(Un),this.use(Jn),this.use(Wn),this.use(Rn),this.use(Nn);var l=new Proxy(this,{get:function(e,t,n){if(\"_vip\"===t)return!0;if(\"table\"===t)return function(e){return Zn(o.table(e),l)};var r=Reflect.get(e,t,n);return r instanceof ft?Zn(r,l):\"tables\"===t?r.map(function(e){return Zn(e,l)}):\"_createTransaction\"===t?function(){return Zn(r.apply(this,arguments),l)}:r}});this.vip=l,n.forEach(function(e){return e(o)})}var nr,F=\"undefined\"!=typeof Symbol&&\"observable\"in Symbol?Symbol.observable:\"@@observable\",rr=(ir.prototype.subscribe=function(e,t,n){return this._subscribe(e&&\"function\"!=typeof e?e:{next:e,error:t,complete:n})},ir.prototype[F]=function(){return this},ir);function ir(e){this._subscribe=e}try{nr={indexedDB:f.indexedDB||f.mozIndexedDB||f.webkitIndexedDB||f.msIndexedDB,IDBKeyRange:f.IDBKeyRange||f.webkitIDBKeyRange}}catch(e){nr={indexedDB:null,IDBKeyRange:null}}function or(h){var d,p=!1,e=new rr(function(r){var i=B(h);var o,a=!1,u={},s={},e={get closed(){return a},unsubscribe:function(){a||(a=!0,o&&o.abort(),c&&Nt.storagemutated.unsubscribe(f))}};r.start&&r.start(e);var c=!1,l=function(){return Ge(t)};var f=function(e){Kn(u,e),En(s,u)&&l()},t=function(){var t,n,e;!a&&nr.indexedDB&&(u={},t={},o&&o.abort(),o=new AbortController,e=function(e){var t=je();try{i&&Le();var n=Ne(h,e);return n=i?n.finally(Ue):n}finally{t&&Ae()}}(n={subscr:t,signal:o.signal,requery:l,querier:h,trans:null}),Promise.resolve(e).then(function(e){p=!0,d=e,a||n.signal.aborted||(u={},function(e){for(var t in e)if(m(e,t))return;return 1}(s=t)||c||(Nt(Ft,f),c=!0),Ge(function(){return!a&&r.next&&r.next(e)}))},function(e){p=!1,[\"DatabaseClosedError\",\"AbortError\"].includes(null==e?void 0:e.name)||a||Ge(function(){a||r.error&&r.error(e)})}))};return setTimeout(l,0),e});return e.hasValue=function(){return p},e.getValue=function(){return d},e}var ar=er;function ur(e){var t=cr;try{cr=!0,Nt.storagemutated.fire(e),Tn(e,!0)}finally{cr=t}}r(ar,_(_({},Q),{delete:function(e){return new ar(e,{addons:[]}).delete()},exists:function(e){return new ar(e,{addons:[]}).open().then(function(e){return e.close(),!0}).catch(\"NoSuchDatabaseError\",function(){return!1})},getDatabaseNames:function(e){try{return t=ar.dependencies,n=t.indexedDB,t=t.IDBKeyRange,(vn(n)?Promise.resolve(n.databases()).then(function(e){return e.map(function(e){return e.name}).filter(function(e){return e!==tt})}):yn(n,t).toCollection().primaryKeys()).then(e)}catch(e){return Xe(new Y.MissingAPI)}var t,n},defineClass:function(){return function(e){a(this,e)}},ignoreTransaction:function(e){return me.trans?$e(me.transless,e):e()},vip:mn,async:function(t){return function(){try{var e=In(t.apply(this,arguments));return e&&\"function\"==typeof e.then?e:_e.resolve(e)}catch(e){return Xe(e)}}},spawn:function(e,t,n){try{var r=In(e.apply(n,t||[]));return r&&\"function\"==typeof r.then?r:_e.resolve(r)}catch(e){return Xe(e)}},currentTransaction:{get:function(){return me.trans||null}},waitFor:function(e,t){t=_e.resolve(\"function\"==typeof e?ar.ignoreTransaction(e):e).timeout(t||6e4);return me.trans?me.trans.waitFor(t):t},Promise:_e,debug:{get:function(){return ie},set:function(e){oe(e)}},derive:o,extend:a,props:r,override:p,Events:dt,on:Nt,liveQuery:or,extendObservabilitySet:Kn,getByKeyPath:O,setByKeyPath:P,delByKeyPath:function(t,e){\"string\"==typeof e?P(t,e,void 0):\"length\"in e&&[].map.call(e,function(e){P(t,e,void 0)})},shallowClone:g,deepClone:S,getObjectDiff:Fn,cmp:st,asap:v,minKey:-1/0,addons:[],connections:et,errnames:z,dependencies:nr,cache:Sn,semVer:\"4.0.11\",version:\"4.0.11\".split(\".\").map(function(e){return parseInt(e)}).reduce(function(e,t,n){return e+t/Math.pow(10,2*n)})})),ar.maxKey=Yt(ar.dependencies.IDBKeyRange),\"undefined\"!=typeof dispatchEvent&&\"undefined\"!=typeof addEventListener&&(Nt(Ft,function(e){cr||(e=new CustomEvent(Mt,{detail:e}),cr=!0,dispatchEvent(e),cr=!1)}),addEventListener(Mt,function(e){e=e.detail;cr||ur(e)}));var sr,cr=!1,lr=function(){};return\"undefined\"!=typeof BroadcastChannel&&((lr=function(){(sr=new BroadcastChannel(Mt)).onmessage=function(e){return e.data&&ur(e.data)}})(),\"function\"==typeof sr.unref&&sr.unref(),Nt(Ft,function(e){cr||sr.postMessage(e)})),\"undefined\"!=typeof addEventListener&&(addEventListener(\"pagehide\",function(e){if(!er.disableBfCache&&e.persisted){ie&&console.debug(\"Dexie: handling persisted pagehide\"),null!=sr&&sr.close();for(var t=0,n=et;t<n.length;t++)n[t].close({disableAutoOpen:!1})}}),addEventListener(\"pageshow\",function(e){!er.disableBfCache&&e.persisted&&(ie&&console.debug(\"Dexie: handling persisted pageshow\"),lr(),ur({all:new gn(-1/0,[[]])}))})),_e.rejectionMapper=function(e,t){return!e||e instanceof N||e instanceof TypeError||e instanceof SyntaxError||!e.name||!$[e.name]?e:(t=new $[e.name](t||e.message,e),\"stack\"in e&&l(t,\"stack\",{get:function(){return this.inner.stack}}),t)},oe(ie),_(er,Object.freeze({__proto__:null,Dexie:er,liveQuery:or,Entity:ut,cmp:st,PropModification:xt,replacePrefix:function(e,t){return new xt({replacePrefix:[e,t]})},add:function(e){return new xt({add:e})},remove:function(e){return new xt({remove:e})},default:er,RangeSet:gn,mergeRanges:_n,rangesOverlap:xn}),{default:er}),er});\n//# sourceMappingURL=dexie.min.js.map","// Making the module version consumable via require - to prohibit\n// multiple occurrancies of the same module in the same app\n// (dual package hazard, https://nodejs.org/api/packages.html#dual-package-hazard)\nimport _Dexie from \"./dist/dexie.min.js\";\nconst DexieSymbol = Symbol.for(\"Dexie\");\nconst Dexie = globalThis[DexieSymbol] || (globalThis[DexieSymbol] = _Dexie);\nif (_Dexie.semVer !== Dexie.semVer) {\n throw new Error(`Two different versions of Dexie loaded in the same app: ${_Dexie.semVer} and ${Dexie.semVer}`);\n}\nconst {\n liveQuery, mergeRanges, rangesOverlap, RangeSet, cmp, Entity,\n PropModification, replacePrefix, add, remove } = Dexie;\nexport { liveQuery, mergeRanges, rangesOverlap, RangeSet, cmp, Dexie, Entity,\n PropModification, replacePrefix, add, remove };\nexport default Dexie;\n","import { Dexie, Table } from 'dexie';\nimport type { CacheData, Identifiable } from './SnapTypes.js';\n\n/*========================================================================================================\n\n SNAP RECORDS DB CLASS\n\n Class responsible for managing IndexedDB storage for caching SnapRecords data\n\n Class responsible for managing IndexedDB storage for caching SnapRecords data.\n\n @template T - The type of records being cached, which must extend Identifiable and Record<string, unknown>.\n\n This class extends Dexie to provide a typed interface for storing and retrieving cached data\n in an IndexedDB database. It defines a single table, `cache`, which uses the record's URL as the primary key.\n The class handles database initialization, schema definition, and error logging during database opening.\n\n==========================================================================================================*/\n\nexport class SnapRecordsDB<T extends Identifiable & Record<string, unknown>> extends Dexie {\n // Table for storing cached data\n cache!: Table<CacheData<T>, string>;\n\n // Constructor initializes the IndexedDB database with a specific name\n constructor(name: string) {\n // Initialize Dexie with the provided name\n super(name);\n // Define database version and schema\n const dbVersion = 1.0;\n this.version(dbVersion).stores({\n // Define cache table with URL as the primary key\n cache: 'url, timestamp',\n });\n // Open the database, logging errors to the console if it fails\n this.open().catch(() => {\n // Error is automatically logged to the browser console\n });\n }\n}\n\n/*========================================================================================================\n SNAPRECORDSDB CLASS ENDS HERE\n==========================================================================================================*/\n","import {\n LogLevel,\n RowsPerPage,\n Identifiable,\n LifecycleHooks,\n SnapRecordsOptions,\n SnapRecordsConfigError\n} from './SnapTypes.js';\nimport { log } from './utils.js';\nimport { defaultOptions } from './SnapOptions.js'; \n\n/*========================================================================================================\n\n CONFIGURATION\n\n Class responsible for initializing and validating SnapRecords configuration options\n\n Class responsible for initializing, merging, and validating configuration options for SnapRecords.\n Ensures that user-provided options are combined with defaults, and validates all critical configuration\n aspects such as URL, columns, rows per page, column formatters, and lifecycle hooks. Provides warnings\n for non-critical issues and throws errors for invalid or missing mandatory options.\n\n @typeParam T - The record type, which must extend Identifiable and be an object.\n\n==========================================================================================================*/\n\nexport class Configuration<T extends Identifiable & Record<string, unknown>> {\n // Validated configuration options\n public readonly options: SnapRecordsOptions<T>;\n // Logger function for warnings, now uses the utility log function\n private logger: (level: LogLevel, message: string, ...args: unknown[]) => void;\n\n // Constructor initializes options by merging user-provided options with defaults\n constructor(\n userOptions: Partial<SnapRecordsOptions<T>>, \n debug: boolean, \n logger?: (level: LogLevel, message: string, ...args: unknown[]) => void)\n {\n // Merge user options with defaults\n this.options = { ...defaultOptions, ...userOptions } as SnapRecordsOptions<T>;\n // Set logger, defaulting to the utility log function with debug flag\n this.logger = logger || ((level, message, ...args) => log(debug, level, message, ...args));\n // Validate the merged options\n this.validate();\n }\n\n // Validates all configuration options\n private validate(): void {\n this.validateUrl();\n this.validateColumns();\n this.validateRowsPerPage();\n this.validateFormatters();\n this.validateLifecycleHooks();\n }\n\n // Validates lifecycle hooks\n private validateLifecycleHooks(): void {\n if (this.options.lifecycleHooks) {\n // Check each hook to ensure it's a function\n for (const key in this.options.lifecycleHooks) {\n if (\n typeof this.options.lifecycleHooks[key as keyof LifecycleHooks<T>] !==\n 'function'\n ) {\n this.logger(LogLevel.WARN, `lifecycleHook '${key}' is not a function.`);\n }\n }\n }\n }\n\n // Validates the URL option\n private validateUrl(): void {\n // Ensure URL is provided and is a string\n if (!this.options.url || typeof this.options.url !== 'string') {\n throw new SnapRecordsConfigError('URL option is mandatory and must be a string.');\n }\n try {\n // Validate URL format\n new URL(this.options.url, document.baseURI);\n } catch {\n throw new SnapRecordsConfigError(`Invalid URL provided: ${this.options.url}`);\n }\n }\n\n // Validates column formatters\n private validateFormatters(): void {\n if (this.options.columnFormatters) {\n // Check each formatter to ensure it's a function\n for (const key in this.options.columnFormatters) {\n if (typeof this.options.columnFormatters[key] !== 'function') {\n this.logger(LogLevel.WARN, `columnFormatters for column '${key}' is not a function.`);\n }\n }\n }\n }\n\n // Validates the columns option\n private validateColumns(): void {\n // Ensure columns is a non-empty array\n if (\n !this.options.columns ||\n !Array.isArray(this.options.columns) ||\n this.options.columns.length === 0\n ) {\n throw new SnapRecordsConfigError('Columns option must be a non-empty array.');\n }\n // Warn if column titles length doesn't match columns length\n if (\n this.options.columnTitles &&\n this.options.columns.length !== this.options.columnTitles.length\n ) {\n this.logger(LogLevel.WARN, 'The number of columns does not match the number of column titles.');\n }\n }\n\n // Validates the rowsPerPage option\n private validateRowsPerPage(): void {\n const rpp = this.options.rowsPerPage ?? RowsPerPage.DEFAULT;\n // Check if rowsPerPage is within the recommended range\n if (typeof rpp !== 'number' || rpp < 1 || rpp > 1000) {\n this.logger(LogLevel.WARN, `rowsPerPage value '${rpp}' is outside the recommended range (1-1000).`);\n }\n }\n\n}\n\n/*========================================================================================================\n CONFIGURATION OBJECT ENDS HERE\n==========================================================================================================*/","import { log } from './utils.js';\nimport { Translation, LogLevel } from './SnapTypes.js';\n\n/*========================================================================================================\n\n TRANSLATION MANAGER CLASS\n\n Class responsible for managing translation files and caching\n\n Manages the loading, caching, and retrieval of translation files for different languages.\n Handles retry logic for failed fetch attempts and provides a fallback mechanism to a default language.\n Designed to optimize translation file access by caching loaded translations in memory.\n\n==========================================================================================================*/\n\n// Exporting the class directly to allow per-instance configuration,\n// instead of using a shared singleton instance.\nexport class TranslationManager {\n // Debug flag from \n // parent SnapRecords instance\n #debug: boolean;\n // Maximum number of retry\n // attempts for fetching translations\n readonly #maxRetries = 3;\n // Base path for translation files\n #langPath: string = '/lang';\n // Delay between retry attempts in milliseconds\n readonly #retryDelay = 500;\n // Fallback language code\n readonly #fallbackLang = 'en_US';\n // In-memory cache for loaded translations\n #cache: Map<string, Translation> = new Map();\n // Logger function provided by the parent SnapRecords instance\n #logger: (level: LogLevel, message: string, ...args: unknown[]) => void;\n\n // Clears the translation cache\n public clearCache(): void {\n this.#cache.clear();\n this.#logger(LogLevel.INFO, 'Translation cache cleared.'); \n }\n\n // The constructor now receives\n // the language path, which will be provided\n // by the SnapRecords instance.\n constructor(\n langPath: string = '/lang', \n debug: boolean = false, \n logger?: (level: LogLevel, message: string, ...args: unknown[]) => void\n ) {\n this.#langPath = langPath;\n this.#debug = debug;\n // Use the provided logger or default to utils.log\n this.#logger = logger || ((level, message, ...args) => log(this.#debug, level, message, ...args));\n }\n\n // Fetches or retrieves cached translations for a given language\n public async get(lang: string): Promise<Translation> {\n // Return cached translation if available\n if (this.#cache.has(lang)) {\n this.#logger(LogLevel.INFO, `Translation for ${lang} found in cache.`); \n return this.#cache.get(lang)!;\n }\n\n this.#logger(LogLevel.INFO, `Attempting to load translation for: ${lang}`); \n\n // Attempt to fetch translation with retries\n for (let attempt = 1; attempt <= this.#maxRetries + 1; attempt++) {\n try {\n // Fetch translation file from the server using the configured path\n const response = await fetch(`${this.#langPath}/${lang}.json`);\n if (!response.ok) {\n throw new Error(\n `Translation file for ${lang} not found (status: ${response.status}).`\n );\n }\n // Parse and cache the translation\n const translation: Translation = await response.json();\n this.#cache.set(lang, translation);\n this.#logger(LogLevel.INFO, `Translation for ${lang} loaded and cached.`); \n return translation;\n } catch (error) {\n this.#logger(LogLevel.ERROR, `Failed to load translation for ${lang} (attempt ${attempt}):`, error); \n // Handle fetch failure\n if (attempt > this.#maxRetries) {\n // Fall back to default language if all retries fail\n if (lang === this.#fallbackLang) {\n // Prevent infinite recursion if fallback fails\n this.#logger(LogLevel.ERROR, `CRITICAL: Fallback translation '${this.#fallbackLang}' failed to load.`); \n throw new Error(\n `CRITICAL: Fallback translation '${this.#fallbackLang}' failed to load.`\n );\n }\n this.#logger(LogLevel.WARN, `All retries failed for ${lang}. Falling back to ${this.#fallbackLang}.`); \n // Attempt to fetch fallback language\n return this.get(this.#fallbackLang);\n }\n // Wait before retrying\n await new Promise((resolve) => setTimeout(resolve, this.#retryDelay * attempt));\n }\n }\n // Unreachable code for TypeScript validation\n throw new Error(`Failed to load translation for ${lang} and its fallback.`);\n }\n}\n\n/*========================================================================================================\n TRANSLATION MANAGER OBJECT ENDS HERE\n==========================================================================================================*/","import {\n ISnapApi,\n LogLevel,\n CacheData,\n RenderType,\n RowsPerPage,\n Translation,\n Identifiable,\n SortCondition,\n ISnapRenderer,\n LifecycleHooks,\n SnapRecordsState,\n ISnapEventManager,\n SnapRecordsOptions,\n SnapRecordsDataError,\n SnapRecordsConfigError,\n} from './SnapTypes.js';\nimport './scss/SnapRecords.scss';\nimport { LRUCache } from 'lru-cache';\nimport { SnapApi } from './SnapApi.js';\nimport { config } from './SnapOptions.js';\nimport { UrlManager } from './UrlManager.js';\nimport { sanitizeHTML, log } from './utils.js';\nimport { SnapRenderer } from './SnapRenderer.js';\nimport { CacheManager } from './CacheManager.js';\nimport { StateManager } from './StateManager.js';\nimport { EventManager } from './EventManager.js';\nimport { SnapRecordsDB } from './SnapRecordsDB.js';\nimport { Configuration } from './Configuration.js';\nimport defaultTranslations from './lang/en_US.json';\nimport { TranslationManager } from './Translations.js';\n\n// Type definition for a function that can be debounced\ntype DebounceableFunction = (...args: unknown[]) => void;\n\n/*========================================================================================================\n\n SNAP RECORDS CLASS\n\n Main class for the SnapRecords plugin, responsible for managing data tables with pagination,\n sorting, and filtering\n\n The SnapRecords class is the main entry point for the SnapRecords plugin.\n It manages the lifecycle, state, rendering, and data operations for interactive data tables.\n This includes handling pagination, sorting, filtering, caching, localization, and user interactions.\n The class is highly configurable and extensible, supporting custom renderers, event managers,\n and lifecycle hooks for advanced use cases.\n\n==========================================================================================================*/\n\nexport class SnapRecords<T extends Identifiable & Record<string, unknown>> {\n // Private API instance for public method access\n #api!: ISnapApi<T>;\n // Debounced function to load data, preventing rapid successive calls\n #debouncedLoadData!: () => void;\n // LRU cache for storing formatted cell values to improve performance\n #formatCache: LRUCache<string, string>;\n // Configuration instance holding validated user options\n #config: Configuration<T>;\n // Bound handler for window unload event to clean up resources\n #boundUnloadHandler!: () => void;\n\n // Current state of the SnapRecords instance, including data, pagination, and filters\n public state: SnapRecordsState<T>;\n // HTML element serving as the container for the table\n public readonly container: HTMLElement;\n // Container for the table content, appended to the main container\n public contentContainer: HTMLElement;\n // Container for error messages, displayed when data loading fails\n public errorContainer: HTMLElement | null = null;\n\n // IndexedDB instance for caching data\n public readonly db: SnapRecordsDB<T>;\n // Renderer instance for rendering the UI (table, list, or cards)\n public readonly renderer: ISnapRenderer<T>;\n // Event manager for handling user interactions (clicks, key presses, etc.)\n public readonly eventManager: ISnapEventManager;\n // State manager for updating and persisting state\n public readonly stateManager: StateManager<T>;\n // URL manager for constructing API request URLs\n public readonly urlManager: UrlManager<T>;\n // Cache manager for handling data caching\n public readonly cacheManager: CacheManager<T>;\n\n // Flag indicating if data is currently being loaded\n public isLoading: boolean = false;\n // Base URL for API requests\n public baseUrl!: string;\n // Flag to enable or disable caching\n public useCache!: boolean;\n // Flag to enable URL state persistence via pushState\n public usePushState!: boolean;\n // CSS classes for header cells, allowing custom styling\n public headerCellClasses: string[] = [];\n // Delay for debouncing data load requests (in milliseconds)\n public debounceDelay!: number;\n // Cache expiration time (in milliseconds)\n public cacheExpiry!: number;\n // Flag to enable draggable columns\n public draggableColumns!: boolean;\n // Flag to enable row selection\n public selectable!: boolean;\n // Flag to enable state persistence in localStorage\n public persistState!: boolean;\n // Flag to destroy the instance on window unload\n public destroyOnUnload!: boolean;\n // Flag to enable preloading of the next page\n public preloadNextPageEnabled!: boolean;\n // Flag to enable lazy loading of media (e.g., images)\n public lazyLoadMedia!: boolean;\n // Set of indices of selected rows\n public selectedRows: Set<number> = new Set();\n // Index of the currently highlighted row for keyboard navigation\n public currentRowIndex: number = -1;\n // Configuration for the previous page button\n public prevButtonConfig!: {\n text?: string;\n isHtml?: boolean;\n template?: (page: number | string) => string;\n };\n // Configuration for the next page button\n public nextButtonConfig!: {\n text?: string;\n isHtml?: boolean;\n template?: (page: number | string) => string;\n };\n // Number of retry attempts for failed data fetches\n public retryAttempts!: number;\n // Maximum size of the format cache\n public formatCacheSize!: number;\n // Flag to enable debug logging\n public debug: boolean = false;\n // Lifecycle hooks for custom behavior at various stages\n public lifecycleHooks!: LifecycleHooks<T>;\n // Translation manager for handling language files\n public readonly translationManager: TranslationManager; // Add a property for the TranslationManager instance.\n // Formatters for custom cell value rendering\n public columnFormatters?: { [columnKey: string]: (value: unknown, row: T) => string };\n // Hash of the last applied filters for cache invalidation\n public lastFilterHash: string = '';\n\n // Getter for the localStorage key used to persist state\n public get storageKey(): string {\n return `snap-records-state-${this.container.id}`;\n }\n\n // Constructor initializes the SnapRecords instance with a container ID and options\n constructor(containerId: string, options: Partial<SnapRecordsOptions<T>> = {}) {\n // Measure initialization time for performance logging\n const startTime = performance.now();\n // Find the container element by ID\n const containerEl = document.getElementById(containerId);\n if (!containerEl)\n throw new SnapRecordsConfigError(`Container with ID '${containerId}' not found.`);\n this.container = containerEl;\n // Create a content container for the table\n this.contentContainer = document.createElement('div');\n\n // Initialize debug flag early as it's used by the logger\n this.debug = options.debug ?? false; // Initialize debug from options\n\n // Initialize configuration with user options and a warning logger\n // Corrected: Pass this.debug and this.log directly\n this.#config = new Configuration(options, this.debug, this.log.bind(this));\n const configOptions = this.#config.options;\n // Initialize instance properties from options\n this.#initializeProperties(configOptions);\n\n window.addEventListener('error', (event) => {\n this.log(LogLevel.ERROR, 'Unhandled error', event.error);\n });\n\n window.addEventListener('unhandledrejection', (event) => {\n this.log(LogLevel.ERROR, 'Unhandled promise rejection', event.reason);\n });\n\n // Initialize the LRU cache for formatted values\n this.#formatCache = new LRUCache<string, string>({ max: this.formatCacheSize });\n\n // Initialize the state with default values\n this.state = {\n currentPage: 1,\n rowsPerPage: configOptions.rowsPerPage ?? RowsPerPage.DEFAULT,\n filters: {},\n sortConditions: [],\n columns: [...configOptions.columns],\n columnTitles: [...(configOptions.columnTitles ?? configOptions.columns)],\n columnWidths: new Map(),\n data: [],\n totalRecords: 0,\n format: configOptions.format ?? RenderType.TABLE,\n language: configOptions.language ?? 'en_US',\n translations: null,\n theme: configOptions.theme ?? 'default',\n headerCellClasses: [...(configOptions.headerCellClasses ?? [])],\n };\n\n // Define callbacks for event manager\n const eventCallbacks = {\n reorderColumns: this.reorderColumns.bind(this),\n requestDataLoad: this.refresh.bind(this),\n };\n\n // Initialize dependencies, passing 'this.log' for standardized logging\n this.db = new SnapRecordsDB<T>(`SnapRecordsDB_${this.container.id}`);\n // This ensures each SnapRecords instance can have its own path for translations.\n this.translationManager = new TranslationManager(\n configOptions.langPath, this.debug, this.log.bind(this)\n );\n this.stateManager = options.stateManager?.(this) ?? new StateManager(this);\n this.urlManager = options.urlManager?.(this) ?? new UrlManager(this);\n this.cacheManager =\n options.cacheManager?.(this, this.urlManager) ??\n new CacheManager(this, this.urlManager);\n this.renderer =\n options.renderer?.(this, this.contentContainer) ??\n new SnapRenderer(this, this.contentContainer);\n this.eventManager =\n options.eventManager?.(this, this.renderer, eventCallbacks) ??\n new EventManager(this, this.renderer, eventCallbacks);\n\n // Initialize the public API\n this.#api = new SnapApi(this);\n // Create a debounced data load function\n this.#debouncedLoadData = this.#debounce(() => this.loadData(), this.debounceDelay);\n\n // Perform initial setup\n this.#initialize();\n this.log(LogLevel.INFO, `SnapRecords initialized in ${performance.now() - startTime}ms.`);\n }\n\n // Returns the public API instance\n public getApi(): ISnapApi<T> {\n return this.#api;\n }\n\n // Returns the current data array\n public getData(): ReadonlyArray<T> {\n return this.state.data;\n }\n\n // Returns the total number of records\n public getTotals(): { totalRecords: number } {\n return { totalRecords: this.state.totalRecords };\n }\n\n // Logs messages based on the debug flag and log level\n // This is the standardized log method that calls utils.log\n public log(level: LogLevel, ...args: unknown[]): void {\n log(this.debug, level, ...args);\n }\n\n // Refreshes the data by triggering a load\n public refresh(): void {\n this.log(LogLevel.INFO, 'Data refresh requested.');\n this.#debouncedLoadData();\n }\n\n // Clears all row selections\n public clearSelection(): void {\n this.log(LogLevel.INFO, 'Clearing all row selections.');\n this.selectedRows.clear();\n this.renderer.highlightSelectedRows();\n }\n\n // Navigates to the specified page\n public gotoPage(page: number): void {\n this.log(LogLevel.INFO, `Navigating to page ${page}.`);\n this.stateManager.setState((draft) => {\n draft.currentPage = page;\n });\n this.clearFormatCache();\n this.#debouncedLoadData();\n }\n\n // Sets the theme (light or dark)\n public setTheme(theme: 'light' | 'dark'): void {\n if (this.state.theme !== theme) {\n this.log(LogLevel.INFO, `Setting theme to: ${theme}`);\n this.stateManager.setState((draft) => {\n (draft.theme as 'light' | 'dark') = theme;\n });\n this.renderer.applyThemeClass();\n }\n }\n\n // Creates a new mobile card\n public createMobileCard(row: T, index: number): HTMLDivElement {\n const card = document.createElement('div');\n card.classList.add(config.classes.mobileCard);\n card.setAttribute('data-key', row.id.toString());\n card.setAttribute('role', 'rowgroup');\n this.updateMobileCard(card, row, index);\n return card;\n }\n\n // Creates a new list item\n public createListItem(row: T, index: number): HTMLLIElement {\n const li = document.createElement('li');\n li.classList.add(...config.classes.list.itemClass.split(' '));\n li.setAttribute('data-index', index.toString());\n li.setAttribute('data-key', row.id.toString());\n li.setAttribute('role', 'listitem');\n this.updateListItem(li, row, index);\n return li;\n }\n\n // Sets the rendering mode (table, list, or mobile cards)\n public setRenderMode(mode: RenderType): void {\n if (this.state.format !== mode) {\n this.log(LogLevel.INFO, `Setting render mode to: ${mode}`);\n this.stateManager.setState((draft) => {\n (draft.format as RenderType) = mode;\n });\n this.clearFormatCache();\n this.renderer.render();\n this.eventManager.setupAllHandlers();\n }\n }\n\n // Clears the in-memory format cache\n public clearFormatCache(): void {\n this.#formatCache.clear();\n this.log(LogLevel.INFO, 'In-memory format cache cleared.');\n }\n\n // Destroys the SnapRecords instance, cleaning up resources\n public destroy(): void {\n this.log(LogLevel.LOG, 'Destroying SnapRecords Instance...');\n this.eventManager.destroy();\n this.renderer.destroy();\n this.db.close();\n\n // Clear the cache of the instance-specific translation manager.\n this.translationManager.clearCache();\n\n if (this.destroyOnUnload) {\n window.removeEventListener('beforeunload', this.#boundUnloadHandler);\n }\n }\n\n // Updates a mobile card with new data\n public updateMobileCard(div: HTMLDivElement, row: T, index: number): void {\n div.setAttribute('data-index', index.toString());\n div.innerHTML = '';\n this.state.columns.forEach((col: string) => {\n const cardRow = document.createElement('div');\n cardRow.classList.add(config.classes.cardRow);\n cardRow.setAttribute('role', 'row');\n const label = document.createElement('span');\n label.classList.add(config.classes.cardLabel);\n label.setAttribute('role', 'columnheader');\n const value = document.createElement('span');\n value.classList.add(config.classes.cardValue);\n value.setAttribute('role', 'cell');\n const colIdx = this.state.columns.indexOf(col);\n const headerTitle = colIdx !== -1 ? this.state.columnTitles[colIdx] : col;\n label.textContent = `${headerTitle}:`;\n value.innerHTML = this.getFormattedValue(row[col as keyof T], col, row);\n cardRow.appendChild(label);\n cardRow.appendChild(value);\n div.appendChild(cardRow);\n });\n }\n\n // Reorders columns based on drag-and-drop interactions\n public reorderColumns(sourceColId: string, targetColId: string): void {\n this.stateManager.setState((draft) => {\n // Find indices of source and target columns\n const sourceIndex = draft.columns.indexOf(sourceColId);\n const targetIndex = draft.columns.indexOf(targetColId);\n if (sourceIndex === -1 || targetIndex === -1) return;\n\n // Reorder columns\n const cols = draft.columns as string[];\n const titles = draft.columnTitles as string[];\n const classes = draft.headerCellClasses as string[];\n\n const [sourceColumn] = cols.splice(sourceIndex, 1);\n cols.splice(targetIndex, 0, sourceColumn);\n\n const [sourceTitle] = titles.splice(sourceIndex, 1);\n titles.splice(targetIndex, 0, sourceTitle);\n\n if (classes.length > 0) {\n const [sourceClass] = classes.splice(sourceIndex, 1);\n classes.splice(targetIndex, 0, sourceClass);\n }\n this.log(LogLevel.INFO, `Columns reordered. New order: ${cols.join(', ')}`);\n });\n\n // Clear format cache as column order affects rendering\n this.clearFormatCache();\n // Re-render the UI\n this.renderer.render();\n // Re-attach event handlers\n this.eventManager.setupAllHandlers();\n }\n\n // Formats a cell value, using cache and formatters if available\n public getFormattedValue(value: unknown, column: string, row: T): string {\n const cacheKey = `${row.id}_${column}`;\n\n if (this.#formatCache.has(cacheKey)) {\n return this.#formatCache.get(cacheKey)!;\n }\n\n const formatted =\n this.columnFormatters && this.columnFormatters[column]\n ? this.columnFormatters[column](value, row)\n : String(value ?? '');\n\n let finalHtml = sanitizeHTML(formatted);\n\n if (this.lazyLoadMedia) {\n finalHtml = finalHtml.replace(/<img /g, '<img loading=\"lazy\" ');\n }\n\n this.#formatCache.set(cacheKey, finalHtml);\n\n return finalHtml;\n }\n\n // Loads data, checking cache first and falling back to API fetch\n public async loadData(attempt: number = 1): Promise<void> {\n if (!this.baseUrl) return;\n this.#startPerfMark('data-load');\n this.log(LogLevel.INFO, 'Starting data load process...');\n this.renderer.showLoading();\n try {\n this.cacheManager.invalidateCache();\n const url = this.urlManager.buildUrl(this.urlManager.getServerParams());\n\n if (this.useCache) {\n const cached = await this.cacheManager.getCachedData(url);\n if (cached && Date.now() - cached.timestamp < this.cacheExpiry) {\n await this.#handleCachedResponse(cached);\n return;\n }\n }\n await this.#fetchAndProcessData(url, attempt);\n } catch (error) {\n this.#handleDataLoadError(error, attempt, this.baseUrl);\n } finally {\n this.renderer.hideLoading();\n this.#endPerfMark('data-load');\n }\n }\n\n // Performs a search with the provided filters\n public search(filters: Record<string, string>, merge: boolean = false): void {\n this.log(LogLevel.INFO, 'Performing search with filters:', { filters, merge });\n this.stateManager.setState((draft) => {\n draft.currentPage = 1;\n (draft.filters as Record<string, string>) = merge\n ? { ...draft.filters, ...filters }\n : filters;\n });\n this.clearFormatCache();\n this.#debouncedLoadData();\n }\n\n // Returns the currently selected rows\n public getSelectedRows(): T[] {\n return Array.from(this.selectedRows).map((index) => this.state.data[index]) as T[];\n }\n\n // Updates a list item with new data\n public updateListItem(li: HTMLLIElement, row: T, index: number): void {\n li.setAttribute('data-index', index.toString());\n const formattedContent = this.state.columns\n .map((col: string) => {\n const colIndex = this.state.columns.indexOf(col);\n const headerTitle = colIndex !== -1 ? this.state.columnTitles[colIndex] : col;\n const value = this.getFormattedValue(row[col as keyof T], col, row);\n return `<strong>${headerTitle}:</strong> ${value}`;\n })\n .join(' | ');\n li.innerHTML = formattedContent;\n }\n\n // Sets the number of rows per page\n public setRowsPerPage(newRowsPerPage: RowsPerPage): void {\n if (this.state.rowsPerPage !== newRowsPerPage) {\n this.log(LogLevel.INFO, `Setting rows per page to: ${newRowsPerPage}`);\n this.stateManager.setState((draft) => {\n draft.rowsPerPage = newRowsPerPage;\n draft.currentPage = 1;\n });\n this.clearFormatCache();\n this.#debouncedLoadData();\n this.renderer.announceScreenReaderUpdate(`Rows per page changed to ${newRowsPerPage}`);\n }\n }\n\n // Updates a table row with new data\n public updateRow(tr: HTMLTableRowElement, row: T, index: number): void {\n tr.setAttribute('data-index', index.toString());\n\n const fragment = document.createDocumentFragment();\n this.state.columns.forEach((col) => {\n const colName = col as string;\n const td = document.createElement('td');\n td.setAttribute('role', 'gridcell');\n td.setAttribute('data-col-id', colName);\n const formattedValue = this.getFormattedValue(row[colName as keyof T], colName, row);\n td.innerHTML = formattedValue;\n td.dataset.lastValue = formattedValue;\n fragment.appendChild(td);\n });\n\n tr.innerHTML = '';\n tr.appendChild(fragment);\n }\n\n // Creates a new table row\n public createTableRow(row: T, index: number, rowKey: string | number): HTMLTableRowElement {\n const tr = document.createElement('tr');\n tr.setAttribute('role', 'row');\n tr.setAttribute('data-index', index.toString());\n tr.setAttribute('data-key', String(rowKey));\n this.state.columns.forEach((col) => {\n const colName = col as string;\n const td = document.createElement('td');\n td.setAttribute('role', 'gridcell');\n td.setAttribute('data-col-id', colName);\n const formattedValue = this.getFormattedValue(row[colName as keyof T], colName, row);\n td.innerHTML = formattedValue;\n td.dataset.lastValue = formattedValue;\n tr.appendChild(td);\n });\n return tr;\n }\n\n // Resets the instance to its initial state\n public reset(): void {\n this.log(LogLevel.INFO, 'Resetting instance to initial state.');\n if (this.persistState) localStorage.removeItem(this.storageKey);\n this.stateManager.setState((draft) => {\n const configOptions = this.#config.options;\n draft.currentPage = 1;\n (draft.filters as Record<string, string>) = {};\n (draft.sortConditions as SortCondition[]) = [];\n (draft.columns as string[]) = [...(configOptions.columns || [])];\n (draft.columnTitles as string[]) = [\n ...(configOptions.columnTitles || configOptions.columns || []),\n ];\n (draft.headerCellClasses as string[]) = [...(configOptions.headerCellClasses || [])];\n (draft.columnWidths as Map<string, number>) = new Map();\n });\n this.clearFormatCache();\n this.#debouncedLoadData();\n }\n\n // Updates state parameters and triggers a data reload\n public updateParams(\n params: Partial<\n Pick<SnapRecordsState<T>, 'currentPage' | 'rowsPerPage' | 'filters' | 'sortConditions'>\n >\n ): void {\n this.log(LogLevel.INFO, 'Updating parameters.', params);\n this.stateManager.setState((draft) => {\n Object.assign(draft, params);\n });\n this.clearFormatCache();\n this.#debouncedLoadData();\n }\n\n // Handles a cached response by updating state and rendering\n async #handleCachedResponse(cached: CacheData<T>): Promise<void> {\n this.log(LogLevel.INFO, 'Using cached response for URL:', cached.url);\n this.stateManager.setState((draft) => {\n (draft.data as T[]) = cached.data;\n draft.totalRecords = cached.totalRecords;\n });\n this.renderer.render();\n this.eventManager.setupAllHandlers();\n if (this.preloadNextPageEnabled) this.cacheManager.preloadNextPage();\n }\n\n // Fetches data from the API and processes the response\n async #fetchAndProcessData(url: string, attempt: number): Promise<void> {\n this.log(LogLevel.INFO, `Fetching data from URL (Attempt ${attempt}): ${url}`);\n if (this.lifecycleHooks.preDataLoad)\n this.lifecycleHooks.preDataLoad(this.urlManager.getServerParams());\n const response = await fetch(url);\n if (!response.ok) throw new SnapRecordsDataError(`HTTP error! status: ${response.status}`);\n const data = await response.json();\n await this.#processSuccessfulResponse(data, url);\n }\n\n // Processes a successful API response\n async #processSuccessfulResponse(\n data: { data: T[]; totalRecords: number },\n url: string\n ): Promise<void> {\n const receivedData: T[] = data.data || [];\n this.log(LogLevel.INFO, 'Successfully fetched and processed data.', {\n url,\n totalRecords: data.totalRecords,\n receivedCount: receivedData.length,\n });\n this.stateManager.setState((draft) => {\n (draft.data as T[]) = receivedData;\n draft.totalRecords = data.totalRecords || 0;\n });\n if (this.useCache)\n await this.cacheManager.cacheData(url, {\n url: url,\n data: [...this.state.data],\n totalRecords: this.state.totalRecords,\n timestamp: Date.now(),\n });\n if (this.lifecycleHooks.postDataLoad) this.lifecycleHooks.postDataLoad(this.state.data);\n this.clearFormatCache();\n this.renderer.render();\n this.eventManager.setupAllHandlers();\n if (this.preloadNextPageEnabled) this.cacheManager.preloadNextPage();\n }\n\n // Sets the language and reloads translations\n public async setLanguage(newLanguage: string): Promise<void> {\n if (this.state.language !== newLanguage) {\n this.log(LogLevel.INFO, `Setting language to: ${newLanguage}`);\n // Use the instance-specific translation manager to get the new language file.\n const translations =\n (await this.translationManager.get(newLanguage)) ?? defaultTranslations;\n this.stateManager.setState((draft) => {\n (draft.language as string) = newLanguage;\n draft.translations = translations;\n });\n this.clearFormatCache();\n this.renderer.render();\n this.eventManager.setupAllHandlers();\n }\n }\n\n #startPerfMark(label: string) {\n if (this.debug) performance.mark(`${label}-start`);\n }\n\n #endPerfMark(label: string) {\n if (this.debug) {\n performance.mark(`${label}-end`);\n performance.measure(label, `${label}-start`, `${label}-end`);\n const measure = performance.getEntriesByName(label)[0];\n this.log(LogLevel.INFO, `${label} took ${measure.duration}ms`);\n }\n }\n\n // Creates a debounced version of a function\n #debounce(fn: DebounceableFunction, delay: number): () => void {\n let timeoutId: number | null = null;\n return (...args: unknown[]) => {\n if (timeoutId) clearTimeout(timeoutId);\n timeoutId = window.setTimeout(() => fn(...args), delay);\n };\n }\n\n // Handles data load errors with retries\n #handleDataLoadError(error: unknown, _attempt: number, url: string): void {\n if (_attempt <= this.retryAttempts && !(error instanceof SnapRecordsDataError)) {\n this.log(LogLevel.WARN, `Retry attempt ${_attempt} for URL:`, url, { error });\n this.loadData(_attempt + 1);\n return;\n }\n const errMessage = (\n this.state.translations ?? defaultTranslations\n ).errors.dataLoadingFailed.replace('{error}', (error as Error).message);\n this.log(LogLevel.ERROR, 'Data load failed after all retries:', { error, url });\n this.renderer.showError(errMessage);\n }\n\n // Initializes the component by setting up containers, loading state, and fetching data\n async #initialize(): Promise<void> {\n this.log(LogLevel.INFO, 'Starting component initialization...');\n // Create UI containers\n this.renderer.createContainers();\n // Load persisted state if enabled\n if (this.persistState) this.stateManager.loadStateFromStorage();\n // Load state from URL if enabled\n this.stateManager.loadFromURL();\n // Apply the current theme\n this.renderer.applyThemeClass();\n\n try {\n // Load translations for the current language\n // Load translations for the current language using the instance-specific manager.\n const translations =\n (await this.translationManager.get(this.state.language)) ?? defaultTranslations;\n this.stateManager.setState((draft) => {\n draft.translations = translations;\n });\n } catch (error) {\n // Handle translation loading errors by falling back to default translations\n this.log(LogLevel.ERROR, 'Failed to initialize translations', error);\n const defaultTrans = defaultTranslations as Translation;\n this.stateManager.setState((draft) => {\n draft.translations = defaultTrans;\n });\n this.renderer.showError(defaultTrans.errors.generic);\n } finally {\n // Render the UI, set up event handlers, and load data\n this.renderer.render();\n this.eventManager.setupAllHandlers();\n this.#debouncedLoadData();\n this.log(LogLevel.INFO, 'Component initialization finished.');\n }\n }\n\n // Initializes instance properties from configuration options\n #initializeProperties(options: SnapRecordsOptions<T>): void {\n this.log(LogLevel.LOG, 'Initializing instance properties from options.');\n // debug flag is already initialized in constructor before Configuration is used\n this.baseUrl = options.url;\n this.useCache = options.useCache ?? false;\n this.usePushState = options.usePushState ?? false;\n this.columnFormatters = options.columnFormatters;\n this.debounceDelay = config.constants.defaultDebounceDelay;\n this.cacheExpiry = options.cacheExpiry ?? config.constants.defaultCacheExpiry;\n this.selectable = options.selectable ?? false;\n this.lifecycleHooks = options.lifecycleHooks ?? {};\n this.draggableColumns = options.draggableColumns ?? false;\n this.preloadNextPageEnabled = options.preloadNextPage ?? false;\n this.lazyLoadMedia = options.lazyLoadMedia ?? false;\n this.persistState = options.persistState ?? false;\n this.destroyOnUnload = options.destroyOnUnload ?? true;\n this.retryAttempts = options.retryAttempts ?? 3;\n this.formatCacheSize = options.formatCacheSize ?? 500;\n this.prevButtonConfig = { ...config.pagination.prevButton, ...options.prevButton };\n this.nextButtonConfig = { ...config.pagination.nextButton, ...options.nextButton };\n this.#boundUnloadHandler = this.destroy.bind(this);\n if (this.destroyOnUnload) window.addEventListener('beforeunload', this.#boundUnloadHandler);\n }\n}\n\n/*========================================================================================================\n SNAPRECORDS CLASS ENDS HERE\n==========================================================================================================*/"],"names":["_parent","LogLevel","RenderType","OrderDirection","RowsPerPage","_a","_b","_c","v","bf","config","self","currentPage","this","e","t","n","r","i","o","global","a","u","s","h","d","c","l","f","w","p","y","m","b","g","_","k","O","x"],"mappings":"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","x_google_ignoreList":[1,8,11,12]}
1
+ {"version":3,"file":"snap-records.es.js","sources":["../src/SnapTypes.ts","../node_modules/lru-cache/dist/esm/index.js","../src/SnapApi.ts","../src/SnapOptions.ts","../src/utils.ts","../src/UrlManager.ts","../src/SnapRenderer.ts","../src/CacheManager.ts","../node_modules/immer/dist/immer.mjs","../src/StateManager.ts","../src/EventManager.ts","../node_modules/dexie/dist/dexie.min.js","../node_modules/dexie/import-wrapper-prod.mjs","../src/SnapRecordsDB.ts","../src/Configuration.ts","../src/Translations.ts","../src/SnapRecords.ts"],"sourcesContent":["import type { Draft } from 'immer';\nimport type { UrlManager } from './UrlManager.js';\nimport type { SnapRecords } from './SnapRecords.js';\nimport type { StateManager } from './StateManager.js';\nimport type { CacheManager } from './CacheManager.js';\n\n/*========================================================================================================\n\n SNAP TYPES FILES\n\n This file defines all core TypeScript types, interfaces, enums, and utility classes\n used by the SnapRecords data table library. It provides type safety and structure for\n configuration, state management, rendering, event handling, error reporting, and\n extensibility of the SnapRecords component. The types in this file are intended to be\n imported and used throughout the SnapRecords codebase to ensure consistent and robust\n API design.\n\n==========================================================================================================*/\n\n// Enum defining log levels for debugging and error reporting\nexport enum LogLevel {\n // General logging for detailed tracing\n LOG = 'log',\n // Informational messages about normal operations\n INFO = 'info',\n // Warnings for non-critical issues\n WARN = 'warn',\n // Errors for critical failures\n ERROR = 'error',\n}\n\n// Enum specifying supported rendering modes for data display\nexport enum RenderType {\n // Displays data in a tabular format\n TABLE = 'table',\n // Displays data as a list of items\n LIST = 'list',\n // Displays data as cards optimized for mobile devices\n MOBILE_CARDS = 'mobile_cards',\n}\n\n// Enum defining sort order directions\nexport enum OrderDirection {\n // Ascending order (e.g., A-Z, 1-10)\n ASC = 'ASC',\n // Descending order (e.g., Z-A, 10-1)\n DESC = 'DESC',\n}\n\n// Enum listing supported rows per page options for pagination\nexport enum RowsPerPage {\n // Default number of rows per page\n DEFAULT = 10,\n // 20 rows per page\n TWENTY = 20,\n // 50 rows per page\n FIFTY = 50,\n // 100 rows per page\n HUNDRED = 100,\n // 250 rows per page\n TWO_HUNDRED_FIFTY = 250,\n // 500 rows per page\n FIVE_HUNDRED = 500,\n // 1000 rows per page\n THOUSAND = 1000,\n}\n\n// Interface requiring an ID property for data records\nexport interface Identifiable {\n // Unique identifier for each data record\n id: string | number;\n}\n\nexport interface PersistedState {\n columns: string[];\n columnWidths: [string, number][];\n sortConditions: SortCondition[];\n filters: Record<string, string>;\n currentPage: number;\n rowsPerPage: RowsPerPage;\n headerCellClasses: string[];\n}\n\n// Interface defining the structure of translation objects\nexport interface Translation {\n // Error messages for various failure scenarios\n errors: {\n // Generic error message for unexpected issues\n generic: string;\n // Error for invalid configuration\n invalidConfig: string;\n // Error when the container element is not found\n containerNotFound: string;\n // Error for data loading failures\n dataLoadingFailed: string;\n // Error for rendering failures\n renderFailed: string;\n };\n // Message displayed during data loading\n loading: string;\n // Label for total records count\n totalRecords: string;\n // Label for filtered records count\n filteredRecords: string;\n // Title for error messages\n errorTitle: string;\n // Generic error message content\n errorMessage: string;\n // Message when no data is available\n noDataAvailable: string;\n // Label for the previous page button\n previous: string;\n // Label for the next page button\n next: string;\n // Label for the retry button\n retry: string;\n // Pagination-related translations\n pagination: {\n // Template for showing record range (e.g., \"Showing 1-10 of 50\")\n showingRecords: string;\n };\n // Label for the current page\n currentPage: string;\n // Label for jumping to a specific page\n jumpToPage: string;\n // Accessibility label for page navigation\n pageNavigation: string;\n // Label for sorting in ascending order\n sortAscending: string;\n // Label for sorting in descending order\n sortDescending: string;\n // Label for removing sort\n removeSort: string;\n // Announcement when a row is selected\n rowSelected: string;\n // Announcement when a row is deselected\n rowDeselected: string;\n // Label for column resize handle\n columnResizeHandle: string;\n // Label for draggable columns\n dragColumn: string;\n // Label for loading more data\n loadMore: string;\n}\n\n// Interface for the event manager, handling user interactions\nexport interface ISnapEventManager {\n // Sets up all event handlers for user interactions\n setupAllHandlers(): void;\n // Removes all event listeners and cleans up\n destroy(): void;\n}\n\n// Type defining button types for pagination\nexport type ButtonType = 'prev' | 'next' | 'number';\n\n// Custom error class for configuration-related issues\nexport class SnapRecordsConfigError extends Error {\n constructor(message: string) {\n super(message);\n // Set the error name for identification\n this.name = 'SnapRecordsConfigError';\n }\n}\n\n// Custom error class for data-related issues\nexport class SnapRecordsDataError extends Error {\n constructor(message: string) {\n super(message);\n // Set the error name for identification\n this.name = 'SnapRecordsDataError';\n }\n}\n\n// Interface defining the configuration for pagination buttons\nexport interface ButtonConfig {\n // CSS class names for styling\n classNames: {\n // Base class for the button\n base: string;\n // Class applied when the button is disabled\n disabled: string;\n };\n // Flag indicating if the button content is HTML\n isHtml: boolean;\n // Optional template function for custom button content\n template?: (page: number | string) => string;\n}\n\n// Type defining a sort condition as a tuple of column name and direction\nexport type SortCondition = [string, OrderDirection];\n\n// Interface for server request parameters\nexport interface ServerRequestParams {\n // Current page number\n page: number;\n // Number of records per page\n perPage: number;\n // Offset for pagination\n offset: number;\n // Optional filters for data\n filtering?: Record<string, string>;\n // Optional sorting conditions\n sorting?: Record<string, 'ASC' | 'DESC'>;\n}\n\n// Type defining callbacks for the event manager\nexport type EventManagerCallbacks = {\n // Callback for reordering columns\n reorderColumns: (sourceColId: string, targetColId: string) => void;\n // Callback to request a data reload\n requestDataLoad: () => void;\n};\n\n// Type for state update functions using Immer drafts\nexport type StateUpdater<T extends Identifiable & Record<string, unknown>> = (\n draft: Draft<SnapRecordsState<T>>\n) => void;\n\n// Interface for cached data structure\nexport interface CacheData<T extends Identifiable & Record<string, unknown>> {\n // URL of the cached request\n url: string;\n // Cached data array\n data: T[];\n // Total number of records\n totalRecords: number;\n // Timestamp of when the data was cached\n timestamp: number;\n}\n\n// Interface for lifecycle hooks to customize behavior\nexport interface LifecycleHooks<T extends Identifiable & Record<string, unknown>> {\n // Called before data is loaded\n preDataLoad?: (params: ServerRequestParams) => void;\n // Called after data is loaded\n postDataLoad?: (data: ReadonlyArray<T>) => void;\n // Called before rendering\n preRender?: () => void;\n // Called after rendering\n postRender?: () => void;\n // Called when row selection changes\n selectionChanged?: (selectedRows: T[]) => void;\n}\n\n// Interface for the renderer, handling UI rendering\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport interface ISnapRenderer<T extends Identifiable & Record<string, unknown>> {\n // Table body element\n readonly tableBody: HTMLTableSectionElement | null;\n // List container element\n readonly listContainer: HTMLUListElement | null;\n // Mobile cards container element\n readonly cardsContainer: HTMLElement | null;\n // Table header element\n readonly tableHeader: HTMLTableSectionElement | null;\n // Renders the UI based on the current state\n render(): void;\n // Cleans up the renderer\n destroy(): void;\n // Creates necessary DOM containers\n createContainers(): void;\n // Applies the current theme\n applyThemeClass(): void;\n // Shows a loading indicator\n showLoading(): void;\n // Hides the loading indicator\n hideLoading(): void;\n // Displays an error message\n showError(message: string): void;\n // Announces updates for screen readers\n announceScreenReaderUpdate(message: string): void;\n // Highlights selected rows\n highlightSelectedRows(): void;\n // Highlights the current row for keyboard navigation\n highlightCurrentRow(): void;\n // Navigates to the next row\n navigateToNextRow(): void;\n // Navigates to the previous row\n navigateToPrevRow(): void;\n // Applies column widths\n applyColumnWidths(): void;\n}\n\n// Interface defining the state of a SnapRecords instance\nexport interface SnapRecordsState<T extends Identifiable & Record<string, unknown>> {\n // Current page number\n readonly currentPage: number;\n // Number of rows per page\n readonly rowsPerPage: number;\n // Applied filters\n readonly filters: Readonly<Record<string, string>>;\n // Applied sort conditions\n readonly sortConditions: ReadonlyArray<SortCondition>;\n // List of column names\n readonly columns: ReadonlyArray<string>;\n // List of column titles\n readonly columnTitles: ReadonlyArray<string>;\n // Map of column widths\n readonly columnWidths: ReadonlyMap<string, number>;\n // Current data array\n readonly data: ReadonlyArray<T>;\n // Total number of records\n readonly totalRecords: number;\n // Current rendering mode\n readonly format: RenderType;\n // Current language code\n readonly language: string;\n // Current translations\n readonly translations: Translation | null;\n // Current theme (light, dark, or default)\n readonly theme: 'light' | 'dark' | 'default';\n // CSS classes for header cells\n readonly headerCellClasses: ReadonlyArray<string>;\n}\n\n// Interface for SnapRecords configuration options\nexport interface SnapRecordsOptions<T extends Identifiable & Record<string, unknown>> {\n // API URL for data fetching\n url: string;\n // List of column names\n columns: string[];\n // Optional list of column titles\n columnTitles?: string[];\n // Rendering mode\n format?: RenderType;\n // Number of rows per page\n rowsPerPage?: RowsPerPage;\n // Flag to enable caching\n useCache?: boolean;\n // Flag to enable URL state persistence\n usePushState?: boolean;\n // Language code for translations\n language?: string;\n // Path to the language files directory\n langPath?: string;\n // CSS classes for header cells\n headerCellClasses?: string[];\n // Cache expiration time\n cacheExpiry?: number;\n // Flag to enable row selection\n selectable?: boolean;\n // Lifecycle hooks for customization\n lifecycleHooks?: LifecycleHooks<T>;\n // Theme (light, dark, or default)\n theme?: 'light' | 'dark' | 'default';\n // Flag to enable draggable columns\n draggableColumns?: boolean;\n // Configuration for the previous page button\n prevButton?: {\n // Button text\n text?: string;\n // Flag indicating if text is HTML\n isHtml?: boolean;\n // Template function for button content\n template?: (page: number | string) => string;\n };\n // Configuration for the next page button\n nextButton?: {\n // Button text\n text?: string;\n // Flag indicating if text is HTML\n isHtml?: boolean;\n // Template function for button content\n template?: (page: number | string) => string;\n };\n // Number of retry attempts for failed fetches\n retryAttempts?: number;\n // Flag to enable preloading of the next page\n preloadNextPage?: boolean;\n // Flag to enable state persistence\n persistState?: boolean;\n // Flag to destroy the instance on window unload\n destroyOnUnload?: boolean;\n // Flag to enable debug logging\n debug?: boolean;\n // Flag to enable lazy loading of media\n lazyLoadMedia?: boolean;\n // Size of the format cache\n formatCacheSize?: number;\n // Optional custom event manager\n eventManager?: (\n parent: SnapRecords<T>,\n renderer: ISnapRenderer<T>,\n callbacks: EventManagerCallbacks\n ) => ISnapEventManager;\n // Optional custom state manager\n stateManager?: (parent: SnapRecords<T>) => StateManager<T>;\n // Optional custom URL manager\n urlManager?: (parent: SnapRecords<T>) => UrlManager<T>;\n // Optional formatters for custom cell rendering\n columnFormatters?: { [columnKey: string]: (value: unknown, row: T) => string };\n // Optional custom renderer\n renderer?: (parent: SnapRecords<T>, container: HTMLElement) => ISnapRenderer<T>;\n // Optional custom cache manager\n cacheManager?: (parent: SnapRecords<T>, urlManager: UrlManager<T>) => CacheManager<T>;\n}\n\n// Interface for the public API of SnapRecords\nexport interface ISnapApi<T extends Identifiable & Record<string, unknown>> {\n // Resets the instance to its initial state\n reset(): void;\n // Destroys the instance\n destroy(): void;\n // Refreshes the data\n refresh(): void;\n // Clears all row selections\n clearSelection(): void;\n // Returns the selected rows\n getSelectedRows(): T[];\n // Returns the current data array\n getData(): ReadonlyArray<T>;\n // Navigates to a specific page\n gotoPage(page: number): void;\n // Returns the total number of records\n getTotals(): { totalRecords: number };\n // Sets the rendering mode\n setRenderMode(mode: RenderType): void;\n // Sets the theme\n setTheme(theme: 'light' | 'dark' | 'default'): void;\n // Sets the language\n setLanguage(newLanguage: string): Promise<void>;\n // Sets the number of rows per page\n setRowsPerPage(newRowsPerPage: RowsPerPage): void;\n // Performs a search with filters\n search(filters: Record<string, string>, merge?: boolean): void;\n // Updates state parameters\n updateParams(\n params: Partial<\n Pick<SnapRecordsState<T>, 'currentPage' | 'rowsPerPage' | 'filters' | 'sortConditions'>\n >\n ): void;\n}\n\n/*========================================================================================================\n SNAP TYPES FILES ENDS HERE\n==========================================================================================================*/\n","/**\n * @module LRUCache\n */\nconst perf = typeof performance === 'object' &&\n performance &&\n typeof performance.now === 'function'\n ? performance\n : Date;\nconst warned = new Set();\n/* c8 ignore start */\nconst PROCESS = (typeof process === 'object' && !!process ? process : {});\n/* c8 ignore start */\nconst emitWarning = (msg, type, code, fn) => {\n typeof PROCESS.emitWarning === 'function'\n ? PROCESS.emitWarning(msg, type, code, fn)\n : console.error(`[${code}] ${type}: ${msg}`);\n};\nlet AC = globalThis.AbortController;\nlet AS = globalThis.AbortSignal;\n/* c8 ignore start */\nif (typeof AC === 'undefined') {\n //@ts-ignore\n AS = class AbortSignal {\n onabort;\n _onabort = [];\n reason;\n aborted = false;\n addEventListener(_, fn) {\n this._onabort.push(fn);\n }\n };\n //@ts-ignore\n AC = class AbortController {\n constructor() {\n warnACPolyfill();\n }\n signal = new AS();\n abort(reason) {\n if (this.signal.aborted)\n return;\n //@ts-ignore\n this.signal.reason = reason;\n //@ts-ignore\n this.signal.aborted = true;\n //@ts-ignore\n for (const fn of this.signal._onabort) {\n fn(reason);\n }\n this.signal.onabort?.(reason);\n }\n };\n let printACPolyfillWarning = PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1';\n const warnACPolyfill = () => {\n if (!printACPolyfillWarning)\n return;\n printACPolyfillWarning = false;\n emitWarning('AbortController is not defined. If using lru-cache in ' +\n 'node 14, load an AbortController polyfill from the ' +\n '`node-abort-controller` package. A minimal polyfill is ' +\n 'provided for use by LRUCache.fetch(), but it should not be ' +\n 'relied upon in other contexts (eg, passing it to other APIs that ' +\n 'use AbortController/AbortSignal might have undesirable effects). ' +\n 'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.', 'NO_ABORT_CONTROLLER', 'ENOTSUP', warnACPolyfill);\n };\n}\n/* c8 ignore stop */\nconst shouldWarn = (code) => !warned.has(code);\nconst TYPE = Symbol('type');\nconst isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n);\n/* c8 ignore start */\n// This is a little bit ridiculous, tbh.\n// The maximum array length is 2^32-1 or thereabouts on most JS impls.\n// And well before that point, you're caching the entire world, I mean,\n// that's ~32GB of just integers for the next/prev links, plus whatever\n// else to hold that many keys and values. Just filling the memory with\n// zeroes at init time is brutal when you get that big.\n// But why not be complete?\n// Maybe in the future, these limits will have expanded.\nconst getUintArray = (max) => !isPosInt(max)\n ? null\n : max <= Math.pow(2, 8)\n ? Uint8Array\n : max <= Math.pow(2, 16)\n ? Uint16Array\n : max <= Math.pow(2, 32)\n ? Uint32Array\n : max <= Number.MAX_SAFE_INTEGER\n ? ZeroArray\n : null;\n/* c8 ignore stop */\nclass ZeroArray extends Array {\n constructor(size) {\n super(size);\n this.fill(0);\n }\n}\nclass Stack {\n heap;\n length;\n // private constructor\n static #constructing = false;\n static create(max) {\n const HeapCls = getUintArray(max);\n if (!HeapCls)\n return [];\n Stack.#constructing = true;\n const s = new Stack(max, HeapCls);\n Stack.#constructing = false;\n return s;\n }\n constructor(max, HeapCls) {\n /* c8 ignore start */\n if (!Stack.#constructing) {\n throw new TypeError('instantiate Stack using Stack.create(n)');\n }\n /* c8 ignore stop */\n this.heap = new HeapCls(max);\n this.length = 0;\n }\n push(n) {\n this.heap[this.length++] = n;\n }\n pop() {\n return this.heap[--this.length];\n }\n}\n/**\n * Default export, the thing you're using this module to get.\n *\n * The `K` and `V` types define the key and value types, respectively. The\n * optional `FC` type defines the type of the `context` object passed to\n * `cache.fetch()` and `cache.memo()`.\n *\n * Keys and values **must not** be `null` or `undefined`.\n *\n * All properties from the options object (with the exception of `max`,\n * `maxSize`, `fetchMethod`, `memoMethod`, `dispose` and `disposeAfter`) are\n * added as normal public members. (The listed options are read-only getters.)\n *\n * Changing any of these will alter the defaults for subsequent method calls.\n */\nexport class LRUCache {\n // options that cannot be changed without disaster\n #max;\n #maxSize;\n #dispose;\n #onInsert;\n #disposeAfter;\n #fetchMethod;\n #memoMethod;\n /**\n * {@link LRUCache.OptionsBase.ttl}\n */\n ttl;\n /**\n * {@link LRUCache.OptionsBase.ttlResolution}\n */\n ttlResolution;\n /**\n * {@link LRUCache.OptionsBase.ttlAutopurge}\n */\n ttlAutopurge;\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnGet}\n */\n updateAgeOnGet;\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnHas}\n */\n updateAgeOnHas;\n /**\n * {@link LRUCache.OptionsBase.allowStale}\n */\n allowStale;\n /**\n * {@link LRUCache.OptionsBase.noDisposeOnSet}\n */\n noDisposeOnSet;\n /**\n * {@link LRUCache.OptionsBase.noUpdateTTL}\n */\n noUpdateTTL;\n /**\n * {@link LRUCache.OptionsBase.maxEntrySize}\n */\n maxEntrySize;\n /**\n * {@link LRUCache.OptionsBase.sizeCalculation}\n */\n sizeCalculation;\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}\n */\n noDeleteOnFetchRejection;\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}\n */\n noDeleteOnStaleGet;\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}\n */\n allowStaleOnFetchAbort;\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}\n */\n allowStaleOnFetchRejection;\n /**\n * {@link LRUCache.OptionsBase.ignoreFetchAbort}\n */\n ignoreFetchAbort;\n // computed properties\n #size;\n #calculatedSize;\n #keyMap;\n #keyList;\n #valList;\n #next;\n #prev;\n #head;\n #tail;\n #free;\n #disposed;\n #sizes;\n #starts;\n #ttls;\n #hasDispose;\n #hasFetchMethod;\n #hasDisposeAfter;\n #hasOnInsert;\n /**\n * Do not call this method unless you need to inspect the\n * inner workings of the cache. If anything returned by this\n * object is modified in any way, strange breakage may occur.\n *\n * These fields are private for a reason!\n *\n * @internal\n */\n static unsafeExposeInternals(c) {\n return {\n // properties\n starts: c.#starts,\n ttls: c.#ttls,\n sizes: c.#sizes,\n keyMap: c.#keyMap,\n keyList: c.#keyList,\n valList: c.#valList,\n next: c.#next,\n prev: c.#prev,\n get head() {\n return c.#head;\n },\n get tail() {\n return c.#tail;\n },\n free: c.#free,\n // methods\n isBackgroundFetch: (p) => c.#isBackgroundFetch(p),\n backgroundFetch: (k, index, options, context) => c.#backgroundFetch(k, index, options, context),\n moveToTail: (index) => c.#moveToTail(index),\n indexes: (options) => c.#indexes(options),\n rindexes: (options) => c.#rindexes(options),\n isStale: (index) => c.#isStale(index),\n };\n }\n // Protected read-only members\n /**\n * {@link LRUCache.OptionsBase.max} (read-only)\n */\n get max() {\n return this.#max;\n }\n /**\n * {@link LRUCache.OptionsBase.maxSize} (read-only)\n */\n get maxSize() {\n return this.#maxSize;\n }\n /**\n * The total computed size of items in the cache (read-only)\n */\n get calculatedSize() {\n return this.#calculatedSize;\n }\n /**\n * The number of items stored in the cache (read-only)\n */\n get size() {\n return this.#size;\n }\n /**\n * {@link LRUCache.OptionsBase.fetchMethod} (read-only)\n */\n get fetchMethod() {\n return this.#fetchMethod;\n }\n get memoMethod() {\n return this.#memoMethod;\n }\n /**\n * {@link LRUCache.OptionsBase.dispose} (read-only)\n */\n get dispose() {\n return this.#dispose;\n }\n /**\n * {@link LRUCache.OptionsBase.onInsert} (read-only)\n */\n get onInsert() {\n return this.#onInsert;\n }\n /**\n * {@link LRUCache.OptionsBase.disposeAfter} (read-only)\n */\n get disposeAfter() {\n return this.#disposeAfter;\n }\n constructor(options) {\n const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, onInsert, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, memoMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort, } = options;\n if (max !== 0 && !isPosInt(max)) {\n throw new TypeError('max option must be a nonnegative integer');\n }\n const UintArray = max ? getUintArray(max) : Array;\n if (!UintArray) {\n throw new Error('invalid max value: ' + max);\n }\n this.#max = max;\n this.#maxSize = maxSize;\n this.maxEntrySize = maxEntrySize || this.#maxSize;\n this.sizeCalculation = sizeCalculation;\n if (this.sizeCalculation) {\n if (!this.#maxSize && !this.maxEntrySize) {\n throw new TypeError('cannot set sizeCalculation without setting maxSize or maxEntrySize');\n }\n if (typeof this.sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation set to non-function');\n }\n }\n if (memoMethod !== undefined &&\n typeof memoMethod !== 'function') {\n throw new TypeError('memoMethod must be a function if defined');\n }\n this.#memoMethod = memoMethod;\n if (fetchMethod !== undefined &&\n typeof fetchMethod !== 'function') {\n throw new TypeError('fetchMethod must be a function if specified');\n }\n this.#fetchMethod = fetchMethod;\n this.#hasFetchMethod = !!fetchMethod;\n this.#keyMap = new Map();\n this.#keyList = new Array(max).fill(undefined);\n this.#valList = new Array(max).fill(undefined);\n this.#next = new UintArray(max);\n this.#prev = new UintArray(max);\n this.#head = 0;\n this.#tail = 0;\n this.#free = Stack.create(max);\n this.#size = 0;\n this.#calculatedSize = 0;\n if (typeof dispose === 'function') {\n this.#dispose = dispose;\n }\n if (typeof onInsert === 'function') {\n this.#onInsert = onInsert;\n }\n if (typeof disposeAfter === 'function') {\n this.#disposeAfter = disposeAfter;\n this.#disposed = [];\n }\n else {\n this.#disposeAfter = undefined;\n this.#disposed = undefined;\n }\n this.#hasDispose = !!this.#dispose;\n this.#hasOnInsert = !!this.#onInsert;\n this.#hasDisposeAfter = !!this.#disposeAfter;\n this.noDisposeOnSet = !!noDisposeOnSet;\n this.noUpdateTTL = !!noUpdateTTL;\n this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection;\n this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection;\n this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort;\n this.ignoreFetchAbort = !!ignoreFetchAbort;\n // NB: maxEntrySize is set to maxSize if it's set\n if (this.maxEntrySize !== 0) {\n if (this.#maxSize !== 0) {\n if (!isPosInt(this.#maxSize)) {\n throw new TypeError('maxSize must be a positive integer if specified');\n }\n }\n if (!isPosInt(this.maxEntrySize)) {\n throw new TypeError('maxEntrySize must be a positive integer if specified');\n }\n this.#initializeSizeTracking();\n }\n this.allowStale = !!allowStale;\n this.noDeleteOnStaleGet = !!noDeleteOnStaleGet;\n this.updateAgeOnGet = !!updateAgeOnGet;\n this.updateAgeOnHas = !!updateAgeOnHas;\n this.ttlResolution =\n isPosInt(ttlResolution) || ttlResolution === 0\n ? ttlResolution\n : 1;\n this.ttlAutopurge = !!ttlAutopurge;\n this.ttl = ttl || 0;\n if (this.ttl) {\n if (!isPosInt(this.ttl)) {\n throw new TypeError('ttl must be a positive integer if specified');\n }\n this.#initializeTTLTracking();\n }\n // do not allow completely unbounded caches\n if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) {\n throw new TypeError('At least one of max, maxSize, or ttl is required');\n }\n if (!this.ttlAutopurge && !this.#max && !this.#maxSize) {\n const code = 'LRU_CACHE_UNBOUNDED';\n if (shouldWarn(code)) {\n warned.add(code);\n const msg = 'TTL caching without ttlAutopurge, max, or maxSize can ' +\n 'result in unbounded memory consumption.';\n emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache);\n }\n }\n }\n /**\n * Return the number of ms left in the item's TTL. If item is not in cache,\n * returns `0`. Returns `Infinity` if item is in cache without a defined TTL.\n */\n getRemainingTTL(key) {\n return this.#keyMap.has(key) ? Infinity : 0;\n }\n #initializeTTLTracking() {\n const ttls = new ZeroArray(this.#max);\n const starts = new ZeroArray(this.#max);\n this.#ttls = ttls;\n this.#starts = starts;\n this.#setItemTTL = (index, ttl, start = perf.now()) => {\n starts[index] = ttl !== 0 ? start : 0;\n ttls[index] = ttl;\n if (ttl !== 0 && this.ttlAutopurge) {\n const t = setTimeout(() => {\n if (this.#isStale(index)) {\n this.#delete(this.#keyList[index], 'expire');\n }\n }, ttl + 1);\n // unref() not supported on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref();\n }\n /* c8 ignore stop */\n }\n };\n this.#updateItemAge = index => {\n starts[index] = ttls[index] !== 0 ? perf.now() : 0;\n };\n this.#statusTTL = (status, index) => {\n if (ttls[index]) {\n const ttl = ttls[index];\n const start = starts[index];\n /* c8 ignore next */\n if (!ttl || !start)\n return;\n status.ttl = ttl;\n status.start = start;\n status.now = cachedNow || getNow();\n const age = status.now - start;\n status.remainingTTL = ttl - age;\n }\n };\n // debounce calls to perf.now() to 1s so we're not hitting\n // that costly call repeatedly.\n let cachedNow = 0;\n const getNow = () => {\n const n = perf.now();\n if (this.ttlResolution > 0) {\n cachedNow = n;\n const t = setTimeout(() => (cachedNow = 0), this.ttlResolution);\n // not available on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref();\n }\n /* c8 ignore stop */\n }\n return n;\n };\n this.getRemainingTTL = key => {\n const index = this.#keyMap.get(key);\n if (index === undefined) {\n return 0;\n }\n const ttl = ttls[index];\n const start = starts[index];\n if (!ttl || !start) {\n return Infinity;\n }\n const age = (cachedNow || getNow()) - start;\n return ttl - age;\n };\n this.#isStale = index => {\n const s = starts[index];\n const t = ttls[index];\n return !!t && !!s && (cachedNow || getNow()) - s > t;\n };\n }\n // conditionally set private methods related to TTL\n #updateItemAge = () => { };\n #statusTTL = () => { };\n #setItemTTL = () => { };\n /* c8 ignore stop */\n #isStale = () => false;\n #initializeSizeTracking() {\n const sizes = new ZeroArray(this.#max);\n this.#calculatedSize = 0;\n this.#sizes = sizes;\n this.#removeItemSize = index => {\n this.#calculatedSize -= sizes[index];\n sizes[index] = 0;\n };\n this.#requireSize = (k, v, size, sizeCalculation) => {\n // provisionally accept background fetches.\n // actual value size will be checked when they return.\n if (this.#isBackgroundFetch(v)) {\n return 0;\n }\n if (!isPosInt(size)) {\n if (sizeCalculation) {\n if (typeof sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation must be a function');\n }\n size = sizeCalculation(v, k);\n if (!isPosInt(size)) {\n throw new TypeError('sizeCalculation return invalid (expect positive integer)');\n }\n }\n else {\n throw new TypeError('invalid size value (must be positive integer). ' +\n 'When maxSize or maxEntrySize is used, sizeCalculation ' +\n 'or size must be set.');\n }\n }\n return size;\n };\n this.#addItemSize = (index, size, status) => {\n sizes[index] = size;\n if (this.#maxSize) {\n const maxSize = this.#maxSize - sizes[index];\n while (this.#calculatedSize > maxSize) {\n this.#evict(true);\n }\n }\n this.#calculatedSize += sizes[index];\n if (status) {\n status.entrySize = size;\n status.totalCalculatedSize = this.#calculatedSize;\n }\n };\n }\n #removeItemSize = _i => { };\n #addItemSize = (_i, _s, _st) => { };\n #requireSize = (_k, _v, size, sizeCalculation) => {\n if (size || sizeCalculation) {\n throw new TypeError('cannot set size without setting maxSize or maxEntrySize on cache');\n }\n return 0;\n };\n *#indexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#tail; true;) {\n if (!this.#isValidIndex(i)) {\n break;\n }\n if (allowStale || !this.#isStale(i)) {\n yield i;\n }\n if (i === this.#head) {\n break;\n }\n else {\n i = this.#prev[i];\n }\n }\n }\n }\n *#rindexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#head; true;) {\n if (!this.#isValidIndex(i)) {\n break;\n }\n if (allowStale || !this.#isStale(i)) {\n yield i;\n }\n if (i === this.#tail) {\n break;\n }\n else {\n i = this.#next[i];\n }\n }\n }\n }\n #isValidIndex(index) {\n return (index !== undefined &&\n this.#keyMap.get(this.#keyList[index]) === index);\n }\n /**\n * Return a generator yielding `[key, value]` pairs,\n * in order from most recently used to least recently used.\n */\n *entries() {\n for (const i of this.#indexes()) {\n if (this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield [this.#keyList[i], this.#valList[i]];\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.entries}\n *\n * Return a generator yielding `[key, value]` pairs,\n * in order from least recently used to most recently used.\n */\n *rentries() {\n for (const i of this.#rindexes()) {\n if (this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield [this.#keyList[i], this.#valList[i]];\n }\n }\n }\n /**\n * Return a generator yielding the keys in the cache,\n * in order from most recently used to least recently used.\n */\n *keys() {\n for (const i of this.#indexes()) {\n const k = this.#keyList[i];\n if (k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield k;\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.keys}\n *\n * Return a generator yielding the keys in the cache,\n * in order from least recently used to most recently used.\n */\n *rkeys() {\n for (const i of this.#rindexes()) {\n const k = this.#keyList[i];\n if (k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield k;\n }\n }\n }\n /**\n * Return a generator yielding the values in the cache,\n * in order from most recently used to least recently used.\n */\n *values() {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n if (v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield this.#valList[i];\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.values}\n *\n * Return a generator yielding the values in the cache,\n * in order from least recently used to most recently used.\n */\n *rvalues() {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i];\n if (v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield this.#valList[i];\n }\n }\n }\n /**\n * Iterating over the cache itself yields the same results as\n * {@link LRUCache.entries}\n */\n [Symbol.iterator]() {\n return this.entries();\n }\n /**\n * A String value that is used in the creation of the default string\n * description of an object. Called by the built-in method\n * `Object.prototype.toString`.\n */\n [Symbol.toStringTag] = 'LRUCache';\n /**\n * Find a value for which the supplied fn method returns a truthy value,\n * similar to `Array.find()`. fn is called as `fn(value, key, cache)`.\n */\n find(fn, getOptions = {}) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n if (fn(value, this.#keyList[i], this)) {\n return this.get(this.#keyList[i], getOptions);\n }\n }\n }\n /**\n * Call the supplied function on each item in the cache, in order from most\n * recently used to least recently used.\n *\n * `fn` is called as `fn(value, key, cache)`.\n *\n * If `thisp` is provided, function will be called in the `this`-context of\n * the provided object, or the cache if no `thisp` object is provided.\n *\n * Does not update age or recenty of use, or iterate over stale values.\n */\n forEach(fn, thisp = this) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n fn.call(thisp, value, this.#keyList[i], this);\n }\n }\n /**\n * The same as {@link LRUCache.forEach} but items are iterated over in\n * reverse order. (ie, less recently used items are iterated over first.)\n */\n rforEach(fn, thisp = this) {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n fn.call(thisp, value, this.#keyList[i], this);\n }\n }\n /**\n * Delete any stale entries. Returns true if anything was removed,\n * false otherwise.\n */\n purgeStale() {\n let deleted = false;\n for (const i of this.#rindexes({ allowStale: true })) {\n if (this.#isStale(i)) {\n this.#delete(this.#keyList[i], 'expire');\n deleted = true;\n }\n }\n return deleted;\n }\n /**\n * Get the extended info about a given entry, to get its value, size, and\n * TTL info simultaneously. Returns `undefined` if the key is not present.\n *\n * Unlike {@link LRUCache#dump}, which is designed to be portable and survive\n * serialization, the `start` value is always the current timestamp, and the\n * `ttl` is a calculated remaining time to live (negative if expired).\n *\n * Always returns stale values, if their info is found in the cache, so be\n * sure to check for expirations (ie, a negative {@link LRUCache.Entry#ttl})\n * if relevant.\n */\n info(key) {\n const i = this.#keyMap.get(key);\n if (i === undefined)\n return undefined;\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n return undefined;\n const entry = { value };\n if (this.#ttls && this.#starts) {\n const ttl = this.#ttls[i];\n const start = this.#starts[i];\n if (ttl && start) {\n const remain = ttl - (perf.now() - start);\n entry.ttl = remain;\n entry.start = Date.now();\n }\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i];\n }\n return entry;\n }\n /**\n * Return an array of [key, {@link LRUCache.Entry}] tuples which can be\n * passed to {@link LRUCache#load}.\n *\n * The `start` fields are calculated relative to a portable `Date.now()`\n * timestamp, even if `performance.now()` is available.\n *\n * Stale entries are always included in the `dump`, even if\n * {@link LRUCache.OptionsBase.allowStale} is false.\n *\n * Note: this returns an actual array, not a generator, so it can be more\n * easily passed around.\n */\n dump() {\n const arr = [];\n for (const i of this.#indexes({ allowStale: true })) {\n const key = this.#keyList[i];\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined || key === undefined)\n continue;\n const entry = { value };\n if (this.#ttls && this.#starts) {\n entry.ttl = this.#ttls[i];\n // always dump the start relative to a portable timestamp\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = perf.now() - this.#starts[i];\n entry.start = Math.floor(Date.now() - age);\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i];\n }\n arr.unshift([key, entry]);\n }\n return arr;\n }\n /**\n * Reset the cache and load in the items in entries in the order listed.\n *\n * The shape of the resulting cache may be different if the same options are\n * not used in both caches.\n *\n * The `start` fields are assumed to be calculated relative to a portable\n * `Date.now()` timestamp, even if `performance.now()` is available.\n */\n load(arr) {\n this.clear();\n for (const [key, entry] of arr) {\n if (entry.start) {\n // entry.start is a portable timestamp, but we may be using\n // node's performance.now(), so calculate the offset, so that\n // we get the intended remaining TTL, no matter how long it's\n // been on ice.\n //\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = Date.now() - entry.start;\n entry.start = perf.now() - age;\n }\n this.set(key, entry.value, entry);\n }\n }\n /**\n * Add a value to the cache.\n *\n * Note: if `undefined` is specified as a value, this is an alias for\n * {@link LRUCache#delete}\n *\n * Fields on the {@link LRUCache.SetOptions} options param will override\n * their corresponding values in the constructor options for the scope\n * of this single `set()` operation.\n *\n * If `start` is provided, then that will set the effective start\n * time for the TTL calculation. Note that this must be a previous\n * value of `performance.now()` if supported, or a previous value of\n * `Date.now()` if not.\n *\n * Options object may also include `size`, which will prevent\n * calling the `sizeCalculation` function and just use the specified\n * number if it is a positive integer, and `noDisposeOnSet` which\n * will prevent calling a `dispose` function in the case of\n * overwrites.\n *\n * If the `size` (or return value of `sizeCalculation`) for a given\n * entry is greater than `maxEntrySize`, then the item will not be\n * added to the cache.\n *\n * Will update the recency of the entry.\n *\n * If the value is `undefined`, then this is an alias for\n * `cache.delete(key)`. `undefined` is never stored in the cache.\n */\n set(k, v, setOptions = {}) {\n if (v === undefined) {\n this.delete(k);\n return this;\n }\n const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status, } = setOptions;\n let { noUpdateTTL = this.noUpdateTTL } = setOptions;\n const size = this.#requireSize(k, v, setOptions.size || 0, sizeCalculation);\n // if the item doesn't fit, don't do anything\n // NB: maxEntrySize set to maxSize by default\n if (this.maxEntrySize && size > this.maxEntrySize) {\n if (status) {\n status.set = 'miss';\n status.maxEntrySizeExceeded = true;\n }\n // have to delete, in case something is there already.\n this.#delete(k, 'set');\n return this;\n }\n let index = this.#size === 0 ? undefined : this.#keyMap.get(k);\n if (index === undefined) {\n // addition\n index = (this.#size === 0\n ? this.#tail\n : this.#free.length !== 0\n ? this.#free.pop()\n : this.#size === this.#max\n ? this.#evict(false)\n : this.#size);\n this.#keyList[index] = k;\n this.#valList[index] = v;\n this.#keyMap.set(k, index);\n this.#next[this.#tail] = index;\n this.#prev[index] = this.#tail;\n this.#tail = index;\n this.#size++;\n this.#addItemSize(index, size, status);\n if (status)\n status.set = 'add';\n noUpdateTTL = false;\n if (this.#hasOnInsert) {\n this.#onInsert?.(v, k, 'add');\n }\n }\n else {\n // update\n this.#moveToTail(index);\n const oldVal = this.#valList[index];\n if (v !== oldVal) {\n if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) {\n oldVal.__abortController.abort(new Error('replaced'));\n const { __staleWhileFetching: s } = oldVal;\n if (s !== undefined && !noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(s, k, 'set');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([s, k, 'set']);\n }\n }\n }\n else if (!noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(oldVal, k, 'set');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([oldVal, k, 'set']);\n }\n }\n this.#removeItemSize(index);\n this.#addItemSize(index, size, status);\n this.#valList[index] = v;\n if (status) {\n status.set = 'replace';\n const oldValue = oldVal && this.#isBackgroundFetch(oldVal)\n ? oldVal.__staleWhileFetching\n : oldVal;\n if (oldValue !== undefined)\n status.oldValue = oldValue;\n }\n }\n else if (status) {\n status.set = 'update';\n }\n if (this.#hasOnInsert) {\n this.onInsert?.(v, k, v === oldVal ? 'update' : 'replace');\n }\n }\n if (ttl !== 0 && !this.#ttls) {\n this.#initializeTTLTracking();\n }\n if (this.#ttls) {\n if (!noUpdateTTL) {\n this.#setItemTTL(index, ttl, start);\n }\n if (status)\n this.#statusTTL(status, index);\n }\n if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n return this;\n }\n /**\n * Evict the least recently used item, returning its value or\n * `undefined` if cache is empty.\n */\n pop() {\n try {\n while (this.#size) {\n const val = this.#valList[this.#head];\n this.#evict(true);\n if (this.#isBackgroundFetch(val)) {\n if (val.__staleWhileFetching) {\n return val.__staleWhileFetching;\n }\n }\n else if (val !== undefined) {\n return val;\n }\n }\n }\n finally {\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n }\n }\n #evict(free) {\n const head = this.#head;\n const k = this.#keyList[head];\n const v = this.#valList[head];\n if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('evicted'));\n }\n else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, 'evict');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, 'evict']);\n }\n }\n this.#removeItemSize(head);\n // if we aren't about to use the index, then null these out\n if (free) {\n this.#keyList[head] = undefined;\n this.#valList[head] = undefined;\n this.#free.push(head);\n }\n if (this.#size === 1) {\n this.#head = this.#tail = 0;\n this.#free.length = 0;\n }\n else {\n this.#head = this.#next[head];\n }\n this.#keyMap.delete(k);\n this.#size--;\n return head;\n }\n /**\n * Check if a key is in the cache, without updating the recency of use.\n * Will return false if the item is stale, even though it is technically\n * in the cache.\n *\n * Check if a key is in the cache, without updating the recency of\n * use. Age is updated if {@link LRUCache.OptionsBase.updateAgeOnHas} is set\n * to `true` in either the options or the constructor.\n *\n * Will return `false` if the item is stale, even though it is technically in\n * the cache. The difference can be determined (if it matters) by using a\n * `status` argument, and inspecting the `has` field.\n *\n * Will not update item age unless\n * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.\n */\n has(k, hasOptions = {}) {\n const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions;\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v) &&\n v.__staleWhileFetching === undefined) {\n return false;\n }\n if (!this.#isStale(index)) {\n if (updateAgeOnHas) {\n this.#updateItemAge(index);\n }\n if (status) {\n status.has = 'hit';\n this.#statusTTL(status, index);\n }\n return true;\n }\n else if (status) {\n status.has = 'stale';\n this.#statusTTL(status, index);\n }\n }\n else if (status) {\n status.has = 'miss';\n }\n return false;\n }\n /**\n * Like {@link LRUCache#get} but doesn't update recency or delete stale\n * items.\n *\n * Returns `undefined` if the item is stale, unless\n * {@link LRUCache.OptionsBase.allowStale} is set.\n */\n peek(k, peekOptions = {}) {\n const { allowStale = this.allowStale } = peekOptions;\n const index = this.#keyMap.get(k);\n if (index === undefined ||\n (!allowStale && this.#isStale(index))) {\n return;\n }\n const v = this.#valList[index];\n // either stale and allowed, or forcing a refresh of non-stale value\n return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v;\n }\n #backgroundFetch(k, index, options, context) {\n const v = index === undefined ? undefined : this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n return v;\n }\n const ac = new AC();\n const { signal } = options;\n // when/if our AC signals, then stop listening to theirs.\n signal?.addEventListener('abort', () => ac.abort(signal.reason), {\n signal: ac.signal,\n });\n const fetchOpts = {\n signal: ac.signal,\n options,\n context,\n };\n const cb = (v, updateCache = false) => {\n const { aborted } = ac.signal;\n const ignoreAbort = options.ignoreFetchAbort && v !== undefined;\n if (options.status) {\n if (aborted && !updateCache) {\n options.status.fetchAborted = true;\n options.status.fetchError = ac.signal.reason;\n if (ignoreAbort)\n options.status.fetchAbortIgnored = true;\n }\n else {\n options.status.fetchResolved = true;\n }\n }\n if (aborted && !ignoreAbort && !updateCache) {\n return fetchFail(ac.signal.reason);\n }\n // either we didn't abort, and are still here, or we did, and ignored\n const bf = p;\n if (this.#valList[index] === p) {\n if (v === undefined) {\n if (bf.__staleWhileFetching) {\n this.#valList[index] = bf.__staleWhileFetching;\n }\n else {\n this.#delete(k, 'fetch');\n }\n }\n else {\n if (options.status)\n options.status.fetchUpdated = true;\n this.set(k, v, fetchOpts.options);\n }\n }\n return v;\n };\n const eb = (er) => {\n if (options.status) {\n options.status.fetchRejected = true;\n options.status.fetchError = er;\n }\n return fetchFail(er);\n };\n const fetchFail = (er) => {\n const { aborted } = ac.signal;\n const allowStaleAborted = aborted && options.allowStaleOnFetchAbort;\n const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection;\n const noDelete = allowStale || options.noDeleteOnFetchRejection;\n const bf = p;\n if (this.#valList[index] === p) {\n // if we allow stale on fetch rejections, then we need to ensure that\n // the stale value is not removed from the cache when the fetch fails.\n const del = !noDelete || bf.__staleWhileFetching === undefined;\n if (del) {\n this.#delete(k, 'fetch');\n }\n else if (!allowStaleAborted) {\n // still replace the *promise* with the stale value,\n // since we are done with the promise at this point.\n // leave it untouched if we're still waiting for an\n // aborted background fetch that hasn't yet returned.\n this.#valList[index] = bf.__staleWhileFetching;\n }\n }\n if (allowStale) {\n if (options.status && bf.__staleWhileFetching !== undefined) {\n options.status.returnedStale = true;\n }\n return bf.__staleWhileFetching;\n }\n else if (bf.__returned === bf) {\n throw er;\n }\n };\n const pcall = (res, rej) => {\n const fmp = this.#fetchMethod?.(k, v, fetchOpts);\n if (fmp && fmp instanceof Promise) {\n fmp.then(v => res(v === undefined ? undefined : v), rej);\n }\n // ignored, we go until we finish, regardless.\n // defer check until we are actually aborting,\n // so fetchMethod can override.\n ac.signal.addEventListener('abort', () => {\n if (!options.ignoreFetchAbort ||\n options.allowStaleOnFetchAbort) {\n res(undefined);\n // when it eventually resolves, update the cache.\n if (options.allowStaleOnFetchAbort) {\n res = v => cb(v, true);\n }\n }\n });\n };\n if (options.status)\n options.status.fetchDispatched = true;\n const p = new Promise(pcall).then(cb, eb);\n const bf = Object.assign(p, {\n __abortController: ac,\n __staleWhileFetching: v,\n __returned: undefined,\n });\n if (index === undefined) {\n // internal, don't expose status.\n this.set(k, bf, { ...fetchOpts.options, status: undefined });\n index = this.#keyMap.get(k);\n }\n else {\n this.#valList[index] = bf;\n }\n return bf;\n }\n #isBackgroundFetch(p) {\n if (!this.#hasFetchMethod)\n return false;\n const b = p;\n return (!!b &&\n b instanceof Promise &&\n b.hasOwnProperty('__staleWhileFetching') &&\n b.__abortController instanceof AC);\n }\n async fetch(k, fetchOptions = {}) {\n const { \n // get options\n allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, \n // set options\n ttl = this.ttl, noDisposeOnSet = this.noDisposeOnSet, size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, \n // fetch exclusive options\n noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, ignoreFetchAbort = this.ignoreFetchAbort, allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, context, forceRefresh = false, status, signal, } = fetchOptions;\n if (!this.#hasFetchMethod) {\n if (status)\n status.fetch = 'get';\n return this.get(k, {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n status,\n });\n }\n const options = {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n ttl,\n noDisposeOnSet,\n size,\n sizeCalculation,\n noUpdateTTL,\n noDeleteOnFetchRejection,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n status,\n signal,\n };\n let index = this.#keyMap.get(k);\n if (index === undefined) {\n if (status)\n status.fetch = 'miss';\n const p = this.#backgroundFetch(k, index, options, context);\n return (p.__returned = p);\n }\n else {\n // in cache, maybe already fetching\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n const stale = allowStale && v.__staleWhileFetching !== undefined;\n if (status) {\n status.fetch = 'inflight';\n if (stale)\n status.returnedStale = true;\n }\n return stale ? v.__staleWhileFetching : (v.__returned = v);\n }\n // if we force a refresh, that means do NOT serve the cached value,\n // unless we are already in the process of refreshing the cache.\n const isStale = this.#isStale(index);\n if (!forceRefresh && !isStale) {\n if (status)\n status.fetch = 'hit';\n this.#moveToTail(index);\n if (updateAgeOnGet) {\n this.#updateItemAge(index);\n }\n if (status)\n this.#statusTTL(status, index);\n return v;\n }\n // ok, it is stale or a forced refresh, and not already fetching.\n // refresh the cache.\n const p = this.#backgroundFetch(k, index, options, context);\n const hasStale = p.__staleWhileFetching !== undefined;\n const staleVal = hasStale && allowStale;\n if (status) {\n status.fetch = isStale ? 'stale' : 'refresh';\n if (staleVal && isStale)\n status.returnedStale = true;\n }\n return staleVal ? p.__staleWhileFetching : (p.__returned = p);\n }\n }\n async forceFetch(k, fetchOptions = {}) {\n const v = await this.fetch(k, fetchOptions);\n if (v === undefined)\n throw new Error('fetch() returned undefined');\n return v;\n }\n memo(k, memoOptions = {}) {\n const memoMethod = this.#memoMethod;\n if (!memoMethod) {\n throw new Error('no memoMethod provided to constructor');\n }\n const { context, forceRefresh, ...options } = memoOptions;\n const v = this.get(k, options);\n if (!forceRefresh && v !== undefined)\n return v;\n const vv = memoMethod(k, v, {\n options,\n context,\n });\n this.set(k, vv, options);\n return vv;\n }\n /**\n * Return a value from the cache. Will update the recency of the cache\n * entry found.\n *\n * If the key is not found, get() will return `undefined`.\n */\n get(k, getOptions = {}) {\n const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status, } = getOptions;\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n const value = this.#valList[index];\n const fetching = this.#isBackgroundFetch(value);\n if (status)\n this.#statusTTL(status, index);\n if (this.#isStale(index)) {\n if (status)\n status.get = 'stale';\n // delete only if not an in-flight background fetch\n if (!fetching) {\n if (!noDeleteOnStaleGet) {\n this.#delete(k, 'expire');\n }\n if (status && allowStale)\n status.returnedStale = true;\n return allowStale ? value : undefined;\n }\n else {\n if (status &&\n allowStale &&\n value.__staleWhileFetching !== undefined) {\n status.returnedStale = true;\n }\n return allowStale ? value.__staleWhileFetching : undefined;\n }\n }\n else {\n if (status)\n status.get = 'hit';\n // if we're currently fetching it, we don't actually have it yet\n // it's not stale, which means this isn't a staleWhileRefetching.\n // If it's not stale, and fetching, AND has a __staleWhileFetching\n // value, then that means the user fetched with {forceRefresh:true},\n // so it's safe to return that value.\n if (fetching) {\n return value.__staleWhileFetching;\n }\n this.#moveToTail(index);\n if (updateAgeOnGet) {\n this.#updateItemAge(index);\n }\n return value;\n }\n }\n else if (status) {\n status.get = 'miss';\n }\n }\n #connect(p, n) {\n this.#prev[n] = p;\n this.#next[p] = n;\n }\n #moveToTail(index) {\n // if tail already, nothing to do\n // if head, move head to next[index]\n // else\n // move next[prev[index]] to next[index] (head has no prev)\n // move prev[next[index]] to prev[index]\n // prev[index] = tail\n // next[tail] = index\n // tail = index\n if (index !== this.#tail) {\n if (index === this.#head) {\n this.#head = this.#next[index];\n }\n else {\n this.#connect(this.#prev[index], this.#next[index]);\n }\n this.#connect(this.#tail, index);\n this.#tail = index;\n }\n }\n /**\n * Deletes a key out of the cache.\n *\n * Returns true if the key was deleted, false otherwise.\n */\n delete(k) {\n return this.#delete(k, 'delete');\n }\n #delete(k, reason) {\n let deleted = false;\n if (this.#size !== 0) {\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n deleted = true;\n if (this.#size === 1) {\n this.#clear(reason);\n }\n else {\n this.#removeItemSize(index);\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'));\n }\n else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, reason);\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, reason]);\n }\n }\n this.#keyMap.delete(k);\n this.#keyList[index] = undefined;\n this.#valList[index] = undefined;\n if (index === this.#tail) {\n this.#tail = this.#prev[index];\n }\n else if (index === this.#head) {\n this.#head = this.#next[index];\n }\n else {\n const pi = this.#prev[index];\n this.#next[pi] = this.#next[index];\n const ni = this.#next[index];\n this.#prev[ni] = this.#prev[index];\n }\n this.#size--;\n this.#free.push(index);\n }\n }\n }\n if (this.#hasDisposeAfter && this.#disposed?.length) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n return deleted;\n }\n /**\n * Clear the cache entirely, throwing away all values.\n */\n clear() {\n return this.#clear('delete');\n }\n #clear(reason) {\n for (const index of this.#rindexes({ allowStale: true })) {\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'));\n }\n else {\n const k = this.#keyList[index];\n if (this.#hasDispose) {\n this.#dispose?.(v, k, reason);\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, reason]);\n }\n }\n }\n this.#keyMap.clear();\n this.#valList.fill(undefined);\n this.#keyList.fill(undefined);\n if (this.#ttls && this.#starts) {\n this.#ttls.fill(0);\n this.#starts.fill(0);\n }\n if (this.#sizes) {\n this.#sizes.fill(0);\n }\n this.#head = 0;\n this.#tail = 0;\n this.#free.length = 0;\n this.#calculatedSize = 0;\n this.#size = 0;\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n }\n}\n//# sourceMappingURL=index.js.map","import type { SnapRecords } from './SnapRecords.js';\nimport { ISnapApi, RenderType, RowsPerPage, Identifiable, SnapRecordsState } from './SnapTypes.js';\n\n/*========================================================================================================\n\n SNAPAPI CLASS\n\n Class providing a public API for interacting with a SnapRecords instance\n\n Provides a public API for interacting with a {@link SnapRecords} instance.\n The `SnapApi` class exposes methods for controlling and querying a SnapRecords data table,\n including operations such as resetting, refreshing, navigation, selection management,\n theme and render mode configuration, language switching, searching, and updating state parameters.\n This class is intended to be used as the main interface for consumers who need to manipulate\n or retrieve information from a SnapRecords instance in a type-safe and encapsulated manner.\n\n @typeParam T - The type of records managed by the SnapRecords instance, which must extend\n {@link Identifiable} and be a record of string keys to unknown values.\n\n==========================================================================================================*/\n\nexport class SnapApi<T extends Identifiable & Record<string, unknown>> implements ISnapApi<T> {\n // Reference to the SnapRecords instance\n readonly #instance: SnapRecords<T>;\n\n // Constructor initializes the API with the parent instance\n constructor(instance: SnapRecords<T>) {\n this.#instance = instance;\n }\n\n // Resets the SnapRecords instance to its initial state\n public reset(): void {\n this.#instance.reset();\n }\n\n // Refreshes the data by triggering a reload\n public refresh(): void {\n this.#instance.refresh();\n }\n\n // Destroys the SnapRecords instance, cleaning up resources\n public destroy(): void {\n this.#instance.destroy();\n }\n\n // Clears all row selections\n public clearSelection(): void {\n this.#instance.clearSelection();\n }\n\n // Navigates to the specified page\n public gotoPage(page: number): void {\n this.#instance.gotoPage(page);\n }\n\n // Returns the current data array\n public getData(): ReadonlyArray<T> {\n return this.#instance.getData();\n }\n\n // Returns the currently selected rows\n public getSelectedRows(): T[] {\n return this.#instance.getSelectedRows();\n }\n\n // Returns the total number of records\n public getTotals(): { totalRecords: number } {\n return this.#instance.getTotals();\n }\n\n // Sets the theme (light or dark)\n public setTheme(theme: 'light' | 'dark'): void {\n this.#instance.setTheme(theme);\n }\n\n // Sets the rendering mode (table, list, or mobile cards)\n public setRenderMode(mode: RenderType): void {\n this.#instance.setRenderMode(mode);\n }\n\n // Sets the number of rows per page\n public setRowsPerPage(newRowsPerPage: RowsPerPage): void {\n this.#instance.setRowsPerPage(newRowsPerPage);\n }\n\n // Sets the language and reloads translations\n public async setLanguage(newLanguage: string): Promise<void> {\n await this.#instance.setLanguage(newLanguage);\n }\n\n // Performs a search with the provided filters\n public search(filters: Record<string, string>, merge = false): void {\n this.#instance.search(filters, merge);\n }\n\n // Updates state parameters (page, rows per page, filters, sort conditions)\n public updateParams(\n params: Partial<\n Pick<SnapRecordsState<T>, 'currentPage' | 'rowsPerPage' | 'filters' | 'sortConditions'>\n >\n ): void {\n this.#instance.updateParams(params);\n }\n}\n\n/*========================================================================================================\n SNAPAPI OBJECT ENDS HERE\n==========================================================================================================*/\n","/**\n\n */\nimport { RowsPerPage, RenderType } from './SnapTypes.js';\n\n/*========================================================================================================\n\n SNAP RECORDS DEFAULT OPTIONS\n\n @file SnapOptions.ts\n @description\n\n Provides the default configuration options and UI-related constants for the SnapRecords component.\n This includes API endpoints, UI themes, pagination settings, class names, and other customizable\n options that control the behavior and appearance of SnapRecords tables and lists.\n\n==========================================================================================================*/\n\n// Default configuration options for SnapRecords\nexport const defaultOptions = {\n // API URL for data fetching\n url: '',\n // List of column names to display\n columns: [],\n // Flag to enable debug logging\n debug: false,\n // Theme for the UI (default, light or dark)\n theme: 'default',\n // Flag to enable data caching\n useCache: false,\n // Number of retry attempts for failed fetches\n retryAttempts: 3,\n // List of column titles\n columnTitles: [],\n // Language code for translations\n language: 'en_US',\n // Path to the language files directory\n langPath: '/lang',\n // Flag to enable row selection\n selectable: false,\n // Flag to enable URL state persistence\n usePushState: false,\n // Flag to enable state persistence in localStorage\n persistState: false,\n // Size of the format cache\n formatCacheSize: 500,\n // Flag to enable lazy loading of media\n lazyLoadMedia: false,\n // Flag to destroy the instance on window unload\n destroyOnUnload: true,\n // Flag to enable preloading of the next page\n preloadNextPage: false,\n // Flag to enable draggable columns\n draggableColumns: false,\n // Default rendering mode\n format: RenderType.TABLE,\n // Default number of rows per page\n rowsPerPage: RowsPerPage.DEFAULT,\n};\n\n// Configuration object containing constants and class names\nexport const config = {\n // Constants for various settings\n constants: {\n // Default debounce delay for data loading (in milliseconds)\n defaultDebounceDelay: 250,\n // Default cache expiration time (in milliseconds)\n defaultCacheExpiry: 28800000,\n // Delay for screen reader announcements (in milliseconds)\n screenReaderAnnouncementDelay: 1000,\n // Number of pages to show around the current page in pagination\n paginationPageRange: 2,\n // Maximum page distance before showing ellipsis\n paginationMaxPageDistance: 3,\n // Distance before showing ellipsis in pagination\n paginationEllipsisDistance: 4,\n // Buffer for showing the last page in pagination\n paginationLastPageBuffer: 2,\n // Buffer for showing ellipsis before the last page\n paginationEllipsisLastPageBuffer: 3,\n },\n // Pagination configuration\n pagination: {\n // Previous button configuration\n prevButton: {\n // HTML content for the previous button\n text: '<span aria-hidden=\"true\">«</span>',\n // Flag indicating if text is HTML\n isHtml: true,\n // Class names for styling\n classNames: {\n // Base class for the button\n base: 'snap-prev',\n // Class for disabled state\n disabled: 'snap-disabled',\n },\n },\n // Next button configuration\n nextButton: {\n // HTML content for the next button\n text: '<span aria-hidden=\"true\">»</span>',\n // Flag indicating if text is HTML\n isHtml: true,\n // Class names for styling\n classNames: {\n // Base class for the button\n base: 'snap-next',\n // Class for disabled state\n disabled: 'snap-disabled',\n },\n },\n // Page number button configuration\n numberButton: {\n // Class names for styling\n classNames: {\n // Base class for the button\n base: 'snap-page-number',\n // Class for active (current) page\n disabled: 'snap-active',\n },\n },\n // Ellipsis configuration\n ellipsis: {\n // Class names for styling\n classNames: {\n // Base class for the ellipsis\n base: 'snap-pagination-ellipsis',\n },\n },\n },\n // CSS class names for various UI elements\n classes: {\n // Class for the main table container\n tableContainer: 'snap-records-container',\n // Class for the content container\n contentContainer: 'snap-records-content',\n // Class for the error container\n errorContainer: 'snap-records-error',\n // Class for responsive table wrapper\n tableResponsive: 'table-responsive',\n // Table-specific classes\n table: {\n // Class for the table container\n containerClass: 'snap-records snap-table',\n // Class for the table header\n headerClass: 'snap-records-header',\n // Class for the table body\n bodyClass: 'snap-records-body',\n // Class for the table footer\n footerClass: 'snap-records-footer',\n },\n // List-specific classes\n list: {\n // Class for the list container\n containerClass: 'snap-list',\n // Class for list items\n itemClass: 'snap-list-item',\n },\n // Class for mobile cards container\n mobileCardsContainer: 'snap-mobile-cards-container',\n // Class for individual mobile cards\n mobileCard: 'snap-mobile-card',\n // Class for rows within mobile cards\n cardRow: 'snap-card-row',\n // Class for labels in mobile cards\n cardLabel: 'snap-card-label',\n // Class for values in mobile cards\n cardValue: 'snap-card-value',\n // Class for the footer container\n footerContainer: 'snap-records-footer-container',\n // Class for the footer\n footer: 'snap-footer',\n // Class for the totals display\n totals: 'snap-totals',\n // Class for the pagination container\n paginationContainer: 'snap-pagination-container',\n // Class for pagination elements\n pagination: 'snap-pagination',\n // Class for pagination cells\n paginationCell: 'snap-pagination-cell',\n // Class for the loading overlay\n loadingOverlay: 'snap-loading-overlay',\n // Class for table overlay\n tableOverlay: 'snap-table-overlay',\n // Class for list overlay\n listOverlay: 'snap-list-overlay',\n // Class for cards overlay\n cardsOverlay: 'snap-cards-overlay',\n // Class for no-data message\n noData: 'snap-no-data',\n // Class for selected rows\n selected: 'snap-selected',\n // Class for the current row\n currentRow: 'snap-current-row',\n // Class for column resize handle\n columnResizeHandle: 'snap-column-resize-handle',\n // Class for ascending sort order\n sortAscOrder: 'snap-asc-order',\n // Class for descending sort order\n sortDescOrder: 'snap-desc-order',\n // Class for no sort order\n sortNoOrder: 'snap-no-order',\n // Class for start record display\n recordStart: 'snap-record-start',\n // Class for end record display\n recordEnd: 'snap-record-end',\n // Class for total records display\n recordsTotal: 'snap-records-total',\n // Class for draggable columns\n draggableColumn: 'snap-draggable-column',\n // Class for column being dragged\n dragging: 'snap-dragging',\n // Class for drag-over target\n dragOver: 'snap-drag-over',\n },\n};\n\n/*========================================================================================================\n SNAP RECORDS DEFAULT OPTIONS ENDS HERE\n==========================================================================================================*/\n","import { LogLevel } from './SnapTypes';\n\n/*========================================================================================================\n\n UTILS FILE\n\n Utility function to sanitize HTML strings and prevent basic XSS attacks.\n This function creates a temporary DOM element, parses the input HTML string,\n removes all <script> and <style> elements, and strips out any attributes\n that start with 'on' (such as onclick, onmouseover, etc.) from all elements.\n It returns the sanitized HTML as a string.\n\n==========================================================================================================*/\n\n// Utility function to sanitize HTML strings and prevent basic XSS attacks\nexport function sanitizeHTML(str: string): string {\n // Create a temporary div to parse the HTML\n const temp = document.createElement('div');\n temp.innerHTML = str;\n\n // Remove script and style elements\n temp.querySelectorAll('script, style').forEach((el) => el.remove());\n\n // Remove all 'on*' event attributes from elements\n temp.querySelectorAll('*').forEach((el) => {\n for (const attr of Array.from(el.attributes)) {\n if (attr.name.toLowerCase().startsWith('on')) {\n el.removeAttribute(attr.name);\n }\n }\n });\n\n // Return the sanitized HTML\n return temp.innerHTML;\n}\n\n// Utility function for logging messages based on debug flag and log level\n/* eslint-disable no-console */\nexport function log(debug: boolean, level: LogLevel, ...args: unknown[]): void {\n // Skip logging if debug is disabled\n if (!debug) return;\n\n // Prefix for all log messages\n const prefix = 'SnapRecords:';\n\n // Log message with the specified level\n console[level](prefix, ...args);\n}\n/* eslint-enable no-console */\n\n/*========================================================================================================\n UTILS FILE ENDS HERE\n==========================================================================================================*/\n","import { sanitizeHTML } from './utils.js';\nimport { SnapRecords } from './SnapRecords.js';\nimport { Identifiable, ServerRequestParams } from './SnapTypes.js';\n\n/*========================================================================================================\n\n URL MANAGER CLASS\n\n Class responsible for constructing URLs and server request parameters for data fetching\n\n Manages the construction of API URLs and server request parameters for data fetching\n in the context of a SnapRecords instance. This class centralizes logic for building\n query strings with pagination, filtering, and sorting, ensuring consistent and correct\n API requests based on the current state of the parent SnapRecords.\n\n @typeParam T - The type of records managed, extending Identifiable and a generic object.\n\n==========================================================================================================*/\n\nexport class UrlManager<T extends Identifiable & Record<string, unknown>> {\n // Reference to the parent SnapRecords instance\n #parent: SnapRecords<T>;\n\n // Constructor initializes the URL manager with the parent instance\n constructor(parent: SnapRecords<T>) {\n this.#parent = parent;\n }\n\n // Builds a URL with query parameters for an API request\n public buildUrl(params: ServerRequestParams): string {\n // Create URLSearchParams to hold query parameters\n const urlParams = new URLSearchParams();\n // Add pagination parameters\n urlParams.append('page', params.page.toString());\n urlParams.append('perPage', params.perPage.toString());\n urlParams.append('offset', params.offset.toString());\n\n // Add filtering parameters if present (sanitize values)\n if (params.filtering) {\n Object.entries(params.filtering).forEach(([key, value]) => {\n // Sanitize the value to prevent XSS\n const sanitizedValue = sanitizeHTML(String(value));\n urlParams.append(`filtering[${key}]`, sanitizedValue);\n });\n }\n // Add sorting parameters if present\n if (params.sorting) {\n Object.entries(params.sorting).forEach(([key, value]) => {\n // Sorting values are controlled (ASC/DESC) so no need to sanitize\n urlParams.append(`sorting[${key}]`, value);\n });\n }\n // Construct and return the full URL\n return `${this.#parent.baseUrl}?${urlParams.toString()}`;\n }\n\n // Generates server request parameters based on the current state\n public getServerParams(page: number = this.#parent.state.currentPage): ServerRequestParams {\n // Initialize parameters with pagination details\n const params: ServerRequestParams = {\n page,\n perPage: this.#parent.state.rowsPerPage,\n offset: (page - 1) * this.#parent.state.rowsPerPage,\n };\n // Include filters if any exist\n if (Object.keys(this.#parent.state.filters).length > 0) {\n // Sanitize filter values\n const sanitizedFilters: Record<string, string> = {};\n Object.entries(this.#parent.state.filters).forEach(([key, value]) => {\n sanitizedFilters[key] = sanitizeHTML(String(value));\n });\n params.filtering = sanitizedFilters;\n }\n // Include sorting conditions if any exist\n if (this.#parent.state.sortConditions.length > 0) {\n params.sorting = Object.fromEntries(this.#parent.state.sortConditions) as Record<\n string,\n 'ASC' | 'DESC'\n >;\n }\n return params;\n }\n}\n\n/*========================================================================================================\n URL MANAGER OBJECT ENDS HERE\n==========================================================================================================*/\n","import {\n LogLevel,\n RenderType,\n ButtonType,\n Identifiable,\n ISnapRenderer,\n OrderDirection,\n} from './SnapTypes.js';\nimport { log } from './utils.js';\nimport { config } from './SnapOptions.js';\nimport type { SnapRecords } from './SnapRecords.js';\nimport defaultTranslations from './lang/en_US.json';\n\n/*========================================================================================================\n\n SNAP RENDERER CLASS\n\n Class responsible for rendering the UI of the SnapRecords plugin in various formats\n (table, list, mobile cards)\n\n The SnapRenderer class is responsible for rendering the user interface of the SnapRecords plugin\n in different formats, such as table, list, and mobile cards. It manages the creation and updating\n of DOM elements, applies themes, handles loading and error states, and provides accessibility\n features.\n\n The class ensures efficient updates and supports features like pagination, sorting, and keyboard\n navigation for a responsive and accessible data display.\n\n==========================================================================================================*/\n\nexport class SnapRenderer<T extends Identifiable & Record<string, unknown>>\n implements ISnapRenderer<T>\n{\n // Container for mobile cards display\n public cardsContainer: HTMLElement | null = null;\n // Main table element for table rendering\n public tableElement: HTMLTableElement | null = null;\n // Container for list rendering\n public listContainer: HTMLUListElement | null = null;\n // Table body element\n public tableBody: HTMLTableSectionElement | null = null;\n // Table header element\n public tableHeader: HTMLTableSectionElement | null = null;\n\n // Reference to the parent SnapRecords instance\n private parent: SnapRecords<T>;\n // Container for the content (table, list, or cards)\n private contentContainer: HTMLElement;\n // Footer element for pagination and totals\n private footerElement: HTMLElement | null = null;\n // Element displaying record totals\n private totalsElement: HTMLElement | null = null;\n // Element containing pagination controls\n private paginationElement: HTMLElement | null = null;\n\n // Constructor initializes the renderer with the parent instance and content container\n constructor(parent: SnapRecords<T>, contentContainer: HTMLElement) {\n this.parent = parent;\n this.contentContainer = contentContainer;\n }\n\n // Navigates to the next row for keyboard navigation\n public navigateToNextRow(): void {\n if (this.parent.state.data.length === 0) return;\n // Increment the current row index, capped at the last row\n this.parent.currentRowIndex = Math.min(\n this.parent.currentRowIndex + 1,\n this.parent.state.data.length - 1\n );\n this.highlightCurrentRow();\n }\n\n // Navigates to the previous row for keyboard navigation\n public navigateToPrevRow(): void {\n if (this.parent.state.data.length === 0) return;\n // Decrement the current row index, floored at 0\n this.parent.currentRowIndex = Math.max(0, this.parent.currentRowIndex - 1);\n this.highlightCurrentRow();\n }\n\n // Creates the necessary DOM containers for rendering\n public createContainers(): void {\n log(this.parent.debug, LogLevel.INFO, 'Creating DOM containers for rendering.');\n // Clear the container's content\n this.parent.container.innerHTML = '';\n // Add table container class\n this.parent.container.classList.add(config.classes.tableContainer);\n // Add content container class\n this.contentContainer.classList.add(config.classes.contentContainer);\n // Append content container to the main container\n this.parent.container.appendChild(this.contentContainer);\n // Create and append error container\n this.parent.errorContainer = document.createElement('div');\n this.parent.errorContainer.classList.add(config.classes.errorContainer);\n this.parent.errorContainer.style.display = 'none';\n this.parent.container.appendChild(this.parent.errorContainer);\n // Ensure the container has a non-static position for overlays\n if (getComputedStyle(this.parent.container).position === 'static') {\n this.parent.container.style.position = 'relative';\n }\n }\n\n // Shows a loading indicator during data fetching\n public showLoading(): void {\n if (this.parent.isLoading) return;\n this.parent.isLoading = true;\n log(this.parent.debug, LogLevel.INFO, 'Showing loading indicator.');\n\n // Get translations, falling back to default\n const translations = this.parent.state.translations ?? defaultTranslations;\n // Create loading overlay element\n const overlay = document.createElement('div');\n overlay.className = config.classes.loadingOverlay;\n overlay.setAttribute('role', 'status');\n overlay.setAttribute('aria-live', 'polite');\n overlay.textContent = translations.loading;\n\n // Determine the target container based on render mode\n let targetContainer: HTMLElement | null = null;\n switch (this.parent.state.format) {\n case RenderType.TABLE:\n targetContainer = this.tableBody;\n if (targetContainer) targetContainer.style.position = 'relative';\n break;\n case RenderType.LIST:\n targetContainer = this.listContainer;\n break;\n case RenderType.MOBILE_CARDS:\n targetContainer = this.cardsContainer;\n break;\n }\n\n // Append the overlay to the appropriate container\n if (targetContainer) {\n targetContainer.appendChild(overlay);\n } else {\n this.parent.contentContainer.appendChild(overlay);\n }\n }\n\n // Applies the current theme class to the container\n public applyThemeClass(): void {\n log(this.parent.debug, LogLevel.INFO, `Applying theme: ${this.parent.state.theme}`);\n // ### CORRECTION HERE ###\n // Remove all possible existing theme classes before adding the new one.\n this.parent.container.classList.remove('theme-light', 'theme-dark', 'theme-default');\n // Add the current theme class\n this.parent.container.classList.add(`theme-${this.parent.state.theme}`);\n }\n\n // Hides the loading indicator\n public hideLoading(): void {\n if (!this.parent.isLoading) return;\n log(this.parent.debug, LogLevel.INFO, 'Hiding loading indicator.');\n // Remove the loading overlay\n this.parent.container.querySelector(`.${config.classes.loadingOverlay}`)?.remove();\n this.parent.isLoading = false;\n }\n\n // Displays an error message in the error container\n public showError(message: string): void {\n log(this.parent.debug, LogLevel.ERROR, 'Displaying error message to user:', message);\n if (this.parent.errorContainer && this.parent.state.translations) {\n const translations = this.parent.state.translations;\n this.parent.errorContainer.innerHTML = '';\n // Create error title\n const title = document.createElement('strong');\n title.textContent = translations.errorTitle;\n // Create error message\n const text = document.createElement('p');\n text.textContent = message;\n // Create retry button\n const retryButton = document.createElement('button');\n retryButton.className = 'snap-retry-button';\n retryButton.textContent = translations.retry;\n retryButton.addEventListener('click', () => this.parent.refresh());\n // Append elements to error container\n this.parent.errorContainer.append(title, text, retryButton);\n this.parent.errorContainer.style.display = 'block';\n this.contentContainer.style.display = 'none';\n }\n }\n\n // Applies column widths to table headers\n public applyColumnWidths(): void {\n // Use requestAnimationFrame for smooth rendering\n requestAnimationFrame(() => {\n this.parent.state.columns.forEach((col, index) => {\n const width = this.parent.state.columnWidths.get(col as string);\n if (width) {\n const header = this.tableHeader?.querySelector<HTMLElement>(\n `th:nth-child(${index + 1})`\n );\n if (header) header.style.width = `${width}px`;\n }\n });\n });\n }\n\n // Highlights selected rows in the UI\n public highlightSelectedRows(): void {\n const selector = 'tr[data-index], li[data-index], .snap-mobile-card[data-index]';\n this.contentContainer.querySelectorAll(selector).forEach((el: Element) => {\n const element = el as HTMLElement;\n const index = parseInt(element.dataset.index!, 10);\n const isSelected = this.parent.selectedRows.has(index);\n // Toggle the selected class\n element.classList.toggle(config.classes.selected, isSelected);\n // Update ARIA attribute\n element.setAttribute('aria-selected', String(isSelected));\n });\n }\n\n // Highlights the current row for keyboard navigation\n public highlightCurrentRow(): void {\n const selector = 'tr[data-index], li[data-index], .snap-mobile-card[data-index]';\n this.contentContainer.querySelectorAll(selector).forEach((el: Element) => {\n const element = el as HTMLElement;\n const index = parseInt(element.dataset.index!, 10);\n const isCurrent = index === this.parent.currentRowIndex;\n // Toggle the current row class\n element.classList.toggle(config.classes.currentRow, isCurrent);\n if (isCurrent) {\n // Scroll to and focus the current row\n element.scrollIntoView({ block: 'nearest' });\n element.focus();\n }\n });\n }\n\n // Main rendering method based on the current state\n public render(): void {\n if (!this.parent.state.translations) return;\n log(this.parent.debug, LogLevel.INFO, 'Starting render process...');\n // Call pre-render hook if defined\n if (this.parent.lifecycleHooks.preRender) this.parent.lifecycleHooks.preRender();\n\n // Ensure the correct container is set up\n this.#ensureCorrectContainer(this.parent.state.format);\n\n // Render content based on format\n if (this.parent.state.format === RenderType.TABLE) {\n this.#renderTableHeaderContents();\n this.#refreshTableBody();\n } else if (this.parent.state.format === RenderType.LIST) {\n this.#refreshListBody();\n } else if (this.parent.state.format === RenderType.MOBILE_CARDS) {\n this.#refreshMobileCards();\n }\n\n // Update footer with pagination and totals\n this.#updateFooter();\n\n // Call post-render hook if defined\n if (this.parent.lifecycleHooks.postRender) this.parent.lifecycleHooks.postRender();\n log(this.parent.debug, LogLevel.INFO, 'Render process finished.');\n }\n\n // Announces updates for screen readers\n public announceScreenReaderUpdate(message: string): void {\n // Create a live region for accessibility\n const liveRegion = document.createElement('div');\n liveRegion.setAttribute('aria-live', 'polite');\n liveRegion.style.cssText =\n 'position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0);';\n liveRegion.textContent = message;\n document.body.appendChild(liveRegion);\n // Remove the live region after a delay\n setTimeout(() => liveRegion.remove(), 1000);\n }\n\n // Cleans up the renderer by clearing the container\n public destroy(): void {\n log(this.parent.debug, LogLevel.INFO, 'Destroying renderer and clearing container HTML.');\n this.parent.container.innerHTML = '';\n }\n\n // Creates a footer for non-table rendering modes\n #renderNonTableFooter(): void {\n this.footerElement = document.createElement('div');\n this.footerElement.classList.add(config.classes.footer);\n this.contentContainer.appendChild(this.footerElement);\n }\n\n // Refreshes the table body with current data\n #refreshTableBody(): void {\n if (!this.tableBody) return;\n this.#reconcileItems(\n this.tableBody,\n this.parent.state.data,\n (row, index) => this.parent.createTableRow(row, index, row.id),\n (el, row, index) => this.parent.updateRow(el, row, index)\n );\n }\n\n // Refreshes the list body with current data\n #refreshListBody(): void {\n if (!this.listContainer) return;\n this.#reconcileItems(\n this.listContainer,\n this.parent.state.data,\n (row, index) => this.parent.createListItem(row, index),\n (el, row, index) => this.parent.updateListItem(el, row, index)\n );\n }\n\n // Refreshes mobile cards with current data\n #refreshMobileCards(): void {\n if (!this.cardsContainer) return;\n this.#reconcileItems(\n this.cardsContainer,\n this.parent.state.data,\n (row, index) => this.parent.createMobileCard(row, index),\n (el, row, index) => this.parent.updateMobileCard(el, row, index)\n );\n }\n\n // Creates a pagination button\n #createPaginationButton(\n content: string,\n disabled: boolean,\n type: ButtonType\n ): HTMLButtonElement {\n const button = document.createElement('button');\n button.type = 'button';\n button.disabled = disabled;\n\n // Apply appropriate classes based on button type\n let typeConfig: { classNames: { base: string; disabled: string } };\n switch (type) {\n case 'prev':\n typeConfig = config.pagination.prevButton;\n button.classList.add(typeConfig.classNames.base);\n break;\n case 'next':\n typeConfig = config.pagination.nextButton;\n button.classList.add(typeConfig.classNames.base);\n break;\n case 'number':\n typeConfig = config.pagination.numberButton;\n button.classList.add(typeConfig.classNames.base);\n break;\n }\n\n if (disabled) {\n button.classList.add(typeConfig.classNames.disabled);\n }\n\n button.innerHTML = content;\n return button;\n }\n\n // Reconciles DOM elements with data, optimizing updates\n #reconcileItems<K extends HTMLElement>(\n container: HTMLElement,\n data: ReadonlyArray<T>,\n renderer: (item: T, index: number) => K,\n updateFn: (el: K, item: T, index: number) => void\n ): void {\n // Map existing elements by their data-key\n const domMap = new Map<string, K>();\n container.querySelectorAll<K>('[data-key]').forEach((el) => {\n domMap.set(el.dataset.key!, el);\n });\n\n // Create a document fragment for efficient DOM updates\n const fragment = document.createDocumentFragment();\n data.forEach((item, index) => {\n const key = item.id.toString();\n const existingEl = domMap.get(key);\n let elToAppend: K;\n\n if (existingEl) {\n // Update existing element\n updateFn(existingEl, item, index);\n elToAppend = existingEl;\n domMap.delete(key);\n } else {\n // Create new element\n elToAppend = renderer(item, index);\n }\n fragment.appendChild(elToAppend);\n });\n\n // Clear container and append updated elements\n container.innerHTML = '';\n container.appendChild(fragment);\n\n // Display no-data message if data is empty\n if (data.length === 0 && this.parent.state.translations) {\n this.#renderNoDataMessage(\n container,\n container.tagName === 'TBODY' ? this.parent.state.columns.length : 1\n );\n }\n }\n\n // Renders a \"no data available\" message\n #renderNoDataMessage(container: HTMLElement, colSpan: number): void {\n log(this.parent.debug, LogLevel.INFO, 'Rendering \"no data available\" message.');\n const isTable = container.tagName === 'TBODY';\n // Create appropriate element (tr for table, li for list)\n const noDataEl = document.createElement(isTable ? 'tr' : 'li');\n const contentEl = document.createElement(isTable ? 'td' : 'div');\n if (isTable) (contentEl as HTMLTableCellElement).colSpan = colSpan;\n contentEl.classList.add(config.classes.noData);\n contentEl.textContent = this.parent.state.translations!.noDataAvailable;\n noDataEl.appendChild(contentEl);\n container.appendChild(noDataEl);\n }\n\n // Updates the footer with totals and pagination\n #updateFooter(): void {\n const footerTarget =\n this.tableElement?.querySelector(`.${config.classes.footerContainer}`) ??\n this.footerElement;\n if (!footerTarget || !this.parent.state.translations) return;\n\n footerTarget.innerHTML = '';\n this.totalsElement = this.#createTotalsElement();\n this.paginationElement = this.#createPaginationElement();\n footerTarget.appendChild(this.totalsElement);\n footerTarget.appendChild(this.paginationElement);\n }\n\n // Creates the table structure for table rendering mode\n #renderTableStructure(): void {\n log(this.parent.debug, LogLevel.LOG, 'Rendering main table structure.');\n // Create responsive wrapper\n const responsiveWrapper = document.createElement('div');\n responsiveWrapper.classList.add(config.classes.tableResponsive);\n // Create table element\n this.tableElement = document.createElement('table');\n this.tableElement.classList.add(...config.classes.table.containerClass.split(' '));\n this.tableElement.setAttribute('role', 'grid');\n responsiveWrapper.appendChild(this.tableElement);\n this.contentContainer.appendChild(responsiveWrapper);\n\n // Create table header\n this.tableHeader = this.tableElement.createTHead();\n this.tableHeader.classList.add(...config.classes.table.headerClass.split(' '));\n\n // Create table body\n this.tableBody = this.tableElement.createTBody();\n this.tableBody.classList.add(...config.classes.table.bodyClass.split(' '));\n\n // Create table footer\n const tfoot = this.tableElement.createTFoot();\n tfoot.classList.add(...config.classes.table.footerClass.split(' '));\n const footerRow = tfoot.insertRow();\n const footerCell = footerRow.insertCell();\n footerCell.colSpan = this.parent.state.columns.length;\n const footerDiv = document.createElement('div');\n footerDiv.classList.add(config.classes.footerContainer);\n footerCell.appendChild(footerDiv);\n }\n\n // Creates the cards structure for mobile cards rendering mode\n #renderCardsStructure(): void {\n log(this.parent.debug, LogLevel.LOG, 'Rendering main cards structure.');\n this.cardsContainer = document.createElement('div');\n this.cardsContainer.classList.add(config.classes.mobileCardsContainer);\n this.contentContainer.appendChild(this.cardsContainer);\n this.#renderNonTableFooter();\n }\n\n // Creates the list structure for list rendering mode\n #renderListStructure(): void {\n log(this.parent.debug, LogLevel.LOG, 'Rendering main list structure.');\n this.listContainer = document.createElement('ul');\n this.listContainer.classList.add(...config.classes.list.containerClass.split(' '));\n this.contentContainer.appendChild(this.listContainer);\n this.#renderNonTableFooter();\n }\n\n // Renders the table header contents\n #renderTableHeaderContents(): void {\n if (!this.tableHeader || !this.parent.state.translations) return;\n this.tableHeader.innerHTML = '';\n const headerRow = this.tableHeader.insertRow();\n headerRow.setAttribute('role', 'row');\n this.parent.state.columns.forEach((col: string, idx: number) => {\n const th = document.createElement('th');\n th.setAttribute('role', 'columnheader');\n th.setAttribute('data-col-id', col);\n // Apply saved column width\n const width = this.parent.state.columnWidths.get(col);\n if (width) th.style.width = `${width}px`;\n // Apply custom header classes\n if (this.parent.headerCellClasses[idx])\n th.className = this.parent.headerCellClasses[idx];\n\n // Check if the column is sortable\n const isSortable = !this.parent.headerCellClasses[idx]?.includes('no-sorting');\n if (isSortable) {\n const link = document.createElement('a');\n link.href = '#';\n link.innerHTML = this.parent.state.columnTitles[idx] as string;\n link.setAttribute('role', 'button');\n\n // Apply sorting indicators\n const sortItem = this.parent.state.sortConditions.find((item) => item[0] === col);\n if (sortItem) {\n const sortClass =\n sortItem[1] === OrderDirection.ASC\n ? config.classes.sortAscOrder\n : config.classes.sortDescOrder;\n link.classList.add(sortClass);\n link.setAttribute(\n 'aria-sort',\n sortItem[1] === 'ASC' ? 'ascending' : 'descending'\n );\n } else {\n link.classList.add(config.classes.sortNoOrder);\n link.setAttribute('aria-sort', 'none');\n }\n th.appendChild(link);\n } else {\n th.textContent = this.parent.state.columnTitles[idx] as string;\n }\n\n // Enable dragging if configured\n if (this.parent.draggableColumns) {\n th.setAttribute('draggable', 'true');\n th.classList.add(config.classes.draggableColumn);\n }\n\n // Add resize handle\n const resizeHandle = document.createElement('div');\n resizeHandle.className = config.classes.columnResizeHandle;\n th.appendChild(resizeHandle);\n headerRow.appendChild(th);\n });\n }\n\n // Creates the pagination element\n #createPaginationElement(): HTMLElement {\n const parentState = this.parent.state;\n // Calculate total pages\n const totalPages = Math.max(\n 1,\n Math.ceil(parentState.totalRecords / parentState.rowsPerPage)\n );\n const paginationContainer = document.createElement('nav');\n paginationContainer.classList.add(config.classes.paginationContainer);\n paginationContainer.setAttribute('aria-label', parentState.translations!.pageNavigation);\n\n // Add previous button\n paginationContainer.appendChild(\n this.#createPaginationButton(\n this.parent.prevButtonConfig.text || parentState.translations!.previous,\n parentState.currentPage === 1,\n 'prev'\n )\n );\n\n // Add first page button if needed\n if (parentState.currentPage > config.constants.paginationMaxPageDistance) {\n paginationContainer.appendChild(this.#createPaginationButton('1', false, 'number'));\n if (parentState.currentPage > config.constants.paginationEllipsisDistance) {\n // Add ellipsis\n const ellipsis = document.createElement('span');\n ellipsis.textContent = '...';\n ellipsis.setAttribute('aria-hidden', 'true');\n ellipsis.classList.add(config.pagination.ellipsis.classNames.base);\n paginationContainer.appendChild(ellipsis);\n }\n }\n\n // Add page number buttons\n const startPage = Math.max(\n 1,\n parentState.currentPage - config.constants.paginationPageRange\n );\n const endPage = Math.min(\n totalPages,\n parentState.currentPage + config.constants.paginationPageRange\n );\n for (let i = startPage; i <= endPage; i++) {\n paginationContainer.appendChild(\n this.#createPaginationButton(i.toString(), i === parentState.currentPage, 'number')\n );\n }\n\n // Add last page button and ellipsis if needed\n if (endPage < totalPages - config.constants.paginationLastPageBuffer) {\n if (endPage < totalPages - config.constants.paginationEllipsisLastPageBuffer) {\n const ellipsis = document.createElement('span');\n ellipsis.textContent = '...';\n ellipsis.setAttribute('aria-hidden', 'true');\n ellipsis.classList.add(config.pagination.ellipsis.classNames.base);\n paginationContainer.appendChild(ellipsis);\n }\n paginationContainer.appendChild(\n this.#createPaginationButton(totalPages.toString(), false, 'number')\n );\n }\n\n // Add next button\n paginationContainer.appendChild(\n this.#createPaginationButton(\n this.parent.nextButtonConfig.text || parentState.translations!.next,\n parentState.currentPage === totalPages,\n 'next'\n )\n );\n\n return paginationContainer;\n }\n\n // Creates the totals element showing record range\n #createTotalsElement(): HTMLElement {\n const parentState = this.parent.state;\n const totalsDiv = document.createElement('div');\n totalsDiv.classList.add(config.classes.totals);\n if (parentState.totalRecords === 0) {\n totalsDiv.textContent = parentState.translations!.noDataAvailable;\n return totalsDiv;\n }\n // Calculate record range\n const startRecord = (parentState.currentPage - 1) * parentState.rowsPerPage + 1;\n const endRecord = Math.min(\n parentState.currentPage * parentState.rowsPerPage,\n parentState.totalRecords\n );\n // Format the totals text\n const translationKey = parentState\n .translations!.pagination.showingRecords.replace(\n '{start}',\n `<span class=\"${config.classes.recordStart}\">${startRecord}</span>`\n )\n .replace('{end}', `<span class=\"${config.classes.recordEnd}\">${endRecord}</span>`)\n .replace(\n '{total}',\n `<span class=\"${config.classes.recordsTotal}\">${parentState.totalRecords}</span>`\n );\n totalsDiv.innerHTML = translationKey;\n return totalsDiv;\n }\n\n // Ensures the correct container is used for the current rendering mode\n #ensureCorrectContainer(format: RenderType): void {\n log(this.parent.debug, LogLevel.LOG, `Ensuring correct container for format: ${format}`);\n const tableVisible = format === RenderType.TABLE;\n const listVisible = format === RenderType.LIST;\n const cardsVisible = format === RenderType.MOBILE_CARDS;\n\n // Initialize containers if not already created\n if (tableVisible && !this.tableElement) this.#renderTableStructure();\n if (listVisible && !this.listContainer) this.#renderListStructure();\n if (cardsVisible && !this.cardsContainer) this.#renderCardsStructure();\n\n // Toggle visibility of containers\n const tableWrapper = this.tableElement?.parentElement;\n if (tableWrapper) tableWrapper.style.display = tableVisible ? '' : 'none';\n if (this.listContainer) this.listContainer.style.display = listVisible ? '' : 'none';\n if (this.cardsContainer) this.cardsContainer.style.display = cardsVisible ? '' : 'none';\n\n // Toggle footer visibility\n const footerElement =\n this.tableElement?.querySelector(`.${config.classes.footerContainer}`)?.parentElement ??\n this.footerElement;\n if (footerElement)\n footerElement.style.display = listVisible || cardsVisible || tableVisible ? '' : 'none';\n }\n}\n\n/*========================================================================================================\n SNAP RENDERER CLASS ENDS HERE\n==========================================================================================================*/\n","import { log } from './utils.js';\nimport { UrlManager } from './UrlManager.js';\nimport { SnapRecords } from './SnapRecords.js';\nimport { CacheData, Identifiable, LogLevel } from './SnapTypes.js';\n\n/*========================================================================================================\n\n CACHE MANAGER\n\n Class responsible for managing data caching using IndexedDB\n\n Manages client-side data caching for SnapRecords using IndexedDB.\n Handles cache invalidation, retrieval, storage, and preloading of paginated data,\n optimizing network usage and improving performance by reducing redundant API requests.\n\n @typeParam T - The data type managed by the cache, extending Identifiable and a generic record.\n\n==========================================================================================================*/\n\nexport class CacheManager<T extends Identifiable & Record<string, unknown>> {\n // Reference to the parent SnapRecords instance\n #parent: SnapRecords<T>;\n // URL manager for constructing API request URLs\n #urlManager: UrlManager<T>;\n // Add timeout for cache operations\n readonly #CACHE_TIMEOUT_MS = 5000;\n\n // Constructor initializes the cache manager with parent and URL manager\n constructor(parent: SnapRecords<T>, urlManager: UrlManager<T>) {\n this.#parent = parent;\n this.#urlManager = urlManager;\n }\n\n #isValidCache(data: CacheData<T>): boolean {\n return (\n typeof data.timestamp === 'number' &&\n Array.isArray(data.data) &&\n typeof data.totalRecords === 'number' &&\n data.timestamp > Date.now() - this.#parent.cacheExpiry\n );\n }\n\n // Invalidates the cache if filters have changed\n public invalidateCache(): void {\n // Skip if caching is disabled\n if (!this.#parent.useCache) return;\n // Hash current filters for comparison\n const filterHash = JSON.stringify(this.#parent.state.filters);\n if (filterHash !== this.#parent.lastFilterHash) {\n // Clear cache if filters have changed\n this.#parent.db.cache.clear();\n this.#parent.lastFilterHash = filterHash;\n log(this.#parent.debug, LogLevel.LOG, 'Cache invalidated due to filter change');\n }\n }\n\n // Preloads data for the next page if enabled\n public async preloadNextPage(): Promise<void> {\n // Skip if preloading is disabled\n if (!this.#parent.preloadNextPageEnabled) return;\n\n // Check network conditions to avoid preloading on slow connections\n const conn = (\n navigator as {\n connection?: { saveData?: boolean; effectiveType?: string };\n }\n ).connection;\n if (\n conn &&\n (conn.saveData || conn.effectiveType === 'slow-2g' || conn.effectiveType === '2g')\n ) {\n log(\n this.#parent.debug,\n LogLevel.INFO,\n 'Preloading skipped due to slow connection or data saver mode.'\n );\n return;\n }\n\n // Calculate next page number\n const nextPage = this.#parent.state.currentPage + 1;\n const totalPages = Math.ceil(\n this.#parent.state.totalRecords / this.#parent.state.rowsPerPage\n );\n // Skip if next page exceeds total pages\n if (nextPage > totalPages) return;\n\n // Build URL for next page\n const params = this.#urlManager.getServerParams(nextPage);\n const url = this.#urlManager.buildUrl(params);\n\n // Check cache if enabled\n if (this.#parent.useCache) {\n const cached = await this.getCachedData(url);\n if (cached && Date.now() - cached.timestamp < this.#parent.cacheExpiry) {\n log(\n this.#parent.debug,\n LogLevel.INFO,\n 'Preload not needed, next page is already cached and valid.'\n );\n return;\n }\n }\n\n try {\n // Fetch data for the next page\n log(this.#parent.debug, LogLevel.INFO, 'Preloading data for next page:', url);\n const response = await fetch(url);\n if (response.ok) {\n const data: { data: T[]; totalRecords: number } = await response.json();\n if (this.#parent.useCache) {\n // Cache the fetched data\n await this.cacheData(url, {\n url,\n data: data.data || [],\n totalRecords: data.totalRecords || 0,\n timestamp: Date.now(),\n });\n }\n }\n } catch (error: unknown) {\n // Log preload failure\n log(this.#parent.debug, LogLevel.LOG, 'Preload failed:', { error, url });\n }\n }\n\n // Caches data for a given URL\n public async cacheData(url: string, data: CacheData<T>): Promise<void> {\n // Skip if caching is disabled\n if (!this.#parent.useCache) return;\n try {\n // Store data in IndexedDB\n await this.#parent.db.cache.put(data);\n log(this.#parent.debug, LogLevel.INFO, 'Data cached successfully for URL:', url);\n } catch (error: unknown) {\n // Log error if caching fails\n log(this.#parent.debug, LogLevel.ERROR, 'Error caching data:', { error, url });\n }\n }\n\n // Retrieves cached data for a given URL\n public async getCachedData(url: string): Promise<CacheData<T> | undefined> {\n // Skip if caching is disabled\n if (!this.#parent.useCache) return undefined;\n try {\n // Attempt to retrieve cached data from IndexedDB\n const cached = (await Promise.race([\n this.#parent.db.cache.get(url),\n new Promise((_, reject) =>\n setTimeout(() => reject(new Error('Cache timeout')), this.#CACHE_TIMEOUT_MS)\n ),\n ])) as CacheData<T> | undefined;\n\n if (cached && this.#isValidCache(cached)) {\n return cached;\n }\n return undefined;\n } catch (error: unknown) {\n // Log error and return undefined\n log(this.#parent.debug, LogLevel.ERROR, 'Error retrieving cache:', { error, url });\n return undefined;\n }\n }\n}\n\n/*========================================================================================================\n CACHE MANAGER OBJECT ENDS HERE\n==========================================================================================================*/\n","// src/utils/env.ts\nvar NOTHING = Symbol.for(\"immer-nothing\");\nvar DRAFTABLE = Symbol.for(\"immer-draftable\");\nvar DRAFT_STATE = Symbol.for(\"immer-state\");\n\n// src/utils/errors.ts\nvar errors = process.env.NODE_ENV !== \"production\" ? [\n // All error codes, starting by 0:\n function(plugin) {\n return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`;\n },\n function(thing) {\n return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`;\n },\n \"This object has been frozen and should not be mutated\",\n function(data) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + data;\n },\n \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n \"Immer forbids circular references\",\n \"The first or second argument to `produce` must be a function\",\n \"The third argument to `produce` must be a function or undefined\",\n \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n function(thing) {\n return `'current' expects a draft, got: ${thing}`;\n },\n \"Object.defineProperty() cannot be used on an Immer draft\",\n \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n \"Immer only supports deleting array indices\",\n \"Immer only supports setting array indices and the 'length' property\",\n function(thing) {\n return `'original' expects a draft, got: ${thing}`;\n }\n // Note: if more errors are added, the errorOffset in Patches.ts should be increased\n // See Patches.ts for additional errors\n] : [];\nfunction die(error, ...args) {\n if (process.env.NODE_ENV !== \"production\") {\n const e = errors[error];\n const msg = typeof e === \"function\" ? e.apply(null, args) : e;\n throw new Error(`[Immer] ${msg}`);\n }\n throw new Error(\n `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n );\n}\n\n// src/utils/common.ts\nvar getPrototypeOf = Object.getPrototypeOf;\nfunction isDraft(value) {\n return !!value && !!value[DRAFT_STATE];\n}\nfunction isDraftable(value) {\n if (!value)\n return false;\n return isPlainObject(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!value.constructor?.[DRAFTABLE] || isMap(value) || isSet(value);\n}\nvar objectCtorString = Object.prototype.constructor.toString();\nfunction isPlainObject(value) {\n if (!value || typeof value !== \"object\")\n return false;\n const proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n const Ctor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n if (Ctor === Object)\n return true;\n return typeof Ctor == \"function\" && Function.toString.call(Ctor) === objectCtorString;\n}\nfunction original(value) {\n if (!isDraft(value))\n die(15, value);\n return value[DRAFT_STATE].base_;\n}\nfunction each(obj, iter) {\n if (getArchtype(obj) === 0 /* Object */) {\n Reflect.ownKeys(obj).forEach((key) => {\n iter(key, obj[key], obj);\n });\n } else {\n obj.forEach((entry, index) => iter(index, entry, obj));\n }\n}\nfunction getArchtype(thing) {\n const state = thing[DRAFT_STATE];\n return state ? state.type_ : Array.isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */;\n}\nfunction has(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop);\n}\nfunction get(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.get(prop) : thing[prop];\n}\nfunction set(thing, propOrOldValue, value) {\n const t = getArchtype(thing);\n if (t === 2 /* Map */)\n thing.set(propOrOldValue, value);\n else if (t === 3 /* Set */) {\n thing.add(value);\n } else\n thing[propOrOldValue] = value;\n}\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\nfunction isMap(target) {\n return target instanceof Map;\n}\nfunction isSet(target) {\n return target instanceof Set;\n}\nfunction latest(state) {\n return state.copy_ || state.base_;\n}\nfunction shallowCopy(base, strict) {\n if (isMap(base)) {\n return new Map(base);\n }\n if (isSet(base)) {\n return new Set(base);\n }\n if (Array.isArray(base))\n return Array.prototype.slice.call(base);\n const isPlain = isPlainObject(base);\n if (strict === true || strict === \"class_only\" && !isPlain) {\n const descriptors = Object.getOwnPropertyDescriptors(base);\n delete descriptors[DRAFT_STATE];\n let keys = Reflect.ownKeys(descriptors);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const desc = descriptors[key];\n if (desc.writable === false) {\n desc.writable = true;\n desc.configurable = true;\n }\n if (desc.get || desc.set)\n descriptors[key] = {\n configurable: true,\n writable: true,\n // could live with !!desc.set as well here...\n enumerable: desc.enumerable,\n value: base[key]\n };\n }\n return Object.create(getPrototypeOf(base), descriptors);\n } else {\n const proto = getPrototypeOf(base);\n if (proto !== null && isPlain) {\n return { ...base };\n }\n const obj = Object.create(proto);\n return Object.assign(obj, base);\n }\n}\nfunction freeze(obj, deep = false) {\n if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj))\n return obj;\n if (getArchtype(obj) > 1) {\n obj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections;\n }\n Object.freeze(obj);\n if (deep)\n Object.entries(obj).forEach(([key, value]) => freeze(value, true));\n return obj;\n}\nfunction dontMutateFrozenCollections() {\n die(2);\n}\nfunction isFrozen(obj) {\n return Object.isFrozen(obj);\n}\n\n// src/utils/plugins.ts\nvar plugins = {};\nfunction getPlugin(pluginKey) {\n const plugin = plugins[pluginKey];\n if (!plugin) {\n die(0, pluginKey);\n }\n return plugin;\n}\nfunction loadPlugin(pluginKey, implementation) {\n if (!plugins[pluginKey])\n plugins[pluginKey] = implementation;\n}\n\n// src/core/scope.ts\nvar currentScope;\nfunction getCurrentScope() {\n return currentScope;\n}\nfunction createScope(parent_, immer_) {\n return {\n drafts_: [],\n parent_,\n immer_,\n // Whenever the modified draft contains a draft from another scope, we\n // need to prevent auto-freezing so the unowned draft can be finalized.\n canAutoFreeze_: true,\n unfinalizedDrafts_: 0\n };\n}\nfunction usePatchesInScope(scope, patchListener) {\n if (patchListener) {\n getPlugin(\"Patches\");\n scope.patches_ = [];\n scope.inversePatches_ = [];\n scope.patchListener_ = patchListener;\n }\n}\nfunction revokeScope(scope) {\n leaveScope(scope);\n scope.drafts_.forEach(revokeDraft);\n scope.drafts_ = null;\n}\nfunction leaveScope(scope) {\n if (scope === currentScope) {\n currentScope = scope.parent_;\n }\n}\nfunction enterScope(immer2) {\n return currentScope = createScope(currentScope, immer2);\n}\nfunction revokeDraft(draft) {\n const state = draft[DRAFT_STATE];\n if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */)\n state.revoke_();\n else\n state.revoked_ = true;\n}\n\n// src/core/finalize.ts\nfunction processResult(result, scope) {\n scope.unfinalizedDrafts_ = scope.drafts_.length;\n const baseDraft = scope.drafts_[0];\n const isReplaced = result !== void 0 && result !== baseDraft;\n if (isReplaced) {\n if (baseDraft[DRAFT_STATE].modified_) {\n revokeScope(scope);\n die(4);\n }\n if (isDraftable(result)) {\n result = finalize(scope, result);\n if (!scope.parent_)\n maybeFreeze(scope, result);\n }\n if (scope.patches_) {\n getPlugin(\"Patches\").generateReplacementPatches_(\n baseDraft[DRAFT_STATE].base_,\n result,\n scope.patches_,\n scope.inversePatches_\n );\n }\n } else {\n result = finalize(scope, baseDraft, []);\n }\n revokeScope(scope);\n if (scope.patches_) {\n scope.patchListener_(scope.patches_, scope.inversePatches_);\n }\n return result !== NOTHING ? result : void 0;\n}\nfunction finalize(rootScope, value, path) {\n if (isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n if (!state) {\n each(\n value,\n (key, childValue) => finalizeProperty(rootScope, state, value, key, childValue, path)\n );\n return value;\n }\n if (state.scope_ !== rootScope)\n return value;\n if (!state.modified_) {\n maybeFreeze(rootScope, state.base_, true);\n return state.base_;\n }\n if (!state.finalized_) {\n state.finalized_ = true;\n state.scope_.unfinalizedDrafts_--;\n const result = state.copy_;\n let resultEach = result;\n let isSet2 = false;\n if (state.type_ === 3 /* Set */) {\n resultEach = new Set(result);\n result.clear();\n isSet2 = true;\n }\n each(\n resultEach,\n (key, childValue) => finalizeProperty(rootScope, state, result, key, childValue, path, isSet2)\n );\n maybeFreeze(rootScope, result, false);\n if (path && rootScope.patches_) {\n getPlugin(\"Patches\").generatePatches_(\n state,\n path,\n rootScope.patches_,\n rootScope.inversePatches_\n );\n }\n }\n return state.copy_;\n}\nfunction finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath, targetIsSet) {\n if (process.env.NODE_ENV !== \"production\" && childValue === targetObject)\n die(5);\n if (isDraft(childValue)) {\n const path = rootPath && parentState && parentState.type_ !== 3 /* Set */ && // Set objects are atomic since they have no keys.\n !has(parentState.assigned_, prop) ? rootPath.concat(prop) : void 0;\n const res = finalize(rootScope, childValue, path);\n set(targetObject, prop, res);\n if (isDraft(res)) {\n rootScope.canAutoFreeze_ = false;\n } else\n return;\n } else if (targetIsSet) {\n targetObject.add(childValue);\n }\n if (isDraftable(childValue) && !isFrozen(childValue)) {\n if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n return;\n }\n finalize(rootScope, childValue);\n if ((!parentState || !parentState.scope_.parent_) && typeof prop !== \"symbol\" && Object.prototype.propertyIsEnumerable.call(targetObject, prop))\n maybeFreeze(rootScope, childValue);\n }\n}\nfunction maybeFreeze(scope, value, deep = false) {\n if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n freeze(value, deep);\n }\n}\n\n// src/core/proxy.ts\nfunction createProxyProxy(base, parent) {\n const isArray = Array.isArray(base);\n const state = {\n type_: isArray ? 1 /* Array */ : 0 /* Object */,\n // Track which produce call this is associated with.\n scope_: parent ? parent.scope_ : getCurrentScope(),\n // True for both shallow and deep changes.\n modified_: false,\n // Used during finalization.\n finalized_: false,\n // Track which properties have been assigned (true) or deleted (false).\n assigned_: {},\n // The parent draft state.\n parent_: parent,\n // The base state.\n base_: base,\n // The base proxy.\n draft_: null,\n // set below\n // The base copy with any updated values.\n copy_: null,\n // Called by the `produce` function.\n revoke_: null,\n isManual_: false\n };\n let target = state;\n let traps = objectTraps;\n if (isArray) {\n target = [state];\n traps = arrayTraps;\n }\n const { revoke, proxy } = Proxy.revocable(target, traps);\n state.draft_ = proxy;\n state.revoke_ = revoke;\n return proxy;\n}\nvar objectTraps = {\n get(state, prop) {\n if (prop === DRAFT_STATE)\n return state;\n const source = latest(state);\n if (!has(source, prop)) {\n return readPropFromProto(state, source, prop);\n }\n const value = source[prop];\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value === peek(state.base_, prop)) {\n prepareCopy(state);\n return state.copy_[prop] = createProxy(value, state);\n }\n return value;\n },\n has(state, prop) {\n return prop in latest(state);\n },\n ownKeys(state) {\n return Reflect.ownKeys(latest(state));\n },\n set(state, prop, value) {\n const desc = getDescriptorFromProto(latest(state), prop);\n if (desc?.set) {\n desc.set.call(state.draft_, value);\n return true;\n }\n if (!state.modified_) {\n const current2 = peek(latest(state), prop);\n const currentState = current2?.[DRAFT_STATE];\n if (currentState && currentState.base_ === value) {\n state.copy_[prop] = value;\n state.assigned_[prop] = false;\n return true;\n }\n if (is(value, current2) && (value !== void 0 || has(state.base_, prop)))\n return true;\n prepareCopy(state);\n markChanged(state);\n }\n if (state.copy_[prop] === value && // special case: handle new props with value 'undefined'\n (value !== void 0 || prop in state.copy_) || // special case: NaN\n Number.isNaN(value) && Number.isNaN(state.copy_[prop]))\n return true;\n state.copy_[prop] = value;\n state.assigned_[prop] = true;\n return true;\n },\n deleteProperty(state, prop) {\n if (peek(state.base_, prop) !== void 0 || prop in state.base_) {\n state.assigned_[prop] = false;\n prepareCopy(state);\n markChanged(state);\n } else {\n delete state.assigned_[prop];\n }\n if (state.copy_) {\n delete state.copy_[prop];\n }\n return true;\n },\n // Note: We never coerce `desc.value` into an Immer draft, because we can't make\n // the same guarantee in ES5 mode.\n getOwnPropertyDescriptor(state, prop) {\n const owner = latest(state);\n const desc = Reflect.getOwnPropertyDescriptor(owner, prop);\n if (!desc)\n return desc;\n return {\n writable: true,\n configurable: state.type_ !== 1 /* Array */ || prop !== \"length\",\n enumerable: desc.enumerable,\n value: owner[prop]\n };\n },\n defineProperty() {\n die(11);\n },\n getPrototypeOf(state) {\n return getPrototypeOf(state.base_);\n },\n setPrototypeOf() {\n die(12);\n }\n};\nvar arrayTraps = {};\neach(objectTraps, (key, fn) => {\n arrayTraps[key] = function() {\n arguments[0] = arguments[0][0];\n return fn.apply(this, arguments);\n };\n});\narrayTraps.deleteProperty = function(state, prop) {\n if (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop)))\n die(13);\n return arrayTraps.set.call(this, state, prop, void 0);\n};\narrayTraps.set = function(state, prop, value) {\n if (process.env.NODE_ENV !== \"production\" && prop !== \"length\" && isNaN(parseInt(prop)))\n die(14);\n return objectTraps.set.call(this, state[0], prop, value, state[0]);\n};\nfunction peek(draft, prop) {\n const state = draft[DRAFT_STATE];\n const source = state ? latest(state) : draft;\n return source[prop];\n}\nfunction readPropFromProto(state, source, prop) {\n const desc = getDescriptorFromProto(source, prop);\n return desc ? `value` in desc ? desc.value : (\n // This is a very special case, if the prop is a getter defined by the\n // prototype, we should invoke it with the draft as context!\n desc.get?.call(state.draft_)\n ) : void 0;\n}\nfunction getDescriptorFromProto(source, prop) {\n if (!(prop in source))\n return void 0;\n let proto = getPrototypeOf(source);\n while (proto) {\n const desc = Object.getOwnPropertyDescriptor(proto, prop);\n if (desc)\n return desc;\n proto = getPrototypeOf(proto);\n }\n return void 0;\n}\nfunction markChanged(state) {\n if (!state.modified_) {\n state.modified_ = true;\n if (state.parent_) {\n markChanged(state.parent_);\n }\n }\n}\nfunction prepareCopy(state) {\n if (!state.copy_) {\n state.copy_ = shallowCopy(\n state.base_,\n state.scope_.immer_.useStrictShallowCopy_\n );\n }\n}\n\n// src/core/immerClass.ts\nvar Immer2 = class {\n constructor(config) {\n this.autoFreeze_ = true;\n this.useStrictShallowCopy_ = false;\n /**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\n this.produce = (base, recipe, patchListener) => {\n if (typeof base === \"function\" && typeof recipe !== \"function\") {\n const defaultBase = recipe;\n recipe = base;\n const self = this;\n return function curriedProduce(base2 = defaultBase, ...args) {\n return self.produce(base2, (draft) => recipe.call(this, draft, ...args));\n };\n }\n if (typeof recipe !== \"function\")\n die(6);\n if (patchListener !== void 0 && typeof patchListener !== \"function\")\n die(7);\n let result;\n if (isDraftable(base)) {\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n let hasError = true;\n try {\n result = recipe(proxy);\n hasError = false;\n } finally {\n if (hasError)\n revokeScope(scope);\n else\n leaveScope(scope);\n }\n usePatchesInScope(scope, patchListener);\n return processResult(result, scope);\n } else if (!base || typeof base !== \"object\") {\n result = recipe(base);\n if (result === void 0)\n result = base;\n if (result === NOTHING)\n result = void 0;\n if (this.autoFreeze_)\n freeze(result, true);\n if (patchListener) {\n const p = [];\n const ip = [];\n getPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip);\n patchListener(p, ip);\n }\n return result;\n } else\n die(1, base);\n };\n this.produceWithPatches = (base, recipe) => {\n if (typeof base === \"function\") {\n return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args));\n }\n let patches, inversePatches;\n const result = this.produce(base, recipe, (p, ip) => {\n patches = p;\n inversePatches = ip;\n });\n return [result, patches, inversePatches];\n };\n if (typeof config?.autoFreeze === \"boolean\")\n this.setAutoFreeze(config.autoFreeze);\n if (typeof config?.useStrictShallowCopy === \"boolean\")\n this.setUseStrictShallowCopy(config.useStrictShallowCopy);\n }\n createDraft(base) {\n if (!isDraftable(base))\n die(8);\n if (isDraft(base))\n base = current(base);\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n proxy[DRAFT_STATE].isManual_ = true;\n leaveScope(scope);\n return proxy;\n }\n finishDraft(draft, patchListener) {\n const state = draft && draft[DRAFT_STATE];\n if (!state || !state.isManual_)\n die(9);\n const { scope_: scope } = state;\n usePatchesInScope(scope, patchListener);\n return processResult(void 0, scope);\n }\n /**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * By default, auto-freezing is enabled.\n */\n setAutoFreeze(value) {\n this.autoFreeze_ = value;\n }\n /**\n * Pass true to enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\n setUseStrictShallowCopy(value) {\n this.useStrictShallowCopy_ = value;\n }\n applyPatches(base, patches) {\n let i;\n for (i = patches.length - 1; i >= 0; i--) {\n const patch = patches[i];\n if (patch.path.length === 0 && patch.op === \"replace\") {\n base = patch.value;\n break;\n }\n }\n if (i > -1) {\n patches = patches.slice(i + 1);\n }\n const applyPatchesImpl = getPlugin(\"Patches\").applyPatches_;\n if (isDraft(base)) {\n return applyPatchesImpl(base, patches);\n }\n return this.produce(\n base,\n (draft) => applyPatchesImpl(draft, patches)\n );\n }\n};\nfunction createProxy(value, parent) {\n const draft = isMap(value) ? getPlugin(\"MapSet\").proxyMap_(value, parent) : isSet(value) ? getPlugin(\"MapSet\").proxySet_(value, parent) : createProxyProxy(value, parent);\n const scope = parent ? parent.scope_ : getCurrentScope();\n scope.drafts_.push(draft);\n return draft;\n}\n\n// src/core/current.ts\nfunction current(value) {\n if (!isDraft(value))\n die(10, value);\n return currentImpl(value);\n}\nfunction currentImpl(value) {\n if (!isDraftable(value) || isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n let copy;\n if (state) {\n if (!state.modified_)\n return state.base_;\n state.finalized_ = true;\n copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_);\n } else {\n copy = shallowCopy(value, true);\n }\n each(copy, (key, childValue) => {\n set(copy, key, currentImpl(childValue));\n });\n if (state) {\n state.finalized_ = false;\n }\n return copy;\n}\n\n// src/plugins/patches.ts\nfunction enablePatches() {\n const errorOffset = 16;\n if (process.env.NODE_ENV !== \"production\") {\n errors.push(\n 'Sets cannot have \"replace\" patches.',\n function(op) {\n return \"Unsupported patch operation: \" + op;\n },\n function(path) {\n return \"Cannot apply patch, path doesn't resolve: \" + path;\n },\n \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n );\n }\n const REPLACE = \"replace\";\n const ADD = \"add\";\n const REMOVE = \"remove\";\n function generatePatches_(state, basePath, patches, inversePatches) {\n switch (state.type_) {\n case 0 /* Object */:\n case 2 /* Map */:\n return generatePatchesFromAssigned(\n state,\n basePath,\n patches,\n inversePatches\n );\n case 1 /* Array */:\n return generateArrayPatches(state, basePath, patches, inversePatches);\n case 3 /* Set */:\n return generateSetPatches(\n state,\n basePath,\n patches,\n inversePatches\n );\n }\n }\n function generateArrayPatches(state, basePath, patches, inversePatches) {\n let { base_, assigned_ } = state;\n let copy_ = state.copy_;\n if (copy_.length < base_.length) {\n ;\n [base_, copy_] = [copy_, base_];\n [patches, inversePatches] = [inversePatches, patches];\n }\n for (let i = 0; i < base_.length; i++) {\n if (assigned_[i] && copy_[i] !== base_[i]) {\n const path = basePath.concat([i]);\n patches.push({\n op: REPLACE,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n inversePatches.push({\n op: REPLACE,\n path,\n value: clonePatchValueIfNeeded(base_[i])\n });\n }\n }\n for (let i = base_.length; i < copy_.length; i++) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n }\n for (let i = copy_.length - 1; base_.length <= i; --i) {\n const path = basePath.concat([i]);\n inversePatches.push({\n op: REMOVE,\n path\n });\n }\n }\n function generatePatchesFromAssigned(state, basePath, patches, inversePatches) {\n const { base_, copy_ } = state;\n each(state.assigned_, (key, assignedValue) => {\n const origValue = get(base_, key);\n const value = get(copy_, key);\n const op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD;\n if (origValue === value && op === REPLACE)\n return;\n const path = basePath.concat(key);\n patches.push(op === REMOVE ? { op, path } : { op, path, value });\n inversePatches.push(\n op === ADD ? { op: REMOVE, path } : op === REMOVE ? { op: ADD, path, value: clonePatchValueIfNeeded(origValue) } : { op: REPLACE, path, value: clonePatchValueIfNeeded(origValue) }\n );\n });\n }\n function generateSetPatches(state, basePath, patches, inversePatches) {\n let { base_, copy_ } = state;\n let i = 0;\n base_.forEach((value) => {\n if (!copy_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: REMOVE,\n path,\n value\n });\n inversePatches.unshift({\n op: ADD,\n path,\n value\n });\n }\n i++;\n });\n i = 0;\n copy_.forEach((value) => {\n if (!base_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n value\n });\n inversePatches.unshift({\n op: REMOVE,\n path,\n value\n });\n }\n i++;\n });\n }\n function generateReplacementPatches_(baseValue, replacement, patches, inversePatches) {\n patches.push({\n op: REPLACE,\n path: [],\n value: replacement === NOTHING ? void 0 : replacement\n });\n inversePatches.push({\n op: REPLACE,\n path: [],\n value: baseValue\n });\n }\n function applyPatches_(draft, patches) {\n patches.forEach((patch) => {\n const { path, op } = patch;\n let base = draft;\n for (let i = 0; i < path.length - 1; i++) {\n const parentType = getArchtype(base);\n let p = path[i];\n if (typeof p !== \"string\" && typeof p !== \"number\") {\n p = \"\" + p;\n }\n if ((parentType === 0 /* Object */ || parentType === 1 /* Array */) && (p === \"__proto__\" || p === \"constructor\"))\n die(errorOffset + 3);\n if (typeof base === \"function\" && p === \"prototype\")\n die(errorOffset + 3);\n base = get(base, p);\n if (typeof base !== \"object\")\n die(errorOffset + 2, path.join(\"/\"));\n }\n const type = getArchtype(base);\n const value = deepClonePatchValue(patch.value);\n const key = path[path.length - 1];\n switch (op) {\n case REPLACE:\n switch (type) {\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n die(errorOffset);\n default:\n return base[key] = value;\n }\n case ADD:\n switch (type) {\n case 1 /* Array */:\n return key === \"-\" ? base.push(value) : base.splice(key, 0, value);\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n return base.add(value);\n default:\n return base[key] = value;\n }\n case REMOVE:\n switch (type) {\n case 1 /* Array */:\n return base.splice(key, 1);\n case 2 /* Map */:\n return base.delete(key);\n case 3 /* Set */:\n return base.delete(patch.value);\n default:\n return delete base[key];\n }\n default:\n die(errorOffset + 1, op);\n }\n });\n return draft;\n }\n function deepClonePatchValue(obj) {\n if (!isDraftable(obj))\n return obj;\n if (Array.isArray(obj))\n return obj.map(deepClonePatchValue);\n if (isMap(obj))\n return new Map(\n Array.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n );\n if (isSet(obj))\n return new Set(Array.from(obj).map(deepClonePatchValue));\n const cloned = Object.create(getPrototypeOf(obj));\n for (const key in obj)\n cloned[key] = deepClonePatchValue(obj[key]);\n if (has(obj, DRAFTABLE))\n cloned[DRAFTABLE] = obj[DRAFTABLE];\n return cloned;\n }\n function clonePatchValueIfNeeded(obj) {\n if (isDraft(obj)) {\n return deepClonePatchValue(obj);\n } else\n return obj;\n }\n loadPlugin(\"Patches\", {\n applyPatches_,\n generatePatches_,\n generateReplacementPatches_\n });\n}\n\n// src/plugins/mapset.ts\nfunction enableMapSet() {\n class DraftMap extends Map {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 2 /* Map */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n assigned_: void 0,\n base_: target,\n draft_: this,\n isManual_: false,\n revoked_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(key) {\n return latest(this[DRAFT_STATE]).has(key);\n }\n set(key, value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!latest(state).has(key) || latest(state).get(key) !== value) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_.set(key, true);\n state.copy_.set(key, value);\n state.assigned_.set(key, true);\n }\n return this;\n }\n delete(key) {\n if (!this.has(key)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareMapCopy(state);\n markChanged(state);\n if (state.base_.has(key)) {\n state.assigned_.set(key, false);\n } else {\n state.assigned_.delete(key);\n }\n state.copy_.delete(key);\n return true;\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_ = /* @__PURE__ */ new Map();\n each(state.base_, (key) => {\n state.assigned_.set(key, false);\n });\n state.copy_.clear();\n }\n }\n forEach(cb, thisArg) {\n const state = this[DRAFT_STATE];\n latest(state).forEach((_value, key, _map) => {\n cb.call(thisArg, this.get(key), key, this);\n });\n }\n get(key) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n const value = latest(state).get(key);\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value !== state.base_.get(key)) {\n return value;\n }\n const draft = createProxy(value, state);\n prepareMapCopy(state);\n state.copy_.set(key, draft);\n return draft;\n }\n keys() {\n return latest(this[DRAFT_STATE]).keys();\n }\n values() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.values(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value\n };\n }\n };\n }\n entries() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.entries(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value: [r.value, value]\n };\n }\n };\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.entries();\n }\n }\n function proxyMap_(target, parent) {\n return new DraftMap(target, parent);\n }\n function prepareMapCopy(state) {\n if (!state.copy_) {\n state.assigned_ = /* @__PURE__ */ new Map();\n state.copy_ = new Map(state.base_);\n }\n }\n class DraftSet extends Set {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 3 /* Set */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n base_: target,\n draft_: this,\n drafts_: /* @__PURE__ */ new Map(),\n revoked_: false,\n isManual_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!state.copy_) {\n return state.base_.has(value);\n }\n if (state.copy_.has(value))\n return true;\n if (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value)))\n return true;\n return false;\n }\n add(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!this.has(value)) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.add(value);\n }\n return this;\n }\n delete(value) {\n if (!this.has(value)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n markChanged(state);\n return state.copy_.delete(value) || (state.drafts_.has(value) ? state.copy_.delete(state.drafts_.get(value)) : (\n /* istanbul ignore next */\n false\n ));\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.clear();\n }\n }\n values() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.values();\n }\n entries() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.entries();\n }\n keys() {\n return this.values();\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.values();\n }\n forEach(cb, thisArg) {\n const iterator = this.values();\n let result = iterator.next();\n while (!result.done) {\n cb.call(thisArg, result.value, result.value, this);\n result = iterator.next();\n }\n }\n }\n function proxySet_(target, parent) {\n return new DraftSet(target, parent);\n }\n function prepareSetCopy(state) {\n if (!state.copy_) {\n state.copy_ = /* @__PURE__ */ new Set();\n state.base_.forEach((value) => {\n if (isDraftable(value)) {\n const draft = createProxy(value, state);\n state.drafts_.set(value, draft);\n state.copy_.add(draft);\n } else {\n state.copy_.add(value);\n }\n });\n }\n }\n function assertUnrevoked(state) {\n if (state.revoked_)\n die(3, JSON.stringify(latest(state)));\n }\n loadPlugin(\"MapSet\", { proxyMap_, proxySet_ });\n}\n\n// src/immer.ts\nvar immer = new Immer2();\nvar produce = immer.produce;\nvar produceWithPatches = immer.produceWithPatches.bind(\n immer\n);\nvar setAutoFreeze = immer.setAutoFreeze.bind(immer);\nvar setUseStrictShallowCopy = immer.setUseStrictShallowCopy.bind(immer);\nvar applyPatches = immer.applyPatches.bind(immer);\nvar createDraft = immer.createDraft.bind(immer);\nvar finishDraft = immer.finishDraft.bind(immer);\nfunction castDraft(value) {\n return value;\n}\nfunction castImmutable(value) {\n return value;\n}\nexport {\n Immer2 as Immer,\n applyPatches,\n castDraft,\n castImmutable,\n createDraft,\n current,\n enableMapSet,\n enablePatches,\n finishDraft,\n freeze,\n DRAFTABLE as immerable,\n isDraft,\n isDraftable,\n NOTHING as nothing,\n original,\n produce,\n produceWithPatches,\n setAutoFreeze,\n setUseStrictShallowCopy\n};\n//# sourceMappingURL=immer.mjs.map","import {\n LogLevel,\n RowsPerPage,\n StateUpdater,\n Identifiable,\n SortCondition,\n OrderDirection,\n PersistedState,\n SnapRecordsState,\n} from './SnapTypes.js';\nimport { log } from './utils.js';\nimport { produce, Draft } from 'immer';\nimport { SnapRecords } from './SnapRecords.js';\n\n/*========================================================================================================\n\n STATE MANAGER CLASS\n\n Class responsible for managing and persisting the state of a SnapRecords instance\n\n The StateManager class is responsible for managing, updating, and persisting the state of a\n SnapRecords instance.\n It provides methods to update the state immutably, save and load state from localStorage,\n and synchronize state with the browser URL.\n This ensures that user preferences such as column order, filters, sorting, and pagination\n are preserved across sessions and can be shared via URLs.\n\n==========================================================================================================*/\n\nexport class StateManager<T extends Identifiable & Record<string, unknown>> {\n // Reference to the parent SnapRecords instance\n #parent: SnapRecords<T>;\n // Add timeout for debounce operations\n readonly #DEBOUNCE_TIMEOUT_MS = 500;\n // Add debounce for save operations\n #saveDebounceTimer: NodeJS.Timeout | null = null;\n\n // Constructor initializes the state manager with the parent instance\n constructor(parent: SnapRecords<T>) {\n this.#parent = parent;\n }\n\n // Updates the state using an Immer draft\n public setState(updater: StateUpdater<T>): void {\n // Create a new state using Immer's produce for immutability\n const nextState = produce(this.#parent.state, updater);\n // Only update if the state has changed\n if (nextState !== this.#parent.state) {\n this.#parent.state = nextState as SnapRecordsState<T>;\n log(this.#parent.debug, LogLevel.INFO, 'State updated.', this.#parent.state);\n // Persist state to storage and update URL\n this.saveStateToStorage();\n this.updateURLState();\n }\n }\n\n // Updates the URL with current state parameters if usePushState is enabled\n public updateURLState(): void {\n // Skip if URL state persistence is disabled\n if (!this.#parent.usePushState) return;\n log(this.#parent.debug, LogLevel.INFO, 'Updating URL with current state.');\n // Create URLSearchParams to hold query parameters\n const params = new URLSearchParams();\n params.set('page', this.#parent.state.currentPage.toString());\n params.set('perPage', this.#parent.state.rowsPerPage.toString());\n // Add filter parameters\n Object.entries(this.#parent.state.filters).forEach(([key, value]) => {\n if (value) params.set(`filtering[${key}]`, String(value));\n });\n // Add sort conditions\n this.#parent.state.sortConditions.forEach(([column, direction]) => {\n params.append(`sorting[${column}]`, direction);\n });\n // Update the URL without reloading\n const newUrl = `${window.location.pathname}?${params.toString()}`;\n window.history.pushState({ path: newUrl }, '', newUrl);\n }\n\n // Loads state from URL parameters if usePushState is enabled\n public loadFromURL(): void {\n // Skip if URL state persistence is disabled\n if (!this.#parent.usePushState) return;\n log(this.#parent.debug, LogLevel.INFO, 'Loading state from URL parameters...');\n // Parse URL query parameters\n const params = new URLSearchParams(window.location.search);\n if (params.toString() === '') {\n log(this.#parent.debug, LogLevel.INFO, 'No URL parameters to load.');\n return;\n }\n\n // Update state with URL parameters\n this.setState((draft) => {\n // Load page number with validation\n const pageParam = params.get('page');\n if (pageParam) {\n const page = parseInt(pageParam, 10);\n draft.currentPage = isNaN(page) ? 1 : Math.max(1, page);\n }\n\n // Load rows per page with validation\n const perPageParam = params.get('perPage');\n if (perPageParam) {\n const perPage = parseInt(perPageParam, 10);\n // Validate against allowed values\n const allowedValues = [\n RowsPerPage.DEFAULT,\n RowsPerPage.TWENTY,\n RowsPerPage.FIFTY,\n RowsPerPage.HUNDRED,\n RowsPerPage.TWO_HUNDRED_FIFTY,\n RowsPerPage.FIVE_HUNDRED,\n RowsPerPage.THOUSAND,\n ];\n draft.rowsPerPage =\n isNaN(perPage) || !allowedValues.includes(perPage)\n ? RowsPerPage.DEFAULT\n : (perPage as RowsPerPage);\n }\n\n // Load filters\n const newFilters: Record<string, string> = {};\n params.forEach((value, key) => {\n if (key.startsWith('filtering[')) {\n const filterKey = key.substring(10, key.length - 1);\n newFilters[filterKey] = value;\n }\n });\n (draft.filters as Record<string, string>) = newFilters;\n\n // Load sort conditions\n const newSorts: Array<SortCondition> = [];\n params.forEach((value, key) => {\n if (key.startsWith('sorting[')) {\n const column = key.substring(key.indexOf('[') + 1, key.indexOf(']'));\n if (\n Object.values(OrderDirection).includes(\n value.toUpperCase() as OrderDirection\n )\n ) {\n newSorts.push([column, value.toUpperCase() as OrderDirection]);\n }\n }\n });\n draft.sortConditions = newSorts;\n });\n }\n\n // Saves the current state to localStorage if persistState is enabled\n public saveStateToStorage(): void {\n // Skip if state persistence is disabled\n if (!this.#parent.persistState) return;\n\n // Debounce to prevent excessive writings\n if (this.#saveDebounceTimer) {\n clearTimeout(this.#saveDebounceTimer);\n }\n\n log(this.#parent.debug, LogLevel.INFO, 'Saving state to localStorage...');\n\n // Extract relevant state properties\n const {\n columns,\n columnWidths,\n sortConditions,\n filters,\n currentPage,\n rowsPerPage,\n headerCellClasses,\n } = this.#parent.state;\n // Create state object for storage\n const stateToSave: PersistedState = {\n columns: [...columns],\n columnWidths: Array.from(columnWidths.entries()),\n sortConditions: [...sortConditions],\n filters: { ...filters },\n currentPage,\n rowsPerPage,\n headerCellClasses: [...headerCellClasses],\n };\n\n this.#saveDebounceTimer = setTimeout(() => {\n try {\n // Save state to localStorage\n localStorage.setItem(this.#parent.storageKey, JSON.stringify(stateToSave));\n log(this.#parent.debug, LogLevel.INFO, 'State saved successfully.');\n } catch (error) {\n // Log error and continue\n log(\n this.#parent.debug,\n LogLevel.ERROR,\n 'Could not save state to localStorage.',\n error\n );\n }\n }, this.#DEBOUNCE_TIMEOUT_MS);\n }\n\n // Loads state from localStorage if persistState is enabled\n public loadStateFromStorage(): void {\n // Skip if state persistence is disabled\n if (!this.#parent.persistState) return;\n log(this.#parent.debug, LogLevel.INFO, 'Attempting to load state from localStorage...');\n try {\n // Retrieve saved state\n const savedStateJSON = localStorage.getItem(this.#parent.storageKey);\n if (!savedStateJSON) {\n log(this.#parent.debug, LogLevel.INFO, 'No saved state found in localStorage.');\n return;\n }\n // Parse saved state\n const savedState = JSON.parse(savedStateJSON) as Partial<PersistedState>;\n log(this.#parent.debug, LogLevel.INFO, 'Saved state found, applying...', savedState);\n\n // Apply saved state with type validation\n this.setState((draft) => {\n if (savedState.columns && Array.isArray(savedState.columns)) {\n // Apply saved column order\n this.#applyStoredColumnOrder(draft, savedState.columns);\n }\n\n // Validate and apply column widths\n if (savedState.columnWidths && Array.isArray(savedState.columnWidths)) {\n const validWidths = savedState.columnWidths.filter(\n (entry) =>\n Array.isArray(entry) &&\n entry.length === 2 &&\n typeof entry[0] === 'string' &&\n typeof entry[1] === 'number'\n );\n (draft.columnWidths as Map<string, number>) = new Map(validWidths);\n }\n\n // Validate and apply sort conditions\n if (savedState.sortConditions) {\n const validSorts = savedState.sortConditions.filter(\n (condition) =>\n Array.isArray(condition) &&\n condition.length === 2 &&\n typeof condition[0] === 'string' &&\n Object.values(OrderDirection).includes(condition[1])\n );\n draft.sortConditions = validSorts;\n }\n\n // Validate and apply filters\n if (savedState.filters && typeof savedState.filters === 'object') {\n const validFilters: Record<string, string> = {};\n for (const [key, value] of Object.entries(savedState.filters)) {\n if (typeof value === 'string') {\n validFilters[key] = value;\n }\n }\n draft.filters = validFilters;\n }\n\n // Validate and apply current page\n if (typeof savedState.currentPage === 'number') {\n draft.currentPage = Math.max(1, savedState.currentPage);\n }\n\n // Validate and apply rows per page\n if (typeof savedState.rowsPerPage === 'number') {\n const allowedValues = [\n RowsPerPage.DEFAULT,\n RowsPerPage.TWENTY,\n RowsPerPage.FIFTY,\n RowsPerPage.HUNDRED,\n RowsPerPage.TWO_HUNDRED_FIFTY,\n RowsPerPage.FIVE_HUNDRED,\n RowsPerPage.THOUSAND,\n ];\n if (allowedValues.includes(savedState.rowsPerPage)) {\n draft.rowsPerPage = savedState.rowsPerPage;\n }\n }\n });\n } catch (error) {\n // Log error and clear invalid state\n log(\n this.#parent.debug,\n LogLevel.ERROR,\n 'Could not load state from localStorage.',\n error\n );\n localStorage.removeItem(this.#parent.storageKey);\n }\n }\n\n // Applies stored column order to maintain consistency\n #applyStoredColumnOrder(state: Draft<SnapRecordsState<T>>, savedColumns: string[]): void {\n const originalColumnsConfig = [...state.columns];\n const originalTitlesConfig = [...state.columnTitles];\n const originalClassesConfig = [...state.headerCellClasses];\n\n // Filter valid saved columns\n const validSavedColumns = savedColumns.filter((col) => originalColumnsConfig.includes(col));\n // Include any new columns not in saved state\n const newConfiguredColumns = originalColumnsConfig.filter(\n (col) => !validSavedColumns.includes(col)\n );\n\n // Combine saved and new columns\n const newColumnsOrder = [...validSavedColumns, ...newConfiguredColumns];\n const newTitles: string[] = [];\n const newClasses: string[] = [];\n\n // Reorder titles and classes to match column order\n newColumnsOrder.forEach((colName: string) => {\n const originalIndex = originalColumnsConfig.indexOf(colName);\n if (originalIndex !== -1) {\n newTitles.push(originalTitlesConfig[originalIndex]);\n if (originalClassesConfig.length > originalIndex) {\n newClasses.push(originalClassesConfig[originalIndex]);\n }\n }\n });\n\n log(this.#parent.debug, LogLevel.LOG, 'Applying stored column order:', newColumnsOrder);\n state.columns = newColumnsOrder;\n state.columnTitles = newTitles;\n state.headerCellClasses = newClasses;\n }\n}\n\n/*========================================================================================================\n STATE MANAGER CLASS ENDS HERE\n==========================================================================================================*/\n","import {\n LogLevel,\n Identifiable,\n SortCondition,\n ISnapRenderer,\n OrderDirection,\n ISnapEventManager,\n EventManagerCallbacks,\n} from './SnapTypes.js';\nimport { log } from './utils.js';\nimport { config } from './SnapOptions.js';\nimport type { SnapRecords } from './SnapRecords.js';\nimport defaultTranslations from './lang/en_US.json';\n\n/*========================================================================================================\n\n EVENT MANAGER\n\n Class responsible for managing user interaction events such as clicks, key presses, and drag-and-drop\n\n @template T - The type of data record, extending Identifiable and a generic object.\n\n The `EventManager` class centralizes all event handling logic for the SnapRecords table UI, including:\n - Delegated click handling for sorting, pagination, and row selection.\n - Keyboard navigation and accessibility support.\n - Column resizing and drag-and-drop reordering.\n - State synchronization and UI updates in response to user actions.\n\n It interacts with the parent SnapRecords instance, the renderer, and callback hooks to ensure\n a responsive and accessible user experience.\n\n==========================================================================================================*/\n\nexport class EventManager<T extends Identifiable & Record<string, unknown>>\n implements ISnapEventManager\n{\n // Reference to the parent SnapRecords instance\n #parent: SnapRecords<T>;\n // Renderer instance for updating the UI\n #renderer: ISnapRenderer<T>;\n // Callbacks for handling column reordering and data loading\n #callbacks: EventManagerCallbacks;\n // ID of the column being resized, or null if none\n #resizingColumnId: string | null = null;\n // Starting X position for column resizing\n #startX: number = 0;\n // Starting width of the column being resized\n #startWidth: number = 0;\n\n // Constructor initializes the event manager with parent, renderer, and callbacks\n constructor(\n parent: SnapRecords<T>,\n renderer: ISnapRenderer<T>,\n callbacks: EventManagerCallbacks\n ) {\n this.#parent = parent;\n this.#renderer = renderer;\n this.#callbacks = callbacks;\n }\n\n // Sets up all event handlers for user interactions\n public setupAllHandlers(): void {\n this.#setupDelegatedClickHandler();\n this.#setupColumnResizing();\n this.#setupColumnDragging();\n this.#setupKeyboardNavigation();\n }\n\n // Removes all event listeners and cleans up\n public destroy(): void {\n log(\n this.#parent.debug,\n LogLevel.INFO,\n 'Destroying EventManager and removing all listeners.'\n );\n // Remove click handler\n this.#parent.container.removeEventListener('click', this.#handleDelegatedClick);\n // Remove keyboard handler\n this.#parent.container.removeEventListener('keydown', this.#handleKeyDown);\n // Remove resize handlers\n this.#parent.container.removeEventListener('mousedown', this.#startResize as EventListener);\n // Remove drag-and-drop handlers\n this.#parent.container.removeEventListener('dragstart', this.#handleDragStart);\n this.#parent.container.removeEventListener('dragover', this.#handleDragOver);\n this.#parent.container.removeEventListener('drop', this.#handleDrop);\n this.#parent.container.removeEventListener('dragend', this.#handleDragEnd);\n // Remove document-level resize handlers\n document.removeEventListener('mouseup', this.#stopResize);\n document.removeEventListener('mousemove', this.#handleResize);\n }\n\n // Sets up a delegated click handler for the container\n #setupDelegatedClickHandler(): void {\n // Remove existing click handler to prevent duplicates\n this.#parent.container.removeEventListener('click', this.#handleDelegatedClick);\n // Add new click handler\n this.#parent.container.addEventListener('click', this.#handleDelegatedClick);\n }\n\n // Handles sort requests when a column header is clicked\n #handleSortClick = (col: string): void => {\n log(this.#parent.debug, LogLevel.INFO, `Sort requested for column: ${col}`);\n this.#parent.stateManager.setState((draft) => {\n const sortConditions = draft.sortConditions as SortCondition[];\n const sortIndex = sortConditions.findIndex((item: SortCondition) => item[0] === col);\n\n // Toggle sort order: none -> ASC -> DESC -> none\n if (sortIndex === -1) {\n sortConditions.push([col, OrderDirection.ASC]);\n } else if (sortConditions[sortIndex][1] === OrderDirection.ASC) {\n sortConditions[sortIndex][1] = OrderDirection.DESC;\n } else {\n sortConditions.splice(sortIndex, 1);\n }\n });\n // Trigger data reload with new sort conditions\n this.#callbacks.requestDataLoad();\n };\n\n // Toggles row selection for the given index\n #toggleRowSelection(index: number): void {\n const isSelected = this.#parent.selectedRows.has(index);\n log(\n this.#parent.debug,\n LogLevel.INFO,\n `Toggling row selection for index ${index}. New state: ${!isSelected}`\n );\n // Toggle selection state\n if (isSelected) {\n this.#parent.selectedRows.delete(index);\n } else {\n this.#parent.selectedRows.add(index);\n }\n // Call selection changed hook if defined\n if (this.#parent.lifecycleHooks.selectionChanged) {\n this.#parent.lifecycleHooks.selectionChanged(this.#parent.getSelectedRows());\n }\n // Update UI to reflect selection\n this.#renderer.highlightSelectedRows();\n // Announce selection change for accessibility\n const translations = this.#parent.state.translations ?? defaultTranslations;\n const message = this.#parent.selectedRows.has(index)\n ? translations.rowSelected\n : translations.rowDeselected;\n this.#renderer.announceScreenReaderUpdate(message);\n }\n\n // Sets up event listeners for column resizing\n #setupColumnResizing(): void {\n this.#parent.container.addEventListener('mousedown', (e: MouseEvent) => {\n const target = e.target as HTMLElement;\n // Check if the target is a resize handle\n if (target.classList.contains(config.classes.columnResizeHandle)) {\n const header = target.closest('th');\n if (header?.dataset.colId) {\n this.#startResize(e, header.dataset.colId);\n }\n }\n });\n }\n\n // Handles drag-over events for column dragging\n #handleDragOver = (event: DragEvent): void => {\n event.preventDefault();\n const target = (event.target as HTMLElement).closest('th');\n if (target?.dataset.colId) {\n // Clear drag-over class from all headers\n this.#renderer.tableHeader?.querySelectorAll('th').forEach((th) => {\n th.classList.remove(config.classes.dragOver);\n });\n // Add drag-over class to target\n target.classList.add(config.classes.dragOver);\n }\n };\n\n // Sets up event listeners for column dragging if enabled\n #setupColumnDragging(): void {\n if (!this.#parent.draggableColumns) return;\n this.#parent.container.addEventListener('dragstart', this.#handleDragStart);\n this.#parent.container.addEventListener('dragover', this.#handleDragOver);\n this.#parent.container.addEventListener('drop', this.#handleDrop);\n this.#parent.container.addEventListener('dragend', this.#handleDragEnd);\n }\n\n // Sets up keyboard navigation event listeners\n #setupKeyboardNavigation(): void {\n // Remove existing keydown handler to prevent duplicates\n this.#parent.container.removeEventListener('keydown', this.#handleKeyDown);\n // Add new keydown handler\n this.#parent.container.addEventListener('keydown', this.#handleKeyDown);\n // Make container focusable\n this.#parent.container.setAttribute('tabindex', '0');\n }\n\n // Starts column resizing\n #startResize = (event: MouseEvent, columnId: string): void => {\n event.preventDefault();\n this.#resizingColumnId = columnId;\n const header = this.#renderer.tableHeader!.querySelector<HTMLElement>(\n `th[data-col-id=\"${columnId}\"]`\n );\n if (!header) return;\n // Store initial position and width\n this.#startX = event.clientX;\n this.#startWidth = header.offsetWidth;\n log(this.#parent.debug, LogLevel.INFO, `Starting column resize for: ${columnId}`);\n // Add document-level handlers for resizing\n document.addEventListener('mousemove', this.#handleResize);\n document.addEventListener('mouseup', this.#stopResize);\n };\n\n // Handles keyboard navigation events\n #handleKeyDown = (event: KeyboardEvent): void => {\n // Define page navigation actions\n const pageActions: { [key: string]: () => void } = {\n PageUp: () => {\n if (this.#parent.state.currentPage > 1)\n this.#parent.gotoPage(this.#parent.state.currentPage - 1);\n },\n PageDown: () => {\n const totalPages = Math.ceil(\n this.#parent.state.totalRecords / this.#parent.state.rowsPerPage\n );\n if (this.#parent.state.currentPage < totalPages)\n this.#parent.gotoPage(this.#parent.state.currentPage + 1);\n },\n };\n const pageAction = pageActions[event.key];\n if (pageAction) {\n log(\n this.#parent.debug,\n LogLevel.INFO,\n `Keyboard navigation action detected: ${event.key}`\n );\n event.preventDefault();\n pageAction();\n return;\n }\n if (!this.#parent.selectable) return;\n // Define row selection and navigation actions\n const selectionActions: { [key: string]: () => void } = {\n ArrowDown: () => this.#renderer.navigateToNextRow(),\n ArrowUp: () => this.#renderer.navigateToPrevRow(),\n Home: () => this.#parent.reset(),\n End: () => {\n this.#parent.currentRowIndex = this.#parent.state.data.length - 1;\n this.#renderer.highlightCurrentRow();\n },\n Enter: () => {\n if (this.#parent.currentRowIndex >= 0)\n this.#toggleRowSelection(this.#parent.currentRowIndex);\n },\n ' ': () => {\n if (this.#parent.currentRowIndex >= 0)\n this.#toggleRowSelection(this.#parent.currentRowIndex);\n },\n };\n const selectionAction = selectionActions[event.key];\n if (selectionAction) {\n log(\n this.#parent.debug,\n LogLevel.INFO,\n `Keyboard selection action detected: ${event.key}`\n );\n event.preventDefault();\n selectionAction();\n }\n };\n\n // Handles column resizing during mouse movement\n #handleResize = (event: MouseEvent): void => {\n if (this.#resizingColumnId === null) return;\n // Calculate new width based on mouse movement\n const width = this.#startWidth + (event.clientX - this.#startX);\n log(\n this.#parent.debug,\n LogLevel.LOG,\n `Column resizing: ${this.#resizingColumnId} to ${width}px.`\n );\n this.#parent.stateManager.setState((draft) => {\n (draft.columnWidths as Map<string, number>).set(this.#resizingColumnId!, width);\n });\n // Apply updated widths\n this.#renderer.applyColumnWidths();\n };\n\n // Stops column resizing\n #stopResize = (): void => {\n if (this.#resizingColumnId === null) return;\n log(\n this.#parent.debug,\n LogLevel.INFO,\n `Finished column resize for: ${this.#resizingColumnId}`\n );\n this.#resizingColumnId = null;\n // Remove document-level resize handlers\n document.removeEventListener('mousemove', this.#handleResize);\n document.removeEventListener('mouseup', this.#stopResize);\n // Save updated state\n this.#parent.stateManager.saveStateToStorage();\n };\n\n // Handles the start of a column drag\n #handleDragStart = (event: DragEvent): void => {\n const target = (event.target as HTMLElement).closest('th');\n if (!target?.dataset.colId || !target.draggable) {\n event.preventDefault();\n return;\n }\n log(this.#parent.debug, LogLevel.INFO, `Drag started for column: ${target.dataset.colId}`);\n if (event.dataTransfer) {\n // Set drag data\n event.dataTransfer.setData('text/plain', target.dataset.colId);\n event.dataTransfer.effectAllowed = 'move';\n }\n // Add dragging class\n target.classList.add(config.classes.dragging);\n };\n\n // Handles the end of a column drag\n #handleDragEnd = (event: DragEvent): void => {\n const target = (event.target as HTMLElement).closest('th');\n log(this.#parent.debug, LogLevel.INFO, `Drag ended for column: ${target?.dataset.colId}`);\n // Remove dragging and drag-over classes\n this.#renderer.tableHeader?.querySelectorAll('th').forEach((th) => {\n th.classList.remove(config.classes.dragging);\n th.classList.remove(config.classes.dragOver);\n });\n };\n\n // Handles delegated click events\n #handleDelegatedClick = (event: MouseEvent): void => {\n const target = event.target as HTMLElement;\n\n // Handle sort link clicks\n const sortLink = target.closest<HTMLAnchorElement>('th a[role=\"button\"]');\n if (sortLink) {\n event.preventDefault();\n const th = sortLink.closest('th');\n if (th?.dataset.colId) {\n this.#handleSortClick(th.dataset.colId);\n }\n return;\n }\n\n // Handle pagination button clicks\n const pageButton = target.closest<HTMLButtonElement>('.snap-pagination-container button');\n if (pageButton) {\n event.preventDefault();\n if (pageButton.disabled) return;\n\n const pageNumText = pageButton.textContent?.trim();\n const pageNum = pageNumText ? parseInt(pageNumText, 10) : NaN;\n\n log(this.#parent.debug, LogLevel.INFO, 'Pagination button clicked.', {\n text: pageNumText,\n });\n\n if (pageButton.classList.contains(config.pagination.prevButton.classNames.base)) {\n this.#parent.gotoPage(this.#parent.state.currentPage - 1);\n } else if (\n pageButton.classList.contains(config.pagination.nextButton.classNames.base)\n ) {\n this.#parent.gotoPage(this.#parent.state.currentPage + 1);\n } else if (!isNaN(pageNum)) {\n this.#parent.gotoPage(pageNum);\n }\n return;\n }\n\n // Handle row selection clicks\n const selectableRow = target.closest<HTMLElement>('[data-index]');\n if (this.#parent.selectable && selectableRow?.dataset.index) {\n const index = parseInt(selectableRow.dataset.index, 10);\n if (!isNaN(index)) {\n this.#toggleRowSelection(index);\n selectableRow.focus();\n }\n return;\n }\n };\n\n // Handles column drop events\n #handleDrop = (event: DragEvent): void => {\n event.preventDefault();\n const target = (event.target as HTMLElement).closest('th');\n const sourceColId = event.dataTransfer?.getData('text/plain');\n const targetColId = target?.dataset.colId;\n if (sourceColId && targetColId && sourceColId !== targetColId) {\n log(\n this.#parent.debug,\n LogLevel.INFO,\n `Column drop: \"${sourceColId}\" onto \"${targetColId}\"`\n );\n // Reorder columns\n this.#callbacks.reorderColumns(sourceColId, targetColId);\n }\n // Remove drag-over class\n target?.classList.remove(config.classes.dragOver);\n };\n}\n\n/*========================================================================================================\n EVENT MANAGER OBJECT ENDS HERE\n==========================================================================================================*/\n","(function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).Dexie=t()})(this,function(){\"use strict\";var s=function(e,t){return(s=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)};var _=function(){return(_=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)};function i(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||((r=r||Array.prototype.slice.call(t,0,i))[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))}var f=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:global,x=Object.keys,k=Array.isArray;function a(t,n){return\"object\"!=typeof n||x(n).forEach(function(e){t[e]=n[e]}),t}\"undefined\"==typeof Promise||f.Promise||(f.Promise=Promise);var c=Object.getPrototypeOf,n={}.hasOwnProperty;function m(e,t){return n.call(e,t)}function r(t,n){\"function\"==typeof n&&(n=n(c(t))),(\"undefined\"==typeof Reflect?x:Reflect.ownKeys)(n).forEach(function(e){l(t,e,n[e])})}var u=Object.defineProperty;function l(e,t,n,r){u(e,t,a(n&&m(n,\"get\")&&\"function\"==typeof n.get?{get:n.get,set:n.set,configurable:!0}:{value:n,configurable:!0,writable:!0},r))}function o(t){return{from:function(e){return t.prototype=Object.create(e.prototype),l(t.prototype,\"constructor\",t),{extend:r.bind(null,t.prototype)}}}}var h=Object.getOwnPropertyDescriptor;var d=[].slice;function b(e,t,n){return d.call(e,t,n)}function p(e,t){return t(e)}function y(e){if(!e)throw new Error(\"Assertion Failed\")}function v(e){f.setImmediate?setImmediate(e):setTimeout(e,0)}function O(e,t){if(\"string\"==typeof t&&m(e,t))return e[t];if(!t)return e;if(\"string\"!=typeof t){for(var n=[],r=0,i=t.length;r<i;++r){var o=O(e,t[r]);n.push(o)}return n}var a=t.indexOf(\".\");if(-1!==a){var u=e[t.substr(0,a)];return null==u?void 0:O(u,t.substr(a+1))}}function P(e,t,n){if(e&&void 0!==t&&!(\"isFrozen\"in Object&&Object.isFrozen(e)))if(\"string\"!=typeof t&&\"length\"in t){y(\"string\"!=typeof n&&\"length\"in n);for(var r=0,i=t.length;r<i;++r)P(e,t[r],n[r])}else{var o,a,u=t.indexOf(\".\");-1!==u?(o=t.substr(0,u),\"\"===(a=t.substr(u+1))?void 0===n?k(e)&&!isNaN(parseInt(o))?e.splice(o,1):delete e[o]:e[o]=n:P(u=!(u=e[o])||!m(e,o)?e[o]={}:u,a,n)):void 0===n?k(e)&&!isNaN(parseInt(t))?e.splice(t,1):delete e[t]:e[t]=n}}function g(e){var t,n={};for(t in e)m(e,t)&&(n[t]=e[t]);return n}var t=[].concat;function w(e){return t.apply([],e)}var e=\"BigUint64Array,BigInt64Array,Array,Boolean,String,Date,RegExp,Blob,File,FileList,FileSystemFileHandle,FileSystemDirectoryHandle,ArrayBuffer,DataView,Uint8ClampedArray,ImageBitmap,ImageData,Map,Set,CryptoKey\".split(\",\").concat(w([8,16,32,64].map(function(t){return[\"Int\",\"Uint\",\"Float\"].map(function(e){return e+t+\"Array\"})}))).filter(function(e){return f[e]}),K=new Set(e.map(function(e){return f[e]}));var E=null;function S(e){E=new WeakMap;e=function e(t){if(!t||\"object\"!=typeof t)return t;var n=E.get(t);if(n)return n;if(k(t)){n=[],E.set(t,n);for(var r=0,i=t.length;r<i;++r)n.push(e(t[r]))}else if(K.has(t.constructor))n=t;else{var o,a=c(t);for(o in n=a===Object.prototype?{}:Object.create(a),E.set(t,n),t)m(t,o)&&(n[o]=e(t[o]))}return n}(e);return E=null,e}var j={}.toString;function A(e){return j.call(e).slice(8,-1)}var C=\"undefined\"!=typeof Symbol?Symbol.iterator:\"@@iterator\",T=\"symbol\"==typeof C?function(e){var t;return null!=e&&(t=e[C])&&t.apply(e)}:function(){return null};function q(e,t){t=e.indexOf(t);return 0<=t&&e.splice(t,1),0<=t}var D={};function I(e){var t,n,r,i;if(1===arguments.length){if(k(e))return e.slice();if(this===D&&\"string\"==typeof e)return[e];if(i=T(e)){for(n=[];!(r=i.next()).done;)n.push(r.value);return n}if(null==e)return[e];if(\"number\"!=typeof(t=e.length))return[e];for(n=new Array(t);t--;)n[t]=e[t];return n}for(t=arguments.length,n=new Array(t);t--;)n[t]=arguments[t];return n}var B=\"undefined\"!=typeof Symbol?function(e){return\"AsyncFunction\"===e[Symbol.toStringTag]}:function(){return!1},R=[\"Unknown\",\"Constraint\",\"Data\",\"TransactionInactive\",\"ReadOnly\",\"Version\",\"NotFound\",\"InvalidState\",\"InvalidAccess\",\"Abort\",\"Timeout\",\"QuotaExceeded\",\"Syntax\",\"DataClone\"],F=[\"Modify\",\"Bulk\",\"OpenFailed\",\"VersionChange\",\"Schema\",\"Upgrade\",\"InvalidTable\",\"MissingAPI\",\"NoSuchDatabase\",\"InvalidArgument\",\"SubTransaction\",\"Unsupported\",\"Internal\",\"DatabaseClosed\",\"PrematureCommit\",\"ForeignAwait\"].concat(R),M={VersionChanged:\"Database version changed by other database connection\",DatabaseClosed:\"Database has been closed\",Abort:\"Transaction aborted\",TransactionInactive:\"Transaction has already completed or failed\",MissingAPI:\"IndexedDB API missing. Please visit https://tinyurl.com/y2uuvskb\"};function N(e,t){this.name=e,this.message=t}function L(e,t){return e+\". Errors: \"+Object.keys(t).map(function(e){return t[e].toString()}).filter(function(e,t,n){return n.indexOf(e)===t}).join(\"\\n\")}function U(e,t,n,r){this.failures=t,this.failedKeys=r,this.successCount=n,this.message=L(e,t)}function V(e,t){this.name=\"BulkError\",this.failures=Object.keys(t).map(function(e){return t[e]}),this.failuresByPos=t,this.message=L(e,this.failures)}o(N).from(Error).extend({toString:function(){return this.name+\": \"+this.message}}),o(U).from(N),o(V).from(N);var z=F.reduce(function(e,t){return e[t]=t+\"Error\",e},{}),W=N,Y=F.reduce(function(e,n){var r=n+\"Error\";function t(e,t){this.name=r,e?\"string\"==typeof e?(this.message=\"\".concat(e).concat(t?\"\\n \"+t:\"\"),this.inner=t||null):\"object\"==typeof e&&(this.message=\"\".concat(e.name,\" \").concat(e.message),this.inner=e):(this.message=M[n]||r,this.inner=null)}return o(t).from(W),e[n]=t,e},{});Y.Syntax=SyntaxError,Y.Type=TypeError,Y.Range=RangeError;var $=R.reduce(function(e,t){return e[t+\"Error\"]=Y[t],e},{});var Q=F.reduce(function(e,t){return-1===[\"Syntax\",\"Type\",\"Range\"].indexOf(t)&&(e[t+\"Error\"]=Y[t]),e},{});function G(){}function X(e){return e}function H(t,n){return null==t||t===X?n:function(e){return n(t(e))}}function J(e,t){return function(){e.apply(this,arguments),t.apply(this,arguments)}}function Z(i,o){return i===G?o:function(){var e=i.apply(this,arguments);void 0!==e&&(arguments[0]=e);var t=this.onsuccess,n=this.onerror;this.onsuccess=null,this.onerror=null;var r=o.apply(this,arguments);return t&&(this.onsuccess=this.onsuccess?J(t,this.onsuccess):t),n&&(this.onerror=this.onerror?J(n,this.onerror):n),void 0!==r?r:e}}function ee(n,r){return n===G?r:function(){n.apply(this,arguments);var e=this.onsuccess,t=this.onerror;this.onsuccess=this.onerror=null,r.apply(this,arguments),e&&(this.onsuccess=this.onsuccess?J(e,this.onsuccess):e),t&&(this.onerror=this.onerror?J(t,this.onerror):t)}}function te(i,o){return i===G?o:function(e){var t=i.apply(this,arguments);a(e,t);var n=this.onsuccess,r=this.onerror;this.onsuccess=null,this.onerror=null;e=o.apply(this,arguments);return n&&(this.onsuccess=this.onsuccess?J(n,this.onsuccess):n),r&&(this.onerror=this.onerror?J(r,this.onerror):r),void 0===t?void 0===e?void 0:e:a(t,e)}}function ne(e,t){return e===G?t:function(){return!1!==t.apply(this,arguments)&&e.apply(this,arguments)}}function re(i,o){return i===G?o:function(){var e=i.apply(this,arguments);if(e&&\"function\"==typeof e.then){for(var t=this,n=arguments.length,r=new Array(n);n--;)r[n]=arguments[n];return e.then(function(){return o.apply(t,r)})}return o.apply(this,arguments)}}Q.ModifyError=U,Q.DexieError=N,Q.BulkError=V;var ie=\"undefined\"!=typeof location&&/^(http|https):\\/\\/(localhost|127\\.0\\.0\\.1)/.test(location.href);function oe(e){ie=e}var ae={},ue=100,e=\"undefined\"==typeof Promise?[]:function(){var e=Promise.resolve();if(\"undefined\"==typeof crypto||!crypto.subtle)return[e,c(e),e];var t=crypto.subtle.digest(\"SHA-512\",new Uint8Array([0]));return[t,c(t),e]}(),R=e[0],F=e[1],e=e[2],F=F&&F.then,se=R&&R.constructor,ce=!!e;var le=function(e,t){be.push([e,t]),he&&(queueMicrotask(Se),he=!1)},fe=!0,he=!0,de=[],pe=[],ye=X,ve={id:\"global\",global:!0,ref:0,unhandleds:[],onunhandled:G,pgp:!1,env:{},finalize:G},me=ve,be=[],ge=0,we=[];function _e(e){if(\"object\"!=typeof this)throw new TypeError(\"Promises must be constructed via new\");this._listeners=[],this._lib=!1;var t=this._PSD=me;if(\"function\"!=typeof e){if(e!==ae)throw new TypeError(\"Not a function\");return this._state=arguments[1],this._value=arguments[2],void(!1===this._state&&Oe(this,this._value))}this._state=null,this._value=null,++t.ref,function t(r,e){try{e(function(n){if(null===r._state){if(n===r)throw new TypeError(\"A promise cannot be resolved with itself.\");var e=r._lib&&je();n&&\"function\"==typeof n.then?t(r,function(e,t){n instanceof _e?n._then(e,t):n.then(e,t)}):(r._state=!0,r._value=n,Pe(r)),e&&Ae()}},Oe.bind(null,r))}catch(e){Oe(r,e)}}(this,e)}var xe={get:function(){var u=me,t=Fe;function e(n,r){var i=this,o=!u.global&&(u!==me||t!==Fe),a=o&&!Ue(),e=new _e(function(e,t){Ke(i,new ke(Qe(n,u,o,a),Qe(r,u,o,a),e,t,u))});return this._consoleTask&&(e._consoleTask=this._consoleTask),e}return e.prototype=ae,e},set:function(e){l(this,\"then\",e&&e.prototype===ae?xe:{get:function(){return e},set:xe.set})}};function ke(e,t,n,r,i){this.onFulfilled=\"function\"==typeof e?e:null,this.onRejected=\"function\"==typeof t?t:null,this.resolve=n,this.reject=r,this.psd=i}function Oe(e,t){var n,r;pe.push(t),null===e._state&&(n=e._lib&&je(),t=ye(t),e._state=!1,e._value=t,r=e,de.some(function(e){return e._value===r._value})||de.push(r),Pe(e),n&&Ae())}function Pe(e){var t=e._listeners;e._listeners=[];for(var n=0,r=t.length;n<r;++n)Ke(e,t[n]);var i=e._PSD;--i.ref||i.finalize(),0===ge&&(++ge,le(function(){0==--ge&&Ce()},[]))}function Ke(e,t){if(null!==e._state){var n=e._state?t.onFulfilled:t.onRejected;if(null===n)return(e._state?t.resolve:t.reject)(e._value);++t.psd.ref,++ge,le(Ee,[n,e,t])}else e._listeners.push(t)}function Ee(e,t,n){try{var r,i=t._value;!t._state&&pe.length&&(pe=[]),r=ie&&t._consoleTask?t._consoleTask.run(function(){return e(i)}):e(i),t._state||-1!==pe.indexOf(i)||function(e){var t=de.length;for(;t;)if(de[--t]._value===e._value)return de.splice(t,1)}(t),n.resolve(r)}catch(e){n.reject(e)}finally{0==--ge&&Ce(),--n.psd.ref||n.psd.finalize()}}function Se(){$e(ve,function(){je()&&Ae()})}function je(){var e=fe;return he=fe=!1,e}function Ae(){var e,t,n;do{for(;0<be.length;)for(e=be,be=[],n=e.length,t=0;t<n;++t){var r=e[t];r[0].apply(null,r[1])}}while(0<be.length);he=fe=!0}function Ce(){var e=de;de=[],e.forEach(function(e){e._PSD.onunhandled.call(null,e._value,e)});for(var t=we.slice(0),n=t.length;n;)t[--n]()}function Te(e){return new _e(ae,!1,e)}function qe(n,r){var i=me;return function(){var e=je(),t=me;try{return We(i,!0),n.apply(this,arguments)}catch(e){r&&r(e)}finally{We(t,!1),e&&Ae()}}}r(_e.prototype,{then:xe,_then:function(e,t){Ke(this,new ke(null,null,e,t,me))},catch:function(e){if(1===arguments.length)return this.then(null,e);var t=e,n=arguments[1];return\"function\"==typeof t?this.then(null,function(e){return(e instanceof t?n:Te)(e)}):this.then(null,function(e){return(e&&e.name===t?n:Te)(e)})},finally:function(t){return this.then(function(e){return _e.resolve(t()).then(function(){return e})},function(e){return _e.resolve(t()).then(function(){return Te(e)})})},timeout:function(r,i){var o=this;return r<1/0?new _e(function(e,t){var n=setTimeout(function(){return t(new Y.Timeout(i))},r);o.then(e,t).finally(clearTimeout.bind(null,n))}):this}}),\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&l(_e.prototype,Symbol.toStringTag,\"Dexie.Promise\"),ve.env=Ye(),r(_e,{all:function(){var o=I.apply(null,arguments).map(Ve);return new _e(function(n,r){0===o.length&&n([]);var i=o.length;o.forEach(function(e,t){return _e.resolve(e).then(function(e){o[t]=e,--i||n(o)},r)})})},resolve:function(n){return n instanceof _e?n:n&&\"function\"==typeof n.then?new _e(function(e,t){n.then(e,t)}):new _e(ae,!0,n)},reject:Te,race:function(){var e=I.apply(null,arguments).map(Ve);return new _e(function(t,n){e.map(function(e){return _e.resolve(e).then(t,n)})})},PSD:{get:function(){return me},set:function(e){return me=e}},totalEchoes:{get:function(){return Fe}},newPSD:Ne,usePSD:$e,scheduler:{get:function(){return le},set:function(e){le=e}},rejectionMapper:{get:function(){return ye},set:function(e){ye=e}},follow:function(i,n){return new _e(function(e,t){return Ne(function(n,r){var e=me;e.unhandleds=[],e.onunhandled=r,e.finalize=J(function(){var t,e=this;t=function(){0===e.unhandleds.length?n():r(e.unhandleds[0])},we.push(function e(){t(),we.splice(we.indexOf(e),1)}),++ge,le(function(){0==--ge&&Ce()},[])},e.finalize),i()},n,e,t)})}}),se&&(se.allSettled&&l(_e,\"allSettled\",function(){var e=I.apply(null,arguments).map(Ve);return new _e(function(n){0===e.length&&n([]);var r=e.length,i=new Array(r);e.forEach(function(e,t){return _e.resolve(e).then(function(e){return i[t]={status:\"fulfilled\",value:e}},function(e){return i[t]={status:\"rejected\",reason:e}}).then(function(){return--r||n(i)})})})}),se.any&&\"undefined\"!=typeof AggregateError&&l(_e,\"any\",function(){var e=I.apply(null,arguments).map(Ve);return new _e(function(n,r){0===e.length&&r(new AggregateError([]));var i=e.length,o=new Array(i);e.forEach(function(e,t){return _e.resolve(e).then(function(e){return n(e)},function(e){o[t]=e,--i||r(new AggregateError(o))})})})}),se.withResolvers&&(_e.withResolvers=se.withResolvers));var De={awaits:0,echoes:0,id:0},Ie=0,Be=[],Re=0,Fe=0,Me=0;function Ne(e,t,n,r){var i=me,o=Object.create(i);o.parent=i,o.ref=0,o.global=!1,o.id=++Me,ve.env,o.env=ce?{Promise:_e,PromiseProp:{value:_e,configurable:!0,writable:!0},all:_e.all,race:_e.race,allSettled:_e.allSettled,any:_e.any,resolve:_e.resolve,reject:_e.reject}:{},t&&a(o,t),++i.ref,o.finalize=function(){--this.parent.ref||this.parent.finalize()};r=$e(o,e,n,r);return 0===o.ref&&o.finalize(),r}function Le(){return De.id||(De.id=++Ie),++De.awaits,De.echoes+=ue,De.id}function Ue(){return!!De.awaits&&(0==--De.awaits&&(De.id=0),De.echoes=De.awaits*ue,!0)}function Ve(e){return De.echoes&&e&&e.constructor===se?(Le(),e.then(function(e){return Ue(),e},function(e){return Ue(),Xe(e)})):e}function ze(){var e=Be[Be.length-1];Be.pop(),We(e,!1)}function We(e,t){var n,r=me;(t?!De.echoes||Re++&&e===me:!Re||--Re&&e===me)||queueMicrotask(t?function(e){++Fe,De.echoes&&0!=--De.echoes||(De.echoes=De.awaits=De.id=0),Be.push(me),We(e,!0)}.bind(null,e):ze),e!==me&&(me=e,r===ve&&(ve.env=Ye()),ce&&(n=ve.env.Promise,t=e.env,(r.global||e.global)&&(Object.defineProperty(f,\"Promise\",t.PromiseProp),n.all=t.all,n.race=t.race,n.resolve=t.resolve,n.reject=t.reject,t.allSettled&&(n.allSettled=t.allSettled),t.any&&(n.any=t.any))))}function Ye(){var e=f.Promise;return ce?{Promise:e,PromiseProp:Object.getOwnPropertyDescriptor(f,\"Promise\"),all:e.all,race:e.race,allSettled:e.allSettled,any:e.any,resolve:e.resolve,reject:e.reject}:{}}function $e(e,t,n,r,i){var o=me;try{return We(e,!0),t(n,r,i)}finally{We(o,!1)}}function Qe(t,n,r,i){return\"function\"!=typeof t?t:function(){var e=me;r&&Le(),We(n,!0);try{return t.apply(this,arguments)}finally{We(e,!1),i&&queueMicrotask(Ue)}}}function Ge(e){Promise===se&&0===De.echoes?0===Re?e():enqueueNativeMicroTask(e):setTimeout(e,0)}-1===(\"\"+F).indexOf(\"[native code]\")&&(Le=Ue=G);var Xe=_e.reject;var He=String.fromCharCode(65535),Je=\"Invalid key provided. Keys must be of type string, number, Date or Array<string | number | Date>.\",Ze=\"String expected.\",et=[],tt=\"__dbnames\",nt=\"readonly\",rt=\"readwrite\";function it(e,t){return e?t?function(){return e.apply(this,arguments)&&t.apply(this,arguments)}:e:t}var ot={type:3,lower:-1/0,lowerOpen:!1,upper:[[]],upperOpen:!1};function at(t){return\"string\"!=typeof t||/\\./.test(t)?function(e){return e}:function(e){return void 0===e[t]&&t in e&&delete(e=S(e))[t],e}}function ut(){throw Y.Type()}function st(e,t){try{var n=ct(e),r=ct(t);if(n!==r)return\"Array\"===n?1:\"Array\"===r?-1:\"binary\"===n?1:\"binary\"===r?-1:\"string\"===n?1:\"string\"===r?-1:\"Date\"===n?1:\"Date\"!==r?NaN:-1;switch(n){case\"number\":case\"Date\":case\"string\":return t<e?1:e<t?-1:0;case\"binary\":return function(e,t){for(var n=e.length,r=t.length,i=n<r?n:r,o=0;o<i;++o)if(e[o]!==t[o])return e[o]<t[o]?-1:1;return n===r?0:n<r?-1:1}(lt(e),lt(t));case\"Array\":return function(e,t){for(var n=e.length,r=t.length,i=n<r?n:r,o=0;o<i;++o){var a=st(e[o],t[o]);if(0!==a)return a}return n===r?0:n<r?-1:1}(e,t)}}catch(e){}return NaN}function ct(e){var t=typeof e;if(\"object\"!=t)return t;if(ArrayBuffer.isView(e))return\"binary\";e=A(e);return\"ArrayBuffer\"===e?\"binary\":e}function lt(e){return e instanceof Uint8Array?e:ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e)}var ft=(ht.prototype._trans=function(e,r,t){var n=this._tx||me.trans,i=this.name,o=ie&&\"undefined\"!=typeof console&&console.createTask&&console.createTask(\"Dexie: \".concat(\"readonly\"===e?\"read\":\"write\",\" \").concat(this.name));function a(e,t,n){if(!n.schema[i])throw new Y.NotFound(\"Table \"+i+\" not part of transaction\");return r(n.idbtrans,n)}var u=je();try{var s=n&&n.db._novip===this.db._novip?n===me.trans?n._promise(e,a,t):Ne(function(){return n._promise(e,a,t)},{trans:n,transless:me.transless||me}):function t(n,r,i,o){if(n.idbdb&&(n._state.openComplete||me.letThrough||n._vip)){var a=n._createTransaction(r,i,n._dbSchema);try{a.create(),n._state.PR1398_maxLoop=3}catch(e){return e.name===z.InvalidState&&n.isOpen()&&0<--n._state.PR1398_maxLoop?(console.warn(\"Dexie: Need to reopen db\"),n.close({disableAutoOpen:!1}),n.open().then(function(){return t(n,r,i,o)})):Xe(e)}return a._promise(r,function(e,t){return Ne(function(){return me.trans=a,o(e,t,a)})}).then(function(e){if(\"readwrite\"===r)try{a.idbtrans.commit()}catch(e){}return\"readonly\"===r?e:a._completion.then(function(){return e})})}if(n._state.openComplete)return Xe(new Y.DatabaseClosed(n._state.dbOpenError));if(!n._state.isBeingOpened){if(!n._state.autoOpen)return Xe(new Y.DatabaseClosed);n.open().catch(G)}return n._state.dbReadyPromise.then(function(){return t(n,r,i,o)})}(this.db,e,[this.name],a);return o&&(s._consoleTask=o,s=s.catch(function(e){return console.trace(e),Xe(e)})),s}finally{u&&Ae()}},ht.prototype.get=function(t,e){var n=this;return t&&t.constructor===Object?this.where(t).first(e):null==t?Xe(new Y.Type(\"Invalid argument to Table.get()\")):this._trans(\"readonly\",function(e){return n.core.get({trans:e,key:t}).then(function(e){return n.hook.reading.fire(e)})}).then(e)},ht.prototype.where=function(o){if(\"string\"==typeof o)return new this.db.WhereClause(this,o);if(k(o))return new this.db.WhereClause(this,\"[\".concat(o.join(\"+\"),\"]\"));var n=x(o);if(1===n.length)return this.where(n[0]).equals(o[n[0]]);var e=this.schema.indexes.concat(this.schema.primKey).filter(function(t){if(t.compound&&n.every(function(e){return 0<=t.keyPath.indexOf(e)})){for(var e=0;e<n.length;++e)if(-1===n.indexOf(t.keyPath[e]))return!1;return!0}return!1}).sort(function(e,t){return e.keyPath.length-t.keyPath.length})[0];if(e&&this.db._maxKey!==He){var t=e.keyPath.slice(0,n.length);return this.where(t).equals(t.map(function(e){return o[e]}))}!e&&ie&&console.warn(\"The query \".concat(JSON.stringify(o),\" on \").concat(this.name,\" would benefit from a \")+\"compound index [\".concat(n.join(\"+\"),\"]\"));var a=this.schema.idxByName;function u(e,t){return 0===st(e,t)}var r=n.reduce(function(e,t){var n=e[0],r=e[1],e=a[t],i=o[t];return[n||e,n||!e?it(r,e&&e.multi?function(e){e=O(e,t);return k(e)&&e.some(function(e){return u(i,e)})}:function(e){return u(i,O(e,t))}):r]},[null,null]),t=r[0],r=r[1];return t?this.where(t.name).equals(o[t.keyPath]).filter(r):e?this.filter(r):this.where(n).equals(\"\")},ht.prototype.filter=function(e){return this.toCollection().and(e)},ht.prototype.count=function(e){return this.toCollection().count(e)},ht.prototype.offset=function(e){return this.toCollection().offset(e)},ht.prototype.limit=function(e){return this.toCollection().limit(e)},ht.prototype.each=function(e){return this.toCollection().each(e)},ht.prototype.toArray=function(e){return this.toCollection().toArray(e)},ht.prototype.toCollection=function(){return new this.db.Collection(new this.db.WhereClause(this))},ht.prototype.orderBy=function(e){return new this.db.Collection(new this.db.WhereClause(this,k(e)?\"[\".concat(e.join(\"+\"),\"]\"):e))},ht.prototype.reverse=function(){return this.toCollection().reverse()},ht.prototype.mapToClass=function(r){var e,t=this.db,n=this.name;function i(){return null!==e&&e.apply(this,arguments)||this}(this.schema.mappedClass=r).prototype instanceof ut&&(function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");function n(){this.constructor=e}s(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}(i,e=r),Object.defineProperty(i.prototype,\"db\",{get:function(){return t},enumerable:!1,configurable:!0}),i.prototype.table=function(){return n},r=i);for(var o=new Set,a=r.prototype;a;a=c(a))Object.getOwnPropertyNames(a).forEach(function(e){return o.add(e)});function u(e){if(!e)return e;var t,n=Object.create(r.prototype);for(t in e)if(!o.has(t))try{n[t]=e[t]}catch(e){}return n}return this.schema.readHook&&this.hook.reading.unsubscribe(this.schema.readHook),this.schema.readHook=u,this.hook(\"reading\",u),r},ht.prototype.defineClass=function(){return this.mapToClass(function(e){a(this,e)})},ht.prototype.add=function(t,n){var r=this,e=this.schema.primKey,i=e.auto,o=e.keyPath,a=t;return o&&i&&(a=at(o)(t)),this._trans(\"readwrite\",function(e){return r.core.mutate({trans:e,type:\"add\",keys:null!=n?[n]:null,values:[a]})}).then(function(e){return e.numFailures?_e.reject(e.failures[0]):e.lastResult}).then(function(e){if(o)try{P(t,o,e)}catch(e){}return e})},ht.prototype.update=function(e,t){if(\"object\"!=typeof e||k(e))return this.where(\":id\").equals(e).modify(t);e=O(e,this.schema.primKey.keyPath);return void 0===e?Xe(new Y.InvalidArgument(\"Given object does not contain its primary key\")):this.where(\":id\").equals(e).modify(t)},ht.prototype.put=function(t,n){var r=this,e=this.schema.primKey,i=e.auto,o=e.keyPath,a=t;return o&&i&&(a=at(o)(t)),this._trans(\"readwrite\",function(e){return r.core.mutate({trans:e,type:\"put\",values:[a],keys:null!=n?[n]:null})}).then(function(e){return e.numFailures?_e.reject(e.failures[0]):e.lastResult}).then(function(e){if(o)try{P(t,o,e)}catch(e){}return e})},ht.prototype.delete=function(t){var n=this;return this._trans(\"readwrite\",function(e){return n.core.mutate({trans:e,type:\"delete\",keys:[t]})}).then(function(e){return e.numFailures?_e.reject(e.failures[0]):void 0})},ht.prototype.clear=function(){var t=this;return this._trans(\"readwrite\",function(e){return t.core.mutate({trans:e,type:\"deleteRange\",range:ot})}).then(function(e){return e.numFailures?_e.reject(e.failures[0]):void 0})},ht.prototype.bulkGet=function(t){var n=this;return this._trans(\"readonly\",function(e){return n.core.getMany({keys:t,trans:e}).then(function(e){return e.map(function(e){return n.hook.reading.fire(e)})})})},ht.prototype.bulkAdd=function(r,e,t){var o=this,a=Array.isArray(e)?e:void 0,u=(t=t||(a?void 0:e))?t.allKeys:void 0;return this._trans(\"readwrite\",function(e){var t=o.schema.primKey,n=t.auto,t=t.keyPath;if(t&&a)throw new Y.InvalidArgument(\"bulkAdd(): keys argument invalid on tables with inbound keys\");if(a&&a.length!==r.length)throw new Y.InvalidArgument(\"Arguments objects and keys must have the same length\");var i=r.length,t=t&&n?r.map(at(t)):r;return o.core.mutate({trans:e,type:\"add\",keys:a,values:t,wantResults:u}).then(function(e){var t=e.numFailures,n=e.results,r=e.lastResult,e=e.failures;if(0===t)return u?n:r;throw new V(\"\".concat(o.name,\".bulkAdd(): \").concat(t,\" of \").concat(i,\" operations failed\"),e)})})},ht.prototype.bulkPut=function(r,e,t){var o=this,a=Array.isArray(e)?e:void 0,u=(t=t||(a?void 0:e))?t.allKeys:void 0;return this._trans(\"readwrite\",function(e){var t=o.schema.primKey,n=t.auto,t=t.keyPath;if(t&&a)throw new Y.InvalidArgument(\"bulkPut(): keys argument invalid on tables with inbound keys\");if(a&&a.length!==r.length)throw new Y.InvalidArgument(\"Arguments objects and keys must have the same length\");var i=r.length,t=t&&n?r.map(at(t)):r;return o.core.mutate({trans:e,type:\"put\",keys:a,values:t,wantResults:u}).then(function(e){var t=e.numFailures,n=e.results,r=e.lastResult,e=e.failures;if(0===t)return u?n:r;throw new V(\"\".concat(o.name,\".bulkPut(): \").concat(t,\" of \").concat(i,\" operations failed\"),e)})})},ht.prototype.bulkUpdate=function(t){var h=this,n=this.core,r=t.map(function(e){return e.key}),i=t.map(function(e){return e.changes}),d=[];return this._trans(\"readwrite\",function(e){return n.getMany({trans:e,keys:r,cache:\"clone\"}).then(function(c){var l=[],f=[];t.forEach(function(e,t){var n=e.key,r=e.changes,i=c[t];if(i){for(var o=0,a=Object.keys(r);o<a.length;o++){var u=a[o],s=r[u];if(u===h.schema.primKey.keyPath){if(0!==st(s,n))throw new Y.Constraint(\"Cannot update primary key in bulkUpdate()\")}else P(i,u,s)}d.push(t),l.push(n),f.push(i)}});var s=l.length;return n.mutate({trans:e,type:\"put\",keys:l,values:f,updates:{keys:r,changeSpecs:i}}).then(function(e){var t=e.numFailures,n=e.failures;if(0===t)return s;for(var r=0,i=Object.keys(n);r<i.length;r++){var o,a=i[r],u=d[Number(a)];null!=u&&(o=n[a],delete n[a],n[u]=o)}throw new V(\"\".concat(h.name,\".bulkUpdate(): \").concat(t,\" of \").concat(s,\" operations failed\"),n)})})})},ht.prototype.bulkDelete=function(t){var r=this,i=t.length;return this._trans(\"readwrite\",function(e){return r.core.mutate({trans:e,type:\"delete\",keys:t})}).then(function(e){var t=e.numFailures,n=e.lastResult,e=e.failures;if(0===t)return n;throw new V(\"\".concat(r.name,\".bulkDelete(): \").concat(t,\" of \").concat(i,\" operations failed\"),e)})},ht);function ht(){}function dt(i){function t(e,t){if(t){for(var n=arguments.length,r=new Array(n-1);--n;)r[n-1]=arguments[n];return a[e].subscribe.apply(null,r),i}if(\"string\"==typeof e)return a[e]}var a={};t.addEventType=u;for(var e=1,n=arguments.length;e<n;++e)u(arguments[e]);return t;function u(e,n,r){if(\"object\"!=typeof e){var i;n=n||ne;var o={subscribers:[],fire:r=r||G,subscribe:function(e){-1===o.subscribers.indexOf(e)&&(o.subscribers.push(e),o.fire=n(o.fire,e))},unsubscribe:function(t){o.subscribers=o.subscribers.filter(function(e){return e!==t}),o.fire=o.subscribers.reduce(n,r)}};return a[e]=t[e]=o}x(i=e).forEach(function(e){var t=i[e];if(k(t))u(e,i[e][0],i[e][1]);else{if(\"asap\"!==t)throw new Y.InvalidArgument(\"Invalid event config\");var n=u(e,X,function(){for(var e=arguments.length,t=new Array(e);e--;)t[e]=arguments[e];n.subscribers.forEach(function(e){v(function(){e.apply(null,t)})})})}})}}function pt(e,t){return o(t).from({prototype:e}),t}function yt(e,t){return!(e.filter||e.algorithm||e.or)&&(t?e.justLimit:!e.replayFilter)}function vt(e,t){e.filter=it(e.filter,t)}function mt(e,t,n){var r=e.replayFilter;e.replayFilter=r?function(){return it(r(),t())}:t,e.justLimit=n&&!r}function bt(e,t){if(e.isPrimKey)return t.primaryKey;var n=t.getIndexByKeyPath(e.index);if(!n)throw new Y.Schema(\"KeyPath \"+e.index+\" on object store \"+t.name+\" is not indexed\");return n}function gt(e,t,n){var r=bt(e,t.schema);return t.openCursor({trans:n,values:!e.keysOnly,reverse:\"prev\"===e.dir,unique:!!e.unique,query:{index:r,range:e.range}})}function wt(e,o,t,n){var a=e.replayFilter?it(e.filter,e.replayFilter()):e.filter;if(e.or){var u={},r=function(e,t,n){var r,i;a&&!a(t,n,function(e){return t.stop(e)},function(e){return t.fail(e)})||(\"[object ArrayBuffer]\"===(i=\"\"+(r=t.primaryKey))&&(i=\"\"+new Uint8Array(r)),m(u,i)||(u[i]=!0,o(e,t,n)))};return Promise.all([e.or._iterate(r,t),_t(gt(e,n,t),e.algorithm,r,!e.keysOnly&&e.valueMapper)])}return _t(gt(e,n,t),it(e.algorithm,a),o,!e.keysOnly&&e.valueMapper)}function _t(e,r,i,o){var a=qe(o?function(e,t,n){return i(o(e),t,n)}:i);return e.then(function(n){if(n)return n.start(function(){var t=function(){return n.continue()};r&&!r(n,function(e){return t=e},function(e){n.stop(e),t=G},function(e){n.fail(e),t=G})||a(n.value,n,function(e){return t=e}),t()})})}var xt=(kt.prototype.execute=function(e){var t=this[\"@@propmod\"];if(void 0!==t.add){var n=t.add;if(k(n))return i(i([],k(e)?e:[],!0),n,!0).sort();if(\"number\"==typeof n)return(Number(e)||0)+n;if(\"bigint\"==typeof n)try{return BigInt(e)+n}catch(e){return BigInt(0)+n}throw new TypeError(\"Invalid term \".concat(n))}if(void 0!==t.remove){var r=t.remove;if(k(r))return k(e)?e.filter(function(e){return!r.includes(e)}).sort():[];if(\"number\"==typeof r)return Number(e)-r;if(\"bigint\"==typeof r)try{return BigInt(e)-r}catch(e){return BigInt(0)-r}throw new TypeError(\"Invalid subtrahend \".concat(r))}n=null===(n=t.replacePrefix)||void 0===n?void 0:n[0];return n&&\"string\"==typeof e&&e.startsWith(n)?t.replacePrefix[1]+e.substring(n.length):e},kt);function kt(e){this[\"@@propmod\"]=e}var Ot=(Pt.prototype._read=function(e,t){var n=this._ctx;return n.error?n.table._trans(null,Xe.bind(null,n.error)):n.table._trans(\"readonly\",e).then(t)},Pt.prototype._write=function(e){var t=this._ctx;return t.error?t.table._trans(null,Xe.bind(null,t.error)):t.table._trans(\"readwrite\",e,\"locked\")},Pt.prototype._addAlgorithm=function(e){var t=this._ctx;t.algorithm=it(t.algorithm,e)},Pt.prototype._iterate=function(e,t){return wt(this._ctx,e,t,this._ctx.table.core)},Pt.prototype.clone=function(e){var t=Object.create(this.constructor.prototype),n=Object.create(this._ctx);return e&&a(n,e),t._ctx=n,t},Pt.prototype.raw=function(){return this._ctx.valueMapper=null,this},Pt.prototype.each=function(t){var n=this._ctx;return this._read(function(e){return wt(n,t,e,n.table.core)})},Pt.prototype.count=function(e){var i=this;return this._read(function(e){var t=i._ctx,n=t.table.core;if(yt(t,!0))return n.count({trans:e,query:{index:bt(t,n.schema),range:t.range}}).then(function(e){return Math.min(e,t.limit)});var r=0;return wt(t,function(){return++r,!1},e,n).then(function(){return r})}).then(e)},Pt.prototype.sortBy=function(e,t){var n=e.split(\".\").reverse(),r=n[0],i=n.length-1;function o(e,t){return t?o(e[n[t]],t-1):e[r]}var a=\"next\"===this._ctx.dir?1:-1;function u(e,t){return st(o(e,i),o(t,i))*a}return this.toArray(function(e){return e.sort(u)}).then(t)},Pt.prototype.toArray=function(e){var o=this;return this._read(function(e){var t=o._ctx;if(\"next\"===t.dir&&yt(t,!0)&&0<t.limit){var n=t.valueMapper,r=bt(t,t.table.core.schema);return t.table.core.query({trans:e,limit:t.limit,values:!0,query:{index:r,range:t.range}}).then(function(e){e=e.result;return n?e.map(n):e})}var i=[];return wt(t,function(e){return i.push(e)},e,t.table.core).then(function(){return i})},e)},Pt.prototype.offset=function(t){var e=this._ctx;return t<=0||(e.offset+=t,yt(e)?mt(e,function(){var n=t;return function(e,t){return 0===n||(1===n?--n:t(function(){e.advance(n),n=0}),!1)}}):mt(e,function(){var e=t;return function(){return--e<0}})),this},Pt.prototype.limit=function(e){return this._ctx.limit=Math.min(this._ctx.limit,e),mt(this._ctx,function(){var r=e;return function(e,t,n){return--r<=0&&t(n),0<=r}},!0),this},Pt.prototype.until=function(r,i){return vt(this._ctx,function(e,t,n){return!r(e.value)||(t(n),i)}),this},Pt.prototype.first=function(e){return this.limit(1).toArray(function(e){return e[0]}).then(e)},Pt.prototype.last=function(e){return this.reverse().first(e)},Pt.prototype.filter=function(t){var e;return vt(this._ctx,function(e){return t(e.value)}),(e=this._ctx).isMatch=it(e.isMatch,t),this},Pt.prototype.and=function(e){return this.filter(e)},Pt.prototype.or=function(e){return new this.db.WhereClause(this._ctx.table,e,this)},Pt.prototype.reverse=function(){return this._ctx.dir=\"prev\"===this._ctx.dir?\"next\":\"prev\",this._ondirectionchange&&this._ondirectionchange(this._ctx.dir),this},Pt.prototype.desc=function(){return this.reverse()},Pt.prototype.eachKey=function(n){var e=this._ctx;return e.keysOnly=!e.isMatch,this.each(function(e,t){n(t.key,t)})},Pt.prototype.eachUniqueKey=function(e){return this._ctx.unique=\"unique\",this.eachKey(e)},Pt.prototype.eachPrimaryKey=function(n){var e=this._ctx;return e.keysOnly=!e.isMatch,this.each(function(e,t){n(t.primaryKey,t)})},Pt.prototype.keys=function(e){var t=this._ctx;t.keysOnly=!t.isMatch;var n=[];return this.each(function(e,t){n.push(t.key)}).then(function(){return n}).then(e)},Pt.prototype.primaryKeys=function(e){var n=this._ctx;if(\"next\"===n.dir&&yt(n,!0)&&0<n.limit)return this._read(function(e){var t=bt(n,n.table.core.schema);return n.table.core.query({trans:e,values:!1,limit:n.limit,query:{index:t,range:n.range}})}).then(function(e){return e.result}).then(e);n.keysOnly=!n.isMatch;var r=[];return this.each(function(e,t){r.push(t.primaryKey)}).then(function(){return r}).then(e)},Pt.prototype.uniqueKeys=function(e){return this._ctx.unique=\"unique\",this.keys(e)},Pt.prototype.firstKey=function(e){return this.limit(1).keys(function(e){return e[0]}).then(e)},Pt.prototype.lastKey=function(e){return this.reverse().firstKey(e)},Pt.prototype.distinct=function(){var e=this._ctx,e=e.index&&e.table.schema.idxByName[e.index];if(!e||!e.multi)return this;var n={};return vt(this._ctx,function(e){var t=e.primaryKey.toString(),e=m(n,t);return n[t]=!0,!e}),this},Pt.prototype.modify=function(w){var n=this,r=this._ctx;return this._write(function(d){var a,u,p;p=\"function\"==typeof w?w:(a=x(w),u=a.length,function(e){for(var t=!1,n=0;n<u;++n){var r=a[n],i=w[r],o=O(e,r);i instanceof xt?(P(e,r,i.execute(o)),t=!0):o!==i&&(P(e,r,i),t=!0)}return t});var y=r.table.core,e=y.schema.primaryKey,v=e.outbound,m=e.extractKey,b=200,e=n.db._options.modifyChunkSize;e&&(b=\"object\"==typeof e?e[y.name]||e[\"*\"]||200:e);function g(e,t){var n=t.failures,t=t.numFailures;c+=e-t;for(var r=0,i=x(n);r<i.length;r++){var o=i[r];s.push(n[o])}}var s=[],c=0,t=[];return n.clone().primaryKeys().then(function(l){function f(s){var c=Math.min(b,l.length-s);return y.getMany({trans:d,keys:l.slice(s,s+c),cache:\"immutable\"}).then(function(e){for(var n=[],t=[],r=v?[]:null,i=[],o=0;o<c;++o){var a=e[o],u={value:S(a),primKey:l[s+o]};!1!==p.call(u,u.value,u)&&(null==u.value?i.push(l[s+o]):v||0===st(m(a),m(u.value))?(t.push(u.value),v&&r.push(l[s+o])):(i.push(l[s+o]),n.push(u.value)))}return Promise.resolve(0<n.length&&y.mutate({trans:d,type:\"add\",values:n}).then(function(e){for(var t in e.failures)i.splice(parseInt(t),1);g(n.length,e)})).then(function(){return(0<t.length||h&&\"object\"==typeof w)&&y.mutate({trans:d,type:\"put\",keys:r,values:t,criteria:h,changeSpec:\"function\"!=typeof w&&w,isAdditionalChunk:0<s}).then(function(e){return g(t.length,e)})}).then(function(){return(0<i.length||h&&w===Kt)&&y.mutate({trans:d,type:\"delete\",keys:i,criteria:h,isAdditionalChunk:0<s}).then(function(e){return g(i.length,e)})}).then(function(){return l.length>s+c&&f(s+b)})})}var h=yt(r)&&r.limit===1/0&&(\"function\"!=typeof w||w===Kt)&&{index:r.index,range:r.range};return f(0).then(function(){if(0<s.length)throw new U(\"Error modifying one or more objects\",s,c,t);return l.length})})})},Pt.prototype.delete=function(){var i=this._ctx,n=i.range;return yt(i)&&(i.isPrimKey||3===n.type)?this._write(function(e){var t=i.table.core.schema.primaryKey,r=n;return i.table.core.count({trans:e,query:{index:t,range:r}}).then(function(n){return i.table.core.mutate({trans:e,type:\"deleteRange\",range:r}).then(function(e){var t=e.failures;e.lastResult,e.results;e=e.numFailures;if(e)throw new U(\"Could not delete some values\",Object.keys(t).map(function(e){return t[e]}),n-e);return n-e})})}):this.modify(Kt)},Pt);function Pt(){}var Kt=function(e,t){return t.value=null};function Et(e,t){return e<t?-1:e===t?0:1}function St(e,t){return t<e?-1:e===t?0:1}function jt(e,t,n){e=e instanceof Dt?new e.Collection(e):e;return e._ctx.error=new(n||TypeError)(t),e}function At(e){return new e.Collection(e,function(){return qt(\"\")}).limit(0)}function Ct(e,s,n,r){var i,c,l,f,h,d,p,y=n.length;if(!n.every(function(e){return\"string\"==typeof e}))return jt(e,Ze);function t(e){i=\"next\"===e?function(e){return e.toUpperCase()}:function(e){return e.toLowerCase()},c=\"next\"===e?function(e){return e.toLowerCase()}:function(e){return e.toUpperCase()},l=\"next\"===e?Et:St;var t=n.map(function(e){return{lower:c(e),upper:i(e)}}).sort(function(e,t){return l(e.lower,t.lower)});f=t.map(function(e){return e.upper}),h=t.map(function(e){return e.lower}),p=\"next\"===(d=e)?\"\":r}t(\"next\");e=new e.Collection(e,function(){return Tt(f[0],h[y-1]+r)});e._ondirectionchange=function(e){t(e)};var v=0;return e._addAlgorithm(function(e,t,n){var r=e.key;if(\"string\"!=typeof r)return!1;var i=c(r);if(s(i,h,v))return!0;for(var o=null,a=v;a<y;++a){var u=function(e,t,n,r,i,o){for(var a=Math.min(e.length,r.length),u=-1,s=0;s<a;++s){var c=t[s];if(c!==r[s])return i(e[s],n[s])<0?e.substr(0,s)+n[s]+n.substr(s+1):i(e[s],r[s])<0?e.substr(0,s)+r[s]+n.substr(s+1):0<=u?e.substr(0,u)+t[u]+n.substr(u+1):null;i(e[s],c)<0&&(u=s)}return a<r.length&&\"next\"===o?e+n.substr(e.length):a<e.length&&\"prev\"===o?e.substr(0,n.length):u<0?null:e.substr(0,u)+r[u]+n.substr(u+1)}(r,i,f[a],h[a],l,d);null===u&&null===o?v=a+1:(null===o||0<l(o,u))&&(o=u)}return t(null!==o?function(){e.continue(o+p)}:n),!1}),e}function Tt(e,t,n,r){return{type:2,lower:e,upper:t,lowerOpen:n,upperOpen:r}}function qt(e){return{type:1,lower:e,upper:e}}var Dt=(Object.defineProperty(It.prototype,\"Collection\",{get:function(){return this._ctx.table.db.Collection},enumerable:!1,configurable:!0}),It.prototype.between=function(e,t,n,r){n=!1!==n,r=!0===r;try{return 0<this._cmp(e,t)||0===this._cmp(e,t)&&(n||r)&&(!n||!r)?At(this):new this.Collection(this,function(){return Tt(e,t,!n,!r)})}catch(e){return jt(this,Je)}},It.prototype.equals=function(e){return null==e?jt(this,Je):new this.Collection(this,function(){return qt(e)})},It.prototype.above=function(e){return null==e?jt(this,Je):new this.Collection(this,function(){return Tt(e,void 0,!0)})},It.prototype.aboveOrEqual=function(e){return null==e?jt(this,Je):new this.Collection(this,function(){return Tt(e,void 0,!1)})},It.prototype.below=function(e){return null==e?jt(this,Je):new this.Collection(this,function(){return Tt(void 0,e,!1,!0)})},It.prototype.belowOrEqual=function(e){return null==e?jt(this,Je):new this.Collection(this,function(){return Tt(void 0,e)})},It.prototype.startsWith=function(e){return\"string\"!=typeof e?jt(this,Ze):this.between(e,e+He,!0,!0)},It.prototype.startsWithIgnoreCase=function(e){return\"\"===e?this.startsWith(e):Ct(this,function(e,t){return 0===e.indexOf(t[0])},[e],He)},It.prototype.equalsIgnoreCase=function(e){return Ct(this,function(e,t){return e===t[0]},[e],\"\")},It.prototype.anyOfIgnoreCase=function(){var e=I.apply(D,arguments);return 0===e.length?At(this):Ct(this,function(e,t){return-1!==t.indexOf(e)},e,\"\")},It.prototype.startsWithAnyOfIgnoreCase=function(){var e=I.apply(D,arguments);return 0===e.length?At(this):Ct(this,function(t,e){return e.some(function(e){return 0===t.indexOf(e)})},e,He)},It.prototype.anyOf=function(){var t=this,i=I.apply(D,arguments),o=this._cmp;try{i.sort(o)}catch(e){return jt(this,Je)}if(0===i.length)return At(this);var e=new this.Collection(this,function(){return Tt(i[0],i[i.length-1])});e._ondirectionchange=function(e){o=\"next\"===e?t._ascending:t._descending,i.sort(o)};var a=0;return e._addAlgorithm(function(e,t,n){for(var r=e.key;0<o(r,i[a]);)if(++a===i.length)return t(n),!1;return 0===o(r,i[a])||(t(function(){e.continue(i[a])}),!1)}),e},It.prototype.notEqual=function(e){return this.inAnyRange([[-1/0,e],[e,this.db._maxKey]],{includeLowers:!1,includeUppers:!1})},It.prototype.noneOf=function(){var e=I.apply(D,arguments);if(0===e.length)return new this.Collection(this);try{e.sort(this._ascending)}catch(e){return jt(this,Je)}var t=e.reduce(function(e,t){return e?e.concat([[e[e.length-1][1],t]]):[[-1/0,t]]},null);return t.push([e[e.length-1],this.db._maxKey]),this.inAnyRange(t,{includeLowers:!1,includeUppers:!1})},It.prototype.inAnyRange=function(e,t){var o=this,a=this._cmp,u=this._ascending,n=this._descending,s=this._min,c=this._max;if(0===e.length)return At(this);if(!e.every(function(e){return void 0!==e[0]&&void 0!==e[1]&&u(e[0],e[1])<=0}))return jt(this,\"First argument to inAnyRange() must be an Array of two-value Arrays [lower,upper] where upper must not be lower than lower\",Y.InvalidArgument);var r=!t||!1!==t.includeLowers,i=t&&!0===t.includeUppers;var l,f=u;function h(e,t){return f(e[0],t[0])}try{(l=e.reduce(function(e,t){for(var n=0,r=e.length;n<r;++n){var i=e[n];if(a(t[0],i[1])<0&&0<a(t[1],i[0])){i[0]=s(i[0],t[0]),i[1]=c(i[1],t[1]);break}}return n===r&&e.push(t),e},[])).sort(h)}catch(e){return jt(this,Je)}var d=0,p=i?function(e){return 0<u(e,l[d][1])}:function(e){return 0<=u(e,l[d][1])},y=r?function(e){return 0<n(e,l[d][0])}:function(e){return 0<=n(e,l[d][0])};var v=p,e=new this.Collection(this,function(){return Tt(l[0][0],l[l.length-1][1],!r,!i)});return e._ondirectionchange=function(e){f=\"next\"===e?(v=p,u):(v=y,n),l.sort(h)},e._addAlgorithm(function(e,t,n){for(var r,i=e.key;v(i);)if(++d===l.length)return t(n),!1;return!p(r=i)&&!y(r)||(0===o._cmp(i,l[d][1])||0===o._cmp(i,l[d][0])||t(function(){f===u?e.continue(l[d][0]):e.continue(l[d][1])}),!1)}),e},It.prototype.startsWithAnyOf=function(){var e=I.apply(D,arguments);return e.every(function(e){return\"string\"==typeof e})?0===e.length?At(this):this.inAnyRange(e.map(function(e){return[e,e+He]})):jt(this,\"startsWithAnyOf() only works with strings\")},It);function It(){}function Bt(t){return qe(function(e){return Rt(e),t(e.target.error),!1})}function Rt(e){e.stopPropagation&&e.stopPropagation(),e.preventDefault&&e.preventDefault()}var Ft=\"storagemutated\",Mt=\"x-storagemutated-1\",Nt=dt(null,Ft),Lt=(Ut.prototype._lock=function(){return y(!me.global),++this._reculock,1!==this._reculock||me.global||(me.lockOwnerFor=this),this},Ut.prototype._unlock=function(){if(y(!me.global),0==--this._reculock)for(me.global||(me.lockOwnerFor=null);0<this._blockedFuncs.length&&!this._locked();){var e=this._blockedFuncs.shift();try{$e(e[1],e[0])}catch(e){}}return this},Ut.prototype._locked=function(){return this._reculock&&me.lockOwnerFor!==this},Ut.prototype.create=function(t){var n=this;if(!this.mode)return this;var e=this.db.idbdb,r=this.db._state.dbOpenError;if(y(!this.idbtrans),!t&&!e)switch(r&&r.name){case\"DatabaseClosedError\":throw new Y.DatabaseClosed(r);case\"MissingAPIError\":throw new Y.MissingAPI(r.message,r);default:throw new Y.OpenFailed(r)}if(!this.active)throw new Y.TransactionInactive;return y(null===this._completion._state),(t=this.idbtrans=t||(this.db.core||e).transaction(this.storeNames,this.mode,{durability:this.chromeTransactionDurability})).onerror=qe(function(e){Rt(e),n._reject(t.error)}),t.onabort=qe(function(e){Rt(e),n.active&&n._reject(new Y.Abort(t.error)),n.active=!1,n.on(\"abort\").fire(e)}),t.oncomplete=qe(function(){n.active=!1,n._resolve(),\"mutatedParts\"in t&&Nt.storagemutated.fire(t.mutatedParts)}),this},Ut.prototype._promise=function(n,r,i){var o=this;if(\"readwrite\"===n&&\"readwrite\"!==this.mode)return Xe(new Y.ReadOnly(\"Transaction is readonly\"));if(!this.active)return Xe(new Y.TransactionInactive);if(this._locked())return new _e(function(e,t){o._blockedFuncs.push([function(){o._promise(n,r,i).then(e,t)},me])});if(i)return Ne(function(){var e=new _e(function(e,t){o._lock();var n=r(e,t,o);n&&n.then&&n.then(e,t)});return e.finally(function(){return o._unlock()}),e._lib=!0,e});var e=new _e(function(e,t){var n=r(e,t,o);n&&n.then&&n.then(e,t)});return e._lib=!0,e},Ut.prototype._root=function(){return this.parent?this.parent._root():this},Ut.prototype.waitFor=function(e){var t,r=this._root(),i=_e.resolve(e);r._waitingFor?r._waitingFor=r._waitingFor.then(function(){return i}):(r._waitingFor=i,r._waitingQueue=[],t=r.idbtrans.objectStore(r.storeNames[0]),function e(){for(++r._spinCount;r._waitingQueue.length;)r._waitingQueue.shift()();r._waitingFor&&(t.get(-1/0).onsuccess=e)}());var o=r._waitingFor;return new _e(function(t,n){i.then(function(e){return r._waitingQueue.push(qe(t.bind(null,e)))},function(e){return r._waitingQueue.push(qe(n.bind(null,e)))}).finally(function(){r._waitingFor===o&&(r._waitingFor=null)})})},Ut.prototype.abort=function(){this.active&&(this.active=!1,this.idbtrans&&this.idbtrans.abort(),this._reject(new Y.Abort))},Ut.prototype.table=function(e){var t=this._memoizedTables||(this._memoizedTables={});if(m(t,e))return t[e];var n=this.schema[e];if(!n)throw new Y.NotFound(\"Table \"+e+\" not part of transaction\");n=new this.db.Table(e,n,this);return n.core=this.db.core.table(e),t[e]=n},Ut);function Ut(){}function Vt(e,t,n,r,i,o,a){return{name:e,keyPath:t,unique:n,multi:r,auto:i,compound:o,src:(n&&!a?\"&\":\"\")+(r?\"*\":\"\")+(i?\"++\":\"\")+zt(t)}}function zt(e){return\"string\"==typeof e?e:e?\"[\"+[].join.call(e,\"+\")+\"]\":\"\"}function Wt(e,t,n){return{name:e,primKey:t,indexes:n,mappedClass:null,idxByName:(r=function(e){return[e.name,e]},n.reduce(function(e,t,n){n=r(t,n);return n&&(e[n[0]]=n[1]),e},{}))};var r}var Yt=function(e){try{return e.only([[]]),Yt=function(){return[[]]},[[]]}catch(e){return Yt=function(){return He},He}};function $t(t){return null==t?function(){}:\"string\"==typeof t?1===(n=t).split(\".\").length?function(e){return e[n]}:function(e){return O(e,n)}:function(e){return O(e,t)};var n}function Qt(e){return[].slice.call(e)}var Gt=0;function Xt(e){return null==e?\":id\":\"string\"==typeof e?e:\"[\".concat(e.join(\"+\"),\"]\")}function Ht(e,i,t){function _(e){if(3===e.type)return null;if(4===e.type)throw new Error(\"Cannot convert never type to IDBKeyRange\");var t=e.lower,n=e.upper,r=e.lowerOpen,e=e.upperOpen;return void 0===t?void 0===n?null:i.upperBound(n,!!e):void 0===n?i.lowerBound(t,!!r):i.bound(t,n,!!r,!!e)}function n(e){var h,w=e.name;return{name:w,schema:e,mutate:function(e){var y=e.trans,v=e.type,m=e.keys,b=e.values,g=e.range;return new Promise(function(t,e){t=qe(t);var n=y.objectStore(w),r=null==n.keyPath,i=\"put\"===v||\"add\"===v;if(!i&&\"delete\"!==v&&\"deleteRange\"!==v)throw new Error(\"Invalid operation type: \"+v);var o,a=(m||b||{length:1}).length;if(m&&b&&m.length!==b.length)throw new Error(\"Given keys array must have same length as given values array.\");if(0===a)return t({numFailures:0,failures:{},results:[],lastResult:void 0});function u(e){++l,Rt(e)}var s=[],c=[],l=0;if(\"deleteRange\"===v){if(4===g.type)return t({numFailures:l,failures:c,results:[],lastResult:void 0});3===g.type?s.push(o=n.clear()):s.push(o=n.delete(_(g)))}else{var r=i?r?[b,m]:[b,null]:[m,null],f=r[0],h=r[1];if(i)for(var d=0;d<a;++d)s.push(o=h&&void 0!==h[d]?n[v](f[d],h[d]):n[v](f[d])),o.onerror=u;else for(d=0;d<a;++d)s.push(o=n[v](f[d])),o.onerror=u}function p(e){e=e.target.result,s.forEach(function(e,t){return null!=e.error&&(c[t]=e.error)}),t({numFailures:l,failures:c,results:\"delete\"===v?m:s.map(function(e){return e.result}),lastResult:e})}o.onerror=function(e){u(e),p(e)},o.onsuccess=p})},getMany:function(e){var f=e.trans,h=e.keys;return new Promise(function(t,e){t=qe(t);for(var n,r=f.objectStore(w),i=h.length,o=new Array(i),a=0,u=0,s=function(e){e=e.target;o[e._pos]=e.result,++u===a&&t(o)},c=Bt(e),l=0;l<i;++l)null!=h[l]&&((n=r.get(h[l]))._pos=l,n.onsuccess=s,n.onerror=c,++a);0===a&&t(o)})},get:function(e){var r=e.trans,i=e.key;return new Promise(function(t,e){t=qe(t);var n=r.objectStore(w).get(i);n.onsuccess=function(e){return t(e.target.result)},n.onerror=Bt(e)})},query:(h=s,function(f){return new Promise(function(n,e){n=qe(n);var r,i,o,t=f.trans,a=f.values,u=f.limit,s=f.query,c=u===1/0?void 0:u,l=s.index,s=s.range,t=t.objectStore(w),l=l.isPrimaryKey?t:t.index(l.name),s=_(s);if(0===u)return n({result:[]});h?((c=a?l.getAll(s,c):l.getAllKeys(s,c)).onsuccess=function(e){return n({result:e.target.result})},c.onerror=Bt(e)):(r=0,i=!a&&\"openKeyCursor\"in l?l.openKeyCursor(s):l.openCursor(s),o=[],i.onsuccess=function(e){var t=i.result;return t?(o.push(a?t.value:t.primaryKey),++r===u?n({result:o}):void t.continue()):n({result:o})},i.onerror=Bt(e))})}),openCursor:function(e){var c=e.trans,o=e.values,a=e.query,u=e.reverse,l=e.unique;return new Promise(function(t,n){t=qe(t);var e=a.index,r=a.range,i=c.objectStore(w),i=e.isPrimaryKey?i:i.index(e.name),e=u?l?\"prevunique\":\"prev\":l?\"nextunique\":\"next\",s=!o&&\"openKeyCursor\"in i?i.openKeyCursor(_(r),e):i.openCursor(_(r),e);s.onerror=Bt(n),s.onsuccess=qe(function(e){var r,i,o,a,u=s.result;u?(u.___id=++Gt,u.done=!1,r=u.continue.bind(u),i=(i=u.continuePrimaryKey)&&i.bind(u),o=u.advance.bind(u),a=function(){throw new Error(\"Cursor not stopped\")},u.trans=c,u.stop=u.continue=u.continuePrimaryKey=u.advance=function(){throw new Error(\"Cursor not started\")},u.fail=qe(n),u.next=function(){var e=this,t=1;return this.start(function(){return t--?e.continue():e.stop()}).then(function(){return e})},u.start=function(e){function t(){if(s.result)try{e()}catch(e){u.fail(e)}else u.done=!0,u.start=function(){throw new Error(\"Cursor behind last entry\")},u.stop()}var n=new Promise(function(t,e){t=qe(t),s.onerror=Bt(e),u.fail=e,u.stop=function(e){u.stop=u.continue=u.continuePrimaryKey=u.advance=a,t(e)}});return s.onsuccess=qe(function(e){s.onsuccess=t,t()}),u.continue=r,u.continuePrimaryKey=i,u.advance=o,t(),n},t(u)):t(null)},n)})},count:function(e){var t=e.query,i=e.trans,o=t.index,a=t.range;return new Promise(function(t,e){var n=i.objectStore(w),r=o.isPrimaryKey?n:n.index(o.name),n=_(a),r=n?r.count(n):r.count();r.onsuccess=qe(function(e){return t(e.target.result)}),r.onerror=Bt(e)})}}}var r,o,a,u=(o=t,a=Qt((r=e).objectStoreNames),{schema:{name:r.name,tables:a.map(function(e){return o.objectStore(e)}).map(function(t){var e=t.keyPath,n=t.autoIncrement,r=k(e),i={},n={name:t.name,primaryKey:{name:null,isPrimaryKey:!0,outbound:null==e,compound:r,keyPath:e,autoIncrement:n,unique:!0,extractKey:$t(e)},indexes:Qt(t.indexNames).map(function(e){return t.index(e)}).map(function(e){var t=e.name,n=e.unique,r=e.multiEntry,e=e.keyPath,r={name:t,compound:k(e),keyPath:e,unique:n,multiEntry:r,extractKey:$t(e)};return i[Xt(e)]=r}),getIndexByKeyPath:function(e){return i[Xt(e)]}};return i[\":id\"]=n.primaryKey,null!=e&&(i[Xt(e)]=n.primaryKey),n})},hasGetAll:0<a.length&&\"getAll\"in o.objectStore(a[0])&&!(\"undefined\"!=typeof navigator&&/Safari/.test(navigator.userAgent)&&!/(Chrome\\/|Edge\\/)/.test(navigator.userAgent)&&[].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1]<604)}),t=u.schema,s=u.hasGetAll,u=t.tables.map(n),c={};return u.forEach(function(e){return c[e.name]=e}),{stack:\"dbcore\",transaction:e.transaction.bind(e),table:function(e){if(!c[e])throw new Error(\"Table '\".concat(e,\"' not found\"));return c[e]},MIN_KEY:-1/0,MAX_KEY:Yt(i),schema:t}}function Jt(e,t,n,r){var i=n.IDBKeyRange;return n.indexedDB,{dbcore:(r=Ht(t,i,r),e.dbcore.reduce(function(e,t){t=t.create;return _(_({},e),t(e))},r))}}function Zt(n,e){var t=e.db,e=Jt(n._middlewares,t,n._deps,e);n.core=e.dbcore,n.tables.forEach(function(e){var t=e.name;n.core.schema.tables.some(function(e){return e.name===t})&&(e.core=n.core.table(t),n[t]instanceof n.Table&&(n[t].core=e.core))})}function en(i,e,t,o){t.forEach(function(n){var r=o[n];e.forEach(function(e){var t=function e(t,n){return h(t,n)||(t=c(t))&&e(t,n)}(e,n);(!t||\"value\"in t&&void 0===t.value)&&(e===i.Transaction.prototype||e instanceof i.Transaction?l(e,n,{get:function(){return this.table(n)},set:function(e){u(this,n,{value:e,writable:!0,configurable:!0,enumerable:!0})}}):e[n]=new i.Table(n,r))})})}function tn(n,e){e.forEach(function(e){for(var t in e)e[t]instanceof n.Table&&delete e[t]})}function nn(e,t){return e._cfg.version-t._cfg.version}function rn(n,r,i,e){var o=n._dbSchema;i.objectStoreNames.contains(\"$meta\")&&!o.$meta&&(o.$meta=Wt(\"$meta\",hn(\"\")[0],[]),n._storeNames.push(\"$meta\"));var a=n._createTransaction(\"readwrite\",n._storeNames,o);a.create(i),a._completion.catch(e);var u=a._reject.bind(a),s=me.transless||me;Ne(function(){return me.trans=a,me.transless=s,0!==r?(Zt(n,i),t=r,((e=a).storeNames.includes(\"$meta\")?e.table(\"$meta\").get(\"version\").then(function(e){return null!=e?e:t}):_e.resolve(t)).then(function(e){return c=e,l=a,f=i,t=[],e=(s=n)._versions,h=s._dbSchema=ln(0,s.idbdb,f),0!==(e=e.filter(function(e){return e._cfg.version>=c})).length?(e.forEach(function(u){t.push(function(){var t=h,e=u._cfg.dbschema;fn(s,t,f),fn(s,e,f),h=s._dbSchema=e;var n=an(t,e);n.add.forEach(function(e){un(f,e[0],e[1].primKey,e[1].indexes)}),n.change.forEach(function(e){if(e.recreate)throw new Y.Upgrade(\"Not yet support for changing primary key\");var t=f.objectStore(e.name);e.add.forEach(function(e){return cn(t,e)}),e.change.forEach(function(e){t.deleteIndex(e.name),cn(t,e)}),e.del.forEach(function(e){return t.deleteIndex(e)})});var r=u._cfg.contentUpgrade;if(r&&u._cfg.version>c){Zt(s,f),l._memoizedTables={};var i=g(e);n.del.forEach(function(e){i[e]=t[e]}),tn(s,[s.Transaction.prototype]),en(s,[s.Transaction.prototype],x(i),i),l.schema=i;var o,a=B(r);a&&Le();n=_e.follow(function(){var e;(o=r(l))&&a&&(e=Ue.bind(null,null),o.then(e,e))});return o&&\"function\"==typeof o.then?_e.resolve(o):n.then(function(){return o})}}),t.push(function(e){var t,n,r=u._cfg.dbschema;t=r,n=e,[].slice.call(n.db.objectStoreNames).forEach(function(e){return null==t[e]&&n.db.deleteObjectStore(e)}),tn(s,[s.Transaction.prototype]),en(s,[s.Transaction.prototype],s._storeNames,s._dbSchema),l.schema=s._dbSchema}),t.push(function(e){s.idbdb.objectStoreNames.contains(\"$meta\")&&(Math.ceil(s.idbdb.version/10)===u._cfg.version?(s.idbdb.deleteObjectStore(\"$meta\"),delete s._dbSchema.$meta,s._storeNames=s._storeNames.filter(function(e){return\"$meta\"!==e})):e.objectStore(\"$meta\").put(u._cfg.version,\"version\"))})}),function e(){return t.length?_e.resolve(t.shift()(l.idbtrans)).then(e):_e.resolve()}().then(function(){sn(h,f)})):_e.resolve();var s,c,l,f,t,h}).catch(u)):(x(o).forEach(function(e){un(i,e,o[e].primKey,o[e].indexes)}),Zt(n,i),void _e.follow(function(){return n.on.populate.fire(a)}).catch(u));var e,t})}function on(e,r){sn(e._dbSchema,r),r.db.version%10!=0||r.objectStoreNames.contains(\"$meta\")||r.db.createObjectStore(\"$meta\").add(Math.ceil(r.db.version/10-1),\"version\");var t=ln(0,e.idbdb,r);fn(e,e._dbSchema,r);for(var n=0,i=an(t,e._dbSchema).change;n<i.length;n++){var o=function(t){if(t.change.length||t.recreate)return console.warn(\"Unable to patch indexes of table \".concat(t.name,\" because it has changes on the type of index or primary key.\")),{value:void 0};var n=r.objectStore(t.name);t.add.forEach(function(e){ie&&console.debug(\"Dexie upgrade patch: Creating missing index \".concat(t.name,\".\").concat(e.src)),cn(n,e)})}(i[n]);if(\"object\"==typeof o)return o.value}}function an(e,t){var n,r={del:[],add:[],change:[]};for(n in e)t[n]||r.del.push(n);for(n in t){var i=e[n],o=t[n];if(i){var a={name:n,def:o,recreate:!1,del:[],add:[],change:[]};if(\"\"+(i.primKey.keyPath||\"\")!=\"\"+(o.primKey.keyPath||\"\")||i.primKey.auto!==o.primKey.auto)a.recreate=!0,r.change.push(a);else{var u=i.idxByName,s=o.idxByName,c=void 0;for(c in u)s[c]||a.del.push(c);for(c in s){var l=u[c],f=s[c];l?l.src!==f.src&&a.change.push(f):a.add.push(f)}(0<a.del.length||0<a.add.length||0<a.change.length)&&r.change.push(a)}}else r.add.push([n,o])}return r}function un(e,t,n,r){var i=e.db.createObjectStore(t,n.keyPath?{keyPath:n.keyPath,autoIncrement:n.auto}:{autoIncrement:n.auto});return r.forEach(function(e){return cn(i,e)}),i}function sn(t,n){x(t).forEach(function(e){n.db.objectStoreNames.contains(e)||(ie&&console.debug(\"Dexie: Creating missing table\",e),un(n,e,t[e].primKey,t[e].indexes))})}function cn(e,t){e.createIndex(t.name,t.keyPath,{unique:t.unique,multiEntry:t.multi})}function ln(e,t,u){var s={};return b(t.objectStoreNames,0).forEach(function(e){for(var t=u.objectStore(e),n=Vt(zt(a=t.keyPath),a||\"\",!0,!1,!!t.autoIncrement,a&&\"string\"!=typeof a,!0),r=[],i=0;i<t.indexNames.length;++i){var o=t.index(t.indexNames[i]),a=o.keyPath,o=Vt(o.name,a,!!o.unique,!!o.multiEntry,!1,a&&\"string\"!=typeof a,!1);r.push(o)}s[e]=Wt(e,n,r)}),s}function fn(e,t,n){for(var r=n.db.objectStoreNames,i=0;i<r.length;++i){var o=r[i],a=n.objectStore(o);e._hasGetAll=\"getAll\"in a;for(var u=0;u<a.indexNames.length;++u){var s=a.indexNames[u],c=a.index(s).keyPath,l=\"string\"==typeof c?c:\"[\"+b(c).join(\"+\")+\"]\";!t[o]||(c=t[o].idxByName[l])&&(c.name=s,delete t[o].idxByName[l],t[o].idxByName[s]=c)}}\"undefined\"!=typeof navigator&&/Safari/.test(navigator.userAgent)&&!/(Chrome\\/|Edge\\/)/.test(navigator.userAgent)&&f.WorkerGlobalScope&&f instanceof f.WorkerGlobalScope&&[].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1]<604&&(e._hasGetAll=!1)}function hn(e){return e.split(\",\").map(function(e,t){var n=(e=e.trim()).replace(/([&*]|\\+\\+)/g,\"\"),r=/^\\[/.test(n)?n.match(/^\\[(.*)\\]$/)[1].split(\"+\"):n;return Vt(n,r||null,/\\&/.test(e),/\\*/.test(e),/\\+\\+/.test(e),k(r),0===t)})}var dn=(pn.prototype._parseStoresSpec=function(r,i){x(r).forEach(function(e){if(null!==r[e]){var t=hn(r[e]),n=t.shift();if(n.unique=!0,n.multi)throw new Y.Schema(\"Primary key cannot be multi-valued\");t.forEach(function(e){if(e.auto)throw new Y.Schema(\"Only primary key can be marked as autoIncrement (++)\");if(!e.keyPath)throw new Y.Schema(\"Index must have a name and cannot be an empty string\")}),i[e]=Wt(e,n,t)}})},pn.prototype.stores=function(e){var t=this.db;this._cfg.storesSource=this._cfg.storesSource?a(this._cfg.storesSource,e):e;var e=t._versions,n={},r={};return e.forEach(function(e){a(n,e._cfg.storesSource),r=e._cfg.dbschema={},e._parseStoresSpec(n,r)}),t._dbSchema=r,tn(t,[t._allTables,t,t.Transaction.prototype]),en(t,[t._allTables,t,t.Transaction.prototype,this._cfg.tables],x(r),r),t._storeNames=x(r),this},pn.prototype.upgrade=function(e){return this._cfg.contentUpgrade=re(this._cfg.contentUpgrade||G,e),this},pn);function pn(){}function yn(e,t){var n=e._dbNamesDB;return n||(n=e._dbNamesDB=new er(tt,{addons:[],indexedDB:e,IDBKeyRange:t})).version(1).stores({dbnames:\"name\"}),n.table(\"dbnames\")}function vn(e){return e&&\"function\"==typeof e.databases}function mn(e){return Ne(function(){return me.letThrough=!0,e()})}function bn(e){return!(\"from\"in e)}var gn=function(e,t){if(!this){var n=new gn;return e&&\"d\"in e&&a(n,e),n}a(this,arguments.length?{d:1,from:e,to:1<arguments.length?t:e}:{d:0})};function wn(e,t,n){var r=st(t,n);if(!isNaN(r)){if(0<r)throw RangeError();if(bn(e))return a(e,{from:t,to:n,d:1});var i=e.l,r=e.r;if(st(n,e.from)<0)return i?wn(i,t,n):e.l={from:t,to:n,d:1,l:null,r:null},On(e);if(0<st(t,e.to))return r?wn(r,t,n):e.r={from:t,to:n,d:1,l:null,r:null},On(e);st(t,e.from)<0&&(e.from=t,e.l=null,e.d=r?r.d+1:1),0<st(n,e.to)&&(e.to=n,e.r=null,e.d=e.l?e.l.d+1:1);n=!e.r;i&&!e.l&&_n(e,i),r&&n&&_n(e,r)}}function _n(e,t){bn(t)||function e(t,n){var r=n.from,i=n.to,o=n.l,n=n.r;wn(t,r,i),o&&e(t,o),n&&e(t,n)}(e,t)}function xn(e,t){var n=kn(t),r=n.next();if(r.done)return!1;for(var i=r.value,o=kn(e),a=o.next(i.from),u=a.value;!r.done&&!a.done;){if(st(u.from,i.to)<=0&&0<=st(u.to,i.from))return!0;st(i.from,u.from)<0?i=(r=n.next(u.from)).value:u=(a=o.next(i.from)).value}return!1}function kn(e){var n=bn(e)?null:{s:0,n:e};return{next:function(e){for(var t=0<arguments.length;n;)switch(n.s){case 0:if(n.s=1,t)for(;n.n.l&&st(e,n.n.from)<0;)n={up:n,n:n.n.l,s:1};else for(;n.n.l;)n={up:n,n:n.n.l,s:1};case 1:if(n.s=2,!t||st(e,n.n.to)<=0)return{value:n.n,done:!1};case 2:if(n.n.r){n.s=3,n={up:n,n:n.n.r,s:0};continue}case 3:n=n.up}return{done:!0}}}}function On(e){var t,n,r=((null===(t=e.r)||void 0===t?void 0:t.d)||0)-((null===(n=e.l)||void 0===n?void 0:n.d)||0),i=1<r?\"r\":r<-1?\"l\":\"\";i&&(t=\"r\"==i?\"l\":\"r\",n=_({},e),r=e[i],e.from=r.from,e.to=r.to,e[i]=r[i],n[i]=r[t],(e[t]=n).d=Pn(n)),e.d=Pn(e)}function Pn(e){var t=e.r,e=e.l;return(t?e?Math.max(t.d,e.d):t.d:e?e.d:0)+1}function Kn(t,n){return x(n).forEach(function(e){t[e]?_n(t[e],n[e]):t[e]=function e(t){var n,r,i={};for(n in t)m(t,n)&&(r=t[n],i[n]=!r||\"object\"!=typeof r||K.has(r.constructor)?r:e(r));return i}(n[e])}),t}function En(t,n){return t.all||n.all||Object.keys(t).some(function(e){return n[e]&&xn(n[e],t[e])})}r(gn.prototype,((F={add:function(e){return _n(this,e),this},addKey:function(e){return wn(this,e,e),this},addKeys:function(e){var t=this;return e.forEach(function(e){return wn(t,e,e)}),this},hasKey:function(e){var t=kn(this).next(e).value;return t&&st(t.from,e)<=0&&0<=st(t.to,e)}})[C]=function(){return kn(this)},F));var Sn={},jn={},An=!1;function Cn(e){Kn(jn,e),An||(An=!0,setTimeout(function(){An=!1,Tn(jn,!(jn={}))},0))}function Tn(e,t){void 0===t&&(t=!1);var n=new Set;if(e.all)for(var r=0,i=Object.values(Sn);r<i.length;r++)qn(a=i[r],e,n,t);else for(var o in e){var a,u=/^idb\\:\\/\\/(.*)\\/(.*)\\//.exec(o);u&&(o=u[1],u=u[2],(a=Sn[\"idb://\".concat(o,\"/\").concat(u)])&&qn(a,e,n,t))}n.forEach(function(e){return e()})}function qn(e,t,n,r){for(var i=[],o=0,a=Object.entries(e.queries.query);o<a.length;o++){for(var u=a[o],s=u[0],c=[],l=0,f=u[1];l<f.length;l++){var h=f[l];En(t,h.obsSet)?h.subscribers.forEach(function(e){return n.add(e)}):r&&c.push(h)}r&&i.push([s,c])}if(r)for(var d=0,p=i;d<p.length;d++){var y=p[d],s=y[0],c=y[1];e.queries.query[s]=c}}function Dn(f){var h=f._state,r=f._deps.indexedDB;if(h.isBeingOpened||f.idbdb)return h.dbReadyPromise.then(function(){return h.dbOpenError?Xe(h.dbOpenError):f});h.isBeingOpened=!0,h.dbOpenError=null,h.openComplete=!1;var t=h.openCanceller,d=Math.round(10*f.verno),p=!1;function e(){if(h.openCanceller!==t)throw new Y.DatabaseClosed(\"db.open() was cancelled\")}function y(){return new _e(function(s,n){if(e(),!r)throw new Y.MissingAPI;var c=f.name,l=h.autoSchema||!d?r.open(c):r.open(c,d);if(!l)throw new Y.MissingAPI;l.onerror=Bt(n),l.onblocked=qe(f._fireOnBlocked),l.onupgradeneeded=qe(function(e){var t;v=l.transaction,h.autoSchema&&!f._options.allowEmptyDB?(l.onerror=Rt,v.abort(),l.result.close(),(t=r.deleteDatabase(c)).onsuccess=t.onerror=qe(function(){n(new Y.NoSuchDatabase(\"Database \".concat(c,\" doesnt exist\")))})):(v.onerror=Bt(n),e=e.oldVersion>Math.pow(2,62)?0:e.oldVersion,m=e<1,f.idbdb=l.result,p&&on(f,v),rn(f,e/10,v,n))},n),l.onsuccess=qe(function(){v=null;var e,t,n,r,i,o=f.idbdb=l.result,a=b(o.objectStoreNames);if(0<a.length)try{var u=o.transaction(1===(r=a).length?r[0]:r,\"readonly\");if(h.autoSchema)t=o,n=u,(e=f).verno=t.version/10,n=e._dbSchema=ln(0,t,n),e._storeNames=b(t.objectStoreNames,0),en(e,[e._allTables],x(n),n);else if(fn(f,f._dbSchema,u),((i=an(ln(0,(i=f).idbdb,u),i._dbSchema)).add.length||i.change.some(function(e){return e.add.length||e.change.length}))&&!p)return console.warn(\"Dexie SchemaDiff: Schema was extended without increasing the number passed to db.version(). Dexie will add missing parts and increment native version number to workaround this.\"),o.close(),d=o.version+1,p=!0,s(y());Zt(f,u)}catch(e){}et.push(f),o.onversionchange=qe(function(e){h.vcFired=!0,f.on(\"versionchange\").fire(e)}),o.onclose=qe(function(e){f.on(\"close\").fire(e)}),m&&(i=f._deps,u=c,o=i.indexedDB,i=i.IDBKeyRange,vn(o)||u===tt||yn(o,i).put({name:u}).catch(G)),s()},n)}).catch(function(e){switch(null==e?void 0:e.name){case\"UnknownError\":if(0<h.PR1398_maxLoop)return h.PR1398_maxLoop--,console.warn(\"Dexie: Workaround for Chrome UnknownError on open()\"),y();break;case\"VersionError\":if(0<d)return d=0,y()}return _e.reject(e)})}var n,i=h.dbReadyResolve,v=null,m=!1;return _e.race([t,(\"undefined\"==typeof navigator?_e.resolve():!navigator.userAgentData&&/Safari\\//.test(navigator.userAgent)&&!/Chrom(e|ium)\\//.test(navigator.userAgent)&&indexedDB.databases?new Promise(function(e){function t(){return indexedDB.databases().finally(e)}n=setInterval(t,100),t()}).finally(function(){return clearInterval(n)}):Promise.resolve()).then(y)]).then(function(){return e(),h.onReadyBeingFired=[],_e.resolve(mn(function(){return f.on.ready.fire(f.vip)})).then(function e(){if(0<h.onReadyBeingFired.length){var t=h.onReadyBeingFired.reduce(re,G);return h.onReadyBeingFired=[],_e.resolve(mn(function(){return t(f.vip)})).then(e)}})}).finally(function(){h.openCanceller===t&&(h.onReadyBeingFired=null,h.isBeingOpened=!1)}).catch(function(e){h.dbOpenError=e;try{v&&v.abort()}catch(e){}return t===h.openCanceller&&f._close(),Xe(e)}).finally(function(){h.openComplete=!0,i()}).then(function(){var n;return m&&(n={},f.tables.forEach(function(t){t.schema.indexes.forEach(function(e){e.name&&(n[\"idb://\".concat(f.name,\"/\").concat(t.name,\"/\").concat(e.name)]=new gn(-1/0,[[[]]]))}),n[\"idb://\".concat(f.name,\"/\").concat(t.name,\"/\")]=n[\"idb://\".concat(f.name,\"/\").concat(t.name,\"/:dels\")]=new gn(-1/0,[[[]]])}),Nt(Ft).fire(n),Tn(n,!0)),f})}function In(t){function e(e){return t.next(e)}var r=n(e),i=n(function(e){return t.throw(e)});function n(n){return function(e){var t=n(e),e=t.value;return t.done?e:e&&\"function\"==typeof e.then?e.then(r,i):k(e)?Promise.all(e).then(r,i):r(e)}}return n(e)()}function Bn(e,t,n){for(var r=k(e)?e.slice():[e],i=0;i<n;++i)r.push(t);return r}var Rn={stack:\"dbcore\",name:\"VirtualIndexMiddleware\",level:1,create:function(f){return _(_({},f),{table:function(e){var a=f.table(e),t=a.schema,u={},s=[];function c(e,t,n){var r=Xt(e),i=u[r]=u[r]||[],o=null==e?0:\"string\"==typeof e?1:e.length,a=0<t,a=_(_({},n),{name:a?\"\".concat(r,\"(virtual-from:\").concat(n.name,\")\"):n.name,lowLevelIndex:n,isVirtual:a,keyTail:t,keyLength:o,extractKey:$t(e),unique:!a&&n.unique});return i.push(a),a.isPrimaryKey||s.push(a),1<o&&c(2===o?e[0]:e.slice(0,o-1),t+1,n),i.sort(function(e,t){return e.keyTail-t.keyTail}),a}e=c(t.primaryKey.keyPath,0,t.primaryKey);u[\":id\"]=[e];for(var n=0,r=t.indexes;n<r.length;n++){var i=r[n];c(i.keyPath,0,i)}function l(e){var t,n=e.query.index;return n.isVirtual?_(_({},e),{query:{index:n.lowLevelIndex,range:(t=e.query.range,n=n.keyTail,{type:1===t.type?2:t.type,lower:Bn(t.lower,t.lowerOpen?f.MAX_KEY:f.MIN_KEY,n),lowerOpen:!0,upper:Bn(t.upper,t.upperOpen?f.MIN_KEY:f.MAX_KEY,n),upperOpen:!0})}}):e}return _(_({},a),{schema:_(_({},t),{primaryKey:e,indexes:s,getIndexByKeyPath:function(e){return(e=u[Xt(e)])&&e[0]}}),count:function(e){return a.count(l(e))},query:function(e){return a.query(l(e))},openCursor:function(t){var e=t.query.index,r=e.keyTail,n=e.isVirtual,i=e.keyLength;return n?a.openCursor(l(t)).then(function(e){return e&&o(e)}):a.openCursor(t);function o(n){return Object.create(n,{continue:{value:function(e){null!=e?n.continue(Bn(e,t.reverse?f.MAX_KEY:f.MIN_KEY,r)):t.unique?n.continue(n.key.slice(0,i).concat(t.reverse?f.MIN_KEY:f.MAX_KEY,r)):n.continue()}},continuePrimaryKey:{value:function(e,t){n.continuePrimaryKey(Bn(e,f.MAX_KEY,r),t)}},primaryKey:{get:function(){return n.primaryKey}},key:{get:function(){var e=n.key;return 1===i?e[0]:e.slice(0,i)}},value:{get:function(){return n.value}}})}}})}})}};function Fn(i,o,a,u){return a=a||{},u=u||\"\",x(i).forEach(function(e){var t,n,r;m(o,e)?(t=i[e],n=o[e],\"object\"==typeof t&&\"object\"==typeof n&&t&&n?(r=A(t))!==A(n)?a[u+e]=o[e]:\"Object\"===r?Fn(t,n,a,u+e+\".\"):t!==n&&(a[u+e]=o[e]):t!==n&&(a[u+e]=o[e])):a[u+e]=void 0}),x(o).forEach(function(e){m(i,e)||(a[u+e]=o[e])}),a}function Mn(e,t){return\"delete\"===t.type?t.keys:t.keys||t.values.map(e.extractKey)}var Nn={stack:\"dbcore\",name:\"HooksMiddleware\",level:2,create:function(e){return _(_({},e),{table:function(r){var y=e.table(r),v=y.schema.primaryKey;return _(_({},y),{mutate:function(e){var t=me.trans,n=t.table(r).hook,h=n.deleting,d=n.creating,p=n.updating;switch(e.type){case\"add\":if(d.fire===G)break;return t._promise(\"readwrite\",function(){return a(e)},!0);case\"put\":if(d.fire===G&&p.fire===G)break;return t._promise(\"readwrite\",function(){return a(e)},!0);case\"delete\":if(h.fire===G)break;return t._promise(\"readwrite\",function(){return a(e)},!0);case\"deleteRange\":if(h.fire===G)break;return t._promise(\"readwrite\",function(){return function n(r,i,o){return y.query({trans:r,values:!1,query:{index:v,range:i},limit:o}).then(function(e){var t=e.result;return a({type:\"delete\",keys:t,trans:r}).then(function(e){return 0<e.numFailures?Promise.reject(e.failures[0]):t.length<o?{failures:[],numFailures:0,lastResult:void 0}:n(r,_(_({},i),{lower:t[t.length-1],lowerOpen:!0}),o)})})}(e.trans,e.range,1e4)},!0)}return y.mutate(e);function a(c){var e,t,n,l=me.trans,f=c.keys||Mn(v,c);if(!f)throw new Error(\"Keys missing\");return\"delete\"!==(c=\"add\"===c.type||\"put\"===c.type?_(_({},c),{keys:f}):_({},c)).type&&(c.values=i([],c.values,!0)),c.keys&&(c.keys=i([],c.keys,!0)),e=y,n=f,(\"add\"===(t=c).type?Promise.resolve([]):e.getMany({trans:t.trans,keys:n,cache:\"immutable\"})).then(function(u){var s=f.map(function(e,t){var n,r,i,o=u[t],a={onerror:null,onsuccess:null};return\"delete\"===c.type?h.fire.call(a,e,o,l):\"add\"===c.type||void 0===o?(n=d.fire.call(a,e,c.values[t],l),null==e&&null!=n&&(c.keys[t]=e=n,v.outbound||P(c.values[t],v.keyPath,e))):(n=Fn(o,c.values[t]),(r=p.fire.call(a,n,e,o,l))&&(i=c.values[t],Object.keys(r).forEach(function(e){m(i,e)?i[e]=r[e]:P(i,e,r[e])}))),a});return y.mutate(c).then(function(e){for(var t=e.failures,n=e.results,r=e.numFailures,e=e.lastResult,i=0;i<f.length;++i){var o=(n||f)[i],a=s[i];null==o?a.onerror&&a.onerror(t[i]):a.onsuccess&&a.onsuccess(\"put\"===c.type&&u[i]?c.values[i]:o)}return{failures:t,results:n,numFailures:r,lastResult:e}}).catch(function(t){return s.forEach(function(e){return e.onerror&&e.onerror(t)}),Promise.reject(t)})})}}})}})}};function Ln(e,t,n){try{if(!t)return null;if(t.keys.length<e.length)return null;for(var r=[],i=0,o=0;i<t.keys.length&&o<e.length;++i)0===st(t.keys[i],e[o])&&(r.push(n?S(t.values[i]):t.values[i]),++o);return r.length===e.length?r:null}catch(e){return null}}var Un={stack:\"dbcore\",level:-1,create:function(t){return{table:function(e){var n=t.table(e);return _(_({},n),{getMany:function(t){if(!t.cache)return n.getMany(t);var e=Ln(t.keys,t.trans._cache,\"clone\"===t.cache);return e?_e.resolve(e):n.getMany(t).then(function(e){return t.trans._cache={keys:t.keys,values:\"clone\"===t.cache?S(e):e},e})},mutate:function(e){return\"add\"!==e.type&&(e.trans._cache=null),n.mutate(e)}})}}}};function Vn(e,t){return\"readonly\"===e.trans.mode&&!!e.subscr&&!e.trans.explicit&&\"disabled\"!==e.trans.db._options.cache&&!t.schema.primaryKey.outbound}function zn(e,t){switch(e){case\"query\":return t.values&&!t.unique;case\"get\":case\"getMany\":case\"count\":case\"openCursor\":return!1}}var Wn={stack:\"dbcore\",level:0,name:\"Observability\",create:function(b){var g=b.schema.name,w=new gn(b.MIN_KEY,b.MAX_KEY);return _(_({},b),{transaction:function(e,t,n){if(me.subscr&&\"readonly\"!==t)throw new Y.ReadOnly(\"Readwrite transaction in liveQuery context. Querier source: \".concat(me.querier));return b.transaction(e,t,n)},table:function(d){var p=b.table(d),y=p.schema,v=y.primaryKey,e=y.indexes,c=v.extractKey,l=v.outbound,m=v.autoIncrement&&e.filter(function(e){return e.compound&&e.keyPath.includes(v.keyPath)}),t=_(_({},p),{mutate:function(a){function u(e){return e=\"idb://\".concat(g,\"/\").concat(d,\"/\").concat(e),n[e]||(n[e]=new gn)}var e,o,s,t=a.trans,n=a.mutatedParts||(a.mutatedParts={}),r=u(\"\"),i=u(\":dels\"),c=a.type,l=\"deleteRange\"===a.type?[a.range]:\"delete\"===a.type?[a.keys]:a.values.length<50?[Mn(v,a).filter(function(e){return e}),a.values]:[],f=l[0],h=l[1],l=a.trans._cache;return k(f)?(r.addKeys(f),(l=\"delete\"===c||f.length===h.length?Ln(f,l):null)||i.addKeys(f),(l||h)&&(e=u,o=l,s=h,y.indexes.forEach(function(t){var n=e(t.name||\"\");function r(e){return null!=e?t.extractKey(e):null}function i(e){return t.multiEntry&&k(e)?e.forEach(function(e){return n.addKey(e)}):n.addKey(e)}(o||s).forEach(function(e,t){var n=o&&r(o[t]),t=s&&r(s[t]);0!==st(n,t)&&(null!=n&&i(n),null!=t&&i(t))})}))):f?(h={from:null!==(h=f.lower)&&void 0!==h?h:b.MIN_KEY,to:null!==(h=f.upper)&&void 0!==h?h:b.MAX_KEY},i.add(h),r.add(h)):(r.add(w),i.add(w),y.indexes.forEach(function(e){return u(e.name).add(w)})),p.mutate(a).then(function(o){return!f||\"add\"!==a.type&&\"put\"!==a.type||(r.addKeys(o.results),m&&m.forEach(function(t){for(var e=a.values.map(function(e){return t.extractKey(e)}),n=t.keyPath.findIndex(function(e){return e===v.keyPath}),r=0,i=o.results.length;r<i;++r)e[r][n]=o.results[r];u(t.name).addKeys(e)})),t.mutatedParts=Kn(t.mutatedParts||{},n),o})}}),e=function(e){var t=e.query,e=t.index,t=t.range;return[e,new gn(null!==(e=t.lower)&&void 0!==e?e:b.MIN_KEY,null!==(t=t.upper)&&void 0!==t?t:b.MAX_KEY)]},f={get:function(e){return[v,new gn(e.key)]},getMany:function(e){return[v,(new gn).addKeys(e.keys)]},count:e,query:e,openCursor:e};return x(f).forEach(function(s){t[s]=function(i){var e=me.subscr,t=!!e,n=Vn(me,p)&&zn(s,i)?i.obsSet={}:e;if(t){var r=function(e){e=\"idb://\".concat(g,\"/\").concat(d,\"/\").concat(e);return n[e]||(n[e]=new gn)},o=r(\"\"),a=r(\":dels\"),e=f[s](i),t=e[0],e=e[1];if((\"query\"===s&&t.isPrimaryKey&&!i.values?a:r(t.name||\"\")).add(e),!t.isPrimaryKey){if(\"count\"!==s){var u=\"query\"===s&&l&&i.values&&p.query(_(_({},i),{values:!1}));return p[s].apply(this,arguments).then(function(t){if(\"query\"===s){if(l&&i.values)return u.then(function(e){e=e.result;return o.addKeys(e),t});var e=i.values?t.result.map(c):t.result;(i.values?o:a).addKeys(e)}else if(\"openCursor\"===s){var n=t,r=i.values;return n&&Object.create(n,{key:{get:function(){return a.addKey(n.primaryKey),n.key}},primaryKey:{get:function(){var e=n.primaryKey;return a.addKey(e),e}},value:{get:function(){return r&&o.addKey(n.primaryKey),n.value}}})}return t})}a.add(w)}}return p[s].apply(this,arguments)}}),t}})}};function Yn(e,t,n){if(0===n.numFailures)return t;if(\"deleteRange\"===t.type)return null;var r=t.keys?t.keys.length:\"values\"in t&&t.values?t.values.length:1;if(n.numFailures===r)return null;t=_({},t);return k(t.keys)&&(t.keys=t.keys.filter(function(e,t){return!(t in n.failures)})),\"values\"in t&&k(t.values)&&(t.values=t.values.filter(function(e,t){return!(t in n.failures)})),t}function $n(e,t){return n=e,(void 0===(r=t).lower||(r.lowerOpen?0<st(n,r.lower):0<=st(n,r.lower)))&&(e=e,void 0===(t=t).upper||(t.upperOpen?st(e,t.upper)<0:st(e,t.upper)<=0));var n,r}function Qn(e,d,t,n,r,i){if(!t||0===t.length)return e;var o=d.query.index,p=o.multiEntry,y=d.query.range,v=n.schema.primaryKey.extractKey,m=o.extractKey,a=(o.lowLevelIndex||o).extractKey,t=t.reduce(function(e,t){var n=e,r=[];if(\"add\"===t.type||\"put\"===t.type)for(var i=new gn,o=t.values.length-1;0<=o;--o){var a,u=t.values[o],s=v(u);i.hasKey(s)||(a=m(u),(p&&k(a)?a.some(function(e){return $n(e,y)}):$n(a,y))&&(i.addKey(s),r.push(u)))}switch(t.type){case\"add\":var c=(new gn).addKeys(d.values?e.map(function(e){return v(e)}):e),n=e.concat(d.values?r.filter(function(e){e=v(e);return!c.hasKey(e)&&(c.addKey(e),!0)}):r.map(function(e){return v(e)}).filter(function(e){return!c.hasKey(e)&&(c.addKey(e),!0)}));break;case\"put\":var l=(new gn).addKeys(t.values.map(function(e){return v(e)}));n=e.filter(function(e){return!l.hasKey(d.values?v(e):e)}).concat(d.values?r:r.map(function(e){return v(e)}));break;case\"delete\":var f=(new gn).addKeys(t.keys);n=e.filter(function(e){return!f.hasKey(d.values?v(e):e)});break;case\"deleteRange\":var h=t.range;n=e.filter(function(e){return!$n(v(e),h)})}return n},e);return t===e?e:(t.sort(function(e,t){return st(a(e),a(t))||st(v(e),v(t))}),d.limit&&d.limit<1/0&&(t.length>d.limit?t.length=d.limit:e.length===d.limit&&t.length<d.limit&&(r.dirty=!0)),i?Object.freeze(t):t)}function Gn(e,t){return 0===st(e.lower,t.lower)&&0===st(e.upper,t.upper)&&!!e.lowerOpen==!!t.lowerOpen&&!!e.upperOpen==!!t.upperOpen}function Xn(e,t){return function(e,t,n,r){if(void 0===e)return void 0!==t?-1:0;if(void 0===t)return 1;if(0===(t=st(e,t))){if(n&&r)return 0;if(n)return 1;if(r)return-1}return t}(e.lower,t.lower,e.lowerOpen,t.lowerOpen)<=0&&0<=function(e,t,n,r){if(void 0===e)return void 0!==t?1:0;if(void 0===t)return-1;if(0===(t=st(e,t))){if(n&&r)return 0;if(n)return-1;if(r)return 1}return t}(e.upper,t.upper,e.upperOpen,t.upperOpen)}function Hn(n,r,i,e){n.subscribers.add(i),e.addEventListener(\"abort\",function(){var e,t;n.subscribers.delete(i),0===n.subscribers.size&&(e=n,t=r,setTimeout(function(){0===e.subscribers.size&&q(t,e)},3e3))})}var Jn={stack:\"dbcore\",level:0,name:\"Cache\",create:function(k){var O=k.schema.name;return _(_({},k),{transaction:function(g,w,e){var _,t,x=k.transaction(g,w,e);return\"readwrite\"===w&&(t=(_=new AbortController).signal,e=function(b){return function(){if(_.abort(),\"readwrite\"===w){for(var t=new Set,e=0,n=g;e<n.length;e++){var r=n[e],i=Sn[\"idb://\".concat(O,\"/\").concat(r)];if(i){var o=k.table(r),a=i.optimisticOps.filter(function(e){return e.trans===x});if(x._explicit&&b&&x.mutatedParts)for(var u=0,s=Object.values(i.queries.query);u<s.length;u++)for(var c=0,l=(d=s[u]).slice();c<l.length;c++)En((p=l[c]).obsSet,x.mutatedParts)&&(q(d,p),p.subscribers.forEach(function(e){return t.add(e)}));else if(0<a.length){i.optimisticOps=i.optimisticOps.filter(function(e){return e.trans!==x});for(var f=0,h=Object.values(i.queries.query);f<h.length;f++)for(var d,p,y,v=0,m=(d=h[f]).slice();v<m.length;v++)null!=(p=m[v]).res&&x.mutatedParts&&(b&&!p.dirty?(y=Object.isFrozen(p.res),y=Qn(p.res,p.req,a,o,p,y),p.dirty?(q(d,p),p.subscribers.forEach(function(e){return t.add(e)})):y!==p.res&&(p.res=y,p.promise=_e.resolve({result:y}))):(p.dirty&&q(d,p),p.subscribers.forEach(function(e){return t.add(e)})))}}}t.forEach(function(e){return e()})}}},x.addEventListener(\"abort\",e(!1),{signal:t}),x.addEventListener(\"error\",e(!1),{signal:t}),x.addEventListener(\"complete\",e(!0),{signal:t})),x},table:function(c){var l=k.table(c),i=l.schema.primaryKey;return _(_({},l),{mutate:function(t){var e=me.trans;if(i.outbound||\"disabled\"===e.db._options.cache||e.explicit||\"readwrite\"!==e.idbtrans.mode)return l.mutate(t);var n=Sn[\"idb://\".concat(O,\"/\").concat(c)];if(!n)return l.mutate(t);e=l.mutate(t);return\"add\"!==t.type&&\"put\"!==t.type||!(50<=t.values.length||Mn(i,t).some(function(e){return null==e}))?(n.optimisticOps.push(t),t.mutatedParts&&Cn(t.mutatedParts),e.then(function(e){0<e.numFailures&&(q(n.optimisticOps,t),(e=Yn(0,t,e))&&n.optimisticOps.push(e),t.mutatedParts&&Cn(t.mutatedParts))}),e.catch(function(){q(n.optimisticOps,t),t.mutatedParts&&Cn(t.mutatedParts)})):e.then(function(r){var e=Yn(0,_(_({},t),{values:t.values.map(function(e,t){var n;if(r.failures[t])return e;e=null!==(n=i.keyPath)&&void 0!==n&&n.includes(\".\")?S(e):_({},e);return P(e,i.keyPath,r.results[t]),e})}),r);n.optimisticOps.push(e),queueMicrotask(function(){return t.mutatedParts&&Cn(t.mutatedParts)})}),e},query:function(t){if(!Vn(me,l)||!zn(\"query\",t))return l.query(t);var i=\"immutable\"===(null===(o=me.trans)||void 0===o?void 0:o.db._options.cache),e=me,n=e.requery,r=e.signal,o=function(e,t,n,r){var i=Sn[\"idb://\".concat(e,\"/\").concat(t)];if(!i)return[];if(!(t=i.queries[n]))return[null,!1,i,null];var o=t[(r.query?r.query.index.name:null)||\"\"];if(!o)return[null,!1,i,null];switch(n){case\"query\":var a=o.find(function(e){return e.req.limit===r.limit&&e.req.values===r.values&&Gn(e.req.query.range,r.query.range)});return a?[a,!0,i,o]:[o.find(function(e){return(\"limit\"in e.req?e.req.limit:1/0)>=r.limit&&(!r.values||e.req.values)&&Xn(e.req.query.range,r.query.range)}),!1,i,o];case\"count\":a=o.find(function(e){return Gn(e.req.query.range,r.query.range)});return[a,!!a,i,o]}}(O,c,\"query\",t),a=o[0],e=o[1],u=o[2],s=o[3];return a&&e?a.obsSet=t.obsSet:(e=l.query(t).then(function(e){var t=e.result;if(a&&(a.res=t),i){for(var n=0,r=t.length;n<r;++n)Object.freeze(t[n]);Object.freeze(t)}else e.result=S(t);return e}).catch(function(e){return s&&a&&q(s,a),Promise.reject(e)}),a={obsSet:t.obsSet,promise:e,subscribers:new Set,type:\"query\",req:t,dirty:!1},s?s.push(a):(s=[a],(u=u||(Sn[\"idb://\".concat(O,\"/\").concat(c)]={queries:{query:{},count:{}},objs:new Map,optimisticOps:[],unsignaledParts:{}})).queries.query[t.query.index.name||\"\"]=s)),Hn(a,s,n,r),a.promise.then(function(e){return{result:Qn(e.result,t,null==u?void 0:u.optimisticOps,l,a,i)}})}})}})}};function Zn(e,r){return new Proxy(e,{get:function(e,t,n){return\"db\"===t?r:Reflect.get(e,t,n)}})}var er=(tr.prototype.version=function(t){if(isNaN(t)||t<.1)throw new Y.Type(\"Given version is not a positive number\");if(t=Math.round(10*t)/10,this.idbdb||this._state.isBeingOpened)throw new Y.Schema(\"Cannot add version when database is open\");this.verno=Math.max(this.verno,t);var e=this._versions,n=e.filter(function(e){return e._cfg.version===t})[0];return n||(n=new this.Version(t),e.push(n),e.sort(nn),n.stores({}),this._state.autoSchema=!1,n)},tr.prototype._whenReady=function(e){var n=this;return this.idbdb&&(this._state.openComplete||me.letThrough||this._vip)?e():new _e(function(e,t){if(n._state.openComplete)return t(new Y.DatabaseClosed(n._state.dbOpenError));if(!n._state.isBeingOpened){if(!n._state.autoOpen)return void t(new Y.DatabaseClosed);n.open().catch(G)}n._state.dbReadyPromise.then(e,t)}).then(e)},tr.prototype.use=function(e){var t=e.stack,n=e.create,r=e.level,i=e.name;i&&this.unuse({stack:t,name:i});e=this._middlewares[t]||(this._middlewares[t]=[]);return e.push({stack:t,create:n,level:null==r?10:r,name:i}),e.sort(function(e,t){return e.level-t.level}),this},tr.prototype.unuse=function(e){var t=e.stack,n=e.name,r=e.create;return t&&this._middlewares[t]&&(this._middlewares[t]=this._middlewares[t].filter(function(e){return r?e.create!==r:!!n&&e.name!==n})),this},tr.prototype.open=function(){var e=this;return $e(ve,function(){return Dn(e)})},tr.prototype._close=function(){var n=this._state,e=et.indexOf(this);if(0<=e&&et.splice(e,1),this.idbdb){try{this.idbdb.close()}catch(e){}this.idbdb=null}n.isBeingOpened||(n.dbReadyPromise=new _e(function(e){n.dbReadyResolve=e}),n.openCanceller=new _e(function(e,t){n.cancelOpen=t}))},tr.prototype.close=function(e){var t=(void 0===e?{disableAutoOpen:!0}:e).disableAutoOpen,e=this._state;t?(e.isBeingOpened&&e.cancelOpen(new Y.DatabaseClosed),this._close(),e.autoOpen=!1,e.dbOpenError=new Y.DatabaseClosed):(this._close(),e.autoOpen=this._options.autoOpen||e.isBeingOpened,e.openComplete=!1,e.dbOpenError=null)},tr.prototype.delete=function(n){var i=this;void 0===n&&(n={disableAutoOpen:!0});var o=0<arguments.length&&\"object\"!=typeof arguments[0],a=this._state;return new _e(function(r,t){function e(){i.close(n);var e=i._deps.indexedDB.deleteDatabase(i.name);e.onsuccess=qe(function(){var e,t,n;e=i._deps,t=i.name,n=e.indexedDB,e=e.IDBKeyRange,vn(n)||t===tt||yn(n,e).delete(t).catch(G),r()}),e.onerror=Bt(t),e.onblocked=i._fireOnBlocked}if(o)throw new Y.InvalidArgument(\"Invalid closeOptions argument to db.delete()\");a.isBeingOpened?a.dbReadyPromise.then(e):e()})},tr.prototype.backendDB=function(){return this.idbdb},tr.prototype.isOpen=function(){return null!==this.idbdb},tr.prototype.hasBeenClosed=function(){var e=this._state.dbOpenError;return e&&\"DatabaseClosed\"===e.name},tr.prototype.hasFailed=function(){return null!==this._state.dbOpenError},tr.prototype.dynamicallyOpened=function(){return this._state.autoSchema},Object.defineProperty(tr.prototype,\"tables\",{get:function(){var t=this;return x(this._allTables).map(function(e){return t._allTables[e]})},enumerable:!1,configurable:!0}),tr.prototype.transaction=function(){var e=function(e,t,n){var r=arguments.length;if(r<2)throw new Y.InvalidArgument(\"Too few arguments\");for(var i=new Array(r-1);--r;)i[r-1]=arguments[r];return n=i.pop(),[e,w(i),n]}.apply(this,arguments);return this._transaction.apply(this,e)},tr.prototype._transaction=function(e,t,n){var r=this,i=me.trans;i&&i.db===this&&-1===e.indexOf(\"!\")||(i=null);var o,a,u=-1!==e.indexOf(\"?\");e=e.replace(\"!\",\"\").replace(\"?\",\"\");try{if(a=t.map(function(e){e=e instanceof r.Table?e.name:e;if(\"string\"!=typeof e)throw new TypeError(\"Invalid table argument to Dexie.transaction(). Only Table or String are allowed\");return e}),\"r\"==e||e===nt)o=nt;else{if(\"rw\"!=e&&e!=rt)throw new Y.InvalidArgument(\"Invalid transaction mode: \"+e);o=rt}if(i){if(i.mode===nt&&o===rt){if(!u)throw new Y.SubTransaction(\"Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY\");i=null}i&&a.forEach(function(e){if(i&&-1===i.storeNames.indexOf(e)){if(!u)throw new Y.SubTransaction(\"Table \"+e+\" not included in parent transaction.\");i=null}}),u&&i&&!i.active&&(i=null)}}catch(n){return i?i._promise(null,function(e,t){t(n)}):Xe(n)}var s=function i(o,a,u,s,c){return _e.resolve().then(function(){var e=me.transless||me,t=o._createTransaction(a,u,o._dbSchema,s);if(t.explicit=!0,e={trans:t,transless:e},s)t.idbtrans=s.idbtrans;else try{t.create(),t.idbtrans._explicit=!0,o._state.PR1398_maxLoop=3}catch(e){return e.name===z.InvalidState&&o.isOpen()&&0<--o._state.PR1398_maxLoop?(console.warn(\"Dexie: Need to reopen db\"),o.close({disableAutoOpen:!1}),o.open().then(function(){return i(o,a,u,null,c)})):Xe(e)}var n,r=B(c);return r&&Le(),e=_e.follow(function(){var e;(n=c.call(t,t))&&(r?(e=Ue.bind(null,null),n.then(e,e)):\"function\"==typeof n.next&&\"function\"==typeof n.throw&&(n=In(n)))},e),(n&&\"function\"==typeof n.then?_e.resolve(n).then(function(e){return t.active?e:Xe(new Y.PrematureCommit(\"Transaction committed too early. See http://bit.ly/2kdckMn\"))}):e.then(function(){return n})).then(function(e){return s&&t._resolve(),t._completion.then(function(){return e})}).catch(function(e){return t._reject(e),Xe(e)})})}.bind(null,this,o,a,i,n);return i?i._promise(o,s,\"lock\"):me.trans?$e(me.transless,function(){return r._whenReady(s)}):this._whenReady(s)},tr.prototype.table=function(e){if(!m(this._allTables,e))throw new Y.InvalidTable(\"Table \".concat(e,\" does not exist\"));return this._allTables[e]},tr);function tr(e,t){var o=this;this._middlewares={},this.verno=0;var n=tr.dependencies;this._options=t=_({addons:tr.addons,autoOpen:!0,indexedDB:n.indexedDB,IDBKeyRange:n.IDBKeyRange,cache:\"cloned\"},t),this._deps={indexedDB:t.indexedDB,IDBKeyRange:t.IDBKeyRange};n=t.addons;this._dbSchema={},this._versions=[],this._storeNames=[],this._allTables={},this.idbdb=null,this._novip=this;var a,r,u,i,s,c={dbOpenError:null,isBeingOpened:!1,onReadyBeingFired:null,openComplete:!1,dbReadyResolve:G,dbReadyPromise:null,cancelOpen:G,openCanceller:null,autoSchema:!0,PR1398_maxLoop:3,autoOpen:t.autoOpen};c.dbReadyPromise=new _e(function(e){c.dbReadyResolve=e}),c.openCanceller=new _e(function(e,t){c.cancelOpen=t}),this._state=c,this.name=e,this.on=dt(this,\"populate\",\"blocked\",\"versionchange\",\"close\",{ready:[re,G]}),this.on.ready.subscribe=p(this.on.ready.subscribe,function(i){return function(n,r){tr.vip(function(){var t,e=o._state;e.openComplete?(e.dbOpenError||_e.resolve().then(n),r&&i(n)):e.onReadyBeingFired?(e.onReadyBeingFired.push(n),r&&i(n)):(i(n),t=o,r||i(function e(){t.on.ready.unsubscribe(n),t.on.ready.unsubscribe(e)}))})}}),this.Collection=(a=this,pt(Ot.prototype,function(e,t){this.db=a;var n=ot,r=null;if(t)try{n=t()}catch(e){r=e}var i=e._ctx,t=i.table,e=t.hook.reading.fire;this._ctx={table:t,index:i.index,isPrimKey:!i.index||t.schema.primKey.keyPath&&i.index===t.schema.primKey.name,range:n,keysOnly:!1,dir:\"next\",unique:\"\",algorithm:null,filter:null,replayFilter:null,justLimit:!0,isMatch:null,offset:0,limit:1/0,error:r,or:i.or,valueMapper:e!==X?e:null}})),this.Table=(r=this,pt(ft.prototype,function(e,t,n){this.db=r,this._tx=n,this.name=e,this.schema=t,this.hook=r._allTables[e]?r._allTables[e].hook:dt(null,{creating:[Z,G],reading:[H,X],updating:[te,G],deleting:[ee,G]})})),this.Transaction=(u=this,pt(Lt.prototype,function(e,t,n,r,i){var o=this;this.db=u,this.mode=e,this.storeNames=t,this.schema=n,this.chromeTransactionDurability=r,this.idbtrans=null,this.on=dt(this,\"complete\",\"error\",\"abort\"),this.parent=i||null,this.active=!0,this._reculock=0,this._blockedFuncs=[],this._resolve=null,this._reject=null,this._waitingFor=null,this._waitingQueue=null,this._spinCount=0,this._completion=new _e(function(e,t){o._resolve=e,o._reject=t}),this._completion.then(function(){o.active=!1,o.on.complete.fire()},function(e){var t=o.active;return o.active=!1,o.on.error.fire(e),o.parent?o.parent._reject(e):t&&o.idbtrans&&o.idbtrans.abort(),Xe(e)})})),this.Version=(i=this,pt(dn.prototype,function(e){this.db=i,this._cfg={version:e,storesSource:null,dbschema:{},tables:{},contentUpgrade:null}})),this.WhereClause=(s=this,pt(Dt.prototype,function(e,t,n){if(this.db=s,this._ctx={table:e,index:\":id\"===t?null:t,or:n},this._cmp=this._ascending=st,this._descending=function(e,t){return st(t,e)},this._max=function(e,t){return 0<st(e,t)?e:t},this._min=function(e,t){return st(e,t)<0?e:t},this._IDBKeyRange=s._deps.IDBKeyRange,!this._IDBKeyRange)throw new Y.MissingAPI})),this.on(\"versionchange\",function(e){0<e.newVersion?console.warn(\"Another connection wants to upgrade database '\".concat(o.name,\"'. Closing db now to resume the upgrade.\")):console.warn(\"Another connection wants to delete database '\".concat(o.name,\"'. Closing db now to resume the delete request.\")),o.close({disableAutoOpen:!1})}),this.on(\"blocked\",function(e){!e.newVersion||e.newVersion<e.oldVersion?console.warn(\"Dexie.delete('\".concat(o.name,\"') was blocked\")):console.warn(\"Upgrade '\".concat(o.name,\"' blocked by other connection holding version \").concat(e.oldVersion/10))}),this._maxKey=Yt(t.IDBKeyRange),this._createTransaction=function(e,t,n,r){return new o.Transaction(e,t,n,o._options.chromeTransactionDurability,r)},this._fireOnBlocked=function(t){o.on(\"blocked\").fire(t),et.filter(function(e){return e.name===o.name&&e!==o&&!e._state.vcFired}).map(function(e){return e.on(\"versionchange\").fire(t)})},this.use(Un),this.use(Jn),this.use(Wn),this.use(Rn),this.use(Nn);var l=new Proxy(this,{get:function(e,t,n){if(\"_vip\"===t)return!0;if(\"table\"===t)return function(e){return Zn(o.table(e),l)};var r=Reflect.get(e,t,n);return r instanceof ft?Zn(r,l):\"tables\"===t?r.map(function(e){return Zn(e,l)}):\"_createTransaction\"===t?function(){return Zn(r.apply(this,arguments),l)}:r}});this.vip=l,n.forEach(function(e){return e(o)})}var nr,F=\"undefined\"!=typeof Symbol&&\"observable\"in Symbol?Symbol.observable:\"@@observable\",rr=(ir.prototype.subscribe=function(e,t,n){return this._subscribe(e&&\"function\"!=typeof e?e:{next:e,error:t,complete:n})},ir.prototype[F]=function(){return this},ir);function ir(e){this._subscribe=e}try{nr={indexedDB:f.indexedDB||f.mozIndexedDB||f.webkitIndexedDB||f.msIndexedDB,IDBKeyRange:f.IDBKeyRange||f.webkitIDBKeyRange}}catch(e){nr={indexedDB:null,IDBKeyRange:null}}function or(h){var d,p=!1,e=new rr(function(r){var i=B(h);var o,a=!1,u={},s={},e={get closed(){return a},unsubscribe:function(){a||(a=!0,o&&o.abort(),c&&Nt.storagemutated.unsubscribe(f))}};r.start&&r.start(e);var c=!1,l=function(){return Ge(t)};var f=function(e){Kn(u,e),En(s,u)&&l()},t=function(){var t,n,e;!a&&nr.indexedDB&&(u={},t={},o&&o.abort(),o=new AbortController,e=function(e){var t=je();try{i&&Le();var n=Ne(h,e);return n=i?n.finally(Ue):n}finally{t&&Ae()}}(n={subscr:t,signal:o.signal,requery:l,querier:h,trans:null}),Promise.resolve(e).then(function(e){p=!0,d=e,a||n.signal.aborted||(u={},function(e){for(var t in e)if(m(e,t))return;return 1}(s=t)||c||(Nt(Ft,f),c=!0),Ge(function(){return!a&&r.next&&r.next(e)}))},function(e){p=!1,[\"DatabaseClosedError\",\"AbortError\"].includes(null==e?void 0:e.name)||a||Ge(function(){a||r.error&&r.error(e)})}))};return setTimeout(l,0),e});return e.hasValue=function(){return p},e.getValue=function(){return d},e}var ar=er;function ur(e){var t=cr;try{cr=!0,Nt.storagemutated.fire(e),Tn(e,!0)}finally{cr=t}}r(ar,_(_({},Q),{delete:function(e){return new ar(e,{addons:[]}).delete()},exists:function(e){return new ar(e,{addons:[]}).open().then(function(e){return e.close(),!0}).catch(\"NoSuchDatabaseError\",function(){return!1})},getDatabaseNames:function(e){try{return t=ar.dependencies,n=t.indexedDB,t=t.IDBKeyRange,(vn(n)?Promise.resolve(n.databases()).then(function(e){return e.map(function(e){return e.name}).filter(function(e){return e!==tt})}):yn(n,t).toCollection().primaryKeys()).then(e)}catch(e){return Xe(new Y.MissingAPI)}var t,n},defineClass:function(){return function(e){a(this,e)}},ignoreTransaction:function(e){return me.trans?$e(me.transless,e):e()},vip:mn,async:function(t){return function(){try{var e=In(t.apply(this,arguments));return e&&\"function\"==typeof e.then?e:_e.resolve(e)}catch(e){return Xe(e)}}},spawn:function(e,t,n){try{var r=In(e.apply(n,t||[]));return r&&\"function\"==typeof r.then?r:_e.resolve(r)}catch(e){return Xe(e)}},currentTransaction:{get:function(){return me.trans||null}},waitFor:function(e,t){t=_e.resolve(\"function\"==typeof e?ar.ignoreTransaction(e):e).timeout(t||6e4);return me.trans?me.trans.waitFor(t):t},Promise:_e,debug:{get:function(){return ie},set:function(e){oe(e)}},derive:o,extend:a,props:r,override:p,Events:dt,on:Nt,liveQuery:or,extendObservabilitySet:Kn,getByKeyPath:O,setByKeyPath:P,delByKeyPath:function(t,e){\"string\"==typeof e?P(t,e,void 0):\"length\"in e&&[].map.call(e,function(e){P(t,e,void 0)})},shallowClone:g,deepClone:S,getObjectDiff:Fn,cmp:st,asap:v,minKey:-1/0,addons:[],connections:et,errnames:z,dependencies:nr,cache:Sn,semVer:\"4.0.11\",version:\"4.0.11\".split(\".\").map(function(e){return parseInt(e)}).reduce(function(e,t,n){return e+t/Math.pow(10,2*n)})})),ar.maxKey=Yt(ar.dependencies.IDBKeyRange),\"undefined\"!=typeof dispatchEvent&&\"undefined\"!=typeof addEventListener&&(Nt(Ft,function(e){cr||(e=new CustomEvent(Mt,{detail:e}),cr=!0,dispatchEvent(e),cr=!1)}),addEventListener(Mt,function(e){e=e.detail;cr||ur(e)}));var sr,cr=!1,lr=function(){};return\"undefined\"!=typeof BroadcastChannel&&((lr=function(){(sr=new BroadcastChannel(Mt)).onmessage=function(e){return e.data&&ur(e.data)}})(),\"function\"==typeof sr.unref&&sr.unref(),Nt(Ft,function(e){cr||sr.postMessage(e)})),\"undefined\"!=typeof addEventListener&&(addEventListener(\"pagehide\",function(e){if(!er.disableBfCache&&e.persisted){ie&&console.debug(\"Dexie: handling persisted pagehide\"),null!=sr&&sr.close();for(var t=0,n=et;t<n.length;t++)n[t].close({disableAutoOpen:!1})}}),addEventListener(\"pageshow\",function(e){!er.disableBfCache&&e.persisted&&(ie&&console.debug(\"Dexie: handling persisted pageshow\"),lr(),ur({all:new gn(-1/0,[[]])}))})),_e.rejectionMapper=function(e,t){return!e||e instanceof N||e instanceof TypeError||e instanceof SyntaxError||!e.name||!$[e.name]?e:(t=new $[e.name](t||e.message,e),\"stack\"in e&&l(t,\"stack\",{get:function(){return this.inner.stack}}),t)},oe(ie),_(er,Object.freeze({__proto__:null,Dexie:er,liveQuery:or,Entity:ut,cmp:st,PropModification:xt,replacePrefix:function(e,t){return new xt({replacePrefix:[e,t]})},add:function(e){return new xt({add:e})},remove:function(e){return new xt({remove:e})},default:er,RangeSet:gn,mergeRanges:_n,rangesOverlap:xn}),{default:er}),er});\n//# sourceMappingURL=dexie.min.js.map","// Making the module version consumable via require - to prohibit\n// multiple occurrancies of the same module in the same app\n// (dual package hazard, https://nodejs.org/api/packages.html#dual-package-hazard)\nimport _Dexie from \"./dist/dexie.min.js\";\nconst DexieSymbol = Symbol.for(\"Dexie\");\nconst Dexie = globalThis[DexieSymbol] || (globalThis[DexieSymbol] = _Dexie);\nif (_Dexie.semVer !== Dexie.semVer) {\n throw new Error(`Two different versions of Dexie loaded in the same app: ${_Dexie.semVer} and ${Dexie.semVer}`);\n}\nconst {\n liveQuery, mergeRanges, rangesOverlap, RangeSet, cmp, Entity,\n PropModification, replacePrefix, add, remove } = Dexie;\nexport { liveQuery, mergeRanges, rangesOverlap, RangeSet, cmp, Dexie, Entity,\n PropModification, replacePrefix, add, remove };\nexport default Dexie;\n","import { Dexie, Table } from 'dexie';\nimport type { CacheData, Identifiable } from './SnapTypes.js';\n\n/*========================================================================================================\n\n SNAP RECORDS DB CLASS\n\n Class responsible for managing IndexedDB storage for caching SnapRecords data\n\n Class responsible for managing IndexedDB storage for caching SnapRecords data.\n\n @template T - The type of records being cached, which must extend Identifiable and Record<string, unknown>.\n\n This class extends Dexie to provide a typed interface for storing and retrieving cached data\n in an IndexedDB database. It defines a single table, `cache`, which uses the record's URL as the primary key.\n The class handles database initialization, schema definition, and error logging during database opening.\n\n==========================================================================================================*/\n\nexport class SnapRecordsDB<T extends Identifiable & Record<string, unknown>> extends Dexie {\n // Table for storing cached data\n cache!: Table<CacheData<T>, string>;\n\n // Constructor initializes the IndexedDB database with a specific name\n constructor(name: string) {\n // Initialize Dexie with the provided name\n super(name);\n // Define database version and schema\n const dbVersion = 1.0;\n this.version(dbVersion).stores({\n // Define cache table with URL as the primary key\n cache: 'url, timestamp',\n });\n // Open the database, logging errors to the console if it fails\n this.open().catch(() => {\n // Error is automatically logged to the browser console\n });\n }\n}\n\n/*========================================================================================================\n SNAPRECORDSDB CLASS ENDS HERE\n==========================================================================================================*/\n","import {\n LogLevel,\n RowsPerPage,\n Identifiable,\n LifecycleHooks,\n SnapRecordsOptions,\n SnapRecordsConfigError,\n} from './SnapTypes.js';\nimport { log } from './utils.js';\nimport { defaultOptions } from './SnapOptions.js';\n\n/*========================================================================================================\n\n CONFIGURATION\n\n Class responsible for initializing and validating SnapRecords configuration options\n\n Class responsible for initializing, merging, and validating configuration options for SnapRecords.\n Ensures that user-provided options are combined with defaults, and validates all critical configuration\n aspects such as URL, columns, rows per page, column formatters, and lifecycle hooks. Provides warnings\n for non-critical issues and throws errors for invalid or missing mandatory options.\n\n @typeParam T - The record type, which must extend Identifiable and be an object.\n\n==========================================================================================================*/\n\nexport class Configuration<T extends Identifiable & Record<string, unknown>> {\n // Validated configuration options\n public readonly options: SnapRecordsOptions<T>;\n // Logger function for warnings, now uses the utility log function\n private logger: (level: LogLevel, message: string, ...args: unknown[]) => void;\n\n // Constructor initializes options by merging user-provided options with defaults\n constructor(\n userOptions: Partial<SnapRecordsOptions<T>>,\n debug: boolean,\n logger?: (level: LogLevel, message: string, ...args: unknown[]) => void\n ) {\n // Merge user options with defaults\n this.options = { ...defaultOptions, ...userOptions } as SnapRecordsOptions<T>;\n // Set logger, defaulting to the utility log function with debug flag\n this.logger = logger || ((level, message, ...args) => log(debug, level, message, ...args));\n // Validate the merged options\n this.validate();\n }\n\n // Validates all configuration options\n private validate(): void {\n this.validateUrl();\n this.validateColumns();\n this.validateRowsPerPage();\n this.validateFormatters();\n this.validateLifecycleHooks();\n }\n\n // Validates lifecycle hooks\n private validateLifecycleHooks(): void {\n if (this.options.lifecycleHooks) {\n // Check each hook to ensure it's a function\n for (const key in this.options.lifecycleHooks) {\n if (\n typeof this.options.lifecycleHooks[key as keyof LifecycleHooks<T>] !==\n 'function'\n ) {\n this.logger(LogLevel.WARN, `lifecycleHook '${key}' is not a function.`);\n }\n }\n }\n }\n\n // Validates the URL option\n private validateUrl(): void {\n // Ensure URL is provided and is a string\n if (!this.options.url || typeof this.options.url !== 'string') {\n throw new SnapRecordsConfigError('URL option is mandatory and must be a string.');\n }\n try {\n // Validate URL format\n new URL(this.options.url, document.baseURI);\n } catch {\n throw new SnapRecordsConfigError(`Invalid URL provided: ${this.options.url}`);\n }\n }\n\n // Validates column formatters\n private validateFormatters(): void {\n if (this.options.columnFormatters) {\n // Check each formatter to ensure it's a function\n for (const key in this.options.columnFormatters) {\n if (typeof this.options.columnFormatters[key] !== 'function') {\n this.logger(\n LogLevel.WARN,\n `columnFormatters for column '${key}' is not a function.`\n );\n }\n }\n }\n }\n\n // Validates the columns option\n private validateColumns(): void {\n // Ensure columns is a non-empty array\n if (\n !this.options.columns ||\n !Array.isArray(this.options.columns) ||\n this.options.columns.length === 0\n ) {\n throw new SnapRecordsConfigError('Columns option must be a non-empty array.');\n }\n // Warn if column titles length doesn't match columns length\n if (\n this.options.columnTitles &&\n this.options.columns.length !== this.options.columnTitles.length\n ) {\n this.logger(\n LogLevel.WARN,\n 'The number of columns does not match the number of column titles.'\n );\n }\n }\n\n // Validates the rowsPerPage option\n private validateRowsPerPage(): void {\n const rpp = this.options.rowsPerPage ?? RowsPerPage.DEFAULT;\n // Check if rowsPerPage is within the recommended range\n if (typeof rpp !== 'number' || rpp < 1 || rpp > 1000) {\n this.logger(\n LogLevel.WARN,\n `rowsPerPage value '${rpp}' is outside the recommended range (1-1000).`\n );\n }\n }\n}\n\n/*========================================================================================================\n CONFIGURATION OBJECT ENDS HERE\n==========================================================================================================*/\n","import { log } from './utils.js';\nimport { Translation, LogLevel } from './SnapTypes.js';\n\n/*========================================================================================================\n\n TRANSLATION MANAGER CLASS\n\n Class responsible for managing translation files and caching\n\n Manages the loading, caching, and retrieval of translation files for different languages.\n Handles retry logic for failed fetch attempts and provides a fallback mechanism to a default language.\n Designed to optimize translation file access by caching loaded translations in memory.\n\n==========================================================================================================*/\n\n// Exporting the class directly to allow per-instance configuration,\n// instead of using a shared singleton instance.\nexport class TranslationManager {\n // Debug flag from\n // parent SnapRecords instance\n #debug: boolean;\n // Maximum number of retry\n // attempts for fetching translations\n readonly #maxRetries = 3;\n // Base path for translation files\n #langPath: string = '/lang';\n // Delay between retry attempts in milliseconds\n readonly #retryDelay = 500;\n // Fallback language code\n readonly #fallbackLang = 'en_US';\n // In-memory cache for loaded translations\n #cache: Map<string, Translation> = new Map();\n // Logger function provided by the parent SnapRecords instance\n #logger: (level: LogLevel, message: string, ...args: unknown[]) => void;\n\n // Clears the translation cache\n public clearCache(): void {\n this.#cache.clear();\n this.#logger(LogLevel.INFO, 'Translation cache cleared.');\n }\n\n // The constructor now receives\n // the language path, which will be provided\n // by the SnapRecords instance.\n constructor(\n langPath: string = '/lang',\n debug: boolean = false,\n logger?: (level: LogLevel, message: string, ...args: unknown[]) => void\n ) {\n this.#langPath = langPath;\n this.#debug = debug;\n // Use the provided logger or default to utils.log\n this.#logger =\n logger || ((level, message, ...args) => log(this.#debug, level, message, ...args));\n }\n\n // Fetches or retrieves cached translations for a given language\n public async get(lang: string): Promise<Translation> {\n // Return cached translation if available\n if (this.#cache.has(lang)) {\n this.#logger(LogLevel.INFO, `Translation for ${lang} found in cache.`);\n return this.#cache.get(lang)!;\n }\n\n this.#logger(LogLevel.INFO, `Attempting to load translation for: ${lang}`);\n\n // Attempt to fetch translation with retries\n for (let attempt = 1; attempt <= this.#maxRetries + 1; attempt++) {\n try {\n // Fetch translation file from the server using the configured path\n const response = await fetch(`${this.#langPath}/${lang}.json`);\n if (!response.ok) {\n throw new Error(\n `Translation file for ${lang} not found (status: ${response.status}).`\n );\n }\n // Parse and cache the translation\n const translation: Translation = await response.json();\n this.#cache.set(lang, translation);\n this.#logger(LogLevel.INFO, `Translation for ${lang} loaded and cached.`);\n return translation;\n } catch (error) {\n this.#logger(\n LogLevel.ERROR,\n `Failed to load translation for ${lang} (attempt ${attempt}):`,\n error\n );\n // Handle fetch failure\n if (attempt > this.#maxRetries) {\n // Fall back to default language if all retries fail\n if (lang === this.#fallbackLang) {\n // Prevent infinite recursion if fallback fails\n this.#logger(\n LogLevel.ERROR,\n `CRITICAL: Fallback translation '${this.#fallbackLang}' failed to load.`\n );\n throw new Error(\n `CRITICAL: Fallback translation '${this.#fallbackLang}' failed to load.`\n );\n }\n this.#logger(\n LogLevel.WARN,\n `All retries failed for ${lang}. Falling back to ${this.#fallbackLang}.`\n );\n // Attempt to fetch fallback language\n return this.get(this.#fallbackLang);\n }\n // Wait before retrying\n await new Promise((resolve) => setTimeout(resolve, this.#retryDelay * attempt));\n }\n }\n // Unreachable code for TypeScript validation\n throw new Error(`Failed to load translation for ${lang} and its fallback.`);\n }\n}\n\n/*========================================================================================================\n TRANSLATION MANAGER OBJECT ENDS HERE\n==========================================================================================================*/\n","import {\n ISnapApi,\n LogLevel,\n CacheData,\n RenderType,\n RowsPerPage,\n Translation,\n Identifiable,\n SortCondition,\n ISnapRenderer,\n LifecycleHooks,\n SnapRecordsState,\n ISnapEventManager,\n SnapRecordsOptions,\n SnapRecordsDataError,\n SnapRecordsConfigError,\n} from './SnapTypes.js';\nimport './scss/SnapRecords.scss';\nimport { LRUCache } from 'lru-cache';\nimport { SnapApi } from './SnapApi.js';\nimport { config } from './SnapOptions.js';\nimport { UrlManager } from './UrlManager.js';\nimport { sanitizeHTML, log } from './utils.js';\nimport { SnapRenderer } from './SnapRenderer.js';\nimport { CacheManager } from './CacheManager.js';\nimport { StateManager } from './StateManager.js';\nimport { EventManager } from './EventManager.js';\nimport { SnapRecordsDB } from './SnapRecordsDB.js';\nimport { Configuration } from './Configuration.js';\nimport defaultTranslations from './lang/en_US.json';\nimport { TranslationManager } from './Translations.js';\n\n// Type definition for a function that can be debounced\ntype DebounceableFunction = (...args: unknown[]) => void;\n\n/*========================================================================================================\n\n SNAP RECORDS CLASS\n\n Main class for the SnapRecords plugin, responsible for managing data tables with pagination,\n sorting, and filtering\n\n The SnapRecords class is the main entry point for the SnapRecords plugin.\n It manages the lifecycle, state, rendering, and data operations for interactive data tables.\n This includes handling pagination, sorting, filtering, caching, localization, and user interactions.\n The class is highly configurable and extensible, supporting custom renderers, event managers,\n and lifecycle hooks for advanced use cases.\n\n==========================================================================================================*/\n\nexport class SnapRecords<T extends Identifiable & Record<string, unknown>> {\n // Private API instance for public method access\n #api!: ISnapApi<T>;\n // Debounced function to load data, preventing rapid successive calls\n #debouncedLoadData!: () => void;\n // LRU cache for storing formatted cell values to improve performance\n #formatCache: LRUCache<string, string>;\n // Configuration instance holding validated user options\n #config: Configuration<T>;\n // Bound handler for window unload event to clean up resources\n #boundUnloadHandler!: () => void;\n\n // Current state of the SnapRecords instance, including data, pagination, and filters\n public state: SnapRecordsState<T>;\n // HTML element serving as the container for the table\n public readonly container: HTMLElement;\n // Container for the table content, appended to the main container\n public contentContainer: HTMLElement;\n // Container for error messages, displayed when data loading fails\n public errorContainer: HTMLElement | null = null;\n\n // IndexedDB instance for caching data\n public readonly db: SnapRecordsDB<T>;\n // Renderer instance for rendering the UI (table, list, or cards)\n public readonly renderer: ISnapRenderer<T>;\n // Event manager for handling user interactions (clicks, key presses, etc.)\n public readonly eventManager: ISnapEventManager;\n // State manager for updating and persisting state\n public readonly stateManager: StateManager<T>;\n // URL manager for constructing API request URLs\n public readonly urlManager: UrlManager<T>;\n // Cache manager for handling data caching\n public readonly cacheManager: CacheManager<T>;\n\n // Flag indicating if data is currently being loaded\n public isLoading: boolean = false;\n // Base URL for API requests\n public baseUrl!: string;\n // Flag to enable or disable caching\n public useCache!: boolean;\n // Flag to enable URL state persistence via pushState\n public usePushState!: boolean;\n // CSS classes for header cells, allowing custom styling\n public headerCellClasses: string[] = [];\n // Delay for debouncing data load requests (in milliseconds)\n public debounceDelay!: number;\n // Cache expiration time (in milliseconds)\n public cacheExpiry!: number;\n // Flag to enable draggable columns\n public draggableColumns!: boolean;\n // Flag to enable row selection\n public selectable!: boolean;\n // Flag to enable state persistence in localStorage\n public persistState!: boolean;\n // Flag to destroy the instance on window unload\n public destroyOnUnload!: boolean;\n // Flag to enable preloading of the next page\n public preloadNextPageEnabled!: boolean;\n // Flag to enable lazy loading of media (e.g., images)\n public lazyLoadMedia!: boolean;\n // Set of indices of selected rows\n public selectedRows: Set<number> = new Set();\n // Index of the currently highlighted row for keyboard navigation\n public currentRowIndex: number = -1;\n // Configuration for the previous page button\n public prevButtonConfig!: {\n text?: string;\n isHtml?: boolean;\n template?: (page: number | string) => string;\n };\n // Configuration for the next page button\n public nextButtonConfig!: {\n text?: string;\n isHtml?: boolean;\n template?: (page: number | string) => string;\n };\n // Number of retry attempts for failed data fetches\n public retryAttempts!: number;\n // Maximum size of the format cache\n public formatCacheSize!: number;\n // Flag to enable debug logging\n public debug: boolean = false;\n // Lifecycle hooks for custom behavior at various stages\n public lifecycleHooks!: LifecycleHooks<T>;\n // Translation manager for handling language files\n public readonly translationManager: TranslationManager; // Add a property for the TranslationManager instance.\n // Formatters for custom cell value rendering\n public columnFormatters?: { [columnKey: string]: (value: unknown, row: T) => string };\n // Hash of the last applied filters for cache invalidation\n public lastFilterHash: string = '';\n\n // Getter for the localStorage key used to persist state\n public get storageKey(): string {\n return `snap-records-state-${this.container.id}`;\n }\n\n // Constructor initializes the SnapRecords instance with a container ID and options\n constructor(containerId: string, options: Partial<SnapRecordsOptions<T>> = {}) {\n // Measure initialization time for performance logging\n const startTime = performance.now();\n // Find the container element by ID\n const containerEl = document.getElementById(containerId);\n if (!containerEl)\n throw new SnapRecordsConfigError(`Container with ID '${containerId}' not found.`);\n this.container = containerEl;\n // Create a content container for the table\n this.contentContainer = document.createElement('div');\n\n // Initialize debug flag early as it's used by the logger\n this.debug = options.debug ?? false; // Initialize debug from options\n\n // Initialize configuration with user options and a warning logger\n // Corrected: Pass this.debug and this.log directly\n this.#config = new Configuration(options, this.debug, this.log.bind(this));\n const configOptions = this.#config.options;\n // Initialize instance properties from options\n this.#initializeProperties(configOptions);\n\n window.addEventListener('error', (event) => {\n this.log(LogLevel.ERROR, 'Unhandled error', event.error);\n });\n\n window.addEventListener('unhandledrejection', (event) => {\n this.log(LogLevel.ERROR, 'Unhandled promise rejection', event.reason);\n });\n\n // Initialize the LRU cache for formatted values\n this.#formatCache = new LRUCache<string, string>({ max: this.formatCacheSize });\n\n // Initialize the state with default values\n this.state = {\n currentPage: 1,\n rowsPerPage: configOptions.rowsPerPage ?? RowsPerPage.DEFAULT,\n filters: {},\n sortConditions: [],\n columns: [...configOptions.columns],\n columnTitles: [...(configOptions.columnTitles ?? configOptions.columns)],\n columnWidths: new Map(),\n data: [],\n totalRecords: 0,\n format: configOptions.format ?? RenderType.TABLE,\n language: configOptions.language ?? 'en_US',\n translations: null,\n theme: configOptions.theme ?? 'default',\n headerCellClasses: [...(configOptions.headerCellClasses ?? [])],\n };\n\n // Define callbacks for event manager\n const eventCallbacks = {\n reorderColumns: this.reorderColumns.bind(this),\n requestDataLoad: this.refresh.bind(this),\n };\n\n // Initialize dependencies, passing 'this.log' for standardized logging\n this.db = new SnapRecordsDB<T>(`SnapRecordsDB_${this.container.id}`);\n // This ensures each SnapRecords instance can have its own path for translations.\n this.translationManager = new TranslationManager(\n configOptions.langPath,\n this.debug,\n this.log.bind(this)\n );\n this.stateManager = options.stateManager?.(this) ?? new StateManager(this);\n this.urlManager = options.urlManager?.(this) ?? new UrlManager(this);\n this.cacheManager =\n options.cacheManager?.(this, this.urlManager) ??\n new CacheManager(this, this.urlManager);\n this.renderer =\n options.renderer?.(this, this.contentContainer) ??\n new SnapRenderer(this, this.contentContainer);\n this.eventManager =\n options.eventManager?.(this, this.renderer, eventCallbacks) ??\n new EventManager(this, this.renderer, eventCallbacks);\n\n // Initialize the public API\n this.#api = new SnapApi(this);\n // Create a debounced data load function\n this.#debouncedLoadData = this.#debounce(() => this.loadData(), this.debounceDelay);\n\n // Perform initial setup\n this.#initialize();\n this.log(LogLevel.INFO, `SnapRecords initialized in ${performance.now() - startTime}ms.`);\n }\n\n // Returns the public API instance\n public getApi(): ISnapApi<T> {\n return this.#api;\n }\n\n // Returns the current data array\n public getData(): ReadonlyArray<T> {\n return this.state.data;\n }\n\n // Returns the total number of records\n public getTotals(): { totalRecords: number } {\n return { totalRecords: this.state.totalRecords };\n }\n\n // Logs messages based on the debug flag and log level\n // This is the standardized log method that calls utils.log\n public log(level: LogLevel, ...args: unknown[]): void {\n log(this.debug, level, ...args);\n }\n\n // Refreshes the data by triggering a load\n public refresh(): void {\n this.log(LogLevel.INFO, 'Data refresh requested.');\n this.#debouncedLoadData();\n }\n\n // Clears all row selections\n public clearSelection(): void {\n this.log(LogLevel.INFO, 'Clearing all row selections.');\n this.selectedRows.clear();\n this.renderer.highlightSelectedRows();\n }\n\n // Navigates to the specified page\n public gotoPage(page: number): void {\n this.log(LogLevel.INFO, `Navigating to page ${page}.`);\n this.stateManager.setState((draft) => {\n draft.currentPage = page;\n });\n this.clearFormatCache();\n this.#debouncedLoadData();\n }\n\n // Sets the theme (light or dark)\n public setTheme(theme: 'light' | 'dark'): void {\n if (this.state.theme !== theme) {\n this.log(LogLevel.INFO, `Setting theme to: ${theme}`);\n this.stateManager.setState((draft) => {\n (draft.theme as 'light' | 'dark') = theme;\n });\n this.renderer.applyThemeClass();\n }\n }\n\n // Creates a new mobile card\n public createMobileCard(row: T, index: number): HTMLDivElement {\n const card = document.createElement('div');\n card.classList.add(config.classes.mobileCard);\n card.setAttribute('data-key', row.id.toString());\n card.setAttribute('role', 'rowgroup');\n this.updateMobileCard(card, row, index);\n return card;\n }\n\n // Creates a new list item\n public createListItem(row: T, index: number): HTMLLIElement {\n const li = document.createElement('li');\n li.classList.add(...config.classes.list.itemClass.split(' '));\n li.setAttribute('data-index', index.toString());\n li.setAttribute('data-key', row.id.toString());\n li.setAttribute('role', 'listitem');\n this.updateListItem(li, row, index);\n return li;\n }\n\n // Sets the rendering mode (table, list, or mobile cards)\n public setRenderMode(mode: RenderType): void {\n if (this.state.format !== mode) {\n this.log(LogLevel.INFO, `Setting render mode to: ${mode}`);\n this.stateManager.setState((draft) => {\n (draft.format as RenderType) = mode;\n });\n this.clearFormatCache();\n this.renderer.render();\n this.eventManager.setupAllHandlers();\n }\n }\n\n // Clears the in-memory format cache\n public clearFormatCache(): void {\n this.#formatCache.clear();\n this.log(LogLevel.INFO, 'In-memory format cache cleared.');\n }\n\n // Destroys the SnapRecords instance, cleaning up resources\n public destroy(): void {\n this.log(LogLevel.LOG, 'Destroying SnapRecords Instance...');\n this.eventManager.destroy();\n this.renderer.destroy();\n this.db.close();\n\n // Clear the cache of the instance-specific translation manager.\n this.translationManager.clearCache();\n\n if (this.destroyOnUnload) {\n window.removeEventListener('beforeunload', this.#boundUnloadHandler);\n }\n }\n\n // Updates a mobile card with new data\n public updateMobileCard(div: HTMLDivElement, row: T, index: number): void {\n div.setAttribute('data-index', index.toString());\n div.innerHTML = '';\n this.state.columns.forEach((col: string) => {\n const cardRow = document.createElement('div');\n cardRow.classList.add(config.classes.cardRow);\n cardRow.setAttribute('role', 'row');\n const label = document.createElement('span');\n label.classList.add(config.classes.cardLabel);\n label.setAttribute('role', 'columnheader');\n const value = document.createElement('span');\n value.classList.add(config.classes.cardValue);\n value.setAttribute('role', 'cell');\n const colIdx = this.state.columns.indexOf(col);\n const headerTitle = colIdx !== -1 ? this.state.columnTitles[colIdx] : col;\n label.textContent = `${headerTitle}:`;\n value.innerHTML = this.getFormattedValue(row[col as keyof T], col, row);\n cardRow.appendChild(label);\n cardRow.appendChild(value);\n div.appendChild(cardRow);\n });\n }\n\n // Reorders columns based on drag-and-drop interactions\n public reorderColumns(sourceColId: string, targetColId: string): void {\n this.stateManager.setState((draft) => {\n // Find indices of source and target columns\n const sourceIndex = draft.columns.indexOf(sourceColId);\n const targetIndex = draft.columns.indexOf(targetColId);\n if (sourceIndex === -1 || targetIndex === -1) return;\n\n // Reorder columns\n const cols = draft.columns as string[];\n const titles = draft.columnTitles as string[];\n const classes = draft.headerCellClasses as string[];\n\n const [sourceColumn] = cols.splice(sourceIndex, 1);\n cols.splice(targetIndex, 0, sourceColumn);\n\n const [sourceTitle] = titles.splice(sourceIndex, 1);\n titles.splice(targetIndex, 0, sourceTitle);\n\n if (classes.length > 0) {\n const [sourceClass] = classes.splice(sourceIndex, 1);\n classes.splice(targetIndex, 0, sourceClass);\n }\n this.log(LogLevel.INFO, `Columns reordered. New order: ${cols.join(', ')}`);\n });\n\n // Clear format cache as column order affects rendering\n this.clearFormatCache();\n // Re-render the UI\n this.renderer.render();\n // Re-attach event handlers\n this.eventManager.setupAllHandlers();\n }\n\n // Formats a cell value, using cache and formatters if available\n public getFormattedValue(value: unknown, column: string, row: T): string {\n const cacheKey = `${row.id}_${column}`;\n\n if (this.#formatCache.has(cacheKey)) {\n return this.#formatCache.get(cacheKey)!;\n }\n\n const formatted =\n this.columnFormatters && this.columnFormatters[column]\n ? this.columnFormatters[column](value, row)\n : String(value ?? '');\n\n let finalHtml = sanitizeHTML(formatted);\n\n if (this.lazyLoadMedia) {\n finalHtml = finalHtml.replace(/<img /g, '<img loading=\"lazy\" ');\n }\n\n this.#formatCache.set(cacheKey, finalHtml);\n\n return finalHtml;\n }\n\n // Loads data, checking cache first and falling back to API fetch\n public async loadData(attempt: number = 1): Promise<void> {\n if (!this.baseUrl) return;\n this.#startPerfMark('data-load');\n this.log(LogLevel.INFO, 'Starting data load process...');\n this.renderer.showLoading();\n try {\n this.cacheManager.invalidateCache();\n const url = this.urlManager.buildUrl(this.urlManager.getServerParams());\n\n if (this.useCache) {\n const cached = await this.cacheManager.getCachedData(url);\n if (cached && Date.now() - cached.timestamp < this.cacheExpiry) {\n await this.#handleCachedResponse(cached);\n return;\n }\n }\n await this.#fetchAndProcessData(url, attempt);\n } catch (error) {\n this.#handleDataLoadError(error, attempt, this.baseUrl);\n } finally {\n this.renderer.hideLoading();\n this.#endPerfMark('data-load');\n }\n }\n\n // Performs a search with the provided filters\n public search(filters: Record<string, string>, merge: boolean = false): void {\n this.log(LogLevel.INFO, 'Performing search with filters:', { filters, merge });\n this.stateManager.setState((draft) => {\n draft.currentPage = 1;\n (draft.filters as Record<string, string>) = merge\n ? { ...draft.filters, ...filters }\n : filters;\n });\n this.clearFormatCache();\n this.#debouncedLoadData();\n }\n\n // Returns the currently selected rows\n public getSelectedRows(): T[] {\n return Array.from(this.selectedRows).map((index) => this.state.data[index]) as T[];\n }\n\n // Updates a list item with new data\n public updateListItem(li: HTMLLIElement, row: T, index: number): void {\n li.setAttribute('data-index', index.toString());\n const formattedContent = this.state.columns\n .map((col: string) => {\n const colIndex = this.state.columns.indexOf(col);\n const headerTitle = colIndex !== -1 ? this.state.columnTitles[colIndex] : col;\n const value = this.getFormattedValue(row[col as keyof T], col, row);\n return `<strong>${headerTitle}:</strong> ${value}`;\n })\n .join(' | ');\n li.innerHTML = formattedContent;\n }\n\n // Sets the number of rows per page\n public setRowsPerPage(newRowsPerPage: RowsPerPage): void {\n if (this.state.rowsPerPage !== newRowsPerPage) {\n this.log(LogLevel.INFO, `Setting rows per page to: ${newRowsPerPage}`);\n this.stateManager.setState((draft) => {\n draft.rowsPerPage = newRowsPerPage;\n draft.currentPage = 1;\n });\n this.clearFormatCache();\n this.#debouncedLoadData();\n this.renderer.announceScreenReaderUpdate(`Rows per page changed to ${newRowsPerPage}`);\n }\n }\n\n // Updates a table row with new data\n public updateRow(tr: HTMLTableRowElement, row: T, index: number): void {\n tr.setAttribute('data-index', index.toString());\n\n const fragment = document.createDocumentFragment();\n this.state.columns.forEach((col) => {\n const colName = col as string;\n const td = document.createElement('td');\n td.setAttribute('role', 'gridcell');\n td.setAttribute('data-col-id', colName);\n const formattedValue = this.getFormattedValue(row[colName as keyof T], colName, row);\n td.innerHTML = formattedValue;\n td.dataset.lastValue = formattedValue;\n fragment.appendChild(td);\n });\n\n tr.innerHTML = '';\n tr.appendChild(fragment);\n }\n\n // Creates a new table row\n public createTableRow(row: T, index: number, rowKey: string | number): HTMLTableRowElement {\n const tr = document.createElement('tr');\n tr.setAttribute('role', 'row');\n tr.setAttribute('data-index', index.toString());\n tr.setAttribute('data-key', String(rowKey));\n this.state.columns.forEach((col) => {\n const colName = col as string;\n const td = document.createElement('td');\n td.setAttribute('role', 'gridcell');\n td.setAttribute('data-col-id', colName);\n const formattedValue = this.getFormattedValue(row[colName as keyof T], colName, row);\n td.innerHTML = formattedValue;\n td.dataset.lastValue = formattedValue;\n tr.appendChild(td);\n });\n return tr;\n }\n\n // Resets the instance to its initial state\n public reset(): void {\n this.log(LogLevel.INFO, 'Resetting instance to initial state.');\n if (this.persistState) localStorage.removeItem(this.storageKey);\n this.stateManager.setState((draft) => {\n const configOptions = this.#config.options;\n draft.currentPage = 1;\n (draft.filters as Record<string, string>) = {};\n (draft.sortConditions as SortCondition[]) = [];\n (draft.columns as string[]) = [...(configOptions.columns || [])];\n (draft.columnTitles as string[]) = [\n ...(configOptions.columnTitles || configOptions.columns || []),\n ];\n (draft.headerCellClasses as string[]) = [...(configOptions.headerCellClasses || [])];\n (draft.columnWidths as Map<string, number>) = new Map();\n });\n this.clearFormatCache();\n this.#debouncedLoadData();\n }\n\n // Updates state parameters and triggers a data reload\n public updateParams(\n params: Partial<\n Pick<SnapRecordsState<T>, 'currentPage' | 'rowsPerPage' | 'filters' | 'sortConditions'>\n >\n ): void {\n this.log(LogLevel.INFO, 'Updating parameters.', params);\n this.stateManager.setState((draft) => {\n Object.assign(draft, params);\n });\n this.clearFormatCache();\n this.#debouncedLoadData();\n }\n\n // Handles a cached response by updating state and rendering\n async #handleCachedResponse(cached: CacheData<T>): Promise<void> {\n this.log(LogLevel.INFO, 'Using cached response for URL:', cached.url);\n this.stateManager.setState((draft) => {\n (draft.data as T[]) = cached.data;\n draft.totalRecords = cached.totalRecords;\n });\n this.renderer.render();\n this.eventManager.setupAllHandlers();\n if (this.preloadNextPageEnabled) this.cacheManager.preloadNextPage();\n }\n\n // Fetches data from the API and processes the response\n async #fetchAndProcessData(url: string, attempt: number): Promise<void> {\n this.log(LogLevel.INFO, `Fetching data from URL (Attempt ${attempt}): ${url}`);\n if (this.lifecycleHooks.preDataLoad)\n this.lifecycleHooks.preDataLoad(this.urlManager.getServerParams());\n const response = await fetch(url);\n if (!response.ok) throw new SnapRecordsDataError(`HTTP error! status: ${response.status}`);\n const data = await response.json();\n await this.#processSuccessfulResponse(data, url);\n }\n\n // Processes a successful API response\n async #processSuccessfulResponse(\n data: { data: T[]; totalRecords: number },\n url: string\n ): Promise<void> {\n const receivedData: T[] = data.data || [];\n this.log(LogLevel.INFO, 'Successfully fetched and processed data.', {\n url,\n totalRecords: data.totalRecords,\n receivedCount: receivedData.length,\n });\n this.stateManager.setState((draft) => {\n (draft.data as T[]) = receivedData;\n draft.totalRecords = data.totalRecords || 0;\n });\n if (this.useCache)\n await this.cacheManager.cacheData(url, {\n url: url,\n data: [...this.state.data],\n totalRecords: this.state.totalRecords,\n timestamp: Date.now(),\n });\n if (this.lifecycleHooks.postDataLoad) this.lifecycleHooks.postDataLoad(this.state.data);\n this.clearFormatCache();\n this.renderer.render();\n this.eventManager.setupAllHandlers();\n if (this.preloadNextPageEnabled) this.cacheManager.preloadNextPage();\n }\n\n // Sets the language and reloads translations\n public async setLanguage(newLanguage: string): Promise<void> {\n if (this.state.language !== newLanguage) {\n this.log(LogLevel.INFO, `Setting language to: ${newLanguage}`);\n // Use the instance-specific translation manager to get the new language file.\n const translations =\n (await this.translationManager.get(newLanguage)) ?? defaultTranslations;\n this.stateManager.setState((draft) => {\n (draft.language as string) = newLanguage;\n draft.translations = translations;\n });\n this.clearFormatCache();\n this.renderer.render();\n this.eventManager.setupAllHandlers();\n }\n }\n\n #startPerfMark(label: string) {\n if (this.debug) performance.mark(`${label}-start`);\n }\n\n #endPerfMark(label: string) {\n if (this.debug) {\n performance.mark(`${label}-end`);\n performance.measure(label, `${label}-start`, `${label}-end`);\n const measure = performance.getEntriesByName(label)[0];\n this.log(LogLevel.INFO, `${label} took ${measure.duration}ms`);\n }\n }\n\n // Creates a debounced version of a function\n #debounce(fn: DebounceableFunction, delay: number): () => void {\n let timeoutId: number | null = null;\n return (...args: unknown[]) => {\n if (timeoutId) clearTimeout(timeoutId);\n timeoutId = window.setTimeout(() => fn(...args), delay);\n };\n }\n\n // Handles data load errors with retries\n #handleDataLoadError(error: unknown, _attempt: number, url: string): void {\n if (_attempt <= this.retryAttempts && !(error instanceof SnapRecordsDataError)) {\n this.log(LogLevel.WARN, `Retry attempt ${_attempt} for URL:`, url, { error });\n this.loadData(_attempt + 1);\n return;\n }\n const errMessage = (\n this.state.translations ?? defaultTranslations\n ).errors.dataLoadingFailed.replace('{error}', (error as Error).message);\n this.log(LogLevel.ERROR, 'Data load failed after all retries:', { error, url });\n this.renderer.showError(errMessage);\n }\n\n // Initializes the component by setting up containers, loading state, and fetching data\n async #initialize(): Promise<void> {\n this.log(LogLevel.INFO, 'Starting component initialization...');\n // Create UI containers\n this.renderer.createContainers();\n // Load persisted state if enabled\n if (this.persistState) this.stateManager.loadStateFromStorage();\n // Load state from URL if enabled\n this.stateManager.loadFromURL();\n // Apply the current theme\n this.renderer.applyThemeClass();\n\n try {\n // Load translations for the current language\n // Load translations for the current language using the instance-specific manager.\n const translations =\n (await this.translationManager.get(this.state.language)) ?? defaultTranslations;\n this.stateManager.setState((draft) => {\n draft.translations = translations;\n });\n } catch (error) {\n // Handle translation loading errors by falling back to default translations\n this.log(LogLevel.ERROR, 'Failed to initialize translations', error);\n const defaultTrans = defaultTranslations as Translation;\n this.stateManager.setState((draft) => {\n draft.translations = defaultTrans;\n });\n this.renderer.showError(defaultTrans.errors.generic);\n } finally {\n // Render the UI, set up event handlers, and load data\n this.renderer.render();\n this.eventManager.setupAllHandlers();\n this.#debouncedLoadData();\n this.log(LogLevel.INFO, 'Component initialization finished.');\n }\n }\n\n // Initializes instance properties from configuration options\n #initializeProperties(options: SnapRecordsOptions<T>): void {\n this.log(LogLevel.LOG, 'Initializing instance properties from options.');\n // debug flag is already initialized in constructor before Configuration is used\n this.baseUrl = options.url;\n this.useCache = options.useCache ?? false;\n this.usePushState = options.usePushState ?? false;\n this.columnFormatters = options.columnFormatters;\n this.debounceDelay = config.constants.defaultDebounceDelay;\n this.cacheExpiry = options.cacheExpiry ?? config.constants.defaultCacheExpiry;\n this.selectable = options.selectable ?? false;\n this.lifecycleHooks = options.lifecycleHooks ?? {};\n this.draggableColumns = options.draggableColumns ?? false;\n this.preloadNextPageEnabled = options.preloadNextPage ?? false;\n this.lazyLoadMedia = options.lazyLoadMedia ?? false;\n this.persistState = options.persistState ?? false;\n this.destroyOnUnload = options.destroyOnUnload ?? true;\n this.retryAttempts = options.retryAttempts ?? 3;\n this.formatCacheSize = options.formatCacheSize ?? 500;\n this.prevButtonConfig = { ...config.pagination.prevButton, ...options.prevButton };\n this.nextButtonConfig = { ...config.pagination.nextButton, ...options.nextButton };\n this.#boundUnloadHandler = this.destroy.bind(this);\n if (this.destroyOnUnload) window.addEventListener('beforeunload', this.#boundUnloadHandler);\n }\n}\n\n/*========================================================================================================\n SNAPRECORDS CLASS ENDS HERE\n==========================================================================================================*/\n"],"names":["_parent","LogLevel","RenderType","OrderDirection","RowsPerPage","_a","_b","_c","v","bf","config","self","currentPage","this","e","t","n","r","i","o","global","a","u","s","h","d","c","l","f","w","p","y","m","b","g","_","k","O","x"],"mappings":"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","x_google_ignoreList":[1,8,11,12]}