@khvavuong/ezchat 1.1.11 → 1.1.13
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.
- package/dist/ezchat.umd.js +4 -4
- package/dist/ezchat.umd.js.map +1 -1
- package/package.json +1 -1
package/dist/ezchat.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ezchat.umd.js","sources":["../node_modules/solid-js/dist/solid.js","../node_modules/solid-js/web/dist/web.js","../src/assets/icons/icon-chat-button.svg","../src/assets/icons/icon-more-infor.svg","../src/assets/icons/icon-expand.svg","../src/assets/icons/icon-shrink.svg","../src/assets/icons/icon-minimize.svg","../src/assets/icons/icon-close.svg","../src/assets/icons/icon-add-item.svg","../src/assets/icons/icon-send-message.svg","../src/assets/icons/icon-sidebar-active.svg","../src/assets/icons/icon-user.svg","../src/assets/icons/icon-trending.svg","../src/assets/icons/icon-add-conversation.svg","../src/assets/icons/icon-search.svg","../src/assets/icons/icon-menu-dot.svg","../src/assets/icons/icon-micro.svg","../src/assets/icons/icon-edit.svg","../src/assets/icons/icon-delete.svg","../src/assets/icons/icon-send-active.svg","../src/assets/icons/icon-like.svg","../src/assets/icons/icon-dislike.svg","../src/assets/icons/icon-like-active.svg","../src/assets/icons/icon-dislike-active.svg","../src/assets/icons/icon-check.svg","../src/components/SurveyMessage/SurveyMessage.tsx","../src/modules/ChatMessages/ChatMessages.tsx","../src/modules/ChatInput/ChatInput.tsx","../src/components/Sidebar/Siderbar.tsx","../src/components/ChatActionButton/ChatActionButton.tsx","../src/components/HeaderSteps/HeaderSteps.tsx","../src/data-provider/services/message-service.ts","../src/RemoteRepository.ts","../src/modules/ChatPopup/ChatPopup.tsx","../src/index.tsx"],"sourcesContent":["let taskIdCounter = 1,\n isCallbackScheduled = false,\n isPerformingWork = false,\n taskQueue = [],\n currentTask = null,\n shouldYieldToHost = null,\n yieldInterval = 5,\n deadline = 0,\n maxYieldInterval = 300,\n maxDeadline = 0,\n scheduleCallback = null,\n scheduledCallback = null;\nconst maxSigned31BitInt = 1073741823;\nfunction setupScheduler() {\n const channel = new MessageChannel(),\n port = channel.port2;\n scheduleCallback = () => port.postMessage(null);\n channel.port1.onmessage = () => {\n if (scheduledCallback !== null) {\n const currentTime = performance.now();\n deadline = currentTime + yieldInterval;\n maxDeadline = currentTime + maxYieldInterval;\n try {\n const hasMoreWork = scheduledCallback(currentTime);\n if (!hasMoreWork) {\n scheduledCallback = null;\n } else port.postMessage(null);\n } catch (error) {\n port.postMessage(null);\n throw error;\n }\n }\n };\n if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {\n const scheduling = navigator.scheduling;\n shouldYieldToHost = () => {\n const currentTime = performance.now();\n if (currentTime >= deadline) {\n if (scheduling.isInputPending()) {\n return true;\n }\n return currentTime >= maxDeadline;\n } else {\n return false;\n }\n };\n } else {\n shouldYieldToHost = () => performance.now() >= deadline;\n }\n}\nfunction enqueue(taskQueue, task) {\n function findIndex() {\n let m = 0;\n let n = taskQueue.length - 1;\n while (m <= n) {\n const k = n + m >> 1;\n const cmp = task.expirationTime - taskQueue[k].expirationTime;\n if (cmp > 0) m = k + 1;else if (cmp < 0) n = k - 1;else return k;\n }\n return m;\n }\n taskQueue.splice(findIndex(), 0, task);\n}\nfunction requestCallback(fn, options) {\n if (!scheduleCallback) setupScheduler();\n let startTime = performance.now(),\n timeout = maxSigned31BitInt;\n if (options && options.timeout) timeout = options.timeout;\n const newTask = {\n id: taskIdCounter++,\n fn,\n startTime,\n expirationTime: startTime + timeout\n };\n enqueue(taskQueue, newTask);\n if (!isCallbackScheduled && !isPerformingWork) {\n isCallbackScheduled = true;\n scheduledCallback = flushWork;\n scheduleCallback();\n }\n return newTask;\n}\nfunction cancelCallback(task) {\n task.fn = null;\n}\nfunction flushWork(initialTime) {\n isCallbackScheduled = false;\n isPerformingWork = true;\n try {\n return workLoop(initialTime);\n } finally {\n currentTask = null;\n isPerformingWork = false;\n }\n}\nfunction workLoop(initialTime) {\n let currentTime = initialTime;\n currentTask = taskQueue[0] || null;\n while (currentTask !== null) {\n if (currentTask.expirationTime > currentTime && shouldYieldToHost()) {\n break;\n }\n const callback = currentTask.fn;\n if (callback !== null) {\n currentTask.fn = null;\n const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n callback(didUserCallbackTimeout);\n currentTime = performance.now();\n if (currentTask === taskQueue[0]) {\n taskQueue.shift();\n }\n } else taskQueue.shift();\n currentTask = taskQueue[0] || null;\n }\n return currentTask !== null;\n}\n\nconst sharedConfig = {\n context: undefined,\n registry: undefined,\n effects: undefined,\n done: false,\n getContextId() {\n return getContextId(this.context.count);\n },\n getNextContextId() {\n return getContextId(this.context.count++);\n }\n};\nfunction getContextId(count) {\n const num = String(count),\n len = num.length - 1;\n return sharedConfig.context.id + (len ? String.fromCharCode(96 + len) : \"\") + num;\n}\nfunction setHydrateContext(context) {\n sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n return {\n ...sharedConfig.context,\n id: sharedConfig.getNextContextId(),\n count: 0\n };\n}\n\nconst IS_DEV = false;\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst SUPPORTS_PROXY = typeof Proxy === \"function\";\nconst $TRACK = Symbol(\"solid-track\");\nconst $DEVCOMP = Symbol(\"solid-dev-component\");\nconst signalOptions = {\n equals: equalFn\n};\nlet ERROR = null;\nlet runEffects = runQueue;\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n owned: null,\n cleanups: null,\n context: null,\n owner: null\n};\nconst NO_INIT = {};\nvar Owner = null;\nlet Transition = null;\nlet Scheduler = null;\nlet ExternalSourceConfig = null;\nlet Listener = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nfunction createRoot(fn, detachedOwner) {\n const listener = Listener,\n owner = Owner,\n unowned = fn.length === 0,\n current = detachedOwner === undefined ? owner : detachedOwner,\n root = unowned ? UNOWNED : {\n owned: null,\n cleanups: null,\n context: current ? current.context : null,\n owner: current\n },\n updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n Owner = root;\n Listener = null;\n try {\n return runUpdates(updateFn, true);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n}\nfunction createSignal(value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const s = {\n value,\n observers: null,\n observerSlots: null,\n comparator: options.equals || undefined\n };\n const setter = value => {\n if (typeof value === \"function\") {\n if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);else value = value(s.value);\n }\n return writeSignal(s, value);\n };\n return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n const c = createComputation(fn, value, true, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n const c = createComputation(fn, value, false, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n runEffects = runUserEffects;\n const c = createComputation(fn, value, false, STALE),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n if (!options || !options.render) c.user = true;\n Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createReaction(onInvalidate, options) {\n let fn;\n const c = createComputation(() => {\n fn ? fn() : untrack(onInvalidate);\n fn = undefined;\n }, undefined, false, 0),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n c.user = true;\n return tracking => {\n fn = tracking;\n updateComputation(c);\n };\n}\nfunction createMemo(fn, value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const c = createComputation(fn, value, true, 0);\n c.observers = null;\n c.observerSlots = null;\n c.comparator = options.equals || undefined;\n if (Scheduler && Transition && Transition.running) {\n c.tState = STALE;\n Updates.push(c);\n } else updateComputation(c);\n return readSignal.bind(c);\n}\nfunction isPromise(v) {\n return v && typeof v === \"object\" && \"then\" in v;\n}\nfunction createResource(pSource, pFetcher, pOptions) {\n let source;\n let fetcher;\n let options;\n if (typeof pFetcher === \"function\") {\n source = pSource;\n fetcher = pFetcher;\n options = pOptions || {};\n } else {\n source = true;\n fetcher = pSource;\n options = pFetcher || {};\n }\n let pr = null,\n initP = NO_INIT,\n id = null,\n loadedUnderTransition = false,\n scheduled = false,\n resolved = \"initialValue\" in options,\n dynamic = typeof source === \"function\" && createMemo(source);\n const contexts = new Set(),\n [value, setValue] = (options.storage || createSignal)(options.initialValue),\n [error, setError] = createSignal(undefined),\n [track, trigger] = createSignal(undefined, {\n equals: false\n }),\n [state, setState] = createSignal(resolved ? \"ready\" : \"unresolved\");\n if (sharedConfig.context) {\n id = sharedConfig.getNextContextId();\n if (options.ssrLoadFrom === \"initial\") initP = options.initialValue;else if (sharedConfig.load && sharedConfig.has(id)) initP = sharedConfig.load(id);\n }\n function loadEnd(p, v, error, key) {\n if (pr === p) {\n pr = null;\n key !== undefined && (resolved = true);\n if ((p === initP || v === initP) && options.onHydrated) queueMicrotask(() => options.onHydrated(key, {\n value: v\n }));\n initP = NO_INIT;\n if (Transition && p && loadedUnderTransition) {\n Transition.promises.delete(p);\n loadedUnderTransition = false;\n runUpdates(() => {\n Transition.running = true;\n completeLoad(v, error);\n }, false);\n } else completeLoad(v, error);\n }\n return v;\n }\n function completeLoad(v, err) {\n runUpdates(() => {\n if (err === undefined) setValue(() => v);\n setState(err !== undefined ? \"errored\" : resolved ? \"ready\" : \"unresolved\");\n setError(err);\n for (const c of contexts.keys()) c.decrement();\n contexts.clear();\n }, false);\n }\n function read() {\n const c = SuspenseContext && useContext(SuspenseContext),\n v = value(),\n err = error();\n if (err !== undefined && !pr) throw err;\n if (Listener && !Listener.user && c) {\n createComputed(() => {\n track();\n if (pr) {\n if (c.resolved && Transition && loadedUnderTransition) Transition.promises.add(pr);else if (!contexts.has(c)) {\n c.increment();\n contexts.add(c);\n }\n }\n });\n }\n return v;\n }\n function load(refetching = true) {\n if (refetching !== false && scheduled) return;\n scheduled = false;\n const lookup = dynamic ? dynamic() : source;\n loadedUnderTransition = Transition && Transition.running;\n if (lookup == null || lookup === false) {\n loadEnd(pr, untrack(value));\n return;\n }\n if (Transition && pr) Transition.promises.delete(pr);\n let error;\n const p = initP !== NO_INIT ? initP : untrack(() => {\n try {\n return fetcher(lookup, {\n value: value(),\n refetching\n });\n } catch (fetcherError) {\n error = fetcherError;\n }\n });\n if (error !== undefined) {\n loadEnd(pr, undefined, castError(error), lookup);\n return;\n } else if (!isPromise(p)) {\n loadEnd(pr, p, undefined, lookup);\n return p;\n }\n pr = p;\n if (\"v\" in p) {\n if (p.s === 1) loadEnd(pr, p.v, undefined, lookup);else loadEnd(pr, undefined, castError(p.v), lookup);\n return p;\n }\n scheduled = true;\n queueMicrotask(() => scheduled = false);\n runUpdates(() => {\n setState(resolved ? \"refreshing\" : \"pending\");\n trigger();\n }, false);\n return p.then(v => loadEnd(p, v, undefined, lookup), e => loadEnd(p, undefined, castError(e), lookup));\n }\n Object.defineProperties(read, {\n state: {\n get: () => state()\n },\n error: {\n get: () => error()\n },\n loading: {\n get() {\n const s = state();\n return s === \"pending\" || s === \"refreshing\";\n }\n },\n latest: {\n get() {\n if (!resolved) return read();\n const err = error();\n if (err && !pr) throw err;\n return value();\n }\n }\n });\n let owner = Owner;\n if (dynamic) createComputed(() => (owner = Owner, load(false)));else load(false);\n return [read, {\n refetch: info => runWithOwner(owner, () => load(info)),\n mutate: setValue\n }];\n}\nfunction createDeferred(source, options) {\n let t,\n timeout = options ? options.timeoutMs : undefined;\n const node = createComputation(() => {\n if (!t || !t.fn) t = requestCallback(() => setDeferred(() => node.value), timeout !== undefined ? {\n timeout\n } : undefined);\n return source();\n }, undefined, true);\n const [deferred, setDeferred] = createSignal(Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, options);\n updateComputation(node);\n setDeferred(() => Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);\n return deferred;\n}\nfunction createSelector(source, fn = equalFn, options) {\n const subs = new Map();\n const node = createComputation(p => {\n const v = source();\n for (const [key, val] of subs.entries()) if (fn(key, v) !== fn(key, p)) {\n for (const c of val.values()) {\n c.state = STALE;\n if (c.pure) Updates.push(c);else Effects.push(c);\n }\n }\n return v;\n }, undefined, true, STALE);\n updateComputation(node);\n return key => {\n const listener = Listener;\n if (listener) {\n let l;\n if (l = subs.get(key)) l.add(listener);else subs.set(key, l = new Set([listener]));\n onCleanup(() => {\n l.delete(listener);\n !l.size && subs.delete(key);\n });\n }\n return fn(key, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);\n };\n}\nfunction batch(fn) {\n return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n if (!ExternalSourceConfig && Listener === null) return fn();\n const listener = Listener;\n Listener = null;\n try {\n if (ExternalSourceConfig) return ExternalSourceConfig.untrack(fn);\n return fn();\n } finally {\n Listener = listener;\n }\n}\nfunction on(deps, fn, options) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let defer = options && options.defer;\n return prevValue => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n } else input = deps();\n if (defer) {\n defer = false;\n return prevValue;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nfunction onMount(fn) {\n createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n if (Owner === null) ;else if (Owner.cleanups === null) Owner.cleanups = [fn];else Owner.cleanups.push(fn);\n return fn;\n}\nfunction catchError(fn, handler) {\n ERROR || (ERROR = Symbol(\"error\"));\n Owner = createComputation(undefined, undefined, true);\n Owner.context = {\n ...Owner.context,\n [ERROR]: [handler]\n };\n if (Transition && Transition.running) Transition.sources.add(Owner);\n try {\n return fn();\n } catch (err) {\n handleError(err);\n } finally {\n Owner = Owner.owner;\n }\n}\nfunction getListener() {\n return Listener;\n}\nfunction getOwner() {\n return Owner;\n}\nfunction runWithOwner(o, fn) {\n const prev = Owner;\n const prevListener = Listener;\n Owner = o;\n Listener = null;\n try {\n return runUpdates(fn, true);\n } catch (err) {\n handleError(err);\n } finally {\n Owner = prev;\n Listener = prevListener;\n }\n}\nfunction enableScheduling(scheduler = requestCallback) {\n Scheduler = scheduler;\n}\nfunction startTransition(fn) {\n if (Transition && Transition.running) {\n fn();\n return Transition.done;\n }\n const l = Listener;\n const o = Owner;\n return Promise.resolve().then(() => {\n Listener = l;\n Owner = o;\n let t;\n if (Scheduler || SuspenseContext) {\n t = Transition || (Transition = {\n sources: new Set(),\n effects: [],\n promises: new Set(),\n disposed: new Set(),\n queue: new Set(),\n running: true\n });\n t.done || (t.done = new Promise(res => t.resolve = res));\n t.running = true;\n }\n runUpdates(fn, false);\n Listener = Owner = null;\n return t ? t.done : undefined;\n });\n}\nconst [transPending, setTransPending] = /*@__PURE__*/createSignal(false);\nfunction useTransition() {\n return [transPending, startTransition];\n}\nfunction resumeEffects(e) {\n Effects.push.apply(Effects, e);\n e.length = 0;\n}\nfunction createContext(defaultValue, options) {\n const id = Symbol(\"context\");\n return {\n id,\n Provider: createProvider(id),\n defaultValue\n };\n}\nfunction useContext(context) {\n let value;\n return Owner && Owner.context && (value = Owner.context[context.id]) !== undefined ? value : context.defaultValue;\n}\nfunction children(fn) {\n const children = createMemo(fn);\n const memo = createMemo(() => resolveChildren(children()));\n memo.toArray = () => {\n const c = memo();\n return Array.isArray(c) ? c : c != null ? [c] : [];\n };\n return memo;\n}\nlet SuspenseContext;\nfunction getSuspenseContext() {\n return SuspenseContext || (SuspenseContext = createContext());\n}\nfunction enableExternalSource(factory, untrack = fn => fn()) {\n if (ExternalSourceConfig) {\n const {\n factory: oldFactory,\n untrack: oldUntrack\n } = ExternalSourceConfig;\n ExternalSourceConfig = {\n factory: (fn, trigger) => {\n const oldSource = oldFactory(fn, trigger);\n const source = factory(x => oldSource.track(x), trigger);\n return {\n track: x => source.track(x),\n dispose() {\n source.dispose();\n oldSource.dispose();\n }\n };\n },\n untrack: fn => oldUntrack(() => untrack(fn))\n };\n } else {\n ExternalSourceConfig = {\n factory,\n untrack\n };\n }\n}\nfunction readSignal() {\n const runningTransition = Transition && Transition.running;\n if (this.sources && (runningTransition ? this.tState : this.state)) {\n if ((runningTransition ? this.tState : this.state) === STALE) updateComputation(this);else {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(this), false);\n Updates = updates;\n }\n }\n if (Listener) {\n const sSlot = this.observers ? this.observers.length : 0;\n if (!Listener.sources) {\n Listener.sources = [this];\n Listener.sourceSlots = [sSlot];\n } else {\n Listener.sources.push(this);\n Listener.sourceSlots.push(sSlot);\n }\n if (!this.observers) {\n this.observers = [Listener];\n this.observerSlots = [Listener.sources.length - 1];\n } else {\n this.observers.push(Listener);\n this.observerSlots.push(Listener.sources.length - 1);\n }\n }\n if (runningTransition && Transition.sources.has(this)) return this.tValue;\n return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n let current = Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;\n if (!node.comparator || !node.comparator(current, value)) {\n if (Transition) {\n const TransitionRunning = Transition.running;\n if (TransitionRunning || !isComp && Transition.sources.has(node)) {\n Transition.sources.add(node);\n node.tValue = value;\n }\n if (!TransitionRunning) node.value = value;\n } else node.value = value;\n if (node.observers && node.observers.length) {\n runUpdates(() => {\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n const TransitionRunning = Transition && Transition.running;\n if (TransitionRunning && Transition.disposed.has(o)) continue;\n if (TransitionRunning ? !o.tState : !o.state) {\n if (o.pure) Updates.push(o);else Effects.push(o);\n if (o.observers) markDownstream(o);\n }\n if (!TransitionRunning) o.state = STALE;else o.tState = STALE;\n }\n if (Updates.length > 10e5) {\n Updates = [];\n if (IS_DEV) ;\n throw new Error();\n }\n }, false);\n }\n }\n return value;\n}\nfunction updateComputation(node) {\n if (!node.fn) return;\n cleanNode(node);\n const time = ExecCount;\n runComputation(node, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, time);\n if (Transition && !Transition.running && Transition.sources.has(node)) {\n queueMicrotask(() => {\n runUpdates(() => {\n Transition && (Transition.running = true);\n Listener = Owner = node;\n runComputation(node, node.tValue, time);\n Listener = Owner = null;\n }, false);\n });\n }\n}\nfunction runComputation(node, value, time) {\n let nextValue;\n const owner = Owner,\n listener = Listener;\n Listener = Owner = node;\n try {\n nextValue = node.fn(value);\n } catch (err) {\n if (node.pure) {\n if (Transition && Transition.running) {\n node.tState = STALE;\n node.tOwned && node.tOwned.forEach(cleanNode);\n node.tOwned = undefined;\n } else {\n node.state = STALE;\n node.owned && node.owned.forEach(cleanNode);\n node.owned = null;\n }\n }\n node.updatedAt = time + 1;\n return handleError(err);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n if (!node.updatedAt || node.updatedAt <= time) {\n if (node.updatedAt != null && \"observers\" in node) {\n writeSignal(node, nextValue, true);\n } else if (Transition && Transition.running && node.pure) {\n Transition.sources.add(node);\n node.tValue = nextValue;\n } else node.value = nextValue;\n node.updatedAt = time;\n }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n const c = {\n fn,\n state: state,\n updatedAt: null,\n owned: null,\n sources: null,\n sourceSlots: null,\n cleanups: null,\n value: init,\n owner: Owner,\n context: Owner ? Owner.context : null,\n pure\n };\n if (Transition && Transition.running) {\n c.state = 0;\n c.tState = state;\n }\n if (Owner === null) ;else if (Owner !== UNOWNED) {\n if (Transition && Transition.running && Owner.pure) {\n if (!Owner.tOwned) Owner.tOwned = [c];else Owner.tOwned.push(c);\n } else {\n if (!Owner.owned) Owner.owned = [c];else Owner.owned.push(c);\n }\n }\n if (ExternalSourceConfig && c.fn) {\n const [track, trigger] = createSignal(undefined, {\n equals: false\n });\n const ordinary = ExternalSourceConfig.factory(c.fn, trigger);\n onCleanup(() => ordinary.dispose());\n const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());\n const inTransition = ExternalSourceConfig.factory(c.fn, triggerInTransition);\n c.fn = x => {\n track();\n return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);\n };\n }\n return c;\n}\nfunction runTop(node) {\n const runningTransition = Transition && Transition.running;\n if ((runningTransition ? node.tState : node.state) === 0) return;\n if ((runningTransition ? node.tState : node.state) === PENDING) return lookUpstream(node);\n if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n const ancestors = [node];\n while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n if (runningTransition && Transition.disposed.has(node)) return;\n if (runningTransition ? node.tState : node.state) ancestors.push(node);\n }\n for (let i = ancestors.length - 1; i >= 0; i--) {\n node = ancestors[i];\n if (runningTransition) {\n let top = node,\n prev = ancestors[i + 1];\n while ((top = top.owner) && top !== prev) {\n if (Transition.disposed.has(top)) return;\n }\n }\n if ((runningTransition ? node.tState : node.state) === STALE) {\n updateComputation(node);\n } else if ((runningTransition ? node.tState : node.state) === PENDING) {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(node, ancestors[0]), false);\n Updates = updates;\n }\n }\n}\nfunction runUpdates(fn, init) {\n if (Updates) return fn();\n let wait = false;\n if (!init) Updates = [];\n if (Effects) wait = true;else Effects = [];\n ExecCount++;\n try {\n const res = fn();\n completeUpdates(wait);\n return res;\n } catch (err) {\n if (!wait) Effects = null;\n Updates = null;\n handleError(err);\n }\n}\nfunction completeUpdates(wait) {\n if (Updates) {\n if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);else runQueue(Updates);\n Updates = null;\n }\n if (wait) return;\n let res;\n if (Transition) {\n if (!Transition.promises.size && !Transition.queue.size) {\n const sources = Transition.sources;\n const disposed = Transition.disposed;\n Effects.push.apply(Effects, Transition.effects);\n res = Transition.resolve;\n for (const e of Effects) {\n \"tState\" in e && (e.state = e.tState);\n delete e.tState;\n }\n Transition = null;\n runUpdates(() => {\n for (const d of disposed) cleanNode(d);\n for (const v of sources) {\n v.value = v.tValue;\n if (v.owned) {\n for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n }\n if (v.tOwned) v.owned = v.tOwned;\n delete v.tValue;\n delete v.tOwned;\n v.tState = 0;\n }\n setTransPending(false);\n }, false);\n } else if (Transition.running) {\n Transition.running = false;\n Transition.effects.push.apply(Transition.effects, Effects);\n Effects = null;\n setTransPending(true);\n return;\n }\n }\n const e = Effects;\n Effects = null;\n if (e.length) runUpdates(() => runEffects(e), false);\n if (res) res();\n}\nfunction runQueue(queue) {\n for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n const tasks = Transition.queue;\n if (!tasks.has(item)) {\n tasks.add(item);\n Scheduler(() => {\n tasks.delete(item);\n runUpdates(() => {\n Transition.running = true;\n runTop(item);\n }, false);\n Transition && (Transition.running = false);\n });\n }\n }\n}\nfunction runUserEffects(queue) {\n let i,\n userLength = 0;\n for (i = 0; i < queue.length; i++) {\n const e = queue[i];\n if (!e.user) runTop(e);else queue[userLength++] = e;\n }\n if (sharedConfig.context) {\n if (sharedConfig.count) {\n sharedConfig.effects || (sharedConfig.effects = []);\n sharedConfig.effects.push(...queue.slice(0, userLength));\n return;\n }\n setHydrateContext();\n }\n if (sharedConfig.effects && (sharedConfig.done || !sharedConfig.count)) {\n queue = [...sharedConfig.effects, ...queue];\n userLength += sharedConfig.effects.length;\n delete sharedConfig.effects;\n }\n for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n const runningTransition = Transition && Transition.running;\n if (runningTransition) node.tState = 0;else node.state = 0;\n for (let i = 0; i < node.sources.length; i += 1) {\n const source = node.sources[i];\n if (source.sources) {\n const state = runningTransition ? source.tState : source.state;\n if (state === STALE) {\n if (source !== ignore && (!source.updatedAt || source.updatedAt < ExecCount)) runTop(source);\n } else if (state === PENDING) lookUpstream(source, ignore);\n }\n }\n}\nfunction markDownstream(node) {\n const runningTransition = Transition && Transition.running;\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n if (runningTransition ? !o.tState : !o.state) {\n if (runningTransition) o.tState = PENDING;else o.state = PENDING;\n if (o.pure) Updates.push(o);else Effects.push(o);\n o.observers && markDownstream(o);\n }\n }\n}\nfunction cleanNode(node) {\n let i;\n if (node.sources) {\n while (node.sources.length) {\n const source = node.sources.pop(),\n index = node.sourceSlots.pop(),\n obs = source.observers;\n if (obs && obs.length) {\n const n = obs.pop(),\n s = source.observerSlots.pop();\n if (index < obs.length) {\n n.sourceSlots[s] = index;\n obs[index] = n;\n source.observerSlots[index] = s;\n }\n }\n }\n }\n if (node.tOwned) {\n for (i = node.tOwned.length - 1; i >= 0; i--) cleanNode(node.tOwned[i]);\n delete node.tOwned;\n }\n if (Transition && Transition.running && node.pure) {\n reset(node, true);\n } else if (node.owned) {\n for (i = node.owned.length - 1; i >= 0; i--) cleanNode(node.owned[i]);\n node.owned = null;\n }\n if (node.cleanups) {\n for (i = node.cleanups.length - 1; i >= 0; i--) node.cleanups[i]();\n node.cleanups = null;\n }\n if (Transition && Transition.running) node.tState = 0;else node.state = 0;\n}\nfunction reset(node, top) {\n if (!top) {\n node.tState = 0;\n Transition.disposed.add(node);\n }\n if (node.owned) {\n for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n }\n}\nfunction castError(err) {\n if (err instanceof Error) return err;\n return new Error(typeof err === \"string\" ? err : \"Unknown error\", {\n cause: err\n });\n}\nfunction runErrors(err, fns, owner) {\n try {\n for (const f of fns) f(err);\n } catch (e) {\n handleError(e, owner && owner.owner || null);\n }\n}\nfunction handleError(err, owner = Owner) {\n const fns = ERROR && owner && owner.context && owner.context[ERROR];\n const error = castError(err);\n if (!fns) throw error;\n if (Effects) Effects.push({\n fn() {\n runErrors(error, fns, owner);\n },\n state: STALE\n });else runErrors(error, fns, owner);\n}\nfunction resolveChildren(children) {\n if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n if (Array.isArray(children)) {\n const results = [];\n for (let i = 0; i < children.length; i++) {\n const result = resolveChildren(children[i]);\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results;\n }\n return children;\n}\nfunction createProvider(id, options) {\n return function provider(props) {\n let res;\n createRenderEffect(() => res = untrack(() => {\n Owner.context = {\n ...Owner.context,\n [id]: props.value\n };\n return children(() => props.children);\n }), undefined);\n return res;\n };\n}\nfunction onError(fn) {\n ERROR || (ERROR = Symbol(\"error\"));\n if (Owner === null) ;else if (Owner.context === null || !Owner.context[ERROR]) {\n Owner.context = {\n ...Owner.context,\n [ERROR]: [fn]\n };\n mutateContext(Owner, ERROR, [fn]);\n } else Owner.context[ERROR].push(fn);\n}\nfunction mutateContext(o, key, value) {\n if (o.owned) {\n for (let i = 0; i < o.owned.length; i++) {\n if (o.owned[i].context === o.context) mutateContext(o.owned[i], key, value);\n if (!o.owned[i].context) {\n o.owned[i].context = o.context;\n mutateContext(o.owned[i], key, value);\n } else if (!o.owned[i].context[key]) {\n o.owned[i].context[key] = value;\n mutateContext(o.owned[i], key, value);\n }\n }\n }\n}\n\nfunction observable(input) {\n return {\n subscribe(observer) {\n if (!(observer instanceof Object) || observer == null) {\n throw new TypeError(\"Expected the observer to be an object.\");\n }\n const handler = typeof observer === \"function\" ? observer : observer.next && observer.next.bind(observer);\n if (!handler) {\n return {\n unsubscribe() {}\n };\n }\n const dispose = createRoot(disposer => {\n createEffect(() => {\n const v = input();\n untrack(() => handler(v));\n });\n return disposer;\n });\n if (getOwner()) onCleanup(dispose);\n return {\n unsubscribe() {\n dispose();\n }\n };\n },\n [Symbol.observable || \"@@observable\"]() {\n return this;\n }\n };\n}\nfunction from(producer, initalValue = undefined) {\n const [s, set] = createSignal(initalValue, {\n equals: false\n });\n if (\"subscribe\" in producer) {\n const unsub = producer.subscribe(v => set(() => v));\n onCleanup(() => \"unsubscribe\" in unsub ? unsub.unsubscribe() : unsub());\n } else {\n const clean = producer(set);\n onCleanup(clean);\n }\n return s;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n len = 0,\n indexes = mapFn.length > 1 ? [] : null;\n onCleanup(() => dispose(disposers));\n return () => {\n let newItems = list() || [],\n newLen = newItems.length,\n i,\n j;\n newItems[$TRACK];\n return untrack(() => {\n let newIndices, newIndicesNext, temp, tempdisposers, tempIndexes, start, end, newEnd, item;\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n indexes && (indexes = []);\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n }\n else if (len === 0) {\n mapped = new Array(newLen);\n for (j = 0; j < newLen; j++) {\n items[j] = newItems[j];\n mapped[j] = createRoot(mapper);\n }\n len = newLen;\n } else {\n temp = new Array(newLen);\n tempdisposers = new Array(newLen);\n indexes && (tempIndexes = new Array(newLen));\n for (start = 0, end = Math.min(len, newLen); start < end && items[start] === newItems[start]; start++);\n for (end = len - 1, newEnd = newLen - 1; end >= start && newEnd >= start && items[end] === newItems[newEnd]; end--, newEnd--) {\n temp[newEnd] = mapped[end];\n tempdisposers[newEnd] = disposers[end];\n indexes && (tempIndexes[newEnd] = indexes[end]);\n }\n newIndices = new Map();\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = newItems[j];\n i = newIndices.get(item);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(item, j);\n }\n for (i = start; i <= end; i++) {\n item = items[i];\n j = newIndices.get(item);\n if (j !== undefined && j !== -1) {\n temp[j] = mapped[i];\n tempdisposers[j] = disposers[i];\n indexes && (tempIndexes[j] = indexes[i]);\n j = newIndicesNext[j];\n newIndices.set(item, j);\n } else disposers[i]();\n }\n for (j = start; j < newLen; j++) {\n if (j in temp) {\n mapped[j] = temp[j];\n disposers[j] = tempdisposers[j];\n if (indexes) {\n indexes[j] = tempIndexes[j];\n indexes[j](j);\n }\n } else mapped[j] = createRoot(mapper);\n }\n mapped = mapped.slice(0, len = newLen);\n items = newItems.slice(0);\n }\n return mapped;\n });\n function mapper(disposer) {\n disposers[j] = disposer;\n if (indexes) {\n const [s, set] = createSignal(j);\n indexes[j] = set;\n return mapFn(newItems[j], s);\n }\n return mapFn(newItems[j]);\n }\n };\n}\nfunction indexArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n signals = [],\n len = 0,\n i;\n onCleanup(() => dispose(disposers));\n return () => {\n const newItems = list() || [],\n newLen = newItems.length;\n newItems[$TRACK];\n return untrack(() => {\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n signals = [];\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n return mapped;\n }\n if (items[0] === FALLBACK) {\n disposers[0]();\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n }\n for (i = 0; i < newLen; i++) {\n if (i < items.length && items[i] !== newItems[i]) {\n signals[i](() => newItems[i]);\n } else if (i >= items.length) {\n mapped[i] = createRoot(mapper);\n }\n }\n for (; i < items.length; i++) {\n disposers[i]();\n }\n len = signals.length = disposers.length = newLen;\n items = newItems.slice(0);\n return mapped = mapped.slice(0, len);\n });\n function mapper(disposer) {\n disposers[i] = disposer;\n const [s, set] = createSignal(newItems[i]);\n signals[i] = set;\n return mapFn(s, i);\n }\n };\n}\n\nlet hydrationEnabled = false;\nfunction enableHydration() {\n hydrationEnabled = true;\n}\nfunction createComponent(Comp, props) {\n if (hydrationEnabled) {\n if (sharedConfig.context) {\n const c = sharedConfig.context;\n setHydrateContext(nextHydrateContext());\n const r = untrack(() => Comp(props || {}));\n setHydrateContext(c);\n return r;\n }\n }\n return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n return true;\n}\nconst propTraps = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver;\n return _.get(property);\n },\n has(_, property) {\n if (property === $PROXY) return true;\n return _.has(property);\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property);\n },\n set: trueFn,\n deleteProperty: trueFn\n };\n },\n ownKeys(_) {\n return _.keys();\n }\n};\nfunction resolveSource(s) {\n return !(s = typeof s === \"function\" ? s() : s) ? {} : s;\n}\nfunction resolveSources() {\n for (let i = 0, length = this.length; i < length; ++i) {\n const v = this[i]();\n if (v !== undefined) return v;\n }\n}\nfunction mergeProps(...sources) {\n let proxy = false;\n for (let i = 0; i < sources.length; i++) {\n const s = sources[i];\n proxy = proxy || !!s && $PROXY in s;\n sources[i] = typeof s === \"function\" ? (proxy = true, createMemo(s)) : s;\n }\n if (SUPPORTS_PROXY && proxy) {\n return new Proxy({\n get(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property];\n if (v !== undefined) return v;\n }\n },\n has(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true;\n }\n return false;\n },\n keys() {\n const keys = [];\n for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));\n return [...new Set(keys)];\n }\n }, propTraps);\n }\n const sourcesMap = {};\n const defined = Object.create(null);\n for (let i = sources.length - 1; i >= 0; i--) {\n const source = sources[i];\n if (!source) continue;\n const sourceKeys = Object.getOwnPropertyNames(source);\n for (let i = sourceKeys.length - 1; i >= 0; i--) {\n const key = sourceKeys[i];\n if (key === \"__proto__\" || key === \"constructor\") continue;\n const desc = Object.getOwnPropertyDescriptor(source, key);\n if (!defined[key]) {\n defined[key] = desc.get ? {\n enumerable: true,\n configurable: true,\n get: resolveSources.bind(sourcesMap[key] = [desc.get.bind(source)])\n } : desc.value !== undefined ? desc : undefined;\n } else {\n const sources = sourcesMap[key];\n if (sources) {\n if (desc.get) sources.push(desc.get.bind(source));else if (desc.value !== undefined) sources.push(() => desc.value);\n }\n }\n }\n }\n const target = {};\n const definedKeys = Object.keys(defined);\n for (let i = definedKeys.length - 1; i >= 0; i--) {\n const key = definedKeys[i],\n desc = defined[key];\n if (desc && desc.get) Object.defineProperty(target, key, desc);else target[key] = desc ? desc.value : undefined;\n }\n return target;\n}\nfunction splitProps(props, ...keys) {\n if (SUPPORTS_PROXY && $PROXY in props) {\n const blocked = new Set(keys.length > 1 ? keys.flat() : keys[0]);\n const res = keys.map(k => {\n return new Proxy({\n get(property) {\n return k.includes(property) ? props[property] : undefined;\n },\n has(property) {\n return k.includes(property) && property in props;\n },\n keys() {\n return k.filter(property => property in props);\n }\n }, propTraps);\n });\n res.push(new Proxy({\n get(property) {\n return blocked.has(property) ? undefined : props[property];\n },\n has(property) {\n return blocked.has(property) ? false : property in props;\n },\n keys() {\n return Object.keys(props).filter(k => !blocked.has(k));\n }\n }, propTraps));\n return res;\n }\n const otherObject = {};\n const objects = keys.map(() => ({}));\n for (const propName of Object.getOwnPropertyNames(props)) {\n const desc = Object.getOwnPropertyDescriptor(props, propName);\n const isDefaultDesc = !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable;\n let blocked = false;\n let objectIndex = 0;\n for (const k of keys) {\n if (k.includes(propName)) {\n blocked = true;\n isDefaultDesc ? objects[objectIndex][propName] = desc.value : Object.defineProperty(objects[objectIndex], propName, desc);\n }\n ++objectIndex;\n }\n if (!blocked) {\n isDefaultDesc ? otherObject[propName] = desc.value : Object.defineProperty(otherObject, propName, desc);\n }\n }\n return [...objects, otherObject];\n}\nfunction lazy(fn) {\n let comp;\n let p;\n const wrap = props => {\n const ctx = sharedConfig.context;\n if (ctx) {\n const [s, set] = createSignal();\n sharedConfig.count || (sharedConfig.count = 0);\n sharedConfig.count++;\n (p || (p = fn())).then(mod => {\n !sharedConfig.done && setHydrateContext(ctx);\n sharedConfig.count--;\n set(() => mod.default);\n setHydrateContext();\n });\n comp = s;\n } else if (!comp) {\n const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));\n comp = s;\n }\n let Comp;\n return createMemo(() => (Comp = comp()) ? untrack(() => {\n if (IS_DEV) ;\n if (!ctx || sharedConfig.done) return Comp(props);\n const c = sharedConfig.context;\n setHydrateContext(ctx);\n const r = Comp(props);\n setHydrateContext(c);\n return r;\n }) : \"\");\n };\n wrap.preload = () => p || ((p = fn()).then(mod => comp = () => mod.default), p);\n return wrap;\n}\nlet counter = 0;\nfunction createUniqueId() {\n const ctx = sharedConfig.context;\n return ctx ? sharedConfig.getNextContextId() : `cl-${counter++}`;\n}\n\nconst narrowedError = name => `Stale read from <${name}>.`;\nfunction For(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(mapArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Index(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(indexArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Show(props) {\n const keyed = props.keyed;\n const conditionValue = createMemo(() => props.when, undefined, undefined);\n const condition = keyed ? conditionValue : createMemo(conditionValue, undefined, {\n equals: (a, b) => !a === !b\n });\n return createMemo(() => {\n const c = condition();\n if (c) {\n const child = props.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn ? untrack(() => child(keyed ? c : () => {\n if (!untrack(condition)) throw narrowedError(\"Show\");\n return conditionValue();\n })) : child;\n }\n return props.fallback;\n }, undefined, undefined);\n}\nfunction Switch(props) {\n const chs = children(() => props.children);\n const switchFunc = createMemo(() => {\n const ch = chs();\n const mps = Array.isArray(ch) ? ch : [ch];\n let func = () => undefined;\n for (let i = 0; i < mps.length; i++) {\n const index = i;\n const mp = mps[i];\n const prevFunc = func;\n const conditionValue = createMemo(() => prevFunc() ? undefined : mp.when, undefined, undefined);\n const condition = mp.keyed ? conditionValue : createMemo(conditionValue, undefined, {\n equals: (a, b) => !a === !b\n });\n func = () => prevFunc() || (condition() ? [index, conditionValue, mp] : undefined);\n }\n return func;\n });\n return createMemo(() => {\n const sel = switchFunc()();\n if (!sel) return props.fallback;\n const [index, conditionValue, mp] = sel;\n const child = mp.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn ? untrack(() => child(mp.keyed ? conditionValue() : () => {\n if (untrack(switchFunc)()?.[0] !== index) throw narrowedError(\"Match\");\n return conditionValue();\n })) : child;\n }, undefined, undefined);\n}\nfunction Match(props) {\n return props;\n}\nlet Errors;\nfunction resetErrorBoundaries() {\n Errors && [...Errors].forEach(fn => fn());\n}\nfunction ErrorBoundary(props) {\n let err;\n if (sharedConfig.context && sharedConfig.load) err = sharedConfig.load(sharedConfig.getContextId());\n const [errored, setErrored] = createSignal(err, undefined);\n Errors || (Errors = new Set());\n Errors.add(setErrored);\n onCleanup(() => Errors.delete(setErrored));\n return createMemo(() => {\n let e;\n if (e = errored()) {\n const f = props.fallback;\n return typeof f === \"function\" && f.length ? untrack(() => f(e, () => setErrored())) : f;\n }\n return catchError(() => props.children, setErrored);\n }, undefined, undefined);\n}\n\nconst suspenseListEquals = (a, b) => a.showContent === b.showContent && a.showFallback === b.showFallback;\nconst SuspenseListContext = /* #__PURE__ */createContext();\nfunction SuspenseList(props) {\n let [wrapper, setWrapper] = createSignal(() => ({\n inFallback: false\n })),\n show;\n const listContext = useContext(SuspenseListContext);\n const [registry, setRegistry] = createSignal([]);\n if (listContext) {\n show = listContext.register(createMemo(() => wrapper()().inFallback));\n }\n const resolved = createMemo(prev => {\n const reveal = props.revealOrder,\n tail = props.tail,\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {},\n reg = registry(),\n reverse = reveal === \"backwards\";\n if (reveal === \"together\") {\n const all = reg.every(inFallback => !inFallback());\n const res = reg.map(() => ({\n showContent: all && showContent,\n showFallback\n }));\n res.inFallback = !all;\n return res;\n }\n let stop = false;\n let inFallback = prev.inFallback;\n const res = [];\n for (let i = 0, len = reg.length; i < len; i++) {\n const n = reverse ? len - i - 1 : i,\n s = reg[n]();\n if (!stop && !s) {\n res[n] = {\n showContent,\n showFallback\n };\n } else {\n const next = !stop;\n if (next) inFallback = true;\n res[n] = {\n showContent: next,\n showFallback: !tail || next && tail === \"collapsed\" ? showFallback : false\n };\n stop = true;\n }\n }\n if (!stop) inFallback = false;\n res.inFallback = inFallback;\n return res;\n }, {\n inFallback: false\n });\n setWrapper(() => resolved);\n return createComponent(SuspenseListContext.Provider, {\n value: {\n register: inFallback => {\n let index;\n setRegistry(registry => {\n index = registry.length;\n return [...registry, inFallback];\n });\n return createMemo(() => resolved()[index], undefined, {\n equals: suspenseListEquals\n });\n }\n },\n get children() {\n return props.children;\n }\n });\n}\nfunction Suspense(props) {\n let counter = 0,\n show,\n ctx,\n p,\n flicker,\n error;\n const [inFallback, setFallback] = createSignal(false),\n SuspenseContext = getSuspenseContext(),\n store = {\n increment: () => {\n if (++counter === 1) setFallback(true);\n },\n decrement: () => {\n if (--counter === 0) setFallback(false);\n },\n inFallback,\n effects: [],\n resolved: false\n },\n owner = getOwner();\n if (sharedConfig.context && sharedConfig.load) {\n const key = sharedConfig.getContextId();\n let ref = sharedConfig.load(key);\n if (ref) {\n if (typeof ref !== \"object\" || ref.s !== 1) p = ref;else sharedConfig.gather(key);\n }\n if (p && p !== \"$$f\") {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n flicker = s;\n p.then(() => {\n if (sharedConfig.done) return set();\n sharedConfig.gather(key);\n setHydrateContext(ctx);\n set();\n setHydrateContext();\n }, err => {\n error = err;\n set();\n });\n }\n }\n const listContext = useContext(SuspenseListContext);\n if (listContext) show = listContext.register(store.inFallback);\n let dispose;\n onCleanup(() => dispose && dispose());\n return createComponent(SuspenseContext.Provider, {\n value: store,\n get children() {\n return createMemo(() => {\n if (error) throw error;\n ctx = sharedConfig.context;\n if (flicker) {\n flicker();\n return flicker = undefined;\n }\n if (ctx && p === \"$$f\") setHydrateContext();\n const rendered = createMemo(() => props.children);\n return createMemo(prev => {\n const inFallback = store.inFallback(),\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {};\n if ((!inFallback || p && p !== \"$$f\") && showContent) {\n store.resolved = true;\n dispose && dispose();\n dispose = ctx = p = undefined;\n resumeEffects(store.effects);\n return rendered();\n }\n if (!showFallback) return;\n if (dispose) return prev;\n return createRoot(disposer => {\n dispose = disposer;\n if (ctx) {\n setHydrateContext({\n id: ctx.id + \"F\",\n count: 0\n });\n ctx = undefined;\n }\n return props.fallback;\n }, owner);\n });\n });\n }\n });\n}\n\nconst DEV = undefined;\n\nexport { $DEVCOMP, $PROXY, $TRACK, DEV, ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, batch, cancelCallback, catchError, children, createComponent, createComputed, createContext, createDeferred, createEffect, createMemo, createReaction, createRenderEffect, createResource, createRoot, createSelector, createSignal, createUniqueId, enableExternalSource, enableHydration, enableScheduling, equalFn, from, getListener, getOwner, indexArray, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, requestCallback, resetErrorBoundaries, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };\n","import { createMemo, createRoot, createRenderEffect, untrack, sharedConfig, enableHydration, getOwner, createEffect, runWithOwner, createSignal, onCleanup, splitProps } from 'solid-js';\nexport { ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, createComponent, createRenderEffect as effect, getOwner, mergeProps, untrack } from 'solid-js';\n\nconst booleans = [\"allowfullscreen\", \"async\", \"alpha\",\n\"autofocus\",\n\"autoplay\", \"checked\", \"controls\", \"default\", \"disabled\", \"formnovalidate\", \"hidden\",\n\"indeterminate\", \"inert\",\n\"ismap\", \"loop\", \"multiple\", \"muted\", \"nomodule\", \"novalidate\", \"open\", \"playsinline\", \"readonly\", \"required\", \"reversed\", \"seamless\",\n\"selected\", \"adauctionheaders\",\n\"browsingtopics\",\n\"credentialless\",\n\"defaultchecked\", \"defaultmuted\", \"defaultselected\", \"defer\", \"disablepictureinpicture\", \"disableremoteplayback\", \"preservespitch\",\n\"shadowrootclonable\", \"shadowrootcustomelementregistry\",\n\"shadowrootdelegatesfocus\", \"shadowrootserializable\",\n\"sharedstoragewritable\"\n];\nconst Properties = /*#__PURE__*/new Set([\n\"className\", \"value\",\n\"readOnly\", \"noValidate\", \"formNoValidate\", \"isMap\", \"noModule\", \"playsInline\", \"adAuctionHeaders\",\n\"allowFullscreen\", \"browsingTopics\",\n\"defaultChecked\", \"defaultMuted\", \"defaultSelected\", \"disablePictureInPicture\", \"disableRemotePlayback\", \"preservesPitch\", \"shadowRootClonable\", \"shadowRootCustomElementRegistry\",\n\"shadowRootDelegatesFocus\", \"shadowRootSerializable\",\n\"sharedStorageWritable\",\n...booleans]);\nconst ChildProperties = /*#__PURE__*/new Set([\"innerHTML\", \"textContent\", \"innerText\", \"children\"]);\nconst Aliases = /*#__PURE__*/Object.assign(Object.create(null), {\n className: \"class\",\n htmlFor: \"for\"\n});\nconst PropAliases = /*#__PURE__*/Object.assign(Object.create(null), {\n class: \"className\",\n novalidate: {\n $: \"noValidate\",\n FORM: 1\n },\n formnovalidate: {\n $: \"formNoValidate\",\n BUTTON: 1,\n INPUT: 1\n },\n ismap: {\n $: \"isMap\",\n IMG: 1\n },\n nomodule: {\n $: \"noModule\",\n SCRIPT: 1\n },\n playsinline: {\n $: \"playsInline\",\n VIDEO: 1\n },\n readonly: {\n $: \"readOnly\",\n INPUT: 1,\n TEXTAREA: 1\n },\n adauctionheaders: {\n $: \"adAuctionHeaders\",\n IFRAME: 1\n },\n allowfullscreen: {\n $: \"allowFullscreen\",\n IFRAME: 1\n },\n browsingtopics: {\n $: \"browsingTopics\",\n IMG: 1\n },\n defaultchecked: {\n $: \"defaultChecked\",\n INPUT: 1\n },\n defaultmuted: {\n $: \"defaultMuted\",\n AUDIO: 1,\n VIDEO: 1\n },\n defaultselected: {\n $: \"defaultSelected\",\n OPTION: 1\n },\n disablepictureinpicture: {\n $: \"disablePictureInPicture\",\n VIDEO: 1\n },\n disableremoteplayback: {\n $: \"disableRemotePlayback\",\n AUDIO: 1,\n VIDEO: 1\n },\n preservespitch: {\n $: \"preservesPitch\",\n AUDIO: 1,\n VIDEO: 1\n },\n shadowrootclonable: {\n $: \"shadowRootClonable\",\n TEMPLATE: 1\n },\n shadowrootdelegatesfocus: {\n $: \"shadowRootDelegatesFocus\",\n TEMPLATE: 1\n },\n shadowrootserializable: {\n $: \"shadowRootSerializable\",\n TEMPLATE: 1\n },\n sharedstoragewritable: {\n $: \"sharedStorageWritable\",\n IFRAME: 1,\n IMG: 1\n }\n});\nfunction getPropAlias(prop, tagName) {\n const a = PropAliases[prop];\n return typeof a === \"object\" ? a[tagName] ? a[\"$\"] : undefined : a;\n}\nconst DelegatedEvents = /*#__PURE__*/new Set([\"beforeinput\", \"click\", \"dblclick\", \"contextmenu\", \"focusin\", \"focusout\", \"input\", \"keydown\", \"keyup\", \"mousedown\", \"mousemove\", \"mouseout\", \"mouseover\", \"mouseup\", \"pointerdown\", \"pointermove\", \"pointerout\", \"pointerover\", \"pointerup\", \"touchend\", \"touchmove\", \"touchstart\"]);\nconst SVGElements = /*#__PURE__*/new Set([\n\"altGlyph\", \"altGlyphDef\", \"altGlyphItem\", \"animate\", \"animateColor\", \"animateMotion\", \"animateTransform\", \"circle\", \"clipPath\", \"color-profile\", \"cursor\", \"defs\", \"desc\", \"ellipse\", \"feBlend\", \"feColorMatrix\", \"feComponentTransfer\", \"feComposite\", \"feConvolveMatrix\", \"feDiffuseLighting\", \"feDisplacementMap\", \"feDistantLight\", \"feDropShadow\", \"feFlood\", \"feFuncA\", \"feFuncB\", \"feFuncG\", \"feFuncR\", \"feGaussianBlur\", \"feImage\", \"feMerge\", \"feMergeNode\", \"feMorphology\", \"feOffset\", \"fePointLight\", \"feSpecularLighting\", \"feSpotLight\", \"feTile\", \"feTurbulence\", \"filter\", \"font\", \"font-face\", \"font-face-format\", \"font-face-name\", \"font-face-src\", \"font-face-uri\", \"foreignObject\", \"g\", \"glyph\", \"glyphRef\", \"hkern\", \"image\", \"line\", \"linearGradient\", \"marker\", \"mask\", \"metadata\", \"missing-glyph\", \"mpath\", \"path\", \"pattern\", \"polygon\", \"polyline\", \"radialGradient\", \"rect\",\n\"set\", \"stop\",\n\"svg\", \"switch\", \"symbol\", \"text\", \"textPath\",\n\"tref\", \"tspan\", \"use\", \"view\", \"vkern\"]);\nconst SVGNamespace = {\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\"\n};\nconst DOMElements = /*#__PURE__*/new Set([\"html\", \"base\", \"head\", \"link\", \"meta\", \"style\", \"title\", \"body\", \"address\", \"article\", \"aside\", \"footer\", \"header\", \"main\", \"nav\", \"section\", \"body\", \"blockquote\", \"dd\", \"div\", \"dl\", \"dt\", \"figcaption\", \"figure\", \"hr\", \"li\", \"ol\", \"p\", \"pre\", \"ul\", \"a\", \"abbr\", \"b\", \"bdi\", \"bdo\", \"br\", \"cite\", \"code\", \"data\", \"dfn\", \"em\", \"i\", \"kbd\", \"mark\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"small\", \"span\", \"strong\", \"sub\", \"sup\", \"time\", \"u\", \"var\", \"wbr\", \"area\", \"audio\", \"img\", \"map\", \"track\", \"video\", \"embed\", \"iframe\", \"object\", \"param\", \"picture\", \"portal\", \"source\", \"svg\", \"math\", \"canvas\", \"noscript\", \"script\", \"del\", \"ins\", \"caption\", \"col\", \"colgroup\", \"table\", \"tbody\", \"td\", \"tfoot\", \"th\", \"thead\", \"tr\", \"button\", \"datalist\", \"fieldset\", \"form\", \"input\", \"label\", \"legend\", \"meter\", \"optgroup\", \"option\", \"output\", \"progress\", \"select\", \"textarea\", \"details\", \"dialog\", \"menu\", \"summary\", \"details\", \"slot\", \"template\", \"acronym\", \"applet\", \"basefont\", \"bgsound\", \"big\", \"blink\", \"center\", \"content\", \"dir\", \"font\", \"frame\", \"frameset\", \"hgroup\", \"image\", \"keygen\", \"marquee\", \"menuitem\", \"nobr\", \"noembed\", \"noframes\", \"plaintext\", \"rb\", \"rtc\", \"shadow\", \"spacer\", \"strike\", \"tt\", \"xmp\", \"a\", \"abbr\", \"acronym\", \"address\", \"applet\", \"area\", \"article\", \"aside\", \"audio\", \"b\", \"base\", \"basefont\", \"bdi\", \"bdo\", \"bgsound\", \"big\", \"blink\", \"blockquote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\", \"center\", \"cite\", \"code\", \"col\", \"colgroup\", \"content\", \"data\", \"datalist\", \"dd\", \"del\", \"details\", \"dfn\", \"dialog\", \"dir\", \"div\", \"dl\", \"dt\", \"em\", \"embed\", \"fieldset\", \"figcaption\", \"figure\", \"font\", \"footer\", \"form\", \"frame\", \"frameset\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"i\", \"iframe\", \"image\", \"img\", \"input\", \"ins\", \"kbd\", \"keygen\", \"label\", \"legend\", \"li\", \"link\", \"main\", \"map\", \"mark\", \"marquee\", \"menu\", \"menuitem\", \"meta\", \"meter\", \"nav\", \"nobr\", \"noembed\", \"noframes\", \"noscript\", \"object\", \"ol\", \"optgroup\", \"option\", \"output\", \"p\", \"param\", \"picture\", \"plaintext\", \"portal\", \"pre\", \"progress\", \"q\", \"rb\", \"rp\", \"rt\", \"rtc\", \"ruby\", \"s\", \"samp\", \"script\", \"section\", \"select\", \"shadow\", \"slot\", \"small\", \"source\", \"spacer\", \"span\", \"strike\", \"strong\", \"style\", \"sub\", \"summary\", \"sup\", \"table\", \"tbody\", \"td\", \"template\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"time\", \"title\", \"tr\", \"track\", \"tt\", \"u\", \"ul\", \"var\", \"video\", \"wbr\", \"xmp\", \"input\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\",\n\"webview\",\n\"isindex\", \"listing\", \"multicol\", \"nextid\", \"noindex\", \"search\"]);\n\nconst memo = fn => createMemo(() => fn());\n\nfunction reconcileArrays(parentNode, a, b) {\n let bLength = b.length,\n aEnd = a.length,\n bEnd = bLength,\n aStart = 0,\n bStart = 0,\n after = a[aEnd - 1].nextSibling,\n map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node = bEnd < bLength ? bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart] : after;\n while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart])) a[aStart].remove();\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = a[--aEnd].nextSibling;\n parentNode.insertBefore(b[bStart++], a[aStart++].nextSibling);\n parentNode.insertBefore(b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map();\n let i = bStart;\n while (i < bEnd) map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart,\n sequence = 1,\n t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index) parentNode.insertBefore(b[bStart++], node);\n } else parentNode.replaceChild(b[bStart++], a[aStart++]);\n } else aStart++;\n } else a[aStart++].remove();\n }\n }\n}\n\nconst $$EVENTS = \"_$DX_DELEGATE\";\nfunction render(code, element, init, options = {}) {\n let disposer;\n createRoot(dispose => {\n disposer = dispose;\n element === document ? code() : insert(element, code(), element.firstChild ? null : undefined, init);\n }, options.owner);\n return () => {\n disposer();\n element.textContent = \"\";\n };\n}\nfunction template(html, isImportNode, isSVG, isMathML) {\n let node;\n const create = () => {\n const t = isMathML ? document.createElementNS(\"http://www.w3.org/1998/Math/MathML\", \"template\") : document.createElement(\"template\");\n t.innerHTML = html;\n return isSVG ? t.content.firstChild.firstChild : isMathML ? t.firstChild : t.content.firstChild;\n };\n const fn = isImportNode ? () => untrack(() => document.importNode(node || (node = create()), true)) : () => (node || (node = create())).cloneNode(true);\n fn.cloneNode = fn;\n return fn;\n}\nfunction delegateEvents(eventNames, document = window.document) {\n const e = document[$$EVENTS] || (document[$$EVENTS] = new Set());\n for (let i = 0, l = eventNames.length; i < l; i++) {\n const name = eventNames[i];\n if (!e.has(name)) {\n e.add(name);\n document.addEventListener(name, eventHandler);\n }\n }\n}\nfunction clearDelegatedEvents(document = window.document) {\n if (document[$$EVENTS]) {\n for (let name of document[$$EVENTS].keys()) document.removeEventListener(name, eventHandler);\n delete document[$$EVENTS];\n }\n}\nfunction setProperty(node, name, value) {\n if (isHydrating(node)) return;\n node[name] = value;\n}\nfunction setAttribute(node, name, value) {\n if (isHydrating(node)) return;\n if (value == null) node.removeAttribute(name);else node.setAttribute(name, value);\n}\nfunction setAttributeNS(node, namespace, name, value) {\n if (isHydrating(node)) return;\n if (value == null) node.removeAttributeNS(namespace, name);else node.setAttributeNS(namespace, name, value);\n}\nfunction setBoolAttribute(node, name, value) {\n if (isHydrating(node)) return;\n value ? node.setAttribute(name, \"\") : node.removeAttribute(name);\n}\nfunction className(node, value) {\n if (isHydrating(node)) return;\n if (value == null) node.removeAttribute(\"class\");else node.className = value;\n}\nfunction addEventListener(node, name, handler, delegate) {\n if (delegate) {\n if (Array.isArray(handler)) {\n node[`$$${name}`] = handler[0];\n node[`$$${name}Data`] = handler[1];\n } else node[`$$${name}`] = handler;\n } else if (Array.isArray(handler)) {\n const handlerFn = handler[0];\n node.addEventListener(name, handler[0] = e => handlerFn.call(node, handler[1], e));\n } else node.addEventListener(name, handler, typeof handler !== \"function\" && handler);\n}\nfunction classList(node, value, prev = {}) {\n const classKeys = Object.keys(value || {}),\n prevKeys = Object.keys(prev);\n let i, len;\n for (i = 0, len = prevKeys.length; i < len; i++) {\n const key = prevKeys[i];\n if (!key || key === \"undefined\" || value[key]) continue;\n toggleClassKey(node, key, false);\n delete prev[key];\n }\n for (i = 0, len = classKeys.length; i < len; i++) {\n const key = classKeys[i],\n classValue = !!value[key];\n if (!key || key === \"undefined\" || prev[key] === classValue || !classValue) continue;\n toggleClassKey(node, key, true);\n prev[key] = classValue;\n }\n return prev;\n}\nfunction style(node, value, prev) {\n if (!value) return prev ? setAttribute(node, \"style\") : value;\n const nodeStyle = node.style;\n if (typeof value === \"string\") return nodeStyle.cssText = value;\n typeof prev === \"string\" && (nodeStyle.cssText = prev = undefined);\n prev || (prev = {});\n value || (value = {});\n let v, s;\n for (s in prev) {\n value[s] == null && nodeStyle.removeProperty(s);\n delete prev[s];\n }\n for (s in value) {\n v = value[s];\n if (v !== prev[s]) {\n nodeStyle.setProperty(s, v);\n prev[s] = v;\n }\n }\n return prev;\n}\nfunction setStyleProperty(node, name, value) {\n value != null ? node.style.setProperty(name, value) : node.style.removeProperty(name);\n}\nfunction spread(node, props = {}, isSVG, skipChildren) {\n const prevProps = {};\n if (!skipChildren) {\n createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));\n }\n createRenderEffect(() => typeof props.ref === \"function\" && use(props.ref, node));\n createRenderEffect(() => assign(node, props, isSVG, true, prevProps, true));\n return prevProps;\n}\nfunction dynamicProperty(props, key) {\n const src = props[key];\n Object.defineProperty(props, key, {\n get() {\n return src();\n },\n enumerable: true\n });\n return props;\n}\nfunction use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n}\nfunction insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial) initial = [];\n if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n}\nfunction assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = false) {\n props || (props = {});\n for (const prop in prevProps) {\n if (!(prop in props)) {\n if (prop === \"children\") continue;\n prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef, props);\n }\n }\n for (const prop in props) {\n if (prop === \"children\") {\n if (!skipChildren) insertExpression(node, props.children);\n continue;\n }\n const value = props[prop];\n prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef, props);\n }\n}\nfunction hydrate$1(code, element, options = {}) {\n if (globalThis._$HY.done) return render(code, element, [...element.childNodes], options);\n sharedConfig.completed = globalThis._$HY.completed;\n sharedConfig.events = globalThis._$HY.events;\n sharedConfig.load = id => globalThis._$HY.r[id];\n sharedConfig.has = id => id in globalThis._$HY.r;\n sharedConfig.gather = root => gatherHydratable(element, root);\n sharedConfig.registry = new Map();\n sharedConfig.context = {\n id: options.renderId || \"\",\n count: 0\n };\n try {\n gatherHydratable(element, options.renderId);\n return render(code, element, [...element.childNodes], options);\n } finally {\n sharedConfig.context = null;\n }\n}\nfunction getNextElement(template) {\n let node,\n key,\n hydrating = isHydrating();\n if (!hydrating || !(node = sharedConfig.registry.get(key = getHydrationKey()))) {\n return template();\n }\n if (sharedConfig.completed) sharedConfig.completed.add(node);\n sharedConfig.registry.delete(key);\n return node;\n}\nfunction getNextMatch(el, nodeName) {\n while (el && el.localName !== nodeName) el = el.nextSibling;\n return el;\n}\nfunction getNextMarker(start) {\n let end = start,\n count = 0,\n current = [];\n if (isHydrating(start)) {\n while (end) {\n if (end.nodeType === 8) {\n const v = end.nodeValue;\n if (v === \"$\") count++;else if (v === \"/\") {\n if (count === 0) return [end, current];\n count--;\n }\n }\n current.push(end);\n end = end.nextSibling;\n }\n }\n return [end, current];\n}\nfunction runHydrationEvents() {\n if (sharedConfig.events && !sharedConfig.events.queued) {\n queueMicrotask(() => {\n const {\n completed,\n events\n } = sharedConfig;\n if (!events) return;\n events.queued = false;\n while (events.length) {\n const [el, e] = events[0];\n if (!completed.has(el)) return;\n events.shift();\n eventHandler(e);\n }\n if (sharedConfig.done) {\n sharedConfig.events = _$HY.events = null;\n sharedConfig.completed = _$HY.completed = null;\n }\n });\n sharedConfig.events.queued = true;\n }\n}\nfunction isHydrating(node) {\n return !!sharedConfig.context && !sharedConfig.done && (!node || node.isConnected);\n}\nfunction toPropertyName(name) {\n return name.toLowerCase().replace(/-([a-z])/g, (_, w) => w.toUpperCase());\n}\nfunction toggleClassKey(node, key, value) {\n const classNames = key.trim().split(/\\s+/);\n for (let i = 0, nameLen = classNames.length; i < nameLen; i++) node.classList.toggle(classNames[i], value);\n}\nfunction assignProp(node, prop, value, prev, isSVG, skipRef, props) {\n let isCE, isProp, isChildProp, propAlias, forceProp;\n if (prop === \"style\") return style(node, value, prev);\n if (prop === \"classList\") return classList(node, value, prev);\n if (value === prev) return prev;\n if (prop === \"ref\") {\n if (!skipRef) value(node);\n } else if (prop.slice(0, 3) === \"on:\") {\n const e = prop.slice(3);\n prev && node.removeEventListener(e, prev, typeof prev !== \"function\" && prev);\n value && node.addEventListener(e, value, typeof value !== \"function\" && value);\n } else if (prop.slice(0, 10) === \"oncapture:\") {\n const e = prop.slice(10);\n prev && node.removeEventListener(e, prev, true);\n value && node.addEventListener(e, value, true);\n } else if (prop.slice(0, 2) === \"on\") {\n const name = prop.slice(2).toLowerCase();\n const delegate = DelegatedEvents.has(name);\n if (!delegate && prev) {\n const h = Array.isArray(prev) ? prev[0] : prev;\n node.removeEventListener(name, h);\n }\n if (delegate || value) {\n addEventListener(node, name, value, delegate);\n delegate && delegateEvents([name]);\n }\n } else if (prop.slice(0, 5) === \"attr:\") {\n setAttribute(node, prop.slice(5), value);\n } else if (prop.slice(0, 5) === \"bool:\") {\n setBoolAttribute(node, prop.slice(5), value);\n } else if ((forceProp = prop.slice(0, 5) === \"prop:\") || (isChildProp = ChildProperties.has(prop)) || !isSVG && ((propAlias = getPropAlias(prop, node.tagName)) || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes(\"-\") || \"is\" in props)) {\n if (forceProp) {\n prop = prop.slice(5);\n isProp = true;\n } else if (isHydrating(node)) return value;\n if (prop === \"class\" || prop === \"className\") className(node, value);else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[propAlias || prop] = value;\n } else {\n const ns = isSVG && prop.indexOf(\":\") > -1 && SVGNamespace[prop.split(\":\")[0]];\n if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);\n }\n return value;\n}\nfunction eventHandler(e) {\n if (sharedConfig.registry && sharedConfig.events) {\n if (sharedConfig.events.find(([el, ev]) => ev === e)) return;\n }\n let node = e.target;\n const key = `$$${e.type}`;\n const oriTarget = e.target;\n const oriCurrentTarget = e.currentTarget;\n const retarget = value => Object.defineProperty(e, \"target\", {\n configurable: true,\n value\n });\n const handleNode = () => {\n const handler = node[key];\n if (handler && !node.disabled) {\n const data = node[`${key}Data`];\n data !== undefined ? handler.call(node, data, e) : handler.call(node, e);\n if (e.cancelBubble) return;\n }\n node.host && typeof node.host !== \"string\" && !node.host._$host && node.contains(e.target) && retarget(node.host);\n return true;\n };\n const walkUpTree = () => {\n while (handleNode() && (node = node._$host || node.parentNode || node.host));\n };\n Object.defineProperty(e, \"currentTarget\", {\n configurable: true,\n get() {\n return node || document;\n }\n });\n if (sharedConfig.registry && !sharedConfig.done) sharedConfig.done = _$HY.done = true;\n if (e.composedPath) {\n const path = e.composedPath();\n retarget(path[0]);\n for (let i = 0; i < path.length - 2; i++) {\n node = path[i];\n if (!handleNode()) break;\n if (node._$host) {\n node = node._$host;\n walkUpTree();\n break;\n }\n if (node.parentNode === oriCurrentTarget) {\n break;\n }\n }\n }\n else walkUpTree();\n retarget(oriTarget);\n}\nfunction insertExpression(parent, value, current, marker, unwrapArray) {\n const hydrating = isHydrating(parent);\n if (hydrating) {\n !current && (current = [...parent.childNodes]);\n let cleaned = [];\n for (let i = 0; i < current.length; i++) {\n const node = current[i];\n if (node.nodeType === 8 && node.data.slice(0, 2) === \"!$\") node.remove();else cleaned.push(node);\n }\n current = cleaned;\n }\n while (typeof current === \"function\") current = current();\n if (value === current) return current;\n const t = typeof value,\n multi = marker !== undefined;\n parent = multi && current[0] && current[0].parentNode || parent;\n if (t === \"string\" || t === \"number\") {\n if (hydrating) return current;\n if (t === \"number\") {\n value = value.toString();\n if (value === current) return current;\n }\n if (multi) {\n let node = current[0];\n if (node && node.nodeType === 3) {\n node.data !== value && (node.data = value);\n } else node = document.createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n current = parent.firstChild.data = value;\n } else current = parent.textContent = value;\n }\n } else if (value == null || t === \"boolean\") {\n if (hydrating) return current;\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\") v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n const currentArray = current && Array.isArray(current);\n if (normalizeIncomingArray(array, value, current, unwrapArray)) {\n createRenderEffect(() => current = insertExpression(parent, array, current, marker, true));\n return () => current;\n }\n if (hydrating) {\n if (!array.length) return current;\n if (marker === undefined) return current = [...parent.childNodes];\n let node = array[0];\n if (node.parentNode !== parent) return current;\n const nodes = [node];\n while ((node = node.nextSibling) !== marker) nodes.push(node);\n return current = nodes;\n }\n if (array.length === 0) {\n current = cleanChildren(parent, current, marker);\n if (multi) return current;\n } else if (currentArray) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else reconcileArrays(parent, current, array);\n } else {\n current && cleanChildren(parent);\n appendNodes(parent, array);\n }\n current = array;\n } else if (value.nodeType) {\n if (hydrating && value.parentNode) return current = multi ? [value] : value;\n if (Array.isArray(current)) {\n if (multi) return current = cleanChildren(parent, current, marker, value);\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !parent.firstChild) {\n parent.appendChild(value);\n } else parent.replaceChild(value, parent.firstChild);\n current = value;\n } else ;\n return current;\n}\nfunction normalizeIncomingArray(normalized, array, current, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length; i < len; i++) {\n let item = array[i],\n prev = current && current[normalized.length],\n t;\n if (item == null || item === true || item === false) ; else if ((t = typeof item) === \"object\" && item.nodeType) {\n normalized.push(item);\n } else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item, prev) || dynamic;\n } else if (t === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\") item = item();\n dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item], Array.isArray(prev) ? prev : [prev]) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else {\n const value = String(item);\n if (prev && prev.nodeType === 3 && prev.data === value) normalized.push(prev);else normalized.push(document.createTextNode(value));\n }\n }\n return dynamic;\n}\nfunction appendNodes(parent, array, marker = null) {\n for (let i = 0, len = array.length; i < len; i++) parent.insertBefore(array[i], marker);\n}\nfunction cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) return parent.textContent = \"\";\n const node = replacement || document.createTextNode(\"\");\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1; i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = el.parentNode === parent;\n if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && el.remove();\n } else inserted = true;\n }\n } else parent.insertBefore(node, marker);\n return [node];\n}\nfunction gatherHydratable(element, root) {\n const templates = element.querySelectorAll(`*[data-hk]`);\n for (let i = 0; i < templates.length; i++) {\n const node = templates[i];\n const key = node.getAttribute(\"data-hk\");\n if ((!root || key.startsWith(root)) && !sharedConfig.registry.has(key)) sharedConfig.registry.set(key, node);\n }\n}\nfunction getHydrationKey() {\n return sharedConfig.getNextContextId();\n}\nfunction NoHydration(props) {\n return sharedConfig.context ? undefined : props.children;\n}\nfunction Hydration(props) {\n return props.children;\n}\nconst voidFn = () => undefined;\nconst RequestContext = Symbol();\nfunction innerHTML(parent, content) {\n !sharedConfig.context && (parent.innerHTML = content);\n}\n\nfunction throwInBrowser(func) {\n const err = new Error(`${func.name} is not supported in the browser, returning undefined`);\n console.error(err);\n}\nfunction renderToString(fn, options) {\n throwInBrowser(renderToString);\n}\nfunction renderToStringAsync(fn, options) {\n throwInBrowser(renderToStringAsync);\n}\nfunction renderToStream(fn, options) {\n throwInBrowser(renderToStream);\n}\nfunction ssr(template, ...nodes) {}\nfunction ssrElement(name, props, children, needsId) {}\nfunction ssrClassList(value) {}\nfunction ssrStyle(value) {}\nfunction ssrAttribute(key, value) {}\nfunction ssrHydrationKey() {}\nfunction resolveSSRNode(node) {}\nfunction escape(html) {}\nfunction ssrSpread(props, isSVG, skipChildren) {}\n\nconst isServer = false;\nconst isDev = false;\nconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\nfunction createElement(tagName, isSVG = false, is = undefined) {\n return isSVG ? document.createElementNS(SVG_NAMESPACE, tagName) : document.createElement(tagName, {\n is\n });\n}\nconst hydrate = (...args) => {\n enableHydration();\n return hydrate$1(...args);\n};\nfunction Portal(props) {\n const {\n useShadow\n } = props,\n marker = document.createTextNode(\"\"),\n mount = () => props.mount || document.body,\n owner = getOwner();\n let content;\n let hydrating = !!sharedConfig.context;\n createEffect(() => {\n if (hydrating) getOwner().user = hydrating = false;\n content || (content = runWithOwner(owner, () => createMemo(() => props.children)));\n const el = mount();\n if (el instanceof HTMLHeadElement) {\n const [clean, setClean] = createSignal(false);\n const cleanup = () => setClean(true);\n createRoot(dispose => insert(el, () => !clean() ? content() : dispose(), null));\n onCleanup(cleanup);\n } else {\n const container = createElement(props.isSVG ? \"g\" : \"div\", props.isSVG),\n renderRoot = useShadow && container.attachShadow ? container.attachShadow({\n mode: \"open\"\n }) : container;\n Object.defineProperty(container, \"_$host\", {\n get() {\n return marker.parentNode;\n },\n configurable: true\n });\n insert(renderRoot, content);\n el.appendChild(container);\n props.ref && props.ref(container);\n onCleanup(() => el.removeChild(container));\n }\n }, undefined, {\n render: !hydrating\n });\n return marker;\n}\nfunction createDynamic(component, props) {\n const cached = createMemo(component);\n return createMemo(() => {\n const component = cached();\n switch (typeof component) {\n case \"function\":\n return untrack(() => component(props));\n case \"string\":\n const isSvg = SVGElements.has(component);\n const el = sharedConfig.context ? getNextElement() : createElement(component, isSvg, untrack(() => props.is));\n spread(el, props, isSvg);\n return el;\n }\n });\n}\nfunction Dynamic(props) {\n const [, others] = splitProps(props, [\"component\"]);\n return createDynamic(() => props.component, others);\n}\n\nexport { Aliases, voidFn as Assets, ChildProperties, DOMElements, DelegatedEvents, Dynamic, Hydration, voidFn as HydrationScript, NoHydration, Portal, Properties, RequestContext, SVGElements, SVGNamespace, addEventListener, assign, classList, className, clearDelegatedEvents, createDynamic, delegateEvents, dynamicProperty, escape, voidFn as generateHydrationScript, voidFn as getAssets, getHydrationKey, getNextElement, getNextMarker, getNextMatch, getPropAlias, voidFn as getRequestEvent, hydrate, innerHTML, insert, isDev, isServer, memo, render, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, runHydrationEvents, setAttribute, setAttributeNS, setBoolAttribute, setProperty, setStyleProperty, spread, ssr, ssrAttribute, ssrClassList, ssrElement, ssrHydrationKey, ssrSpread, ssrStyle, style, template, use, voidFn as useAssets };\n","export default \"data:image/svg+xml,%3csvg%20width='44'%20height='40'%20viewBox='0%200%2044%2040'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M36.4826%2032.6733C35.865%2033.1908%2035.1941%2033.6282%2034.4904%2033.957L33.74%2034.2621L29.7612%2035.8775C27.1272%2036.125%2024.4866%2036.253%2021.8465%2036.2542C21.235%2036.2549%2020.6236%2036.2482%2020.0127%2036.2348V33.2478L36.4826%2032.6733Z'%20fill='%239EACBA'/%3e%3cpath%20d='M0.438355%2018.8047C0.245806%2020.9769%200.245812%2023.1226%200.438355%2025.2946C0.535045%2025.9265%200.94889%2026.5048%201.4516%2026.8841C2.21046%2027.3799%202.95285%2027.8531%203.87299%2027.9711C4.74581%2027.9246%205.47724%2026.84%205.59973%2026.0356C5.89635%2023.3667%205.89636%2020.7328%205.59973%2018.0638C5.47724%2017.2593%204.74582%2016.1747%203.873%2016.1282C2.95286%2016.2462%202.21046%2016.7194%201.45161%2017.2152C0.948896%2017.5945%200.535045%2018.1729%200.438355%2018.8047Z'%20fill='%2351D6A1'/%3e%3cpath%20d='M43.0616%2018.8047C43.2541%2020.9769%2043.2541%2023.1226%2043.0616%2025.2946C42.9649%2025.9265%2042.551%2026.5048%2042.0483%2026.8841C41.2895%2027.3799%2040.5471%2027.8531%2039.6269%2027.9711C38.7541%2027.9246%2038.0227%2026.84%2037.9002%2026.0356C37.6036%2023.3667%2037.6036%2020.7328%2037.9002%2018.0638C38.0227%2017.2593%2038.7541%2016.1747%2039.6269%2016.1282C40.5471%2016.2462%2041.2895%2016.7194%2042.0483%2017.2152C42.551%2017.5945%2042.9649%2018.1729%2043.0616%2018.8047Z'%20fill='%2351D6A1'/%3e%3cpath%20d='M25.8389%208.85439H21.8867V7.22803H21.9359C22.2919%207.22803%2022.6365%207.24805%2022.9641%207.28506C24.6208%207.47311%2025.8389%208.10461%2025.8389%208.85439Z'%20fill='%2351D6A1'/%3e%3cpath%20d='M22.9637%208.85422V11.641H20.9072V3.74219H21.8863V8.85422H22.9637Z'%20fill='%23171A3B'/%3e%3cpath%20d='M25.8393%208.85439C25.8393%209.60419%2024.6212%2010.2357%2022.9645%2010.4237C22.6369%2010.4607%2022.2923%2010.4808%2021.9362%2010.4808C21.5801%2010.4808%2021.2356%2010.4607%2020.908%2010.4237C19.2513%2010.2357%2018.0332%209.60419%2018.0332%208.85439C18.0332%208.104%2019.2513%207.47311%2020.908%207.28506C21.2204%207.24987%2021.5486%207.22985%2021.8871%207.22803V8.85439H25.8393Z'%20fill='%2351D6A1'/%3e%3cpath%20d='M21.8871%208.85499V35.245H21.8465C21.235%2035.2456%2020.6235%2035.2389%2020.0127%2035.2256C17.1712%2035.1637%2014.331%2034.9538%2011.5017%2034.5856C7.74793%2034.0979%204.29685%2030.281%203.74784%2026.4459C3.32624%2023.5019%203.32624%2020.598%203.74784%2017.6541C4.29684%2013.819%207.74793%2010.0021%2011.5017%209.5144C14.9401%209.06731%2018.393%208.85317%2021.8465%208.85499H21.8871Z'%20fill='%23E7E9EB'/%3e%3cpath%20d='M40.114%2026.4452C39.7718%2028.7455%2038.3748%2031.0864%2036.4821%2032.6728C35.8646%2033.1902%2035.1936%2033.6276%2034.49%2033.9564C34.2437%2034.0716%2033.9931%2034.1736%2033.7396%2034.2615C33.2888%2034.4168%2032.8272%2034.5272%2032.3601%2034.5848C28.8781%2035.0149%2025.3827%2035.2406%2021.8867%2035.2442V8.85425C25.3821%208.85789%2028.8787%209.08355%2032.3601%209.51366C36.1382%209.98014%2039.5516%2013.8729%2040.114%2017.6533C40.5489%2020.5785%2040.5489%2023.5206%2040.114%2026.4452Z'%20fill='%23D1D3D4'/%3e%3cpath%20d='M27.1787%2013.3372C28.7256%2013.4409%2030.2804%2013.5888%2031.834%2013.7805C33.5282%2013.9898%2035.5612%2016.263%2035.8623%2018.2854C36.2336%2020.7829%2036.2336%2023.3159%2035.8623%2025.8127C35.6791%2027.0417%2034.8396%2028.4416%2033.7217%2029.3782C33.3772%2029.6675%2033.0233%2029.8974%2032.6709%2030.0618C32.5593%2030.1145%2032.4464%2030.1603%2032.3359%2030.1985C32.1609%2030.259%2031.9925%2030.2992%2031.835%2030.3186C28.467%2030.7347%2025.0907%2030.9456%2021.7998%2030.9456C21.2369%2030.9456%2020.667%2030.9391%2020.1064%2030.927C17.3961%2030.8675%2014.6875%2030.6643%2012.0566%2030.3215C11.6382%2030.2669%2011.1776%2030.0829%2010.7197%2029.7961L27.1787%2013.3372ZM21.7988%2013.1536C22.397%2013.1536%2022.9986%2013.1605%2023.6016%2013.175H23.6006C24.7855%2013.2017%2025.9795%2013.2559%2027.1777%2013.3372L10.7188%2029.7961C10.3196%2029.5462%209.92292%2029.2179%209.55957%2028.8303C9.2952%2028.5484%209.05604%2028.2435%208.84863%2027.927V27.926C8.40193%2027.2445%208.10127%2026.5082%208.00488%2025.8352C7.82534%2024.5778%207.73289%2023.3374%207.73047%2022.0969C7.72805%2020.825%207.8205%2019.5531%208.00488%2018.2629C8.14621%2017.2772%208.72802%2016.1571%209.56152%2015.2678C10.341%2014.4363%2011.2736%2013.8785%2012.0566%2013.7766C13.5174%2013.5867%2014.9995%2013.4403%2016.4912%2013.3372C18.2497%2013.2152%2020.0239%2013.1536%2021.7988%2013.1536Z'%20fill='%2333383F'/%3e%3cpath%20d='M21.8877%200.164557V4.90412C21.5382%204.90412%2021.207%204.8289%2020.9086%204.69301C20.0878%204.32054%2019.5176%203.49371%2019.5176%202.53403C19.5176%201.22554%2020.5786%200.164557%2021.8877%200.164557Z'%20fill='%2351D6A1'/%3e%3cpath%20d='M29.7612%2035.877L20.0127%2039.8352V36.2343C20.6236%2036.2476%2021.235%2036.2543%2021.8465%2036.2537C24.4866%2036.2525%2027.1272%2036.1245%2029.7612%2035.877Z'%20fill='%23D1D3D4'/%3e%3cpath%20d='M24.2562%202.53403C24.2562%203.45488%2023.7309%204.2532%2022.9641%204.64569C22.6414%204.8107%2022.275%204.90411%2021.8867%204.90411V0.164551C23.1952%200.164551%2024.2562%201.22553%2024.2562%202.53403Z'%20fill='%2351D6A1'/%3e%3cpath%20d='M22.9641%204.646V7.28541C22.6365%207.24841%2022.2919%207.22839%2021.9359%207.22839H21.8867V4.90441C22.275%204.90441%2022.6414%204.811%2022.9641%204.646Z'%20fill='%2301052B'/%3e%3cpath%20d='M15.4282%2025.5157C14.6141%2025.6903%2014.1949%2025.6903%2013.3808%2025.5157C12.8325%2025.2805%2012.4157%2024.7097%2012.2918%2024.124C12.0811%2022.4009%2012.0811%2020.7336%2012.2918%2019.0104C12.4157%2018.4248%2012.8325%2017.854%2013.3808%2017.6188C14.1949%2017.4441%2014.6141%2017.4441%2015.4282%2017.6188C15.9765%2017.854%2016.3933%2018.4248%2016.5173%2019.0104C16.7279%2020.7336%2016.7279%2022.4009%2016.5173%2024.124C16.3933%2024.7097%2015.9765%2025.2805%2015.4282%2025.5157Z'%20fill='%2351D6A1'/%3e%3cpath%20d='M29.4946%2025.5157C28.6805%2025.6903%2028.2613%2025.6903%2027.4472%2025.5157C26.8989%2025.2805%2026.4821%2024.7097%2026.3582%2024.124C26.1475%2022.4009%2026.1475%2020.7336%2026.3582%2019.0104C26.4821%2018.4248%2026.8989%2017.854%2027.4472%2017.6188C28.2613%2017.4441%2028.6805%2017.4441%2029.4946%2017.6188C30.0429%2017.854%2030.4597%2018.4248%2030.5837%2019.0104C30.7943%2020.7336%2030.7943%2022.4009%2030.5837%2024.124C30.4597%2024.7097%2030.0429%2025.2805%2029.4946%2025.5157Z'%20fill='%2351D6A1'/%3e%3cpath%20d='M18.9688%2024.187H23.91C24.2911%2024.187%2024.6004%2024.5023%2024.6004%2024.8906V24.9011C24.6004%2026.6789%2023.184%2028.1222%2021.4394%2028.1222C19.6948%2028.1222%2018.2783%2026.6789%2018.2783%2024.9011V24.8906C18.2783%2024.5023%2018.5877%2024.187%2018.9688%2024.187Z'%20fill='%2351D6A1'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='28'%20height='28'%20viewBox='0%200%2028%2028'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20width='28'%20height='28'%20rx='14'%20fill='%23EFEFEF'/%3e%3cpath%20d='M20.667%209.83325L7.33366%209.83325'%20stroke='%23858B93'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3cpath%20d='M16.5%2014L7.33333%2014'%20stroke='%23858B93'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3cpath%20d='M11.5%2018.1667H7.33333'%20stroke='%23858B93'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='29'%20height='28'%20viewBox='0%200%2029%2028'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M11.5977%2016.0232C11.8613%2015.7596%2012.2882%2015.7596%2012.5518%2016.0232C12.8152%2016.2868%2012.8153%2016.7137%2012.5518%2016.9773L7.87109%2021.658H11.1221C11.4949%2021.658%2011.7969%2021.9609%2011.7969%2022.3337C11.7967%2022.7064%2011.4948%2023.0085%2011.1221%2023.0085H6.24121C5.86853%2023.0085%205.56658%2022.7064%205.56641%2022.3337V17.4529C5.56641%2017.0801%205.86842%2016.7771%206.24121%2016.7771C6.614%2016.7771%206.91602%2017.0801%206.91602%2017.4529V20.7039L11.5977%2016.0232ZM22.9082%204.99194C23.2808%204.99212%2023.583%205.29406%2023.583%205.66675V10.5476C23.583%2010.9203%2023.2808%2011.2222%2022.9082%2011.2224C22.5354%2011.2224%2022.2324%2010.9204%2022.2324%2010.5476V7.29663L17.5518%2011.9773C17.2882%2012.2408%2016.8613%2012.2407%2016.5977%2011.9773C16.3341%2011.7137%2016.3341%2011.2868%2016.5977%2011.0232L21.2783%206.34155H18.0273C17.6546%206.34155%2017.3516%206.03954%2017.3516%205.66675C17.3516%205.29396%2017.6546%204.99194%2018.0273%204.99194H22.9082Z'%20fill='%23858B93'%20stroke='%23858B93'%20stroke-width='0.1'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='29'%20height='28'%20viewBox='0%200%2029%2028'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M12.0737%2015.8249C12.4464%2015.8249%2012.7493%2016.127%2012.7495%2016.4997V21.3805C12.7495%2021.7533%2012.4465%2022.0563%2012.0737%2022.0563C11.7011%2022.0561%2011.3989%2021.7532%2011.3989%2021.3805V18.1296L6.71826%2022.8102C6.45466%2023.0738%206.02679%2023.0738%205.76318%2022.8102C5.49996%2022.5466%205.49985%2022.1196%205.76318%2021.8561L10.4438%2017.1755H7.19287C6.82019%2017.1753%206.51807%2016.8724%206.51807%2016.4997C6.51824%2016.1271%206.82029%2015.825%207.19287%2015.8249H12.0737ZM22.4302%205.18913C22.6937%204.9258%2023.1207%204.92591%2023.3843%205.18913C23.6479%205.45274%2023.6479%205.88061%2023.3843%206.14421L18.7046%2010.8249H21.9546C22.3273%2010.8249%2022.6302%2011.127%2022.6304%2011.4997C22.6304%2011.8725%2022.3274%2012.1755%2021.9546%2012.1755H17.0737C16.7011%2012.1753%2016.3989%2011.8724%2016.3989%2011.4997V6.61882C16.3991%206.24624%2016.7012%205.94419%2017.0737%205.94402C17.4464%205.94402%2017.7494%206.24613%2017.7495%206.61882V9.8698L22.4302%205.18913Z'%20fill='%23858B93'%20stroke='%23858B93'%20stroke-width='0.1'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='29'%20height='28'%20viewBox='0%200%2029%2028'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M5.55273%2013.6665C5.55273%2013.3904%205.95149%2013.1665%206.44338%2013.1665L20.6139%2013.1665C21.1058%2013.1665%2021.5046%2013.3904%2021.5046%2013.6665C21.5046%2013.9426%2021.1058%2014.1665%2020.6139%2014.1665H6.44338C5.95149%2014.1665%205.55273%2013.9426%205.55273%2013.6665Z'%20stroke='%23858B93'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='34'%20height='34'%20viewBox='0%200%2034%2034'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M10.2391%208.55011C9.85199%208.16298%209.22434%208.16298%208.83722%208.55011C8.45009%208.93723%208.45009%209.56488%208.83722%209.95201L15.885%2016.9998L8.83728%2024.0476C8.45016%2024.4347%208.45016%2025.0624%208.83728%2025.4495C9.22441%2025.8366%209.85206%2025.8366%2010.2392%2025.4495L17.2869%2018.4017L24.3346%2025.4494C24.7217%2025.8365%2025.3494%2025.8365%2025.7365%2025.4494C26.1236%2025.0623%2026.1236%2024.4346%2025.7365%2024.0475L18.6888%2016.9998L25.7366%209.95207C26.1237%209.56495%2026.1237%208.9373%2025.7366%208.55017C25.3495%208.16305%2024.7218%208.16305%2024.3347%208.55017L17.2869%2015.5979L10.2391%208.55011Z'%20fill='%23858B93'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M11.9912%202.92969C11.4392%202.92969%2010.9912%203.37769%2010.9912%203.92969V10.9297H3.99121C3.43921%2010.9297%202.99121%2011.3777%202.99121%2011.9297C2.99121%2012.4817%203.43921%2012.9297%203.99121%2012.9297H10.9912V19.9297C10.9912%2020.4817%2011.4392%2020.9297%2011.9912%2020.9297C12.5432%2020.9297%2012.9912%2020.4817%2012.9912%2019.9297V12.9297H19.9912C20.5432%2012.9297%2020.9912%2012.4817%2020.9912%2011.9297C20.9912%2011.3777%2020.5432%2010.9297%2019.9912%2010.9297H12.9912V3.92969C12.9912%203.37769%2012.5432%202.92969%2011.9912%202.92969Z'%20fill='%23858B93'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='32'%20height='32'%20viewBox='0%200%2032%2032'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20width='32'%20height='32'%20rx='16'%20fill='white'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M15.6464%2010.3132C15.8417%2010.1179%2016.1583%2010.1179%2016.3536%2010.3132L20.3536%2014.3132C20.5488%2014.5085%2020.5488%2014.825%2020.3536%2015.0203C20.1583%2015.2156%2019.8417%2015.2156%2019.6464%2015.0203L16.5%2011.8739L16.5%2021.3334C16.5%2021.6096%2016.2761%2021.8334%2016%2021.8334C15.7239%2021.8334%2015.5%2021.6096%2015.5%2021.3334L15.5%2011.8739L12.3536%2015.0203C12.1583%2015.2156%2011.8417%2015.2156%2011.6464%2015.0203C11.4512%2014.825%2011.4512%2014.5085%2011.6464%2014.3132L15.6464%2010.3132Z'%20fill='%23858B93'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='28'%20height='28'%20viewBox='0%200%2028%2028'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20width='28'%20height='28'%20rx='14'%20fill='%231AAF74'%20fill-opacity='0.1'/%3e%3cpath%20d='M20.667%209.83325L7.33366%209.83325'%20stroke='%231AAF74'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3cpath%20d='M16.5%2014L7.33333%2014'%20stroke='%231AAF74'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3cpath%20d='M11.5%2018.1667H7.33333'%20stroke='%231AAF74'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='24'%20height='25'%20viewBox='0%200%2024%2025'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3ccircle%20cx='12'%20cy='6.5'%20r='4'%20stroke='%23858B93'%20stroke-width='1.3'/%3e%3cellipse%20cx='12'%20cy='17.5'%20rx='7'%20ry='4'%20stroke='%23858B93'%20stroke-width='1.3'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='24'%20height='25'%20viewBox='0%200%2024%2025'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M2%2012.5C2%207.78595%202%205.42893%203.46447%203.96447C4.92893%202.5%207.28595%202.5%2012%202.5C16.714%202.5%2019.0711%202.5%2020.5355%203.96447C22%205.42893%2022%207.78595%2022%2012.5C22%2017.214%2022%2019.5711%2020.5355%2021.0355C19.0711%2022.5%2016.714%2022.5%2012%2022.5C7.28595%2022.5%204.92893%2022.5%203.46447%2021.0355C2%2019.5711%202%2017.214%202%2012.5Z'%20stroke='%23858B93'%20stroke-width='1.3'/%3e%3cpath%20d='M7%2014.5L8.79689%2012.3437C9.50894%2011.4893%209.86496%2011.062%2010.3333%2011.062C10.8017%2011.062%2011.1577%2011.4893%2011.8698%2012.3437L12.1302%2012.6563C12.8423%2013.5107%2013.1983%2013.938%2013.6667%2013.938C14.135%2013.938%2014.4911%2013.5107%2015.2031%2012.6563L17%2010.5'%20stroke='%23858B93'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='24'%20height='25'%20viewBox='0%200%2024%2025'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M22%2011V12.5C22%2017.214%2022%2019.5711%2020.5355%2021.0355C19.0711%2022.5%2016.714%2022.5%2012%2022.5C7.28595%2022.5%204.92893%2022.5%203.46447%2021.0355C2%2019.5711%202%2017.214%202%2012.5C2%207.78595%202%205.42893%203.46447%203.96447C4.92893%202.5%207.28595%202.5%2012%202.5H13.5'%20stroke='%23858B93'%20stroke-width='1.3'%20stroke-linecap='round'/%3e%3cpath%20d='M16.652%203.95506L17.3009%203.30624C18.3759%202.23125%2020.1188%202.23125%2021.1938%203.30624C22.2687%204.38124%2022.2687%206.12415%2021.1938%207.19914L20.5449%207.84795M16.652%203.95506C16.652%203.95506%2016.7331%205.33379%2017.9497%206.55032C19.1662%207.76685%2020.5449%207.84795%2020.5449%207.84795M16.652%203.95506L10.6872%209.91993C10.2832%2010.3239%2010.0812%2010.5259%209.90743%2010.7487C9.70249%2011.0114%209.52679%2011.2957%209.38344%2011.5965C9.26191%2011.8515%209.17157%2012.1225%208.99089%2012.6646L8.41242%2014.4M20.5449%207.84795L14.5801%2013.8128C14.1761%2014.2168%2013.9741%2014.4188%2013.7513%2014.5926C13.4886%2014.7975%2013.2043%2014.9732%2012.9035%2015.1166C12.6485%2015.2381%2012.3775%2015.3284%2011.8354%2015.5091L10.1%2016.0876M10.1%2016.0876L8.97709%2016.4619C8.71035%2016.5508%208.41626%2016.4814%208.21744%2016.2826C8.01862%2016.0837%207.9492%2015.7897%208.03811%2015.5229L8.41242%2014.4M10.1%2016.0876L8.41242%2014.4'%20stroke='%23858B93'%20stroke-width='1.5'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='20'%20height='21'%20viewBox='0%200%2020%2021'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M9.58366%202.79175C5.55658%202.79175%202.29199%206.05634%202.29199%2010.0834C2.29199%2014.1105%205.55658%2017.3751%209.58366%2017.3751C13.6107%2017.3751%2016.8753%2014.1105%2016.8753%2010.0834C16.8753%206.05634%2013.6107%202.79175%209.58366%202.79175ZM1.04199%2010.0834C1.04199%205.36598%204.86623%201.54175%209.58366%201.54175C14.3011%201.54175%2018.1253%205.36598%2018.1253%2010.0834C18.1253%2012.2172%2017.3429%2014.1682%2016.0494%2015.6653L18.7756%2018.3915C19.0197%2018.6356%2019.0197%2019.0313%2018.7756%2019.2754C18.5315%2019.5194%2018.1358%2019.5194%2017.8917%2019.2754L15.1655%2016.5491C13.6684%2017.8427%2011.7174%2018.6251%209.58366%2018.6251C4.86623%2018.6251%201.04199%2014.8008%201.04199%2010.0834Z'%20fill='%23858B93'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='24'%20height='25'%20viewBox='0%200%2024%2025'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M17%2012.5C17%2011.3954%2017.8954%2010.5%2019%2010.5C20.1046%2010.5%2021%2011.3954%2021%2012.5C21%2013.6046%2020.1046%2014.5%2019%2014.5C17.8954%2014.5%2017%2013.6046%2017%2012.5Z'%20fill='%23858B93'/%3e%3cpath%20d='M10%2012.5C10%2011.3954%2010.8954%2010.5%2012%2010.5C13.1046%2010.5%2014%2011.3954%2014%2012.5C14%2013.6046%2013.1046%2014.5%2012%2014.5C10.8954%2014.5%2010%2013.6046%2010%2012.5Z'%20fill='%23858B93'/%3e%3cpath%20d='M3%2012.5C3%2011.3954%203.89543%2010.5%205%2010.5C6.10457%2010.5%207%2011.3954%207%2012.5C7%2013.6046%206.10457%2014.5%205%2014.5C3.89543%2014.5%203%2013.6046%203%2012.5Z'%20fill='%23858B93'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='24'%20height='25'%20viewBox='0%200%2024%2025'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M7%208.5C7%205.73858%209.23858%203.5%2012%203.5C14.7614%203.5%2017%205.73858%2017%208.5V11.5C17%2014.2614%2014.7614%2016.5%2012%2016.5C9.23858%2016.5%207%2014.2614%207%2011.5V8.5Z'%20stroke='%23858B93'%20stroke-width='1.5'/%3e%3cpath%20d='M11%208.5H13'%20stroke='%23858B93'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3cpath%20d='M10%2011.5L14%2011.5'%20stroke='%23858B93'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3cpath%20d='M20%2010.5V11.5C20%2015.9183%2016.4183%2019.5%2012%2019.5C7.58172%2019.5%204%2015.9183%204%2011.5V10.5'%20stroke='%23858B93'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3cpath%20d='M12%2019.5V22.5'%20stroke='%23858B93'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='21'%20height='21'%20viewBox='0%200%2021%2021'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M12.25%202.49258C13.5179%201.2247%2015.5735%201.2247%2016.8414%202.49258C18.1093%203.76046%2018.1093%205.8161%2016.8414%207.08398L10.5131%2013.4123C10.1564%2013.769%209.9386%2013.9869%209.69583%2014.1762C9.40981%2014.3993%209.10033%2014.5906%208.77287%2014.7466C8.49494%2014.8791%208.20269%2014.9765%207.72413%2015.136L5.49692%2015.8784L4.9622%2016.0566C4.48358%2016.2162%203.95589%2016.0916%203.59915%2015.7349C3.2424%2015.3781%203.11783%2014.8504%203.27737%2014.3718L4.19801%2011.6099C4.3575%2011.1313%204.4549%2010.8391%204.58736%2010.5611C4.74342%2010.2337%204.93469%209.9242%205.15778%209.63817C5.34714%209.3954%205.56498%209.17759%205.92169%208.82091L12.25%202.49258ZM5.46809%2014.5704L4.76362%2013.8659L5.37064%2012.0449C5.54737%2011.5147%205.62037%2011.2991%205.71577%2011.0989C5.83276%2010.8534%205.97616%2010.6214%206.14342%2010.4069C6.27979%2010.2321%206.43997%2010.0704%206.83516%209.67521L11.7443%204.76607C11.9469%205.27439%2012.2898%205.88791%2012.8679%206.46606C13.4461%207.04422%2014.0596%207.38707%2014.5679%207.5897L9.65879%2012.4988C9.2636%2012.894%209.1019%2013.0542%208.92706%2013.1906C8.71262%2013.3578%208.4806%2013.5012%208.2351%2013.6182C8.03493%2013.7136%207.81935%2013.7866%207.28915%2013.9634L5.46809%2014.5704ZM15.564%206.59368C15.4608%206.57102%2015.3317%206.53694%2015.1851%206.48604C14.7817%206.34611%2014.2511%206.08149%2013.7518%205.58218C13.2525%205.08287%2012.9879%204.5523%2012.848%204.14895C12.7971%204.00226%2012.763%203.87323%2012.7403%203.77004L13.1339%203.37647C13.9136%202.59674%2015.1778%202.59674%2015.9575%203.37647C16.7373%204.15619%2016.7373%205.42038%2015.9575%206.2001L15.564%206.59368ZM3.209%2018.8333C3.209%2018.4882%203.48882%2018.2083%203.834%2018.2083H17.1673V19.4583H3.834C3.48882%2019.4583%203.209%2019.1785%203.209%2018.8333Z'%20fill='%23858B93'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='21'%20height='21'%20viewBox='0%200%2021%2021'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M10.4994%202.79166C9.68396%202.79166%208.9886%203.31251%208.7309%204.0416C8.61587%204.36705%208.2588%204.53763%207.93335%204.4226C7.6079%204.30757%207.43733%203.95049%207.55235%203.62504C7.98105%202.41215%209.13775%201.54166%2010.4994%201.54166C11.861%201.54166%2013.0177%202.41215%2013.4464%203.62504C13.5614%203.95049%2013.3908%204.30757%2013.0654%204.4226C12.74%204.53763%2012.3829%204.36705%2012.2678%204.0416C12.0101%203.31251%2011.3148%202.79166%2010.4994%202.79166Z'%20fill='%23858B93'/%3e%3cpath%20d='M2.79102%205.49999C2.79102%205.15481%203.07084%204.87499%203.41602%204.87499H17.5828C17.9279%204.87499%2018.2078%205.15481%2018.2078%205.49999C18.2078%205.84517%2017.9279%206.12499%2017.5828%206.12499H3.41602C3.07084%206.12499%202.79102%205.84517%202.79102%205.49999Z'%20fill='%23858B93'/%3e%3cpath%20d='M5.42859%207.54175C5.40563%207.19733%205.10781%206.93675%204.7634%206.95971C4.41898%206.98267%204.15839%207.28048%204.18135%207.6249L4.56756%2013.418C4.63881%2014.487%204.69636%2015.3504%204.83134%2016.028C4.97167%2016.7324%205.21035%2017.3208%205.70335%2017.782C6.19634%2018.2432%206.7993%2018.4422%207.51151%2018.5354C8.19654%2018.625%209.06191%2018.625%2010.1332%2018.625H10.8656C11.9369%2018.625%2012.8023%2018.625%2013.4873%2018.5354C14.1995%2018.4422%2014.8025%2018.2432%2015.2955%2017.782C15.7885%2017.3208%2016.0272%2016.7324%2016.1675%2016.028C16.3025%2015.3504%2016.36%2014.487%2016.4313%2013.418L16.8175%207.6249C16.8404%207.28048%2016.5798%206.98267%2016.2354%206.95971C15.891%206.93675%2015.5932%207.19733%2015.5702%207.54175L15.187%2013.291C15.1121%2014.4142%2015.0587%2015.1957%2014.9416%2015.7837C14.828%2016.3541%2014.6693%2016.656%2014.4415%2016.8692C14.2137%2017.0824%2013.9019%2017.2205%2013.3252%2017.296C12.7307%2017.3737%2011.9474%2017.375%2010.8216%2017.375H10.1772C9.05148%2017.375%208.26814%2017.3737%207.67364%2017.296C7.09697%2017.2205%206.78517%2017.0824%206.55733%2016.8692C6.32948%2016.656%206.17087%2016.3541%206.05725%2015.7837C5.94011%2015.1957%205.88675%2014.4142%205.81187%2013.291L5.42859%207.54175Z'%20fill='%23858B93'/%3e%3cpath%20d='M8.3539%209.04476C8.69736%209.01041%209.00364%209.261%209.03799%209.60447L9.45465%2013.7711C9.489%2014.1146%209.23841%2014.4209%208.89494%2014.4552C8.55148%2014.4896%208.2452%2014.239%208.21086%2013.8955L7.79419%209.72885C7.75984%209.38538%208.01043%209.0791%208.3539%209.04476Z'%20fill='%23858B93'/%3e%3cpath%20d='M13.2047%209.72885C13.239%209.38538%2012.9884%209.0791%2012.6449%209.04476C12.3015%209.01041%2011.9952%209.261%2011.9609%209.60447L11.5442%2013.7711C11.5098%2014.1146%2011.7604%2014.4209%2012.1039%2014.4552C12.4474%2014.4896%2012.7536%2014.239%2012.788%2013.8955L13.2047%209.72885Z'%20fill='%23858B93'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='32'%20height='32'%20viewBox='0%200%2032%2032'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20width='32'%20height='32'%20rx='16'%20fill='white'/%3e%3cpath%20d='M16%2022.6666L16%209.33331M16%209.33331L21%2014.3333M16%209.33331L11%2014.3333'%20stroke='%231AAF74'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='17'%20height='17'%20viewBox='0%200%2017%2017'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_2361_172518)'%3e%3cpath%20d='M15.6005%2011.6509C15.9284%2011.2327%2016.0856%2010.7843%2016.0656%2010.3226C16.0455%209.81401%2015.818%209.41585%2015.6306%209.1716C15.8481%208.62956%2015.9317%207.77636%2015.2057%207.11388C14.6737%206.62873%2013.7703%206.41125%2012.5189%206.47147C11.639%206.51162%2010.9029%206.67557%2010.8728%206.68226H10.8694C10.7021%206.71238%2010.5248%206.74918%2010.3441%206.78933C10.3307%206.57519%2010.3675%206.0432%2010.7623%204.84537C11.2308%203.42003%2011.204%202.32927%2010.6754%201.59987C10.1199%200.833663%209.23328%200.773438%208.9723%200.773438C8.72136%200.773438%208.49049%200.87716%208.32655%201.06787C7.95515%201.49949%207.99865%202.29581%208.04549%202.66386C7.60384%203.8483%206.36586%206.75253%205.3186%207.55888C5.29852%207.57227%205.2818%207.589%205.26507%207.60572C4.95724%207.93028%204.7498%208.28159%204.60927%208.58941C4.41187%208.48235%204.18769%208.42212%203.94679%208.42212H1.9058C1.13625%208.42212%200.513916%209.0478%200.513916%209.81401V15.2511C0.513916%2016.0206%201.1396%2016.6429%201.9058%2016.6429H3.94679C4.24457%2016.6429%204.52228%2016.5493%204.7498%2016.3887L5.53608%2016.4823C5.65653%2016.4991%207.7979%2016.7701%209.99614%2016.7266C10.3943%2016.7567%2010.769%2016.7734%2011.117%2016.7734C11.7159%2016.7734%2012.2379%2016.7266%2012.6728%2016.6329C13.6967%2016.4154%2014.396%2015.9805%2014.7506%2015.3414C15.0217%2014.8529%2015.0217%2014.3677%2014.9782%2014.0599C15.644%2013.4577%2015.7611%2012.7918%2015.7377%2012.3234C15.7243%2012.0524%2015.6641%2011.8215%2015.6005%2011.6509ZM1.9058%2015.7396C1.63479%2015.7396%201.4173%2015.5187%201.4173%2015.2511V9.81066C1.4173%209.53964%201.63813%209.32216%201.9058%209.32216H3.94679C4.21781%209.32216%204.43529%209.54299%204.43529%209.81066V15.2477C4.43529%2015.5187%204.21446%2015.7362%203.94679%2015.7362H1.9058V15.7396ZM14.7439%2011.2594C14.6034%2011.4066%2014.5767%2011.6308%2014.6837%2011.8048C14.6837%2011.8082%2014.8209%2012.0424%2014.8376%2012.3636C14.8611%2012.8019%2014.6503%2013.19%2014.2086%2013.5212C14.0513%2013.6417%2013.9878%2013.8491%2014.0547%2014.0365C14.0547%2014.0399%2014.1986%2014.4815%2013.9644%2014.8997C13.7402%2015.3013%2013.2416%2015.589%2012.4855%2015.7496C11.8799%2015.8801%2011.0568%2015.9035%2010.0463%2015.8232C10.0329%2015.8232%2010.0162%2015.8232%209.99949%2015.8232C7.84809%2015.87%205.67326%2015.589%205.64984%2015.5856H5.6465L5.30856%2015.5455C5.32864%2015.4518%205.33868%2015.3514%205.33868%2015.2511V9.81066C5.33868%209.66679%205.31525%209.52626%205.2751%209.39577C5.33533%209.1716%205.50262%208.67306%205.89744%208.24813C7.39974%207.057%208.86858%203.0386%208.93215%202.86461C8.95892%202.79435%208.96561%202.71739%208.95223%202.64044C8.89535%202.2657%208.91542%201.80731%208.99572%201.67013C9.17305%201.67348%209.65152%201.72367%209.93926%202.12183C10.2805%202.5936%2010.2672%203.43676%209.89911%204.55428C9.337%206.25734%209.29016%207.15403%209.73516%207.54885C9.95599%207.74625%2010.2504%207.75629%2010.4646%207.67933C10.6687%207.63249%2010.8627%207.59234%2011.0467%207.56223C11.0601%207.55888%2011.0769%207.55554%2011.0902%207.55219C12.1174%207.32802%2013.9577%207.19084%2014.5967%207.77302C15.1388%208.26821%2014.754%208.924%2014.7105%208.99427C14.5867%209.18163%2014.6235%209.42588%2014.7908%209.57645C14.7941%209.57979%2015.1455%209.91104%2015.1622%2010.356C15.1756%2010.6538%2015.035%2010.9583%2014.7439%2011.2594Z'%20fill='%23858B93'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_2361_172518'%3e%3crect%20width='16'%20height='16'%20fill='white'%20transform='translate(0.290527%200.773438)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='17'%20height='17'%20viewBox='0%200%2017%2017'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_2361_172521)'%3e%3cpath%20d='M0.980564%205.89598C0.652667%206.31422%200.495411%206.76256%200.515487%207.2243C0.535562%207.73287%200.763082%208.13103%200.950451%208.37528C0.732968%208.91731%200.649323%209.77051%201.37538%2010.433C1.90737%2010.9181%202.81076%2011.1356%204.06212%2011.0754C4.94209%2011.0353%205.67818%2010.8713%205.70829%2010.8646H5.71164C5.87893%2010.8345%206.05626%2010.7977%206.23694%2010.7575C6.25033%2010.9717%206.21352%2011.5037%205.81871%2012.7015C5.35028%2014.1268%205.37705%2015.2176%205.9057%2015.947C6.46112%2016.7132%207.34777%2016.7734%207.60875%2016.7734C7.85969%2016.7734%208.09056%2016.6697%208.25451%2016.479C8.6259%2016.0474%208.5824%2015.2511%208.53556%2014.883C8.97722%2013.6986%2010.2152%2010.7943%2011.2625%209.98799C11.2825%209.97461%2011.2993%209.95788%2011.316%209.94115C11.6238%209.6166%2011.8313%209.26528%2011.9718%208.95746C12.1692%209.06453%2012.3934%209.12475%2012.6343%209.12475H14.6753C15.4448%209.12475%2016.0671%208.49907%2016.0671%207.73287V2.29581C16.0671%201.52626%2015.4415%200.903928%2014.6753%200.903928H12.6343C12.3365%200.903928%2012.0588%200.997612%2011.8313%201.15821L11.045%201.06453C10.9245%201.0478%208.78316%200.776784%206.58491%200.820281C6.18675%200.790168%205.81201%200.773438%205.46404%200.773438C4.86513%200.773438%204.34317%200.82028%203.90821%200.913965C2.88437%201.13145%202.18508%201.56641%201.83042%202.20547C1.5594%202.69397%201.5594%203.17913%201.6029%203.48695C0.937067%204.0892%200.819963%204.75504%200.843384%205.22346C0.856767%205.49447%200.916992%205.72534%200.980564%205.89598ZM14.6753%201.80732C14.9463%201.80732%2015.1638%202.02814%2015.1638%202.29581V7.73621C15.1638%208.00723%2014.9429%208.22471%2014.6753%208.22471H12.6343C12.3632%208.22471%2012.1458%208.00389%2012.1458%207.73621V2.29916C12.1458%202.02814%2012.3666%201.81066%2012.6343%201.81066H14.6753V1.80732ZM1.83711%206.28745C1.97764%206.14023%202.0044%205.91606%201.89734%205.74207C1.89734%205.73872%201.76015%205.50451%201.74343%205.18331C1.72%204.745%201.93079%204.35688%202.37245%204.02563C2.52971%203.90518%202.59328%203.69774%202.52636%203.51037C2.52636%203.50702%202.38249%203.06537%202.6167%202.64713C2.84087%202.24562%203.33941%201.95788%204.09558%201.79728C4.70118%201.66679%205.52427%201.64337%206.53473%201.72367C6.54811%201.72367%206.56484%201.72367%206.58157%201.72367C8.73297%201.67683%2010.9078%201.95788%2010.9312%201.96123H10.9346L11.2725%202.00138C11.2524%202.09506%2011.2424%202.19544%2011.2424%202.29581V7.73621C11.2424%207.88009%2011.2658%208.02061%2011.306%208.1511C11.2457%208.37528%2011.0784%208.87381%2010.6836%209.29874C9.18132%2010.4899%207.71248%2014.5083%207.6489%2014.6823C7.62214%2014.7525%207.61545%2014.8295%207.62883%2014.9064C7.68571%2015.2812%207.66563%2015.7396%207.58533%2015.8767C7.408%2015.8734%206.92954%2015.8232%206.64179%2015.425C6.30051%2014.9533%206.3139%2014.1101%206.68194%2012.9926C7.24405%2011.2895%207.29089%2010.3928%206.84589%209.99803C6.62506%209.80062%206.33063%209.79059%206.11649%209.86754C5.91239%209.91438%205.71833%209.95453%205.53431%209.98465C5.52092%209.98799%205.50419%209.99134%205.49081%209.99468C4.46363%2010.2189%202.62339%2010.356%201.98433%209.77386C1.4423%209.27867%201.82707%208.62287%201.87057%208.55261C1.99437%208.36524%201.95756%208.12099%201.79027%207.97043C1.78692%207.96708%201.4356%207.63584%201.41887%207.19084C1.40549%206.89305%201.54602%206.58858%201.83711%206.28745Z'%20fill='%23858B93'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_2361_172521'%3e%3crect%20width='16'%20height='16'%20fill='white'%20transform='matrix(-1%200%200%20-1%2016.2905%2016.7734)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='16'%20height='17'%20viewBox='0%200%2016%2017'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_2361_92626)'%3e%3cpath%20d='M15.3092%2011.4575C15.6371%2011.0393%2015.7944%2010.591%2015.7743%2010.1292C15.7542%209.62065%2015.5267%209.22249%2015.3393%208.97824C15.5568%208.4362%2015.6405%207.58301%2014.9144%206.92052C14.3824%206.43537%2013.479%206.21789%2012.2277%206.27811C11.3477%206.31826%2010.6116%206.48221%2010.5815%206.4889H10.5782C10.4109%206.51902%2010.2335%206.55582%2010.0529%206.59597C10.0395%206.38183%2010.0763%205.84984%2010.4711%204.65201C10.9395%203.22667%2010.9127%202.13591%2010.3841%201.40651C9.82868%200.640304%208.94202%200.580078%208.68104%200.580078C8.4301%200.580078%208.19923%200.6838%208.03529%200.874516C7.66389%201.30613%207.70739%202.10245%207.75423%202.4705C7.31258%203.65494%206.0746%206.55917%205.02734%207.36552C5.00726%207.37891%204.99054%207.39564%204.97381%207.41237C4.66599%207.73692%204.45854%208.08823%204.31801%208.39605C4.12061%208.28899%203.89643%208.22876%203.65553%208.22876H1.61454C0.84499%208.22876%200.222656%208.85444%200.222656%209.62065V15.0577C0.222656%2015.8273%200.848336%2016.4496%201.61454%2016.4496H3.65553C3.95331%2016.4496%204.23102%2016.3559%204.45854%2016.1953L5.24482%2016.289C5.36527%2016.3057%207.50664%2016.5767%209.70488%2016.5332C10.103%2016.5633%2010.4778%2016.5801%2010.8258%2016.5801C11.4247%2016.5801%2011.9466%2016.5332%2012.3816%2016.4396C13.4054%2016.2221%2014.1047%2015.7871%2014.4594%2015.148C14.7304%2014.6595%2014.7304%2014.1744%2014.6869%2013.8666C15.3527%2013.2643%2015.4698%2012.5985%2015.4464%2012.1301C15.433%2011.859%2015.3728%2011.6282%2015.3092%2011.4575ZM1.61454%2015.5462C1.34353%2015.5462%201.12604%2015.3254%201.12604%2015.0577V9.6173C1.12604%209.34628%201.34687%209.1288%201.61454%209.1288H3.65553C3.92655%209.1288%204.14403%209.34963%204.14403%209.6173V15.0544C4.14403%2015.3254%203.9232%2015.5429%203.65553%2015.5429H1.61454V15.5462ZM14.4527%2011.0661C14.3122%2011.2133%2014.2854%2011.4375%2014.3925%2011.6114C14.3925%2011.6148%2014.5296%2011.849%2014.5464%2012.1702C14.5698%2012.6085%2014.359%2012.9966%2013.9173%2013.3279C13.7601%2013.4483%2013.6965%2013.6558%2013.7634%2013.8431C13.7634%2013.8465%2013.9073%2014.2881%2013.6731%2014.7064C13.4489%2015.1079%2012.9504%2015.3956%2012.1942%2015.5562C11.5886%2015.6867%2010.7655%2015.7101%209.75507%2015.6298C9.74169%2015.6298%209.72496%2015.6298%209.70823%2015.6298C7.55683%2015.6767%205.382%2015.3956%205.35858%2015.3923H5.35524L5.0173%2015.3521C5.03738%2015.2585%205.04742%2015.1581%205.04742%2015.0577V9.6173C5.04742%209.47343%205.02399%209.3329%204.98384%209.20241C5.04407%208.97824%205.21136%208.4797%205.60618%208.05477C7.10848%206.86364%208.57732%202.84524%208.64089%202.67125C8.66766%202.60099%208.67435%202.52403%208.66097%202.44708C8.60409%202.07234%208.62416%201.61396%208.70446%201.47677C8.88179%201.48012%209.36026%201.53031%209.648%201.92847C9.98928%202.40024%209.9759%203.2434%209.60785%204.36092C9.04574%206.06398%208.9989%206.96067%209.4439%207.35549C9.66473%207.55289%209.95917%207.56293%2010.1733%207.48597C10.3774%207.43913%2010.5715%207.39898%2010.7555%207.36887C10.7689%207.36552%2010.7856%207.36218%2010.799%207.35883C11.8262%207.13466%2013.6664%206.99748%2014.3055%207.57966C14.8475%208.07485%2014.4627%208.73064%2014.4192%208.80091C14.2954%208.98828%2014.3322%209.23252%2014.4995%209.38309C14.5029%209.38644%2014.8542%209.71768%2014.8709%2010.1627C14.8843%2010.4605%2014.7438%2010.7649%2014.4527%2011.0661Z'%20fill='%231AAF74'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_2361_92626'%3e%3crect%20width='16'%20height='16'%20fill='white'%20transform='translate(0%200.580078)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='17'%20height='17'%20viewBox='0%200%2017%2017'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_2361_214893)'%3e%3cpath%20d='M0.784519%205.70262C0.456622%206.12086%200.299366%206.5692%200.319442%207.03094C0.339517%207.53951%200.567037%207.93767%200.754406%208.18192C0.536923%208.72395%200.453278%209.57715%201.17933%2010.2396C1.71133%2010.7248%202.61472%2010.9423%203.86607%2010.882C4.74604%2010.8419%205.48213%2010.6779%205.51225%2010.6713H5.51559C5.68289%2010.6411%205.86022%2010.6043%206.0409%2010.5642C6.05428%2010.7783%206.01748%2011.3103%205.62266%2012.5081C5.15424%2013.9335%205.18101%2015.0242%205.70965%2015.7536C6.26507%2016.5199%207.15173%2016.5801%207.41271%2016.5801C7.66365%2016.5801%207.89452%2016.4764%208.05846%2016.2856C8.42986%2015.854%208.38636%2015.0577%208.33952%2014.6897C8.78117%2013.5052%2010.0191%2010.601%2011.0664%209.79463C11.0865%209.78125%2011.1032%209.76452%2011.1199%209.74779C11.4278%209.42324%2011.6352%209.07192%2011.7757%208.7641C11.9731%208.87117%2012.1973%208.9314%2012.4382%208.9314H14.4792C15.2488%208.9314%2015.8711%208.30572%2015.8711%207.53951V2.10245C15.8711%201.3329%2015.2454%200.710568%2014.4792%200.710568H12.4382C12.1404%200.710568%2011.8627%200.804253%2011.6352%200.964854L10.8489%200.87117C10.7285%200.854441%208.58711%200.583425%206.38887%200.626922C5.99071%200.596808%205.61597%200.580078%205.268%200.580078C4.66909%200.580078%204.14713%200.626921%203.71216%200.720606C2.68832%200.938087%201.98904%201.37305%201.63437%202.01212C1.36336%202.50061%201.36336%202.98577%201.40685%203.29359C0.741022%203.89585%200.623918%204.56168%200.647339%205.0301C0.660722%205.30112%200.720947%205.53198%200.784519%205.70262ZM14.4792%201.61396C14.7502%201.61396%2014.9677%201.83478%2014.9677%202.10245V7.54286C14.9677%207.81387%2014.7469%208.03135%2014.4792%208.03135H12.4382C12.1672%208.03135%2011.9497%207.81053%2011.9497%207.54286V2.1058C11.9497%201.83478%2012.1706%201.6173%2012.4382%201.6173H14.4792V1.61396ZM1.64106%206.09409C1.78159%205.94687%201.80836%205.7227%201.70129%205.54871C1.70129%205.54536%201.56411%205.31115%201.54738%204.98995C1.52396%204.55164%201.73475%204.16352%202.1764%203.83227C2.33366%203.71182%202.39723%203.50438%202.33032%203.31701C2.33032%203.31366%202.18644%202.87201%202.42066%202.45377C2.64483%202.05227%203.14336%201.76452%203.89953%201.60392C4.50514%201.47343%205.32822%201.45001%206.33868%201.53031C6.35206%201.53031%206.36879%201.53031%206.38552%201.53031C8.53692%201.48347%2010.7117%201.76452%2010.7352%201.76787H10.7385L11.0764%201.80802C11.0564%201.9017%2011.0463%202.00208%2011.0463%202.10245V7.54286C11.0463%207.68673%2011.0698%207.82726%2011.1099%207.95774C11.0497%208.18192%2010.8824%208.68046%2010.4876%209.10538C8.98527%2010.2965%207.51643%2014.3149%207.45286%2014.4889C7.42609%2014.5592%207.4194%2014.6361%207.43278%2014.7131C7.48966%2015.0878%207.46959%2015.5462%207.38929%2015.6834C7.21196%2015.68%206.73349%2015.6298%206.44575%2015.2317C6.10447%2014.7599%206.11785%2013.9168%206.4859%2012.7992C7.04801%2011.0962%207.09485%2010.1995%206.64985%209.80467C6.42902%209.60726%206.13458%209.59723%205.92045%209.67418C5.71635%209.72102%205.52229%209.76117%205.33826%209.79129C5.32488%209.79463%205.30815%209.79798%205.29477%209.80132C4.26758%2010.0255%202.42735%2010.1627%201.78828%209.5805C1.24625%209.08531%201.63103%208.42951%201.67452%208.35925C1.79832%208.17188%201.76152%207.92763%201.59422%207.77707C1.59088%207.77372%201.23956%207.44248%201.22283%206.99748C1.20945%206.69969%201.34997%206.39522%201.64106%206.09409Z'%20fill='%23F34859'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_2361_214893'%3e%3crect%20width='16'%20height='16'%20fill='white'%20transform='matrix(-1%200%200%20-1%2016.0938%2016.5801)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='24'%20height='25'%20viewBox='0%200%2024%2025'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M22%2012.123C22%2017.6459%2017.5228%2022.123%2012%2022.123C6.47715%2022.123%202%2017.6459%202%2012.123C2%206.6002%206.47715%202.12305%2012%202.12305C17.5228%202.12305%2022%206.6002%2022%2012.123ZM16.0303%209.09272C16.3232%209.38561%2016.3232%209.86048%2016.0303%2010.1534L11.0303%2015.1534C10.7374%2015.4463%2010.2626%2015.4463%209.96967%2015.1534L7.96967%2013.1534C7.67678%2012.8605%207.67678%2012.3856%207.96967%2012.0927C8.26256%2011.7998%208.73744%2011.7998%209.03033%2012.0927L10.5%2013.5624L14.9697%209.09272C15.2626%208.79982%2015.7374%208.79982%2016.0303%209.09272Z'%20fill='%231AAF74'/%3e%3c/svg%3e\"","import \"./SurveyMessage.css\";\r\nimport { Component, createSignal, For, onMount } from \"solid-js\";\r\nimport { iconCheck } from \"../../assets/icons/icons\";\r\n\r\nconst SurveyMessage: Component<{\r\n onClose?: () => void;\r\n onSubmit?: (data: string[], type: 'ordered' | 'selected' | 'input') => void;\r\n multiSelect?: boolean;\r\n isInputMode?: boolean;\r\n}> = (props) => {\r\n const [options, setOptions] = createSignal([\r\n \"A. Tự phân bổ đều trên một số lượng cổ phiếu xác định\",\r\n \"B. Dựa vào các phương pháp phân bổ theo rủi ro\",\r\n \"C. Theo tư vấn từ chuyên viên tư vấn đầu tư, báo cáo danh mục đầu tư\",\r\n \"D. Khác\",\r\n ]);\r\n\r\n const [draggedIndex, setDraggedIndex] = createSignal<number | null>(null);\r\n const [hoveredIndex, setHoveredIndex] = createSignal<number | null>(null);\r\n const [selectedIndexes, setSelectedIndexes] = createSignal<number[]>([]);\r\n const [answers, setAnswers] = createSignal<string[]>(Array(options().length).fill(\"\"));\r\n const multiSelect = props.multiSelect ?? false;\r\n const isInputMode = () => props.isInputMode ?? false;\r\n\r\n let containerRef: HTMLDivElement | undefined;\r\n\r\n const handleMouseDown = (index: number, e: MouseEvent) => {\r\n if (e.button !== 0) return;\r\n e.preventDefault();\r\n\r\n setDraggedIndex(index);\r\n };\r\n\r\n const handleMouseMove = (e: MouseEvent) => {\r\n if (draggedIndex() === null || !containerRef) return;\r\n\r\n const containerRect = containerRef.getBoundingClientRect();\r\n const isInContainer =\r\n e.clientX >= containerRect.left &&\r\n e.clientX <= containerRect.right &&\r\n e.clientY >= containerRect.top &&\r\n e.clientY <= containerRect.bottom;\r\n\r\n if (!isInContainer) {\r\n return;\r\n }\r\n\r\n const buttons = containerRef.querySelectorAll(\".survey-option\");\r\n for (let i = 0; i < buttons.length; i++) {\r\n const btn = buttons[i] as HTMLElement;\r\n const rect = btn.getBoundingClientRect();\r\n\r\n const isOver =\r\n e.clientX >= rect.left &&\r\n e.clientX <= rect.right &&\r\n e.clientY >= rect.top &&\r\n e.clientY <= rect.bottom;\r\n\r\n if (isOver && i !== draggedIndex()) {\r\n setHoveredIndex(i);\r\n return;\r\n }\r\n }\r\n };\r\n\r\n const handleMouseUp = (e: MouseEvent) => {\r\n if (draggedIndex() === null || !containerRef) return;\r\n\r\n const containerRect = containerRef.getBoundingClientRect();\r\n const isInContainer =\r\n e.clientX >= containerRect.left &&\r\n e.clientX <= containerRect.right &&\r\n e.clientY >= containerRect.top &&\r\n e.clientY <= containerRect.bottom;\r\n\r\n if (isInContainer && hoveredIndex() !== null) {\r\n // Hoán đổi items\r\n const newOptions = [...options()];\r\n const temp = newOptions[draggedIndex()!];\r\n newOptions[draggedIndex()!] = newOptions[hoveredIndex()!];\r\n newOptions[hoveredIndex()!] = temp;\r\n setOptions(newOptions);\r\n }\r\n\r\n setDraggedIndex(null);\r\n setHoveredIndex(null);\r\n };\r\n\r\n const handleOptionClick = (idx: number) => {\r\n if (multiSelect) {\r\n setSelectedIndexes(prev =>\r\n prev.includes(idx)\r\n ? prev.filter(i => i !== idx)\r\n : [...prev, idx]\r\n );\r\n } else {\r\n setSelectedIndexes(prev =>\r\n prev.includes(idx) ? [] : [idx]\r\n );\r\n }\r\n };\r\n\r\n const handleAnswerChange = (idx: number, value: string) => {\r\n setAnswers(prev => {\r\n const next = [...prev];\r\n next[idx] = value;\r\n return next;\r\n });\r\n };\r\n\r\n const handleSubmit = () => {\r\n if (props.onSubmit) {\r\n if (isInputMode()) {\r\n const filledAnswers = answers().filter(a => a.trim() !== '');\r\n props.onSubmit(filledAnswers, 'input');\r\n } else if (multiSelect) {\r\n const selectedOptions = options().filter((_, i) => selectedIndexes().includes(i));\r\n props.onSubmit(selectedOptions, 'selected');\r\n } else {\r\n props.onSubmit(options(), 'ordered');\r\n }\r\n }\r\n };\r\n\r\n onMount(() => {\r\n document.addEventListener(\"mousemove\", handleMouseMove);\r\n document.addEventListener(\"mouseup\", handleMouseUp);\r\n\r\n return () => {\r\n document.removeEventListener(\"mousemove\", handleMouseMove);\r\n document.removeEventListener(\"mouseup\", handleMouseUp);\r\n };\r\n });\r\n\r\n return (\r\n <div class=\"survey-message\">\r\n <div style={{ display: \"flex\", \"flex-direction\": \"column\", \"align-items\": \"flex-start\" }}>\r\n <div style={{ \"font-weight\": 600, \"font-size\": \"16px\", \"margin-bottom\": \"8px\" }}>\r\n 12.1 Anh/chị xây dựng danh mục đầu tư dựa vào đâu?\r\n </div>\r\n <div style={{ \"font-weight\": 400, color: \"#858B93\", \"font-size\": \"12px\", \"margin-bottom\": \"16px\" }}>\r\n Bạn có thể chọn {multiSelect ? \"nhiều\" : \"một\"} đáp án hoặc nhập trực tiếp A, B, C, D,... theo thứ tự đáp án\r\n </div>\r\n </div>\r\n {isInputMode() ? (\r\n <div class=\"survey-inputs\">\r\n <For each={options()}>\r\n {(option, index) => (\r\n <div style={{ \"margin-bottom\": \"12px\" }}>\r\n <div style={{ \"font-weight\": 500, \"margin-bottom\": \"4px\", \"text-align\": \"left\" }}>\r\n {option}\r\n </div>\r\n <input\r\n class=\"survey-input\"\r\n type=\"text\"\r\n value={answers()[index()]}\r\n placeholder={option}\r\n onInput={(e) => handleAnswerChange(index(), e.currentTarget.value)}\r\n />\r\n </div>\r\n )}\r\n </For>\r\n </div>\r\n ) : (\r\n <div class=\"survey-options\" ref={containerRef!}>\r\n <For each={options()}>\r\n {(option, index) => (\r\n <button\r\n class={`survey-option${multiSelect ? \" multi-selected\" : \"\"} ${draggedIndex() === index() ? \"dragging\" : \"\"} ${hoveredIndex() === index() ? \"hovered\" : \"\"} ${selectedIndexes().includes(index()) ? \"selected\" : \"\"}`}\r\n type=\"button\"\r\n onMouseDown={(e) => handleMouseDown(index(), e)}\r\n onClick={() => handleOptionClick(index())}\r\n style={{ display: \"flex\", \"justify-content\": \"space-between\", \"align-items\": \"center\", width: multiSelect ? \"100%\" : \"auto\" }}\r\n >\r\n <span>{option}</span>\r\n {multiSelect && selectedIndexes().includes(index()) && (\r\n <img src={iconCheck} style={{ width: \"20px\", height: \"20px\", \"margin-left\": \"16px\" }} />\r\n )}\r\n </button>\r\n )}\r\n </For>\r\n </div>\r\n )}\r\n <div style={{ display: \"flex\", \"justify-content\": \"flex-end\", \"margin-top\": \"16px\" }}>\r\n <button class=\"survey-submit-button\" onClick={handleSubmit}>\r\n Gửi đáp án\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default SurveyMessage;","import { For, Show, createEffect, createSignal } from \"solid-js\";\r\nimport \"./ChatMessages.css\";\r\nimport SurveyMessage from \"../../components/SurveyMessage/SurveyMessage\";\r\nimport { iconLike, iconDislike, iconLikeActive, iconDislikeActive } from \"../../assets/icons/icons\";\r\n\r\ninterface Message {\r\n id: number;\r\n text?: string;\r\n sender: \"user\" | \"bot\";\r\n type?: \"survey\";\r\n}\r\n\r\ninterface ChatMessagesProps {\r\n messages: Message[];\r\n isFullScreen?: boolean;\r\n inputHeight?: number;\r\n isMobile?: boolean;\r\n onSubmit?: (data: string[], type: 'ordered' | 'selected' | 'input') => void;\r\n surveyOptions?: { multiSelect?: boolean; isInputMode?: boolean };\r\n}\r\n\r\nexport default function ChatMessages(props: ChatMessagesProps) {\r\n let messagesContainerRef: HTMLDivElement | undefined;\r\n const [hoveredId, setHoveredId] = createSignal<number | null>(null);\r\n const [feedbackState, setFeedbackState] = createSignal<{ [key: number]: \"like\" | \"dislike\" | null }>({});\r\n const [timeoutId, setTimeoutId] = createSignal<number | null>(null);\r\n\r\n const handleMouseEnter = (id: number) => {\r\n if (timeoutId()) {\r\n clearTimeout(timeoutId()!);\r\n setTimeoutId(null);\r\n }\r\n setHoveredId(id);\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n setTimeoutId(setTimeout(() => setHoveredId(null), 300));\r\n };\r\n\r\n const getPadBottom = () => {\r\n if (props.isFullScreen) {\r\n return props.messages.length > 0 ? \"100px\" : `${(props.inputHeight ?? 0) + 24}px`;\r\n }\r\n if (props.isMobile) {\r\n return props.messages.length > 0 ? \"10px\" : \"0px\";\r\n }\r\n return props.messages.length > 0 ? \"10px\" : \"0px\";\r\n };\r\n\r\n createEffect(() => {\r\n if (messagesContainerRef && props.messages.length > 0) {\r\n setTimeout(() => {\r\n messagesContainerRef!.scrollTop = messagesContainerRef!.scrollHeight;\r\n }, 100);\r\n }\r\n });\r\n\r\n createEffect(() => {\r\n props.isFullScreen;\r\n props.isMobile;\r\n\r\n if (messagesContainerRef && props.messages.length > 0) {\r\n requestAnimationFrame(() => {\r\n messagesContainerRef!.scrollTop = messagesContainerRef!.scrollHeight;\r\n });\r\n }\r\n });\r\n\r\n return (\r\n <div\r\n ref={messagesContainerRef}\r\n class=\"chat-messages-container\"\r\n style={{\r\n \"justify-content\": props.messages.length === 0 ? \"center\" : \"flex-start\",\r\n \"padding-bottom\": getPadBottom(),\r\n }}\r\n >\r\n <Show when={props.messages.length === 0 && !props.isFullScreen}>\r\n <div\r\n style={{\r\n \"text-align\": \"center\",\r\n \"font-size\": props.isMobile ? \"20px\" : \"24px\",\r\n \"font-weight\": \"600\",\r\n \"user-select\": \"none\",\r\n \"white-space\": \"pre-line\"\r\n }}\r\n >\r\n Hôm nay thị trường khiến bạn <br />quan tâm điều gì?\r\n </div>\r\n </Show>\r\n <For each={props.messages}>\r\n {(msg) => (\r\n msg.type === \"survey\" ? (\r\n <div\r\n class=\"chat-message bot\"\r\n style={{\r\n \"margin-left\": \"24px\",\r\n }}\r\n >\r\n <div>\r\n <SurveyMessage\r\n onSubmit={props.onSubmit}\r\n multiSelect={props.surveyOptions?.multiSelect}\r\n isInputMode={props.surveyOptions?.isInputMode}\r\n />\r\n </div>\r\n </div>\r\n ) : (\r\n <div\r\n style={{\r\n display: \"flex\",\r\n \"flex-direction\": \"column\",\r\n \"align-items\": \"flex-start\",\r\n \"margin-bottom\": \"8px\"\r\n }}\r\n >\r\n <div\r\n class={`chat-message ${msg.sender}`}\r\n onMouseEnter={() => msg.sender === \"bot\" && handleMouseEnter(msg.id)}\r\n onMouseLeave={() => handleMouseLeave()}\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\"\r\n }}\r\n >\r\n <div\r\n style={{\r\n background: msg.sender === \"user\" ? \"#1AAF741A\" : \"#fff\",\r\n color: \"#000\",\r\n \"border-radius\": \"24px\",\r\n padding: \"10px 16px\",\r\n \"font-weight\": 500,\r\n \"font-size\": \"16px\",\r\n \"max-width\": \"70%\",\r\n \"word-break\": \"break-word\",\r\n \"white-space\": \"pre-line\",\r\n \"text-align\": \"left\"\r\n }}\r\n >\r\n {msg.text}\r\n </div>\r\n </div>\r\n {msg.sender === \"bot\" && (\r\n <div\r\n onMouseEnter={() => handleMouseEnter(msg.id)}\r\n onMouseLeave={() => handleMouseLeave()}\r\n style={{\r\n display: \"flex\",\r\n gap: \"8px\",\r\n \"margin-left\": \"16px\",\r\n height: \"16px\",\r\n opacity: hoveredId() === msg.id ? 1 : 0,\r\n visibility: hoveredId() === msg.id ? \"visible\" : \"hidden\",\r\n \"pointer-events\": hoveredId() === msg.id ? \"auto\" : \"none\",\r\n transition: \"opacity 0.2s\"\r\n }}\r\n >\r\n <button\r\n class=\"feedback-button\"\r\n onClick={() => setFeedbackState(prev => ({ ...prev, [msg.id]: 'like' }))}\r\n >\r\n <img src={feedbackState()[msg.id] === 'like' ? iconLikeActive : iconLike} />\r\n </button>\r\n <button\r\n class=\"feedback-button\"\r\n onClick={() => setFeedbackState(prev => ({ ...prev, [msg.id]: 'dislike' }))}\r\n >\r\n <img src={feedbackState()[msg.id] === 'dislike' ? iconDislikeActive : iconDislike} />\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n )\r\n )}\r\n </For>\r\n </div>\r\n );\r\n}","import { createEffect, createSignal, JSX, onMount } from \"solid-js\";\r\nimport \"./ChatInput.css\";\r\nimport { iconAddItem, iconSend, iconMicrophone, iconSendActive } from \"../../assets/icons/icons\";\r\n\r\ninterface ChatInputProps {\r\n input: string;\r\n setInput: (v: string) => void;\r\n sendMessage: () => void;\r\n onHeightChange?: (h: number) => void;\r\n}\r\n\r\nexport default function ChatInput(props: ChatInputProps) {\r\n let textareaRef: HTMLTextAreaElement | undefined;\r\n const MAX_HEIGHT = 120;\r\n const [isMaxed, setIsMaxed] = createSignal(false);\r\n\r\n function resizeTextarea() {\r\n if (!textareaRef) return;\r\n textareaRef.style.height = \"auto\";\r\n if (!props.input.trim()) {\r\n textareaRef.style.height = \"48px\";\r\n textareaRef.style.overflowY = \"hidden\";\r\n setIsMaxed(false);\r\n props.onHeightChange?.(48);\r\n return;\r\n }\r\n const fullHeight = textareaRef.scrollHeight;\r\n const usedHeight = Math.min(fullHeight, MAX_HEIGHT);\r\n textareaRef.style.height = usedHeight + \"px\";\r\n textareaRef.style.overflowY = fullHeight > MAX_HEIGHT ? \"auto\" : \"hidden\";\r\n setIsMaxed(fullHeight > MAX_HEIGHT);\r\n props.onHeightChange?.(usedHeight);\r\n }\r\n\r\n createEffect(() => {\r\n if (textareaRef) {\r\n resizeTextarea();\r\n }\r\n });\r\n\r\n const handleInput: JSX.EventHandlerUnion<HTMLTextAreaElement, InputEvent> = (e) => {\r\n props.setInput(e.currentTarget.value);\r\n resizeTextarea();\r\n };\r\n\r\n const handleKeyPress: JSX.EventHandlerUnion<HTMLTextAreaElement, KeyboardEvent> = (e) => {\r\n if (e.key === \"Enter\" && !e.shiftKey) {\r\n e.preventDefault();\r\n props.sendMessage();\r\n setTimeout(() => {\r\n if (textareaRef) {\r\n resizeTextarea();\r\n }\r\n }, 0);\r\n }\r\n };\r\n\r\n return (\r\n <div class=\"chat-input-container\" classList={{ \"is-maxed\": isMaxed() }}>\r\n <div style={{ position: \"relative\", flex: 1, \"min-width\": \"0\" }}>\r\n <img\r\n src={iconAddItem}\r\n style={{\r\n position: \"absolute\",\r\n left: \"18px\",\r\n top: \"50%\",\r\n transform: \"translateY(-60%)\",\r\n width: \"20px\",\r\n height: \"20px\",\r\n cursor: \"pointer\"\r\n }}\r\n />\r\n <textarea\r\n ref={el => (textareaRef = el)}\r\n value={props.input}\r\n onInput={handleInput}\r\n onKeyPress={handleKeyPress}\r\n placeholder=\"Hỏi bất kỳ điều gì...\"\r\n class=\"chat-input-field\"\r\n rows={1}\r\n style={{\r\n \"padding-left\": \"56px\",\r\n resize: \"none\",\r\n width: \"100%\",\r\n \"max-height\": `${MAX_HEIGHT}px`,\r\n overflow: \"hidden\",\r\n }}\r\n />\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n right: \"16px\",\r\n top: \"50%\",\r\n transform: \"translateY(-55%)\",\r\n display: \"flex\",\r\n gap: \"12px\",\r\n }}\r\n >\r\n <img\r\n src={iconMicrophone}\r\n style={{\r\n \"margin-top\": \"4px\",\r\n width: \"24px\",\r\n height: \"24px\",\r\n cursor: \"pointer\"\r\n }}\r\n onClick={props.sendMessage}\r\n />\r\n <img\r\n src={props.input.trim() ? iconSendActive : iconSend}\r\n style={{\r\n width: \"32px\",\r\n height: \"32px\",\r\n cursor: \"pointer\"\r\n }}\r\n onClick={props.sendMessage}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}","import \"./Sidebar.css\";\r\nimport { chatIcon, iconSideActive, iconUser, iconTrending, iconNewConversation, iconSearch, iconMenudot, iconClose, iconShrink, iconEdit, iconDelete } from \"../../assets/icons/icons\";\r\nimport { createSignal, onCleanup, onMount } from \"solid-js\";\r\n\r\nexport default function Sidebar(props: {\r\n onClose: () => void;\r\n onShrink?: () => void;\r\n open?: boolean;\r\n fullScreen?: boolean;\r\n isMobile?: boolean;\r\n onMobile?: () => void;\r\n onSurveyRequest?: (options?: { multiSelect?: boolean; isInputMode?: boolean }) => void;\r\n onNewConversation?: () => void;\r\n options?: {\r\n onShrink?: () => void;\r\n };\r\n}) {\r\n const [popoverOpen, setPopoverOpen] = createSignal(false);\r\n let popoverRef: HTMLDivElement | undefined;\r\n\r\n onMount(() => {\r\n const handleMouseDownOutside = (e: MouseEvent) => {\r\n if (popoverOpen() && popoverRef && !popoverRef.contains(e.target as Node)) {\r\n setPopoverOpen(false);\r\n }\r\n };\r\n\r\n document.addEventListener(\"mousedown\", handleMouseDownOutside);\r\n\r\n onCleanup(() => {\r\n document.removeEventListener(\"mousedown\", handleMouseDownOutside);\r\n });\r\n });\r\n\r\n return (\r\n <>\r\n {!props.fullScreen && (\r\n <div\r\n class={`sidebar-overlay${props.open ? \" sidebar-overlay--open\" : \"\"}`}\r\n onClick={props.onClose}\r\n ></div>\r\n )}\r\n <div\r\n class={`sidebar${props.open ? \" sidebar--open\" : \"\"}${props.fullScreen ? \" sidebar--fullscreen\" : \"\"}${props.isMobile ? \" sidebar--mobile\" : \"\"}`}\r\n style={props.isMobile ? { width: \"280px\", height: \"100%\" } : {}}\r\n >\r\n <div class=\"sidebar-header\">\r\n {!props.fullScreen && (\r\n <img\r\n src={iconSideActive}\r\n style={{ width: \"28px\", height: \"28px\", \"margin-right\": \"16px\", cursor: \"pointer\" }}\r\n onClick={props.onClose}\r\n />\r\n )}\r\n <img src={chatIcon} style={{ width: \"32px\", height: \"32px\", \"margin-right\": \"4px\" }} />\r\n <span style={{ color: \"#1A1D1F\", \"user-select\": \"none\" }}>Ez</span>\r\n <span style={{ color: \"#1AAF74\", \"margin-left\": \"4px\", \"user-select\": \"none\" }}>Advise</span>\r\n {props.fullScreen && (\r\n <div class=\"sidebar-header-actions\">\r\n {/* <button\r\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", padding: 0 }}\r\n onClick={() => {\r\n if (props.onMobile) props.onMobile();\r\n }}\r\n >\r\n <img src={iconMinimize} style={{ width: \"20px\", height: \"20px\" }} />\r\n </button> */}\r\n <button\r\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", padding: 0 }}\r\n onClick={() => {\r\n props.onShrink?.();\r\n // if (props.options?.onShrink) props.options.onShrink();\r\n }}\r\n >\r\n <img src={iconShrink} style={{ width: \"20px\", height: \"20px\" }} />\r\n </button>\r\n <button\r\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", padding: 0 }}\r\n onClick={props.onClose}\r\n >\r\n <img src={iconClose} style={{ width: \"20px\", height: \"20px\" }} />\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n <div\r\n class=\"sidebar-section\"\r\n tabIndex={0}\r\n onClick={() => {\r\n if (props.onSurveyRequest) props.onSurveyRequest({ multiSelect: true });\r\n if (!props.fullScreen) props.onClose();\r\n }}\r\n >\r\n <img\r\n src={iconUser}\r\n class=\"sidebar-section-icon\"\r\n />\r\n <span class=\"sidebar-section-title\">Chân dung nhà đầu tư</span>\r\n </div>\r\n <div\r\n class=\"sidebar-section sidebar-section--no-padding\"\r\n tabIndex={0}\r\n onClick={() => {\r\n if (props.onSurveyRequest) props.onSurveyRequest({ isInputMode: true });\r\n if (!props.fullScreen) props.onClose();\r\n }}\r\n >\r\n <img\r\n src={iconTrending}\r\n class=\"sidebar-section-icon\"\r\n />\r\n <span class=\"sidebar-section-title\">Định hướng đầu tư</span>\r\n </div>\r\n <div class=\"sidebar-conversation-row\">\r\n <span style={{ \"font-weight\": 400, \"font-size\": \"14px\", color: \"#858B93\", \"user-select\": \"none\" }}>Hội thoại</span>\r\n <div\r\n class=\"sidebar-conversation-action\"\r\n tabIndex={0}\r\n onClick={() => {\r\n if (props.onNewConversation) props.onNewConversation();\r\n if (!props.fullScreen) props.onClose();\r\n }}\r\n >\r\n <span style={{ \"font-weight\": 400, \"font-size\": \"14px\", color: \"#858B93\", \"user-select\": \"none\" }}>Hội thoại mới</span>\r\n <img\r\n src={iconNewConversation}\r\n style={{ width: \"20px\", height: \"20px\", \"margin-left\": \"8px\" }}\r\n />\r\n </div>\r\n </div>\r\n <div class=\"sidebar-search-box\">\r\n <img\r\n src={iconSearch}\r\n style={{ width: \"18px\", height: \"18px\", \"margin-right\": \"8px\", opacity: 0.7 }}\r\n />\r\n <input\r\n type=\"text\"\r\n placeholder=\"Tìm kiếm hội thoại\"\r\n />\r\n </div>\r\n <div>\r\n <div class=\"sidebar-menu-row\" tabIndex={0} style={{ position: \"relative\" }}\r\n onClick={() => {\r\n if (props.onSurveyRequest) props.onSurveyRequest();\r\n if (!props.fullScreen) props.onClose();\r\n }}>\r\n <span style={{ \"font-weight\": 500, \"font-size\": \"14px\", \"user-select\": \"none\" }}>Khảo sát</span>\r\n <img\r\n src={iconMenudot}\r\n class=\"sidebar-menu-dot\"\r\n style={{ width: \"24px\", height: \"24px\", \"margin-left\": \"8px\", cursor: \"pointer\" }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n setPopoverOpen(!popoverOpen());\r\n }}\r\n onMouseDown={e => e.stopPropagation()}\r\n />\r\n {popoverOpen() && (\r\n <div class=\"sidebar-popover\" ref={el => (popoverRef = el)}>\r\n <div\r\n class=\"sidebar-popover-item\"\r\n onClick={(e: MouseEvent) => {\r\n e.stopPropagation();\r\n setPopoverOpen(false);\r\n // TODO:\r\n }}\r\n >\r\n <img src={iconEdit} style={{ width: \"18px\", height: \"18px\" }} />\r\n Đổi tên\r\n </div>\r\n <div\r\n class=\"sidebar-popover-item\"\r\n onClick={(e: MouseEvent) => {\r\n e.stopPropagation();\r\n setPopoverOpen(false);\r\n // TODO:\r\n }}\r\n >\r\n <img src={iconDelete} style={{ width: \"18px\", height: \"18px\" }} />\r\n Xóa\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n}","import { JSX } from \"solid-js\";\r\nimport \"./ChatActionButton.css\";\r\n\r\nexport default function ChatActionButton(props: { text: string; onClick?: JSX.EventHandlerUnion<HTMLButtonElement, MouseEvent> }) {\r\n return (\r\n <button class=\"chat-action-btn\" onClick={props.onClick}>\r\n {props.text}\r\n </button>\r\n );\r\n}","import { Component } from \"solid-js\";\r\nimport \"./HeaderSteps.css\";\r\n\r\ninterface HeaderStepsProps {\r\n currentStep?: number;\r\n title?: string;\r\n totalSteps?: number;\r\n}\r\n\r\nconst HeaderSteps: Component<HeaderStepsProps> = (props) => {\r\n const currentStep = () => props.currentStep || 1;\r\n const totalSteps = () => props.totalSteps || 6;\r\n const title = () => props.title || \"Tài chính cá nhân/ Hồ sơ rủi ro\";\r\n\r\n return (\r\n <div class=\"header-steps\">\r\n <div class=\"header-steps-title\">\r\n {title()}\r\n </div>\r\n <div class=\"header-steps-container\">\r\n {Array.from({ length: totalSteps() }, (_, i) => (\r\n <>\r\n <div\r\n class={`header-step ${i + 1 <= currentStep() ? \"active\" : \"\"}`}\r\n >\r\n {i + 1}\r\n </div>\r\n {i < totalSteps() - 1 && (\r\n <div class=\"header-step-line\"></div>\r\n )}\r\n </>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default HeaderSteps;","export async function listMessagesAsync(\r\n conversationId: string,\r\n direction?: string,\r\n fromMessageId?: string,\r\n top?: number\r\n) {\r\n return [\r\n { id: 1, text: \"Xin chào! Tôi là bot hỗ trợ đầu tư.\", sender: \"bot\" },\r\n { id: 2, text: \"Thị trường hôm nay thế nào?\", sender: \"user\" },\r\n { id: 3, text: \"Thị trường hôm nay biến động nhẹ, bạn quan tâm đến mã nào?\", sender: \"bot\" },\r\n { id: 4, text: \"Tôi muốn hỏi về cổ phiếu FPT.\", sender: \"user\" },\r\n { id: 5, text: \"FPT đang có xu hướng tăng trưởng tốt, bạn cần phân tích kỹ thuật hay cơ bản?\", sender: \"bot\" }\r\n ];\r\n}\r\n\r\nexport async function sendMessageAsync(message: any) {\r\n return { id: Date.now(), text: message.text, sender: \"user\" };\r\n}\r\n\r\nexport async function updateMessageAsync(message: any) {\r\n return true;\r\n}\r\n\r\nexport async function deleteMessageAsync(messageId: string, deleteType?: string) {\r\n return true;\r\n}\r\n\r\nexport async function searchMessagesAsync(conversationId: string, keyword: string, from?: string, top?: number) {\r\n const all = await listMessagesAsync(conversationId);\r\n return all.filter(m => m.text.toLowerCase().includes(keyword.toLowerCase()));\r\n}","import * as MessageService from \"./data-provider/services/message-service\";\r\n\r\nclass RemoteRepository {\r\n async listMessages(conversationId: string) {\r\n return await MessageService.listMessagesAsync(conversationId);\r\n }\r\n\r\n async sendMessage(message: { text: string }) {\r\n return await MessageService.sendMessageAsync(message);\r\n }\r\n\r\n async updateMessage(message: any) {\r\n return await MessageService.updateMessageAsync(message);\r\n }\r\n\r\n async deleteMessage(messageId: string, deleteType?: string) {\r\n return await MessageService.deleteMessageAsync(messageId, deleteType);\r\n }\r\n\r\n async searchMessages(conversationId: string, keyword: string, from?: string, top?: number) {\r\n return await MessageService.searchMessagesAsync(conversationId, keyword, from, top);\r\n }\r\n}\r\n\r\nexport default new RemoteRepository();","import { createEffect, createSignal } from \"solid-js\";\r\nimport ChatMessages from \"../ChatMessages/ChatMessages.tsx\";\r\nimport ChatInput from \"../ChatInput/ChatInput.tsx\";\r\nimport \"./ChatPopup.css\";\r\nimport { chatIcon, inforIcon, iconExpand, iconMinimize, iconClose } from \"../../assets/icons/icons\";\r\nimport Sidebar from \"../../components/Sidebar/Siderbar.tsx\";\r\nimport ChatActionButton from \"../../components/ChatActionButton/ChatActionButton.tsx\";\r\nimport HeaderSteps from \"../../components/HeaderSteps/HeaderSteps.tsx\";\r\nimport { onMount } from \"solid-js\";\r\nimport RemoteRepository from \"../../RemoteRepository.ts\";\r\n\r\ninterface ChatPopupProps {\r\n options?: {\r\n onMaximize?: () => void;\r\n onMinimize?: () => void;\r\n onMobile?: (isMobile: boolean) => void;\r\n onFullScreen?: (isFullScreen: boolean) => void;\r\n onClose?: () => void;\r\n onShrink?: () => void;\r\n onOpen?: () => void;\r\n onlyMobile?: boolean;\r\n };\r\n}\r\n\r\ninterface Message {\r\n id: number;\r\n text?: string;\r\n sender: \"user\" | \"bot\";\r\n type?: \"survey\";\r\n}\r\n\r\nexport default function ChatPopup(props: ChatPopupProps) {\r\n const [messages, setMessages] = createSignal<Message[]>([]);\r\n const [input, setInput] = createSignal(\"\");\r\n const [isOpen, setIsOpen] = createSignal(false);\r\n const [isSidebarOpen, setIsSidebarOpen] = createSignal(false);\r\n const [isFullScreen, setIsFullScreen] = createSignal(false);\r\n const [isMobile, setIsMobile] = createSignal(false);\r\n const [inputHeight, setInputHeight] = createSignal(0);\r\n const [surveyOptions, setSurveyOptions] = createSignal<{ multiSelect?: boolean; isInputMode?: boolean }>({});\r\n const [currentStep] = createSignal(2);\r\n const onlyMobile = props.options?.onlyMobile || false;\r\n\r\n createEffect(() => {\r\n if (props.options?.onFullScreen) props.options.onFullScreen(isFullScreen());\r\n if (props.options?.onMobile) props.options.onMobile(isMobile());\r\n });\r\n\r\n createEffect(() => {\r\n if (isFullScreen() || isMobile()) {\r\n setIsOpen(true);\r\n }\r\n });\r\n\r\n onMount(async () => {\r\n // const initialMessages = await RemoteRepository.listMessages(\"1\");\r\n // const normalized = initialMessages.map((m: any) => ({\r\n // id: m.id,\r\n // text: m.text,\r\n // sender: m.sender === \"bot\" ? \"bot\" : \"user\",\r\n // })) as Message[];\r\n setMessages([]);\r\n });\r\n\r\n\r\n function getBotAnswer(userText?: string) {\r\n const lower = (userText ?? \"\").toLowerCase();\r\n if (lower.includes(\"thị trường\"))\r\n return \"Thị trường hôm nay biến động nhẹ, bạn quan tâm đến mã nào?\";\r\n if (lower.includes(\"fpt\"))\r\n return \"FPT đang có xu hướng tăng trưởng tốt, bạn cần phân tích kỹ thuật hay cơ bản?\";\r\n if (lower.includes(\"chào\"))\r\n return \"Xin chào! Tôi là bot hỗ trợ đầu tư.\";\r\n if (lower.includes(\"khảo sát\"))\r\n return \"Bạn muốn tôi hỗ trợ khảo sát thị trường theo ngành, khu vực hay theo xu hướng đầu tư?\";\r\n if (lower.includes(\"mục tiêu\"))\r\n return \"Bạn có thể chia sẻ thêm về mục tiêu tài chính của mình ngắn hạn, trung hạn hay dài hạn?\";\r\n if (lower.includes(\"rủi ro\"))\r\n return \"Hãy cho tôi biết mức độ chấp nhận rủi ro của bạn: thấp, trung bình hay cao?\";\r\n return \"Cảm ơn bạn đã hỏi, tôi sẽ phản hồi sớm!\";\r\n }\r\n\r\n const sendMessage = async () => {\r\n if (!input().trim()) return;\r\n const rawUserMessage = await RemoteRepository.sendMessage({ text: input() });\r\n const userMessage: Message = {\r\n id: rawUserMessage.id,\r\n text: rawUserMessage.text,\r\n sender: rawUserMessage.sender === \"bot\" ? \"bot\" : \"user\",\r\n };\r\n setMessages([...messages(), userMessage]);\r\n setInput(\"\");\r\n setTimeout(() => {\r\n const botMessage: Message = {\r\n id: Date.now() + 1,\r\n text: getBotAnswer(userMessage.text),\r\n sender: \"bot\",\r\n };\r\n setMessages([...messages(), botMessage]);\r\n }, 100);\r\n };\r\n\r\n const sendActionMessage = async (text: string) => {\r\n const rawUserMessage = await RemoteRepository.sendMessage({ text });\r\n const userMessage: Message = {\r\n id: rawUserMessage.id,\r\n text: rawUserMessage.text,\r\n sender: rawUserMessage.sender === \"bot\" ? \"bot\" : \"user\",\r\n };\r\n setMessages([...messages(), userMessage]);\r\n\r\n setTimeout(() => {\r\n const botMessage: Message = {\r\n id: Date.now() + 1,\r\n text: getBotAnswer(userMessage.text),\r\n sender: \"bot\",\r\n };\r\n setMessages([...messages(), botMessage]);\r\n }, 100);\r\n };\r\n\r\n const handleSurveyRequest = (options?: { multiSelect?: boolean; isInputMode?: boolean }) => {\r\n setSurveyOptions(options || {});\r\n setMessages([\r\n ...messages(),\r\n {\r\n id: Date.now(),\r\n sender: \"bot\",\r\n type: \"survey\"\r\n }\r\n ]);\r\n };\r\n\r\n const newConversation = () => {\r\n setMessages([]);\r\n }\r\n\r\n\r\n onMount(() => {\r\n const handleResize = () => {\r\n const width = window.innerWidth;\r\n const isMobileNow = width < 768;\r\n setIsMobile(isMobileNow);\r\n if (isFullScreen() && isMobileNow) {\r\n setIsFullScreen(false);\r\n setIsMobile(true);\r\n }\r\n };\r\n window.addEventListener(\"resize\", handleResize);\r\n handleResize();\r\n return () => {\r\n window.removeEventListener(\"resize\", handleResize);\r\n };\r\n });\r\n\r\n return (\r\n <div>\r\n {!isOpen() && (\r\n <button\r\n onClick={() => {\r\n if (onlyMobile) setIsMobile(true);\r\n setIsOpen(true)\r\n if (props.options?.onOpen) props.options.onOpen();\r\n }}\r\n class=\"chat-popup-button\"\r\n style={{\r\n background: \"none\",\r\n border: \"none\",\r\n cursor: \"pointer\",\r\n padding: 0\r\n }}\r\n >\r\n <img src={chatIcon} />\r\n </button>\r\n )}\r\n\r\n {isOpen() && (\r\n <div class={`chat-popup-window${isOpen() ? \" chat-popup-window--open\" : \"\"}${isFullScreen() ? \" chat-popup-window--fullscreen\" : \"\"}${isMobile() ? \" chat-popup-window--mobile\" : \"\"}`}\r\n style={isFullScreen() || isMobile() ? { [\"--chat-input-height\"]: `${inputHeight()}px` } : undefined}>\r\n {!isFullScreen() && (\r\n <div class=\"chat-popup-header\">\r\n <img\r\n src={inforIcon}\r\n style={{ width: \"28px\", height: \"28px\", cursor: \"pointer\" }}\r\n onClick={() => setIsSidebarOpen(true)}\r\n />\r\n <div class=\"chat-popup-title\">\r\n <img src={chatIcon} style={{ width: \"32px\", height: \"32px\", \"margin-right\": \"4px\" }} />\r\n <span style={{ color: \"#1A1D1F\", \"user-select\": \"none\" }}>Ez</span>\r\n <span style={{ color: \"#1AAF74\", \"margin-left\": \"4px\", \"user-select\": \"none\" }}>Advise</span>\r\n </div>\r\n <div style={{ display: \"flex\", gap: \"12px\", \"align-items\": \"center\", \"margin-top\": \"4px\" }}>\r\n {!isMobile() && (\r\n <>\r\n <button\r\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", padding: 0 }}\r\n onClick={() => {\r\n if (isFullScreen()) {\r\n setIsFullScreen(false);\r\n setIsMobile(true);\r\n } else if (isMobile()) {\r\n setIsMobile(false);\r\n } else {\r\n setIsMobile(true);\r\n }\r\n if (props.options?.onMinimize) props.options.onMinimize();\r\n }}\r\n >\r\n <img src={iconMinimize} style={{ width: \"20px\", height: \"20px\" }} />\r\n </button>\r\n <button\r\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", padding: 0 }}\r\n onClick={() => {\r\n setIsMobile(false);\r\n setIsFullScreen(true);\r\n if (props.options?.onMaximize) props.options.onMaximize();\r\n }}\r\n >\r\n <img src={iconExpand} style={{ width: \"20px\", height: \"20px\" }} />\r\n </button>\r\n </>\r\n )}\r\n <button\r\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", padding: 0 }}\r\n onClick={() => {\r\n setIsOpen(false);\r\n setIsMobile(false);\r\n setIsFullScreen(false);\r\n if (props.options?.onClose) props.options.onClose();\r\n }}\r\n >\r\n <img src={iconClose} style={{ width: \"20px\", height: \"20px\" }} />\r\n </button>\r\n </div>\r\n </div>\r\n )}\r\n <div style={{\r\n display: \"flex\",\r\n height: \"100%\",\r\n \"flex-direction\": \"row\",\r\n }}>\r\n {isFullScreen() ? (\r\n <Sidebar\r\n onClose={() => {\r\n setIsOpen(false);\r\n setIsMobile(false);\r\n setIsFullScreen(false);\r\n if (props.options?.onClose) props.options.onClose();\r\n }}\r\n onShrink={() => {\r\n setIsFullScreen(false);\r\n if (props.options?.onShrink) props.options.onShrink();\r\n }}\r\n open={true}\r\n fullScreen={true}\r\n isMobile={isMobile()}\r\n onMobile={() => {\r\n setIsFullScreen(false);\r\n setIsMobile(true);\r\n }}\r\n onSurveyRequest={handleSurveyRequest}\r\n onNewConversation={newConversation}\r\n options={props.options}\r\n />\r\n ) : (\r\n <Sidebar\r\n onClose={() => setIsSidebarOpen(false)}\r\n open={isSidebarOpen()}\r\n fullScreen={false}\r\n isMobile={isMobile()}\r\n onSurveyRequest={handleSurveyRequest}\r\n onNewConversation={newConversation}\r\n options={props.options}\r\n />\r\n )}\r\n <div style={{ flex: 1, display: \"flex\", \"flex-direction\": \"column\", position: \"relative\", \"min-height\": 0, height: \"100%\" }}>\r\n {isFullScreen() && (\r\n <HeaderSteps currentStep={currentStep()} totalSteps={6} />\r\n )}\r\n <ChatMessages\r\n messages={messages()}\r\n isFullScreen={isFullScreen()}\r\n inputHeight={isFullScreen() ? inputHeight() : undefined}\r\n isMobile={isMobile()}\r\n onSubmit={(data, type) => {\r\n let text;\r\n if (type === 'ordered' || type === 'selected') {\r\n text = data.map(o => o.split('. ')[1]).join('\\n\\n');\r\n } else if (type === 'input') {\r\n text = data.join('\\n\\n');\r\n }\r\n if (text) {\r\n sendActionMessage(text);\r\n }\r\n }}\r\n surveyOptions={surveyOptions()}\r\n />\r\n {isFullScreen() ? (\r\n <>\r\n <div class={`chat-input-floating-box${messages().length > 0 ? \" chat-input-floating-box--with-messages\" : \"\"}`}>\r\n {messages().length === 0 && (\r\n <div\r\n style={{\r\n \"text-align\": \"center\",\r\n \"font-size\": \"32px\",\r\n \"font-weight\": \"600\",\r\n \"margin-bottom\": \"32px\",\r\n \"user-select\": \"none\",\r\n width: \"100%\"\r\n }}\r\n >\r\n Hôm nay thị trường khiến bạn quan tâm điều gì?\r\n </div>\r\n )}\r\n <div style={{ width: \"100%\" }}>\r\n <ChatInput\r\n input={input()}\r\n setInput={setInput}\r\n sendMessage={sendMessage}\r\n onHeightChange={setInputHeight}\r\n />\r\n </div>\r\n {messages().length === 0 && (\r\n <div class=\"chat-popup-action-buttons\">\r\n <ChatActionButton text=\"Khảo sát đầu tư\" onClick={() => sendActionMessage(\"Khảo sát đầu tư\")} />\r\n <ChatActionButton text=\"Mục tiêu tài chính\" onClick={() => sendActionMessage(\"Mục tiêu tài chính\")} />\r\n <ChatActionButton text=\"Khả năng chấp nhận rủi ro\" onClick={() => sendActionMessage(\"Khả năng chấp nhận rủi ro\")} />\r\n <ChatActionButton text=\"Khả năng chấp nhận rủi ro\" onClick={() => sendActionMessage(\"Khả năng chấp nhận rủi ro\")} />\r\n </div>\r\n )}\r\n </div>\r\n </>\r\n ) : (\r\n <ChatInput\r\n input={input()}\r\n setInput={setInput}\r\n sendMessage={sendMessage}\r\n onHeightChange={setInputHeight}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}","import { render } from \"solid-js/web\";\r\nimport ChatPopup from \"./modules/ChatPopup/ChatPopup\";\r\n\r\nexport function createPopup(\r\n selector: string | Element,\r\n options?: {\r\n onMaximize?: () => void;\r\n onMinimize?: () => void;\r\n onMobile?: (isMobile: boolean) => void;\r\n onFullScreen?: (isFullScreen: boolean) => void;\r\n onShrink?: () => void;\r\n onOpen?: () => void;\r\n }\r\n) {\r\n const container = typeof selector === \"string\"\r\n ? document.querySelector(selector)\r\n : selector;\r\n if (!container) throw new Error(`Element \"${selector}\" not found.`);\r\n container.innerHTML = \"\";\r\n\r\n render(() => <ChatPopup options={options} />, container);\r\n}\r\n\r\ndeclare global {\r\n interface Window {\r\n EzChat: {\r\n createPopup: typeof createPopup;\r\n };\r\n }\r\n}\r\n\r\nif (typeof window !== 'undefined') {\r\n window.EzChat = { createPopup };\r\n}"],"names":["equalFn","a","b","$TRACK","signalOptions","runEffects","runQueue","STALE","PENDING","UNOWNED","Owner","Transition","ExternalSourceConfig","Listener","Updates","Effects","ExecCount","createRoot","fn","detachedOwner","listener","owner","unowned","current","root","updateFn","untrack","cleanNode","runUpdates","createSignal","value","options","s","setter","writeSignal","readSignal","createRenderEffect","c","createComputation","updateComputation","createEffect","runUserEffects","createMemo","onMount","onCleanup","updates","lookUpstream","sSlot","node","isComp","i","o","TransitionRunning","markDownstream","time","runComputation","nextValue","err","handleError","init","pure","state","runTop","ancestors","wait","res","completeUpdates","e","queue","userLength","ignore","source","index","obs","n","castError","FALLBACK","dispose","d","mapArray","list","mapFn","items","mapped","disposers","len","indexes","newItems","newLen","j","newIndices","newIndicesNext","temp","tempdisposers","tempIndexes","start","end","newEnd","item","disposer","mapper","set","createComponent","Comp","props","narrowedError","name","For","fallback","Show","keyed","conditionValue","condition","child","memo","reconcileArrays","parentNode","bLength","aEnd","bEnd","aStart","bStart","after","map","sequence","t","$$EVENTS","render","code","element","insert","template","html","isImportNode","isSVG","isMathML","create","delegateEvents","eventNames","document","l","eventHandler","setAttribute","className","addEventListener","handler","delegate","style","prev","nodeStyle","v","setStyleProperty","use","arg","parent","accessor","marker","initial","insertExpression","key","oriTarget","oriCurrentTarget","retarget","handleNode","data","walkUpTree","path","unwrapArray","multi","cleanChildren","array","currentArray","normalizeIncomingArray","appendNodes","normalized","unwrap","dynamic","replacement","inserted","el","isParent","chatIcon","inforIcon","iconExpand","iconShrink","iconMinimize","iconClose","iconAddItem","iconSend","iconSideActive","iconUser","iconTrending","iconNewConversation","iconSearch","iconMenudot","iconMicrophone","iconEdit","iconDelete","iconSendActive","iconLike","iconDislike","iconLikeActive","iconDislikeActive","iconCheck","SurveyMessage","setOptions","draggedIndex","setDraggedIndex","hoveredIndex","setHoveredIndex","selectedIndexes","setSelectedIndexes","answers","setAnswers","Array","length","fill","multiSelect","isInputMode","containerRef","handleMouseDown","button","preventDefault","handleMouseMove","containerRect","getBoundingClientRect","clientX","left","right","clientY","top","bottom","buttons","querySelectorAll","rect","handleMouseUp","newOptions","handleOptionClick","idx","includes","filter","handleAnswerChange","next","handleSubmit","onSubmit","filledAnswers","trim","selectedOptions","_","removeEventListener","_el$","_tmpl$","_el$2","firstChild","_el$3","_el$4","nextSibling","_el$5","_el$7","_el$8","_el$9","_$setStyleProperty","_$insert","_c$","_$memo","_el$0","_tmpl$2","_$createComponent","each","children","option","_el$1","_tmpl$3","_el$10","_el$11","$$input","currentTarget","_$setAttribute","_$effect","_el$12","_tmpl$4","_ref$","_$use","_el$13","_tmpl$5","_el$14","$$click","$$mousedown","_c$2","_el$15","_tmpl$6","_$className","_$delegateEvents","ChatMessages","messagesContainerRef","hoveredId","setHoveredId","feedbackState","setFeedbackState","timeoutId","setTimeoutId","handleMouseEnter","id","clearTimeout","handleMouseLeave","setTimeout","getPadBottom","isFullScreen","messages","inputHeight","isMobile","scrollTop","scrollHeight","requestAnimationFrame","when","_$p","msg","type","surveyOptions","_el$6","sender","text","__spreadProps","__spreadValues","_p$","_v$5","_v$6","_v$7","_v$8","_v$9","undefined","_v$3","_v$4","_v$","_v$2","ChatInput","textareaRef","isMaxed","setIsMaxed","resizeTextarea","height","input","overflowY","onHeightChange","fullHeight","usedHeight","Math","min","MAX_HEIGHT","handleInput","setInput","handleKeyPress","shiftKey","sendMessage","_$addEventListener","classList","toggle","Sidebar","popoverOpen","setPopoverOpen","popoverRef","handleMouseDownOutside","contains","target","fullScreen","_el$19","onClose","open","_el$16","_el$17","_el$18","_el$20","_el$21","_el$22","_el$23","_el$24","_el$25","onShrink","onSurveyRequest","onNewConversation","stopPropagation","_c$3","_el$26","_el$27","_el$28","_el$29","_el$30","width","_$style","ChatActionButton","onClick","HeaderSteps","currentStep","totalSteps","title","from","listMessagesAsync","conversationId","direction","fromMessageId","__async","sendMessageAsync","message","updateMessageAsync","deleteMessageAsync","messageId","deleteType","searchMessagesAsync","keyword","m","RemoteRepository","MessageService.listMessagesAsync","MessageService.sendMessageAsync","MessageService.updateMessageAsync","MessageService.deleteMessageAsync","MessageService.searchMessagesAsync","RemoteRepository$1","ChatPopup","setMessages","isOpen","setIsOpen","isSidebarOpen","setIsSidebarOpen","setIsFullScreen","setIsMobile","setInputHeight","setSurveyOptions","onlyMobile","onFullScreen","onMobile","getBotAnswer","userText","lower","toLowerCase","rawUserMessage","userMessage","botMessage","Date","now","sendActionMessage","handleSurveyRequest","newConversation","handleResize","isMobileNow","window","innerWidth","onOpen","_c$7","onMinimize","onMaximize","_c$4","_c$5","split","join","_c$6","_c$8","_tmpl$7","_c$9","_tmpl$8","createPopup","selector","container","querySelector","Error","innerHTML","EzChat"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
1
|
+
{"version":3,"file":"ezchat.umd.js","sources":["../node_modules/solid-js/dist/solid.js","../node_modules/solid-js/web/dist/web.js","../src/assets/icons/icon-chat-button.svg","../src/assets/icons/icon-more-infor.svg","../src/assets/icons/icon-expand.svg","../src/assets/icons/icon-shrink.svg","../src/assets/icons/icon-minimize.svg","../src/assets/icons/icon-close.svg","../src/assets/icons/icon-add-item.svg","../src/assets/icons/icon-send-message.svg","../src/assets/icons/icon-sidebar-active.svg","../src/assets/icons/icon-user.svg","../src/assets/icons/icon-trending.svg","../src/assets/icons/icon-add-conversation.svg","../src/assets/icons/icon-search.svg","../src/assets/icons/icon-menu-dot.svg","../src/assets/icons/icon-micro.svg","../src/assets/icons/icon-edit.svg","../src/assets/icons/icon-delete.svg","../src/assets/icons/icon-send-active.svg","../src/assets/icons/icon-like.svg","../src/assets/icons/icon-dislike.svg","../src/assets/icons/icon-like-active.svg","../src/assets/icons/icon-dislike-active.svg","../src/assets/icons/icon-check.svg","../src/components/SurveyMessage/SurveyMessage.tsx","../src/modules/ChatMessages/ChatMessages.tsx","../src/modules/ChatInput/ChatInput.tsx","../src/components/Sidebar/Siderbar.tsx","../src/components/ChatActionButton/ChatActionButton.tsx","../src/components/HeaderSteps/HeaderSteps.tsx","../src/data-provider/services/message-service.ts","../src/RemoteRepository.ts","../src/modules/ChatPopup/ChatPopup.tsx","../src/index.tsx"],"sourcesContent":["let taskIdCounter = 1,\n isCallbackScheduled = false,\n isPerformingWork = false,\n taskQueue = [],\n currentTask = null,\n shouldYieldToHost = null,\n yieldInterval = 5,\n deadline = 0,\n maxYieldInterval = 300,\n maxDeadline = 0,\n scheduleCallback = null,\n scheduledCallback = null;\nconst maxSigned31BitInt = 1073741823;\nfunction setupScheduler() {\n const channel = new MessageChannel(),\n port = channel.port2;\n scheduleCallback = () => port.postMessage(null);\n channel.port1.onmessage = () => {\n if (scheduledCallback !== null) {\n const currentTime = performance.now();\n deadline = currentTime + yieldInterval;\n maxDeadline = currentTime + maxYieldInterval;\n try {\n const hasMoreWork = scheduledCallback(currentTime);\n if (!hasMoreWork) {\n scheduledCallback = null;\n } else port.postMessage(null);\n } catch (error) {\n port.postMessage(null);\n throw error;\n }\n }\n };\n if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {\n const scheduling = navigator.scheduling;\n shouldYieldToHost = () => {\n const currentTime = performance.now();\n if (currentTime >= deadline) {\n if (scheduling.isInputPending()) {\n return true;\n }\n return currentTime >= maxDeadline;\n } else {\n return false;\n }\n };\n } else {\n shouldYieldToHost = () => performance.now() >= deadline;\n }\n}\nfunction enqueue(taskQueue, task) {\n function findIndex() {\n let m = 0;\n let n = taskQueue.length - 1;\n while (m <= n) {\n const k = n + m >> 1;\n const cmp = task.expirationTime - taskQueue[k].expirationTime;\n if (cmp > 0) m = k + 1;else if (cmp < 0) n = k - 1;else return k;\n }\n return m;\n }\n taskQueue.splice(findIndex(), 0, task);\n}\nfunction requestCallback(fn, options) {\n if (!scheduleCallback) setupScheduler();\n let startTime = performance.now(),\n timeout = maxSigned31BitInt;\n if (options && options.timeout) timeout = options.timeout;\n const newTask = {\n id: taskIdCounter++,\n fn,\n startTime,\n expirationTime: startTime + timeout\n };\n enqueue(taskQueue, newTask);\n if (!isCallbackScheduled && !isPerformingWork) {\n isCallbackScheduled = true;\n scheduledCallback = flushWork;\n scheduleCallback();\n }\n return newTask;\n}\nfunction cancelCallback(task) {\n task.fn = null;\n}\nfunction flushWork(initialTime) {\n isCallbackScheduled = false;\n isPerformingWork = true;\n try {\n return workLoop(initialTime);\n } finally {\n currentTask = null;\n isPerformingWork = false;\n }\n}\nfunction workLoop(initialTime) {\n let currentTime = initialTime;\n currentTask = taskQueue[0] || null;\n while (currentTask !== null) {\n if (currentTask.expirationTime > currentTime && shouldYieldToHost()) {\n break;\n }\n const callback = currentTask.fn;\n if (callback !== null) {\n currentTask.fn = null;\n const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n callback(didUserCallbackTimeout);\n currentTime = performance.now();\n if (currentTask === taskQueue[0]) {\n taskQueue.shift();\n }\n } else taskQueue.shift();\n currentTask = taskQueue[0] || null;\n }\n return currentTask !== null;\n}\n\nconst sharedConfig = {\n context: undefined,\n registry: undefined,\n effects: undefined,\n done: false,\n getContextId() {\n return getContextId(this.context.count);\n },\n getNextContextId() {\n return getContextId(this.context.count++);\n }\n};\nfunction getContextId(count) {\n const num = String(count),\n len = num.length - 1;\n return sharedConfig.context.id + (len ? String.fromCharCode(96 + len) : \"\") + num;\n}\nfunction setHydrateContext(context) {\n sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n return {\n ...sharedConfig.context,\n id: sharedConfig.getNextContextId(),\n count: 0\n };\n}\n\nconst IS_DEV = false;\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst SUPPORTS_PROXY = typeof Proxy === \"function\";\nconst $TRACK = Symbol(\"solid-track\");\nconst $DEVCOMP = Symbol(\"solid-dev-component\");\nconst signalOptions = {\n equals: equalFn\n};\nlet ERROR = null;\nlet runEffects = runQueue;\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n owned: null,\n cleanups: null,\n context: null,\n owner: null\n};\nconst NO_INIT = {};\nvar Owner = null;\nlet Transition = null;\nlet Scheduler = null;\nlet ExternalSourceConfig = null;\nlet Listener = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nfunction createRoot(fn, detachedOwner) {\n const listener = Listener,\n owner = Owner,\n unowned = fn.length === 0,\n current = detachedOwner === undefined ? owner : detachedOwner,\n root = unowned ? UNOWNED : {\n owned: null,\n cleanups: null,\n context: current ? current.context : null,\n owner: current\n },\n updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n Owner = root;\n Listener = null;\n try {\n return runUpdates(updateFn, true);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n}\nfunction createSignal(value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const s = {\n value,\n observers: null,\n observerSlots: null,\n comparator: options.equals || undefined\n };\n const setter = value => {\n if (typeof value === \"function\") {\n if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);else value = value(s.value);\n }\n return writeSignal(s, value);\n };\n return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n const c = createComputation(fn, value, true, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n const c = createComputation(fn, value, false, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n runEffects = runUserEffects;\n const c = createComputation(fn, value, false, STALE),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n if (!options || !options.render) c.user = true;\n Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createReaction(onInvalidate, options) {\n let fn;\n const c = createComputation(() => {\n fn ? fn() : untrack(onInvalidate);\n fn = undefined;\n }, undefined, false, 0),\n s = SuspenseContext && useContext(SuspenseContext);\n if (s) c.suspense = s;\n c.user = true;\n return tracking => {\n fn = tracking;\n updateComputation(c);\n };\n}\nfunction createMemo(fn, value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const c = createComputation(fn, value, true, 0);\n c.observers = null;\n c.observerSlots = null;\n c.comparator = options.equals || undefined;\n if (Scheduler && Transition && Transition.running) {\n c.tState = STALE;\n Updates.push(c);\n } else updateComputation(c);\n return readSignal.bind(c);\n}\nfunction isPromise(v) {\n return v && typeof v === \"object\" && \"then\" in v;\n}\nfunction createResource(pSource, pFetcher, pOptions) {\n let source;\n let fetcher;\n let options;\n if (typeof pFetcher === \"function\") {\n source = pSource;\n fetcher = pFetcher;\n options = pOptions || {};\n } else {\n source = true;\n fetcher = pSource;\n options = pFetcher || {};\n }\n let pr = null,\n initP = NO_INIT,\n id = null,\n loadedUnderTransition = false,\n scheduled = false,\n resolved = \"initialValue\" in options,\n dynamic = typeof source === \"function\" && createMemo(source);\n const contexts = new Set(),\n [value, setValue] = (options.storage || createSignal)(options.initialValue),\n [error, setError] = createSignal(undefined),\n [track, trigger] = createSignal(undefined, {\n equals: false\n }),\n [state, setState] = createSignal(resolved ? \"ready\" : \"unresolved\");\n if (sharedConfig.context) {\n id = sharedConfig.getNextContextId();\n if (options.ssrLoadFrom === \"initial\") initP = options.initialValue;else if (sharedConfig.load && sharedConfig.has(id)) initP = sharedConfig.load(id);\n }\n function loadEnd(p, v, error, key) {\n if (pr === p) {\n pr = null;\n key !== undefined && (resolved = true);\n if ((p === initP || v === initP) && options.onHydrated) queueMicrotask(() => options.onHydrated(key, {\n value: v\n }));\n initP = NO_INIT;\n if (Transition && p && loadedUnderTransition) {\n Transition.promises.delete(p);\n loadedUnderTransition = false;\n runUpdates(() => {\n Transition.running = true;\n completeLoad(v, error);\n }, false);\n } else completeLoad(v, error);\n }\n return v;\n }\n function completeLoad(v, err) {\n runUpdates(() => {\n if (err === undefined) setValue(() => v);\n setState(err !== undefined ? \"errored\" : resolved ? \"ready\" : \"unresolved\");\n setError(err);\n for (const c of contexts.keys()) c.decrement();\n contexts.clear();\n }, false);\n }\n function read() {\n const c = SuspenseContext && useContext(SuspenseContext),\n v = value(),\n err = error();\n if (err !== undefined && !pr) throw err;\n if (Listener && !Listener.user && c) {\n createComputed(() => {\n track();\n if (pr) {\n if (c.resolved && Transition && loadedUnderTransition) Transition.promises.add(pr);else if (!contexts.has(c)) {\n c.increment();\n contexts.add(c);\n }\n }\n });\n }\n return v;\n }\n function load(refetching = true) {\n if (refetching !== false && scheduled) return;\n scheduled = false;\n const lookup = dynamic ? dynamic() : source;\n loadedUnderTransition = Transition && Transition.running;\n if (lookup == null || lookup === false) {\n loadEnd(pr, untrack(value));\n return;\n }\n if (Transition && pr) Transition.promises.delete(pr);\n let error;\n const p = initP !== NO_INIT ? initP : untrack(() => {\n try {\n return fetcher(lookup, {\n value: value(),\n refetching\n });\n } catch (fetcherError) {\n error = fetcherError;\n }\n });\n if (error !== undefined) {\n loadEnd(pr, undefined, castError(error), lookup);\n return;\n } else if (!isPromise(p)) {\n loadEnd(pr, p, undefined, lookup);\n return p;\n }\n pr = p;\n if (\"v\" in p) {\n if (p.s === 1) loadEnd(pr, p.v, undefined, lookup);else loadEnd(pr, undefined, castError(p.v), lookup);\n return p;\n }\n scheduled = true;\n queueMicrotask(() => scheduled = false);\n runUpdates(() => {\n setState(resolved ? \"refreshing\" : \"pending\");\n trigger();\n }, false);\n return p.then(v => loadEnd(p, v, undefined, lookup), e => loadEnd(p, undefined, castError(e), lookup));\n }\n Object.defineProperties(read, {\n state: {\n get: () => state()\n },\n error: {\n get: () => error()\n },\n loading: {\n get() {\n const s = state();\n return s === \"pending\" || s === \"refreshing\";\n }\n },\n latest: {\n get() {\n if (!resolved) return read();\n const err = error();\n if (err && !pr) throw err;\n return value();\n }\n }\n });\n let owner = Owner;\n if (dynamic) createComputed(() => (owner = Owner, load(false)));else load(false);\n return [read, {\n refetch: info => runWithOwner(owner, () => load(info)),\n mutate: setValue\n }];\n}\nfunction createDeferred(source, options) {\n let t,\n timeout = options ? options.timeoutMs : undefined;\n const node = createComputation(() => {\n if (!t || !t.fn) t = requestCallback(() => setDeferred(() => node.value), timeout !== undefined ? {\n timeout\n } : undefined);\n return source();\n }, undefined, true);\n const [deferred, setDeferred] = createSignal(Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, options);\n updateComputation(node);\n setDeferred(() => Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);\n return deferred;\n}\nfunction createSelector(source, fn = equalFn, options) {\n const subs = new Map();\n const node = createComputation(p => {\n const v = source();\n for (const [key, val] of subs.entries()) if (fn(key, v) !== fn(key, p)) {\n for (const c of val.values()) {\n c.state = STALE;\n if (c.pure) Updates.push(c);else Effects.push(c);\n }\n }\n return v;\n }, undefined, true, STALE);\n updateComputation(node);\n return key => {\n const listener = Listener;\n if (listener) {\n let l;\n if (l = subs.get(key)) l.add(listener);else subs.set(key, l = new Set([listener]));\n onCleanup(() => {\n l.delete(listener);\n !l.size && subs.delete(key);\n });\n }\n return fn(key, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);\n };\n}\nfunction batch(fn) {\n return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n if (!ExternalSourceConfig && Listener === null) return fn();\n const listener = Listener;\n Listener = null;\n try {\n if (ExternalSourceConfig) return ExternalSourceConfig.untrack(fn);\n return fn();\n } finally {\n Listener = listener;\n }\n}\nfunction on(deps, fn, options) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let defer = options && options.defer;\n return prevValue => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n } else input = deps();\n if (defer) {\n defer = false;\n return prevValue;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nfunction onMount(fn) {\n createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n if (Owner === null) ;else if (Owner.cleanups === null) Owner.cleanups = [fn];else Owner.cleanups.push(fn);\n return fn;\n}\nfunction catchError(fn, handler) {\n ERROR || (ERROR = Symbol(\"error\"));\n Owner = createComputation(undefined, undefined, true);\n Owner.context = {\n ...Owner.context,\n [ERROR]: [handler]\n };\n if (Transition && Transition.running) Transition.sources.add(Owner);\n try {\n return fn();\n } catch (err) {\n handleError(err);\n } finally {\n Owner = Owner.owner;\n }\n}\nfunction getListener() {\n return Listener;\n}\nfunction getOwner() {\n return Owner;\n}\nfunction runWithOwner(o, fn) {\n const prev = Owner;\n const prevListener = Listener;\n Owner = o;\n Listener = null;\n try {\n return runUpdates(fn, true);\n } catch (err) {\n handleError(err);\n } finally {\n Owner = prev;\n Listener = prevListener;\n }\n}\nfunction enableScheduling(scheduler = requestCallback) {\n Scheduler = scheduler;\n}\nfunction startTransition(fn) {\n if (Transition && Transition.running) {\n fn();\n return Transition.done;\n }\n const l = Listener;\n const o = Owner;\n return Promise.resolve().then(() => {\n Listener = l;\n Owner = o;\n let t;\n if (Scheduler || SuspenseContext) {\n t = Transition || (Transition = {\n sources: new Set(),\n effects: [],\n promises: new Set(),\n disposed: new Set(),\n queue: new Set(),\n running: true\n });\n t.done || (t.done = new Promise(res => t.resolve = res));\n t.running = true;\n }\n runUpdates(fn, false);\n Listener = Owner = null;\n return t ? t.done : undefined;\n });\n}\nconst [transPending, setTransPending] = /*@__PURE__*/createSignal(false);\nfunction useTransition() {\n return [transPending, startTransition];\n}\nfunction resumeEffects(e) {\n Effects.push.apply(Effects, e);\n e.length = 0;\n}\nfunction createContext(defaultValue, options) {\n const id = Symbol(\"context\");\n return {\n id,\n Provider: createProvider(id),\n defaultValue\n };\n}\nfunction useContext(context) {\n let value;\n return Owner && Owner.context && (value = Owner.context[context.id]) !== undefined ? value : context.defaultValue;\n}\nfunction children(fn) {\n const children = createMemo(fn);\n const memo = createMemo(() => resolveChildren(children()));\n memo.toArray = () => {\n const c = memo();\n return Array.isArray(c) ? c : c != null ? [c] : [];\n };\n return memo;\n}\nlet SuspenseContext;\nfunction getSuspenseContext() {\n return SuspenseContext || (SuspenseContext = createContext());\n}\nfunction enableExternalSource(factory, untrack = fn => fn()) {\n if (ExternalSourceConfig) {\n const {\n factory: oldFactory,\n untrack: oldUntrack\n } = ExternalSourceConfig;\n ExternalSourceConfig = {\n factory: (fn, trigger) => {\n const oldSource = oldFactory(fn, trigger);\n const source = factory(x => oldSource.track(x), trigger);\n return {\n track: x => source.track(x),\n dispose() {\n source.dispose();\n oldSource.dispose();\n }\n };\n },\n untrack: fn => oldUntrack(() => untrack(fn))\n };\n } else {\n ExternalSourceConfig = {\n factory,\n untrack\n };\n }\n}\nfunction readSignal() {\n const runningTransition = Transition && Transition.running;\n if (this.sources && (runningTransition ? this.tState : this.state)) {\n if ((runningTransition ? this.tState : this.state) === STALE) updateComputation(this);else {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(this), false);\n Updates = updates;\n }\n }\n if (Listener) {\n const sSlot = this.observers ? this.observers.length : 0;\n if (!Listener.sources) {\n Listener.sources = [this];\n Listener.sourceSlots = [sSlot];\n } else {\n Listener.sources.push(this);\n Listener.sourceSlots.push(sSlot);\n }\n if (!this.observers) {\n this.observers = [Listener];\n this.observerSlots = [Listener.sources.length - 1];\n } else {\n this.observers.push(Listener);\n this.observerSlots.push(Listener.sources.length - 1);\n }\n }\n if (runningTransition && Transition.sources.has(this)) return this.tValue;\n return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n let current = Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;\n if (!node.comparator || !node.comparator(current, value)) {\n if (Transition) {\n const TransitionRunning = Transition.running;\n if (TransitionRunning || !isComp && Transition.sources.has(node)) {\n Transition.sources.add(node);\n node.tValue = value;\n }\n if (!TransitionRunning) node.value = value;\n } else node.value = value;\n if (node.observers && node.observers.length) {\n runUpdates(() => {\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n const TransitionRunning = Transition && Transition.running;\n if (TransitionRunning && Transition.disposed.has(o)) continue;\n if (TransitionRunning ? !o.tState : !o.state) {\n if (o.pure) Updates.push(o);else Effects.push(o);\n if (o.observers) markDownstream(o);\n }\n if (!TransitionRunning) o.state = STALE;else o.tState = STALE;\n }\n if (Updates.length > 10e5) {\n Updates = [];\n if (IS_DEV) ;\n throw new Error();\n }\n }, false);\n }\n }\n return value;\n}\nfunction updateComputation(node) {\n if (!node.fn) return;\n cleanNode(node);\n const time = ExecCount;\n runComputation(node, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, time);\n if (Transition && !Transition.running && Transition.sources.has(node)) {\n queueMicrotask(() => {\n runUpdates(() => {\n Transition && (Transition.running = true);\n Listener = Owner = node;\n runComputation(node, node.tValue, time);\n Listener = Owner = null;\n }, false);\n });\n }\n}\nfunction runComputation(node, value, time) {\n let nextValue;\n const owner = Owner,\n listener = Listener;\n Listener = Owner = node;\n try {\n nextValue = node.fn(value);\n } catch (err) {\n if (node.pure) {\n if (Transition && Transition.running) {\n node.tState = STALE;\n node.tOwned && node.tOwned.forEach(cleanNode);\n node.tOwned = undefined;\n } else {\n node.state = STALE;\n node.owned && node.owned.forEach(cleanNode);\n node.owned = null;\n }\n }\n node.updatedAt = time + 1;\n return handleError(err);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n if (!node.updatedAt || node.updatedAt <= time) {\n if (node.updatedAt != null && \"observers\" in node) {\n writeSignal(node, nextValue, true);\n } else if (Transition && Transition.running && node.pure) {\n Transition.sources.add(node);\n node.tValue = nextValue;\n } else node.value = nextValue;\n node.updatedAt = time;\n }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n const c = {\n fn,\n state: state,\n updatedAt: null,\n owned: null,\n sources: null,\n sourceSlots: null,\n cleanups: null,\n value: init,\n owner: Owner,\n context: Owner ? Owner.context : null,\n pure\n };\n if (Transition && Transition.running) {\n c.state = 0;\n c.tState = state;\n }\n if (Owner === null) ;else if (Owner !== UNOWNED) {\n if (Transition && Transition.running && Owner.pure) {\n if (!Owner.tOwned) Owner.tOwned = [c];else Owner.tOwned.push(c);\n } else {\n if (!Owner.owned) Owner.owned = [c];else Owner.owned.push(c);\n }\n }\n if (ExternalSourceConfig && c.fn) {\n const [track, trigger] = createSignal(undefined, {\n equals: false\n });\n const ordinary = ExternalSourceConfig.factory(c.fn, trigger);\n onCleanup(() => ordinary.dispose());\n const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());\n const inTransition = ExternalSourceConfig.factory(c.fn, triggerInTransition);\n c.fn = x => {\n track();\n return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);\n };\n }\n return c;\n}\nfunction runTop(node) {\n const runningTransition = Transition && Transition.running;\n if ((runningTransition ? node.tState : node.state) === 0) return;\n if ((runningTransition ? node.tState : node.state) === PENDING) return lookUpstream(node);\n if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n const ancestors = [node];\n while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n if (runningTransition && Transition.disposed.has(node)) return;\n if (runningTransition ? node.tState : node.state) ancestors.push(node);\n }\n for (let i = ancestors.length - 1; i >= 0; i--) {\n node = ancestors[i];\n if (runningTransition) {\n let top = node,\n prev = ancestors[i + 1];\n while ((top = top.owner) && top !== prev) {\n if (Transition.disposed.has(top)) return;\n }\n }\n if ((runningTransition ? node.tState : node.state) === STALE) {\n updateComputation(node);\n } else if ((runningTransition ? node.tState : node.state) === PENDING) {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(node, ancestors[0]), false);\n Updates = updates;\n }\n }\n}\nfunction runUpdates(fn, init) {\n if (Updates) return fn();\n let wait = false;\n if (!init) Updates = [];\n if (Effects) wait = true;else Effects = [];\n ExecCount++;\n try {\n const res = fn();\n completeUpdates(wait);\n return res;\n } catch (err) {\n if (!wait) Effects = null;\n Updates = null;\n handleError(err);\n }\n}\nfunction completeUpdates(wait) {\n if (Updates) {\n if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);else runQueue(Updates);\n Updates = null;\n }\n if (wait) return;\n let res;\n if (Transition) {\n if (!Transition.promises.size && !Transition.queue.size) {\n const sources = Transition.sources;\n const disposed = Transition.disposed;\n Effects.push.apply(Effects, Transition.effects);\n res = Transition.resolve;\n for (const e of Effects) {\n \"tState\" in e && (e.state = e.tState);\n delete e.tState;\n }\n Transition = null;\n runUpdates(() => {\n for (const d of disposed) cleanNode(d);\n for (const v of sources) {\n v.value = v.tValue;\n if (v.owned) {\n for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n }\n if (v.tOwned) v.owned = v.tOwned;\n delete v.tValue;\n delete v.tOwned;\n v.tState = 0;\n }\n setTransPending(false);\n }, false);\n } else if (Transition.running) {\n Transition.running = false;\n Transition.effects.push.apply(Transition.effects, Effects);\n Effects = null;\n setTransPending(true);\n return;\n }\n }\n const e = Effects;\n Effects = null;\n if (e.length) runUpdates(() => runEffects(e), false);\n if (res) res();\n}\nfunction runQueue(queue) {\n for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n const tasks = Transition.queue;\n if (!tasks.has(item)) {\n tasks.add(item);\n Scheduler(() => {\n tasks.delete(item);\n runUpdates(() => {\n Transition.running = true;\n runTop(item);\n }, false);\n Transition && (Transition.running = false);\n });\n }\n }\n}\nfunction runUserEffects(queue) {\n let i,\n userLength = 0;\n for (i = 0; i < queue.length; i++) {\n const e = queue[i];\n if (!e.user) runTop(e);else queue[userLength++] = e;\n }\n if (sharedConfig.context) {\n if (sharedConfig.count) {\n sharedConfig.effects || (sharedConfig.effects = []);\n sharedConfig.effects.push(...queue.slice(0, userLength));\n return;\n }\n setHydrateContext();\n }\n if (sharedConfig.effects && (sharedConfig.done || !sharedConfig.count)) {\n queue = [...sharedConfig.effects, ...queue];\n userLength += sharedConfig.effects.length;\n delete sharedConfig.effects;\n }\n for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n const runningTransition = Transition && Transition.running;\n if (runningTransition) node.tState = 0;else node.state = 0;\n for (let i = 0; i < node.sources.length; i += 1) {\n const source = node.sources[i];\n if (source.sources) {\n const state = runningTransition ? source.tState : source.state;\n if (state === STALE) {\n if (source !== ignore && (!source.updatedAt || source.updatedAt < ExecCount)) runTop(source);\n } else if (state === PENDING) lookUpstream(source, ignore);\n }\n }\n}\nfunction markDownstream(node) {\n const runningTransition = Transition && Transition.running;\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n if (runningTransition ? !o.tState : !o.state) {\n if (runningTransition) o.tState = PENDING;else o.state = PENDING;\n if (o.pure) Updates.push(o);else Effects.push(o);\n o.observers && markDownstream(o);\n }\n }\n}\nfunction cleanNode(node) {\n let i;\n if (node.sources) {\n while (node.sources.length) {\n const source = node.sources.pop(),\n index = node.sourceSlots.pop(),\n obs = source.observers;\n if (obs && obs.length) {\n const n = obs.pop(),\n s = source.observerSlots.pop();\n if (index < obs.length) {\n n.sourceSlots[s] = index;\n obs[index] = n;\n source.observerSlots[index] = s;\n }\n }\n }\n }\n if (node.tOwned) {\n for (i = node.tOwned.length - 1; i >= 0; i--) cleanNode(node.tOwned[i]);\n delete node.tOwned;\n }\n if (Transition && Transition.running && node.pure) {\n reset(node, true);\n } else if (node.owned) {\n for (i = node.owned.length - 1; i >= 0; i--) cleanNode(node.owned[i]);\n node.owned = null;\n }\n if (node.cleanups) {\n for (i = node.cleanups.length - 1; i >= 0; i--) node.cleanups[i]();\n node.cleanups = null;\n }\n if (Transition && Transition.running) node.tState = 0;else node.state = 0;\n}\nfunction reset(node, top) {\n if (!top) {\n node.tState = 0;\n Transition.disposed.add(node);\n }\n if (node.owned) {\n for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n }\n}\nfunction castError(err) {\n if (err instanceof Error) return err;\n return new Error(typeof err === \"string\" ? err : \"Unknown error\", {\n cause: err\n });\n}\nfunction runErrors(err, fns, owner) {\n try {\n for (const f of fns) f(err);\n } catch (e) {\n handleError(e, owner && owner.owner || null);\n }\n}\nfunction handleError(err, owner = Owner) {\n const fns = ERROR && owner && owner.context && owner.context[ERROR];\n const error = castError(err);\n if (!fns) throw error;\n if (Effects) Effects.push({\n fn() {\n runErrors(error, fns, owner);\n },\n state: STALE\n });else runErrors(error, fns, owner);\n}\nfunction resolveChildren(children) {\n if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n if (Array.isArray(children)) {\n const results = [];\n for (let i = 0; i < children.length; i++) {\n const result = resolveChildren(children[i]);\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results;\n }\n return children;\n}\nfunction createProvider(id, options) {\n return function provider(props) {\n let res;\n createRenderEffect(() => res = untrack(() => {\n Owner.context = {\n ...Owner.context,\n [id]: props.value\n };\n return children(() => props.children);\n }), undefined);\n return res;\n };\n}\nfunction onError(fn) {\n ERROR || (ERROR = Symbol(\"error\"));\n if (Owner === null) ;else if (Owner.context === null || !Owner.context[ERROR]) {\n Owner.context = {\n ...Owner.context,\n [ERROR]: [fn]\n };\n mutateContext(Owner, ERROR, [fn]);\n } else Owner.context[ERROR].push(fn);\n}\nfunction mutateContext(o, key, value) {\n if (o.owned) {\n for (let i = 0; i < o.owned.length; i++) {\n if (o.owned[i].context === o.context) mutateContext(o.owned[i], key, value);\n if (!o.owned[i].context) {\n o.owned[i].context = o.context;\n mutateContext(o.owned[i], key, value);\n } else if (!o.owned[i].context[key]) {\n o.owned[i].context[key] = value;\n mutateContext(o.owned[i], key, value);\n }\n }\n }\n}\n\nfunction observable(input) {\n return {\n subscribe(observer) {\n if (!(observer instanceof Object) || observer == null) {\n throw new TypeError(\"Expected the observer to be an object.\");\n }\n const handler = typeof observer === \"function\" ? observer : observer.next && observer.next.bind(observer);\n if (!handler) {\n return {\n unsubscribe() {}\n };\n }\n const dispose = createRoot(disposer => {\n createEffect(() => {\n const v = input();\n untrack(() => handler(v));\n });\n return disposer;\n });\n if (getOwner()) onCleanup(dispose);\n return {\n unsubscribe() {\n dispose();\n }\n };\n },\n [Symbol.observable || \"@@observable\"]() {\n return this;\n }\n };\n}\nfunction from(producer, initalValue = undefined) {\n const [s, set] = createSignal(initalValue, {\n equals: false\n });\n if (\"subscribe\" in producer) {\n const unsub = producer.subscribe(v => set(() => v));\n onCleanup(() => \"unsubscribe\" in unsub ? unsub.unsubscribe() : unsub());\n } else {\n const clean = producer(set);\n onCleanup(clean);\n }\n return s;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n len = 0,\n indexes = mapFn.length > 1 ? [] : null;\n onCleanup(() => dispose(disposers));\n return () => {\n let newItems = list() || [],\n newLen = newItems.length,\n i,\n j;\n newItems[$TRACK];\n return untrack(() => {\n let newIndices, newIndicesNext, temp, tempdisposers, tempIndexes, start, end, newEnd, item;\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n indexes && (indexes = []);\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n }\n else if (len === 0) {\n mapped = new Array(newLen);\n for (j = 0; j < newLen; j++) {\n items[j] = newItems[j];\n mapped[j] = createRoot(mapper);\n }\n len = newLen;\n } else {\n temp = new Array(newLen);\n tempdisposers = new Array(newLen);\n indexes && (tempIndexes = new Array(newLen));\n for (start = 0, end = Math.min(len, newLen); start < end && items[start] === newItems[start]; start++);\n for (end = len - 1, newEnd = newLen - 1; end >= start && newEnd >= start && items[end] === newItems[newEnd]; end--, newEnd--) {\n temp[newEnd] = mapped[end];\n tempdisposers[newEnd] = disposers[end];\n indexes && (tempIndexes[newEnd] = indexes[end]);\n }\n newIndices = new Map();\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = newItems[j];\n i = newIndices.get(item);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(item, j);\n }\n for (i = start; i <= end; i++) {\n item = items[i];\n j = newIndices.get(item);\n if (j !== undefined && j !== -1) {\n temp[j] = mapped[i];\n tempdisposers[j] = disposers[i];\n indexes && (tempIndexes[j] = indexes[i]);\n j = newIndicesNext[j];\n newIndices.set(item, j);\n } else disposers[i]();\n }\n for (j = start; j < newLen; j++) {\n if (j in temp) {\n mapped[j] = temp[j];\n disposers[j] = tempdisposers[j];\n if (indexes) {\n indexes[j] = tempIndexes[j];\n indexes[j](j);\n }\n } else mapped[j] = createRoot(mapper);\n }\n mapped = mapped.slice(0, len = newLen);\n items = newItems.slice(0);\n }\n return mapped;\n });\n function mapper(disposer) {\n disposers[j] = disposer;\n if (indexes) {\n const [s, set] = createSignal(j);\n indexes[j] = set;\n return mapFn(newItems[j], s);\n }\n return mapFn(newItems[j]);\n }\n };\n}\nfunction indexArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n signals = [],\n len = 0,\n i;\n onCleanup(() => dispose(disposers));\n return () => {\n const newItems = list() || [],\n newLen = newItems.length;\n newItems[$TRACK];\n return untrack(() => {\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n signals = [];\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n return mapped;\n }\n if (items[0] === FALLBACK) {\n disposers[0]();\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n }\n for (i = 0; i < newLen; i++) {\n if (i < items.length && items[i] !== newItems[i]) {\n signals[i](() => newItems[i]);\n } else if (i >= items.length) {\n mapped[i] = createRoot(mapper);\n }\n }\n for (; i < items.length; i++) {\n disposers[i]();\n }\n len = signals.length = disposers.length = newLen;\n items = newItems.slice(0);\n return mapped = mapped.slice(0, len);\n });\n function mapper(disposer) {\n disposers[i] = disposer;\n const [s, set] = createSignal(newItems[i]);\n signals[i] = set;\n return mapFn(s, i);\n }\n };\n}\n\nlet hydrationEnabled = false;\nfunction enableHydration() {\n hydrationEnabled = true;\n}\nfunction createComponent(Comp, props) {\n if (hydrationEnabled) {\n if (sharedConfig.context) {\n const c = sharedConfig.context;\n setHydrateContext(nextHydrateContext());\n const r = untrack(() => Comp(props || {}));\n setHydrateContext(c);\n return r;\n }\n }\n return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n return true;\n}\nconst propTraps = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver;\n return _.get(property);\n },\n has(_, property) {\n if (property === $PROXY) return true;\n return _.has(property);\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property);\n },\n set: trueFn,\n deleteProperty: trueFn\n };\n },\n ownKeys(_) {\n return _.keys();\n }\n};\nfunction resolveSource(s) {\n return !(s = typeof s === \"function\" ? s() : s) ? {} : s;\n}\nfunction resolveSources() {\n for (let i = 0, length = this.length; i < length; ++i) {\n const v = this[i]();\n if (v !== undefined) return v;\n }\n}\nfunction mergeProps(...sources) {\n let proxy = false;\n for (let i = 0; i < sources.length; i++) {\n const s = sources[i];\n proxy = proxy || !!s && $PROXY in s;\n sources[i] = typeof s === \"function\" ? (proxy = true, createMemo(s)) : s;\n }\n if (SUPPORTS_PROXY && proxy) {\n return new Proxy({\n get(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property];\n if (v !== undefined) return v;\n }\n },\n has(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true;\n }\n return false;\n },\n keys() {\n const keys = [];\n for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));\n return [...new Set(keys)];\n }\n }, propTraps);\n }\n const sourcesMap = {};\n const defined = Object.create(null);\n for (let i = sources.length - 1; i >= 0; i--) {\n const source = sources[i];\n if (!source) continue;\n const sourceKeys = Object.getOwnPropertyNames(source);\n for (let i = sourceKeys.length - 1; i >= 0; i--) {\n const key = sourceKeys[i];\n if (key === \"__proto__\" || key === \"constructor\") continue;\n const desc = Object.getOwnPropertyDescriptor(source, key);\n if (!defined[key]) {\n defined[key] = desc.get ? {\n enumerable: true,\n configurable: true,\n get: resolveSources.bind(sourcesMap[key] = [desc.get.bind(source)])\n } : desc.value !== undefined ? desc : undefined;\n } else {\n const sources = sourcesMap[key];\n if (sources) {\n if (desc.get) sources.push(desc.get.bind(source));else if (desc.value !== undefined) sources.push(() => desc.value);\n }\n }\n }\n }\n const target = {};\n const definedKeys = Object.keys(defined);\n for (let i = definedKeys.length - 1; i >= 0; i--) {\n const key = definedKeys[i],\n desc = defined[key];\n if (desc && desc.get) Object.defineProperty(target, key, desc);else target[key] = desc ? desc.value : undefined;\n }\n return target;\n}\nfunction splitProps(props, ...keys) {\n if (SUPPORTS_PROXY && $PROXY in props) {\n const blocked = new Set(keys.length > 1 ? keys.flat() : keys[0]);\n const res = keys.map(k => {\n return new Proxy({\n get(property) {\n return k.includes(property) ? props[property] : undefined;\n },\n has(property) {\n return k.includes(property) && property in props;\n },\n keys() {\n return k.filter(property => property in props);\n }\n }, propTraps);\n });\n res.push(new Proxy({\n get(property) {\n return blocked.has(property) ? undefined : props[property];\n },\n has(property) {\n return blocked.has(property) ? false : property in props;\n },\n keys() {\n return Object.keys(props).filter(k => !blocked.has(k));\n }\n }, propTraps));\n return res;\n }\n const otherObject = {};\n const objects = keys.map(() => ({}));\n for (const propName of Object.getOwnPropertyNames(props)) {\n const desc = Object.getOwnPropertyDescriptor(props, propName);\n const isDefaultDesc = !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable;\n let blocked = false;\n let objectIndex = 0;\n for (const k of keys) {\n if (k.includes(propName)) {\n blocked = true;\n isDefaultDesc ? objects[objectIndex][propName] = desc.value : Object.defineProperty(objects[objectIndex], propName, desc);\n }\n ++objectIndex;\n }\n if (!blocked) {\n isDefaultDesc ? otherObject[propName] = desc.value : Object.defineProperty(otherObject, propName, desc);\n }\n }\n return [...objects, otherObject];\n}\nfunction lazy(fn) {\n let comp;\n let p;\n const wrap = props => {\n const ctx = sharedConfig.context;\n if (ctx) {\n const [s, set] = createSignal();\n sharedConfig.count || (sharedConfig.count = 0);\n sharedConfig.count++;\n (p || (p = fn())).then(mod => {\n !sharedConfig.done && setHydrateContext(ctx);\n sharedConfig.count--;\n set(() => mod.default);\n setHydrateContext();\n });\n comp = s;\n } else if (!comp) {\n const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));\n comp = s;\n }\n let Comp;\n return createMemo(() => (Comp = comp()) ? untrack(() => {\n if (IS_DEV) ;\n if (!ctx || sharedConfig.done) return Comp(props);\n const c = sharedConfig.context;\n setHydrateContext(ctx);\n const r = Comp(props);\n setHydrateContext(c);\n return r;\n }) : \"\");\n };\n wrap.preload = () => p || ((p = fn()).then(mod => comp = () => mod.default), p);\n return wrap;\n}\nlet counter = 0;\nfunction createUniqueId() {\n const ctx = sharedConfig.context;\n return ctx ? sharedConfig.getNextContextId() : `cl-${counter++}`;\n}\n\nconst narrowedError = name => `Stale read from <${name}>.`;\nfunction For(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(mapArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Index(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(indexArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Show(props) {\n const keyed = props.keyed;\n const conditionValue = createMemo(() => props.when, undefined, undefined);\n const condition = keyed ? conditionValue : createMemo(conditionValue, undefined, {\n equals: (a, b) => !a === !b\n });\n return createMemo(() => {\n const c = condition();\n if (c) {\n const child = props.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn ? untrack(() => child(keyed ? c : () => {\n if (!untrack(condition)) throw narrowedError(\"Show\");\n return conditionValue();\n })) : child;\n }\n return props.fallback;\n }, undefined, undefined);\n}\nfunction Switch(props) {\n const chs = children(() => props.children);\n const switchFunc = createMemo(() => {\n const ch = chs();\n const mps = Array.isArray(ch) ? ch : [ch];\n let func = () => undefined;\n for (let i = 0; i < mps.length; i++) {\n const index = i;\n const mp = mps[i];\n const prevFunc = func;\n const conditionValue = createMemo(() => prevFunc() ? undefined : mp.when, undefined, undefined);\n const condition = mp.keyed ? conditionValue : createMemo(conditionValue, undefined, {\n equals: (a, b) => !a === !b\n });\n func = () => prevFunc() || (condition() ? [index, conditionValue, mp] : undefined);\n }\n return func;\n });\n return createMemo(() => {\n const sel = switchFunc()();\n if (!sel) return props.fallback;\n const [index, conditionValue, mp] = sel;\n const child = mp.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn ? untrack(() => child(mp.keyed ? conditionValue() : () => {\n if (untrack(switchFunc)()?.[0] !== index) throw narrowedError(\"Match\");\n return conditionValue();\n })) : child;\n }, undefined, undefined);\n}\nfunction Match(props) {\n return props;\n}\nlet Errors;\nfunction resetErrorBoundaries() {\n Errors && [...Errors].forEach(fn => fn());\n}\nfunction ErrorBoundary(props) {\n let err;\n if (sharedConfig.context && sharedConfig.load) err = sharedConfig.load(sharedConfig.getContextId());\n const [errored, setErrored] = createSignal(err, undefined);\n Errors || (Errors = new Set());\n Errors.add(setErrored);\n onCleanup(() => Errors.delete(setErrored));\n return createMemo(() => {\n let e;\n if (e = errored()) {\n const f = props.fallback;\n return typeof f === \"function\" && f.length ? untrack(() => f(e, () => setErrored())) : f;\n }\n return catchError(() => props.children, setErrored);\n }, undefined, undefined);\n}\n\nconst suspenseListEquals = (a, b) => a.showContent === b.showContent && a.showFallback === b.showFallback;\nconst SuspenseListContext = /* #__PURE__ */createContext();\nfunction SuspenseList(props) {\n let [wrapper, setWrapper] = createSignal(() => ({\n inFallback: false\n })),\n show;\n const listContext = useContext(SuspenseListContext);\n const [registry, setRegistry] = createSignal([]);\n if (listContext) {\n show = listContext.register(createMemo(() => wrapper()().inFallback));\n }\n const resolved = createMemo(prev => {\n const reveal = props.revealOrder,\n tail = props.tail,\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {},\n reg = registry(),\n reverse = reveal === \"backwards\";\n if (reveal === \"together\") {\n const all = reg.every(inFallback => !inFallback());\n const res = reg.map(() => ({\n showContent: all && showContent,\n showFallback\n }));\n res.inFallback = !all;\n return res;\n }\n let stop = false;\n let inFallback = prev.inFallback;\n const res = [];\n for (let i = 0, len = reg.length; i < len; i++) {\n const n = reverse ? len - i - 1 : i,\n s = reg[n]();\n if (!stop && !s) {\n res[n] = {\n showContent,\n showFallback\n };\n } else {\n const next = !stop;\n if (next) inFallback = true;\n res[n] = {\n showContent: next,\n showFallback: !tail || next && tail === \"collapsed\" ? showFallback : false\n };\n stop = true;\n }\n }\n if (!stop) inFallback = false;\n res.inFallback = inFallback;\n return res;\n }, {\n inFallback: false\n });\n setWrapper(() => resolved);\n return createComponent(SuspenseListContext.Provider, {\n value: {\n register: inFallback => {\n let index;\n setRegistry(registry => {\n index = registry.length;\n return [...registry, inFallback];\n });\n return createMemo(() => resolved()[index], undefined, {\n equals: suspenseListEquals\n });\n }\n },\n get children() {\n return props.children;\n }\n });\n}\nfunction Suspense(props) {\n let counter = 0,\n show,\n ctx,\n p,\n flicker,\n error;\n const [inFallback, setFallback] = createSignal(false),\n SuspenseContext = getSuspenseContext(),\n store = {\n increment: () => {\n if (++counter === 1) setFallback(true);\n },\n decrement: () => {\n if (--counter === 0) setFallback(false);\n },\n inFallback,\n effects: [],\n resolved: false\n },\n owner = getOwner();\n if (sharedConfig.context && sharedConfig.load) {\n const key = sharedConfig.getContextId();\n let ref = sharedConfig.load(key);\n if (ref) {\n if (typeof ref !== \"object\" || ref.s !== 1) p = ref;else sharedConfig.gather(key);\n }\n if (p && p !== \"$$f\") {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n flicker = s;\n p.then(() => {\n if (sharedConfig.done) return set();\n sharedConfig.gather(key);\n setHydrateContext(ctx);\n set();\n setHydrateContext();\n }, err => {\n error = err;\n set();\n });\n }\n }\n const listContext = useContext(SuspenseListContext);\n if (listContext) show = listContext.register(store.inFallback);\n let dispose;\n onCleanup(() => dispose && dispose());\n return createComponent(SuspenseContext.Provider, {\n value: store,\n get children() {\n return createMemo(() => {\n if (error) throw error;\n ctx = sharedConfig.context;\n if (flicker) {\n flicker();\n return flicker = undefined;\n }\n if (ctx && p === \"$$f\") setHydrateContext();\n const rendered = createMemo(() => props.children);\n return createMemo(prev => {\n const inFallback = store.inFallback(),\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {};\n if ((!inFallback || p && p !== \"$$f\") && showContent) {\n store.resolved = true;\n dispose && dispose();\n dispose = ctx = p = undefined;\n resumeEffects(store.effects);\n return rendered();\n }\n if (!showFallback) return;\n if (dispose) return prev;\n return createRoot(disposer => {\n dispose = disposer;\n if (ctx) {\n setHydrateContext({\n id: ctx.id + \"F\",\n count: 0\n });\n ctx = undefined;\n }\n return props.fallback;\n }, owner);\n });\n });\n }\n });\n}\n\nconst DEV = undefined;\n\nexport { $DEVCOMP, $PROXY, $TRACK, DEV, ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, batch, cancelCallback, catchError, children, createComponent, createComputed, createContext, createDeferred, createEffect, createMemo, createReaction, createRenderEffect, createResource, createRoot, createSelector, createSignal, createUniqueId, enableExternalSource, enableHydration, enableScheduling, equalFn, from, getListener, getOwner, indexArray, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, requestCallback, resetErrorBoundaries, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };\n","import { createMemo, createRoot, createRenderEffect, untrack, sharedConfig, enableHydration, getOwner, createEffect, runWithOwner, createSignal, onCleanup, splitProps } from 'solid-js';\nexport { ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, createComponent, createRenderEffect as effect, getOwner, mergeProps, untrack } from 'solid-js';\n\nconst booleans = [\"allowfullscreen\", \"async\", \"alpha\",\n\"autofocus\",\n\"autoplay\", \"checked\", \"controls\", \"default\", \"disabled\", \"formnovalidate\", \"hidden\",\n\"indeterminate\", \"inert\",\n\"ismap\", \"loop\", \"multiple\", \"muted\", \"nomodule\", \"novalidate\", \"open\", \"playsinline\", \"readonly\", \"required\", \"reversed\", \"seamless\",\n\"selected\", \"adauctionheaders\",\n\"browsingtopics\",\n\"credentialless\",\n\"defaultchecked\", \"defaultmuted\", \"defaultselected\", \"defer\", \"disablepictureinpicture\", \"disableremoteplayback\", \"preservespitch\",\n\"shadowrootclonable\", \"shadowrootcustomelementregistry\",\n\"shadowrootdelegatesfocus\", \"shadowrootserializable\",\n\"sharedstoragewritable\"\n];\nconst Properties = /*#__PURE__*/new Set([\n\"className\", \"value\",\n\"readOnly\", \"noValidate\", \"formNoValidate\", \"isMap\", \"noModule\", \"playsInline\", \"adAuctionHeaders\",\n\"allowFullscreen\", \"browsingTopics\",\n\"defaultChecked\", \"defaultMuted\", \"defaultSelected\", \"disablePictureInPicture\", \"disableRemotePlayback\", \"preservesPitch\", \"shadowRootClonable\", \"shadowRootCustomElementRegistry\",\n\"shadowRootDelegatesFocus\", \"shadowRootSerializable\",\n\"sharedStorageWritable\",\n...booleans]);\nconst ChildProperties = /*#__PURE__*/new Set([\"innerHTML\", \"textContent\", \"innerText\", \"children\"]);\nconst Aliases = /*#__PURE__*/Object.assign(Object.create(null), {\n className: \"class\",\n htmlFor: \"for\"\n});\nconst PropAliases = /*#__PURE__*/Object.assign(Object.create(null), {\n class: \"className\",\n novalidate: {\n $: \"noValidate\",\n FORM: 1\n },\n formnovalidate: {\n $: \"formNoValidate\",\n BUTTON: 1,\n INPUT: 1\n },\n ismap: {\n $: \"isMap\",\n IMG: 1\n },\n nomodule: {\n $: \"noModule\",\n SCRIPT: 1\n },\n playsinline: {\n $: \"playsInline\",\n VIDEO: 1\n },\n readonly: {\n $: \"readOnly\",\n INPUT: 1,\n TEXTAREA: 1\n },\n adauctionheaders: {\n $: \"adAuctionHeaders\",\n IFRAME: 1\n },\n allowfullscreen: {\n $: \"allowFullscreen\",\n IFRAME: 1\n },\n browsingtopics: {\n $: \"browsingTopics\",\n IMG: 1\n },\n defaultchecked: {\n $: \"defaultChecked\",\n INPUT: 1\n },\n defaultmuted: {\n $: \"defaultMuted\",\n AUDIO: 1,\n VIDEO: 1\n },\n defaultselected: {\n $: \"defaultSelected\",\n OPTION: 1\n },\n disablepictureinpicture: {\n $: \"disablePictureInPicture\",\n VIDEO: 1\n },\n disableremoteplayback: {\n $: \"disableRemotePlayback\",\n AUDIO: 1,\n VIDEO: 1\n },\n preservespitch: {\n $: \"preservesPitch\",\n AUDIO: 1,\n VIDEO: 1\n },\n shadowrootclonable: {\n $: \"shadowRootClonable\",\n TEMPLATE: 1\n },\n shadowrootdelegatesfocus: {\n $: \"shadowRootDelegatesFocus\",\n TEMPLATE: 1\n },\n shadowrootserializable: {\n $: \"shadowRootSerializable\",\n TEMPLATE: 1\n },\n sharedstoragewritable: {\n $: \"sharedStorageWritable\",\n IFRAME: 1,\n IMG: 1\n }\n});\nfunction getPropAlias(prop, tagName) {\n const a = PropAliases[prop];\n return typeof a === \"object\" ? a[tagName] ? a[\"$\"] : undefined : a;\n}\nconst DelegatedEvents = /*#__PURE__*/new Set([\"beforeinput\", \"click\", \"dblclick\", \"contextmenu\", \"focusin\", \"focusout\", \"input\", \"keydown\", \"keyup\", \"mousedown\", \"mousemove\", \"mouseout\", \"mouseover\", \"mouseup\", \"pointerdown\", \"pointermove\", \"pointerout\", \"pointerover\", \"pointerup\", \"touchend\", \"touchmove\", \"touchstart\"]);\nconst SVGElements = /*#__PURE__*/new Set([\n\"altGlyph\", \"altGlyphDef\", \"altGlyphItem\", \"animate\", \"animateColor\", \"animateMotion\", \"animateTransform\", \"circle\", \"clipPath\", \"color-profile\", \"cursor\", \"defs\", \"desc\", \"ellipse\", \"feBlend\", \"feColorMatrix\", \"feComponentTransfer\", \"feComposite\", \"feConvolveMatrix\", \"feDiffuseLighting\", \"feDisplacementMap\", \"feDistantLight\", \"feDropShadow\", \"feFlood\", \"feFuncA\", \"feFuncB\", \"feFuncG\", \"feFuncR\", \"feGaussianBlur\", \"feImage\", \"feMerge\", \"feMergeNode\", \"feMorphology\", \"feOffset\", \"fePointLight\", \"feSpecularLighting\", \"feSpotLight\", \"feTile\", \"feTurbulence\", \"filter\", \"font\", \"font-face\", \"font-face-format\", \"font-face-name\", \"font-face-src\", \"font-face-uri\", \"foreignObject\", \"g\", \"glyph\", \"glyphRef\", \"hkern\", \"image\", \"line\", \"linearGradient\", \"marker\", \"mask\", \"metadata\", \"missing-glyph\", \"mpath\", \"path\", \"pattern\", \"polygon\", \"polyline\", \"radialGradient\", \"rect\",\n\"set\", \"stop\",\n\"svg\", \"switch\", \"symbol\", \"text\", \"textPath\",\n\"tref\", \"tspan\", \"use\", \"view\", \"vkern\"]);\nconst SVGNamespace = {\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\"\n};\nconst DOMElements = /*#__PURE__*/new Set([\"html\", \"base\", \"head\", \"link\", \"meta\", \"style\", \"title\", \"body\", \"address\", \"article\", \"aside\", \"footer\", \"header\", \"main\", \"nav\", \"section\", \"body\", \"blockquote\", \"dd\", \"div\", \"dl\", \"dt\", \"figcaption\", \"figure\", \"hr\", \"li\", \"ol\", \"p\", \"pre\", \"ul\", \"a\", \"abbr\", \"b\", \"bdi\", \"bdo\", \"br\", \"cite\", \"code\", \"data\", \"dfn\", \"em\", \"i\", \"kbd\", \"mark\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"small\", \"span\", \"strong\", \"sub\", \"sup\", \"time\", \"u\", \"var\", \"wbr\", \"area\", \"audio\", \"img\", \"map\", \"track\", \"video\", \"embed\", \"iframe\", \"object\", \"param\", \"picture\", \"portal\", \"source\", \"svg\", \"math\", \"canvas\", \"noscript\", \"script\", \"del\", \"ins\", \"caption\", \"col\", \"colgroup\", \"table\", \"tbody\", \"td\", \"tfoot\", \"th\", \"thead\", \"tr\", \"button\", \"datalist\", \"fieldset\", \"form\", \"input\", \"label\", \"legend\", \"meter\", \"optgroup\", \"option\", \"output\", \"progress\", \"select\", \"textarea\", \"details\", \"dialog\", \"menu\", \"summary\", \"details\", \"slot\", \"template\", \"acronym\", \"applet\", \"basefont\", \"bgsound\", \"big\", \"blink\", \"center\", \"content\", \"dir\", \"font\", \"frame\", \"frameset\", \"hgroup\", \"image\", \"keygen\", \"marquee\", \"menuitem\", \"nobr\", \"noembed\", \"noframes\", \"plaintext\", \"rb\", \"rtc\", \"shadow\", \"spacer\", \"strike\", \"tt\", \"xmp\", \"a\", \"abbr\", \"acronym\", \"address\", \"applet\", \"area\", \"article\", \"aside\", \"audio\", \"b\", \"base\", \"basefont\", \"bdi\", \"bdo\", \"bgsound\", \"big\", \"blink\", \"blockquote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\", \"center\", \"cite\", \"code\", \"col\", \"colgroup\", \"content\", \"data\", \"datalist\", \"dd\", \"del\", \"details\", \"dfn\", \"dialog\", \"dir\", \"div\", \"dl\", \"dt\", \"em\", \"embed\", \"fieldset\", \"figcaption\", \"figure\", \"font\", \"footer\", \"form\", \"frame\", \"frameset\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"i\", \"iframe\", \"image\", \"img\", \"input\", \"ins\", \"kbd\", \"keygen\", \"label\", \"legend\", \"li\", \"link\", \"main\", \"map\", \"mark\", \"marquee\", \"menu\", \"menuitem\", \"meta\", \"meter\", \"nav\", \"nobr\", \"noembed\", \"noframes\", \"noscript\", \"object\", \"ol\", \"optgroup\", \"option\", \"output\", \"p\", \"param\", \"picture\", \"plaintext\", \"portal\", \"pre\", \"progress\", \"q\", \"rb\", \"rp\", \"rt\", \"rtc\", \"ruby\", \"s\", \"samp\", \"script\", \"section\", \"select\", \"shadow\", \"slot\", \"small\", \"source\", \"spacer\", \"span\", \"strike\", \"strong\", \"style\", \"sub\", \"summary\", \"sup\", \"table\", \"tbody\", \"td\", \"template\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"time\", \"title\", \"tr\", \"track\", \"tt\", \"u\", \"ul\", \"var\", \"video\", \"wbr\", \"xmp\", \"input\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\",\n\"webview\",\n\"isindex\", \"listing\", \"multicol\", \"nextid\", \"noindex\", \"search\"]);\n\nconst memo = fn => createMemo(() => fn());\n\nfunction reconcileArrays(parentNode, a, b) {\n let bLength = b.length,\n aEnd = a.length,\n bEnd = bLength,\n aStart = 0,\n bStart = 0,\n after = a[aEnd - 1].nextSibling,\n map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node = bEnd < bLength ? bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart] : after;\n while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart])) a[aStart].remove();\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = a[--aEnd].nextSibling;\n parentNode.insertBefore(b[bStart++], a[aStart++].nextSibling);\n parentNode.insertBefore(b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map();\n let i = bStart;\n while (i < bEnd) map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart,\n sequence = 1,\n t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index) parentNode.insertBefore(b[bStart++], node);\n } else parentNode.replaceChild(b[bStart++], a[aStart++]);\n } else aStart++;\n } else a[aStart++].remove();\n }\n }\n}\n\nconst $$EVENTS = \"_$DX_DELEGATE\";\nfunction render(code, element, init, options = {}) {\n let disposer;\n createRoot(dispose => {\n disposer = dispose;\n element === document ? code() : insert(element, code(), element.firstChild ? null : undefined, init);\n }, options.owner);\n return () => {\n disposer();\n element.textContent = \"\";\n };\n}\nfunction template(html, isImportNode, isSVG, isMathML) {\n let node;\n const create = () => {\n const t = isMathML ? document.createElementNS(\"http://www.w3.org/1998/Math/MathML\", \"template\") : document.createElement(\"template\");\n t.innerHTML = html;\n return isSVG ? t.content.firstChild.firstChild : isMathML ? t.firstChild : t.content.firstChild;\n };\n const fn = isImportNode ? () => untrack(() => document.importNode(node || (node = create()), true)) : () => (node || (node = create())).cloneNode(true);\n fn.cloneNode = fn;\n return fn;\n}\nfunction delegateEvents(eventNames, document = window.document) {\n const e = document[$$EVENTS] || (document[$$EVENTS] = new Set());\n for (let i = 0, l = eventNames.length; i < l; i++) {\n const name = eventNames[i];\n if (!e.has(name)) {\n e.add(name);\n document.addEventListener(name, eventHandler);\n }\n }\n}\nfunction clearDelegatedEvents(document = window.document) {\n if (document[$$EVENTS]) {\n for (let name of document[$$EVENTS].keys()) document.removeEventListener(name, eventHandler);\n delete document[$$EVENTS];\n }\n}\nfunction setProperty(node, name, value) {\n if (isHydrating(node)) return;\n node[name] = value;\n}\nfunction setAttribute(node, name, value) {\n if (isHydrating(node)) return;\n if (value == null) node.removeAttribute(name);else node.setAttribute(name, value);\n}\nfunction setAttributeNS(node, namespace, name, value) {\n if (isHydrating(node)) return;\n if (value == null) node.removeAttributeNS(namespace, name);else node.setAttributeNS(namespace, name, value);\n}\nfunction setBoolAttribute(node, name, value) {\n if (isHydrating(node)) return;\n value ? node.setAttribute(name, \"\") : node.removeAttribute(name);\n}\nfunction className(node, value) {\n if (isHydrating(node)) return;\n if (value == null) node.removeAttribute(\"class\");else node.className = value;\n}\nfunction addEventListener(node, name, handler, delegate) {\n if (delegate) {\n if (Array.isArray(handler)) {\n node[`$$${name}`] = handler[0];\n node[`$$${name}Data`] = handler[1];\n } else node[`$$${name}`] = handler;\n } else if (Array.isArray(handler)) {\n const handlerFn = handler[0];\n node.addEventListener(name, handler[0] = e => handlerFn.call(node, handler[1], e));\n } else node.addEventListener(name, handler, typeof handler !== \"function\" && handler);\n}\nfunction classList(node, value, prev = {}) {\n const classKeys = Object.keys(value || {}),\n prevKeys = Object.keys(prev);\n let i, len;\n for (i = 0, len = prevKeys.length; i < len; i++) {\n const key = prevKeys[i];\n if (!key || key === \"undefined\" || value[key]) continue;\n toggleClassKey(node, key, false);\n delete prev[key];\n }\n for (i = 0, len = classKeys.length; i < len; i++) {\n const key = classKeys[i],\n classValue = !!value[key];\n if (!key || key === \"undefined\" || prev[key] === classValue || !classValue) continue;\n toggleClassKey(node, key, true);\n prev[key] = classValue;\n }\n return prev;\n}\nfunction style(node, value, prev) {\n if (!value) return prev ? setAttribute(node, \"style\") : value;\n const nodeStyle = node.style;\n if (typeof value === \"string\") return nodeStyle.cssText = value;\n typeof prev === \"string\" && (nodeStyle.cssText = prev = undefined);\n prev || (prev = {});\n value || (value = {});\n let v, s;\n for (s in prev) {\n value[s] == null && nodeStyle.removeProperty(s);\n delete prev[s];\n }\n for (s in value) {\n v = value[s];\n if (v !== prev[s]) {\n nodeStyle.setProperty(s, v);\n prev[s] = v;\n }\n }\n return prev;\n}\nfunction setStyleProperty(node, name, value) {\n value != null ? node.style.setProperty(name, value) : node.style.removeProperty(name);\n}\nfunction spread(node, props = {}, isSVG, skipChildren) {\n const prevProps = {};\n if (!skipChildren) {\n createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));\n }\n createRenderEffect(() => typeof props.ref === \"function\" && use(props.ref, node));\n createRenderEffect(() => assign(node, props, isSVG, true, prevProps, true));\n return prevProps;\n}\nfunction dynamicProperty(props, key) {\n const src = props[key];\n Object.defineProperty(props, key, {\n get() {\n return src();\n },\n enumerable: true\n });\n return props;\n}\nfunction use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n}\nfunction insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial) initial = [];\n if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n}\nfunction assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = false) {\n props || (props = {});\n for (const prop in prevProps) {\n if (!(prop in props)) {\n if (prop === \"children\") continue;\n prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef, props);\n }\n }\n for (const prop in props) {\n if (prop === \"children\") {\n if (!skipChildren) insertExpression(node, props.children);\n continue;\n }\n const value = props[prop];\n prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef, props);\n }\n}\nfunction hydrate$1(code, element, options = {}) {\n if (globalThis._$HY.done) return render(code, element, [...element.childNodes], options);\n sharedConfig.completed = globalThis._$HY.completed;\n sharedConfig.events = globalThis._$HY.events;\n sharedConfig.load = id => globalThis._$HY.r[id];\n sharedConfig.has = id => id in globalThis._$HY.r;\n sharedConfig.gather = root => gatherHydratable(element, root);\n sharedConfig.registry = new Map();\n sharedConfig.context = {\n id: options.renderId || \"\",\n count: 0\n };\n try {\n gatherHydratable(element, options.renderId);\n return render(code, element, [...element.childNodes], options);\n } finally {\n sharedConfig.context = null;\n }\n}\nfunction getNextElement(template) {\n let node,\n key,\n hydrating = isHydrating();\n if (!hydrating || !(node = sharedConfig.registry.get(key = getHydrationKey()))) {\n return template();\n }\n if (sharedConfig.completed) sharedConfig.completed.add(node);\n sharedConfig.registry.delete(key);\n return node;\n}\nfunction getNextMatch(el, nodeName) {\n while (el && el.localName !== nodeName) el = el.nextSibling;\n return el;\n}\nfunction getNextMarker(start) {\n let end = start,\n count = 0,\n current = [];\n if (isHydrating(start)) {\n while (end) {\n if (end.nodeType === 8) {\n const v = end.nodeValue;\n if (v === \"$\") count++;else if (v === \"/\") {\n if (count === 0) return [end, current];\n count--;\n }\n }\n current.push(end);\n end = end.nextSibling;\n }\n }\n return [end, current];\n}\nfunction runHydrationEvents() {\n if (sharedConfig.events && !sharedConfig.events.queued) {\n queueMicrotask(() => {\n const {\n completed,\n events\n } = sharedConfig;\n if (!events) return;\n events.queued = false;\n while (events.length) {\n const [el, e] = events[0];\n if (!completed.has(el)) return;\n events.shift();\n eventHandler(e);\n }\n if (sharedConfig.done) {\n sharedConfig.events = _$HY.events = null;\n sharedConfig.completed = _$HY.completed = null;\n }\n });\n sharedConfig.events.queued = true;\n }\n}\nfunction isHydrating(node) {\n return !!sharedConfig.context && !sharedConfig.done && (!node || node.isConnected);\n}\nfunction toPropertyName(name) {\n return name.toLowerCase().replace(/-([a-z])/g, (_, w) => w.toUpperCase());\n}\nfunction toggleClassKey(node, key, value) {\n const classNames = key.trim().split(/\\s+/);\n for (let i = 0, nameLen = classNames.length; i < nameLen; i++) node.classList.toggle(classNames[i], value);\n}\nfunction assignProp(node, prop, value, prev, isSVG, skipRef, props) {\n let isCE, isProp, isChildProp, propAlias, forceProp;\n if (prop === \"style\") return style(node, value, prev);\n if (prop === \"classList\") return classList(node, value, prev);\n if (value === prev) return prev;\n if (prop === \"ref\") {\n if (!skipRef) value(node);\n } else if (prop.slice(0, 3) === \"on:\") {\n const e = prop.slice(3);\n prev && node.removeEventListener(e, prev, typeof prev !== \"function\" && prev);\n value && node.addEventListener(e, value, typeof value !== \"function\" && value);\n } else if (prop.slice(0, 10) === \"oncapture:\") {\n const e = prop.slice(10);\n prev && node.removeEventListener(e, prev, true);\n value && node.addEventListener(e, value, true);\n } else if (prop.slice(0, 2) === \"on\") {\n const name = prop.slice(2).toLowerCase();\n const delegate = DelegatedEvents.has(name);\n if (!delegate && prev) {\n const h = Array.isArray(prev) ? prev[0] : prev;\n node.removeEventListener(name, h);\n }\n if (delegate || value) {\n addEventListener(node, name, value, delegate);\n delegate && delegateEvents([name]);\n }\n } else if (prop.slice(0, 5) === \"attr:\") {\n setAttribute(node, prop.slice(5), value);\n } else if (prop.slice(0, 5) === \"bool:\") {\n setBoolAttribute(node, prop.slice(5), value);\n } else if ((forceProp = prop.slice(0, 5) === \"prop:\") || (isChildProp = ChildProperties.has(prop)) || !isSVG && ((propAlias = getPropAlias(prop, node.tagName)) || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes(\"-\") || \"is\" in props)) {\n if (forceProp) {\n prop = prop.slice(5);\n isProp = true;\n } else if (isHydrating(node)) return value;\n if (prop === \"class\" || prop === \"className\") className(node, value);else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[propAlias || prop] = value;\n } else {\n const ns = isSVG && prop.indexOf(\":\") > -1 && SVGNamespace[prop.split(\":\")[0]];\n if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);\n }\n return value;\n}\nfunction eventHandler(e) {\n if (sharedConfig.registry && sharedConfig.events) {\n if (sharedConfig.events.find(([el, ev]) => ev === e)) return;\n }\n let node = e.target;\n const key = `$$${e.type}`;\n const oriTarget = e.target;\n const oriCurrentTarget = e.currentTarget;\n const retarget = value => Object.defineProperty(e, \"target\", {\n configurable: true,\n value\n });\n const handleNode = () => {\n const handler = node[key];\n if (handler && !node.disabled) {\n const data = node[`${key}Data`];\n data !== undefined ? handler.call(node, data, e) : handler.call(node, e);\n if (e.cancelBubble) return;\n }\n node.host && typeof node.host !== \"string\" && !node.host._$host && node.contains(e.target) && retarget(node.host);\n return true;\n };\n const walkUpTree = () => {\n while (handleNode() && (node = node._$host || node.parentNode || node.host));\n };\n Object.defineProperty(e, \"currentTarget\", {\n configurable: true,\n get() {\n return node || document;\n }\n });\n if (sharedConfig.registry && !sharedConfig.done) sharedConfig.done = _$HY.done = true;\n if (e.composedPath) {\n const path = e.composedPath();\n retarget(path[0]);\n for (let i = 0; i < path.length - 2; i++) {\n node = path[i];\n if (!handleNode()) break;\n if (node._$host) {\n node = node._$host;\n walkUpTree();\n break;\n }\n if (node.parentNode === oriCurrentTarget) {\n break;\n }\n }\n }\n else walkUpTree();\n retarget(oriTarget);\n}\nfunction insertExpression(parent, value, current, marker, unwrapArray) {\n const hydrating = isHydrating(parent);\n if (hydrating) {\n !current && (current = [...parent.childNodes]);\n let cleaned = [];\n for (let i = 0; i < current.length; i++) {\n const node = current[i];\n if (node.nodeType === 8 && node.data.slice(0, 2) === \"!$\") node.remove();else cleaned.push(node);\n }\n current = cleaned;\n }\n while (typeof current === \"function\") current = current();\n if (value === current) return current;\n const t = typeof value,\n multi = marker !== undefined;\n parent = multi && current[0] && current[0].parentNode || parent;\n if (t === \"string\" || t === \"number\") {\n if (hydrating) return current;\n if (t === \"number\") {\n value = value.toString();\n if (value === current) return current;\n }\n if (multi) {\n let node = current[0];\n if (node && node.nodeType === 3) {\n node.data !== value && (node.data = value);\n } else node = document.createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n current = parent.firstChild.data = value;\n } else current = parent.textContent = value;\n }\n } else if (value == null || t === \"boolean\") {\n if (hydrating) return current;\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\") v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n const currentArray = current && Array.isArray(current);\n if (normalizeIncomingArray(array, value, current, unwrapArray)) {\n createRenderEffect(() => current = insertExpression(parent, array, current, marker, true));\n return () => current;\n }\n if (hydrating) {\n if (!array.length) return current;\n if (marker === undefined) return current = [...parent.childNodes];\n let node = array[0];\n if (node.parentNode !== parent) return current;\n const nodes = [node];\n while ((node = node.nextSibling) !== marker) nodes.push(node);\n return current = nodes;\n }\n if (array.length === 0) {\n current = cleanChildren(parent, current, marker);\n if (multi) return current;\n } else if (currentArray) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else reconcileArrays(parent, current, array);\n } else {\n current && cleanChildren(parent);\n appendNodes(parent, array);\n }\n current = array;\n } else if (value.nodeType) {\n if (hydrating && value.parentNode) return current = multi ? [value] : value;\n if (Array.isArray(current)) {\n if (multi) return current = cleanChildren(parent, current, marker, value);\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !parent.firstChild) {\n parent.appendChild(value);\n } else parent.replaceChild(value, parent.firstChild);\n current = value;\n } else ;\n return current;\n}\nfunction normalizeIncomingArray(normalized, array, current, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length; i < len; i++) {\n let item = array[i],\n prev = current && current[normalized.length],\n t;\n if (item == null || item === true || item === false) ; else if ((t = typeof item) === \"object\" && item.nodeType) {\n normalized.push(item);\n } else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item, prev) || dynamic;\n } else if (t === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\") item = item();\n dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item], Array.isArray(prev) ? prev : [prev]) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else {\n const value = String(item);\n if (prev && prev.nodeType === 3 && prev.data === value) normalized.push(prev);else normalized.push(document.createTextNode(value));\n }\n }\n return dynamic;\n}\nfunction appendNodes(parent, array, marker = null) {\n for (let i = 0, len = array.length; i < len; i++) parent.insertBefore(array[i], marker);\n}\nfunction cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) return parent.textContent = \"\";\n const node = replacement || document.createTextNode(\"\");\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1; i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = el.parentNode === parent;\n if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && el.remove();\n } else inserted = true;\n }\n } else parent.insertBefore(node, marker);\n return [node];\n}\nfunction gatherHydratable(element, root) {\n const templates = element.querySelectorAll(`*[data-hk]`);\n for (let i = 0; i < templates.length; i++) {\n const node = templates[i];\n const key = node.getAttribute(\"data-hk\");\n if ((!root || key.startsWith(root)) && !sharedConfig.registry.has(key)) sharedConfig.registry.set(key, node);\n }\n}\nfunction getHydrationKey() {\n return sharedConfig.getNextContextId();\n}\nfunction NoHydration(props) {\n return sharedConfig.context ? undefined : props.children;\n}\nfunction Hydration(props) {\n return props.children;\n}\nconst voidFn = () => undefined;\nconst RequestContext = Symbol();\nfunction innerHTML(parent, content) {\n !sharedConfig.context && (parent.innerHTML = content);\n}\n\nfunction throwInBrowser(func) {\n const err = new Error(`${func.name} is not supported in the browser, returning undefined`);\n console.error(err);\n}\nfunction renderToString(fn, options) {\n throwInBrowser(renderToString);\n}\nfunction renderToStringAsync(fn, options) {\n throwInBrowser(renderToStringAsync);\n}\nfunction renderToStream(fn, options) {\n throwInBrowser(renderToStream);\n}\nfunction ssr(template, ...nodes) {}\nfunction ssrElement(name, props, children, needsId) {}\nfunction ssrClassList(value) {}\nfunction ssrStyle(value) {}\nfunction ssrAttribute(key, value) {}\nfunction ssrHydrationKey() {}\nfunction resolveSSRNode(node) {}\nfunction escape(html) {}\nfunction ssrSpread(props, isSVG, skipChildren) {}\n\nconst isServer = false;\nconst isDev = false;\nconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\nfunction createElement(tagName, isSVG = false, is = undefined) {\n return isSVG ? document.createElementNS(SVG_NAMESPACE, tagName) : document.createElement(tagName, {\n is\n });\n}\nconst hydrate = (...args) => {\n enableHydration();\n return hydrate$1(...args);\n};\nfunction Portal(props) {\n const {\n useShadow\n } = props,\n marker = document.createTextNode(\"\"),\n mount = () => props.mount || document.body,\n owner = getOwner();\n let content;\n let hydrating = !!sharedConfig.context;\n createEffect(() => {\n if (hydrating) getOwner().user = hydrating = false;\n content || (content = runWithOwner(owner, () => createMemo(() => props.children)));\n const el = mount();\n if (el instanceof HTMLHeadElement) {\n const [clean, setClean] = createSignal(false);\n const cleanup = () => setClean(true);\n createRoot(dispose => insert(el, () => !clean() ? content() : dispose(), null));\n onCleanup(cleanup);\n } else {\n const container = createElement(props.isSVG ? \"g\" : \"div\", props.isSVG),\n renderRoot = useShadow && container.attachShadow ? container.attachShadow({\n mode: \"open\"\n }) : container;\n Object.defineProperty(container, \"_$host\", {\n get() {\n return marker.parentNode;\n },\n configurable: true\n });\n insert(renderRoot, content);\n el.appendChild(container);\n props.ref && props.ref(container);\n onCleanup(() => el.removeChild(container));\n }\n }, undefined, {\n render: !hydrating\n });\n return marker;\n}\nfunction createDynamic(component, props) {\n const cached = createMemo(component);\n return createMemo(() => {\n const component = cached();\n switch (typeof component) {\n case \"function\":\n return untrack(() => component(props));\n case \"string\":\n const isSvg = SVGElements.has(component);\n const el = sharedConfig.context ? getNextElement() : createElement(component, isSvg, untrack(() => props.is));\n spread(el, props, isSvg);\n return el;\n }\n });\n}\nfunction Dynamic(props) {\n const [, others] = splitProps(props, [\"component\"]);\n return createDynamic(() => props.component, others);\n}\n\nexport { Aliases, voidFn as Assets, ChildProperties, DOMElements, DelegatedEvents, Dynamic, Hydration, voidFn as HydrationScript, NoHydration, Portal, Properties, RequestContext, SVGElements, SVGNamespace, addEventListener, assign, classList, className, clearDelegatedEvents, createDynamic, delegateEvents, dynamicProperty, escape, voidFn as generateHydrationScript, voidFn as getAssets, getHydrationKey, getNextElement, getNextMarker, getNextMatch, getPropAlias, voidFn as getRequestEvent, hydrate, innerHTML, insert, isDev, isServer, memo, render, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, runHydrationEvents, setAttribute, setAttributeNS, setBoolAttribute, setProperty, setStyleProperty, spread, ssr, ssrAttribute, ssrClassList, ssrElement, ssrHydrationKey, ssrSpread, ssrStyle, style, template, use, voidFn as useAssets };\n","export default \"data:image/svg+xml,%3csvg%20width='44'%20height='40'%20viewBox='0%200%2044%2040'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M36.4826%2032.6733C35.865%2033.1908%2035.1941%2033.6282%2034.4904%2033.957L33.74%2034.2621L29.7612%2035.8775C27.1272%2036.125%2024.4866%2036.253%2021.8465%2036.2542C21.235%2036.2549%2020.6236%2036.2482%2020.0127%2036.2348V33.2478L36.4826%2032.6733Z'%20fill='%239EACBA'/%3e%3cpath%20d='M0.438355%2018.8047C0.245806%2020.9769%200.245812%2023.1226%200.438355%2025.2946C0.535045%2025.9265%200.94889%2026.5048%201.4516%2026.8841C2.21046%2027.3799%202.95285%2027.8531%203.87299%2027.9711C4.74581%2027.9246%205.47724%2026.84%205.59973%2026.0356C5.89635%2023.3667%205.89636%2020.7328%205.59973%2018.0638C5.47724%2017.2593%204.74582%2016.1747%203.873%2016.1282C2.95286%2016.2462%202.21046%2016.7194%201.45161%2017.2152C0.948896%2017.5945%200.535045%2018.1729%200.438355%2018.8047Z'%20fill='%2351D6A1'/%3e%3cpath%20d='M43.0616%2018.8047C43.2541%2020.9769%2043.2541%2023.1226%2043.0616%2025.2946C42.9649%2025.9265%2042.551%2026.5048%2042.0483%2026.8841C41.2895%2027.3799%2040.5471%2027.8531%2039.6269%2027.9711C38.7541%2027.9246%2038.0227%2026.84%2037.9002%2026.0356C37.6036%2023.3667%2037.6036%2020.7328%2037.9002%2018.0638C38.0227%2017.2593%2038.7541%2016.1747%2039.6269%2016.1282C40.5471%2016.2462%2041.2895%2016.7194%2042.0483%2017.2152C42.551%2017.5945%2042.9649%2018.1729%2043.0616%2018.8047Z'%20fill='%2351D6A1'/%3e%3cpath%20d='M25.8389%208.85439H21.8867V7.22803H21.9359C22.2919%207.22803%2022.6365%207.24805%2022.9641%207.28506C24.6208%207.47311%2025.8389%208.10461%2025.8389%208.85439Z'%20fill='%2351D6A1'/%3e%3cpath%20d='M22.9637%208.85422V11.641H20.9072V3.74219H21.8863V8.85422H22.9637Z'%20fill='%23171A3B'/%3e%3cpath%20d='M25.8393%208.85439C25.8393%209.60419%2024.6212%2010.2357%2022.9645%2010.4237C22.6369%2010.4607%2022.2923%2010.4808%2021.9362%2010.4808C21.5801%2010.4808%2021.2356%2010.4607%2020.908%2010.4237C19.2513%2010.2357%2018.0332%209.60419%2018.0332%208.85439C18.0332%208.104%2019.2513%207.47311%2020.908%207.28506C21.2204%207.24987%2021.5486%207.22985%2021.8871%207.22803V8.85439H25.8393Z'%20fill='%2351D6A1'/%3e%3cpath%20d='M21.8871%208.85499V35.245H21.8465C21.235%2035.2456%2020.6235%2035.2389%2020.0127%2035.2256C17.1712%2035.1637%2014.331%2034.9538%2011.5017%2034.5856C7.74793%2034.0979%204.29685%2030.281%203.74784%2026.4459C3.32624%2023.5019%203.32624%2020.598%203.74784%2017.6541C4.29684%2013.819%207.74793%2010.0021%2011.5017%209.5144C14.9401%209.06731%2018.393%208.85317%2021.8465%208.85499H21.8871Z'%20fill='%23E7E9EB'/%3e%3cpath%20d='M40.114%2026.4452C39.7718%2028.7455%2038.3748%2031.0864%2036.4821%2032.6728C35.8646%2033.1902%2035.1936%2033.6276%2034.49%2033.9564C34.2437%2034.0716%2033.9931%2034.1736%2033.7396%2034.2615C33.2888%2034.4168%2032.8272%2034.5272%2032.3601%2034.5848C28.8781%2035.0149%2025.3827%2035.2406%2021.8867%2035.2442V8.85425C25.3821%208.85789%2028.8787%209.08355%2032.3601%209.51366C36.1382%209.98014%2039.5516%2013.8729%2040.114%2017.6533C40.5489%2020.5785%2040.5489%2023.5206%2040.114%2026.4452Z'%20fill='%23D1D3D4'/%3e%3cpath%20d='M27.1787%2013.3372C28.7256%2013.4409%2030.2804%2013.5888%2031.834%2013.7805C33.5282%2013.9898%2035.5612%2016.263%2035.8623%2018.2854C36.2336%2020.7829%2036.2336%2023.3159%2035.8623%2025.8127C35.6791%2027.0417%2034.8396%2028.4416%2033.7217%2029.3782C33.3772%2029.6675%2033.0233%2029.8974%2032.6709%2030.0618C32.5593%2030.1145%2032.4464%2030.1603%2032.3359%2030.1985C32.1609%2030.259%2031.9925%2030.2992%2031.835%2030.3186C28.467%2030.7347%2025.0907%2030.9456%2021.7998%2030.9456C21.2369%2030.9456%2020.667%2030.9391%2020.1064%2030.927C17.3961%2030.8675%2014.6875%2030.6643%2012.0566%2030.3215C11.6382%2030.2669%2011.1776%2030.0829%2010.7197%2029.7961L27.1787%2013.3372ZM21.7988%2013.1536C22.397%2013.1536%2022.9986%2013.1605%2023.6016%2013.175H23.6006C24.7855%2013.2017%2025.9795%2013.2559%2027.1777%2013.3372L10.7188%2029.7961C10.3196%2029.5462%209.92292%2029.2179%209.55957%2028.8303C9.2952%2028.5484%209.05604%2028.2435%208.84863%2027.927V27.926C8.40193%2027.2445%208.10127%2026.5082%208.00488%2025.8352C7.82534%2024.5778%207.73289%2023.3374%207.73047%2022.0969C7.72805%2020.825%207.8205%2019.5531%208.00488%2018.2629C8.14621%2017.2772%208.72802%2016.1571%209.56152%2015.2678C10.341%2014.4363%2011.2736%2013.8785%2012.0566%2013.7766C13.5174%2013.5867%2014.9995%2013.4403%2016.4912%2013.3372C18.2497%2013.2152%2020.0239%2013.1536%2021.7988%2013.1536Z'%20fill='%2333383F'/%3e%3cpath%20d='M21.8877%200.164557V4.90412C21.5382%204.90412%2021.207%204.8289%2020.9086%204.69301C20.0878%204.32054%2019.5176%203.49371%2019.5176%202.53403C19.5176%201.22554%2020.5786%200.164557%2021.8877%200.164557Z'%20fill='%2351D6A1'/%3e%3cpath%20d='M29.7612%2035.877L20.0127%2039.8352V36.2343C20.6236%2036.2476%2021.235%2036.2543%2021.8465%2036.2537C24.4866%2036.2525%2027.1272%2036.1245%2029.7612%2035.877Z'%20fill='%23D1D3D4'/%3e%3cpath%20d='M24.2562%202.53403C24.2562%203.45488%2023.7309%204.2532%2022.9641%204.64569C22.6414%204.8107%2022.275%204.90411%2021.8867%204.90411V0.164551C23.1952%200.164551%2024.2562%201.22553%2024.2562%202.53403Z'%20fill='%2351D6A1'/%3e%3cpath%20d='M22.9641%204.646V7.28541C22.6365%207.24841%2022.2919%207.22839%2021.9359%207.22839H21.8867V4.90441C22.275%204.90441%2022.6414%204.811%2022.9641%204.646Z'%20fill='%2301052B'/%3e%3cpath%20d='M15.4282%2025.5157C14.6141%2025.6903%2014.1949%2025.6903%2013.3808%2025.5157C12.8325%2025.2805%2012.4157%2024.7097%2012.2918%2024.124C12.0811%2022.4009%2012.0811%2020.7336%2012.2918%2019.0104C12.4157%2018.4248%2012.8325%2017.854%2013.3808%2017.6188C14.1949%2017.4441%2014.6141%2017.4441%2015.4282%2017.6188C15.9765%2017.854%2016.3933%2018.4248%2016.5173%2019.0104C16.7279%2020.7336%2016.7279%2022.4009%2016.5173%2024.124C16.3933%2024.7097%2015.9765%2025.2805%2015.4282%2025.5157Z'%20fill='%2351D6A1'/%3e%3cpath%20d='M29.4946%2025.5157C28.6805%2025.6903%2028.2613%2025.6903%2027.4472%2025.5157C26.8989%2025.2805%2026.4821%2024.7097%2026.3582%2024.124C26.1475%2022.4009%2026.1475%2020.7336%2026.3582%2019.0104C26.4821%2018.4248%2026.8989%2017.854%2027.4472%2017.6188C28.2613%2017.4441%2028.6805%2017.4441%2029.4946%2017.6188C30.0429%2017.854%2030.4597%2018.4248%2030.5837%2019.0104C30.7943%2020.7336%2030.7943%2022.4009%2030.5837%2024.124C30.4597%2024.7097%2030.0429%2025.2805%2029.4946%2025.5157Z'%20fill='%2351D6A1'/%3e%3cpath%20d='M18.9688%2024.187H23.91C24.2911%2024.187%2024.6004%2024.5023%2024.6004%2024.8906V24.9011C24.6004%2026.6789%2023.184%2028.1222%2021.4394%2028.1222C19.6948%2028.1222%2018.2783%2026.6789%2018.2783%2024.9011V24.8906C18.2783%2024.5023%2018.5877%2024.187%2018.9688%2024.187Z'%20fill='%2351D6A1'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='28'%20height='28'%20viewBox='0%200%2028%2028'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20width='28'%20height='28'%20rx='14'%20fill='%23EFEFEF'/%3e%3cpath%20d='M20.667%209.83325L7.33366%209.83325'%20stroke='%23858B93'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3cpath%20d='M16.5%2014L7.33333%2014'%20stroke='%23858B93'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3cpath%20d='M11.5%2018.1667H7.33333'%20stroke='%23858B93'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='29'%20height='28'%20viewBox='0%200%2029%2028'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M11.5977%2016.0232C11.8613%2015.7596%2012.2882%2015.7596%2012.5518%2016.0232C12.8152%2016.2868%2012.8153%2016.7137%2012.5518%2016.9773L7.87109%2021.658H11.1221C11.4949%2021.658%2011.7969%2021.9609%2011.7969%2022.3337C11.7967%2022.7064%2011.4948%2023.0085%2011.1221%2023.0085H6.24121C5.86853%2023.0085%205.56658%2022.7064%205.56641%2022.3337V17.4529C5.56641%2017.0801%205.86842%2016.7771%206.24121%2016.7771C6.614%2016.7771%206.91602%2017.0801%206.91602%2017.4529V20.7039L11.5977%2016.0232ZM22.9082%204.99194C23.2808%204.99212%2023.583%205.29406%2023.583%205.66675V10.5476C23.583%2010.9203%2023.2808%2011.2222%2022.9082%2011.2224C22.5354%2011.2224%2022.2324%2010.9204%2022.2324%2010.5476V7.29663L17.5518%2011.9773C17.2882%2012.2408%2016.8613%2012.2407%2016.5977%2011.9773C16.3341%2011.7137%2016.3341%2011.2868%2016.5977%2011.0232L21.2783%206.34155H18.0273C17.6546%206.34155%2017.3516%206.03954%2017.3516%205.66675C17.3516%205.29396%2017.6546%204.99194%2018.0273%204.99194H22.9082Z'%20fill='%23858B93'%20stroke='%23858B93'%20stroke-width='0.1'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='29'%20height='28'%20viewBox='0%200%2029%2028'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M12.0737%2015.8249C12.4464%2015.8249%2012.7493%2016.127%2012.7495%2016.4997V21.3805C12.7495%2021.7533%2012.4465%2022.0563%2012.0737%2022.0563C11.7011%2022.0561%2011.3989%2021.7532%2011.3989%2021.3805V18.1296L6.71826%2022.8102C6.45466%2023.0738%206.02679%2023.0738%205.76318%2022.8102C5.49996%2022.5466%205.49985%2022.1196%205.76318%2021.8561L10.4438%2017.1755H7.19287C6.82019%2017.1753%206.51807%2016.8724%206.51807%2016.4997C6.51824%2016.1271%206.82029%2015.825%207.19287%2015.8249H12.0737ZM22.4302%205.18913C22.6937%204.9258%2023.1207%204.92591%2023.3843%205.18913C23.6479%205.45274%2023.6479%205.88061%2023.3843%206.14421L18.7046%2010.8249H21.9546C22.3273%2010.8249%2022.6302%2011.127%2022.6304%2011.4997C22.6304%2011.8725%2022.3274%2012.1755%2021.9546%2012.1755H17.0737C16.7011%2012.1753%2016.3989%2011.8724%2016.3989%2011.4997V6.61882C16.3991%206.24624%2016.7012%205.94419%2017.0737%205.94402C17.4464%205.94402%2017.7494%206.24613%2017.7495%206.61882V9.8698L22.4302%205.18913Z'%20fill='%23858B93'%20stroke='%23858B93'%20stroke-width='0.1'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='29'%20height='28'%20viewBox='0%200%2029%2028'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M5.55273%2013.6665C5.55273%2013.3904%205.95149%2013.1665%206.44338%2013.1665L20.6139%2013.1665C21.1058%2013.1665%2021.5046%2013.3904%2021.5046%2013.6665C21.5046%2013.9426%2021.1058%2014.1665%2020.6139%2014.1665H6.44338C5.95149%2014.1665%205.55273%2013.9426%205.55273%2013.6665Z'%20stroke='%23858B93'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='34'%20height='34'%20viewBox='0%200%2034%2034'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M10.2391%208.55011C9.85199%208.16298%209.22434%208.16298%208.83722%208.55011C8.45009%208.93723%208.45009%209.56488%208.83722%209.95201L15.885%2016.9998L8.83728%2024.0476C8.45016%2024.4347%208.45016%2025.0624%208.83728%2025.4495C9.22441%2025.8366%209.85206%2025.8366%2010.2392%2025.4495L17.2869%2018.4017L24.3346%2025.4494C24.7217%2025.8365%2025.3494%2025.8365%2025.7365%2025.4494C26.1236%2025.0623%2026.1236%2024.4346%2025.7365%2024.0475L18.6888%2016.9998L25.7366%209.95207C26.1237%209.56495%2026.1237%208.9373%2025.7366%208.55017C25.3495%208.16305%2024.7218%208.16305%2024.3347%208.55017L17.2869%2015.5979L10.2391%208.55011Z'%20fill='%23858B93'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M11.9912%202.92969C11.4392%202.92969%2010.9912%203.37769%2010.9912%203.92969V10.9297H3.99121C3.43921%2010.9297%202.99121%2011.3777%202.99121%2011.9297C2.99121%2012.4817%203.43921%2012.9297%203.99121%2012.9297H10.9912V19.9297C10.9912%2020.4817%2011.4392%2020.9297%2011.9912%2020.9297C12.5432%2020.9297%2012.9912%2020.4817%2012.9912%2019.9297V12.9297H19.9912C20.5432%2012.9297%2020.9912%2012.4817%2020.9912%2011.9297C20.9912%2011.3777%2020.5432%2010.9297%2019.9912%2010.9297H12.9912V3.92969C12.9912%203.37769%2012.5432%202.92969%2011.9912%202.92969Z'%20fill='%23858B93'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='32'%20height='32'%20viewBox='0%200%2032%2032'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20width='32'%20height='32'%20rx='16'%20fill='white'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M15.6464%2010.3132C15.8417%2010.1179%2016.1583%2010.1179%2016.3536%2010.3132L20.3536%2014.3132C20.5488%2014.5085%2020.5488%2014.825%2020.3536%2015.0203C20.1583%2015.2156%2019.8417%2015.2156%2019.6464%2015.0203L16.5%2011.8739L16.5%2021.3334C16.5%2021.6096%2016.2761%2021.8334%2016%2021.8334C15.7239%2021.8334%2015.5%2021.6096%2015.5%2021.3334L15.5%2011.8739L12.3536%2015.0203C12.1583%2015.2156%2011.8417%2015.2156%2011.6464%2015.0203C11.4512%2014.825%2011.4512%2014.5085%2011.6464%2014.3132L15.6464%2010.3132Z'%20fill='%23858B93'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='28'%20height='28'%20viewBox='0%200%2028%2028'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20width='28'%20height='28'%20rx='14'%20fill='%231AAF74'%20fill-opacity='0.1'/%3e%3cpath%20d='M20.667%209.83325L7.33366%209.83325'%20stroke='%231AAF74'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3cpath%20d='M16.5%2014L7.33333%2014'%20stroke='%231AAF74'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3cpath%20d='M11.5%2018.1667H7.33333'%20stroke='%231AAF74'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='24'%20height='25'%20viewBox='0%200%2024%2025'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3ccircle%20cx='12'%20cy='6.5'%20r='4'%20stroke='%23858B93'%20stroke-width='1.3'/%3e%3cellipse%20cx='12'%20cy='17.5'%20rx='7'%20ry='4'%20stroke='%23858B93'%20stroke-width='1.3'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='24'%20height='25'%20viewBox='0%200%2024%2025'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M2%2012.5C2%207.78595%202%205.42893%203.46447%203.96447C4.92893%202.5%207.28595%202.5%2012%202.5C16.714%202.5%2019.0711%202.5%2020.5355%203.96447C22%205.42893%2022%207.78595%2022%2012.5C22%2017.214%2022%2019.5711%2020.5355%2021.0355C19.0711%2022.5%2016.714%2022.5%2012%2022.5C7.28595%2022.5%204.92893%2022.5%203.46447%2021.0355C2%2019.5711%202%2017.214%202%2012.5Z'%20stroke='%23858B93'%20stroke-width='1.3'/%3e%3cpath%20d='M7%2014.5L8.79689%2012.3437C9.50894%2011.4893%209.86496%2011.062%2010.3333%2011.062C10.8017%2011.062%2011.1577%2011.4893%2011.8698%2012.3437L12.1302%2012.6563C12.8423%2013.5107%2013.1983%2013.938%2013.6667%2013.938C14.135%2013.938%2014.4911%2013.5107%2015.2031%2012.6563L17%2010.5'%20stroke='%23858B93'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='24'%20height='25'%20viewBox='0%200%2024%2025'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M22%2011V12.5C22%2017.214%2022%2019.5711%2020.5355%2021.0355C19.0711%2022.5%2016.714%2022.5%2012%2022.5C7.28595%2022.5%204.92893%2022.5%203.46447%2021.0355C2%2019.5711%202%2017.214%202%2012.5C2%207.78595%202%205.42893%203.46447%203.96447C4.92893%202.5%207.28595%202.5%2012%202.5H13.5'%20stroke='%23858B93'%20stroke-width='1.3'%20stroke-linecap='round'/%3e%3cpath%20d='M16.652%203.95506L17.3009%203.30624C18.3759%202.23125%2020.1188%202.23125%2021.1938%203.30624C22.2687%204.38124%2022.2687%206.12415%2021.1938%207.19914L20.5449%207.84795M16.652%203.95506C16.652%203.95506%2016.7331%205.33379%2017.9497%206.55032C19.1662%207.76685%2020.5449%207.84795%2020.5449%207.84795M16.652%203.95506L10.6872%209.91993C10.2832%2010.3239%2010.0812%2010.5259%209.90743%2010.7487C9.70249%2011.0114%209.52679%2011.2957%209.38344%2011.5965C9.26191%2011.8515%209.17157%2012.1225%208.99089%2012.6646L8.41242%2014.4M20.5449%207.84795L14.5801%2013.8128C14.1761%2014.2168%2013.9741%2014.4188%2013.7513%2014.5926C13.4886%2014.7975%2013.2043%2014.9732%2012.9035%2015.1166C12.6485%2015.2381%2012.3775%2015.3284%2011.8354%2015.5091L10.1%2016.0876M10.1%2016.0876L8.97709%2016.4619C8.71035%2016.5508%208.41626%2016.4814%208.21744%2016.2826C8.01862%2016.0837%207.9492%2015.7897%208.03811%2015.5229L8.41242%2014.4M10.1%2016.0876L8.41242%2014.4'%20stroke='%23858B93'%20stroke-width='1.5'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='20'%20height='21'%20viewBox='0%200%2020%2021'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M9.58366%202.79175C5.55658%202.79175%202.29199%206.05634%202.29199%2010.0834C2.29199%2014.1105%205.55658%2017.3751%209.58366%2017.3751C13.6107%2017.3751%2016.8753%2014.1105%2016.8753%2010.0834C16.8753%206.05634%2013.6107%202.79175%209.58366%202.79175ZM1.04199%2010.0834C1.04199%205.36598%204.86623%201.54175%209.58366%201.54175C14.3011%201.54175%2018.1253%205.36598%2018.1253%2010.0834C18.1253%2012.2172%2017.3429%2014.1682%2016.0494%2015.6653L18.7756%2018.3915C19.0197%2018.6356%2019.0197%2019.0313%2018.7756%2019.2754C18.5315%2019.5194%2018.1358%2019.5194%2017.8917%2019.2754L15.1655%2016.5491C13.6684%2017.8427%2011.7174%2018.6251%209.58366%2018.6251C4.86623%2018.6251%201.04199%2014.8008%201.04199%2010.0834Z'%20fill='%23858B93'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='24'%20height='25'%20viewBox='0%200%2024%2025'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M17%2012.5C17%2011.3954%2017.8954%2010.5%2019%2010.5C20.1046%2010.5%2021%2011.3954%2021%2012.5C21%2013.6046%2020.1046%2014.5%2019%2014.5C17.8954%2014.5%2017%2013.6046%2017%2012.5Z'%20fill='%23858B93'/%3e%3cpath%20d='M10%2012.5C10%2011.3954%2010.8954%2010.5%2012%2010.5C13.1046%2010.5%2014%2011.3954%2014%2012.5C14%2013.6046%2013.1046%2014.5%2012%2014.5C10.8954%2014.5%2010%2013.6046%2010%2012.5Z'%20fill='%23858B93'/%3e%3cpath%20d='M3%2012.5C3%2011.3954%203.89543%2010.5%205%2010.5C6.10457%2010.5%207%2011.3954%207%2012.5C7%2013.6046%206.10457%2014.5%205%2014.5C3.89543%2014.5%203%2013.6046%203%2012.5Z'%20fill='%23858B93'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='24'%20height='25'%20viewBox='0%200%2024%2025'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M7%208.5C7%205.73858%209.23858%203.5%2012%203.5C14.7614%203.5%2017%205.73858%2017%208.5V11.5C17%2014.2614%2014.7614%2016.5%2012%2016.5C9.23858%2016.5%207%2014.2614%207%2011.5V8.5Z'%20stroke='%23858B93'%20stroke-width='1.5'/%3e%3cpath%20d='M11%208.5H13'%20stroke='%23858B93'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3cpath%20d='M10%2011.5L14%2011.5'%20stroke='%23858B93'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3cpath%20d='M20%2010.5V11.5C20%2015.9183%2016.4183%2019.5%2012%2019.5C7.58172%2019.5%204%2015.9183%204%2011.5V10.5'%20stroke='%23858B93'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3cpath%20d='M12%2019.5V22.5'%20stroke='%23858B93'%20stroke-width='1.5'%20stroke-linecap='round'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='21'%20height='21'%20viewBox='0%200%2021%2021'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M12.25%202.49258C13.5179%201.2247%2015.5735%201.2247%2016.8414%202.49258C18.1093%203.76046%2018.1093%205.8161%2016.8414%207.08398L10.5131%2013.4123C10.1564%2013.769%209.9386%2013.9869%209.69583%2014.1762C9.40981%2014.3993%209.10033%2014.5906%208.77287%2014.7466C8.49494%2014.8791%208.20269%2014.9765%207.72413%2015.136L5.49692%2015.8784L4.9622%2016.0566C4.48358%2016.2162%203.95589%2016.0916%203.59915%2015.7349C3.2424%2015.3781%203.11783%2014.8504%203.27737%2014.3718L4.19801%2011.6099C4.3575%2011.1313%204.4549%2010.8391%204.58736%2010.5611C4.74342%2010.2337%204.93469%209.9242%205.15778%209.63817C5.34714%209.3954%205.56498%209.17759%205.92169%208.82091L12.25%202.49258ZM5.46809%2014.5704L4.76362%2013.8659L5.37064%2012.0449C5.54737%2011.5147%205.62037%2011.2991%205.71577%2011.0989C5.83276%2010.8534%205.97616%2010.6214%206.14342%2010.4069C6.27979%2010.2321%206.43997%2010.0704%206.83516%209.67521L11.7443%204.76607C11.9469%205.27439%2012.2898%205.88791%2012.8679%206.46606C13.4461%207.04422%2014.0596%207.38707%2014.5679%207.5897L9.65879%2012.4988C9.2636%2012.894%209.1019%2013.0542%208.92706%2013.1906C8.71262%2013.3578%208.4806%2013.5012%208.2351%2013.6182C8.03493%2013.7136%207.81935%2013.7866%207.28915%2013.9634L5.46809%2014.5704ZM15.564%206.59368C15.4608%206.57102%2015.3317%206.53694%2015.1851%206.48604C14.7817%206.34611%2014.2511%206.08149%2013.7518%205.58218C13.2525%205.08287%2012.9879%204.5523%2012.848%204.14895C12.7971%204.00226%2012.763%203.87323%2012.7403%203.77004L13.1339%203.37647C13.9136%202.59674%2015.1778%202.59674%2015.9575%203.37647C16.7373%204.15619%2016.7373%205.42038%2015.9575%206.2001L15.564%206.59368ZM3.209%2018.8333C3.209%2018.4882%203.48882%2018.2083%203.834%2018.2083H17.1673V19.4583H3.834C3.48882%2019.4583%203.209%2019.1785%203.209%2018.8333Z'%20fill='%23858B93'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='21'%20height='21'%20viewBox='0%200%2021%2021'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M10.4994%202.79166C9.68396%202.79166%208.9886%203.31251%208.7309%204.0416C8.61587%204.36705%208.2588%204.53763%207.93335%204.4226C7.6079%204.30757%207.43733%203.95049%207.55235%203.62504C7.98105%202.41215%209.13775%201.54166%2010.4994%201.54166C11.861%201.54166%2013.0177%202.41215%2013.4464%203.62504C13.5614%203.95049%2013.3908%204.30757%2013.0654%204.4226C12.74%204.53763%2012.3829%204.36705%2012.2678%204.0416C12.0101%203.31251%2011.3148%202.79166%2010.4994%202.79166Z'%20fill='%23858B93'/%3e%3cpath%20d='M2.79102%205.49999C2.79102%205.15481%203.07084%204.87499%203.41602%204.87499H17.5828C17.9279%204.87499%2018.2078%205.15481%2018.2078%205.49999C18.2078%205.84517%2017.9279%206.12499%2017.5828%206.12499H3.41602C3.07084%206.12499%202.79102%205.84517%202.79102%205.49999Z'%20fill='%23858B93'/%3e%3cpath%20d='M5.42859%207.54175C5.40563%207.19733%205.10781%206.93675%204.7634%206.95971C4.41898%206.98267%204.15839%207.28048%204.18135%207.6249L4.56756%2013.418C4.63881%2014.487%204.69636%2015.3504%204.83134%2016.028C4.97167%2016.7324%205.21035%2017.3208%205.70335%2017.782C6.19634%2018.2432%206.7993%2018.4422%207.51151%2018.5354C8.19654%2018.625%209.06191%2018.625%2010.1332%2018.625H10.8656C11.9369%2018.625%2012.8023%2018.625%2013.4873%2018.5354C14.1995%2018.4422%2014.8025%2018.2432%2015.2955%2017.782C15.7885%2017.3208%2016.0272%2016.7324%2016.1675%2016.028C16.3025%2015.3504%2016.36%2014.487%2016.4313%2013.418L16.8175%207.6249C16.8404%207.28048%2016.5798%206.98267%2016.2354%206.95971C15.891%206.93675%2015.5932%207.19733%2015.5702%207.54175L15.187%2013.291C15.1121%2014.4142%2015.0587%2015.1957%2014.9416%2015.7837C14.828%2016.3541%2014.6693%2016.656%2014.4415%2016.8692C14.2137%2017.0824%2013.9019%2017.2205%2013.3252%2017.296C12.7307%2017.3737%2011.9474%2017.375%2010.8216%2017.375H10.1772C9.05148%2017.375%208.26814%2017.3737%207.67364%2017.296C7.09697%2017.2205%206.78517%2017.0824%206.55733%2016.8692C6.32948%2016.656%206.17087%2016.3541%206.05725%2015.7837C5.94011%2015.1957%205.88675%2014.4142%205.81187%2013.291L5.42859%207.54175Z'%20fill='%23858B93'/%3e%3cpath%20d='M8.3539%209.04476C8.69736%209.01041%209.00364%209.261%209.03799%209.60447L9.45465%2013.7711C9.489%2014.1146%209.23841%2014.4209%208.89494%2014.4552C8.55148%2014.4896%208.2452%2014.239%208.21086%2013.8955L7.79419%209.72885C7.75984%209.38538%208.01043%209.0791%208.3539%209.04476Z'%20fill='%23858B93'/%3e%3cpath%20d='M13.2047%209.72885C13.239%209.38538%2012.9884%209.0791%2012.6449%209.04476C12.3015%209.01041%2011.9952%209.261%2011.9609%209.60447L11.5442%2013.7711C11.5098%2014.1146%2011.7604%2014.4209%2012.1039%2014.4552C12.4474%2014.4896%2012.7536%2014.239%2012.788%2013.8955L13.2047%209.72885Z'%20fill='%23858B93'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='32'%20height='32'%20viewBox='0%200%2032%2032'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20width='32'%20height='32'%20rx='16'%20fill='white'/%3e%3cpath%20d='M16%2022.6666L16%209.33331M16%209.33331L21%2014.3333M16%209.33331L11%2014.3333'%20stroke='%231AAF74'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='17'%20height='17'%20viewBox='0%200%2017%2017'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_2361_172518)'%3e%3cpath%20d='M15.6005%2011.6509C15.9284%2011.2327%2016.0856%2010.7843%2016.0656%2010.3226C16.0455%209.81401%2015.818%209.41585%2015.6306%209.1716C15.8481%208.62956%2015.9317%207.77636%2015.2057%207.11388C14.6737%206.62873%2013.7703%206.41125%2012.5189%206.47147C11.639%206.51162%2010.9029%206.67557%2010.8728%206.68226H10.8694C10.7021%206.71238%2010.5248%206.74918%2010.3441%206.78933C10.3307%206.57519%2010.3675%206.0432%2010.7623%204.84537C11.2308%203.42003%2011.204%202.32927%2010.6754%201.59987C10.1199%200.833663%209.23328%200.773438%208.9723%200.773438C8.72136%200.773438%208.49049%200.87716%208.32655%201.06787C7.95515%201.49949%207.99865%202.29581%208.04549%202.66386C7.60384%203.8483%206.36586%206.75253%205.3186%207.55888C5.29852%207.57227%205.2818%207.589%205.26507%207.60572C4.95724%207.93028%204.7498%208.28159%204.60927%208.58941C4.41187%208.48235%204.18769%208.42212%203.94679%208.42212H1.9058C1.13625%208.42212%200.513916%209.0478%200.513916%209.81401V15.2511C0.513916%2016.0206%201.1396%2016.6429%201.9058%2016.6429H3.94679C4.24457%2016.6429%204.52228%2016.5493%204.7498%2016.3887L5.53608%2016.4823C5.65653%2016.4991%207.7979%2016.7701%209.99614%2016.7266C10.3943%2016.7567%2010.769%2016.7734%2011.117%2016.7734C11.7159%2016.7734%2012.2379%2016.7266%2012.6728%2016.6329C13.6967%2016.4154%2014.396%2015.9805%2014.7506%2015.3414C15.0217%2014.8529%2015.0217%2014.3677%2014.9782%2014.0599C15.644%2013.4577%2015.7611%2012.7918%2015.7377%2012.3234C15.7243%2012.0524%2015.6641%2011.8215%2015.6005%2011.6509ZM1.9058%2015.7396C1.63479%2015.7396%201.4173%2015.5187%201.4173%2015.2511V9.81066C1.4173%209.53964%201.63813%209.32216%201.9058%209.32216H3.94679C4.21781%209.32216%204.43529%209.54299%204.43529%209.81066V15.2477C4.43529%2015.5187%204.21446%2015.7362%203.94679%2015.7362H1.9058V15.7396ZM14.7439%2011.2594C14.6034%2011.4066%2014.5767%2011.6308%2014.6837%2011.8048C14.6837%2011.8082%2014.8209%2012.0424%2014.8376%2012.3636C14.8611%2012.8019%2014.6503%2013.19%2014.2086%2013.5212C14.0513%2013.6417%2013.9878%2013.8491%2014.0547%2014.0365C14.0547%2014.0399%2014.1986%2014.4815%2013.9644%2014.8997C13.7402%2015.3013%2013.2416%2015.589%2012.4855%2015.7496C11.8799%2015.8801%2011.0568%2015.9035%2010.0463%2015.8232C10.0329%2015.8232%2010.0162%2015.8232%209.99949%2015.8232C7.84809%2015.87%205.67326%2015.589%205.64984%2015.5856H5.6465L5.30856%2015.5455C5.32864%2015.4518%205.33868%2015.3514%205.33868%2015.2511V9.81066C5.33868%209.66679%205.31525%209.52626%205.2751%209.39577C5.33533%209.1716%205.50262%208.67306%205.89744%208.24813C7.39974%207.057%208.86858%203.0386%208.93215%202.86461C8.95892%202.79435%208.96561%202.71739%208.95223%202.64044C8.89535%202.2657%208.91542%201.80731%208.99572%201.67013C9.17305%201.67348%209.65152%201.72367%209.93926%202.12183C10.2805%202.5936%2010.2672%203.43676%209.89911%204.55428C9.337%206.25734%209.29016%207.15403%209.73516%207.54885C9.95599%207.74625%2010.2504%207.75629%2010.4646%207.67933C10.6687%207.63249%2010.8627%207.59234%2011.0467%207.56223C11.0601%207.55888%2011.0769%207.55554%2011.0902%207.55219C12.1174%207.32802%2013.9577%207.19084%2014.5967%207.77302C15.1388%208.26821%2014.754%208.924%2014.7105%208.99427C14.5867%209.18163%2014.6235%209.42588%2014.7908%209.57645C14.7941%209.57979%2015.1455%209.91104%2015.1622%2010.356C15.1756%2010.6538%2015.035%2010.9583%2014.7439%2011.2594Z'%20fill='%23858B93'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_2361_172518'%3e%3crect%20width='16'%20height='16'%20fill='white'%20transform='translate(0.290527%200.773438)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='17'%20height='17'%20viewBox='0%200%2017%2017'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_2361_172521)'%3e%3cpath%20d='M0.980564%205.89598C0.652667%206.31422%200.495411%206.76256%200.515487%207.2243C0.535562%207.73287%200.763082%208.13103%200.950451%208.37528C0.732968%208.91731%200.649323%209.77051%201.37538%2010.433C1.90737%2010.9181%202.81076%2011.1356%204.06212%2011.0754C4.94209%2011.0353%205.67818%2010.8713%205.70829%2010.8646H5.71164C5.87893%2010.8345%206.05626%2010.7977%206.23694%2010.7575C6.25033%2010.9717%206.21352%2011.5037%205.81871%2012.7015C5.35028%2014.1268%205.37705%2015.2176%205.9057%2015.947C6.46112%2016.7132%207.34777%2016.7734%207.60875%2016.7734C7.85969%2016.7734%208.09056%2016.6697%208.25451%2016.479C8.6259%2016.0474%208.5824%2015.2511%208.53556%2014.883C8.97722%2013.6986%2010.2152%2010.7943%2011.2625%209.98799C11.2825%209.97461%2011.2993%209.95788%2011.316%209.94115C11.6238%209.6166%2011.8313%209.26528%2011.9718%208.95746C12.1692%209.06453%2012.3934%209.12475%2012.6343%209.12475H14.6753C15.4448%209.12475%2016.0671%208.49907%2016.0671%207.73287V2.29581C16.0671%201.52626%2015.4415%200.903928%2014.6753%200.903928H12.6343C12.3365%200.903928%2012.0588%200.997612%2011.8313%201.15821L11.045%201.06453C10.9245%201.0478%208.78316%200.776784%206.58491%200.820281C6.18675%200.790168%205.81201%200.773438%205.46404%200.773438C4.86513%200.773438%204.34317%200.82028%203.90821%200.913965C2.88437%201.13145%202.18508%201.56641%201.83042%202.20547C1.5594%202.69397%201.5594%203.17913%201.6029%203.48695C0.937067%204.0892%200.819963%204.75504%200.843384%205.22346C0.856767%205.49447%200.916992%205.72534%200.980564%205.89598ZM14.6753%201.80732C14.9463%201.80732%2015.1638%202.02814%2015.1638%202.29581V7.73621C15.1638%208.00723%2014.9429%208.22471%2014.6753%208.22471H12.6343C12.3632%208.22471%2012.1458%208.00389%2012.1458%207.73621V2.29916C12.1458%202.02814%2012.3666%201.81066%2012.6343%201.81066H14.6753V1.80732ZM1.83711%206.28745C1.97764%206.14023%202.0044%205.91606%201.89734%205.74207C1.89734%205.73872%201.76015%205.50451%201.74343%205.18331C1.72%204.745%201.93079%204.35688%202.37245%204.02563C2.52971%203.90518%202.59328%203.69774%202.52636%203.51037C2.52636%203.50702%202.38249%203.06537%202.6167%202.64713C2.84087%202.24562%203.33941%201.95788%204.09558%201.79728C4.70118%201.66679%205.52427%201.64337%206.53473%201.72367C6.54811%201.72367%206.56484%201.72367%206.58157%201.72367C8.73297%201.67683%2010.9078%201.95788%2010.9312%201.96123H10.9346L11.2725%202.00138C11.2524%202.09506%2011.2424%202.19544%2011.2424%202.29581V7.73621C11.2424%207.88009%2011.2658%208.02061%2011.306%208.1511C11.2457%208.37528%2011.0784%208.87381%2010.6836%209.29874C9.18132%2010.4899%207.71248%2014.5083%207.6489%2014.6823C7.62214%2014.7525%207.61545%2014.8295%207.62883%2014.9064C7.68571%2015.2812%207.66563%2015.7396%207.58533%2015.8767C7.408%2015.8734%206.92954%2015.8232%206.64179%2015.425C6.30051%2014.9533%206.3139%2014.1101%206.68194%2012.9926C7.24405%2011.2895%207.29089%2010.3928%206.84589%209.99803C6.62506%209.80062%206.33063%209.79059%206.11649%209.86754C5.91239%209.91438%205.71833%209.95453%205.53431%209.98465C5.52092%209.98799%205.50419%209.99134%205.49081%209.99468C4.46363%2010.2189%202.62339%2010.356%201.98433%209.77386C1.4423%209.27867%201.82707%208.62287%201.87057%208.55261C1.99437%208.36524%201.95756%208.12099%201.79027%207.97043C1.78692%207.96708%201.4356%207.63584%201.41887%207.19084C1.40549%206.89305%201.54602%206.58858%201.83711%206.28745Z'%20fill='%23858B93'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_2361_172521'%3e%3crect%20width='16'%20height='16'%20fill='white'%20transform='matrix(-1%200%200%20-1%2016.2905%2016.7734)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='16'%20height='17'%20viewBox='0%200%2016%2017'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_2361_92626)'%3e%3cpath%20d='M15.3092%2011.4575C15.6371%2011.0393%2015.7944%2010.591%2015.7743%2010.1292C15.7542%209.62065%2015.5267%209.22249%2015.3393%208.97824C15.5568%208.4362%2015.6405%207.58301%2014.9144%206.92052C14.3824%206.43537%2013.479%206.21789%2012.2277%206.27811C11.3477%206.31826%2010.6116%206.48221%2010.5815%206.4889H10.5782C10.4109%206.51902%2010.2335%206.55582%2010.0529%206.59597C10.0395%206.38183%2010.0763%205.84984%2010.4711%204.65201C10.9395%203.22667%2010.9127%202.13591%2010.3841%201.40651C9.82868%200.640304%208.94202%200.580078%208.68104%200.580078C8.4301%200.580078%208.19923%200.6838%208.03529%200.874516C7.66389%201.30613%207.70739%202.10245%207.75423%202.4705C7.31258%203.65494%206.0746%206.55917%205.02734%207.36552C5.00726%207.37891%204.99054%207.39564%204.97381%207.41237C4.66599%207.73692%204.45854%208.08823%204.31801%208.39605C4.12061%208.28899%203.89643%208.22876%203.65553%208.22876H1.61454C0.84499%208.22876%200.222656%208.85444%200.222656%209.62065V15.0577C0.222656%2015.8273%200.848336%2016.4496%201.61454%2016.4496H3.65553C3.95331%2016.4496%204.23102%2016.3559%204.45854%2016.1953L5.24482%2016.289C5.36527%2016.3057%207.50664%2016.5767%209.70488%2016.5332C10.103%2016.5633%2010.4778%2016.5801%2010.8258%2016.5801C11.4247%2016.5801%2011.9466%2016.5332%2012.3816%2016.4396C13.4054%2016.2221%2014.1047%2015.7871%2014.4594%2015.148C14.7304%2014.6595%2014.7304%2014.1744%2014.6869%2013.8666C15.3527%2013.2643%2015.4698%2012.5985%2015.4464%2012.1301C15.433%2011.859%2015.3728%2011.6282%2015.3092%2011.4575ZM1.61454%2015.5462C1.34353%2015.5462%201.12604%2015.3254%201.12604%2015.0577V9.6173C1.12604%209.34628%201.34687%209.1288%201.61454%209.1288H3.65553C3.92655%209.1288%204.14403%209.34963%204.14403%209.6173V15.0544C4.14403%2015.3254%203.9232%2015.5429%203.65553%2015.5429H1.61454V15.5462ZM14.4527%2011.0661C14.3122%2011.2133%2014.2854%2011.4375%2014.3925%2011.6114C14.3925%2011.6148%2014.5296%2011.849%2014.5464%2012.1702C14.5698%2012.6085%2014.359%2012.9966%2013.9173%2013.3279C13.7601%2013.4483%2013.6965%2013.6558%2013.7634%2013.8431C13.7634%2013.8465%2013.9073%2014.2881%2013.6731%2014.7064C13.4489%2015.1079%2012.9504%2015.3956%2012.1942%2015.5562C11.5886%2015.6867%2010.7655%2015.7101%209.75507%2015.6298C9.74169%2015.6298%209.72496%2015.6298%209.70823%2015.6298C7.55683%2015.6767%205.382%2015.3956%205.35858%2015.3923H5.35524L5.0173%2015.3521C5.03738%2015.2585%205.04742%2015.1581%205.04742%2015.0577V9.6173C5.04742%209.47343%205.02399%209.3329%204.98384%209.20241C5.04407%208.97824%205.21136%208.4797%205.60618%208.05477C7.10848%206.86364%208.57732%202.84524%208.64089%202.67125C8.66766%202.60099%208.67435%202.52403%208.66097%202.44708C8.60409%202.07234%208.62416%201.61396%208.70446%201.47677C8.88179%201.48012%209.36026%201.53031%209.648%201.92847C9.98928%202.40024%209.9759%203.2434%209.60785%204.36092C9.04574%206.06398%208.9989%206.96067%209.4439%207.35549C9.66473%207.55289%209.95917%207.56293%2010.1733%207.48597C10.3774%207.43913%2010.5715%207.39898%2010.7555%207.36887C10.7689%207.36552%2010.7856%207.36218%2010.799%207.35883C11.8262%207.13466%2013.6664%206.99748%2014.3055%207.57966C14.8475%208.07485%2014.4627%208.73064%2014.4192%208.80091C14.2954%208.98828%2014.3322%209.23252%2014.4995%209.38309C14.5029%209.38644%2014.8542%209.71768%2014.8709%2010.1627C14.8843%2010.4605%2014.7438%2010.7649%2014.4527%2011.0661Z'%20fill='%231AAF74'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_2361_92626'%3e%3crect%20width='16'%20height='16'%20fill='white'%20transform='translate(0%200.580078)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='17'%20height='17'%20viewBox='0%200%2017%2017'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_2361_214893)'%3e%3cpath%20d='M0.784519%205.70262C0.456622%206.12086%200.299366%206.5692%200.319442%207.03094C0.339517%207.53951%200.567037%207.93767%200.754406%208.18192C0.536923%208.72395%200.453278%209.57715%201.17933%2010.2396C1.71133%2010.7248%202.61472%2010.9423%203.86607%2010.882C4.74604%2010.8419%205.48213%2010.6779%205.51225%2010.6713H5.51559C5.68289%2010.6411%205.86022%2010.6043%206.0409%2010.5642C6.05428%2010.7783%206.01748%2011.3103%205.62266%2012.5081C5.15424%2013.9335%205.18101%2015.0242%205.70965%2015.7536C6.26507%2016.5199%207.15173%2016.5801%207.41271%2016.5801C7.66365%2016.5801%207.89452%2016.4764%208.05846%2016.2856C8.42986%2015.854%208.38636%2015.0577%208.33952%2014.6897C8.78117%2013.5052%2010.0191%2010.601%2011.0664%209.79463C11.0865%209.78125%2011.1032%209.76452%2011.1199%209.74779C11.4278%209.42324%2011.6352%209.07192%2011.7757%208.7641C11.9731%208.87117%2012.1973%208.9314%2012.4382%208.9314H14.4792C15.2488%208.9314%2015.8711%208.30572%2015.8711%207.53951V2.10245C15.8711%201.3329%2015.2454%200.710568%2014.4792%200.710568H12.4382C12.1404%200.710568%2011.8627%200.804253%2011.6352%200.964854L10.8489%200.87117C10.7285%200.854441%208.58711%200.583425%206.38887%200.626922C5.99071%200.596808%205.61597%200.580078%205.268%200.580078C4.66909%200.580078%204.14713%200.626921%203.71216%200.720606C2.68832%200.938087%201.98904%201.37305%201.63437%202.01212C1.36336%202.50061%201.36336%202.98577%201.40685%203.29359C0.741022%203.89585%200.623918%204.56168%200.647339%205.0301C0.660722%205.30112%200.720947%205.53198%200.784519%205.70262ZM14.4792%201.61396C14.7502%201.61396%2014.9677%201.83478%2014.9677%202.10245V7.54286C14.9677%207.81387%2014.7469%208.03135%2014.4792%208.03135H12.4382C12.1672%208.03135%2011.9497%207.81053%2011.9497%207.54286V2.1058C11.9497%201.83478%2012.1706%201.6173%2012.4382%201.6173H14.4792V1.61396ZM1.64106%206.09409C1.78159%205.94687%201.80836%205.7227%201.70129%205.54871C1.70129%205.54536%201.56411%205.31115%201.54738%204.98995C1.52396%204.55164%201.73475%204.16352%202.1764%203.83227C2.33366%203.71182%202.39723%203.50438%202.33032%203.31701C2.33032%203.31366%202.18644%202.87201%202.42066%202.45377C2.64483%202.05227%203.14336%201.76452%203.89953%201.60392C4.50514%201.47343%205.32822%201.45001%206.33868%201.53031C6.35206%201.53031%206.36879%201.53031%206.38552%201.53031C8.53692%201.48347%2010.7117%201.76452%2010.7352%201.76787H10.7385L11.0764%201.80802C11.0564%201.9017%2011.0463%202.00208%2011.0463%202.10245V7.54286C11.0463%207.68673%2011.0698%207.82726%2011.1099%207.95774C11.0497%208.18192%2010.8824%208.68046%2010.4876%209.10538C8.98527%2010.2965%207.51643%2014.3149%207.45286%2014.4889C7.42609%2014.5592%207.4194%2014.6361%207.43278%2014.7131C7.48966%2015.0878%207.46959%2015.5462%207.38929%2015.6834C7.21196%2015.68%206.73349%2015.6298%206.44575%2015.2317C6.10447%2014.7599%206.11785%2013.9168%206.4859%2012.7992C7.04801%2011.0962%207.09485%2010.1995%206.64985%209.80467C6.42902%209.60726%206.13458%209.59723%205.92045%209.67418C5.71635%209.72102%205.52229%209.76117%205.33826%209.79129C5.32488%209.79463%205.30815%209.79798%205.29477%209.80132C4.26758%2010.0255%202.42735%2010.1627%201.78828%209.5805C1.24625%209.08531%201.63103%208.42951%201.67452%208.35925C1.79832%208.17188%201.76152%207.92763%201.59422%207.77707C1.59088%207.77372%201.23956%207.44248%201.22283%206.99748C1.20945%206.69969%201.34997%206.39522%201.64106%206.09409Z'%20fill='%23F34859'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_2361_214893'%3e%3crect%20width='16'%20height='16'%20fill='white'%20transform='matrix(-1%200%200%20-1%2016.0938%2016.5801)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='24'%20height='25'%20viewBox='0%200%2024%2025'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M22%2012.123C22%2017.6459%2017.5228%2022.123%2012%2022.123C6.47715%2022.123%202%2017.6459%202%2012.123C2%206.6002%206.47715%202.12305%2012%202.12305C17.5228%202.12305%2022%206.6002%2022%2012.123ZM16.0303%209.09272C16.3232%209.38561%2016.3232%209.86048%2016.0303%2010.1534L11.0303%2015.1534C10.7374%2015.4463%2010.2626%2015.4463%209.96967%2015.1534L7.96967%2013.1534C7.67678%2012.8605%207.67678%2012.3856%207.96967%2012.0927C8.26256%2011.7998%208.73744%2011.7998%209.03033%2012.0927L10.5%2013.5624L14.9697%209.09272C15.2626%208.79982%2015.7374%208.79982%2016.0303%209.09272Z'%20fill='%231AAF74'/%3e%3c/svg%3e\"","import \"./SurveyMessage.css\";\r\nimport { Component, createSignal, For, onMount } from \"solid-js\";\r\nimport { iconCheck } from \"../../assets/icons/icons\";\r\n\r\nconst SurveyMessage: Component<{\r\n onClose?: () => void;\r\n onSubmit?: (data: string[], type: 'ordered' | 'selected' | 'input') => void;\r\n multiSelect?: boolean;\r\n isInputMode?: boolean;\r\n}> = (props) => {\r\n const [options, setOptions] = createSignal([\r\n \"A. Tự phân bổ đều trên một số lượng cổ phiếu xác định\",\r\n \"B. Dựa vào các phương pháp phân bổ theo rủi ro\",\r\n \"C. Theo tư vấn từ chuyên viên tư vấn đầu tư, báo cáo danh mục đầu tư\",\r\n \"D. Khác\",\r\n ]);\r\n\r\n const [draggedIndex, setDraggedIndex] = createSignal<number | null>(null);\r\n const [hoveredIndex, setHoveredIndex] = createSignal<number | null>(null);\r\n const [selectedIndexes, setSelectedIndexes] = createSignal<number[]>([]);\r\n const [answers, setAnswers] = createSignal<string[]>(Array(options().length).fill(\"\"));\r\n const multiSelect = props.multiSelect ?? false;\r\n const isInputMode = () => props.isInputMode ?? false;\r\n\r\n let containerRef: HTMLDivElement | undefined;\r\n\r\n const handleMouseDown = (index: number, e: MouseEvent) => {\r\n if (e.button !== 0) return;\r\n e.preventDefault();\r\n\r\n setDraggedIndex(index);\r\n };\r\n\r\n const handleMouseMove = (e: MouseEvent) => {\r\n if (draggedIndex() === null || !containerRef) return;\r\n\r\n const containerRect = containerRef.getBoundingClientRect();\r\n const isInContainer =\r\n e.clientX >= containerRect.left &&\r\n e.clientX <= containerRect.right &&\r\n e.clientY >= containerRect.top &&\r\n e.clientY <= containerRect.bottom;\r\n\r\n if (!isInContainer) {\r\n return;\r\n }\r\n\r\n const buttons = containerRef.querySelectorAll(\".survey-option\");\r\n for (let i = 0; i < buttons.length; i++) {\r\n const btn = buttons[i] as HTMLElement;\r\n const rect = btn.getBoundingClientRect();\r\n\r\n const isOver =\r\n e.clientX >= rect.left &&\r\n e.clientX <= rect.right &&\r\n e.clientY >= rect.top &&\r\n e.clientY <= rect.bottom;\r\n\r\n if (isOver && i !== draggedIndex()) {\r\n setHoveredIndex(i);\r\n return;\r\n }\r\n }\r\n };\r\n\r\n const handleMouseUp = (e: MouseEvent) => {\r\n if (draggedIndex() === null || !containerRef) return;\r\n\r\n const containerRect = containerRef.getBoundingClientRect();\r\n const isInContainer =\r\n e.clientX >= containerRect.left &&\r\n e.clientX <= containerRect.right &&\r\n e.clientY >= containerRect.top &&\r\n e.clientY <= containerRect.bottom;\r\n\r\n if (isInContainer && hoveredIndex() !== null) {\r\n // Hoán đổi items\r\n const newOptions = [...options()];\r\n const temp = newOptions[draggedIndex()!];\r\n newOptions[draggedIndex()!] = newOptions[hoveredIndex()!];\r\n newOptions[hoveredIndex()!] = temp;\r\n setOptions(newOptions);\r\n }\r\n\r\n setDraggedIndex(null);\r\n setHoveredIndex(null);\r\n };\r\n\r\n const handleOptionClick = (idx: number) => {\r\n if (multiSelect) {\r\n setSelectedIndexes(prev =>\r\n prev.includes(idx)\r\n ? prev.filter(i => i !== idx)\r\n : [...prev, idx]\r\n );\r\n } else {\r\n setSelectedIndexes(prev =>\r\n prev.includes(idx) ? [] : [idx]\r\n );\r\n }\r\n };\r\n\r\n const handleAnswerChange = (idx: number, value: string) => {\r\n setAnswers(prev => {\r\n const next = [...prev];\r\n next[idx] = value;\r\n return next;\r\n });\r\n };\r\n\r\n const handleSubmit = () => {\r\n if (props.onSubmit) {\r\n if (isInputMode()) {\r\n const filledAnswers = answers().filter(a => a.trim() !== '');\r\n props.onSubmit(filledAnswers, 'input');\r\n } else if (multiSelect) {\r\n const selectedOptions = options().filter((_, i) => selectedIndexes().includes(i));\r\n props.onSubmit(selectedOptions, 'selected');\r\n } else {\r\n props.onSubmit(options(), 'ordered');\r\n }\r\n }\r\n };\r\n\r\n onMount(() => {\r\n document.addEventListener(\"mousemove\", handleMouseMove);\r\n document.addEventListener(\"mouseup\", handleMouseUp);\r\n\r\n return () => {\r\n document.removeEventListener(\"mousemove\", handleMouseMove);\r\n document.removeEventListener(\"mouseup\", handleMouseUp);\r\n };\r\n });\r\n\r\n return (\r\n <div class=\"survey-message\">\r\n <div style={{ display: \"flex\", \"flex-direction\": \"column\", \"align-items\": \"flex-start\" }}>\r\n <div style={{ \"font-weight\": 600, \"font-size\": \"16px\", \"margin-bottom\": \"8px\" }}>\r\n 12.1 Anh/chị xây dựng danh mục đầu tư dựa vào đâu?\r\n </div>\r\n <div style={{ \"font-weight\": 400, color: \"#858B93\", \"font-size\": \"12px\", \"margin-bottom\": \"16px\" }}>\r\n Bạn có thể chọn {multiSelect ? \"nhiều\" : \"một\"} đáp án hoặc nhập trực tiếp A, B, C, D,... theo thứ tự đáp án\r\n </div>\r\n </div>\r\n {isInputMode() ? (\r\n <div class=\"survey-inputs\">\r\n <For each={options()}>\r\n {(option, index) => (\r\n <div style={{ \"margin-bottom\": \"12px\" }}>\r\n <div style={{ \"font-weight\": 500, \"margin-bottom\": \"4px\", \"text-align\": \"left\" }}>\r\n {option}\r\n </div>\r\n <input\r\n class=\"survey-input\"\r\n type=\"text\"\r\n value={answers()[index()]}\r\n placeholder={option}\r\n onInput={(e) => handleAnswerChange(index(), e.currentTarget.value)}\r\n />\r\n </div>\r\n )}\r\n </For>\r\n </div>\r\n ) : (\r\n <div class=\"survey-options\" ref={containerRef!}>\r\n <For each={options()}>\r\n {(option, index) => (\r\n <button\r\n class={`survey-option${multiSelect ? \" multi-selected\" : \"\"} ${draggedIndex() === index() ? \"dragging\" : \"\"} ${hoveredIndex() === index() ? \"hovered\" : \"\"} ${selectedIndexes().includes(index()) ? \"selected\" : \"\"}`}\r\n type=\"button\"\r\n onMouseDown={(e) => handleMouseDown(index(), e)}\r\n onClick={() => handleOptionClick(index())}\r\n style={{ display: \"flex\", \"justify-content\": \"space-between\", \"align-items\": \"center\", width: multiSelect ? \"100%\" : \"auto\" }}\r\n >\r\n <span>{option}</span>\r\n {multiSelect && selectedIndexes().includes(index()) && (\r\n <img src={iconCheck} style={{ width: \"20px\", height: \"20px\", \"margin-left\": \"16px\" }} />\r\n )}\r\n </button>\r\n )}\r\n </For>\r\n </div>\r\n )}\r\n <div style={{ display: \"flex\", \"justify-content\": \"flex-end\", \"margin-top\": \"16px\" }}>\r\n <button class=\"survey-submit-button\" onClick={handleSubmit}>\r\n Gửi đáp án\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default SurveyMessage;","import { For, Show, createEffect, createSignal } from \"solid-js\";\r\nimport \"./ChatMessages.css\";\r\nimport SurveyMessage from \"../../components/SurveyMessage/SurveyMessage\";\r\nimport { iconLike, iconDislike, iconLikeActive, iconDislikeActive } from \"../../assets/icons/icons\";\r\n\r\ninterface Message {\r\n id: number;\r\n text?: string;\r\n sender: \"user\" | \"bot\";\r\n type?: \"survey\";\r\n}\r\n\r\ninterface ChatMessagesProps {\r\n messages: Message[];\r\n isFullScreen?: boolean;\r\n inputHeight?: number;\r\n isMobile?: boolean;\r\n onSubmit?: (data: string[], type: 'ordered' | 'selected' | 'input') => void;\r\n surveyOptions?: { multiSelect?: boolean; isInputMode?: boolean };\r\n}\r\n\r\nexport default function ChatMessages(props: ChatMessagesProps) {\r\n let messagesContainerRef: HTMLDivElement | undefined;\r\n const [hoveredId, setHoveredId] = createSignal<number | null>(null);\r\n const [feedbackState, setFeedbackState] = createSignal<{ [key: number]: \"like\" | \"dislike\" | null }>({});\r\n\r\n const handleMouseEnter = (id: number) => {\r\n setHoveredId(id);\r\n };\r\n\r\n const handleMouseLeave = (id: number) => {\r\n if (hoveredId() === id) setHoveredId(null);\r\n };\r\n\r\n const getPadBottom = () => {\r\n if (props.isFullScreen) {\r\n return props.messages.length > 0 ? \"100px\" : `${(props.inputHeight ?? 0) + 24}px`;\r\n }\r\n if (props.isMobile) {\r\n return props.messages.length > 0 ? \"10px\" : \"0px\";\r\n }\r\n return props.messages.length > 0 ? \"10px\" : \"0px\";\r\n };\r\n\r\n createEffect(() => {\r\n if (messagesContainerRef && props.messages.length > 0) {\r\n setTimeout(() => {\r\n messagesContainerRef!.scrollTop = messagesContainerRef!.scrollHeight;\r\n }, 100);\r\n }\r\n });\r\n\r\n createEffect(() => {\r\n props.isFullScreen;\r\n props.isMobile;\r\n\r\n if (messagesContainerRef && props.messages.length > 0) {\r\n requestAnimationFrame(() => {\r\n messagesContainerRef!.scrollTop = messagesContainerRef!.scrollHeight;\r\n });\r\n }\r\n });\r\n\r\n return (\r\n <div\r\n ref={messagesContainerRef}\r\n class=\"chat-messages-container\"\r\n style={{\r\n \"justify-content\": props.messages.length === 0 ? \"center\" : \"flex-start\",\r\n \"padding-bottom\": getPadBottom(),\r\n }}\r\n >\r\n <Show when={props.messages.length === 0 && !props.isFullScreen}>\r\n <div\r\n style={{\r\n \"text-align\": \"center\",\r\n \"font-size\": props.isMobile ? \"20px\" : \"24px\",\r\n \"font-weight\": \"600\",\r\n \"user-select\": \"none\",\r\n \"white-space\": \"pre-line\"\r\n }}\r\n >\r\n Hôm nay thị trường khiến bạn <br />quan tâm điều gì?\r\n </div>\r\n </Show>\r\n <For each={props.messages}>\r\n {(msg) => (\r\n msg.type === \"survey\" ? (\r\n <div\r\n class=\"chat-message bot\"\r\n style={{\r\n \"margin-left\": \"24px\",\r\n }}\r\n >\r\n <div>\r\n <SurveyMessage\r\n onSubmit={props.onSubmit}\r\n multiSelect={props.surveyOptions?.multiSelect}\r\n isInputMode={props.surveyOptions?.isInputMode}\r\n />\r\n </div>\r\n </div>\r\n ) : (\r\n <div\r\n onMouseEnter={() => msg.sender === \"bot\" && handleMouseEnter(msg.id)}\r\n onMouseLeave={() => msg.sender === \"bot\" && handleMouseLeave(msg.id)}\r\n style={{\r\n display: \"flex\",\r\n \"flex-direction\": \"column\",\r\n \"align-items\": \"flex-start\",\r\n \"margin-bottom\": \"8px\"\r\n }}\r\n >\r\n <div\r\n class={`chat-message ${msg.sender}`}\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\"\r\n }}\r\n >\r\n <div\r\n style={{\r\n background: msg.sender === \"user\" ? \"#1AAF741A\" : \"#fff\",\r\n color: \"#000\",\r\n \"border-radius\": \"24px\",\r\n padding: \"10px 16px\",\r\n \"font-weight\": 500,\r\n \"font-size\": \"16px\",\r\n \"max-width\": \"70%\",\r\n \"word-break\": \"break-word\",\r\n \"white-space\": \"pre-line\",\r\n \"text-align\": \"left\"\r\n }}\r\n >\r\n {msg.text}\r\n </div>\r\n </div>\r\n {msg.sender === \"bot\" && (\r\n <div\r\n style={{\r\n display: \"flex\",\r\n gap: \"8px\",\r\n \"margin-left\": \"16px\",\r\n height: \"16px\",\r\n opacity: hoveredId() === msg.id ? 1 : 0,\r\n visibility: hoveredId() === msg.id ? \"visible\" : \"hidden\",\r\n \"pointer-events\": hoveredId() === msg.id ? \"auto\" : \"none\",\r\n transition: \"opacity 0.2s\"\r\n }}\r\n >\r\n <button\r\n class=\"feedback-button\"\r\n onClick={() => setFeedbackState(prev => ({ ...prev, [msg.id]: 'like' }))}\r\n >\r\n <img src={feedbackState()[msg.id] === 'like' ? iconLikeActive : iconLike} />\r\n </button>\r\n <button\r\n class=\"feedback-button\"\r\n onClick={() => setFeedbackState(prev => ({ ...prev, [msg.id]: 'dislike' }))}\r\n >\r\n <img src={feedbackState()[msg.id] === 'dislike' ? iconDislikeActive : iconDislike} />\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n )\r\n )}\r\n </For>\r\n </div>\r\n );\r\n}","import { createEffect, createSignal, JSX, onMount } from \"solid-js\";\r\nimport \"./ChatInput.css\";\r\nimport { iconAddItem, iconSend, iconMicrophone, iconSendActive } from \"../../assets/icons/icons\";\r\n\r\ninterface ChatInputProps {\r\n input: string;\r\n setInput: (v: string) => void;\r\n sendMessage: () => void;\r\n onHeightChange?: (h: number) => void;\r\n}\r\n\r\nexport default function ChatInput(props: ChatInputProps) {\r\n let textareaRef: HTMLTextAreaElement | undefined;\r\n const MAX_HEIGHT = 120;\r\n const [isMaxed, setIsMaxed] = createSignal(false);\r\n\r\n function resizeTextarea() {\r\n if (!textareaRef) return;\r\n textareaRef.style.height = \"auto\";\r\n if (!props.input.trim()) {\r\n textareaRef.style.height = \"48px\";\r\n textareaRef.style.overflowY = \"hidden\";\r\n setIsMaxed(false);\r\n props.onHeightChange?.(48);\r\n return;\r\n }\r\n const fullHeight = textareaRef.scrollHeight;\r\n const usedHeight = Math.min(fullHeight, MAX_HEIGHT);\r\n textareaRef.style.height = usedHeight + \"px\";\r\n textareaRef.style.overflowY = fullHeight > MAX_HEIGHT ? \"auto\" : \"hidden\";\r\n setIsMaxed(fullHeight > MAX_HEIGHT);\r\n props.onHeightChange?.(usedHeight);\r\n }\r\n\r\n createEffect(() => {\r\n if (textareaRef) {\r\n resizeTextarea();\r\n }\r\n });\r\n\r\n const handleInput: JSX.EventHandlerUnion<HTMLTextAreaElement, InputEvent> = (e) => {\r\n props.setInput(e.currentTarget.value);\r\n resizeTextarea();\r\n };\r\n\r\n const handleKeyPress: JSX.EventHandlerUnion<HTMLTextAreaElement, KeyboardEvent> = (e) => {\r\n if (e.key === \"Enter\" && !e.shiftKey) {\r\n e.preventDefault();\r\n props.sendMessage();\r\n setTimeout(() => {\r\n if (textareaRef) {\r\n resizeTextarea();\r\n }\r\n }, 0);\r\n }\r\n };\r\n\r\n return (\r\n <div class=\"chat-input-container\" classList={{ \"is-maxed\": isMaxed() }}>\r\n <div style={{ position: \"relative\", flex: 1, \"min-width\": \"0\" }}>\r\n <img\r\n src={iconAddItem}\r\n style={{\r\n position: \"absolute\",\r\n left: \"18px\",\r\n top: \"50%\",\r\n transform: \"translateY(-60%)\",\r\n width: \"20px\",\r\n height: \"20px\",\r\n cursor: \"pointer\"\r\n }}\r\n />\r\n <textarea\r\n ref={el => (textareaRef = el)}\r\n value={props.input}\r\n onInput={handleInput}\r\n onKeyPress={handleKeyPress}\r\n placeholder=\"Hỏi bất kỳ điều gì...\"\r\n class=\"chat-input-field\"\r\n rows={1}\r\n style={{\r\n \"padding-left\": \"56px\",\r\n resize: \"none\",\r\n width: \"100%\",\r\n \"max-height\": `${MAX_HEIGHT}px`,\r\n overflow: \"hidden\",\r\n }}\r\n />\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n right: \"16px\",\r\n top: \"50%\",\r\n transform: \"translateY(-55%)\",\r\n display: \"flex\",\r\n gap: \"12px\",\r\n }}\r\n >\r\n <img\r\n src={iconMicrophone}\r\n style={{\r\n \"margin-top\": \"4px\",\r\n width: \"24px\",\r\n height: \"24px\",\r\n cursor: \"pointer\"\r\n }}\r\n onClick={props.sendMessage}\r\n />\r\n <img\r\n src={props.input.trim() ? iconSendActive : iconSend}\r\n style={{\r\n width: \"32px\",\r\n height: \"32px\",\r\n cursor: \"pointer\"\r\n }}\r\n onClick={props.sendMessage}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}","import \"./Sidebar.css\";\r\nimport { chatIcon, iconSideActive, iconUser, iconTrending, iconNewConversation, iconSearch, iconMenudot, iconClose, iconShrink, iconEdit, iconDelete } from \"../../assets/icons/icons\";\r\nimport { createSignal, onCleanup, onMount } from \"solid-js\";\r\n\r\nexport default function Sidebar(props: {\r\n onClose: () => void;\r\n onShrink?: () => void;\r\n open?: boolean;\r\n fullScreen?: boolean;\r\n isMobile?: boolean;\r\n onMobile?: () => void;\r\n onSurveyRequest?: (options?: { multiSelect?: boolean; isInputMode?: boolean }) => void;\r\n onNewConversation?: () => void;\r\n options?: {\r\n onShrink?: () => void;\r\n };\r\n}) {\r\n const [popoverOpen, setPopoverOpen] = createSignal(false);\r\n let popoverRef: HTMLDivElement | undefined;\r\n\r\n onMount(() => {\r\n const handleMouseDownOutside = (e: MouseEvent) => {\r\n if (popoverOpen() && popoverRef && !popoverRef.contains(e.target as Node)) {\r\n setPopoverOpen(false);\r\n }\r\n };\r\n\r\n document.addEventListener(\"mousedown\", handleMouseDownOutside);\r\n\r\n onCleanup(() => {\r\n document.removeEventListener(\"mousedown\", handleMouseDownOutside);\r\n });\r\n });\r\n\r\n return (\r\n <>\r\n {!props.fullScreen && (\r\n <div\r\n class={`sidebar-overlay${props.open ? \" sidebar-overlay--open\" : \"\"}`}\r\n onClick={props.onClose}\r\n ></div>\r\n )}\r\n <div\r\n class={`sidebar${props.open ? \" sidebar--open\" : \"\"}${props.fullScreen ? \" sidebar--fullscreen\" : \"\"}${props.isMobile ? \" sidebar--mobile\" : \"\"}`}\r\n style={props.isMobile ? { width: \"280px\", height: \"100%\" } : {}}\r\n >\r\n <div class=\"sidebar-header\">\r\n {!props.fullScreen && (\r\n <img\r\n src={iconSideActive}\r\n style={{ width: \"28px\", height: \"28px\", \"margin-right\": \"16px\", cursor: \"pointer\" }}\r\n onClick={props.onClose}\r\n />\r\n )}\r\n <img src={chatIcon} style={{ width: \"32px\", height: \"32px\", \"margin-right\": \"4px\" }} />\r\n <span style={{ color: \"#1A1D1F\", \"user-select\": \"none\" }}>Ez</span>\r\n <span style={{ color: \"#1AAF74\", \"margin-left\": \"4px\", \"user-select\": \"none\" }}>Advise</span>\r\n {props.fullScreen && (\r\n <div class=\"sidebar-header-actions\">\r\n {/* <button\r\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", padding: 0 }}\r\n onClick={() => {\r\n if (props.onMobile) props.onMobile();\r\n }}\r\n >\r\n <img src={iconMinimize} style={{ width: \"20px\", height: \"20px\" }} />\r\n </button> */}\r\n <button\r\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", padding: 0 }}\r\n onClick={() => {\r\n props.onShrink?.();\r\n // if (props.options?.onShrink) props.options.onShrink();\r\n }}\r\n >\r\n <img src={iconShrink} style={{ width: \"20px\", height: \"20px\" }} />\r\n </button>\r\n <button\r\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", padding: 0 }}\r\n onClick={props.onClose}\r\n >\r\n <img src={iconClose} style={{ width: \"20px\", height: \"20px\" }} />\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n <div\r\n class=\"sidebar-section\"\r\n tabIndex={0}\r\n onClick={() => {\r\n if (props.onSurveyRequest) props.onSurveyRequest({ multiSelect: true });\r\n if (!props.fullScreen) props.onClose();\r\n }}\r\n >\r\n <img\r\n src={iconUser}\r\n class=\"sidebar-section-icon\"\r\n />\r\n <span class=\"sidebar-section-title\">Chân dung nhà đầu tư</span>\r\n </div>\r\n <div\r\n class=\"sidebar-section sidebar-section--no-padding\"\r\n tabIndex={0}\r\n onClick={() => {\r\n if (props.onSurveyRequest) props.onSurveyRequest({ isInputMode: true });\r\n if (!props.fullScreen) props.onClose();\r\n }}\r\n >\r\n <img\r\n src={iconTrending}\r\n class=\"sidebar-section-icon\"\r\n />\r\n <span class=\"sidebar-section-title\">Định hướng đầu tư</span>\r\n </div>\r\n <div class=\"sidebar-conversation-row\">\r\n <span style={{ \"font-weight\": 400, \"font-size\": \"14px\", color: \"#858B93\", \"user-select\": \"none\" }}>Hội thoại</span>\r\n <div\r\n class=\"sidebar-conversation-action\"\r\n tabIndex={0}\r\n onClick={() => {\r\n if (props.onNewConversation) props.onNewConversation();\r\n if (!props.fullScreen) props.onClose();\r\n }}\r\n >\r\n <span style={{ \"font-weight\": 400, \"font-size\": \"14px\", color: \"#858B93\", \"user-select\": \"none\" }}>Hội thoại mới</span>\r\n <img\r\n src={iconNewConversation}\r\n style={{ width: \"20px\", height: \"20px\", \"margin-left\": \"8px\" }}\r\n />\r\n </div>\r\n </div>\r\n <div class=\"sidebar-search-box\">\r\n <img\r\n src={iconSearch}\r\n style={{ width: \"18px\", height: \"18px\", \"margin-right\": \"8px\", opacity: 0.7 }}\r\n />\r\n <input\r\n type=\"text\"\r\n placeholder=\"Tìm kiếm hội thoại\"\r\n />\r\n </div>\r\n <div>\r\n <div class=\"sidebar-menu-row\" tabIndex={0} style={{ position: \"relative\" }}\r\n onClick={() => {\r\n if (props.onSurveyRequest) props.onSurveyRequest();\r\n if (!props.fullScreen) props.onClose();\r\n }}>\r\n <span style={{ \"font-weight\": 500, \"font-size\": \"14px\", \"user-select\": \"none\" }}>Khảo sát</span>\r\n <img\r\n src={iconMenudot}\r\n class=\"sidebar-menu-dot\"\r\n style={{ width: \"24px\", height: \"24px\", \"margin-left\": \"8px\", cursor: \"pointer\" }}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n setPopoverOpen(!popoverOpen());\r\n }}\r\n onMouseDown={e => e.stopPropagation()}\r\n />\r\n {popoverOpen() && (\r\n <div class=\"sidebar-popover\" ref={el => (popoverRef = el)}>\r\n <div\r\n class=\"sidebar-popover-item\"\r\n onClick={(e: MouseEvent) => {\r\n e.stopPropagation();\r\n setPopoverOpen(false);\r\n // TODO:\r\n }}\r\n >\r\n <img src={iconEdit} style={{ width: \"18px\", height: \"18px\" }} />\r\n Đổi tên\r\n </div>\r\n <div\r\n class=\"sidebar-popover-item\"\r\n onClick={(e: MouseEvent) => {\r\n e.stopPropagation();\r\n setPopoverOpen(false);\r\n // TODO:\r\n }}\r\n >\r\n <img src={iconDelete} style={{ width: \"18px\", height: \"18px\" }} />\r\n Xóa\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n}","import { JSX } from \"solid-js\";\r\nimport \"./ChatActionButton.css\";\r\n\r\nexport default function ChatActionButton(props: { text: string; onClick?: JSX.EventHandlerUnion<HTMLButtonElement, MouseEvent> }) {\r\n return (\r\n <button class=\"chat-action-btn\" onClick={props.onClick}>\r\n {props.text}\r\n </button>\r\n );\r\n}","import { Component } from \"solid-js\";\r\nimport \"./HeaderSteps.css\";\r\n\r\ninterface HeaderStepsProps {\r\n currentStep?: number;\r\n title?: string;\r\n totalSteps?: number;\r\n}\r\n\r\nconst HeaderSteps: Component<HeaderStepsProps> = (props) => {\r\n const currentStep = () => props.currentStep || 1;\r\n const totalSteps = () => props.totalSteps || 6;\r\n const title = () => props.title || \"Tài chính cá nhân/ Hồ sơ rủi ro\";\r\n\r\n return (\r\n <div class=\"header-steps\">\r\n <div class=\"header-steps-title\">\r\n {title()}\r\n </div>\r\n <div class=\"header-steps-container\">\r\n {Array.from({ length: totalSteps() }, (_, i) => (\r\n <>\r\n <div\r\n class={`header-step ${i + 1 <= currentStep() ? \"active\" : \"\"}`}\r\n >\r\n {i + 1}\r\n </div>\r\n {i < totalSteps() - 1 && (\r\n <div class=\"header-step-line\"></div>\r\n )}\r\n </>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default HeaderSteps;","export async function listMessagesAsync(\r\n conversationId: string,\r\n direction?: string,\r\n fromMessageId?: string,\r\n top?: number\r\n) {\r\n return [\r\n { id: 1, text: \"Xin chào! Tôi là bot hỗ trợ đầu tư.\", sender: \"bot\" },\r\n { id: 2, text: \"Thị trường hôm nay thế nào?\", sender: \"user\" },\r\n { id: 3, text: \"Thị trường hôm nay biến động nhẹ, bạn quan tâm đến mã nào?\", sender: \"bot\" },\r\n { id: 4, text: \"Tôi muốn hỏi về cổ phiếu FPT.\", sender: \"user\" },\r\n { id: 5, text: \"FPT đang có xu hướng tăng trưởng tốt, bạn cần phân tích kỹ thuật hay cơ bản?\", sender: \"bot\" }\r\n ];\r\n}\r\n\r\nexport async function sendMessageAsync(message: any) {\r\n return { id: Date.now(), text: message.text, sender: \"user\" };\r\n}\r\n\r\nexport async function updateMessageAsync(message: any) {\r\n return true;\r\n}\r\n\r\nexport async function deleteMessageAsync(messageId: string, deleteType?: string) {\r\n return true;\r\n}\r\n\r\nexport async function searchMessagesAsync(conversationId: string, keyword: string, from?: string, top?: number) {\r\n const all = await listMessagesAsync(conversationId);\r\n return all.filter(m => m.text.toLowerCase().includes(keyword.toLowerCase()));\r\n}","import * as MessageService from \"./data-provider/services/message-service\";\r\n\r\nclass RemoteRepository {\r\n async listMessages(conversationId: string) {\r\n return await MessageService.listMessagesAsync(conversationId);\r\n }\r\n\r\n async sendMessage(message: { text: string }) {\r\n return await MessageService.sendMessageAsync(message);\r\n }\r\n\r\n async updateMessage(message: any) {\r\n return await MessageService.updateMessageAsync(message);\r\n }\r\n\r\n async deleteMessage(messageId: string, deleteType?: string) {\r\n return await MessageService.deleteMessageAsync(messageId, deleteType);\r\n }\r\n\r\n async searchMessages(conversationId: string, keyword: string, from?: string, top?: number) {\r\n return await MessageService.searchMessagesAsync(conversationId, keyword, from, top);\r\n }\r\n}\r\n\r\nexport default new RemoteRepository();","import { createEffect, createSignal } from \"solid-js\";\r\nimport ChatMessages from \"../ChatMessages/ChatMessages.tsx\";\r\nimport ChatInput from \"../ChatInput/ChatInput.tsx\";\r\nimport \"./ChatPopup.css\";\r\nimport { chatIcon, inforIcon, iconExpand, iconMinimize, iconClose } from \"../../assets/icons/icons\";\r\nimport Sidebar from \"../../components/Sidebar/Siderbar.tsx\";\r\nimport ChatActionButton from \"../../components/ChatActionButton/ChatActionButton.tsx\";\r\nimport HeaderSteps from \"../../components/HeaderSteps/HeaderSteps.tsx\";\r\nimport { onMount } from \"solid-js\";\r\nimport RemoteRepository from \"../../RemoteRepository.ts\";\r\n\r\ninterface ChatPopupProps {\r\n options?: {\r\n onMaximize?: () => void;\r\n onMinimize?: () => void;\r\n onMobile?: (isMobile: boolean) => void;\r\n onFullScreen?: (isFullScreen: boolean) => void;\r\n onClose?: () => void;\r\n onShrink?: () => void;\r\n onOpen?: () => void;\r\n onlyMobile?: boolean;\r\n };\r\n}\r\n\r\ninterface Message {\r\n id: number;\r\n text?: string;\r\n sender: \"user\" | \"bot\";\r\n type?: \"survey\";\r\n}\r\n\r\nexport default function ChatPopup(props: ChatPopupProps) {\r\n const [messages, setMessages] = createSignal<Message[]>([]);\r\n const [input, setInput] = createSignal(\"\");\r\n const [isOpen, setIsOpen] = createSignal(false);\r\n const [isSidebarOpen, setIsSidebarOpen] = createSignal(false);\r\n const [isFullScreen, setIsFullScreen] = createSignal(false);\r\n const [isMobile, setIsMobile] = createSignal(false);\r\n const [inputHeight, setInputHeight] = createSignal(0);\r\n const [surveyOptions, setSurveyOptions] = createSignal<{ multiSelect?: boolean; isInputMode?: boolean }>({});\r\n const [currentStep] = createSignal(2);\r\n const onlyMobile = props.options?.onlyMobile || false;\r\n\r\n createEffect(() => {\r\n if (props.options?.onFullScreen) props.options.onFullScreen(isFullScreen());\r\n if (props.options?.onMobile) props.options.onMobile(isMobile());\r\n });\r\n\r\n createEffect(() => {\r\n if (isFullScreen() || isMobile()) {\r\n setIsOpen(true);\r\n }\r\n });\r\n\r\n onMount(async () => {\r\n // const initialMessages = await RemoteRepository.listMessages(\"1\");\r\n // const normalized = initialMessages.map((m: any) => ({\r\n // id: m.id,\r\n // text: m.text,\r\n // sender: m.sender === \"bot\" ? \"bot\" : \"user\",\r\n // })) as Message[];\r\n setMessages([]);\r\n });\r\n\r\n\r\n function getBotAnswer(userText?: string) {\r\n const lower = (userText ?? \"\").toLowerCase();\r\n if (lower.includes(\"thị trường\"))\r\n return \"Thị trường hôm nay biến động nhẹ, bạn quan tâm đến mã nào?\";\r\n if (lower.includes(\"fpt\"))\r\n return \"FPT đang có xu hướng tăng trưởng tốt, bạn cần phân tích kỹ thuật hay cơ bản?\";\r\n if (lower.includes(\"chào\"))\r\n return \"Xin chào! Tôi là bot hỗ trợ đầu tư.\";\r\n if (lower.includes(\"khảo sát\"))\r\n return \"Bạn muốn tôi hỗ trợ khảo sát thị trường theo ngành, khu vực hay theo xu hướng đầu tư?\";\r\n if (lower.includes(\"mục tiêu\"))\r\n return \"Bạn có thể chia sẻ thêm về mục tiêu tài chính của mình ngắn hạn, trung hạn hay dài hạn?\";\r\n if (lower.includes(\"rủi ro\"))\r\n return \"Hãy cho tôi biết mức độ chấp nhận rủi ro của bạn: thấp, trung bình hay cao?\";\r\n return \"Cảm ơn bạn đã hỏi, tôi sẽ phản hồi sớm!\";\r\n }\r\n\r\n const sendMessage = async () => {\r\n if (!input().trim()) return;\r\n const rawUserMessage = await RemoteRepository.sendMessage({ text: input() });\r\n const userMessage: Message = {\r\n id: rawUserMessage.id,\r\n text: rawUserMessage.text,\r\n sender: rawUserMessage.sender === \"bot\" ? \"bot\" : \"user\",\r\n };\r\n setMessages([...messages(), userMessage]);\r\n setInput(\"\");\r\n setTimeout(() => {\r\n const botMessage: Message = {\r\n id: Date.now() + 1,\r\n text: getBotAnswer(userMessage.text),\r\n sender: \"bot\",\r\n };\r\n setMessages([...messages(), botMessage]);\r\n }, 100);\r\n };\r\n\r\n const sendActionMessage = async (text: string) => {\r\n const rawUserMessage = await RemoteRepository.sendMessage({ text });\r\n const userMessage: Message = {\r\n id: rawUserMessage.id,\r\n text: rawUserMessage.text,\r\n sender: rawUserMessage.sender === \"bot\" ? \"bot\" : \"user\",\r\n };\r\n setMessages([...messages(), userMessage]);\r\n\r\n setTimeout(() => {\r\n const botMessage: Message = {\r\n id: Date.now() + 1,\r\n text: getBotAnswer(userMessage.text),\r\n sender: \"bot\",\r\n };\r\n setMessages([...messages(), botMessage]);\r\n }, 100);\r\n };\r\n\r\n const handleSurveyRequest = (options?: { multiSelect?: boolean; isInputMode?: boolean }) => {\r\n setSurveyOptions(options || {});\r\n setMessages([\r\n ...messages(),\r\n {\r\n id: Date.now(),\r\n sender: \"bot\",\r\n type: \"survey\"\r\n }\r\n ]);\r\n };\r\n\r\n const newConversation = () => {\r\n setMessages([]);\r\n }\r\n\r\n\r\n onMount(() => {\r\n const handleResize = () => {\r\n const width = window.innerWidth;\r\n const isMobileNow = width < 768;\r\n setIsMobile(isMobileNow);\r\n if (isFullScreen() && isMobileNow) {\r\n setIsFullScreen(false);\r\n setIsMobile(true);\r\n }\r\n };\r\n window.addEventListener(\"resize\", handleResize);\r\n handleResize();\r\n return () => {\r\n window.removeEventListener(\"resize\", handleResize);\r\n };\r\n });\r\n\r\n return (\r\n <div>\r\n {!isOpen() && (\r\n <button\r\n onClick={() => {\r\n if (onlyMobile) setIsMobile(true);\r\n setIsOpen(true)\r\n if (props.options?.onOpen) props.options.onOpen();\r\n }}\r\n class=\"chat-popup-button\"\r\n style={{\r\n background: \"none\",\r\n border: \"none\",\r\n cursor: \"pointer\",\r\n padding: 0\r\n }}\r\n >\r\n <img src={chatIcon} />\r\n </button>\r\n )}\r\n\r\n {isOpen() && (\r\n <div class={`chat-popup-window${isOpen() ? \" chat-popup-window--open\" : \"\"}${isFullScreen() ? \" chat-popup-window--fullscreen\" : \"\"}${isMobile() ? \" chat-popup-window--mobile\" : \"\"}`}\r\n style={isFullScreen() || isMobile() ? { [\"--chat-input-height\"]: `${inputHeight()}px` } : undefined}>\r\n {!isFullScreen() && (\r\n <div class=\"chat-popup-header\">\r\n <img\r\n src={inforIcon}\r\n style={{ width: \"28px\", height: \"28px\", cursor: \"pointer\" }}\r\n onClick={() => setIsSidebarOpen(true)}\r\n />\r\n <div class=\"chat-popup-title\">\r\n <img src={chatIcon} style={{ width: \"32px\", height: \"32px\", \"margin-right\": \"4px\" }} />\r\n <span style={{ color: \"#1A1D1F\", \"user-select\": \"none\" }}>Ez</span>\r\n <span style={{ color: \"#1AAF74\", \"margin-left\": \"4px\", \"user-select\": \"none\" }}>Advise</span>\r\n </div>\r\n <div style={{ display: \"flex\", gap: \"12px\", \"align-items\": \"center\", \"margin-top\": \"4px\" }}>\r\n {!isMobile() && (\r\n <>\r\n <button\r\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", padding: 0 }}\r\n onClick={() => {\r\n if (isFullScreen()) {\r\n setIsFullScreen(false);\r\n setIsMobile(true);\r\n } else if (isMobile()) {\r\n setIsMobile(false);\r\n } else {\r\n setIsMobile(true);\r\n }\r\n if (props.options?.onMinimize) props.options.onMinimize();\r\n }}\r\n >\r\n <img src={iconMinimize} style={{ width: \"20px\", height: \"20px\" }} />\r\n </button>\r\n <button\r\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", padding: 0 }}\r\n onClick={() => {\r\n setIsMobile(false);\r\n setIsFullScreen(true);\r\n if (props.options?.onMaximize) props.options.onMaximize();\r\n }}\r\n >\r\n <img src={iconExpand} style={{ width: \"20px\", height: \"20px\" }} />\r\n </button>\r\n </>\r\n )}\r\n <button\r\n style={{ background: \"none\", border: \"none\", cursor: \"pointer\", padding: 0 }}\r\n onClick={() => {\r\n setIsOpen(false);\r\n setIsMobile(false);\r\n setIsFullScreen(false);\r\n if (props.options?.onClose) props.options.onClose();\r\n }}\r\n >\r\n <img src={iconClose} style={{ width: \"20px\", height: \"20px\" }} />\r\n </button>\r\n </div>\r\n </div>\r\n )}\r\n <div style={{\r\n display: \"flex\",\r\n height: \"100%\",\r\n \"flex-direction\": \"row\",\r\n }}>\r\n {isFullScreen() ? (\r\n <Sidebar\r\n onClose={() => {\r\n setIsOpen(false);\r\n setIsMobile(false);\r\n setIsFullScreen(false);\r\n if (props.options?.onClose) props.options.onClose();\r\n }}\r\n onShrink={() => {\r\n setIsFullScreen(false);\r\n if (props.options?.onShrink) props.options.onShrink();\r\n }}\r\n open={true}\r\n fullScreen={true}\r\n isMobile={isMobile()}\r\n onMobile={() => {\r\n setIsFullScreen(false);\r\n setIsMobile(true);\r\n }}\r\n onSurveyRequest={handleSurveyRequest}\r\n onNewConversation={newConversation}\r\n options={props.options}\r\n />\r\n ) : (\r\n <Sidebar\r\n onClose={() => setIsSidebarOpen(false)}\r\n open={isSidebarOpen()}\r\n fullScreen={false}\r\n isMobile={isMobile()}\r\n onSurveyRequest={handleSurveyRequest}\r\n onNewConversation={newConversation}\r\n options={props.options}\r\n />\r\n )}\r\n <div style={{ flex: 1, display: \"flex\", \"flex-direction\": \"column\", position: \"relative\", \"min-height\": 0, height: \"100%\" }}>\r\n {isFullScreen() && (\r\n <HeaderSteps currentStep={currentStep()} totalSteps={6} />\r\n )}\r\n <ChatMessages\r\n messages={messages()}\r\n isFullScreen={isFullScreen()}\r\n inputHeight={isFullScreen() ? inputHeight() : undefined}\r\n isMobile={isMobile()}\r\n onSubmit={(data, type) => {\r\n let text;\r\n if (type === 'ordered' || type === 'selected') {\r\n text = data.map(o => o.split('. ')[1]).join('\\n\\n');\r\n } else if (type === 'input') {\r\n text = data.join('\\n\\n');\r\n }\r\n if (text) {\r\n sendActionMessage(text);\r\n }\r\n }}\r\n surveyOptions={surveyOptions()}\r\n />\r\n {isFullScreen() ? (\r\n <>\r\n <div class={`chat-input-floating-box${messages().length > 0 ? \" chat-input-floating-box--with-messages\" : \"\"}`}>\r\n {messages().length === 0 && (\r\n <div\r\n style={{\r\n \"text-align\": \"center\",\r\n \"font-size\": \"32px\",\r\n \"font-weight\": \"600\",\r\n \"margin-bottom\": \"32px\",\r\n \"user-select\": \"none\",\r\n width: \"100%\"\r\n }}\r\n >\r\n Hôm nay thị trường khiến bạn quan tâm điều gì?\r\n </div>\r\n )}\r\n <div style={{ width: \"100%\" }}>\r\n <ChatInput\r\n input={input()}\r\n setInput={setInput}\r\n sendMessage={sendMessage}\r\n onHeightChange={setInputHeight}\r\n />\r\n </div>\r\n {messages().length === 0 && (\r\n <div class=\"chat-popup-action-buttons\">\r\n <ChatActionButton text=\"Khảo sát đầu tư\" onClick={() => sendActionMessage(\"Khảo sát đầu tư\")} />\r\n <ChatActionButton text=\"Mục tiêu tài chính\" onClick={() => sendActionMessage(\"Mục tiêu tài chính\")} />\r\n <ChatActionButton text=\"Khả năng chấp nhận rủi ro\" onClick={() => sendActionMessage(\"Khả năng chấp nhận rủi ro\")} />\r\n <ChatActionButton text=\"Khả năng chấp nhận rủi ro\" onClick={() => sendActionMessage(\"Khả năng chấp nhận rủi ro\")} />\r\n </div>\r\n )}\r\n </div>\r\n </>\r\n ) : (\r\n <ChatInput\r\n input={input()}\r\n setInput={setInput}\r\n sendMessage={sendMessage}\r\n onHeightChange={setInputHeight}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}","import { render } from \"solid-js/web\";\r\nimport ChatPopup from \"./modules/ChatPopup/ChatPopup\";\r\n\r\nexport function createPopup(\r\n selector: string | Element,\r\n options?: {\r\n onMaximize?: () => void;\r\n onMinimize?: () => void;\r\n onMobile?: (isMobile: boolean) => void;\r\n onFullScreen?: (isFullScreen: boolean) => void;\r\n onShrink?: () => void;\r\n onOpen?: () => void;\r\n }\r\n) {\r\n const container = typeof selector === \"string\"\r\n ? document.querySelector(selector)\r\n : selector;\r\n if (!container) throw new Error(`Element \"${selector}\" not found.`);\r\n container.innerHTML = \"\";\r\n\r\n render(() => <ChatPopup options={options} />, container);\r\n}\r\n\r\ndeclare global {\r\n interface Window {\r\n EzChat: {\r\n createPopup: typeof createPopup;\r\n };\r\n }\r\n}\r\n\r\nif (typeof window !== 'undefined') {\r\n window.EzChat = { createPopup };\r\n}"],"names":["equalFn","a","b","$TRACK","signalOptions","runEffects","runQueue","STALE","PENDING","UNOWNED","Owner","Transition","ExternalSourceConfig","Listener","Updates","Effects","ExecCount","createRoot","fn","detachedOwner","listener","owner","unowned","current","root","updateFn","untrack","cleanNode","runUpdates","createSignal","value","options","s","setter","writeSignal","readSignal","createRenderEffect","c","createComputation","updateComputation","createEffect","runUserEffects","createMemo","onMount","onCleanup","updates","lookUpstream","sSlot","node","isComp","i","o","TransitionRunning","markDownstream","time","runComputation","nextValue","err","handleError","init","pure","state","runTop","ancestors","wait","res","completeUpdates","e","queue","userLength","ignore","source","index","obs","n","castError","FALLBACK","dispose","d","mapArray","list","mapFn","items","mapped","disposers","len","indexes","newItems","newLen","j","newIndices","newIndicesNext","temp","tempdisposers","tempIndexes","start","end","newEnd","item","disposer","mapper","set","createComponent","Comp","props","narrowedError","name","For","fallback","Show","keyed","conditionValue","condition","child","memo","reconcileArrays","parentNode","bLength","aEnd","bEnd","aStart","bStart","after","map","sequence","t","$$EVENTS","render","code","element","insert","template","html","isImportNode","isSVG","isMathML","create","delegateEvents","eventNames","document","l","eventHandler","setAttribute","className","addEventListener","handler","delegate","style","prev","nodeStyle","v","setStyleProperty","use","arg","parent","accessor","marker","initial","insertExpression","key","oriTarget","oriCurrentTarget","retarget","handleNode","data","walkUpTree","path","unwrapArray","multi","cleanChildren","array","currentArray","normalizeIncomingArray","appendNodes","normalized","unwrap","dynamic","replacement","inserted","el","isParent","chatIcon","inforIcon","iconExpand","iconShrink","iconMinimize","iconClose","iconAddItem","iconSend","iconSideActive","iconUser","iconTrending","iconNewConversation","iconSearch","iconMenudot","iconMicrophone","iconEdit","iconDelete","iconSendActive","iconLike","iconDislike","iconLikeActive","iconDislikeActive","iconCheck","SurveyMessage","setOptions","draggedIndex","setDraggedIndex","hoveredIndex","setHoveredIndex","selectedIndexes","setSelectedIndexes","answers","setAnswers","Array","length","fill","multiSelect","isInputMode","containerRef","handleMouseDown","button","preventDefault","handleMouseMove","containerRect","getBoundingClientRect","clientX","left","right","clientY","top","bottom","buttons","querySelectorAll","rect","handleMouseUp","newOptions","handleOptionClick","idx","includes","filter","handleAnswerChange","next","handleSubmit","onSubmit","filledAnswers","trim","selectedOptions","_","removeEventListener","_el$","_tmpl$","_el$2","firstChild","_el$3","_el$4","nextSibling","_el$5","_el$7","_el$8","_el$9","_$setStyleProperty","_$insert","_c$","_$memo","_el$0","_tmpl$2","_$createComponent","each","children","option","_el$1","_tmpl$3","_el$10","_el$11","$$input","currentTarget","_$setAttribute","_$effect","_el$12","_tmpl$4","_ref$","_$use","_el$13","_tmpl$5","_el$14","$$click","$$mousedown","_c$2","_el$15","_tmpl$6","_$className","_$delegateEvents","ChatMessages","messagesContainerRef","hoveredId","setHoveredId","feedbackState","setFeedbackState","handleMouseEnter","id","handleMouseLeave","getPadBottom","isFullScreen","messages","inputHeight","isMobile","setTimeout","scrollTop","scrollHeight","requestAnimationFrame","when","_$p","msg","type","surveyOptions","_el$6","sender","text","__spreadProps","__spreadValues","_p$","_v$5","_v$6","_v$7","_v$8","_v$9","undefined","_v$3","_v$4","_v$","_v$2","ChatInput","textareaRef","isMaxed","setIsMaxed","resizeTextarea","height","input","overflowY","onHeightChange","fullHeight","usedHeight","Math","min","MAX_HEIGHT","handleInput","setInput","handleKeyPress","shiftKey","sendMessage","_$addEventListener","classList","toggle","Sidebar","popoverOpen","setPopoverOpen","popoverRef","handleMouseDownOutside","contains","target","fullScreen","_el$19","onClose","open","_el$16","_el$17","_el$18","_el$20","_el$21","_el$22","_el$23","_el$24","_el$25","onShrink","onSurveyRequest","onNewConversation","stopPropagation","_c$3","_el$26","_el$27","_el$28","_el$29","_el$30","width","_$style","ChatActionButton","onClick","HeaderSteps","currentStep","totalSteps","title","from","listMessagesAsync","conversationId","direction","fromMessageId","__async","sendMessageAsync","message","updateMessageAsync","deleteMessageAsync","messageId","deleteType","searchMessagesAsync","keyword","m","RemoteRepository","MessageService.listMessagesAsync","MessageService.sendMessageAsync","MessageService.updateMessageAsync","MessageService.deleteMessageAsync","MessageService.searchMessagesAsync","RemoteRepository$1","ChatPopup","setMessages","isOpen","setIsOpen","isSidebarOpen","setIsSidebarOpen","setIsFullScreen","setIsMobile","setInputHeight","setSurveyOptions","onlyMobile","onFullScreen","onMobile","getBotAnswer","userText","lower","toLowerCase","rawUserMessage","userMessage","botMessage","Date","now","sendActionMessage","handleSurveyRequest","newConversation","handleResize","isMobileNow","window","innerWidth","onOpen","_c$7","onMinimize","onMaximize","_c$4","_c$5","split","join","_c$6","_c$8","_tmpl$7","_c$9","_tmpl$8","createPopup","selector","container","querySelector","Error","innerHTML","EzChat"],"mappings":"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","x_google_ignoreList":[0,1]}
|