schummar-table 0.39.3 → 0.40.0

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.
@@ -12,17 +12,13 @@ import { createPortal } from "react-dom";
12
12
 
13
13
  // src/theme/defaultTheme/defaultClasses.ts
14
14
  import { css } from "@emotion/react";
15
- var white = "#ffffff";
16
- var lightGray = "#eeeeee";
17
- var gray = "#bdbdbd";
18
- var darkGray = "#777";
19
15
  var cell = css({
20
16
  display: "flex",
21
17
  alignItems: "center",
22
- borderBottom: `1px solid #dfe2e9`,
18
+ borderBottom: "1px solid var(--table-border-light-color)",
23
19
  whiteSpace: "nowrap",
24
20
  overflow: "hidden",
25
- background: "white",
21
+ background: "var(--table-background-color)",
26
22
  "&:not(:empty)": {
27
23
  padding: `calc(var(--spacing) * 0.1) calc(2 * var(--spacing))`
28
24
  }
@@ -30,21 +26,23 @@ var cell = css({
30
26
  var defaultClasses = {
31
27
  table: css({
32
28
  position: "relative",
33
- display: "grid"
29
+ display: "grid",
30
+ color: "var(--table-text-color)"
34
31
  }),
35
32
  cell,
36
33
  cellFill: css({
37
- borderBottom: `1px solid ${lightGray}`
34
+ borderBottom: "1px solid var(--table-border-light-color)",
35
+ background: "var(--table-background-color)"
38
36
  }),
39
37
  headerCell: css(cell, {
40
- borderBottom: `1px solid #c9cfda`,
38
+ borderBottom: "1px solid var(--table-border-color)",
41
39
  "&:not(:empty)": {
42
40
  padding: `var(--spacing) 0 var(--spacing) calc(2 * var(--spacing))`
43
41
  }
44
42
  }),
45
43
  footerCell: css(cell, {
46
44
  padding: `var(--spacing) calc(2 * var(--spacing))`,
47
- borderTop: `1px solid #c9cfda`,
45
+ borderTop: "1px solid var(--table-border-color)",
48
46
  borderBottom: "none"
49
47
  }),
50
48
  firstCell: css({
@@ -61,12 +59,12 @@ var defaultClasses = {
61
59
  zIndex: 2
62
60
  }),
63
61
  headerFill: css({
64
- borderBottom: `1px solid #c9cfda`,
65
- background: white
62
+ borderBottom: "1px solid var(--table-border-color)",
63
+ background: "var(--table-background-color)"
66
64
  }),
67
65
  footerFill: css({
68
- borderTop: `1px solid #c9cfda`,
69
- background: white
66
+ borderTop: "1px solid var(--table-border-color)",
67
+ background: "var(--table-background-color)"
70
68
  }),
71
69
  text: css({
72
70
  minWidth: 0,
@@ -76,7 +74,7 @@ var defaultClasses = {
76
74
  card: css({
77
75
  borderRadius: 4,
78
76
  boxShadow: "0px 3px 14px 2px rgb(0 0 0 / 12%)",
79
- background: "white"
77
+ background: "var(--table-background-color)"
80
78
  }),
81
79
  clearFiltersButton: css({
82
80
  padding: `0 calc(2 * var(--spacing))`,
@@ -216,7 +214,8 @@ var Popover = ({
216
214
  maxHeight
217
215
  }, position), {
218
216
  zIndex: zIndex + 1,
219
- overflowY: "auto"
217
+ overflowY: "auto",
218
+ color: "var(--table-text-color)"
220
219
  }),
221
220
  hidden && { display: "none" },
222
221
  !position && { visibility: "hidden" }
@@ -713,7 +712,23 @@ function mergeThemes(...themes) {
713
712
  blocked: Object.assign({}, ...themes.map((theme) => {
714
713
  var _a;
715
714
  return (_a = theme.colors) == null ? void 0 : _a.blocked;
716
- }))
715
+ })),
716
+ background: themes.map((theme) => {
717
+ var _a;
718
+ return (_a = theme.colors) == null ? void 0 : _a.background;
719
+ }).reverse().find((x) => x !== void 0),
720
+ text: themes.map((theme) => {
721
+ var _a;
722
+ return (_a = theme.colors) == null ? void 0 : _a.text;
723
+ }).reverse().find((x) => x !== void 0),
724
+ border: themes.map((theme) => {
725
+ var _a;
726
+ return (_a = theme.colors) == null ? void 0 : _a.border;
727
+ }).reverse().find((x) => x !== void 0),
728
+ borderLight: themes.map((theme) => {
729
+ var _a;
730
+ return (_a = theme.colors) == null ? void 0 : _a.borderLight;
731
+ }).reverse().find((x) => x !== void 0)
717
732
  },
718
733
  spacing: themes.map((theme) => theme.spacing).reverse().find((x) => x !== void 0)
719
734
  };
@@ -756,9 +771,6 @@ function TableSettingsProvider({
756
771
  export {
757
772
  Store2 as Store,
758
773
  StoreScope,
759
- lightGray,
760
- gray,
761
- darkGray,
762
774
  defaultClasses,
763
775
  Popover,
764
776
  globalTableTheme,
@@ -787,4 +799,4 @@ schummar-state/dist/es/react.js:
787
799
  * LICENSE file in the root directory of this source tree.
788
800
  *)
789
801
  */
790
- //# sourceMappingURL=chunk-XHAOS3QS.js.map
802
+ //# sourceMappingURL=chunk-E2DUBLYQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/theme/defaultTheme/popover.tsx","../src/theme/defaultTheme/defaultClasses.ts","../node_modules/schummar-state/src/persist/persistPathHelpers.ts","../node_modules/schummar-state/src/persist/storePersist.ts","../node_modules/schummar-state/src/helpers/hash.ts","../node_modules/schummar-state/node_modules/fast-deep-equal/es6/react.js","../node_modules/schummar-state/src/helpers/stringSelector.ts","../node_modules/schummar-state/src/helpers/throttle.ts","../node_modules/schummar-state/src/store.ts","../node_modules/schummar-state/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../node_modules/schummar-state/node_modules/use-sync-external-store/shim/index.js","../node_modules/schummar-state/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../node_modules/schummar-state/node_modules/use-sync-external-store/shim/with-selector.js","../node_modules/schummar-state/src/react/useStoreState.ts","../node_modules/schummar-state/src/react/useStoreProp.ts","../node_modules/schummar-state/src/react/store.ts","../node_modules/schummar-state/src/react/storeScope.tsx","../node_modules/schummar-state/src/react/useResource.ts","../src/theme/tableTheme.tsx","../src/misc/tableSettings.tsx"],"sourcesContent":["import { useLayoutEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport type { TableTheme } from '../../types';\nimport { defaultClasses } from './defaultClasses';\n\nconst MARGIN = 10;\nconst MAX_OFFSET = 20;\n\nexport const Popover: TableTheme['components']['Popover'] = ({\n anchorEl,\n open,\n hidden,\n onClose,\n children,\n className,\n backdropClassName,\n align,\n}) => {\n const popper = useRef<HTMLDivElement>(null);\n const [position, setPosition] = useState<{ left: number; top: number }>();\n const [maxHeight, setMaxHeight] = useState(document.documentElement.clientHeight - 2 * MARGIN);\n const [zIndex, setZIndex] = useState(1);\n\n useLayoutEffect(() => {\n if (!anchorEl || !open) {\n setPosition(undefined);\n return;\n }\n\n let last: { left: number; top: number } | undefined;\n\n function check() {\n if (!anchorEl) return;\n const {\n left: anchorLeft,\n bottom: anchorBottom,\n width: anchorWidth,\n } = anchorEl.getBoundingClientRect();\n const { width: popperWidth = 0 } = popper.current?.getBoundingClientRect() ?? {};\n const viewportWidth = document.documentElement.clientWidth;\n const viewportHeight = document.documentElement.clientHeight;\n\n const next = {\n left:\n align === 'center'\n ? anchorLeft + anchorWidth / 2 - popperWidth / 2\n : anchorLeft -\n Math.min(popperWidth ? popperWidth / 2 : Number.POSITIVE_INFINITY, MAX_OFFSET),\n top: anchorBottom,\n };\n\n if (next.left < MARGIN) {\n next.left = MARGIN;\n }\n if (next.left + popperWidth > viewportWidth - MARGIN) {\n next.left = viewportWidth - MARGIN - popperWidth;\n }\n if (next.top < MARGIN) {\n next.top = MARGIN;\n }\n\n if (next.left !== last?.left || next.top !== last?.top) {\n setPosition(next);\n }\n\n setMaxHeight(viewportHeight - MARGIN - next.top);\n\n last = next;\n }\n check();\n\n const handle = setInterval(check, 16);\n return () => {\n clearInterval(handle);\n };\n }, [anchorEl, open, align]);\n\n function updateZIndex(div: HTMLDivElement | null) {\n const ancestors = [];\n for (let node = div?.parentElement; node; node = node.parentElement) {\n ancestors.push(node);\n }\n\n for (const node of ancestors.reverse()) {\n const value = document.defaultView?.getComputedStyle(node).getPropertyValue('z-index');\n\n if (value && !Number.isNaN(Number(value))) {\n setZIndex(Number(value) + 1);\n return;\n }\n }\n }\n\n if (!open) return null;\n\n return (\n <>\n <div\n ref={updateZIndex}\n css={{\n display: 'none',\n }}\n />\n\n {createPortal(\n <>\n <div\n className={backdropClassName}\n css={[\n {\n position: 'fixed',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n zIndex,\n },\n hidden && { display: 'none' },\n ]}\n onClick={() => onClose()}\n />\n\n <div\n ref={popper}\n className={className}\n css={[\n defaultClasses.card,\n {\n position: 'fixed',\n maxWidth: document.documentElement.clientWidth - 2 * MARGIN,\n maxHeight,\n ...position,\n zIndex: zIndex + 1,\n overflowY: 'auto',\n color: 'var(--table-text-color)',\n },\n hidden && { display: 'none' },\n !position && { visibility: 'hidden' },\n ]}\n >\n {children}\n </div>\n </>,\n document.body,\n )}\n </>\n );\n};\n","import { css } from '@emotion/react';\n\nconst cell = css({\n display: 'flex',\n alignItems: 'center',\n borderBottom: '1px solid var(--table-border-light-color)',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n background: 'var(--table-background-color)',\n\n '&:not(:empty)': {\n padding: `calc(var(--spacing) * 0.1) calc(2 * var(--spacing))`,\n },\n});\n\nexport const defaultClasses = {\n table: css({\n position: 'relative',\n display: 'grid',\n color: 'var(--table-text-color)',\n }),\n\n cell,\n\n cellFill: css({\n borderBottom: '1px solid var(--table-border-light-color)',\n background: 'var(--table-background-color)',\n }),\n\n headerCell: css(cell, {\n borderBottom: '1px solid var(--table-border-color)',\n\n '&:not(:empty)': {\n padding: `var(--spacing) 0 var(--spacing) calc(2 * var(--spacing))`,\n },\n }),\n\n footerCell: css(cell, {\n padding: `var(--spacing) calc(2 * var(--spacing))`,\n borderTop: '1px solid var(--table-border-color)',\n borderBottom: 'none',\n }),\n\n firstCell: css({\n justifyContent: 'start',\n }),\n\n sticky: css({\n position: 'sticky',\n top: 0,\n zIndex: 2,\n }),\n\n stickyBottom: css({\n position: 'sticky',\n bottom: 0,\n zIndex: 2,\n }),\n\n headerFill: css({\n borderBottom: '1px solid var(--table-border-color)',\n background: 'var(--table-background-color)',\n }),\n\n footerFill: css({\n borderTop: '1px solid var(--table-border-color)',\n background: 'var(--table-background-color)',\n }),\n\n text: css({\n minWidth: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }),\n\n card: css({\n borderRadius: 4,\n boxShadow: '0px 3px 14px 2px rgb(0 0 0 / 12%)',\n background: 'var(--table-background-color)',\n }),\n\n clearFiltersButton: css({\n padding: `0 calc(2 * var(--spacing))`,\n fontWeight: 'bold',\n position: 'sticky',\n left: 0,\n maxWidth: 'fit-content',\n gridColumn: '2/-1',\n button: {\n color: 'var(--primaryMain) !important',\n border: 'solid 1px',\n borderColor: 'var(--primaryMain) !important',\n margin: 'var(--spacing)',\n },\n }),\n\n details: css(cell, {\n gridColumn: '1 / -1',\n whiteSpace: 'normal',\n }),\n};\n","export type Path = (string | number)[];\n\nexport const isAncestor = (ancestor: Path, path: Path): boolean => {\n return ancestor.length <= path.length && ancestor.every((v, i) => v === '*' || path[i] === '*' || String(v) === String(path[i]));\n};\n\nexport const get = (value: unknown, path: Path): unknown => {\n for (const part of path) {\n if (value instanceof Object && part in value) value = value[part as keyof typeof value];\n else {\n value = undefined;\n break;\n }\n }\n return value;\n};\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const split = (value: any, path: Path): [value: unknown, subValues: { path: Path; value: unknown }[]] => {\n const [first, ...rest] = path;\n if (first === undefined) return [value, []];\n\n if (rest.length === 0) {\n if (first === '*') return [{}, Object.entries(value).map(([k, v]) => ({ path: [k], value: v }))];\n if (!(first in value)) return [value, []];\n const { [first]: subValue, ...newValue } = value;\n return [newValue, [{ path: [first], value: subValue }]];\n }\n\n const newValue = { ...value };\n const subValues = new Array<{ path: Path; value: unknown }>();\n for (const key of first === '*' ? Object.keys(value) : [first]) {\n if (!(newValue[key] instanceof Object)) return [value, []];\n const result = split(newValue[key], rest);\n newValue[key] = result[0];\n subValues.push(...result[1].map((s) => ({ path: [key, ...s.path], value: s.value })));\n }\n return [newValue, subValues];\n};\n","import { Patch } from 'immer';\nimport { Store } from '../store';\nimport { get, isAncestor, Path, split } from './persistPathHelpers';\nimport { PersistPaths } from './persistPaths';\nimport { StorePersistStorage } from './persistStorage';\n\nexport class StorePersist<T> {\n private replayPatches = new Array<Patch>();\n isInitialized = false;\n whenInitialized = this.load();\n private isStopped = false;\n private sub?: () => void;\n private saveQueue = new Array<{ path: Path; t: number }>();\n private isSaving = false;\n private saveTimeout?: ReturnType<typeof setTimeout>;\n private paths: { path: Path; throttleMs?: number }[];\n\n constructor(\n public readonly store: Store<T>,\n public readonly storage: StorePersistStorage,\n public readonly options: {\n paths?: (PersistPaths<T> | { path: PersistPaths<T>; throttleMs?: number })[];\n throttleMs?: number;\n log?: (...args: any[]) => void;\n } = {}\n ) {\n if (!options.paths) {\n this.paths = [{ path: [], throttleMs: options.throttleMs }];\n } else {\n this.paths = options.paths.map((p) => ({\n path: (typeof p === 'object' ? p.path : p).split('.'),\n throttleMs: (typeof p === 'object' ? p.throttleMs : undefined) ?? options.throttleMs,\n }));\n }\n\n this.paths.sort((a, b) => b.path.length - a.path.length);\n this.watch();\n }\n\n private async load() {\n try {\n const storage = this.storage;\n\n let keys;\n if ('keys' in storage) {\n keys = await storage.keys();\n } else {\n const length = storage.length instanceof Function ? await storage.length() : storage.length;\n keys = new Array<string>();\n for (let i = 0; i < length; i++) {\n const key = await storage.key(i);\n if (key !== null) keys.push(key);\n }\n }\n keys.sort((a, b) => a.length - b.length);\n\n const patches = new Array<Patch & { persist: StorePersist<T> }>();\n for (const key of keys) {\n const value = await storage.getItem(key);\n if (value) {\n patches.push({\n path: key.split('.'),\n op: 'replace',\n value: value === 'undefined' ? undefined : JSON.parse(value),\n persist: this,\n });\n }\n }\n\n if (this.isStopped) {\n return false;\n }\n\n if (patches.length > 0) {\n this.store.applyPatches(patches);\n }\n\n this.isInitialized = true;\n if (this.replayPatches.length > 0) {\n this.store.applyPatches(this.replayPatches);\n this.replayPatches = [];\n }\n\n return true;\n } catch (e) {\n (this.options.log ?? console.error)('Failed to load storePersist:', e);\n return false;\n }\n }\n\n private watch() {\n this.sub = this.store.subscribePatches((patches) => {\n for (const patch of patches) {\n if ((patch as any).persist === this) {\n continue;\n } else if (this.isInitialized === true) {\n this.addToSaveQueue(patch.path);\n } else {\n this.replayPatches.push(patch);\n }\n }\n });\n }\n\n private addToSaveQueue(path: Path) {\n const match = this.paths.find((p) => isAncestor(p.path, path));\n if (!match) return;\n\n path = path.slice(0, match.path.length);\n const t = Date.now() + (match.throttleMs ?? 0);\n\n if (this.saveQueue.some((i) => i.t <= t && isAncestor(i.path, path))) return;\n this.saveQueue.push({ path, t });\n this.saveQueue.sort((a, b) => a.t - b.t);\n this.run();\n }\n\n private async run() {\n if (this.saveTimeout) clearTimeout(this.saveTimeout);\n const next = this.saveQueue[0];\n\n if (!next) return;\n if (next.t > Date.now()) {\n this.saveTimeout = setTimeout(() => this.run(), next.t - Date.now());\n return;\n }\n\n try {\n this.isSaving = true;\n this.saveQueue.shift();\n await this.save(next.path);\n } finally {\n this.isSaving = false;\n this.run();\n }\n }\n\n private async save(path: Path) {\n const { store, storage } = this;\n let value = get(store.getState(), path);\n\n const subPaths = this.paths\n .filter((p) => isAncestor(path, p.path) && p.path.length > path.length)\n .map((p) => p.path.slice(path.length));\n\n const subValues = new Array<{ path: Path; value: unknown }>();\n for (const subPath of subPaths) {\n const result = split(value, subPath);\n value = result[0];\n subValues.push(...result[1].map((s) => ({ path: [...path, ...s.path], value: s.value })));\n }\n\n const result = storage.setItem(path.join('.'), JSON.stringify(value) ?? 'undefined');\n if (result instanceof Promise) await result;\n for (const { path, value } of subValues) {\n const result = storage.setItem(path.join('.'), JSON.stringify(value) ?? 'undefined');\n if (result instanceof Promise) await result;\n }\n }\n\n stop(): void {\n this.isStopped = true;\n this.sub?.();\n }\n}\n","export function hash(arg: unknown): string {\n return JSON.stringify({ arg }, (_key, value) => {\n if (value instanceof Object && !(value instanceof Array)) {\n const obj: any = {};\n for (const key of Object.keys(value).sort()) {\n obj[key] = value[key as keyof typeof value];\n }\n return obj;\n }\n return value;\n });\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n var envHasBigInt64Array = typeof BigInt64Array !== 'undefined';\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n if ((a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n for (i of a.entries())\n if (!b.has(i[0])) return false;\n for (i of a.entries())\n if (!equal(i[1], b.get(i[0]))) return false;\n return true;\n }\n\n if ((a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n for (i of a.entries())\n if (!b.has(i[0])) return false;\n return true;\n }\n\n if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n continue;\n }\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","type FilterString<T> = T extends string ? T : never;\n\nexport declare type SelectorPaths<T> = FilterString<\n keyof {\n [K in keyof NonNullable<T> as\n | K\n | (0 extends 1 & NonNullable<T>[K]\n ? `${FilterString<K>}.${any}`\n : NonNullable<NonNullable<T>[K]> extends Record<string, unknown>\n ? `${FilterString<K>}.${SelectorPaths<NonNullable<T>[K]>}`\n : never)]: 1;\n }\n>;\n\ntype Value<T, K> = K extends keyof T ? T[K] : K extends keyof NonNullable<T> ? NonNullable<T>[K] | undefined : undefined;\n\nexport type SelectorValue<T, K> = K extends `${infer K}.${infer Rest}` ? SelectorValue<Value<T, K>, Rest> : Value<T, K>;\n\nexport function createSelector<T, S>(stringSelector: string): (state: T) => S {\n const parts = stringSelector.split('.');\n return (state) => parts.reduce<any>((v, p) => (v instanceof Object && p in v ? v[p as keyof typeof v] : undefined), state);\n}\n\nexport function setWithSelector(state: unknown, stringSelector: string, value: unknown): void {\n const parts = stringSelector.split('.');\n const prefix = parts.slice(0, -1);\n const last = parts[parts.length - 1]!;\n\n for (const part of prefix) {\n if (state instanceof Object && part in state) {\n state = state[part as keyof typeof state];\n } else {\n throw Error(`Could not set ${stringSelector} because path ${stringSelector} doesn't exist`);\n }\n }\n\n if (state instanceof Object) {\n state[last as keyof typeof state] = value as any;\n } else {\n throw Error(`Could not set ${stringSelector} because path ${stringSelector} doesn't exist`);\n }\n}\n","export function throttle<Args extends any[]>(fn: (...args: Args) => void, ms: number): (...args: Args) => void {\n let last = 0;\n let lastArgs: Args | undefined;\n let timeout: ReturnType<typeof setTimeout> | undefined;\n\n function run() {\n const args = lastArgs;\n\n last = Date.now();\n lastArgs = undefined;\n timeout = undefined;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n fn(...args!);\n }\n\n return function (...args: Args) {\n const now = Date.now();\n lastArgs = args;\n\n if (timeout) {\n // do nothing\n } else if (now < last + ms) {\n timeout = setTimeout(run, last + ms - now);\n } else {\n run();\n }\n };\n}\n","import eq from 'fast-deep-equal/es6/react';\nimport { applyPatches, Draft, enableMapSet, enablePatches, freeze, Patch, produce } from 'immer';\nimport { Cancel } from './helpers/misc';\nimport { createSelector, SelectorPaths, SelectorValue } from './helpers/stringSelector';\nimport { throttle as throttleFn } from './helpers/throttle';\n\nexport type StoreOptions = {\n /** Log errors. Default: console.error */\n log?: (...data: any[]) => void;\n};\n\nexport type StoreSubscribeOptions = {\n /** Invoke callback immediately with the current value? Default: true */\n runNow?: boolean;\n /** Throttle invocations of callback. */\n throttle?: number;\n /** Comparison function to determine if the data has changed. Default: fast-deep-equal */\n compare?: (a: any, b: any) => boolean;\n};\n\nexport type StoreAddReactionOptions = {\n /** Invoke callback immediately with the current value? Default: true */\n runNow?: boolean;\n /** Comparison function to determine if the data has changed. Default: fast-deep-equal */\n compare?: (a: any, b: any) => boolean;\n};\n\nconst RESTART_UPDATE = Symbol('RESTART_UPDATE');\n\nexport class Store<T> {\n private subscriptions = new Set<(state: T, patches: Patch[]) => void>();\n private batchCounter = 0;\n private reactions = new Set<() => void>();\n private patches = new Array<Patch>();\n private lock?: 'reaction';\n private options;\n\n constructor(private state: T, { log = (...data: any[]) => console.error(...data) }: StoreOptions = {}) {\n freeze(state, true);\n enableMapSet();\n enablePatches();\n\n this.options = {\n log,\n };\n }\n\n getState(): T {\n return this.state;\n }\n\n update(update: (draft: Draft<T>, original: T) => Draft<T> | void | undefined): void {\n this.checkLock();\n\n this.state = produce(\n this.state,\n (draft) => update(draft, this.state),\n (patches) => this.patches.push(...patches)\n );\n\n this.notify();\n }\n\n set(state: T): void {\n this.checkLock();\n\n this.state = produce(\n this.state,\n () => state,\n (patches) => this.patches.push(...patches)\n ) as T;\n\n this.notify();\n }\n\n applyPatches(patches: Patch[]): void {\n this.checkLock();\n\n this.state = applyPatches(this.state, patches);\n this.patches.push(...patches);\n\n this.notify();\n }\n\n batchUpdates(fn: () => void): void {\n try {\n this.batchCounter++;\n fn();\n } finally {\n this.batchCounter--;\n if (this.batchCounter === 0) {\n this.notify();\n }\n }\n }\n\n subscribe(listener: (value: T, prev: T, state: T) => void, options?: StoreSubscribeOptions): Cancel;\n subscribe<S>(selector: (state: T) => S, listener: (value: S, prev: S, state: T) => void, options?: StoreSubscribeOptions): Cancel;\n subscribe<K extends SelectorPaths<T>>(\n selector: K,\n listener: (value: SelectorValue<T, K>, prev: SelectorValue<T, K>, state: T) => void,\n options?: StoreSubscribeOptions\n ): Cancel;\n subscribe<S>(...args: any[]): Cancel {\n let selector: (state: T) => S, listener: (value: S, prev: S, state: T) => void, options: StoreSubscribeOptions | undefined;\n\n if (args[1] instanceof Function) {\n [selector, listener, options] = args;\n if (typeof selector === 'string') {\n selector = createSelector<T, S>(selector);\n }\n } else {\n [selector, listener, options] = [(x) => x as any, ...args];\n }\n\n const { runNow = true, throttle = 0, compare = eq } = options ?? {};\n const throttledListener = throttle ? throttleFn(listener, throttle) : listener;\n\n let value = selector(this.state);\n\n const internalListener = (state: T, _patches: Patch[], init?: boolean) => {\n try {\n const oldValue = value;\n value = selector(state);\n if (!init && compare(value, oldValue)) return;\n (init ? listener : throttledListener)(value, oldValue, this.state);\n } catch (e) {\n this.options.log('Failed to execute listener:', e);\n }\n };\n\n this.subscriptions.add(internalListener);\n if (runNow) internalListener(this.state, [], true);\n return () => {\n this.subscriptions.delete(internalListener);\n };\n }\n\n addReaction(reaction: (value: T, draft: Draft<T>, original: T, prev: T) => void, options?: StoreAddReactionOptions): Cancel;\n addReaction<S>(\n selector: (state: T) => S,\n reaction: (value: S, draft: Draft<T>, original: T, prev: S) => void,\n options?: StoreAddReactionOptions\n ): Cancel;\n addReaction<K extends SelectorPaths<T>>(\n selector: K,\n reaction: (value: SelectorValue<T, K>, draft: Draft<T>, original: T, prev: SelectorValue<T, K>) => void,\n options?: StoreAddReactionOptions\n ): Cancel;\n addReaction<S>(...args: any[]): Cancel {\n let selector: (state: T) => S,\n reaction: (value: S, draft: Draft<T>, original: T, prev: S) => void,\n options: StoreAddReactionOptions | undefined;\n\n if (args[1] instanceof Function) {\n [selector, reaction, options] = args;\n if (typeof selector === 'string') {\n selector = createSelector<T, S>(selector);\n }\n } else {\n [selector, reaction, options] = [(x) => x as any, ...args];\n }\n const { runNow = true, compare = eq } = options ?? {};\n\n let value = selector(this.state);\n\n const internalListener = (init?: boolean) => {\n let hasChanged = false;\n\n try {\n this.lock = 'reaction';\n const oldValue = value;\n value = selector(this.state);\n if (!init && compare(value, oldValue)) return;\n\n this.state = produce(\n this.state,\n (draft) => reaction(value, draft, this.state, oldValue),\n (patches) => {\n hasChanged = true;\n this.patches.push(...patches);\n }\n );\n } catch (e) {\n this.options.log('Failed to execute reaction:', e);\n } finally {\n delete this.lock;\n }\n\n if (hasChanged && !init) throw RESTART_UPDATE;\n if (hasChanged && init) this.notify();\n };\n\n this.reactions.add(internalListener);\n if (runNow) internalListener(true);\n return () => {\n this.reactions.delete(internalListener);\n };\n }\n\n subscribePatches(listener: (patches: Patch[]) => void): Cancel {\n const internalListener = (_state: T, patches: Patch[]) => {\n try {\n listener(patches);\n } catch (e) {\n this.options.log('Failed to execute patch listener:', e);\n }\n };\n\n this.subscriptions.add(internalListener);\n return () => {\n this.subscriptions.delete(internalListener);\n };\n }\n\n private checkLock() {\n if (this.lock === 'reaction') {\n throw Error('You cannot call update from within a reaction. Use the passed draft instead.');\n }\n }\n\n private notify(): void {\n if (this.batchCounter > 0 || this.patches.length === 0) return;\n\n try {\n for (const reaction of this.reactions) {\n reaction();\n }\n } catch (e) {\n return this.notify();\n }\n\n const patches = this.patches;\n this.patches = [];\n\n this.batchUpdates(() => {\n for (const subscription of this.subscriptions) {\n subscription(this.state, patches);\n }\n });\n }\n}\n","/** @license React vundefined\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/** @license React vundefined\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","import eq from 'fast-deep-equal/es6/react';\nimport { useCallback, useDebugValue } from 'react';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';\nimport { StoreSubscribeOptions } from '..';\nimport { createSelector, SelectorPaths, SelectorValue } from '../helpers/stringSelector';\nimport { Store } from './store';\n\nexport type UseStoreStateOptions = Omit<StoreSubscribeOptions, 'runNow'>;\n\nexport function useStoreState<T>(store: Store<T>, options?: UseStoreStateOptions): T;\nexport function useStoreState<T, S>(store: Store<T>, selector: (state: T) => S, options?: UseStoreStateOptions): S;\nexport function useStoreState<T, K extends SelectorPaths<T>>(\n store: Store<T>,\n selector: K,\n options?: UseStoreStateOptions\n): SelectorValue<T, K>;\nexport function useStoreState<T, S>(store: Store<T>, ...args: any[]): S {\n let selector: (state: T) => S, options: UseStoreStateOptions;\n\n if (args[0] instanceof Function) {\n selector = args[0];\n options = args[1] ?? {};\n } else if (typeof args[0] === 'string') {\n selector = createSelector(args[0]);\n options = args[1] ?? {};\n } else {\n selector = (x) => x as any;\n options = args[0] ?? {};\n }\n\n const subscribe = useCallback(\n (listener: () => void) => {\n return store.subscribe((x) => x, listener, {\n throttle: options.throttle,\n runNow: false,\n compare: (a, b) => a === b,\n });\n },\n [store, options.throttle]\n );\n\n const getSnapshot = useCallback(() => store.getState(), [store]);\n\n const value = useSyncExternalStoreWithSelector(\n //\n subscribe,\n getSnapshot,\n getSnapshot,\n selector,\n options.compare ?? eq\n );\n\n useDebugValue(value);\n return value;\n}\n","import { SelectorPaths, SelectorValue, setWithSelector } from '../helpers/stringSelector';\nimport { Store } from './store';\nimport { useStoreState } from './useStoreState';\n\nexport type UseStorePropResult<T, K extends SelectorPaths<T>> = [value: SelectorValue<T, K>, update: (value: SelectorValue<T, K>) => void];\n\nexport function useStoreProp<T, K extends SelectorPaths<T>>(store: Store<T>, selector: K): UseStorePropResult<T, K> {\n const value = useStoreState(store, selector);\n const update = (value: SelectorValue<T, K>) => store.update((state) => setWithSelector(state, selector, value));\n\n return [value, update];\n}\n","import { Store as BaseStore } from '../store';\nimport { SelectorPaths, SelectorValue } from '../helpers/stringSelector';\nimport { useStoreProp, UseStorePropResult } from './useStoreProp';\nimport { useStoreState, UseStoreStateOptions } from './useStoreState';\n\nexport class Store<T> extends BaseStore<T> {\n useState(options?: { throttle?: number }): T;\n useState<S>(selector: (state: T) => S, options?: UseStoreStateOptions): S;\n useState<K extends SelectorPaths<T>>(selector: K, options?: UseStoreStateOptions): SelectorValue<T, K>;\n useState(...args: any[]): any {\n return useStoreState(this, ...args);\n }\n\n useProp<K extends SelectorPaths<T>>(selector: K): UseStorePropResult<T, K> {\n return useStoreProp(this, selector);\n }\n}\n","import React, { Context, createContext, ReactNode, useContext, useMemo } from 'react';\nimport { SelectorPaths, SelectorValue } from '../helpers/stringSelector';\nimport { Store } from './store';\nimport { useStoreProp, UseStorePropResult } from './useStoreProp';\nimport { useStoreState, UseStoreStateOptions } from './useStoreState';\n\nexport class StoreScope<T> {\n readonly context: Context<Store<T>>;\n\n constructor(public readonly defaultValue: T) {\n this.context = createContext(new Store(defaultValue));\n }\n\n Provider = ({ children, store }: { children: ReactNode; store?: Store<T> }): JSX.Element => {\n const _store = useMemo(() => store ?? new Store(this.defaultValue), [store]);\n\n return <this.context.Provider value={_store}>{children}</this.context.Provider>;\n };\n\n withScope = <Args extends Record<string, unknown>>(Component: (args: Args) => JSX.Element) => {\n return (args: Args): JSX.Element => (\n <this.Provider>\n <Component {...args} />\n </this.Provider>\n );\n };\n\n useStore(): Store<T> {\n return useContext(this.context);\n }\n\n useState(options?: { throttle?: number }): T;\n useState<S>(selector: (state: T) => S, dependencies?: any[], options?: { throttle?: number }): S;\n useState<K extends SelectorPaths<T>>(selector: K, options?: UseStoreStateOptions): SelectorValue<T, K>;\n useState(...args: any[]): any {\n const store = this.useStore();\n return useStoreState(store, ...args);\n }\n\n useProp<K extends SelectorPaths<T>>(selector: K): UseStorePropResult<T, K> {\n const store = this.useStore();\n return useStoreProp(store, selector);\n }\n}\n","import eq from 'fast-deep-equal/es6/react';\nimport { useCallback, useDebugValue, useEffect } from 'react';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';\nimport { ResourceInfo, ResourceInstance, ResourceSubscribeOptions } from '..';\nimport { hash } from '../helpers/hash';\n\nexport type UseResource<Value> = Pick<ResourceInstance<unknown, Value>, 'id' | 'invalidateCache' | 'subscribe' | 'getCache' | 'get'>;\n\nexport type UseResourceOptions = Omit<ResourceSubscribeOptions, 'runNow'> & {\n /** Invalidate the resource on mount, causing it to update in the background */\n updateOnMount?: boolean;\n /** Don't subscribe resource while this is true */\n dormant?: boolean;\n};\n\n/** Subscribe to a resource. This will immediately return cached values, if available, and update for future updates.\n * @param resource the resource to subscribe to.\n * @param options options\n */\nexport function useResource<Value>(resource: UseResource<Value>, options?: UseResourceOptions): ResourceInfo<Value> {\n const { compare, dormant, throttle, updateOnMount, watchOnly } = options ?? {};\n\n useEffect(() => {\n if (updateOnMount && !dormant) {\n resource.invalidateCache();\n }\n }, []);\n\n const subscribe = useCallback(\n (listener: () => void) => {\n if (dormant)\n return () => {\n // nothing to do\n };\n\n return resource.subscribe(listener, {\n watchOnly,\n throttle,\n runNow: false,\n compare,\n });\n },\n [resource.id, watchOnly, dormant, throttle]\n );\n\n const getSnapshot = useCallback(() => resource.getCache(), [resource.id]);\n\n let value = useSyncExternalStoreWithSelector(\n //\n subscribe,\n getSnapshot,\n getSnapshot,\n (x) => x,\n eq\n );\n\n if (dormant) {\n value = { state: 'empty', isLoading: false };\n }\n\n useDebugValue(value);\n return value;\n}\n\n/** Subscribe to a resource. This will immediately return cached values, if available, and update for future updates. While waiting for data, it throws so that the Component will be suspended. If there is an error, it throws.\n * @param resource the resource to subscribe to.\n * @param options options\n */\nexport function useReadResource<Value>(resource: UseResource<Value>, options?: UseResourceOptions): Value {\n const info = useResource(resource, options);\n\n if (info.state === 'error') {\n throw info.error;\n }\n\n if (info.state === 'empty') {\n throw resource.get();\n }\n\n useDebugValue(info.value);\n return info.value;\n}\n\nexport type CombineValues<T> = T extends [UseResource<infer Value>]\n ? [Value]\n : T extends [UseResource<infer Value>, ...infer Rest]\n ? [Value, ...CombineValues<Rest>]\n : T extends readonly UseResource<infer Value>[]\n ? Value[]\n : any[];\n\n/** Combine multiple resources into one that can be fed into useResource or useReadResource. Return value will be an array of the combined resources' values.\n * @param resources resources to be combined\n */\nexport function combineResources<Resources extends readonly UseResource<any>[]>(\n ...resources: Resources\n): UseResource<CombineValues<Resources>> {\n return {\n id: hash(resources.map((resource) => resource.id)),\n\n invalidateCache() {\n for (const resource of resources) {\n resource.invalidateCache();\n }\n },\n\n subscribe(listener, options) {\n const handles = resources.map((resource) => resource.subscribe(listener, options));\n\n return () => {\n for (const handle of handles) {\n handle();\n }\n };\n },\n\n getCache() {\n const caches = resources.map((resource) => resource.getCache());\n const isStale = caches.some((cache) => cache.isStale);\n const isLoading = caches.some((cache) => cache.isLoading);\n\n if (caches.some((resource) => resource.state === 'error')) {\n const error = caches.find((cache) => cache.error !== undefined)?.error;\n return { state: 'error', error, isStale, isLoading };\n }\n\n if (caches.every((resource) => resource.state === 'value')) {\n const value = caches.map((cache) => cache.value) as CombineValues<Resources>;\n return { state: 'value', value, isStale, isLoading };\n }\n\n return { state: 'empty', isLoading };\n },\n\n get() {\n return Promise.all(resources.map((resource) => resource.get())) as Promise<CombineValues<Resources>>;\n },\n };\n}\n","import { Store } from 'schummar-state/react';\nimport type { PartialTableTheme } from '../types';\n\nexport const globalTableTheme = new Store<PartialTableTheme>({});\n\nexport function configureTableTheme(tableTheme: PartialTableTheme) {\n globalTableTheme.set(tableTheme);\n}\n\nexport function mergeThemes<T>(...themes: PartialTableTheme<T>[]): PartialTableTheme<T> {\n return {\n text: Object.assign({}, ...themes.map((theme) => theme.text)),\n classes: Object.assign({}, ...themes.map((theme) => theme.classes)),\n styles: Object.assign({}, ...themes.map((theme) => theme.styles)),\n components: Object.assign({}, ...themes.map((theme) => theme.components)),\n icons: Object.assign({}, ...themes.map((theme) => theme.icons)),\n colors: {\n primary: Object.assign({}, ...themes.map((theme) => theme.colors?.primary)),\n secondary: Object.assign({}, ...themes.map((theme) => theme.colors?.secondary)),\n blocked: Object.assign({}, ...themes.map((theme) => theme.colors?.blocked)),\n background: themes\n .map((theme) => theme.colors?.background)\n .reverse()\n .find((x) => x !== undefined),\n text: themes\n .map((theme) => theme.colors?.text)\n .reverse()\n .find((x) => x !== undefined),\n border: themes\n .map((theme) => theme.colors?.border)\n .reverse()\n .find((x) => x !== undefined),\n borderLight: themes\n .map((theme) => theme.colors?.borderLight)\n .reverse()\n .find((x) => x !== undefined),\n },\n spacing: themes\n .map((theme) => theme.spacing)\n .reverse()\n .find((x) => x !== undefined),\n };\n}\n","import { ReactNode, createContext, useContext } from 'react';\nimport CsvExporter from '../exporters/csvExporter';\nimport { ExporterEntry } from '../exporters/exporter';\nimport { PartialTableTheme } from '../types';\n\nexport interface TableSettingsContextType {\n theme: PartialTableTheme;\n exporters: ExporterEntry[];\n}\n\nexport const TableSettingsContext = createContext<TableSettingsContextType>({\n theme: {},\n exporters: [\n { action: 'copy', exporter: new CsvExporter() },\n { action: 'download', exporter: new CsvExporter() },\n ],\n});\n\nexport function TableSettingsProvider({\n theme,\n exporters,\n additionalExporters,\n children,\n}: Partial<TableSettingsContextType> & {\n additionalExporters?: ExporterEntry[];\n children?: ReactNode;\n}) {\n const inherited = useContext(TableSettingsContext);\n theme ??= inherited.theme;\n exporters ??= inherited.exporters;\n\n if (additionalExporters) {\n exporters = [...exporters, ...additionalExporters];\n }\n\n return (\n <TableSettingsContext.Provider\n value={{\n theme,\n exporters,\n }}\n >\n {children}\n </TableSettingsContext.Provider>\n );\n}\n"],"mappings":";;;;;;;;;AAAA,SAAS,iBAAiB,QAAQ,gBAAgB;AAClD,SAAS,oBAAoB;;;ACD7B,SAAS,WAAW;AAEpB,IAAM,OAAO,IAAI;AAAA,EACf,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,YAAY;AAAA,EAEZ,iBAAiB;AAAA,IACf,SAAS;AAAA,EACX;AACF,CAAC;AAEM,IAAM,iBAAiB;AAAA,EAC5B,OAAO,IAAI;AAAA,IACT,UAAU;AAAA,IACV,SAAS;AAAA,IACT,OAAO;AAAA,EACT,CAAC;AAAA,EAED;AAAA,EAEA,UAAU,IAAI;AAAA,IACZ,cAAc;AAAA,IACd,YAAY;AAAA,EACd,CAAC;AAAA,EAED,YAAY,IAAI,MAAM;AAAA,IACpB,cAAc;AAAA,IAEd,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF,CAAC;AAAA,EAED,YAAY,IAAI,MAAM;AAAA,IACpB,SAAS;AAAA,IACT,WAAW;AAAA,IACX,cAAc;AAAA,EAChB,CAAC;AAAA,EAED,WAAW,IAAI;AAAA,IACb,gBAAgB;AAAA,EAClB,CAAC;AAAA,EAED,QAAQ,IAAI;AAAA,IACV,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,EACV,CAAC;AAAA,EAED,cAAc,IAAI;AAAA,IAChB,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV,CAAC;AAAA,EAED,YAAY,IAAI;AAAA,IACd,cAAc;AAAA,IACd,YAAY;AAAA,EACd,CAAC;AAAA,EAED,YAAY,IAAI;AAAA,IACd,WAAW;AAAA,IACX,YAAY;AAAA,EACd,CAAC;AAAA,EAED,MAAM,IAAI;AAAA,IACR,UAAU;AAAA,IACV,UAAU;AAAA,IACV,cAAc;AAAA,EAChB,CAAC;AAAA,EAED,MAAM,IAAI;AAAA,IACR,cAAc;AAAA,IACd,WAAW;AAAA,IACX,YAAY;AAAA,EACd,CAAC;AAAA,EAED,oBAAoB,IAAI;AAAA,IACtB,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,QAAQ;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,QAAQ;AAAA,IACV;AAAA,EACF,CAAC;AAAA,EAED,SAAS,IAAI,MAAM;AAAA,IACjB,YAAY;AAAA,IACZ,YAAY;AAAA,EACd,CAAC;AACH;;;ADHM,SAQE,UARF,KAQE,YARF;AA5FN,IAAM,SAAS;AACf,IAAM,aAAa;AAEZ,IAAM,UAA+C,CAAC;AAAA,EAC3D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,SAAS,OAAuB,IAAI;AAC1C,QAAM,CAAC,UAAU,WAAW,IAAI,SAAwC;AACxE,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,SAAS,gBAAgB,eAAe,IAAI,MAAM;AAC7F,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,CAAC;AAEtC,kBAAgB,MAAM;AACpB,QAAI,CAAC,YAAY,CAAC,MAAM;AACtB,kBAAY,MAAS;AACrB;AAAA,IACF;AAEA,QAAI;AAEJ,aAAS,QAAQ;AA/BrB;AAgCM,UAAI,CAAC,SAAU;AACf,YAAM;AAAA,QACJ,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO;AAAA,MACT,IAAI,SAAS,sBAAsB;AACnC,YAAM,EAAE,OAAO,cAAc,EAAE,KAAI,kBAAO,YAAP,mBAAgB,4BAAhB,YAA2C,CAAC;AAC/E,YAAM,gBAAgB,SAAS,gBAAgB;AAC/C,YAAM,iBAAiB,SAAS,gBAAgB;AAEhD,YAAM,OAAO;AAAA,QACX,MACE,UAAU,WACN,aAAa,cAAc,IAAI,cAAc,IAC7C,aACA,KAAK,IAAI,cAAc,cAAc,IAAI,OAAO,mBAAmB,UAAU;AAAA,QACnF,KAAK;AAAA,MACP;AAEA,UAAI,KAAK,OAAO,QAAQ;AACtB,aAAK,OAAO;AAAA,MACd;AACA,UAAI,KAAK,OAAO,cAAc,gBAAgB,QAAQ;AACpD,aAAK,OAAO,gBAAgB,SAAS;AAAA,MACvC;AACA,UAAI,KAAK,MAAM,QAAQ;AACrB,aAAK,MAAM;AAAA,MACb;AAEA,UAAI,KAAK,UAAS,6BAAM,SAAQ,KAAK,SAAQ,6BAAM,MAAK;AACtD,oBAAY,IAAI;AAAA,MAClB;AAEA,mBAAa,iBAAiB,SAAS,KAAK,GAAG;AAE/C,aAAO;AAAA,IACT;AACA,UAAM;AAEN,UAAM,SAAS,YAAY,OAAO,EAAE;AACpC,WAAO,MAAM;AACX,oBAAc,MAAM;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,UAAU,MAAM,KAAK,CAAC;AAE1B,WAAS,aAAa,KAA4B;AA7EpD;AA8EI,UAAM,YAAY,CAAC;AACnB,aAAS,OAAO,2BAAK,eAAe,MAAM,OAAO,KAAK,eAAe;AACnE,gBAAU,KAAK,IAAI;AAAA,IACrB;AAEA,eAAW,QAAQ,UAAU,QAAQ,GAAG;AACtC,YAAM,SAAQ,cAAS,gBAAT,mBAAsB,iBAAiB,MAAM,iBAAiB;AAE5E,UAAI,SAAS,CAAC,OAAO,MAAM,OAAO,KAAK,CAAC,GAAG;AACzC,kBAAU,OAAO,KAAK,IAAI,CAAC;AAC3B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,CAAC,KAAM,QAAO;AAElB,SACE,iCACE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,KAAK;AAAA,UACH,SAAS;AAAA,QACX;AAAA;AAAA,IACF;AAAA,IAEC;AAAA,MACC,iCACE;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,YACX,KAAK;AAAA,cACH;AAAA,gBACE,UAAU;AAAA,gBACV,MAAM;AAAA,gBACN,OAAO;AAAA,gBACP,KAAK;AAAA,gBACL,QAAQ;AAAA,gBACR;AAAA,cACF;AAAA,cACA,UAAU,EAAE,SAAS,OAAO;AAAA,YAC9B;AAAA,YACA,SAAS,MAAM,QAAQ;AAAA;AAAA,QACzB;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL;AAAA,YACA,KAAK;AAAA,cACH,eAAe;AAAA,cACf;AAAA,gBACE,UAAU;AAAA,gBACV,UAAU,SAAS,gBAAgB,cAAc,IAAI;AAAA,gBACrD;AAAA,iBACG,WAJL;AAAA,gBAKE,QAAQ,SAAS;AAAA,gBACjB,WAAW;AAAA,gBACX,OAAO;AAAA,cACT;AAAA,cACA,UAAU,EAAE,SAAS,OAAO;AAAA,cAC5B,CAAC,YAAY,EAAE,YAAY,SAAS;AAAA,YACtC;AAAA,YAEC;AAAA;AAAA,QACH;AAAA,SACF;AAAA,MACA,SAAS;AAAA,IACX;AAAA,KACF;AAEJ;;;;IK3IA,QAAiB,SAAA,MAAe,GAAG,GAAG;AACpC,MAAI,MAAM;AAAG,WAAO;AAEpB,MAAI,KAAK,KAAK,OAAO,KAAK,YAAY,OAAO,KAAK,UAAU;AAC1D,QAAI,EAAE,gBAAgB,EAAE;AAAa,aAAO;AAE5C,QAAI,QAAQ,GAAG;AACf,QAAI,MAAM,QAAQ,CAAA,GAAI;AACpB,eAAS,EAAE;AACX,UAAI,UAAU,EAAE;AAAQ,eAAO;AAC/B,WAAK,IAAI,QAAQ,QAAQ;AACvB,YAAI,CAAC,MAAM,EAAE,CAAA,GAAI,EAAE,CAAA,CAAA;AAAK,iBAAO;AACjC,aAAO;IAAA;AAIT,QAAK,aAAa,OAAS,aAAa,KAAM;AAC5C,UAAI,EAAE,SAAS,EAAE;AAAM,eAAO;AAC9B,WAAK,KAAK,EAAE,QAAA;AACV,YAAI,CAAC,EAAE,IAAI,EAAE,CAAA,CAAA;AAAK,iBAAO;AAC3B,WAAK,KAAK,EAAE,QAAA;AACV,YAAI,CAAC,MAAM,EAAE,CAAA,GAAI,EAAE,IAAI,EAAE,CAAA,CAAA,CAAA;AAAM,iBAAO;AACxC,aAAO;IAAA;AAGT,QAAK,aAAa,OAAS,aAAa,KAAM;AAC5C,UAAI,EAAE,SAAS,EAAE;AAAM,eAAO;AAC9B,WAAK,KAAK,EAAE,QAAA;AACV,YAAI,CAAC,EAAE,IAAI,EAAE,CAAA,CAAA;AAAK,iBAAO;AAC3B,aAAO;IAAA;AAGT,QAAI,YAAY,OAAO,CAAA,KAAM,YAAY,OAAO,CAAA,GAAI;AAClD,eAAS,EAAE;AACX,UAAI,UAAU,EAAE;AAAQ,eAAO;AAC/B,WAAK,IAAI,QAAQ,QAAQ;AACvB,YAAI,EAAE,CAAA,MAAO,EAAE,CAAA;AAAI,iBAAO;AAC5B,aAAO;IAAA;AAIT,QAAI,EAAE,gBAAgB;AAAQ,aAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE;AAC5E,QAAI,EAAE,YAAY,OAAO,UAAU;AAAS,aAAO,EAAE,QAAA,MAAc,EAAE,QAAA;AACrE,QAAI,EAAE,aAAa,OAAO,UAAU;AAAU,aAAO,EAAE,SAAA,MAAe,EAAE,SAAA;AAExE,WAAO,OAAO,KAAK,CAAA;AACnB,aAAS,KAAK;AACd,QAAI,WAAW,OAAO,KAAK,CAAA,EAAG;AAAQ,aAAO;AAE7C,SAAK,IAAI,QAAQ,QAAQ;AACvB,UAAI,CAAC,OAAO,UAAU,eAAe,KAAK,GAAG,KAAK,CAAA,CAAA;AAAK,eAAO;AAEhE,SAAK,IAAI,QAAQ,QAAQ,KAAI;AAC3B,UAAI,MAAM,KAAK,CAAA;AAEf,UAAI,QAAQ,YAAY,EAAE,UAAU;AAIlC;MAAA;AAGF,UAAI,CAAC,MAAM,EAAE,GAAA,GAAM,EAAE,GAAA,CAAA;AAAO,eAAO;IAAA;AAGrC,WAAO;EAAA;AAIT,SAAO,MAAI,KAAK,MAAI;AAAA;wBC3De,gBAAyC;QACtE,QAAQ,eAAe,MAAM,GAAA;SAC5B,CAAC,UAAU,MAAM,OAAY,CAACA,IAAGC,OAAOD,cAAa,UAAUC,MAAKD,KAAIA,GAAEC,EAAA,IAAuB,QAAY,KAAA;AAAA;yBAGtF,OAAgB,gBAAwB,OAAsB;QACtF,QAAQ,eAAe,MAAM,GAAA;QAC7B,SAAS,MAAM,MAAM,GAAG,EAAA;QACxB,OAAO,MAAM,MAAM,SAAS,CAAA;aAEvB,QAAQ,QAAQ;QACrB,iBAAiB,UAAU,QAAQ,OAAO;cACpC,MAAM,IAAA;IAAA,OACT;YACC,MAAM,iBAAiB,cAAA,iBAA+B,cAAA,gBAAA;IAAA;EAAA;MAI5D,iBAAiB,QAAQ;UACrB,IAAA,IAA8B;EAAA,OAC/B;UACC,MAAM,iBAAiB,cAAA,iBAA+B,cAAA,gBAAA;EAAA;AAAA;kBCvCnB,IAA6B,IAAqC;MACzG,OAAO;MACP;MACA;iBAEW;UACP,OAAO;WAEN,KAAK,IAAA;eACD;cACD;OAGP,GAAG,IAAA;EAAA;SAGD,YAAa,MAAY;UACxB,MAAM,KAAK,IAAA;eACN;QAEP;AAAS;aAEF,MAAM,OAAO,IAAI;gBAChB,WAAW,KAAK,OAAO,KAAK,GAAA;IAAA,OACjC;;;;;ACGX,IAAM,iBAAiB,OAAO,gBAAA;kBAER;EAQpB,YAAoB,OAAU,EAAE,MAAM,IAAI,SAAgB,QAAQ,MAAM,GAAG,IAAA,EAAA,IAAwB,CAAA,GAAI;;yBAP/E,oBAAI,IAAA;wBACL;qBACH,oBAAI,IAAA;mBACN,IAAI,MAAA;WAKb,OAAO,IAAA;;;SAIT,UAAU;MACb;IAAA;EAAA;EAIJ,WAAc;WACL,KAAK;EAAA;EAGd,OAAO,QAA6E;SAC7E,UAAA;SAEA,QAAQ,QACX,KAAK,OACL,CAAC,UAAU,OAAO,OAAO,KAAK,KAAA,GAC9B,CAAC,YAAY,KAAK,QAAQ,KAAK,GAAG,OAAA,CAAA;SAG/B,OAAA;EAAA;EAGP,IAAI,OAAgB;SACb,UAAA;SAEA,QAAQ,QACX,KAAK,OACL,MAAM,OACN,CAAC,YAAY,KAAK,QAAQ,KAAK,GAAG,OAAA,CAAA;SAG/B,OAAA;EAAA;EAGP,aAAa,SAAwB;SAC9B,UAAA;SAEA,QAAQ,aAAa,KAAK,OAAO,OAAA;SACjC,QAAQ,KAAK,GAAG,OAAA;SAEhB,OAAA;EAAA;EAGP,aAAa,IAAsB;QAC7B;WACG;;;WAGA;UACD,KAAK,iBAAiB,GAAG;aACtB,OAAA;MAAA;IAAA;EAAA;EAYX,aAAgB,MAAqB;QAC/B,UAA2B,UAAiD;QAE5E,KAAK,CAAA,aAAc,UAAU;OAC9B,UAAU,UAAU,OAAA,IAAW;UAC5B,OAAO,aAAa,UAAU;mBACrB,eAAqB,QAAA;MAAA;IAAA,OAE7B;OACJ,UAAU,UAAU,OAAA,IAAW,CAAC,CAAC,MAAM,GAAU,GAAG,IAAA;IAAA;UAGjD,EAAE,SAAS,MAAA,UAAMC,aAAW,GAAG,UAAUC,MAAAA,IAAO,WAAA,OAAA,UAAW,CAAA;UAC3D,oBAAoBD,aAAWE,SAAW,UAAUF,UAAAA,IAAY;QAElE,QAAQ,SAAS,KAAK,KAAA;UAEpB,mBAAmB,CAAC,OAAU,UAAmB,SAAmB;UACpE;cACI,WAAW;gBACT,SAAS,KAAA;YACb,CAAC,QAAQ,QAAQ,OAAO,QAAA;;AAC3B,SAAA,OAAO,WAAW,mBAAmB,OAAO,UAAU,KAAK,KAAA;MAAA,SACrDG,IAAA;aACF,QAAQ,IAAI,+BAA+BA,EAAA;MAAA;IAAA;SAI/C,cAAc,IAAI,gBAAA;QACnB;uBAAyB,KAAK,OAAO,CAAA,GAAI,IAAA;WACtC,MAAM;WACN,cAAc,OAAO,gBAAA;IAAA;EAAA;EAe9B,eAAkB,MAAqB;QACjC,UACF,UACA;QAEE,KAAK,CAAA,aAAc,UAAU;OAC9B,UAAU,UAAU,OAAA,IAAW;UAC5B,OAAO,aAAa,UAAU;mBACrB,eAAqB,QAAA;MAAA;IAAA,OAE7B;OACJ,UAAU,UAAU,OAAA,IAAW,CAAC,CAAC,MAAM,GAAU,GAAG,IAAA;IAAA;UAEjD,EAAE,SAAS,MAAM,UAAUF,MAAAA,IAAO,WAAA,OAAA,UAAW,CAAA;QAE/C,QAAQ,SAAS,KAAK,KAAA;UAEpB,mBAAmB,CAAC,SAAmB;UACvC,aAAa;UAEb;aACG,OAAO;cACN,WAAW;gBACT,SAAS,KAAK,KAAA;YAClB,CAAC,QAAQ,QAAQ,OAAO,QAAA;;aAEvB,QAAQ,QACX,KAAK,OACL,CAAC,UAAU,SAAS,OAAO,OAAO,KAAK,OAAO,QAAA,GAC9C,CAAC,YAAY;uBACE;eACR,QAAQ,KAAK,GAAG,OAAA;QAAA,CAAA;MAAA,SAGlBE,IAAA;aACF,QAAQ,IAAI,+BAA+BA,EAAA;MAAA,UAAA;eAEzC,KAAK;MAAA;UAGV,cAAc,CAAC;cAAY;UAC3B,cAAc;aAAW,OAAA;IAAA;SAG1B,UAAU,IAAI,gBAAA;QACf;uBAAyB,IAAA;WACtB,MAAM;WACN,UAAU,OAAO,gBAAA;IAAA;EAAA;EAI1B,iBAAiB,UAA8C;UACvD,mBAAmB,CAAC,QAAW,YAAqB;UACpD;iBACO,OAAA;MAAA,SACFA,IAAA;aACF,QAAQ,IAAI,qCAAqCA,EAAA;MAAA;IAAA;SAIrD,cAAc,IAAI,gBAAA;WAChB,MAAM;WACN,cAAc,OAAO,gBAAA;IAAA;EAAA;EAItB,YAAY;QACd,KAAK,SAAS,YAAY;YACtB,MAAM,8EAAA;IAAA;EAAA;EAIR,SAAe;QACjB,KAAK,eAAe,KAAK,KAAK,QAAQ,WAAW;;QAEjD;iBACS,YAAY,KAAK,WAAW;;;aAGhCA,IAAA;aACA,KAAK,OAAA;IAAA;UAGR,UAAU,KAAK;SAChB,UAAU,CAAA;SAEV,aAAa,MAAM;iBACX,gBAAgB,KAAK,eAAe;qBAChC,KAAK,OAAO,OAAA;MAAA;IAAA,CAAA;EAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;ACrOpB,IAAI,IAAEC;AAAiB,SAAA,IAAW,IAAE,GAAE;AAAC,SAAO,OAAI,MAAQ,OAAJ,KAAO,IAAE,OAAI,IAAE,MAAI,OAAI,MAAG,MAAI;AAAA;AAAE,IAAI,IAAe,OAAO,OAAO,OAA3B,aAA8B,OAAO,KAAGC;AAA9C,IAAgD,IAAE,EAAE;AAApD,IAA6D,IAAE,EAAE;AAAjE,IAA2EC,MAAE,EAAE;AAA/E,IAA+FC,MAAE,EAAE;AAAc,SAAA,IAAW,IAAE,GAAE;AAAC,MAAI,IAAE,EAAA,GAAI,IAAE,EAAE,EAAC,MAAK,EAAC,OAAM,GAAE,aAAY,EAAA,EAAA,CAAA,GAAK,IAAE,EAAE,CAAA,EAAG,MAAK,IAAE,EAAE,CAAA;AAAGD,MAAE,WAAU;AAAC,MAAE,QAAM;AAAE,MAAE,cAAY;AAAEE,QAAE,CAAA,KAAI,EAAE,EAAC,MAAK,EAAA,CAAA;EAAA,GAAK,CAAC,IAAE,GAAE,CAAA,CAAA;AAAI,IAAE,WAAU;AAACA,QAAE,CAAA,KAAI,EAAE,EAAC,MAAK,EAAA,CAAA;AAAI,WAAO,GAAE,WAAU;AAACA,UAAE,CAAA,KAAI,EAAE,EAAC,MAAK,EAAA,CAAA;IAAA,CAAA;EAAA,GAAO,CAAC,EAAA,CAAA;AAAID,MAAE,CAAA;AAAG,SAAO;AAAA;AACjc,SAAA,IAAW,IAAE;AAAC,MAAI,IAAE,GAAE;AAAY,OAAE,GAAE;AAAM,MAAG;AAAC,QAAI,IAAE,EAAA;AAAI,WAAM,CAAC,EAAE,IAAE,CAAA;EAAA,SAAS,GAAN;AAAS,WAAM;EAAA;AAAA;AAAI,SAAA,IAAW,IAAE,GAAE;AAAC,SAAO,EAAA;AAAA;AAAI,IAAIE,MAAgB,OAAO,WAArB,eAA2C,OAAO,OAAO,aAA5B,eAAoD,OAAO,OAAO,SAAS,kBAArC,cAAmDC,MAAEC;+DAAwC,EAAE,yBAAX,SAAgC,EAAE,uBAAqBF;ACP/R;AACzCG,OAAAA,UAAiBR;AAAAA;ACKN,IAAI,IAAEA;AAAN,IAAuB,IAAES,KAAAA;AAAwC,SAAA,EAAW,IAAE,GAAE;AAAC,SAAO,OAAI,MAAQ,OAAJ,KAAO,IAAE,OAAI,IAAE,MAAI,OAAI,MAAG,MAAI;AAAA;AAAE,IAAI,IAAe,OAAO,OAAO,OAA3B,aAA8B,OAAO,KAAG;AAA9C,IAAgD,IAAE,EAAE;AAApD,IAAyE,IAAE,EAAE;AAA7E,IAAoF,IAAE,EAAE;AAAxF,IAAkG,IAAE,EAAE;AAAtG,IAA8G,IAAE,EAAE;+DACtN,SAAS,IAAE,GAAE,IAAE,IAAE,GAAE;AAAC,MAAI,IAAE,EAAE,IAAA;AAAM,MAAU,EAAE,YAAT,MAAiB;AAAC,QAAI,IAAE,EAAC,UAAS,OAAG,OAAM,KAAA;AAAM,MAAE,UAAQ;EAAA;AAAO,QAAE,EAAE;AAAQ,MAAE,EAAE,WAAU;AAAC,aAAA,GAAW,IAAE;AAAC,UAAG,CAAC,IAAE;AAAC,aAAE;AAAG,aAAE;AAAE,aAAE,GAAE,EAAA;AAAG,YAAY,MAAT,UAAY,EAAE,UAAS;AAAC,cAAI,KAAE,EAAE;AAAM,cAAG,EAAE,IAAE,EAAA;AAAG,mBAAO,KAAE;QAAA;AAAE,eAAO,KAAE;MAAA;AAAE,WAAE;AAAE,UAAG,EAAE,IAAE,EAAA;AAAG,eAAO;AAAE,UAAI,KAAE,GAAE,EAAA;AAAG,UAAY,MAAT,UAAY,EAAE,IAAE,EAAA;AAAG,eAAO;AAAE,WAAE;AAAE,aAAO,KAAE;IAAA;AAAE,QAAI,KAAE,OAAG,IAAE,IAAE,KAAW,OAAT,SAAW,OAAK;AAAE,WAAM,CAAC,WAAU;AAAC,aAAO,GAAE,EAAA,CAAA;IAAA,GAAa,OAAP,OAAS,SAAO,WAAU;AAAC,aAAO,GAAE,GAAA,CAAA;IAAA,CAAA;EAAA,GAAQ,CAAC,GAAE,IAAE,IAAE,CAAA,CAAA;AAAI,MAAI,IAAE,EAAE,IAAE,EAAE,CAAA,GAAG,EAAE,CAAA,CAAA;AACnf,IAAE,WAAU;AAAC,MAAE,WAAS;AAAG,MAAE,QAAM;EAAA,GAAG,CAAC,CAAA,CAAA;AAAI,IAAE,CAAA;AAAG,SAAO;AAAA;ACRZ;AACzCC,eAAAA,UAAiBV;AAAAA;uBCaiB,UAAoB,MAAgB;;MAClE,UAA2B;MAE3B,KAAK,CAAA,aAAc,UAAU;eACpB,KAAK,CAAA;eACN,KAAA,KAAK,CAAA,MAAL,OAAA,KAAW,CAAA;EAAA,WACZ,OAAO,KAAK,CAAA,MAAO,UAAU;eAC3B,eAAe,KAAK,CAAA,CAAA;eACrB,KAAA,KAAK,CAAA,MAAL,OAAA,KAAW,CAAA;EAAA,OAChB;eACM,CAAC,MAAM;eACR,KAAA,KAAK,CAAA,MAAL,OAAA,KAAW,CAAA;EAAA;QAGjB,YAAY,YAChB,CAAC,aAAyB;WACjB,MAAM,UAAU,CAAC,MAAM,GAAG,UAAU;MACzC,UAAU,QAAQ;MAClB,QAAQ;MACR,SAAS,CAAC,IAAG,MAAM,OAAM;IAAA,CAAA;EAAA,GAG7B,CAAC,OAAO,QAAQ,QAAA,CAAA;QAGZ,cAAc,YAAY,MAAM,MAAM,SAAA,GAAY,CAAC,KAAA,CAAA;QAEnD,QAAQW,aAAAA,QAAAA,iCAEZ,WACA,aACA,aACA,WACA,KAAA,QAAQ,YAAR,OAAA,KAAmBC,KAAAA;gBAGP,KAAA;SACP;AAAA;sBC/CmD,OAAiB,UAAuC;QAC5G,QAAQ,cAAc,OAAO,QAAA;QAC7B,SAAS,CAAC,WAA+B,MAAM,OAAO,CAAC,UAAU,gBAAgB,OAAO,UAAU,MAAA,CAAA;SAEjG,CAAC,OAAO,MAAA;AAAA;2BCLaC,MAAa;EAIzC,YAAY,MAAkB;WACrB,cAAc,MAAM,GAAG,IAAA;EAAA;EAGhC,QAAoC,UAAuC;WAClE,aAAa,MAAM,QAAA;EAAA;AAAA;uBCRH;EAGzB,YAA4B,cAAiB;;oBAIlC,CAAC,EAAE,UAAU,MAAA,MAAoE;YACpF,SAAS,QAAQ,MAAM,SAAA,OAAA,QAAS,IAAIC,OAAM,KAAK,YAAA,GAAe,CAAC,KAAA,CAAA;iDAE7D,KAAK,QAAQ,UAAd;QAAuB,OAAO;MAAA,GAAS,QAAA;IAAA;qBAGpC,CAAuC,cAA2C;aACrF,CAAC,SAAA,sBAAA,cACL,KAAK,UAAN,MAAA,sBAAA,cACG,WAADC,gBAAA,CAAA,GAAe,IAAA,CAAA,CAAA;IAAA;SAZd,UAAU,cAAc,IAAID,OAAM,YAAA,CAAA;EAAA;EAiBzC,WAAqB;WACZ,WAAW,KAAK,OAAA;EAAA;EAMzB,YAAY,MAAkB;UACtB,QAAQ,KAAK,SAAA;WACZ,cAAc,OAAO,GAAG,IAAA;EAAA;EAGjC,QAAoC,UAAuC;UACnE,QAAQ,KAAK,SAAA;WACZ,aAAa,OAAO,QAAA;EAAA;AAAA;;;AEtCxB,IAAM,mBAAmB,IAAIE,OAAyB,CAAC,CAAC;AAExD,SAAS,oBAAoB,YAA+B;AACjE,mBAAiB,IAAI,UAAU;AACjC;AAEO,SAAS,eAAkB,QAAsD;AACtF,SAAO;AAAA,IACL,MAAM,OAAO,OAAO,CAAC,GAAG,GAAG,OAAO,IAAI,CAAC,UAAU,MAAM,IAAI,CAAC;AAAA,IAC5D,SAAS,OAAO,OAAO,CAAC,GAAG,GAAG,OAAO,IAAI,CAAC,UAAU,MAAM,OAAO,CAAC;AAAA,IAClE,QAAQ,OAAO,OAAO,CAAC,GAAG,GAAG,OAAO,IAAI,CAAC,UAAU,MAAM,MAAM,CAAC;AAAA,IAChE,YAAY,OAAO,OAAO,CAAC,GAAG,GAAG,OAAO,IAAI,CAAC,UAAU,MAAM,UAAU,CAAC;AAAA,IACxE,OAAO,OAAO,OAAO,CAAC,GAAG,GAAG,OAAO,IAAI,CAAC,UAAU,MAAM,KAAK,CAAC;AAAA,IAC9D,QAAQ;AAAA,MACN,SAAS,OAAO,OAAO,CAAC,GAAG,GAAG,OAAO,IAAI,CAAC,UAAO;AAjBvD;AAiB0D,2BAAM,WAAN,mBAAc;AAAA,OAAO,CAAC;AAAA,MAC1E,WAAW,OAAO,OAAO,CAAC,GAAG,GAAG,OAAO,IAAI,CAAC,UAAO;AAlBzD;AAkB4D,2BAAM,WAAN,mBAAc;AAAA,OAAS,CAAC;AAAA,MAC9E,SAAS,OAAO,OAAO,CAAC,GAAG,GAAG,OAAO,IAAI,CAAC,UAAO;AAnBvD;AAmB0D,2BAAM,WAAN,mBAAc;AAAA,OAAO,CAAC;AAAA,MAC1E,YAAY,OACT,IAAI,CAAC,UAAO;AArBrB;AAqBwB,2BAAM,WAAN,mBAAc;AAAA,OAAU,EACvC,QAAQ,EACR,KAAK,CAAC,MAAM,MAAM,MAAS;AAAA,MAC9B,MAAM,OACH,IAAI,CAAC,UAAO;AAzBrB;AAyBwB,2BAAM,WAAN,mBAAc;AAAA,OAAI,EACjC,QAAQ,EACR,KAAK,CAAC,MAAM,MAAM,MAAS;AAAA,MAC9B,QAAQ,OACL,IAAI,CAAC,UAAO;AA7BrB;AA6BwB,2BAAM,WAAN,mBAAc;AAAA,OAAM,EACnC,QAAQ,EACR,KAAK,CAAC,MAAM,MAAM,MAAS;AAAA,MAC9B,aAAa,OACV,IAAI,CAAC,UAAO;AAjCrB;AAiCwB,2BAAM,WAAN,mBAAc;AAAA,OAAW,EACxC,QAAQ,EACR,KAAK,CAAC,MAAM,MAAM,MAAS;AAAA,IAChC;AAAA,IACA,SAAS,OACN,IAAI,CAAC,UAAU,MAAM,OAAO,EAC5B,QAAQ,EACR,KAAK,CAAC,MAAM,MAAM,MAAS;AAAA,EAChC;AACF;;;AC1CA,SAAoB,iBAAAC,gBAAe,cAAAC,mBAAkB;AAoCjD,gBAAAC,YAAA;AA1BG,IAAM,uBAAuBC,eAAwC;AAAA,EAC1E,OAAO,CAAC;AAAA,EACR,WAAW;AAAA,IACT,EAAE,QAAQ,QAAQ,UAAU,IAAI,YAAY,EAAE;AAAA,IAC9C,EAAE,QAAQ,YAAY,UAAU,IAAI,YAAY,EAAE;AAAA,EACpD;AACF,CAAC;AAEM,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAGG;AACD,QAAM,YAAYC,YAAW,oBAAoB;AACjD,kCAAU,UAAU;AACpB,8CAAc,UAAU;AAExB,MAAI,qBAAqB;AACvB,gBAAY,CAAC,GAAG,WAAW,GAAG,mBAAmB;AAAA,EACnD;AAEA,SACE,gBAAAF;AAAA,IAAC,qBAAqB;AAAA,IAArB;AAAA,MACC,OAAO;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;","names":["v","p","throttle","eq","throttleFn","e","require$$0","h","n","p","r","u","t","q","shimModule","require$$1","withSelectorModule","useSyncExternalStoreWithSelector","eq","BaseStore","Store","__spreadValues","Store","createContext","useContext","jsx","createContext","useContext"]}